Merge "platform/target: msm8996: Add support for new memory map"
diff --git a/app/aboot/aboot.c b/app/aboot/aboot.c
index 0b9fd12..6f72f15 100644
--- a/app/aboot/aboot.c
+++ b/app/aboot/aboot.c
@@ -63,6 +63,10 @@
 #include <rpmb.h>
 #endif
 
+#if ENABLE_WBC
+#include <pm_app_smbchg.h>
+#endif
+
 #if DEVICE_TREE
 #include <libfdt.h>
 #include <dev_tree.h>
@@ -3187,7 +3191,14 @@
 	if (!check_alarm_boot()) {
 #endif
 		dprintf(SPEW, "Display Init: Start\n");
+#if ENABLE_WBC
+		if (!pm_appsbl_display_init_done())
+			target_display_init(device.display_panel);
+		else
+			display_image_on_screen();
+#else
 		target_display_init(device.display_panel);
+#endif
 		dprintf(SPEW, "Display Init: Done\n");
 #if NO_ALARM_DISPLAY
 	}
diff --git a/dev/fbcon/fbcon.c b/dev/fbcon/fbcon.c
index 4010f1b..885ce87 100644
--- a/dev/fbcon/fbcon.c
+++ b/dev/fbcon/fbcon.c
@@ -36,6 +36,9 @@
 #include <platform.h>
 #include <string.h>
 #include <arch/ops.h>
+#if ENABLE_WBC
+#include <pm_app_smbchg.h>
+#endif
 
 #include "font5x12.h"
 
@@ -339,6 +342,9 @@
 	unsigned total_y;
 	unsigned bytes_per_bpp;
 	unsigned image_base;
+#if DISPLAY_TYPE_MIPI
+	char *image = NULL;
+#endif
 
 	if (!config) {
 		dprintf(CRITICAL,"NULL configuration, image cannot be displayed\n");
@@ -354,10 +360,16 @@
 			(config->width)) + (total_x/2 - (SPLASH_IMAGE_WIDTH / 2)));
 
 #if DISPLAY_TYPE_MIPI
+#if ENABLE_WBC
+	image = (pm_appsbl_charging_in_progress() ? image_batt888 : imageBuffer_rgb888);
+#else
+	image = imageBuffer_rgb888;
+#endif
+
 	if (bytes_per_bpp == 3) {
 		for (i = 0; i < SPLASH_IMAGE_HEIGHT; i++) {
 			memcpy (config->base + ((image_base + (i * (config->width))) * bytes_per_bpp),
-			imageBuffer_rgb888 + (i * SPLASH_IMAGE_WIDTH * bytes_per_bpp),
+			image + (i * SPLASH_IMAGE_WIDTH * bytes_per_bpp),
 			SPLASH_IMAGE_WIDTH * bytes_per_bpp);
 		}
 	}
diff --git a/dev/pmic/pm8x41/include/pm8x41.h b/dev/pmic/pm8x41/include/pm8x41.h
index 9278470..59d0fca 100644
--- a/dev/pmic/pm8x41/include/pm8x41.h
+++ b/dev/pmic/pm8x41/include/pm8x41.h
@@ -239,4 +239,6 @@
 void pmi8994_config_mpp_slave_id(uint8_t slave_id);
 void pm_pwm_enable(bool enable);
 int pm_pwm_config(unsigned int duty_us, unsigned int period_us);
+uint32_t spmi_reg_read(uint32_t slave_id, uint16_t addr, uint8_t *data, uint8_t priority);
+uint32_t spmi_reg_write(uint32_t slave_id, uint16_t addr, uint8_t *data, uint8_t priority);
 #endif
diff --git a/dev/pmic/pm8x41/include/pm8x41_hw.h b/dev/pmic/pm8x41/include/pm8x41_hw.h
index 2bae818..03e30eb 100644
--- a/dev/pmic/pm8x41/include/pm8x41_hw.h
+++ b/dev/pmic/pm8x41/include/pm8x41_hw.h
@@ -29,6 +29,10 @@
 #ifndef _PM8x41_HW_H_
 #define _PM8x41_HW_H_
 
+#include <stdint.h>
+#include <sys/types.h>
+
+
 /* SMBB Registers */
 #define SMBB_MISC_BOOT_DONE                   0x1642
 
diff --git a/dev/pmic/pm8x41/pm8x41.c b/dev/pmic/pm8x41/pm8x41.c
index 0a43bff..4ce9869 100644
--- a/dev/pmic/pm8x41/pm8x41.c
+++ b/dev/pmic/pm8x41/pm8x41.c
@@ -77,6 +77,40 @@
 	return val;
 }
 
+uint32_t spmi_reg_read(uint32_t slave_id, uint16_t addr, uint8_t *data, uint8_t priority)
+{
+	struct pmic_arb_cmd cmd;
+	struct pmic_arb_param param;
+
+	cmd.address = PERIPH_ID(addr);
+	cmd.offset = REG_OFFSET(addr);
+	cmd.slave_id = slave_id;
+
+	cmd.priority = priority;
+
+	param.buffer = data;
+	param.size   = 1;
+
+	return pmic_arb_read_cmd(&cmd, &param);
+}
+
+uint32_t spmi_reg_write(uint32_t slave_id, uint16_t addr, uint8_t *data, uint8_t priority)
+{
+	struct pmic_arb_cmd cmd;
+	struct pmic_arb_param param;
+
+	cmd.address = PERIPH_ID(addr);
+	cmd.offset = REG_OFFSET(addr);
+	cmd.slave_id = slave_id;
+
+	cmd.priority = priority;
+
+	param.buffer = data;
+	param.size   = 1;
+
+	return pmic_arb_write_cmd(&cmd, &param);
+}
+
 /* SPMI helper function which takes slave id as the i/p */
 void pm8xxx_reg_write(uint8_t slave_id, uint32_t addr, uint8_t val)
 {
diff --git a/dev/pmic/pmi8994/include/pm_app_smbchg.h b/dev/pmic/pmi8994/include/pm_app_smbchg.h
new file mode 100644
index 0000000..bfc12ca
--- /dev/null
+++ b/dev/pmic/pmi8994/include/pm_app_smbchg.h
@@ -0,0 +1,205 @@
+/* Copyright (c) 2015, The Linux Foundation. All rights reserved.
+
+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 Linux Foundation nor the names of its
+      contributors may be used to endorse or promote products derived
+      from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#ifndef PM_APP_SMBCHG__H
+#define PM_APP_SMBCHG__H
+
+/*===========================================================================
+
+                     INCLUDE FILES 
+
+===========================================================================*/
+
+#include "pm_err_flags.h"
+#include "pm_smbchg_bat_if.h"
+#include "pm_smbchg_misc.h"
+#include "pm_smbchg_usb_chgpth.h"
+#include "pm_resources_and_types.h"
+
+/*=========================================================================== 
+ 
+                     GLOBAL DEFINES
+ 
+===========================================================================*/
+
+
+
+/*=========================================================================== 
+ 
+                     GLOBAL TYPE DEFINITIONS
+ 
+===========================================================================*/
+typedef struct
+{
+   pm_smbchg_bat_if_low_bat_thresh_type  vlowbatt_threshold;
+   pm_smbchg_param_config_enable_type    enable_config;
+} pm_smbchg_vlowbatt_threshold_data_type;
+
+typedef struct
+{
+   pm_smbchg_chgpth_input_priority_type  chgpth_input_priority; //0=DCIN; 1=USBIN
+   pm_smbchg_param_config_enable_type    enable_config;
+} pm_smbchg_chgpth_input_priority_data_type;
+
+
+typedef struct
+{
+   pm_smbchg_bat_miss_detect_src_type  bat_missing_detection_src; 
+   pm_smbchg_param_config_enable_type  enable_config;
+} pm_smbchg_bat_miss_detect_src_data_type ;
+
+
+typedef struct
+{
+   pm_smbchg_wdog_timeout_type         wdog_timeout;
+   pm_smbchg_param_config_enable_type  enable_config;
+} pm_smbchg_wdog_timeout_data_type;
+
+
+typedef struct
+{
+   boolean enable_wdog;
+   pm_smbchg_param_config_enable_type enable_config;
+} pm_smbchg_enable_wdog_data_type;
+
+
+typedef struct
+{
+   uint32 fast_chg_i_ma; //Valid values are 300 to 3000 mAmp
+   pm_smbchg_param_config_enable_type enable_config;
+} pm_smbchg_fast_chg_current_data_type;
+
+
+typedef struct
+{
+   uint32 pre_chg_i_ma; //Valid values are 100 to 550 mAmp
+   pm_smbchg_param_config_enable_type enable_config;
+} pm_smbchg_pre_chg_current_data_type;
+
+
+typedef struct
+{
+   uint32 pre_to_fast_chg_theshold_mv; //Valid range is 2400mV to 3000mV
+   pm_smbchg_param_config_enable_type enable_config;
+} pm_smbchg_pre_to_fast_chg_threshold_data_type;
+
+
+typedef struct
+{
+   uint32 float_volt_theshold_mv; //Valid range is 3600mV to 4500 mv
+   pm_smbchg_param_config_enable_type enable_config;
+} pm_smbchg_float_voltage_threshold_data_type;
+
+typedef struct
+{
+   uint32  usbin_input_current_limit; //Valid value is 300 to 3000mAmp
+   pm_smbchg_param_config_enable_type enable_config;
+} pm_smbchg_usbin_input_current_limit_data_type;
+
+
+typedef struct
+{
+   uint32  dcin_input_current_limit; //valid range is 300 to 2000 mAmp
+   pm_smbchg_param_config_enable_type enable_config;
+} pm_smbchg_dcin_input_current_limit_data_type;
+
+
+
+
+typedef struct
+{
+    pm_smbchg_vlowbatt_threshold_data_type         dbc_bootup_volt_threshold;
+    pm_smbchg_chgpth_input_priority_data_type      chgpth_input_priority;
+    pm_smbchg_bat_miss_detect_src_data_type        bat_miss_detect_src;
+    pm_smbchg_wdog_timeout_data_type               wdog_timeout;
+    pm_smbchg_enable_wdog_data_type                enable_wdog;
+    pm_smbchg_fast_chg_current_data_type           fast_chg_i;
+    pm_smbchg_pre_chg_current_data_type            pre_chg_i;
+    pm_smbchg_pre_to_fast_chg_threshold_data_type  pre_to_fast_chg_theshold_mv;
+    pm_smbchg_float_voltage_threshold_data_type    float_volt_theshold_mv;
+    pm_smbchg_usbin_input_current_limit_data_type  usbin_input_current_limit;
+    pm_smbchg_dcin_input_current_limit_data_type   dcin_input_current_limit;
+    uint32  bootup_battery_theshold_mv;
+    uint32  wipwr_bootup_battery_theshold_mv;
+    boolean enable_jeita_hard_limit_check;
+} pm_smbchg_specific_data_type;
+
+
+
+/*===========================================================================
+
+                     PROTOTYPES 
+
+===========================================================================*/
+/**
+ * @name 
+ *     pm_sbl_chg_config_vbat_low_threshold
+ *
+ * @description
+ *    This function configures battery charge status 
+ * 
+ * @param 
+ *     None
+ * 
+ * @return 
+ *     pm_err_flag_type
+ * 
+ * @dependency
+ *     The following function must have been called:
+ *        pm_target_information_init()
+ */
+pm_err_flag_type pm_appsbl_chg_config_vbat_low_threshold(uint32 device_index, pm_smbchg_specific_data_type *chg_param_ptr);
+
+
+
+/**
+ * @name 
+ *     pm_sbl_chg_check_weak_battery_status
+ *
+ * @description
+ *    This function checks the battery charge status 
+ * 
+ * @param 
+ *     None
+ * 
+ * @return 
+ *     pm_err_flag_type
+ * 
+ * @dependency
+ *     The following function must have been called:
+ *        pm_driver_init()
+ */
+pm_err_flag_type pm_appsbl_chg_check_weak_battery_status(uint32 device_index);
+
+void *pm_target_information_get_specific_info();
+void *pm_target_chg_range_data();
+bool pm_appsbl_display_init_done();
+bool pm_appsbl_charging_in_progress();
+pm_err_flag_type pm_appsbl_set_dcin_suspend();
+#endif  //PM_APP_SMBCHG__H
+
diff --git a/dev/pmic/pmi8994/include/pm_comm.h b/dev/pmic/pmi8994/include/pm_comm.h
new file mode 100644
index 0000000..6c7738d
--- /dev/null
+++ b/dev/pmic/pmi8994/include/pm_comm.h
@@ -0,0 +1,131 @@
+/* Copyright (c) 2015, The Linux Foundation. All rights reserved.
+
+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 Linux Foundation nor the names of its
+      contributors may be used to endorse or promote products derived
+      from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#ifndef PM_COMM_H
+#define PM_COMM_H
+
+/*===========================================================================
+
+                     INCLUDE FILES 
+
+===========================================================================*/
+
+#include "pm_resources_and_types.h"
+#include "pm_err_flags.h"
+
+/*===========================================================================
+
+                        FUNCTION PROTOTYPES
+
+===========================================================================*/
+ typedef enum CommType
+{
+    FIRST_INVALID_COMM_INTERFACE = -1,
+    SPMI_1_0Type,
+    Transcomm_Type,
+    SSBI_2_0TypeLite = 0 ,
+    SSBI_2_0Type,
+    INVALID_COMM_INTERFACE
+}CommType;
+ 
+ /** 
+   @struct pm_comm_info_type
+   @brief  This struct is used to store the PMIC Comm 
+           information.
+  */
+typedef struct
+{
+    uint32 slave_id;
+    uint32 pmic_index;
+    CommType mCommType;
+}pm_comm_info_type;
+
+
+
+/*! \brief This function initializes the comm info structure
+ *  \param[in] None
+ *
+ *  \return None.
+ *
+ *  <b>Dependencies</b>
+ *  \li DAL framework.
+ */
+void pm_comm_info_init(void);
+
+
+/*! \brief This function returns the comminfo struct(periph slave id, commtype) 
+ *  \param[in] pmic_chip_index - pmic index from the total num of pmics
+ *
+ *\param[in] slave_id_index - primary / secondary slave 
+ *
+ *  \return pm_comm_info_type.
+ *
+ */
+
+pm_comm_info_type* pm_comm_get_comm_info(uint32 pmic_chip_index, uint32 slave_id_index);
+
+
+pm_err_flag_type  pm_comm_read_byte(uint32 slave_id , 
+                                         uint32 addr,
+                                         uint8* data, 
+                                         uint8 priority);
+
+pm_err_flag_type  pm_comm_read_byte_mask(uint32 slave_id , 
+                                         uint32 addr,
+                                         uint8 mask,  
+                                         uint8* data, 
+                                         uint8 priority);
+
+pm_err_flag_type  pm_comm_write_byte(uint32 slave_id , 
+                                          uint32 addr,
+                                          uint8 data, 
+                                          uint8 priority);
+
+pm_err_flag_type  pm_comm_write_byte_mask(uint32 slave_id , 
+                                               uint32 addr,
+                                               uint8 mask, 
+                                               uint8 value, 
+                                               uint8 priority);
+
+#ifndef LK
+pm_err_flag_type  pm_comm_write_byte_array(uint32 slave_id,
+                                                uint16 addr , 
+                                                uint32 num_bytes, 
+                                                uint8* data, 
+                                                uint8 priority) ;
+
+pm_err_flag_type  pm_comm_read_byte_array ( uint32 slave_id ,
+                                                uint16 addr , 
+                                                uint32 num_bytes, 
+                                                uint8* data, 
+                                                uint8 priority) ;
+pm_err_flag_type pm_comm_channel_init_internal(void);
+#endif
+
+#endif /* PM_COMM_H */
+
diff --git a/dev/pmic/pmi8994/include/pm_err_flags.h b/dev/pmic/pmi8994/include/pm_err_flags.h
new file mode 100644
index 0000000..1dbb88c
--- /dev/null
+++ b/dev/pmic/pmi8994/include/pm_err_flags.h
@@ -0,0 +1,370 @@
+/* Copyright (c) 2015, The Linux Foundation. All rights reserved.
+
+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 Linux Foundation nor the names of its
+      contributors may be used to endorse or promote products derived
+      from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#ifndef _PM_ERR_FLAGS_H
+#define _PM_ERR_FLAGS_H
+
+/**
+ * These are all the error codes returned by PMIC APIs
+ *
+ * PMIC APIs most commonly return errors if the caller has tried
+ * to use parameters that are out of range or if the feature is
+ * not supported by the PMIC model detected at run-time.
+ */
+typedef enum
+{
+    /**
+     * The API completed successfully
+     */
+    PM_ERR_FLAG__SUCCESS,
+    /**
+     * The SBI operation Failed
+     * extra lines are to support += error codes
+     */
+    PM_ERR_FLAG__SBI_OPT_ERR,  
+    PM_ERR_FLAG__SBI_OPT2_ERR,
+    PM_ERR_FLAG__SBI_OPT3_ERR,
+    PM_ERR_FLAG__SBI_OPT4_ERR,
+
+    PM_ERR_FLAG__I2C_OPT_ERR,  
+    PM_ERR_FLAG__I2C_OPT2_ERR,  
+    PM_ERR_FLAG__I2C_OPT3_ERR,  
+    PM_ERR_FLAG__I2C_OPT4_ERR,  
+
+    PM_ERR_FLAG__SPMI_OPT_ERR,
+    PM_ERR_FLAG__SPMI_OPT2_ERR,
+    PM_ERR_FLAG__SPMI_OPT3_ERR,
+    PM_ERR_FLAG__SPMI_OPT4_ERR,
+
+    PM_ERR_FLAG__SPMI_TRANSCOMM_ERR,
+
+
+    /**
+     *  Input Parameter one is out of range
+     */
+    PM_ERR_FLAG__PAR1_OUT_OF_RANGE,
+    /**
+     *  Input Parameter two is out of range
+     */
+    PM_ERR_FLAG__PAR2_OUT_OF_RANGE,
+    /**
+     *  Input Parameter three is out of range
+     */
+    PM_ERR_FLAG__PAR3_OUT_OF_RANGE,
+    /**
+     *  Input Parameter four is out of range
+     */
+    PM_ERR_FLAG__PAR4_OUT_OF_RANGE,
+    /**
+     *  Input Parameter five is out of range
+     */
+    PM_ERR_FLAG__PAR5_OUT_OF_RANGE,
+    /**
+     *  Input Parameter six is out of range
+     */
+    PM_ERR_FLAG__PAR6_OUT_OF_RANGE,
+    PM_ERR_FLAG__INVALID_PARAMETER,
+    PM_ERR_FLAG__VLEVEL_OUT_OF_RANGE,
+    PM_ERR_FLAG__VREG_ID_OUT_OF_RANGE,
+    /**
+     *  This feature is not supported by this PMIC
+     */
+    PM_ERR_FLAG__FEATURE_NOT_SUPPORTED,
+    PM_ERR_FLAG__INVALID_PMIC_MODEL,
+    PM_ERR_FLAG__SECURITY_ERR,
+    PM_ERR_FLAG__IRQ_LIST_ERR,
+    PM_ERR_FLAG__DEV_MISMATCH,
+    PM_ERR_FLAG__ADC_INVALID_RES,
+    PM_ERR_FLAG__ADC_NOT_READY,
+    PM_ERR_FLAG__ADC_SIG_NOT_SUPPORTED,
+    PM_ERR_FLAG__ADC_VBATT_READ_ERR,
+    /**
+     *  The RTC displayed mode read from the PMIC is invalid
+     */
+    PM_ERR_FLAG__RTC_BAD_DIS_MODE,
+    /**
+     *  Failed to read the time from the PMIC RTC
+     */
+    PM_ERR_FLAG__RTC_READ_FAILED,
+    /**
+     *  Failed to write the time to the PMIC RTC
+     */
+    PM_ERR_FLAG__RTC_WRITE_FAILED,
+    /**
+     *  RTC not running
+     */
+    PM_ERR_FLAG__RTC_HALTED,
+    /**
+     *  The DBUS is already in use by another MPP.
+     */
+    PM_ERR_FLAG__DBUS_IS_BUSY_MODE,
+    /**
+     *  The ABUS is already in use by another MPP.
+     */
+    PM_ERR_FLAG__ABUS_IS_BUSY_MODE,
+    /**
+     *  The error occurs illegal value that isn't in the
+     *  macro_type enum is used
+     */
+    PM_ERR_FLAG__MACRO_NOT_RECOGNIZED,
+    /**
+     *  This error occurs if the data read from a register does
+     *  not match the setting data
+     */
+    PM_ERR_FLAG__DATA_VERIFY_FAILURE,
+    /**
+     *  The error occurs illegal value that isn't in the
+     *  pm_register_type enum is used
+     */
+    PM_ERR_FLAG__SETTING_TYPE_NOT_RECOGNIZED,
+    /**
+     * The error occurs illegal value that isn't in the
+     * pm_mode_group enum is used
+     */
+    PM_ERR_FLAG__MODE_NOT_DEFINED_FOR_MODE_GROUP,
+    /**
+     *  The error occurs illegal value that isn't in the pm_mode
+     *  enum is used
+     */
+    PM_ERR_FLAG__MODE_GROUP_NOT_DEFINED,
+    /**
+     *  This error occurs if the PRESTUB function returns a false
+     */
+    PM_ERR_FLAG__PRESTUB_FAILURE,
+    /**
+     *  This error occurs if the POSTSTUB function returns a
+     *  false
+     */
+    PM_ERR_FLAG__POSTSTUB_FAILURE,
+    /**
+     *  When modes are set for a modegroup, they are recorded and
+     *  checked for success
+     */
+    PM_ERR_FLAG__MODE_NOT_RECORDED_CORRECTLY,
+    /**
+     *  Unable to find the mode group in the mode group recording
+     *  structure. Fatal memory problem
+     */
+    PM_ERR_FLAG__MODE_GROUP_STATE_NOT_FOUND,
+    /**
+     *  This error occurs if the SUPERSTUB function return a
+     *  false
+     */
+    PM_ERR_FLAG__SUPERSTUB_FAILURE,
+   /* Processor does not have access to this resource */
+   PM_ERR_FLAG__TARGET_PROCESSOR_CAN_NOT_ACCESS_RESOURCE,
+   /* Resource is invalid. Resource index was pass 
+    * into router that is not defined in the build 
+    */
+   PM_ERR_FLAG__INVALID_RESOURCE_ACCESS_ATTEMPTED,
+    
+    /*! Non-Zero means unsuccessful call. Here it means registration failed  
+         because driver has ran out of memory.MAX_CLIENTS_ALLOWED needs to be
+         increased and the code needs to be recompiled */                            
+    PM_ERR_FLAG__VBATT_CLIENT_TABLE_FULL,
+    /*! One of the parameters to the function call was invalid. */                            
+    PM_ERR_FLAG__VBATT_REG_PARAMS_WRONG,
+    /*! Client could not be deregistered because perhaps it does not exist */                            
+    PM_ERR_FLAG__VBATT_DEREGISTRATION_FAILED,
+    /*! Client could not be modified because perhaps it does not exist */                            
+    PM_ERR_FLAG__VBATT_MODIFICATION_FAILED,
+    /*!< Client could not be queried because perhaps it does not exist */                            
+    PM_ERR_FLAG__VBATT_INTERROGATION_FAILED,
+    /*!< Client's filetr could not be set because perhaps it does not exist */                            
+    PM_ERR_FLAG__VBATT_SET_FILTER_FAILED,
+    /*! Keeps the count of all errors. Any error code equal to or greater
+         than this one means an unknown error. VBATT_LAST_ERROR should be 
+         the last error code always with the highest value */                            
+    PM_ERR_FLAG__VBATT_LAST_ERROR,  
+    PM_ERR_FLAG__PMIC_NOT_SUPPORTED,
+    
+    /* Non Vibrator Module is being indexed */
+    PM_ERR_FLAG__INVALID_VIBRATOR_INDEXED ,
+
+    /* Non PWM generator is being indexed */
+    PM_ERR_FLAG__INVALID_PWM_GENERATOR_INDEXED ,
+
+    /* Non Chg Module is being indexed */
+    PM_ERR_FLAG__INVALID_CHG_INDEXED ,
+
+    PM_ERR_FLAG__INVALID_CHG_PATH,
+
+    PM_ERR_FLAG__INVALID_CLK_INDEXED,
+
+    PM_ERR_FLAG__INVALID_XO_INDEXED,
+
+    PM_ERR_FLAG__INVALID_XOADC_INDEXED,
+
+    PM_ERR_FLAG__INVALID_TCXO_INDEXED,
+
+    PM_ERR_FLAG__INVALID_RTC_INDEXED,
+
+    PM_ERR_FLAG__INVALID_SMBC_INDEXED,
+
+    PM_ERR_FLAG__INVALID_BMS_INDEXED,
+
+    PM_ERR_FLAG__API_NOT_IMPLEMENTED,
+
+    PM_ERR_FLAG__INVALID_PAONCNTRL_INDEXED,
+
+    /* Non Coincell Module is being indexed */
+    PM_ERR_FLAG__INVALID_COINCELL_INDEXED ,
+
+    /* Non Flash Module is being indexed */
+    PM_ERR_FLAG__INVALID_FLASH_INDEXED ,
+
+    /* Non OVP Module is being indexed */
+    PM_ERR_FLAG__INVALID_OVP_INDEXED ,
+
+    /* Non KEYPAD Module is being indexed */
+    PM_ERR_FLAG__INVALID_KEYPAD_INDEXED ,
+
+    /* Non LVS Module is being indexed */
+    PM_ERR_FLAG__INVALID_LVS_INDEXED ,
+
+    /* Non HSED Module is being indexed */
+    PM_ERR_FLAG__INVALID_HSED_INDEXED ,
+
+    /* Non TALM Module is being indexed */
+    PM_ERR_FLAG__INVALID_TALM_INDEXED ,
+
+    /* Non NCP Module is being indexed */
+    PM_ERR_FLAG__INVALID_NCP_INDEXED ,
+
+    /* Non NFC Module is being indexed */
+    PM_ERR_FLAG__INVALID_NFC_INDEXED ,
+
+    /* Non MVS Module is being indexed */
+    PM_ERR_FLAG__INVALID_MVS_INDEXED,
+
+    /* Non HDMI Module is being indexed */
+    PM_ERR_FLAG__INVALID_HDMI_INDEXED,
+
+    /* Non VS Module is being indexed */
+    PM_ERR_FLAG__INVALID_VS_INDEXED,
+
+    /* Non UVLO Module is being indexed */
+    PM_ERR_FLAG__INVALID_UVLO_INDEXED,
+
+    /* Non AMUX Module is being indexed */
+    PM_ERR_FLAG__INVALID_AMUX_INDEXED,
+
+    PM_ERR_FLAG__INVALID_KEYPAD_EVENT_COUNTER,
+
+    /* Non MPP Module is being indexed */ 
+    PM_ERR_FLAG__INVALID_MPP_INDEXED,
+
+    PM_ERR_FLAG__INVALID_BATTERY_CELL_NUMBER,
+
+    PM_ERR_FLAG__INVALID_PWRON_INDEXED,
+
+    PM_ERR_FLAG__INVALID_VBATT_INDEXED,
+
+    PM_ERR_FLAG__INVALID_HSDKYPD_APP_INDEXED,
+
+    PM_ERR_FLAG__INVALID_PWRKEY_APP_INDEXED,
+
+    PM_ERR_FLAG__INVALID_EVENT_CALLBACK,
+
+    PM_ERR_FLAG__SHADOW_REGISTER_INIT_FAILED ,
+
+    /* PSDTE Error Functionality */
+    PM_ERR_FLAG__PSDTE_ENV_FAILURE,
+
+    PM_ERR_FLAG__PSDTE_PMIC_POWERUP_FAILED,
+
+    PM_ERR_FLAG__PSDTE_PMIC_POWERDOWN_FAILED,
+
+    PM_ERR_FLAG__FTS_CALCULATION_ERROR ,
+
+    PM_ERR_FLAG__API_DEPRICATED_ERROR,
+
+    PM_ERR_FLAG__RPC_PROCESSOR_NOT_RECOGNIZED_ERROR,
+
+    /* VREG Errors */
+    PM_ERR_FLAG__VREG_VOTE_DEREGISTER_ERROR,
+
+    PM_ERR_FLAG__VREG_VOTE_REGISTER_ERROR,
+
+    /* VS Errors */
+    PM_ERR_FLAG__INVALID_VS_STATUS,
+
+    PM_ERR_FLAG__DAL_SERVICE_REGISTRATION_FAILED,
+
+    PM_ERR_FLAG__DAL_SERVICE_FAILED,
+
+    PM_ERR__MUTEX_CREATION_FAILED ,
+
+    PM_ERR__MUTEX_RELEASE_FAILED ,
+
+    PM_ERR__MUTEX_DELETION_FAILED ,
+    
+    PM_ERR__MUTEX_UNAVAILBLE ,
+    // Returned if the Create Comm Channel fails to find the correct commType
+    PM_ERR_FLAG__COMM_TYPE_NOT_RECOGNIZED,
+
+    PM_ERR_FLAG__IRQ_GPIO_SET_FAILED,
+    /*! Event information table has run out of client entries */
+    PM_ERR_FLAG__PMAPP_EVENT_CLIENT_TABLE_FULL,
+    /*! Client could not be deregistered because perhaps it does not exist */                            
+    PM_ERR_FLAG__PMAPP_EVENT_DEREGISTRATION_FAILED,
+    /*! Client is attempting to use a client index that is incorrect or has been previously deregisterd */
+    PM_ERR_FLAG__PMAPP_EVENT_CLIENT_INDEX_FAILURE,
+    
+    PM_ERR_FLAG__INVALID_MISC_INDEXED,
+
+    PM_ERR_FLAG__INVALID_MISC_TBD,
+    
+    PM_ERR_FLAG__INVALID_VREG_INDEXED,
+
+    PM_ERR_FLAG__INVALID_POINTER,
+    
+    PM_ERR_FLAG__FUNCTION_NOT_SUPPORTED_AT_THIS_LEVEL,
+
+    PM_ERR_FLAG__INVALID_LPG_INDEXED,
+
+    PM_ERR_FLAG__INVALID_DISPBACKLIGHT_APP_INDEXED,
+    PM_ERR_FLAG__INVALID_RGB_INDEXED,
+    PM_ERR_FLAG__INVALID_SMBB_INDEXED,
+    PM_ERR_FLAG__FG_SRAM_DEVICE_ACCESS,
+
+    PM_ERR_FLAG__SBL_CONFIG_REG_OPERATION_NOT_SUPPORTED,
+
+    PM_ERR_FLAG__INVALID
+
+} pm_err_flag_type;
+
+/**
+ * This macro is used to return the greater of PM_ERR_FLAG__SUCCESS
+ * or whatever error an API may have found.
+ */
+#define PM_ERR_MAX(a,b) ((a > b) ? (a) : (b))
+
+
+#endif
+
diff --git a/dev/pmic/pmi8994/include/pm_fg_adc_usr.h b/dev/pmic/pmi8994/include/pm_fg_adc_usr.h
new file mode 100644
index 0000000..ebe249c
--- /dev/null
+++ b/dev/pmic/pmi8994/include/pm_fg_adc_usr.h
@@ -0,0 +1,549 @@
+/* Copyright (c) 2015, The Linux Foundation. All rights reserved.
+
+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 Linux Foundation nor the names of its
+      contributors may be used to endorse or promote products derived
+      from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#ifndef __PM_FG_ADC_USR_H__
+#define __PM_FG_ADC_USR_H__
+
+#include "pm_err_flags.h"
+#include "pm_resources_and_types.h"
+
+/*===========================================================================
+                        TYPE DEFINITIONS 
+===========================================================================*/
+
+typedef enum{
+  /*IRQ indicating that IBAT is greater than threshold defined in IBAT_INT__THR register
+    0x0 : INT_RT_STATUS_LOW
+    0x1 : INT_RT_STATUS_HIGH */
+  PM_FG_ADC_USR_IBAT_GT_THR_RT_STS =0,
+  /*IRQ indicating that VBAT is less than threshold defined in VBAT_INT__THR register
+    0x0 : INT_RT_STATUS_LOW
+    0x1 : INT_RT_STATUS_HIGH */
+  PM_FG_ADC_USR_VBAT_LT_THR_INT_RT_STS,
+  PM_FG_ADC_USR_IRQ_INVALID
+} pm_fg_adc_usr_irq_type;
+
+
+typedef enum{
+  /*STS 
+    00 = lpm - low power mode
+    01 = hpm - high power mode
+    10 = mpm - medium (normal) power mode
+    11 = not used
+    0x0 : BCL_IS_LPM
+    0x1 : BCL_IS_HPM
+    0x2 : BCL_IS_MPM
+    0x3 : BCL_IS_INVALID_MODE */
+  PM_FG_ADC_USR_BCL_MODE_STS_LPM =0,
+  PM_FG_ADC_USR_BCL_MODE_STS_HPM,
+  PM_FG_ADC_USR_BCL_MODE_STS_MPM,
+  PM_FG_ADC_USR_BCL_MODE_STS_INVAID
+} pm_fg_adc_usr_bcl_mode_sts;
+
+
+/*===========================================================================
+                        EXTERNAL FUNCTION DEFINITIONS
+===========================================================================*/
+  /**
+  * @brief This function enables irq
+  * 
+  * @details
+  * This function enables irq
+  * 
+  * @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+  * @param[in] pm_fg_adc_usr_irq_type               irq type
+  * @param[in] boolean        enable/disable value
+  *
+  * @return  pm_err_flag_type 
+  *          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+  *          version of the PMIC.
+  *          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+  *
+  */
+  pm_err_flag_type pm_fg_adc_usr_irq_enable(uint32 device_index, pm_fg_adc_usr_irq_type irq, boolean enable);
+  
+  
+  /**
+  * @brief This function clears irq
+  * 
+  * @details
+  *  This function clears irq
+  * 
+  * @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+  * @param[in] pm_fg_adc_usr_irq_type               irq type
+  *
+  *
+  * @return  pm_err_flag_type 
+  *          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+  *          version of the PMIC.
+  *          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+  *
+  */
+  pm_err_flag_type pm_fg_adc_usr_irq_clear(uint32  device_index, pm_fg_adc_usr_irq_type irq);
+  
+  /**
+  * @brief This function sets interrupt triggers
+  * 
+  * @details
+  *  This function sets interrupt triggers
+  * 
+  * @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+  * @param[in] pm_fg_adc_usr_irq_type               irq type
+  * @param[in] pm_irq_trigger_type               trigger
+  *
+  * @return  pm_err_flag_type 
+  *          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+  *          version of the PMIC.
+  *          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+  *
+  */
+  pm_err_flag_type pm_fg_adc_usr_irq_set_trigger(uint32 device_index, pm_fg_adc_usr_irq_type irq, pm_irq_trigger_type trigger);
+  
+  
+  /**
+  * @brief This function returns irq status
+  * 
+  * @details
+  *  This function returns irq status
+  * 
+  * @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+  * @param[in] pm_fg_adc_usr_irq_type        irq type
+  * @param[in] pm_irq_status_type        irq status type
+  * @param[in] boolean        irq TRUE/FALSE status
+  *
+  * @return  pm_err_flag_type 
+  *          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+  *          version of the PMIC.
+  *          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+  *
+  */
+  pm_err_flag_type pm_fg_adc_usr_irq_status(uint32 device_index, pm_fg_adc_usr_irq_type irq, pm_irq_status_type type, boolean *status);
+
+/**
+* @brief This function enable/disables BMS Fule Gauge Algorithm BCL (battery current limiting s/w use) *
+* @details
+*  This function enable/disables BMS Fule Gauge Algorithm BCL (battery current limiting s/w use) 
+* 
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in] enable  enable/disable BCL monitoring
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_enable_bcl_monitoring(uint32 device_index, boolean enable);
+
+/**
+* @brief This function returns BMS Fule Gauge BCL (battery current limiting s/w use) *
+* @details
+* This function returns BMS Fule Gauge BCL (battery current limiting s/w use)  
+* 
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[out]enable  enable/disable BCL monitoring
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_bcl_monitoring_sts(uint32 device_index, boolean *enable);
+
+
+/**
+* @brief This function returns of status of battery parameter update request *
+* @details
+*  This function returns of status of battery parameter update request (VBAT, IBAT, VBAT_CP, IBAT_CP, IBAT_MAX, IBAT_MAX_CP, VBAT_MIN, VBAT_MIN_CP) 
+* 
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in]enable  enable/disable BCL monitoring
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_access_bat_req_sts(uint32 device_index, boolean *enable);
+
+
+/**
+* @brief This function enable/disables the updates of VBAT, IBAT, VBAT_CP, IBAT_CP, IBAT_MAX, IBAT_MAX_CP, VBAT_MIN, VBAT_MIN_CP *
+* @details
+*  This function enable/disables the updates of VBAT, IBAT, VBAT_CP, IBAT_CP, IBAT_MAX, IBAT_MAX_CP, VBAT_MIN, VBAT_MIN_CP 
+* 
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in]enable  enable/disable BCL monitoring
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_set_access_bat_req(uint32 device_index, boolean enable);
+
+
+/**
+* @brief This function returns the grant status of battery parameter update request *
+* @details
+*  This function returns of status of battery parameter update request (VBAT, IBAT, VBAT_CP, IBAT_CP, IBAT_MAX, IBAT_MAX_CP, VBAT_MIN, VBAT_MIN_CP) 
+* 
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in]enable  enable/disable BCL monitoring
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_access_bat_grnt_sts(uint32 device_index, boolean *enable);
+
+
+
+/**
+* @brief This function returns status RDY bit after battery parameter update request is serviced *
+* @details
+*  After the first readings from ADC are obtained, this bit is set to 1; At reset and shutdown, this bit gets automatically cleared 
+* 
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in]enable  enable/disable BCL monitoring
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_bcl_values(uint32 device_index, boolean *enable);
+
+
+/**
+* @brief This function returns battery ADC Voltage *
+* @details
+*  8 bit signed partial ADC value, MSB = 0 is positive voltage (positive number), only positive voltages are captured, 1 LSB = 39 mV 
+* 
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[out]vbat_adc  Battery Voltage
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_vbat(uint32 device_index, uint32 *vbat_adc);
+
+
+/**
+* @brief This function returns battery ADC Current *
+* @details
+*  8 bit signed partial ADC value, MSB = 0 is discharging current (positive number), only discharging currents are captured, 1 LSB = 39 mA 
+* 
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[out]ibat_adc  Battery Current
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_ibat(uint32 device_index, int32 *ibat_adc);
+
+
+/**
+* @brief This function returns minimum battery Voltage *
+* @details
+*  Running Vbat Min stored and then cleared by SW
+* 
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[out]vbat_min  Battery Minimum Voltage
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_vbat_min(uint32 device_index, uint8 *vbat_min);
+
+/**
+* @brief This function returns max battery current *
+* @details
+*  Running Ibat Min stored and then cleared by SW
+* 
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[out]ibat_max  Battery Maximum Current
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_ibat_max(uint32 device_index, uint8 *ibat_max);
+
+
+/**
+* @brief This function returns copy of minimum battery Voltage *
+* @details
+*  Running Vbat Min stored and then cleared by SW
+* 
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[out]vbat_min  Battery Minimum Voltage
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_vbat_min_cp(uint32 device_index, uint8 *vbat_min_cp);
+
+/**
+* @brief This function returns copy of max battery current *
+* @details
+*  Running Ibat Min stored and then cleared by SW
+* 
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[out]ibat_max  Battery Maximum Current
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_ibat_max_cp(uint32 device_index, uint8 *ibat_max_cp);
+
+
+/**
+* @brief This function returns Battery Resitance in HALF encoding *
+* @details
+*  HALF-FLOATING point encoding, 15:11 exp, bit 10 sign, 9:0 mantissa, 1=1 ohm, refer to MDOS for encoding info
+* 
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[out]batt_resistance  Battery Resistance 
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_half_point_encoding(uint32 device_index, uint16 *batt_resistance);
+
+
+/**
+* @brief This function returns BCL mode status *
+* @details
+*  This function returns BCL mode status 
+* 
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[out] bcl_mode  BCL mode
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_bcl_mode(uint32 device_index, pm_fg_adc_usr_bcl_mode_sts *bcl_mode);
+
+
+/**
+* @brief This function returns votlage gain correction value for battery voltage *
+* @details
+*  This function returns gain correction value for battery 
+* 
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in] gainCorrection  for battery volatge
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_bcl_v_gain_batt(uint32 device_index, int32 *v_gain_correction);
+
+/**
+* @brief This function returns current Rsense gain correction value for Battery Current *
+* @details
+*  This function returns current Rsense gain correction value for Battery Current  
+* 
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in] gainCorrection  for battery volatge
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_bcl_i_gain_rsense(uint32 device_index, int32 *i_gain_rsense);
+
+
+/**
+* @brief This function returns current Rsense offset value for Battery Current *
+* @details
+*  This function returns current Rsense offset value for Battery Current  
+* 
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in] ioffset_rsense  Offset Gain Correction battery current
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_bcl_i_offset_rsense(uint32 device_index, int32 *i_offset_rsense);
+
+
+/**
+* @brief This function returns current gain in BATFET for Battery Current *
+* @details
+*  This function returns current gain in BATFET for Battery Current  
+* 
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in] igain_offset_correction  Gain Correction for battery current
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_bcl_i_gain_batfet(uint32 device_index, int32 *i_gain_batfet);
+
+
+/**
+* @brief This function returns current offset in BATFET for Battery Current *
+* @details
+*  This function returns current gain in BATFET for Battery Current  
+* 
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in] ioffset_batfet_correction  offset Gain Correction for BATFET
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_bcl_i_offset_batfet(uint32 device_index, int32 *i_offset_batfet);
+
+
+/**
+* @brief This function returns source used for current sense *
+* @details
+*  This function returns source used for current sense  
+* 
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in] isense_source  source used for current sense
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_bcl_i_sense_source(uint32 device_index, boolean *i_sense_source);
+
+
+/**
+* @brief This function cleras stored VBAT minimum  *
+* @details
+* This function cleras stored VBAT minimum  
+* 
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in]enable  enable/disable for clearing stored vbat minimum
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_clear_vbat_min(uint32 device_index, boolean enable);
+
+/**
+* @brief This function clears stored IBAT Max *
+* @details
+* This function cleras stored IBAT Max 
+* 
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in]enable  enable/disable for clearing stored vbat minimum
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_clear_ibat_max(uint32 device_index, boolean enable);
+
+/**
+* @brief This function returns battery charge current after gain and offset calibration*
+* @details
+*  calibrated_value = ((raw_data + offset) * (1 + gain))
+* 
+* @param[in] pmic_device_index  Primary: 0 Secondary: 1
+* @param[out]calibrated_vbat    Calibrated Battery Voltage
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_calibrated_ibat(uint32 pmic_device, int32 *calibrated_ibat);
+
+/**
+* @brief This function returns battery ADC Voltage after gain calibration*
+* @details
+*  calibrated_value = raw_data * (1 + gain)
+* 
+* @param[in] pmic_device_index  Primary: 0 Secondary: 1
+* @param[out]calibrated_vbat    Calibrated Battery Voltage
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_calibrated_vbat(uint32 pmic_device, uint32 *calibrated_vbat);
+
+
+#endif /* __PM_FG_ADC_USR_H__ */
diff --git a/dev/pmic/pmi8994/include/pm_fg_driver.h b/dev/pmic/pmi8994/include/pm_fg_driver.h
new file mode 100644
index 0000000..85685e6
--- /dev/null
+++ b/dev/pmic/pmi8994/include/pm_fg_driver.h
@@ -0,0 +1,292 @@
+/* Copyright (c) 2015, The Linux Foundation. All rights reserved.
+
+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 Linux Foundation nor the names of its
+      contributors may be used to endorse or promote products derived
+      from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#ifndef __PM_FG_DRIVER_H__
+#define __PM_FG_DRIVER_H__
+
+/*===========================================================================
+                        INCLUDE FILES
+===========================================================================*/
+
+#include "pm_err_flags.h"
+#include "pm_resources_and_types.h"
+#include "pm_comm.h"
+
+/*===========================================================================
+                        TYPE DEFINES AND ENUMS
+===========================================================================*/
+
+/*  FG SOC register */
+typedef struct fg_soc_register_ds
+{
+  pm_register_address_type base_address;
+  pm_register_address_type peripheral_offset;
+
+  pm_register_address_type fg_soc_alg_sts;               //0x006
+  pm_register_address_type fg_soc_alg_aux_sts0;          //0x007
+  pm_register_address_type fg_soc_sleep_shutdown_sts;//0x008
+  pm_register_address_type fg_soc_monotonic_soc;         //0x009
+  pm_register_address_type fg_soc_monotonic_soc_cp;      //0x00A
+
+  pm_register_address_type int_rt_sts;               //0x010
+  pm_register_address_type int_set_type;             //0x011
+  pm_register_address_type int_polarity_high;        //0x012
+  pm_register_address_type int_polarity_low;         //0x013
+  pm_register_address_type int_latched_clr;          //0x014
+  pm_register_address_type int_en_set;               //0x015
+  pm_register_address_type int_en_clr;               //0x016
+  pm_register_address_type int_latched_sts;          //0x018
+  pm_register_address_type int_pending_sts;          //0x019
+  pm_register_address_type int_mid_sel;              //0x01A
+  pm_register_address_type int_priority;             //0x01B
+
+  pm_register_address_type fg_soc_boot_mode;         //0x050
+  pm_register_address_type fg_soc_restart;           //0x051
+  pm_register_address_type fg_soc_wdog_exp;              //0x052
+  pm_register_address_type fg_soc_sts_clr;           //0x053
+
+  pm_register_address_type fg_soc_sec_access;        //0x0D0
+
+  pm_register_address_type fg_soc_vadc_data0;        //0x0E8
+  pm_register_address_type fg_soc_bcl_tst0;          //0x0E9
+
+  pm_register_address_type fg_soc_alg_sts_cmp;       //0x0EB
+
+  pm_register_address_type fg_soc_trim_num;          //0x0F0
+
+  pm_register_address_type fg_soc_fg_pbs_trig;       //0x0F1
+  pm_register_address_type fg_soc_fg_pbs_trig_mux;   //0x0F2
+  pm_register_address_type fg_soc_fg_reset;          //0x0F3
+  pm_register_address_type fg_soc_fg_cya_cfg;        //0x0F4
+  pm_register_address_type fg_soc_low_power_cfg;     //0x0F5
+  pm_register_address_type fg_soc_bcl_v_gain_batt_trim;//0x0F6
+  pm_register_address_type fg_soc_bcl_i_gain_rsense_trim;//0x0F7
+  pm_register_address_type fg_soc_bcl_i_offset_rsense_trim;//0x0F8
+  pm_register_address_type fg_soc_bcl_i_gain_batfet_trim;//0x0F9
+  pm_register_address_type fg_soc_bcl_i_offset_batfet_trim;//0x0FA
+
+}fg_soc_register_ds;
+
+/*  FG Battery register */
+typedef struct fg_batt_register_ds
+{
+  pm_register_address_type base_address;
+  pm_register_address_type peripheral_offset;
+
+  //Read Battery ID currently in use by the alogorithm
+  pm_register_address_type fg_batt_battery;          //0x006
+  //FG System Battery Status 
+  pm_register_address_type fg_batt_sys_batt;         //0x007
+  //Battery detection 
+  pm_register_address_type fg_batt_det;              //0x008
+  //Battery status information on JEITA
+  pm_register_address_type fg_batt_info_sts;         //0x009
+
+  pm_register_address_type fg_batt_recovery_sts;     //0x00A
+
+  pm_register_address_type int_rt_sts;               //0x010
+  pm_register_address_type int_set_type;             //0x011
+  pm_register_address_type int_polarity_high;        //0x012
+  pm_register_address_type int_polarity_low;         //0x013
+  pm_register_address_type int_latched_clr;          //0x014
+  pm_register_address_type int_en_set;               //0x015
+  pm_register_address_type int_en_clr;               //0x016
+  pm_register_address_type int_latched_sts;          //0x018
+  pm_register_address_type int_pending_sts;          //0x019
+  pm_register_address_type int_mid_sel;              //0x01A
+  pm_register_address_type int_priority;             //0x01B
+
+  //Force Battery ID during first SOC re detection
+  pm_register_address_type fg_batt_sw_batt_id;       //0x050
+  //Battery Profile ID
+  pm_register_address_type fg_batt_profile_id;       //0x051
+  pm_register_address_type fg_batt_removed_latched;  //0x052
+  //Set by sw after FG provides recovery information
+  pm_register_address_type fg_batt_batt_recovery;    //0x053
+  // Battery secured access
+  pm_register_address_type fg_batt_sec_access;       //0x0D0
+
+  pm_register_address_type fg_batt_esr_change_bound; //0x0E2
+
+  pm_register_address_type fg_batt_peek_mux1;        //0x0EB
+  pm_register_address_type fg_batt_peek_mux2;        //0x0EC
+  pm_register_address_type fg_batt_peek_mux3;        //0x0ED
+  pm_register_address_type fg_batt_peek_mux4;        //0x0EE
+
+  //Number of Trim register in pheripheral
+  pm_register_address_type fg_batt_trim_num;         //0x0F0
+  //Battery Misc configuration ..recovery and thermistor cfg
+  pm_register_address_type fg_batt_misc_cfg;         //0x0F1
+
+  //Battery ID trum values 
+  pm_register_address_type fg_batt_batt_id_curr0;    //0x0F2
+  pm_register_address_type fg_batt_batt_id_curr1;    //0x0F3
+  pm_register_address_type fg_batt_esr_cur;          //0x0F4
+  //Enable/Disbale ESR mesurement 
+  pm_register_address_type fg_batt_esr_meas_en;      //0x0F5
+  pm_register_address_type fg_batt_rbias_div_sel;    //0x0F6
+
+}fg_batt_register_ds;
+
+
+/*  FG Memory Intergace register */
+typedef struct fg_memif_register_ds
+{
+  pm_register_address_type base_address;
+  pm_register_address_type peripheral_offset;
+
+  pm_register_address_type fg_memif_revision1;       //0x000
+  pm_register_address_type fg_memif_revision2;       //0x001
+  pm_register_address_type fg_memif_revision3;       //0x002
+  pm_register_address_type fg_memif_revision4;       //0x003
+
+  pm_register_address_type int_rt_sts;               //0x010
+  pm_register_address_type int_set_type;             //0x011
+  pm_register_address_type int_polarity_high;        //0x012
+  pm_register_address_type int_polarity_low;         //0x013
+  pm_register_address_type int_latched_clr;          //0x014
+  pm_register_address_type int_en_set;               //0x015
+  pm_register_address_type int_en_clr;               //0x016
+  pm_register_address_type int_latched_sts;          //0x018
+  pm_register_address_type int_pending_sts;          //0x019
+  pm_register_address_type int_mid_sel;              //0x01A
+  pm_register_address_type int_priority;             //0x01B
+
+  //Memory Interface configuration
+  pm_register_address_type fg_memif_mem_intf_cfg;    //0x040
+  //Memory Interface Control
+  pm_register_address_type fg_memif_mem_intf_ctl;    //0x041
+  pm_register_address_type fg_memif_mem_intf_addr_lsb;//0x042
+  pm_register_address_type fg_memif_mem_intf_addr_msb;//0x043
+
+  pm_register_address_type fg_memif_mem_intf_wr_data0;//0x048
+  pm_register_address_type fg_memif_mem_intf_wr_data1;//0x049
+  pm_register_address_type fg_memif_mem_intf_wr_data2;//0x04A
+  pm_register_address_type fg_memif_mem_intf_wr_data3;//0x04B
+
+  pm_register_address_type fg_memif_mem_intf_rd_data0;//0x04C
+  pm_register_address_type fg_memif_mem_intf_rd_data1;//0x04D
+  pm_register_address_type fg_memif_mem_intf_rd_data2;//0x04E
+  pm_register_address_type fg_memif_mem_intf_rd_data3;//0x04F
+
+  //PMIC Secured Access 
+  pm_register_address_type fg_memif_sec_access;      //0x0D0
+  //OTP Configuration
+  pm_register_address_type fg_memif_otp_cfg1;        //0x0E2
+  pm_register_address_type fg_memif_otp_cfg2;        //0x0E3
+
+}fg_memif_register_ds;
+
+
+/*  FG ADC User register */
+typedef struct fg_adc_usr_register_ds
+{
+  pm_register_address_type base_address;
+  pm_register_address_type peripheral_offset;
+
+  pm_register_address_type int_rt_sts;               //0x010
+  pm_register_address_type int_set_type;             //0x011
+  pm_register_address_type int_polarity_high;        //0x012
+  pm_register_address_type int_polarity_low;         //0x013
+  pm_register_address_type int_latched_clr;          //0x014
+  pm_register_address_type int_en_set;               //0x015
+  pm_register_address_type int_en_clr;               //0x016
+  pm_register_address_type int_latched_sts;          //0x018
+  pm_register_address_type int_pending_sts;          //0x019
+  pm_register_address_type int_mid_sel;              //0x01A
+  pm_register_address_type int_priority;             //0x01B
+
+  //Enable FG ADC Modgule for BCL
+  pm_register_address_type fg_adc_usr_en_ctl;        //0x046
+  //Pause the updates ofr battery registers 
+  pm_register_address_type fg_adc_usr_access_bat_req;//0x050
+  pm_register_address_type fg_adc_usr_access_bat_grnt;//0x051
+  // bcl values after first reading from ADC are obtained
+  pm_register_address_type fg_adc_usr_bcl_values;    //0x053
+  // ADC user secured access
+  pm_register_address_type fg_adc_usr_sec_access;    //0x0D0
+  // VBAT, IBAT
+  pm_register_address_type fg_adc_usr_vbat;          //0x054
+  pm_register_address_type fg_adc_usr_ibat;          //0x055
+  pm_register_address_type fg_adc_usr_vbat_cp;       //0x056
+  pm_register_address_type fg_adc_usr_ibat_cp;       //0x057
+  //Min max values
+  pm_register_address_type fg_adc_usr_vbat_min;      //0x058
+  pm_register_address_type fg_adc_usr_ibat_max;      //0x059
+  pm_register_address_type fg_adc_usr_vbat_min_cp;   //0x05A
+  pm_register_address_type fg_adc_usr_ibat_max_cp;   //0x05B
+  //HALF battery resistance value
+  pm_register_address_type fg_adc_usr_bat_res_7_0;   //0x05C
+  pm_register_address_type fg_adc_usr_bat_res_15_8;  //0x05D
+  //BCL Modes
+  pm_register_address_type fg_adc_usr_bcl_mode;      //0x05E
+  //Gain Correction
+  pm_register_address_type fg_adc_usr_bcl_v_gain_batt;//0x060
+  pm_register_address_type fg_adc_usr_bcl_i_gain_rsense;//0x061
+  pm_register_address_type fg_adc_usr_bcl_i_offset_rsense;//0x062
+  pm_register_address_type fg_adc_usr_bcl_i_gain_batfet;//0x063
+  pm_register_address_type fg_adc_usr_bcl_i_offset_batfet;//0x064
+  pm_register_address_type fg_adc_usr_bcl_i_sense_source;//0x065
+  //vbat ibatmax clear
+  pm_register_address_type fg_adc_usr_vbat_min_clr;  //0x066
+  pm_register_address_type fg_adc_usr_ibat_max_clr;  //0x067
+  //threshold interrrupt 
+  pm_register_address_type fg_adc_usr_vbat_int;  //0x068
+  pm_register_address_type fg_adc_usr_ibat_int;  //0x069
+
+}fg_adc_usr_register_ds;
+
+typedef struct fg_register_ds
+{
+  fg_soc_register_ds      *soc_register;
+  fg_batt_register_ds     *batt_register;
+  fg_memif_register_ds    *memif_register;
+  fg_adc_usr_register_ds  *adc_usr_register;
+
+}fg_register_ds;
+
+typedef struct
+{
+    pm_comm_info_type     *comm_ptr;
+    fg_register_ds        *fg_register;
+    uint8                 num_of_peripherals;
+}pm_fg_data_type;
+
+
+/*===========================================================================
+
+                     FUNCTION DECLARATION 
+
+===========================================================================*/
+
+/* driver init */
+void pm_fg_driver_init(uint32 pmic_index);
+
+pm_fg_data_type* pm_fg_get_data(uint32 pmic_index);
+
+#endif // __PM_FG_DRIVER_H__
diff --git a/dev/pmic/pmi8994/include/pm_resources_and_types.h b/dev/pmic/pmi8994/include/pm_resources_and_types.h
new file mode 100644
index 0000000..339d5f4
--- /dev/null
+++ b/dev/pmic/pmi8994/include/pm_resources_and_types.h
@@ -0,0 +1,262 @@
+/* Copyright (c) 2015, The Linux Foundation. All rights reserved.
+
+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 Linux Foundation nor the names of its
+      contributors may be used to endorse or promote products derived
+      from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#ifndef PM_RESOURCES_AND_TYPES__H
+#define PM_RESOURCES_AND_TYPES__H
+
+/*===========================================================================
+
+                        HEADER FILES
+
+===========================================================================*/
+#include <stdint.h>
+#include <sys/types.h>
+#include <smem.h>
+
+/*===========================================================================
+
+                        TYPE DEFINITIONS 
+
+===========================================================================*/
+typedef uint8_t pm_register_data_type;
+typedef uint16_t pm_register_address_type;
+
+
+#define  PM_MAX_NUM_PMICS  SMEM_MAX_PMIC_DEVICES
+
+/*! \enum chargers
+ *  \brief This enum contains definitions of all chargers in the target
+ */
+
+enum
+{
+  PM_CHG_1,
+  PM_CHG_INVALID
+};
+
+/*!
+ * PMIC power module voltage level
+ */
+typedef uint32 pm_volt_level_type;
+
+typedef enum
+{
+   PM_OFF,
+   PM_ON,
+   PM_INVALID
+}pm_on_off_type;
+
+
+typedef enum
+{
+   PM_DISABLE_CONFIG = 0,
+   PM_ENABLE_CONFIG  = 1,
+   PM_CONFIG_INVALID
+} pm_smbchg_param_config_enable_type;
+
+
+typedef enum 
+{
+    PM_SW_MODE_LPM     = 0,	// Low power mode	
+    PM_SW_MODE_BYPASS  = 1,	// Bypass mode       bit 5
+    PM_SW_MODE_AUTO    = 2, // Auto mode         bit 6
+    PM_SW_MODE_NPM     = 4,	// Normal power mode bit 7	
+    PM_SW_MODE_INVALID
+}pm_sw_mode_type;
+
+/*!
+ * The number of phases that the autonomous phase controller(APC) can use.
+ */
+typedef enum 
+{
+    PM_PHASE_CNT__1,		
+    PM_PHASE_CNT__2,	
+    PM_PHASE_CNT__3, 
+    PM_PHASE_CNT__4,
+    PM_PHASE_CNT__INVALID
+}pm_phase_cnt_type;
+
+/** 
+  @struct peripheral_info_type
+  @brief Contains Peripheral Information such as Type, Subtype, 
+         Analog and Digital Major Versions. 
+ */
+typedef struct 
+{
+    uint16 base_address;
+    uint8  peripheral_type;
+    uint8  peripheral_subtype;
+    uint8  analog_major_version;
+    uint8  analog_minor_version;
+    uint8  digital_major_version;
+    uint8  digital_minor_version;
+}peripheral_info_type;
+
+// /*! 
+// * Generic enable,
+// */
+//typedef enum
+//{
+//    PM_NPA_GENERIC_DISABLE, // default
+//    PM_NPA_GENERIC_ENABLE,
+//    PM_NPA_GENERIC_INVALID
+//}pm_npa_generic_enable_type;
+//
+///*!
+// * Bypass Allowed
+// */
+//typedef enum
+//{
+//    PM_NPA_BYPASS_ALLOWED, // default
+//    PM_NPA_BYPASS_DISALLOWED,
+//    PM_NPA_BYPASS_INVALID
+//}pm_npa_bypass_allowed_type;
+//
+///*!
+// * LDO Software Mode
+// */
+//typedef enum
+//{
+//    PM_NPA_SW_MODE_LDO__IPEAK, // default
+//    PM_NPA_SW_MODE_LDO__NPM,
+//    PM_NPA_SW_MODE_LDO__INVALID
+//}pm_npa_sw_mode_ldo_type;
+///*!
+// * SMPS Software Mode
+// */
+//typedef enum
+//{
+//    PM_NPA_SW_MODE_SMPS__AUTO, // default
+//    PM_NPA_SW_MODE_SMPS__IPEAK,
+//    PM_NPA_SW_MODE_SMPS__NPM,
+//    PM_NPA_SW_MODE_SMPS__INVALID
+//}pm_npa_sw_mode_smps_type;
+//
+///*!
+// * Pin Control Enable
+// */
+//typedef enum
+//{
+//    PM_NPA_PIN_CONTROL_ENABLE__NONE = 0, // default
+//    PM_NPA_PIN_CONTROL_ENABLE__EN1 = 1,
+//    PM_NPA_PIN_CONTROL_ENABLE__EN2 = 2,
+//    PM_NPA_PIN_CONTROL_ENABLE__EN3 = 4,
+//    PM_NPA_PIN_CONTROL_ENABLE__EN4 = 8,
+//    PM_NPA_PIN_CONTROL_ENABLE__INVALID
+//}pm_npa_pin_control_enable_type;
+//
+///*!
+// * Pin Control Power Mode
+// */
+//typedef enum
+//{
+//    PM_NPA_PIN_CONTROL_POWER_MODE__NONE = 0, // default
+//    PM_NPA_PIN_CONTROL_POWER_MODE__EN1 = 1,
+//    PM_NPA_PIN_CONTROL_POWER_MODE__EN2 = 2,
+//    PM_NPA_PIN_CONTROL_POWER_MODE__EN3 = 4,
+//    PM_NPA_PIN_CONTROL_POWER_MODE__EN4 = 8,
+//    PM_NPA_PIN_CONTROL_POWER_MODE__SLEEPB = 16,
+//    PM_NPA_PIN_CONTROL_POWER_MODE__INVALID
+//}pm_npa_pin_control_power_mode_type;
+//
+//
+///*!
+// * Pin Control Power Mode
+// */
+//typedef enum
+//{
+//    PM_NPA_CORNER_MODE__NONE = 0, // default
+//    PM_NPA_CORNER_MODE__1 = 1,
+//    PM_NPA_CORNER_MODE__2 = 2,
+//    PM_NPA_CORNER_MODE__3 = 3,
+//    PM_NPA_CORNER_MODE__4 = 4,
+//    PM_NPA_CORNER_MODE__5 = 5,
+//    PM_NPA_CORNER_MODE__6 = 6,
+//    PM_NPA_CORNER_MODE__INVALID
+//}pm_npa_corner_mode_type;
+//
+///*!
+// * Pin Control Enable
+// */
+//typedef enum
+//{
+//    PM_NPA_CLK_BUFFER_PIN_CONTROL_ENABLE__NONE = 0, // default
+//    PM_NPA_CLK_BUFFER_PIN_CONTROL_ENABLE__EN1 = 1,
+//    PM_NPA_CLK_BUFFER_PIN_CONTROL_ENABLE__INVALID
+//}pm_npa_clk_buff_pin_control_enable_type;
+//
+typedef enum
+{
+    PM_CLK_BUFF_OUT_DRV__1X,
+    PM_CLK_BUFF_OUT_DRV__2X,
+    PM_CLK_BUFF_OUT_DRV__3X,
+    PM_CLK_BUFF_OUT_DRV__4X,
+} pm_clk_buff_output_drive_strength_type;
+
+/*! \enum pm_irq_trigger_type
+ *  \brief Type definition for different IRQ triggers
+ */
+typedef enum 
+{
+  PM_IRQ_TRIGGER_ACTIVE_LOW,
+  PM_IRQ_TRIGGER_ACTIVE_HIGH,
+  PM_IRQ_TRIGGER_RISING_EDGE,
+  PM_IRQ_TRIGGER_FALLING_EDGE,
+  PM_IRQ_TRIGGER_DUAL_EDGE,
+  PM_IRQ_TRIGGER_INVALID
+} pm_irq_trigger_type;
+
+/*! \enum pm_irq_status_type
+ *  \brief Type definition for different IRQ STATUS
+ */
+typedef enum
+{
+  PM_IRQ_STATUS_RT,
+  PM_IRQ_STATUS_LATCHED,
+  PM_IRQ_STATUS_PENDING,
+  PM_IRQ_STATUS_ENABLE,
+  PM_IRQ_STATUS_INVALID
+} pm_irq_status_type;
+
+///*! \enum pm_npa_mode_id_core_rail_type
+// *  \brief To do CPR voltage settling in the SBL.
+// */
+//typedef enum
+//{
+//   PMIC_NPA_MODE_ID_CORE_RAIL_OFF = 0,
+//   PMIC_NPA_MODE_ID_CORE_RAIL_RETENTION = 1,
+//   PMIC_NPA_MODE_ID_CORE_RAIL_LOW_MINUS = 2,
+//   PMIC_NPA_MODE_ID_CORE_RAIL_LOW = 3,
+//   PMIC_NPA_MODE_ID_CORE_RAIL_NOMINAL = 4,
+//   PMIC_NPA_MODE_ID_CORE_RAIL_NOMINAL_PLUS = 5,
+//   PMIC_NPA_MODE_ID_CORE_RAIL_TURBO = 6,
+//   PMIC_NPA_MODE_ID_CORE_RAIL_MAX = 7,
+//}pm_npa_mode_id_core_rail_type;
+//
+#endif /* PM_RESOURCES_AND_TYPES__H */
+
diff --git a/dev/pmic/pmi8994/include/pm_smbchg_bat_if.h b/dev/pmic/pmi8994/include/pm_smbchg_bat_if.h
new file mode 100644
index 0000000..7d3a8f6
--- /dev/null
+++ b/dev/pmic/pmi8994/include/pm_smbchg_bat_if.h
@@ -0,0 +1,540 @@
+/* Copyright (c) 2015, The Linux Foundation. All rights reserved.
+
+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 Linux Foundation nor the names of its
+      contributors may be used to endorse or promote products derived
+      from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#ifndef PM_SMBCHG_BAT_IF_H
+#define PM_SMBCHG_BAT_IF_H
+
+#include "pm_err_flags.h"
+#include "pm_resources_and_types.h"
+
+/*===========================================================================
+
+                        TYPE DEFINITIONS 
+
+===========================================================================*/
+
+
+/*! \struct pm_smbchg_bat_if_cmd_chg_type
+   \brief Struct for writing to battery interface command control
+ */
+typedef enum pm_smbchg_bat_if_cmd_chg_type
+{
+   PM_SMBCHG_BAT_IF_CMD__OTG_EN,               /** <OTG Enable, 0 = Disable, 1 = Enable                                                             >*/
+   PM_SMBCHG_BAT_IF_CMD__EN_BAT_CHG,           /** <Enable Battery Charging                                                                         >*/
+   PM_SMBCHG_BAT_IF_CMD__FC_COM,               /** <Fast Charge Command, FALSE = Force pre-charge current, TRUE = Allow Fast Charge                 >*/
+   PM_SMBCHG_BAT_IF_CMD__STAT_OUTPUT,          /** <0 = STAT output enabled (still allow IRQs) 1 = Turn off STAT pin (still allow IRQs)             >*/
+   PM_SMBCHG_BAT_IF_CMD__THERM_NTC_I_OVERRIDE, /** <0 = Thermistor Monitor per config setting 1 = Force thermistor monitor disable (override config)>*/
+   PM_SMBCHG_BAT_IF_CMD__WIRELESS_CHG_DIS,     /** <Wireless charging 0 = enabled, 1 = disabled                                                     >*/
+   PM_SMBCHG_BAT_IF_CMD__INVALID               /** <INVALID                                                                                         >*/
+}pm_smbchg_bat_if_cmd_chg_type;
+
+
+/*! \enum pm_smbchg_bat_if_low_bat_thresh_type
+   \brief enum for different level of low battery threshold 
+ */
+typedef enum pm_smbchg_bat_if_low_bat_thresh_type
+{
+   PM_SMBCHG_BAT_IF_LOW_BATTERY_DISABLED,
+   PM_SMBCHG_BAT_IF_LOW_BATTERY_THRESH_2P5,
+   PM_SMBCHG_BAT_IF_LOW_BATTERY_THRESH_2P6,
+   PM_SMBCHG_BAT_IF_LOW_BATTERY_THRESH_2P7,
+   PM_SMBCHG_BAT_IF_LOW_BATTERY_THRESH_2P8,
+   PM_SMBCHG_BAT_IF_LOW_BATTERY_THRESH_2P9,
+   PM_SMBCHG_BAT_IF_LOW_BATTERY_THRESH_3P0,
+   PM_SMBCHG_BAT_IF_LOW_BATTERY_THRESH_3P1,
+   PM_SMBCHG_BAT_IF_LOW_BATTERY_THRESH_3P7,
+   PM_SMBCHG_BAT_IF_LOW_BATTERY_THRESH_2P88,
+   PM_SMBCHG_BAT_IF_LOW_BATTERY_THRESH_3P00,
+   PM_SMBCHG_BAT_IF_LOW_BATTERY_THRESH_3P10,
+   PM_SMBCHG_BAT_IF_LOW_BATTERY_THRESH_3P25,
+   PM_SMBCHG_BAT_IF_LOW_BATTERY_THRESH_3P35,
+   PM_SMBCHG_BAT_IF_LOW_BATTERY_THRESH_3P46,
+   PM_SMBCHG_BAT_IF_LOW_BATTERY_THRESH_3P58,
+   PM_SMBCHG_BAT_IF_LOW_BATTERY_THRESH_INVALID
+}pm_smbchg_bat_if_low_bat_thresh_type;
+
+
+/*! \struct pm_smbchg_bat_if_cmd_chg_type
+   \brief Struct for configuring battery missing configuration
+ */
+typedef struct pm_smbchg_bat_if_batt_missing_cfg_type
+{
+   uint32  batt_removal_det_time_usec;       /** <Battery removal detection time: 80,160,320,640 usec > */
+   boolean batt_bat_get_override_en;         /** <Battery FET Configuration 0 = Normal operation 1 = override (turn off FET) 0x0 : BATT_FET_NORMAL 0x1 : BATT_FET_OVERRIDE > */
+   boolean batt_missing_input_plugin_en;     /** <Battery Missing on Input Plug-In 0 = Disabled 1 = Enabled 0x0 : BMA_PLUG_IN_DIS 0x1 : BMA_PLUG_IN_EN > */
+   boolean batt_missing_2p6s_poller_en;      /** <Battery Missing 2.6s Poller 0 = Disabled 1 = Enabled 0x0 : BMA_POLLER_DIS 0x1 : BMA_POLLER_EN > */
+   boolean batt_missing_algo_en;             /** <Battery Missing Algorithm 0 = Disabled 1 = Enabled 0x0 : BMA_DIS 0x1 : BMA_EN > */
+   boolean use_bmd_pin_for_batt_missing_src;
+   boolean use_therm_pin_for_batt_missing_src;
+}pm_smbchg_bat_if_batt_missing_cfg_type;
+
+/*! \enum pm_smbchg_bat_miss_detect_src_type
+   \brief enum for battery missing detection sources
+ */
+typedef enum pm_smbchg_bat_miss_detect_src_type
+{
+   PM_SMBCHG_BAT_IF_BAT_MISS_DETECT_SRC_THERM_PIN,
+   PM_SMBCHG_BAT_IF_BAT_MISS_DETECT_SRC_BMD_PIN,
+   PM_SMBCHG_BAT_IF_BAT_MISS_DETECT_SRC_THERM_BMD_PIN,
+   PM_SMBCHG_BAT_IF_BAT_MISS_DETECT_SRC_NONE,
+   PM_SMBCHG_BAT_IF_BAT_MISS_DETECT_SRC_INVALID,
+}pm_smbchg_bat_miss_detect_src_type;
+
+
+/*! \enum pm_smbchg_bat_if_dcin_icl_type
+   \brief enum for configuring dcin input current limit mode
+ */
+typedef enum pm_smbchg_bat_if_dcin_icl_type
+{
+   PM_SMBCHG_BAT_IF_DCIN_PASS_THROUGH_MODE, /** < pass through mode and ~9.8v                         >*/
+   PM_SMBCHG_BAT_IF_DCIN_LOW_VOLT_MODE,     /** <low volt mode, DCIN less than 6.5v, DIV2_EN =1       >*/
+   PM_SMBCHG_BAT_IF_DCIN_HIGH_VOLT_MODE,    /** <high volt mode DCIN >= 6.5v and max 9v, , DIV2_EN =1 >*/
+   PM_SMBCHG_BAT_IF_DCIN_INVALID_MODE,      /** <INVALID mode                                         >*/
+}pm_smbchg_bat_if_dcin_icl_type;
+
+
+/*! \enum pm_smbchg_irq_bit_field_type
+   \brief different types of irq bit fields of by smbch_bat_if irq module
+ */
+typedef enum {
+   PM_SMBCHG_BAT_IF_HOT_BAT_HARD_LIM,
+   PM_SMBCHG_BAT_IF_HOT_BAT_SOFT_LIM,
+   PM_SMBCHG_BAT_IF_COLD_BAT_HARD_LIM,
+   PM_SMBCHG_BAT_IF_COLD_BAT_SOFT_LIM,
+   PM_SMBCHG_BAT_IF_BAT_OV,
+   PM_SMBCHG_BAT_IF_BAT_LOW,
+   PM_SMBCHG_BAT_IF_BAT_MISSING,
+   PM_SMBCHG_BAT_IF_BAT_TERM_MISSING,
+   PM_SMBCHG_BAT_IF_IRQ_INVALID
+}pm_smbchg_bat_if_irq_type;
+
+/*===========================================================================
+
+                 SMBCHG BAT_IF DRIVER FUNCTION PROTOTYPES
+
+===========================================================================*/
+
+
+/*Returns battery presence status*/
+/**
+ * @brief This function returns battery presence status.
+ * 
+ * @details
+ *  This function returns battery presence status..
+ * 
+ * @param[in] pmic_device_index. Primary: 0 Secondary: 1
+ * @param[out]bat_present.  TRUE: Present, FALSE: not present 
+ *
+ * @return  pm_err_flag_type 
+ *          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ *          version of the PMIC.
+ *          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_bat_if_get_bat_pres_status(uint32 device_index, boolean *bat_present);
+
+
+/*This API clears the dead battery timer*/
+/**
+ * @brief This function clears the dead battery timer
+ * 
+ * @details
+ *  This function clears the dead battery timer.
+ * 
+ * @param[in] pmic_device_index. Primary: 0 Secondary: 1
+ *
+ * @return  pm_err_flag_type 
+ *          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ *          version of the PMIC.
+ *          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_bat_if_clear_dead_bat_timer(uint32 device_index);
+
+
+
+/**
+ * @brief This function writes to battery interface command control to enable/disable wireless charging,
+ *         thermal current override, stat output, fast charge, battery charging, OTG .
+ * 
+ * @details
+ *  This function writes to battery interface command control to enable/disable wireless charging,
+ *  thermal current override, stat output, fast charge, battery charging, OTG .
+ * 
+ * @param[in] pmic_device_index. Primary: 0 Secondary: 1
+ * @param[in]cmd_chg_cfg.  Refer pm_smbchg_bat_if_cmd_chg_type 
+ *                          for more info
+ * @param[in]boolean       TRUE: enable, FALSE: disable
+ *
+ * @return  pm_err_flag_type 
+ *          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ *          version of the PMIC.
+ *          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_bat_if_config_chg_cmd(uint32 device_index, pm_smbchg_bat_if_cmd_chg_type cmd_chg_cfg, boolean enable);
+
+
+
+ /**
+ * @brief This function reads to battery interface command control to enable/disable wireless charging,
+ *         thermal current override, stat output, fast charge, battery charging, OTG .
+ * 
+ * @details
+ *  This function reads to battery interface command control to
+ *  enable/disable wireless charging, thermal current override,
+ *  stat output, fast charge, battery charging, OTG .
+ * 
+ * @param[in] pmic_device_index. Primary: 0 Secondary: 1
+ * @param[in]cmd_chg_cfg.  Refer pm_smbchg_bat_if_cmd_chg_type 
+ *                          for more info
+ * @param[out]boolean       TRUE: enable, FALSE: disable
+ *
+ * @return  pm_err_flag_type 
+ *          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ *          version of the PMIC.
+ *          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_bat_if_get_chg_cmd(uint32 device_index, pm_smbchg_bat_if_cmd_chg_type cmd_chg_cfg, boolean *enable);
+
+/*Sets low battery voltag threshold*/
+/**
+ * @brief This function sets low battery voltag threshold.
+ * 
+ * @details
+ *  Sets low battery voltag threshold .
+ * 
+ * @param[in] pmic_device_index. Primary: 0 Secondary: 1
+ * @param[in]low_bat_threshold.  Refer pm_smbchg_bat_if_low_bat_thresh_type 
+ *                                for more info
+ *
+ * @return  pm_err_flag_type 
+ *          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ *          version of the PMIC.
+ *          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_bat_if_set_low_batt_volt_threshold(uint32 device_index, pm_smbchg_bat_if_low_bat_thresh_type low_bat_threshold);
+
+
+/**
+ * @brief This function reads low battery voltag threshold.
+ * 
+ * @details
+ *  Gets low battery voltag threshold .
+ * 
+ * @param[in] pmic_device_index. Primary: 0 Secondary: 1
+ * @param[out]low_bat_threshold.  Refer pm_smbchg_bat_if_low_bat_thresh_type 
+ *                                for more info
+ *
+ * @return  pm_err_flag_type 
+ *          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ *          version of the PMIC.
+ *          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_bat_if_get_low_bat_volt_threshold(uint32 device_index, pm_smbchg_bat_if_low_bat_thresh_type *low_bat_threshold);
+
+
+
+/**
+ * @brief This function configures battery missing parameters 
+ * 
+ * @details
+ *  This API sets battery missing detection configuration like select if the
+ *  battery missing monitoring should only happen at the beginning of a charge cycle
+ *  or every 3 seconds
+ * 
+ * @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+ * @param[in] batt_missing_cfg.   Refer pm_smbchg_bat_if_batt_missing_cfg_type 
+ *                                for more info
+ *
+ * @return  pm_err_flag_type 
+ *          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ *          version of the PMIC.
+ *          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_bat_if_set_bat_missing_cfg(uint32 device_index, pm_smbchg_bat_if_batt_missing_cfg_type *batt_missing_cfg);
+
+
+/**
+ * @brief This function reads battery missing config
+ * 
+ * @details
+ *  This API reads battery missing detection configuration like
+ *  select if the battery missing monitoring should only happen
+ *  at the beginning of a charge cycle or every 3 seconds
+ * 
+ * @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+ * @param[out] batt_missing_cfg.   Refer 
+ *                                pm_smbchg_bat_if_batt_missing_cfg_type
+ *                                for more info
+ *
+ * @return  pm_err_flag_type 
+ *          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ *          version of the PMIC.
+ *          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_bat_if_get_bat_missing_cfg(uint32 device_index, pm_smbchg_bat_if_batt_missing_cfg_type *batt_missing_cfg);
+
+
+/**
+ * @brief This function sets battery missing detection source
+ * 
+ * @details
+ *  This API sets battery missing detection source
+ * 
+ * @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+ * @param[out] batt_missing_cfg.   Refer 
+ *                                pm_smbchg_bat_miss_detect_src_type
+ *                                for more info
+ *
+ * @return  pm_err_flag_type 
+ *          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ *          version of the PMIC.
+ *          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_bat_if_set_bat_missing_detection_src(uint32 device_index, pm_smbchg_bat_miss_detect_src_type batt_missing_det_src);
+
+/**
+ * @brief This function sets the minimum system voltage
+ * 
+ * @details
+ *  This API sets the minimum system voltage. And below this
+ *  voltage system and battery are not connected
+ *  together.Valid values are 3150, 3450 and 3600 milli volt 
+ * 
+ * @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+ * @param[in] min_sys_millivolt   Valid value is 3150 mv to 
+ *                                3600mV
+ *
+ * @return  pm_err_flag_type 
+ *          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ *          version of the PMIC.
+ *          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_bat_if_set_min_sys_volt(uint32 device_index, uint32 min_sys_millivolt);
+
+
+/**
+ * @brief This function reads the minimum system voltage
+ * 
+ * @details
+ *  This API reads the minimum system voltage. And below this
+ *  voltage system and battery are not connected together.Valid
+ *  values are 3150, 3450 and 3600 milli volt
+ * 
+ * @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+ * @param[out] min_sys_millivolt   Valid value is 3150 mv to 
+ *                                3600mV
+ *
+ * @return  pm_err_flag_type 
+ *          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ *          version of the PMIC.
+ *          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_bat_if_get_min_sys_volt(uint32 device_index, uint32 *min_sys_millivolt);
+
+
+
+/** 
+ * @brief This function configures the current limit for pass 
+ *        through mode, low volt mode and high volt mode
+ * 
+ * @details
+ *  This API configures the DCIN input current limit for pass
+ *  through mode, low volt mode and high volt mode in milliamp
+ * 
+ * @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+ * @param[in] dcin_icl_type        refer enum pm_smbchg_bat_if_dcin_icl_type 
+ *                                 for more info
+ *      
+ * @param[in] current_ma           valid value 300 to 2000 mAmp 
+ *                                
+ *
+ * @return  pm_err_flag_type 
+ *          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ *          version of the PMIC.
+ *          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_bat_if_set_dcin_input_current_limit(uint32 device_index, pm_smbchg_bat_if_dcin_icl_type dcin_icl_type, uint32 current_ma);
+
+/*This API reads the configured current limit for pass through mode, low volt mode and high volt mode in milliamp*/
+/** 
+ * @brief This function returns the current limit for pass 
+ *        through mode, low volt mode and high volt mode
+ * 
+ * @details
+ *  This API returns the DCIN input current limit for pass
+ *  through mode, low volt mode and high volt mode in milliamp
+ * 
+ * @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+ * @param[in] dcin_icl_type        refer enum pm_smbchg_bat_if_dcin_icl_type 
+ *                                 for more info
+ *      
+ * @param[out]current_ma           valid value 300 to 2000 mAmp 
+ *                                
+ *
+ * @return  pm_err_flag_type 
+ *          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ *          version of the PMIC.
+ *          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_bat_if_get_dcin_input_current_limit(uint32 device_index, pm_smbchg_bat_if_dcin_icl_type dcin_icl_type, uint32 *current_ma);
+
+
+
+/**
+* @brief This function configures WI PWR timer.
+* 
+* @details
+*  This API configures WI PWR timer. div2 falling edge values:
+*  0, 150, 250, 500 usec. wipwr_irq_tmr_us values 1000,
+*  1500,2000,2500,3000,4000,4500 usec*
+* 
+* @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+* @param[in] div2_falling_edge_time_us   valid values are 0, 150, 250, 500usec 
+* @param[in] wipwr_irq_tmr_us               values 1000, 1500,2000,2500,3000,4000,4500 usec 
+*                                
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_bat_if_set_wi_pwr_tmr(uint32 device_index, uint32 div2_falling_edge_time_us, uint32 wipwr_irq_tmr_us);
+
+/**
+* @brief This function configures WI PWR timer.
+* 
+* @details
+*  This API configures WI PWR timer. div2 falling edge values:
+*  0, 150, 250, 500 usec. wipwr_irq_tmr_us values 1000,
+*  1500,2000,2500,3000,4000,4500 usec*
+* 
+* @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+* @param[in] div2_falling_edge_time_us   valid values are 0, 150, 250, 500usec 
+* @param[in] wipwr_irq_tmr_us               values 1000, 1500,2000,2500,3000,4000,4500 usec 
+*                                
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_bat_if_get_wi_pwr_tmr(uint32 device_index, uint32 *div2_falling_edge_time_us, uint32 *wipwr_irq_tmr_us);
+
+
+/**
+* @brief This function enables IRQ
+* 
+* @details
+*  This function enables IRQ
+* 
+* @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+* @param[in] irq                 pm_smbchg_bat_if_irq_type
+*                                
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_bat_if_irq_enable(uint32 device_index, pm_smbchg_bat_if_irq_type irq, boolean enable);
+
+
+/**
+* @brief This function clears the SMBCHG irq 
+* 
+* @details
+*  This function clears the SMBCHG irq 
+* 
+* @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+* @param[in] irq                 pm_smbchg_bat_if_irq_type
+*                                
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_bat_if_irq_clear(uint32  device_index, pm_smbchg_bat_if_irq_type irq);
+
+/**
+* @brief This function configures the SMBCHG irq trigger 
+* 
+* @details
+*  This function configures the SMBCHG irq trigger 
+* 
+* @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+* @param[in] irq                 pm_smbchg_bat_if_irq_type
+*                                
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_bat_if_irq_set_trigger(uint32 device_index, pm_smbchg_bat_if_irq_type irq, pm_irq_trigger_type trigger);
+
+
+/**
+* @brief This function configures the SMBCHG for irq 
+* 
+* @details
+*  This function configures the SMBCHG for irq 
+* 
+* @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+* @param[in] irq                 pm_smbchg_bat_if_irq_type
+*                                
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_bat_if_irq_status(uint32 device_index, pm_smbchg_bat_if_irq_type irq, pm_irq_status_type type, boolean *status);
+
+
+
+#endif /* PM_SMBCHG_BAT_IF_H*/
+
diff --git a/dev/pmic/pmi8994/include/pm_smbchg_chgr.h b/dev/pmic/pmi8994/include/pm_smbchg_chgr.h
new file mode 100644
index 0000000..d063e32
--- /dev/null
+++ b/dev/pmic/pmi8994/include/pm_smbchg_chgr.h
@@ -0,0 +1,734 @@
+/* Copyright (c) 2015, The Linux Foundation. All rights reserved.
+
+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 Linux Foundation nor the names of its
+      contributors may be used to endorse or promote products derived
+      from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#ifndef PM_SMBCHG_CHGR_H
+#define PM_SMBCHG_CHGR_H
+
+#include "pm_err_flags.h"
+#include "pm_resources_and_types.h"
+
+/*===========================================================================
+
+                        TYPE DEFINITIONS 
+
+===========================================================================*/
+
+/*! \enum pm_smbchg_chgr_irq_bit_field_type
+   \brief different types of irq bit fields of by smbb irq module
+ */
+typedef enum {
+  PM_SMBCHG_CHGR_CHGR_ERROR,
+  PM_SMBCHG_CHGR_GR_INHIBIT,
+  PM_SMBCHG_CHGR_CHGR_PRECHG_SFT,
+  PM_SMBCHG_CHGR_CHGR_COMPLETE_CHG_SFT,
+  PM_SMBCHG_CHGR_BAT_FT_P2F_CHG_THRESHOLD,
+  PM_SMBCHG_CHGR_BAT_LT_RECHG_THRESHOLD,
+  PM_SMBCHG_CHGR_BAT_TAPER_MODE_CHARGING,
+  PM_SMBCHG_CHGR_BAT_TCC_REACHED,
+  PM_SMBCHG_CHGR_IRQ_INVALID
+}pm_smbchg_chgr_irq_type;
+
+
+typedef enum
+{
+  PM_SMBCHG_CHGR_NO_CHARGING,
+  PM_SMBCHG_CHGR_PRE_CHARGING,
+  PM_SMBCHG_CHGR_FAST_CHARGING,
+  PM_SMBCHG_CHGR_TAPER_CHARGING,
+  PM_SMBCHG_CHGR_CHARGING_INVALID
+}pm_smbchg_chgr_charging_type;
+
+typedef struct
+{
+  boolean is_net_i_discharg;
+  /* is_net_discharg_i: FALSE = Net charging current, TRUE = Net dis-charging current*/
+  boolean is_auto_fv_comp_active;
+  /*automatic float voltage compensation status. FALSE=Inactive, TRUE=Active*/
+  boolean is_chgr_done_once;
+  /*Done Status, FALSE = No charging cycles have terminated since Charging first enabled, 
+    TRUE = At least 1 charging cycle has terminated since Charging first enabled */
+  boolean is_batt_lt_2v;
+  /*battery voltage less than 2v*/
+  boolean is_chgr_in_hold_off;
+  /*charging hold off status. FALSE: charger not in hold off; TRUE: charger in hold off*/
+  pm_smbchg_chgr_charging_type charging_type;
+  /*type of charging happening*/
+  boolean charger_enable;
+  /*FALSE= charging command/pin is not asserted. TRUE = charging command/pin asserted*/
+}pm_smbchg_chgr_chgr_status_type;
+
+
+typedef enum
+{
+  PM_SMBCHG_CHGR_CCMPN__COLD_SL_CHG_I_COMP,    /** <Cold SL Charge Current Compensation              >*/
+  PM_SMBCHG_CHGR_CCMPN__HOT_SL_CHG_I_COMP,     /** <Hot SL Charge Current Compensation               >*/
+  PM_SMBCHG_CHGR_CCMPN__COLD_SL_FV_COMP,       /** <Cold SL Float Voltage Compensation               >*/
+  PM_SMBCHG_CHGR_CCMPN__HOT_SL_FV_COMP,        /** <Hot SL Float Voltage Compensation                >*/
+  PM_SMBCHG_CHGR_CCMPN__LOAD_BAT,              /** <Load Battery during Float Voltage Compensation   >*/
+  PM_SMBCHG_CHGR_CCMPN__JEITA_TEMP_HARD_LIMIT, /** <Jeita Temperature Hard Limit disable             >*/
+  PM_SMBCHG_CHGR_CCMPN__TEMP_MONITOR_ENABLE,   /** <Temperature Monitor Enabled when input is present>*/
+  PM_SMBCHG_CHGR_CCMPN__INVALID                /** < Invalid                                         >*/
+}pm_smbchg_chgr_ccmpn_type;
+
+
+//output that can be used as an input or a systerm O.k. indicator
+typedef enum
+{ //INOK output is asserted to indicate valid input adapter presence
+  PM_SMBCHG_CHGR_SYSOK_OPT__INOK_OPT_1, //The INOK is asserted only per the input voltage level and as soon as the glitch filter timer has expired
+  PM_SMBCHG_CHGR_SYSOK_OPT__INOK_OPT_2, //The INOK is asserted only when the input FET is on and the charger buck soft-start has completed and only after the APSD algorithm has completed (if enabled)
+  PM_SMBCHG_CHGR_SYSOK_OPT__SYSOK_OPT_A_1, //the SYSOK goes active LOW when no valid input power is present and the battery voltage is lower than the programmable low-battery/SYSOK voltage threshold (VLOWBATT) or the battery is missing
+  PM_SMBCHG_CHGR_SYSOK_OPT__SYSOK_OPT_A_2, //the SYSOK goes active LOW when the battery voltage is lower than the programmable low-battery / SYSOK voltage threshold (VLOWBATT) or the battery is missing, regardless of the input being present
+  PM_SMBCHG_CHGR_SYSOK_OPT__SYSOK_OPT_BC_1,
+  PM_SMBCHG_CHGR_SYSOK_OPT__SYSOK_OPT_BC_2,
+  PM_SMBCHG_CHGR_SYSOK_OPT__CHG_DET_OPT_1,
+  PM_SMBCHG_CHGR_SYSOK_OPT__CHG_DET_OPT_2,
+  PM_SMBCHG_CHGR_SYSOK_OPT__INVALID
+} pm_smbchg_chgr_sysok_opt_type;
+
+typedef struct
+{
+  boolean cont_without_fg_ready; //do not holdoff charging and continue without FG Ready
+  boolean is_rchg_threshold_src_fg; //Recharge Threshold Source: TRUE:Fuel GaugeADC; FALSE:Analog sensor
+  boolean is_term_current_src_fg; //TRUE: Early current termination source fuel gauge ADC; FALSE: Analog sensor
+  boolean en_early_current_termination; //Early Current Termination
+  pm_smbchg_chgr_sysok_opt_type sysok_opt;
+  boolean en_sysok_pol_table_n; //TRUE: Inverse of Table in DOS; FALSE:Table in DOS
+  boolean en_charger_inhibit;
+  boolean is_holdoff_tmr_350ms; // TRUE: 350ms and FALSE: 700us
+  boolean auto_rchg_dis; //TRUE: disable automatic recharge; FALSE: enable automatic discharge
+  boolean current_termination_dis; //TRUE: current termination disabled, FALSE: current termination enabled
+  boolean batt_ov_ends_cycle_en; //battery over voltage ends charge cycle
+  boolean p2f_chg_tran_require_cmd; //TRUE: pre to fast charge transition requires command; FALSE: automatic transation
+}pm_chgr_chgr_cfg_type;
+
+
+typedef enum pm_smbchg_chgr_sfty_timer_type
+{
+  PM_SMBCHG_CHGR_SFTY_TIMER__PC_EN_TC_EN, //Pre-Charge and Total Charge Safety Timers Enabled
+  PM_SMBCHG_CHGR_SFTY_TIMER__PC_DIS_TC_EN, // Pre-Charge Safety Timer Disabled, Total Charge Safety Timer Enabled
+  PM_SMBCHG_CHGR_SFTY_TIMER__PC_DIS_TC_DIS, //Pre-Charge and Total Charge Safety Timers Disabled
+  PM_SMBCHG_CHGR_SFTY_TIMER__INVAID_TYPE
+} pm_smbchg_chgr_sfty_timer_type;
+
+/*===========================================================================
+
+                 SMBCHG DRIVER FUNCTION PROTOTYPES
+
+===========================================================================*/
+
+/**
+* @brief This function returns if battery is above VBAt_WEAK or 
+*        not
+*  
+* @details
+*  This API returns if battery is above VBAT_WEAK threshold or
+*  not
+* 
+* @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+* @param[out] is_above_vbat_weak if above then TRUE else FLASE 
+*                                
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_chgr_vbat_sts(uint32 device_index, boolean *is_above_vbat_weak);
+
+
+/**
+* @brief This function returns the float vlotage status
+* 
+* @details
+*  This API returns the float vlotage status
+* 
+* @param[in]  pmic_device_index.  Primary: 0 Secondary: 1
+* @param[out] aicl_in_hard_limit  TRUE if AICL is hard limit else FALSE
+* @param[out] fv_mv               Float voltage value; 3600mv to 4500mv
+*                                
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_chgr_get_float_volt_sts(uint32 device_index, boolean *aicl_in_hard_limit, uint32 *fv_mv);
+
+
+/**
+* @brief This function returns the pre charger and fast charger current status in milliam
+* 
+* @details
+*  This API returns the pre charger and fast charger current status in milliamp
+* 
+* @param[in] pmic_device_index.      Primary: 0 Secondary: 1
+* @param[in] pre_charge_current_ma   Pre-charge current value in milli amp.
+* @param[in] fast_charge_current_ma  Fast charge current value in milli amp
+*                                
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_chgr_get_chg_i_sts(uint32 device_index, uint32 *pre_charge_current_ma, uint32 *fast_charge_current_ma);
+
+
+/**
+* @brief This function returns charger status
+* 
+* @details
+*  This function returns status  for charging/discharging, active/inactive AFV compensation, charging
+*  done at least once, battery voltage less than 2v, charge hold off, current charging state, charging 
+*  enable/disable status
+* 
+* @param[in]  pmic_device_index.                  Primary: 0 Secondary: 1
+* @param[out] pm_smbchg_chgr_chgr_status_type     Refer enum pm_smbchg_chgr_chgr_status_type for more info
+*                                
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_chgr_get_chgr_sts(uint32 device_index, pm_smbchg_chgr_chgr_status_type *chgr_sts);
+
+
+/**
+* @brief This function configures the pre-charger current value in milliamp. Valid values are 100 to 550 mAmp
+* 
+* @details
+*  This API configures the pre-charger current value in milliamp. Valid values are 100 to 550 mAmp
+* 
+* @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+* @param[in] pre_chg_i_ma        Pre charge current in milliamp. Values are 100 to 550mAmp
+*                                
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_chgr_set_pre_chg_i(uint32 device_index, uint32 pre_chg_i_ma);
+
+
+/**
+* @brief This function configures the fast-charger current value in milliamp. Valid values are 300 to 3000 mAmp
+* 
+* @details
+*  This API configures the fast-charger current value in milliamp. Valid values are 300 to 3000 mAmp
+* 
+* @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+* @param[in] fast_chg_i_ma        fast-charger current value in milliamp. Valid values are 300 to 3000 mAmp 
+*                                
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_chgr_set_fast_chg_i(uint32 device_index, uint32 fast_chg_i_ma);
+
+
+/**
+* @brief This function configures the fast-charger current compensation value in milliamp
+* 
+* @details
+*  This API configures the fast-charger current compensation value in milliamp.
+*  Valid values are 300 to 1200 mAmp
+* 
+* @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+* @param[in] fast_chg_i_cmp_ma   fast-charger current compensation value in milliamp. 
+*                                Valid values are 300 to 1200 mAmp
+*                                
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_chgr_set_fast_chg_i_cmpn(uint32 device_index, uint32 fast_chg_i_cmp_ma);
+
+
+/**
+* @brief This function This API configures the floating voltage
+* 
+* @details
+* This API configures the floating voltage. Valid range is 3600mV to 4500 mv
+* 
+* @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+* @param[in] float_volt_mv       Valid range is 3600mV to 4500 mv
+*                                
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_chgr_set_float_volt(uint32 device_index, uint32 float_volt_mv);
+
+/**
+* @brief This function returns configured floating voltage
+* 
+* @details
+*  This function returns set floating voltage
+* 
+* @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+* @param[out] float_volt_mv      set float voltage 
+*                                
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_chgr_get_float_volt_cfg(uint32 device_index, uint32 *float_volt_mv);
+
+
+/**
+* @brief This function sets floating voltage conpmensation code
+* 
+* @details
+*  This api sets floating voltage conpmensation code. Valid
+*  value is from 0 to 63
+* 
+* @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+* @param[in] float_volt_cmpn     Valid value is from 0 to 63 
+*                         
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_chgr_set_float_volt_cmpn(uint32 device_index, uint32 float_volt_cmpn);
+
+
+/**
+* @brief This function reads floating voltage conpmensation code
+* 
+* @details
+*  This api reads floating voltage conpmensation code. Valid
+*  value is from 0 to 6300mV
+* 
+* @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+* @param[out] float_volt_cmpn     Valid value is from 0 to 6300 mV 
+*                         
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_chgr_get_float_volt_cmpn(uint32 device_index, uint32 *float_volt_cmpn);
+
+
+/**
+* @brief This function enables/disables Charger Auto Float 
+*        Voltage Compensation
+* 
+* @details
+*  This api enables/disables Charger Auto Float Voltage Compensation
+* 
+* @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+* @param[in] enable             TRUE enables and FALSE disables
+*                                
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_chgr_en_afvc(uint32 device_index, boolean enable);
+
+
+/**
+* @brief This function sets charge inhibit level
+* 
+* @details
+*  This API sets charge inhibit level
+* 
+* @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+* @param[in] inhibit_lvl_mv      valid range is 50 to 300mv 
+*       
+*                                
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_chgr_set_inhibi_threshold(uint32 device_index, uint32 inhibit_lvl_mv);
+
+
+/**
+* @brief This function returns charge inhibit level
+* 
+* @details
+*  This API returns charge inhibit level
+* 
+* @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+* @param[out] inhibit_lvl_mv      valid range is 50 to 300mv 
+*       
+*                                
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_chgr_get_inhibi_threshold(uint32 device_index, uint32 *inhibit_lvl_mv);
+
+
+/**
+* @brief This function sets the pre-charge to full charger 
+*        threshold
+* 
+* @details
+*  This API sets the pre-charge to full charger threshold. Valid range is 2400mV to 3000mV
+* 
+* @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+* @param[in] milli_volt          Valid range is 2400mV to 3000mV
+*                                
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_chgr_set_p2f_threshold(uint32 device_index, uint32 milli_volt);
+
+
+/**
+ * @brief This function returns the pre-charge to full charger 
+ *        threshold
+ * 
+ * @details
+ *  This API returns the pre-charge to full charger threshold.
+ *  Valid range is 2400mV to 3000mV
+ * 
+ * @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+ * @param[out] milli_volt          Valid range is 2400mV to 
+ *       3000mV
+ *                                
+ *
+ * @return  pm_err_flag_type 
+ *          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ *          version of the PMIC.
+ *          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_chgr_get_p2f_threshold(uint32 device_index, uint32 *milli_volt);
+
+
+/**
+* @brief This function sets the charge termination current
+* 
+* @details
+*  This API sets the charge termination current in milliamp 
+* 
+* @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+* @param[in] current_ma          Termination current. Value range is 50 to 600 milliAmp
+*                                
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_chgr_set_charge_termination_current(uint32 device_index, uint32 current_ma);
+
+
+/**
+* @brief This function returns the charge termination current
+* 
+* @details
+*  This API returns the charge termination current in milliamp 
+* 
+* @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+* @param[out] current_ma          Termination current. Value range is 50 to 600 milliAmp
+*                                
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_chgr_get_charge_termination_current(uint32 device_index, uint32 *current_ma);
+
+
+/**
+* @brief This function  configures charger temperature compensation
+* 
+* @details
+*  This function configures charger temperature compensation
+* 
+* @param[in]  pmic_device_index.  Primary: 0 Secondary: 1
+* @param[out] ccmpn_type          Refer pm_smbchg_ccmpn_type for more info
+*                                
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_chgr_config_chgr_temp_cmpn(uint32 device_index, pm_smbchg_chgr_ccmpn_type ccmpn_type, boolean enable);
+
+
+/**
+* @brief This function returns configured charge temperature compensation
+* 
+* @details
+*  This function returns configured charge temperature compensation
+* 
+* @param[in]  pmic_device_index.  Primary: 0 Secondary: 1
+* @param[in] ccmpn_type           Refer pm_smbchg_ccmpn_type for more info
+* @param[in] enable               TRUE : set, FALSE: clear                                        
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_chgr_get_chgr_temp_cmpn_config(uint32 device_index, pm_smbchg_chgr_ccmpn_type ccmpn_type, boolean *enable);
+
+
+/**
+* @brief This function configures charger related paramters. 
+* 
+* @details
+*  This function configures charger related paramters.
+* 
+* @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+* @param[in] chgr_cfg_type       Refer struct pm_chgr_chgr_cfg_type for more info
+* @param[out] enable             TRUE : set, FALSE: clear     
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_chgr_config_chgr(uint32 device_index, pm_chgr_chgr_cfg_type *chgr_cfg_type);
+
+
+/**
+* @brief This function returns configured charger related 
+*        paramters.
+* 
+* @details
+*  This function returns configured charger related paramters.
+* 
+* @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+* @param[out] chgr_cfg_type       Refer struct pm_chgr_chgr_cfg_type for more info
+*                                
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_chgr_get_chgr_config(uint32 device_index, pm_chgr_chgr_cfg_type *chgr_cfg_type);
+
+/**
+* @brief This function configures safety timer
+* 
+* @details
+*  This function configures safety timer
+* 
+* @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+* @param[in] pre_chg_sfty_min              Total pre-charge safety timer timeout. Valid values is 24 to 192 minutes
+* @param[in] total_chg_sfty_min            Total charge safety timer timeout. Valid values is 192 to  1536 minutes
+* @param[in] sfty_timer_type               refer pm_smbchg_chgr_sfty_timer_type for more info
+*                                
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_chgr_config_sfty_timer(uint32 device_index, uint32 pre_chg_sfty_min, uint32 total_chg_sfty_min, pm_smbchg_chgr_sfty_timer_type sfty_timer_type);
+
+
+/**
+* @brief This function returns configured safety timer
+* 
+* @details
+*  This function returns configured safety timer
+* 
+* @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+* @param[out] pre_chg_sfty_min              Total pre-charge safety timer timeout. Valid values is 24 to 192 minutes
+* @param[out] total_chg_sfty_min            Total charge safety timer timeout. Valid values is 192 to  1536 minutes
+* @param[out] sfty_timer_type               refer pm_smbchg_chgr_sfty_timer_type for more info
+*                                
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_chgr_get_sfty_timer_config(uint32 device_index, uint32 *pre_chg_sfty_min, uint32 *total_chg_sfty_min, pm_smbchg_chgr_sfty_timer_type *sfty_timer_type);
+
+
+/**
+* @brief This function enables irq
+* 
+* @details
+*  This function enables irq
+* 
+* @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+* @param[in] irq                 pm_smbchg_chgr_irq_type
+*                                
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_chgr_irq_enable(uint32 device_index, pm_smbchg_chgr_irq_type irq, boolean enable);
+
+
+/**
+* @brief This function clears the SMBCHG irq 
+* 
+* @details
+*  This function clears the SMBCHG irq 
+* 
+* @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+* @param[in] irq                 pm_smbchg_chgr_irq_type
+*                                
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_chgr_irq_clear(uint32  device_index, pm_smbchg_chgr_irq_type irq);
+
+
+/**
+* @brief This function configures the SMBCHG irq trigger 
+* 
+* @details
+*  This function configures the SMBCHG irq trigger 
+* 
+* @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+* @param[in] irq                 pm_smbchg_chgr_irq_type
+*                                
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_chgr_irq_set_trigger(uint32 device_index, pm_smbchg_chgr_irq_type irq, pm_irq_trigger_type trigger);
+
+
+/**
+* @brief This function configures the SMBCHG for irq 
+* 
+* @details
+*  This function configures the SMBCHG for irq 
+* 
+* @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+* @param[in] irq                 pm_smbchg_chgr_irq_type
+*                                
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_chgr_irq_status(uint32 device_index, pm_smbchg_chgr_irq_type irq, pm_irq_status_type type, boolean *status);
+
+/**
+ * @brief This function enables source as command or pin 
+ *        controlled.
+ * 
+ * @details
+ *  This function enables source as command or pin controlled.
+ * 
+ * @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+ * @param[in] chg_en_src          TRUE: Enables Pin 
+ *                                FALSE: Command Register 
+ *                                
+ *
+ * @return  pm_err_flag_type 
+ *          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ *          version of the PMIC.
+ *          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_chgr_enable_src(uint32 device_index, boolean chg_en_src);
+
+/**
+ * @brief This function sets the command/pin polarity 
+ * 
+ * @details
+ *  This function sets the command/pin polarity .
+ * 
+ * @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+ * @param[in] chg_pol_low         TRUE: sets polarity low
+ *                                FASLE: sets polarity high
+ *
+ * @return  pm_err_flag_type 
+ *          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ *          version of the PMIC.
+ *          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_chgr_set_chg_polarity_low(uint32 device_index, boolean chg_pol_low);
+
+#endif /* PM_SMBCHG_CHGR_H */
+
diff --git a/dev/pmic/pmi8994/include/pm_smbchg_dc_chgpth.h b/dev/pmic/pmi8994/include/pm_smbchg_dc_chgpth.h
new file mode 100644
index 0000000..96cec14
--- /dev/null
+++ b/dev/pmic/pmi8994/include/pm_smbchg_dc_chgpth.h
@@ -0,0 +1,329 @@
+/* Copyright (c) 2015, The Linux Foundation. All rights reserved.
+
+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 Linux Foundation nor the names of its
+      contributors may be used to endorse or promote products derived
+      from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#ifndef PM_SMBCHG_DC_CHGPTH_H
+#define PM_SMBCHG_DC_CHGPTH_H
+
+#include "pm_err_flags.h"
+#include "pm_resources_and_types.h"
+
+/*===========================================================================
+
+                        TYPE DEFINITIONS 
+
+===========================================================================*/
+typedef enum pm_smbchg_dcin_adptr_allowance
+{
+ PM_SMBCHG_DCIN_ADPTR_ALLOWANCE_5V,
+ PM_SMBCHG_DCIN_ADPTR_ALLOWANCE_5V_OR_9V,
+ PM_SMBCHG_DCIN_ADPTR_ALLOWANCE_5V_TO_9V,
+ PM_SMBCHG_DCIN_ADPTR_ALLOWANCE_9V,
+ PM_SMBCHG_DCIN_ADPTR_ALLOWANCE_5V_UNREG,
+ PM_SMBCHG_DCIN_ADPTR_ALLOWANCE_5V_9V_UNREG,
+ PM_SMBCHG_DCIN_ADPTR_ALLOWANCE_INVALID
+}pm_smbchg_dcin_adptr_allowance;
+
+
+typedef enum pm_smbchg_dc_aicl_cfg_type
+{
+   /*AICL_CFG1*/
+   PM_SMBCHG_AICL__DEB_LV_ADAPTER = 0,      /*DCIN Input Collapse Option for LV adapter*/
+   PM_SMBCHG_AICL__DEB_HV_ADAPTER = 1,      /*DCIN Input Collapse Option for HV adapter*/
+   PM_SMBCHG_AICL__AICL_EN = 2,             /*AICL enable/disable for DC CHGPTH*/
+   PM_SMBCHG_AICL__DEB_5V_ADAPTER_SEL = 3,  /*DCIN Input Collapse Glitch Filter for 5V Select, Unregulated or 5V - 9V Adapter*/
+   PM_SMBCHG_AICL__DEB_9V_ADAPTER_SEL = 4,  /*DCIN Input Collapse Glitch Filter for 9V Adapter Select*/
+   PM_SMBCHG_AICL__DEB_9V_ADAPTER_EN = 5,   /*DCIN Input Collapse Glitch Filter for 9V Adapter Enable*/
+   PM_SMBCHG_AICL__OV_OPTION = 6,           /*FALSE = OV on USBIN will block DCIN current path; TRUE = OV on USBIN will not block DCIN current path*/
+   /*AICL_CFG2*/
+   PM_SMBCHG_AICL__AICL_THRESHOLD_5V = 8,       /*DCIN 5V AICL Threshold*/
+   PM_SMBCHG_AICL__AICL_THRESHOLD_5V_TO_9V = 9, /*AICL 5v to 9v threshold. FLASE : DC_AICL_6P25_OR_4P25, TRUE : DC_AICL_6P75_OR_4P40*/
+   PM_SMBCHG_AICL__DEB_UV = 10,                 /* FALSE = 20ms DCIN falling, 20ms DCIN rising, TRUE= 10us DCIN falling, 10ms DCIN rising */
+   PM_SMBCHG_AICL__INVALID_CFG                  /*INVALID*/
+}pm_smbchg_dc_aicl_cfg_type; 
+
+/*AICL restart timer*/
+typedef enum pm_smbchg_dc_chgpth_aicl_rstrt_tmr
+{
+ PM_SMBCHG_AICL_WL_RSTRT_TMR_45s,
+ PM_SMBCHG_AICL_WL_RSTRT_TMR_1p5m,
+ PM_SMBCHG_AICL_WL_RSTRT_TMR_3m,
+ PM_SMBCHG_AICL_WL_RSTRT_TMR_6m,
+ PM_SMBCHG_AICL_WL_RSTRT_TMR_INVALID
+}pm_smbchg_dc_chgpth_aicl_rstrt_tmr;
+
+/*! \enum pm_smbchg_usb_chgpth_irq_bit_field_type
+   \brief different types of irq bit fields of by smbb irq module
+ */
+typedef enum {
+  PM_SMBCHG_DC_CHGPTH_DCBIN_UV,
+  PM_SMBCHG_DC_CHGPTH_DCBIN_OV,
+  PM_SMBCHG_DC_CHGPTH_IRQ_INVALID
+}pm_smbchg_dc_chgpth_irq_type; 
+
+
+
+
+/*===========================================================================
+
+                 SMBCHG DRIVER FUNCTION PROTOTYPES
+
+===========================================================================*/
+
+
+ /**
+ * @brief This function configures ADCIN adapter allowance
+ * 
+ * @details
+ *  This API configures ADCIN adapter allowance
+ * 
+ * @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+ * @param[in] adptr_allowance     Refer pm_smbchg_dcin_adptr_allowance for more information 
+ *                                
+ *
+ * @return  pm_err_flag_type 
+ *          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ *          version of the PMIC.
+ *          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_dc_chgpth_set_dcin_adptr_allowance(uint32 device_index, pm_smbchg_dcin_adptr_allowance adptr_allowance);
+
+
+ /**
+ * @brief This function returns configured ADCIN adapter allowance
+ * 
+ * @details
+ *  This API returns configured ADCIN adapter allowance
+ * 
+ * @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+ * @param[out] adptr_allowance     Refer pm_smbchg_dcin_adptr_allowance for more information 
+ *                                
+ *
+ * @return  pm_err_flag_type 
+ *          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ *          version of the PMIC.
+ *          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_dc_chgpth_get_dcin_adptr_allowance(uint32 device_index, pm_smbchg_dcin_adptr_allowance *adptr_allowance);
+
+
+ /**
+ * @brief This function sets the DCIN numput current limit 
+ * 
+ * @details
+ *   This function sets the DCIN numput current limit
+ * 
+ * @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+ * @param[in] current_ma          valid range is 300 to 2000 milliAmp
+ *                                
+ *
+ * @return  pm_err_flag_type 
+ *          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ *          version of the PMIC.
+ *          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_dc_chgpth_set_dcin_current_limit(uint32 device_index, uint32 current_ma);
+
+
+ /**
+ * @brief This function reads the DCIN numput current limit 
+ * 
+ * @details
+ *   This function reads the DCIN numput current limit
+ * 
+ * @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+ * @param[out] current_ma         valid range is 300 to 2000 milliAmp
+ *                                
+ *
+ * @return  pm_err_flag_type 
+ *          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ *          version of the PMIC.
+ *          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_dc_chgpth_get_dcin_current_limit(uint32 device_index, uint32 *current_milli_amp);
+
+
+ /**
+ * @brief This function configures various AICL parameters. Refer struct pm_smbchg_dc_aicl_cfg for more info.
+ * 
+ * @details
+ *  This function configures various AICL parameters. Refer struct pm_smbchg_dc_aicl_cfg for more info.
+ * 
+ * @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+ * @param[in] dc_aicl_cfg         Refer struct pm_smbchg_dc_aicl_cfg for more info.
+ * @param[in] enable              TRUE sets, FALSE clears                               
+ *
+ * @return  pm_err_flag_type 
+ *          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ *          version of the PMIC.
+ *          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_dc_chgpth_config_aicl(uint32 device_index, pm_smbchg_dc_aicl_cfg_type dc_aicl_cfg, boolean enable);
+
+
+ /**
+ * @brief This function returns configured AICL parameters. Refer struct pm_smbchg_dc_aicl_cfg for more info.
+ * 
+ * @details
+ *  This function returns configured AICL parameters. Refer struct pm_smbchg_dc_aicl_cfg for more info.
+ * 
+ * @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+ * @param[in] dc_aicl_cfg         Refer struct pm_smbchg_dc_aicl_cfg for more info.
+ * @param[out]enable              TRUE sets, FALSE clears                               
+ *
+ * @return  pm_err_flag_type 
+ *          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ *          version of the PMIC.
+ *          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_dc_chgpth_get_aicl_config(uint32 device_index, pm_smbchg_dc_aicl_cfg_type dc_aicl_cfg, boolean *enable);
+
+
+ /**
+ * @brief This function sets the AICL restart timer
+ * 
+ * @details
+ *  This function sets the AICL restart timer
+ * 
+ * @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+ * @param[in] timer_type          Refer enum pm_smbchg_dc_chgpth_aicl_rstrt_tmr
+ *                                
+ *
+ * @return  pm_err_flag_type 
+ *          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ *          version of the PMIC.
+ *          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_dc_chgpth_set_aicl_restart_tmr(uint32 device_index, pm_smbchg_dc_chgpth_aicl_rstrt_tmr timer_type);
+
+
+ /**
+ * @brief This function returns the AICL restart timer value
+ * 
+ * @details
+ *  brief This function returns the AICL restart timer value
+ * 
+ * @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+ * @param[out] timer_type          Refer enum pm_smbchg_dc_chgpth_aicl_rstrt_tmr
+ *                                
+ *
+ * @return  pm_err_flag_type 
+ *          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ *          version of the PMIC.
+ *          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_dc_chgpth_get_aicl_restart_tmr(uint32 device_index, pm_smbchg_dc_chgpth_aicl_rstrt_tmr *timer_type);
+
+
+/**
+ * @brief This function enables irq
+ * 
+ * @details
+ *  This function enables irq
+ * 
+ * @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+ * @param[in] irq                 pm_smbchg_dc_chgpth_irq_type
+ *                                
+ *
+ * @return  pm_err_flag_type 
+ *          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ *          version of the PMIC.
+ *          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_dc_chgpth_irq_enable(uint32 device_index, pm_smbchg_dc_chgpth_irq_type irq, boolean enable);
+
+
+/**
+ * @brief This function clears the SMBCHG irq 
+ * 
+ * @param[in] device_index. Primary: 0. Secondary: 1
+ * @param[in] irq:  
+ *                SMBCHG irq type. Refer enum pm_smbchg_dc_chgpth_irq_type.  
+ *
+ *
+ * @return  pm_err_flag_type 
+ *          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ *          version of the PMIC.
+ *          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_dc_chgpth_irq_clear(uint32  device_index, pm_smbchg_dc_chgpth_irq_type irq);
+
+
+/**
+ * @brief This function configures the SMBCHG irq trigger 
+ * 
+ * @param[in] device_index. Primary: 0. Secondary: 1
+ * @param[in] irq:  
+ *                SMBCHG irq type. Refer enum pm_smbchg_dc_chgpth_irq_type.  
+ * @param[in] trigger:  
+ *                One of different irq triggers. Refer enum pm_irq_trigger_type 
+ *                from pm_uefi_irq.h for more details
+ *
+ *
+ * @return  pm_err_flag_type 
+ *          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ *          version of the PMIC.
+ *          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_dc_chgpth_irq_set_trigger(uint32 device_index, pm_smbchg_dc_chgpth_irq_type irq, pm_irq_trigger_type trigger);
+
+
+/**
+ * @brief This function configures the SMBCHG for irq 
+ * 
+ * @param[in] device_index. Primary: 0. Secondary: 1
+ * @param[in] irq:  
+ *                SMBCHG irq type. Refer enum pm_Smbb_irq_type. 
+ * @param[in] type:  
+ *                Type of IRQ status to read. Refer enum pm_irq_status_type 
+ *                from pm_uefi_irq.h for more details
+ * @param[out] status:  
+ *                IRQ status.
+ *
+ *
+ * @return  pm_err_flag_type 
+ *          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ *          version of the PMIC.
+ *          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_dc_chgpth_irq_status(uint32 device_index, pm_smbchg_dc_chgpth_irq_type irq, pm_irq_status_type type, boolean *status);
+
+
+#endif /* PM_SMBCHG_DC_CHGPTH_H */
+
diff --git a/dev/pmic/pmi8994/include/pm_smbchg_driver.h b/dev/pmic/pmi8994/include/pm_smbchg_driver.h
new file mode 100644
index 0000000..0c0f0ab
--- /dev/null
+++ b/dev/pmic/pmi8994/include/pm_smbchg_driver.h
@@ -0,0 +1,355 @@
+/* Copyright (c) 2015, The Linux Foundation. All rights reserved.
+
+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 Linux Foundation nor the names of its
+      contributors may be used to endorse or promote products derived
+      from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#ifndef PM_SMBCHG_DRIVER__H
+#define PM_SMBCHG_DRIVER__H
+
+/*===========================================================================
+
+                     INCLUDE FILES 
+
+===========================================================================*/
+#include "pm_resources_and_types.h"
+#include "pm_comm.h"
+
+/*===========================================================================
+
+                     STRUCTURE TYPE AND ENUM
+
+===========================================================================*/
+
+
+/************************************************************************/
+/* register definitions                                                                     */
+/************************************************************************/
+typedef struct
+{
+    uint32                   base_address;          //0x1200
+
+    pm_register_address_type perph_subtype;         // 0x1205
+    pm_register_address_type bat_pres_status;       // 0x1208
+    pm_register_address_type int_rt_sts;            // 0x1210
+    pm_register_address_type int_set_type;          // 0x1211
+    pm_register_address_type int_polarity_high;     // 0x1212
+    pm_register_address_type int_polarity_low;      // 0x1213
+    pm_register_address_type int_latched_clr;       // 0x1214
+    pm_register_address_type int_en_set;            // 0x1215
+    pm_register_address_type int_en_clr;            // 0x1216
+    pm_register_address_type int_latched_sts;       // 0x1218
+    pm_register_address_type int_pending_sts;       // 0x1219
+    pm_register_address_type int_mid_sel;           // 0x121a
+    pm_register_address_type int_priority;          // 0x121b
+    pm_register_address_type ship_mode;             // 0x1240
+    pm_register_address_type clr_dead_bat_timer;    // 0x1241
+    pm_register_address_type cmd_chg;               // 0x1242
+    pm_register_address_type sec_access;            // 0x12d0
+    pm_register_address_type spare;                 // 0x12df
+    pm_register_address_type int_test1;             // 0x12e0
+    pm_register_address_type int_test_val;          // 0x12e1
+    pm_register_address_type trim_num;              // 0x12f0
+    pm_register_address_type vbl_cfg;               // 0x12f1
+    pm_register_address_type vbl_sel_cfg;           // 0x12f2
+    pm_register_address_type bm_cfg;                // 0x12f3
+    pm_register_address_type cfg_sysmin;            // 0x12f4
+    pm_register_address_type cfg_systh;             // 0x12f5
+    pm_register_address_type ss_cfg;                // 0x12f6
+    pm_register_address_type cfg_bb_clmp_sel;       // 0x12f8
+    pm_register_address_type trim9;                 // 0x12f9
+    pm_register_address_type isense_cfg1;           // 0x12fa
+    pm_register_address_type isense_cfg2;           // 0x12fb
+    pm_register_address_type zin_icl_pt;            // 0x12fc
+    pm_register_address_type zin_icl_lv;            // 0x12fd
+    pm_register_address_type zin_icl_hv;            // 0x12fe
+    pm_register_address_type wi_pwr_tmr;            // 0x12ff
+}smbchg_bat_if_register_ds;
+
+typedef struct smbchg_otg_register_ds
+{
+    pm_register_address_type   base_address;       //0x1100
+
+    pm_register_address_type perph_subtype;         // 0x1105
+    pm_register_address_type sec_access;            // 0x11d0
+    pm_register_address_type spare;                 // 0x11df
+    pm_register_address_type otg_cfg;               // 0x11f1
+    pm_register_address_type cfg_battuv;            // 0x11f2
+    pm_register_address_type otg_icfg;              // 0x11f3
+    pm_register_address_type tr_isotg;              // 0x11f4
+    pm_register_address_type tr_otg_sns;            // 0x11f5
+    pm_register_address_type trim6;                 // 0x11f6
+    pm_register_address_type tr_istr;               // 0x11f7
+    pm_register_address_type cfg_tloop;             // 0x11f8
+    pm_register_address_type chg_pbs_trig_control;  // 0x11f9
+    pm_register_address_type tr_pwr_tr;             // 0x11fa
+    pm_register_address_type tr_pwr_trb_a;          // 0x11fb
+    pm_register_address_type tr_pwr_trb_b;          // 0x11fc
+    pm_register_address_type tr_pwr_trs;            // 0x11fd
+    pm_register_address_type tr_pwr_tr_bgtr;        // 0x11fe
+    pm_register_address_type low_pwr_options;       // 0x11ff
+}smbchg_otg_register_ds;
+
+typedef struct
+{
+    uint32                   base_address;      //0x1000
+
+    pm_register_address_type perph_subtype;     //0x1005
+    pm_register_address_type chg_option;        //0x1008
+    pm_register_address_type vbat_status;       //0x100B
+    pm_register_address_type fv_sts;            //0x100C
+    pm_register_address_type ichg_sts;          //0x100D
+    pm_register_address_type chgr_sts;          //0x100E
+    pm_register_address_type int_rt_sts;        //0x1010
+    pm_register_address_type int_set_type;      //0x1011
+    pm_register_address_type int_polarity_high; //0x1012
+    pm_register_address_type int_polarity_low;  //0x1013
+    pm_register_address_type int_latched_clr;   //0x1014
+    pm_register_address_type int_en_set;        //0x1015
+    pm_register_address_type int_en_clr;        //0x1016
+    pm_register_address_type int_latched_sts;   //0x1018
+    pm_register_address_type int_pending_sts;   //0x1019
+    pm_register_address_type int_mid_sel;       //0x101A
+    pm_register_address_type int_priority;      //0x101B
+    pm_register_address_type sec_access;        //0x10D0
+    pm_register_address_type spare;             //0x10DF
+    pm_register_address_type pcc_cfg;           //0x10F1
+    pm_register_address_type fcc_cfg;           //0x10F2
+    pm_register_address_type fcc_cmp_cfg;       //0x10F3
+    pm_register_address_type fv_cfg;            //0x10F4
+    pm_register_address_type fv_cmp_cfg;        //0x10F5
+    pm_register_address_type cfg_afvc;          //0x10F6
+    pm_register_address_type cfg_chg_inhib;     //0x10F7
+    pm_register_address_type cfg_p2f;           //0x10F8
+    pm_register_address_type cfg_tcc;           //0x10F9
+    pm_register_address_type ccmp_cfg;          //0x10FA
+    pm_register_address_type chgr_cfg1;         //0x10FB
+    pm_register_address_type chgr_cfg2;         //0x10FC
+    pm_register_address_type sft_cfg;           //0x10FD
+    pm_register_address_type stat_cfg;          //0x10FE
+    pm_register_address_type cfg;               //0x10FF
+}smbchg_chgr_register_ds;
+
+typedef struct
+{
+    uint32                   base_address;      //0x1400
+
+    pm_register_address_type perph_subtype;     //0x1405
+    pm_register_address_type int_rt_sts;        //0x1410
+    pm_register_address_type int_set_type;      //0x1411
+    pm_register_address_type int_polarity_high; //0x1412
+    pm_register_address_type int_polarity_low;  //0x1413
+    pm_register_address_type int_latched_clr;   //0x1414
+    pm_register_address_type int_en_set;        //0x1415
+    pm_register_address_type int_en_clr;        //0x1416
+    pm_register_address_type int_latched_sts;   //0x1418
+    pm_register_address_type int_pending_sts;   //0x1419
+    pm_register_address_type int_mid_sel;       //0x141a
+    pm_register_address_type int_priority;      //0x141b
+    pm_register_address_type sec_access;        //0x14d0
+    pm_register_address_type spare;             //0x14df
+    pm_register_address_type int_test1;         //0x14e0
+    pm_register_address_type int_test_val;      //0x14e1
+    pm_register_address_type tm_en_atest_dcin;  //0x14e2
+    pm_register_address_type trim_num;          //0x14f0
+    pm_register_address_type dcin_chgr_cfg;     //0x14f1
+    pm_register_address_type dcin_il_cfg;       //0x14f2
+    pm_register_address_type dc_aicl_cfg1;      //0x14f3
+    pm_register_address_type dc_aicl_cfg2;      //0x14f4
+    pm_register_address_type aicl_wl_sel_cfg;   //0x14f5
+    pm_register_address_type temp_comp_cfg;     //0x14f6
+    pm_register_address_type tr_temp;           //0x14fa
+}smbchg_dc_chgpth_register_ds;
+
+
+typedef struct
+{
+    uint32                   base_address;          // 0x1600
+
+    pm_register_address_type revision1;             // 0x1600
+    pm_register_address_type revision2;             // 0x1601
+    pm_register_address_type revision3;             // 0x1602
+    pm_register_address_type revision4;             // 0x1603
+    pm_register_address_type perph_type;            // 0x1604
+    pm_register_address_type perph_subtype;         // 0x1605
+    pm_register_address_type idev_sts;              // 0x1608
+    pm_register_address_type int_rt_sts;            // 0x1610
+    pm_register_address_type int_set_type;          // 0x1611
+    pm_register_address_type int_polarity_high;     // 0x1612
+    pm_register_address_type int_polarity_low;      // 0x1613
+    pm_register_address_type int_latched_clr;       // 0x1614
+    pm_register_address_type int_en_set;            // 0x1615
+    pm_register_address_type int_en_clr;            // 0x1616
+    pm_register_address_type int_latched_sts;       // 0x1618
+    pm_register_address_type int_pending_sts;       // 0x1619
+    pm_register_address_type int_mid_sel;           // 0x161a
+    pm_register_address_type int_priority;          // 0x161b
+    pm_register_address_type wdog_rst;              // 0x1640
+    pm_register_address_type afp_mode;              // 0x1641
+    pm_register_address_type gsm_pa_on_adj_en;      // 0x1642
+    pm_register_address_type sec_access;            // 0x16d0
+    pm_register_address_type spare;                 // 0x16df
+    pm_register_address_type wd_cfg;                // 0x16f1
+    pm_register_address_type misc_cfg;              // 0x16f2
+    pm_register_address_type cfg_ntc_vout;          // 0x16f3
+    pm_register_address_type chgr_trim_options_16;  // 0x16f4
+    pm_register_address_type chgr_trim_options_15_8;// 0x16f5
+    pm_register_address_type chgr_trim_options_7_0; // 0x16f6
+    pm_register_address_type tr_ipwr1;              // 0x16f7
+    pm_register_address_type tr_ipwr2;              // 0x16f8
+    pm_register_address_type cfg_temp_sel;          // 0x16ff
+}smbchg_misc_register_ds;
+
+
+typedef struct
+{
+    uint32                   base_address;           //0x1300
+
+    pm_register_address_type perph_subtype;         //0x1305
+    pm_register_address_type icl_sts_1;             //0x1307
+    pm_register_address_type pwr_pth_sts;           //0x1308
+    pm_register_address_type icl_sts_2;             //0x1309
+    pm_register_address_type apsd_dg_sts;           //0x130A
+    pm_register_address_type rid_sts;               //0x130B
+    pm_register_address_type hvdcp_sts;             //0x130C
+    pm_register_address_type input_sts;             //0x130D
+    pm_register_address_type usbid_valid_id_11_8;   //0x130E
+    pm_register_address_type usbid_valid_id_7_0;    //0x130F
+    pm_register_address_type int_rt_sts;            //0x1310
+    pm_register_address_type int_set_type;          //0x1311
+    pm_register_address_type int_polarity_high;     //0x1312
+    pm_register_address_type int_polarity_low;      //0x1313
+    pm_register_address_type int_latched_clr;       //0x1314
+    pm_register_address_type int_en_set;            //0x1315
+    pm_register_address_type int_en_clr;            //0x1316
+    pm_register_address_type int_latched_sts;       //0x1318
+    pm_register_address_type int_pending_sts;       //0x1319
+    pm_register_address_type int_mid_sel;           //0x131A
+    pm_register_address_type int_priority;          //0x131B
+    pm_register_address_type cmd_il;                //0x1340
+    pm_register_address_type iusb_max;              //0x1344
+    pm_register_address_type enum_timer_stop;       //0x134E
+    pm_register_address_type sec_access;            //0x13D0
+    pm_register_address_type usbin_chgr_cfg;        //0x13F1
+    pm_register_address_type usbin_il_cfg;          //0x13F2
+    pm_register_address_type usb_aicl_cfg;          //0x13F3
+    pm_register_address_type cfg;                   //0x13F4
+    pm_register_address_type apsd_cfg;              //0x13F5
+    pm_register_address_type wi_pwr_options;        //0x13FF
+}smbchg_usb_chgpth_register_ds;
+
+typedef struct
+{
+    uint32                   base_address;           //0x1b00
+
+    pm_register_address_type perph_subtype;         //0x1b05
+    pm_register_address_type bsi_sts;               //0x1b08
+    pm_register_address_type mipi_bif_fsm_sts;      //0x1b09
+    pm_register_address_type rx_fifo_sts;           //0x1b0a
+    pm_register_address_type bsi_bat_sts;           //0x1b0d
+    pm_register_address_type int_rt_sts;            //0x1b10
+    pm_register_address_type int_set_type;          //0x1b11
+    pm_register_address_type int_polarity_high;     //0x1b12
+    pm_register_address_type int_polarity_low;      //0x1b13
+    pm_register_address_type int_latched_clr;       //0x1b14
+    pm_register_address_type int_en_set;            //0x1b15
+    pm_register_address_type int_en_clr;            //0x1b16
+    pm_register_address_type int_latched_sts;       //0x1b18
+    pm_register_address_type int_pending_sts;       //0x1b19
+    pm_register_address_type int_mid_sel;           //0x1b1a
+    pm_register_address_type int_priority;          //0x1b1b
+    pm_register_address_type bsi_en;                //0x1b46
+    pm_register_address_type mipi_bif_err_clear;    //0x1b4f
+    pm_register_address_type mipi_bif_fsm_reset;    //0x1b50
+    pm_register_address_type mipi_bif_force_bcl_low; //0x1b51
+    pm_register_address_type mipi_bif_tau_cfg;      //0x1b52
+    pm_register_address_type mipi_bif_mode;         //0x1b53
+    pm_register_address_type mipi_bif_en;           //0x1b54
+    pm_register_address_type mipi_bif_cfg;          //0x1b55
+    pm_register_address_type mipi_bif_rx_cfg;       //0x1b56
+    pm_register_address_type mipi_bif_tx_dly;       //0x1b59
+    pm_register_address_type mipi_bif_data_tx_0;    //0x1b5a
+    pm_register_address_type mipi_bif_data_tx_1;    //0x1b5b
+    pm_register_address_type mipi_bif_data_tx_2;    //0x1b5c
+    pm_register_address_type mipi_bif_tx_ctl;       //0x1b5d
+    pm_register_address_type mipi_bif_data_rx_0;    //0x1b60
+    pm_register_address_type mipi_bif_data_rx_1;    //0x1b61
+    pm_register_address_type mipi_bif_data_rx_2;    //0x1b62
+    pm_register_address_type rx_fifo_word1_0;       //0x1b63
+    pm_register_address_type rx_fifo_word1_1;       //0x1b64
+    pm_register_address_type rx_fifo_word2_0;       //0x1b65
+    pm_register_address_type rx_fifo_word2_1;       //0x1b66
+    pm_register_address_type rx_fifo_word3_0;       //0x1b67
+    pm_register_address_type rx_fifo_word3_1;       //0x1b68
+    pm_register_address_type rx_fifo_word4_0;       //0x1b69
+    pm_register_address_type rx_fifo_word4_1;       //0x1b6a
+    pm_register_address_type mipi_bif_bcl_raw;      //0x1b6d
+    pm_register_address_type mipi_bif_error;        //0x1b70
+    pm_register_address_type bat_gone_cfg;          //0x1ba7
+    pm_register_address_type bat_rmv_deb_timer;     //0x1ba8
+    pm_register_address_type bat_pres_deb_timer;    //0x1ba9
+}smbchg_bsi_register_ds;
+
+typedef struct
+{
+    smbchg_bsi_register_ds          *bsi_register;
+    smbchg_chgr_register_ds         *chgr_register;
+    smbchg_otg_register_ds          *otg_register;
+    smbchg_bat_if_register_ds       *bat_if_register;
+    smbchg_usb_chgpth_register_ds   *usb_chgpth_register;
+    smbchg_dc_chgpth_register_ds    *dc_chgpth_register;
+    smbchg_misc_register_ds         *misc_register;
+}smbchg_register_ds;
+
+#define BATT_MISSING_SIZE  4
+#define DCIN_SIZE         26
+#define USBIN_SIZE        32
+
+typedef struct
+{
+    uint32 batt_missing_detect_time[BATT_MISSING_SIZE];
+    uint32 dcin_current_limits[DCIN_SIZE];
+    uint32 usbin_current_limits[USBIN_SIZE];
+}chg_range_data_type; 
+
+typedef struct
+{
+    pm_comm_info_type            *comm_ptr;
+    smbchg_register_ds           *smbchg_register;
+    uint8                        num_of_peripherals;
+    chg_range_data_type          *chg_range_data;
+}pm_smbchg_data_type;
+
+
+/*===========================================================================
+
+                     FUNCTION DECLARATION 
+
+===========================================================================*/
+void pm_smbchg_driver_init(uint32 pmic_index);
+
+pm_smbchg_data_type* pm_smbchg_get_data(uint32 pmic_index);
+
+#endif // PM_SMBCHG_DRIVER__H
diff --git a/dev/pmic/pmi8994/include/pm_smbchg_misc.h b/dev/pmic/pmi8994/include/pm_smbchg_misc.h
new file mode 100644
index 0000000..c429d81
--- /dev/null
+++ b/dev/pmic/pmi8994/include/pm_smbchg_misc.h
@@ -0,0 +1,363 @@
+/* Copyright (c) 2015, The Linux Foundation. All rights reserved.
+
+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 Linux Foundation nor the names of its
+      contributors may be used to endorse or promote products derived
+      from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#ifndef PM_SMBCHG_MISC_H
+#define PM_SMBCHG_MISC_H
+
+#include "pm_err_flags.h"
+#include "pm_resources_and_types.h"
+
+/*===========================================================================
+
+                        TYPE DEFINITIONS 
+
+===========================================================================*/
+
+typedef enum pm_smbchg_misc_src_detect_type
+{
+  PM_SMBCHG_MISC_SRC_DETECT_CDP,
+  PM_SMBCHG_MISC_SRC_DETECT_DCP,
+  PM_SMBCHG_MISC_SRC_DETECT_OTHER_CHARGING_PORT,
+  PM_SMBCHG_MISC_SRC_DETECT_SDP,
+  PM_SMBCHG_MISC_SRC_DETECT_FMB_UART_ON,
+  PM_SMBCHG_MISC_SRC_DETECT_FMB_UART_OFF,
+  PM_SMBCHG_MISC_SRC_DETECT_FMB_USB_ON,
+  PM_SMBCHG_MISC_SRC_DETECT_FMB_USB_OFF,
+  PM_SMBCHG_MISC_SRC_DETECT_INVALID
+}pm_smbchg_misc_src_detect_type;
+
+
+typedef enum {
+  PM_SMBCHG_MISC_POWER_OK,
+  PM_SMBCHG_MISC_TEMP_SHUTDOWN,
+  PM_SMBCHG_MISC_WDOG_TIMER,
+  PM_SMBCHG_MISC_FLASH_FAIL,
+  PM_SMBCHG_MISC_OTS2,
+  PM_SMBCHG_MISC_OTS3,
+  PM_SMBCHG_MISC_IRQ_INVALID
+}pm_smbchg_misc_irq_type; 
+
+
+typedef enum pm_smbchg_misc_sfty_after_wdog_irq_type
+{
+  PM_SMBCHG_MISC_SFTY_TIMER_AFTER_WDOG_12MIN,
+  PM_SMBCHG_MISC_SFTY_TIMER_AFTER_WDOG_24MIN,
+  PM_SMBCHG_MISC_SFTY_TIMER_AFTER_WDOG_48MIN,
+  PM_SMBCHG_MISC_SFTY_TIMER_AFTER_WDOG_96MIN,
+  PM_SMBCHG_MISC_SFTY_TIMER_AFTER_WDOG_INVALID
+}pm_smbchg_misc_sfty_after_wdog_irq_type;
+
+typedef enum pm_smbchg_wdog_timeout_type
+{
+  PM_SMBCHG_MISC_WD_TMOUT_18S,
+  PM_SMBCHG_MISC_WD_TMOUT_36S,
+  PM_SMBCHG_MISC_WD_TMOUT_72S,
+  PM_SMBCHG_MISC_WD_TMOUT_INVALID
+}pm_smbchg_wdog_timeout_type;
+
+typedef struct pm_smbchg_misc_wdog_cfg_type
+{
+  boolean                                 wdog_timer_en;
+  boolean                                 wdog_option_run_always;
+  boolean                                 wdog_irq_sfty_en;
+  pm_smbchg_misc_sfty_after_wdog_irq_type sfty_timer;
+  pm_smbchg_wdog_timeout_type             wdog_timeout;
+  boolean                                 afp_wdog_en;
+}pm_smbchg_misc_wdog_cfg_type; 
+
+
+typedef enum pm_smbchg_misc_misc_fn_cfg_type
+{
+   PM_SMBCHG_MISC_FN__VCHG_PA_ON_SEL,     /**< VCHG Function>*/
+   PM_SMBCHG_MISC_FN__GSM_PA_ON_ADJ_SEL,  /**< PA_ON Function>*/
+   PM_SMBCHG_MISC_FN__STANDBY_VCHG,       /**< Standby VCHG Function>*/
+   PM_SMBCHG_MISC_FN__CHG_OK,             /**< Charge OK Function>*/
+   PM_SMBCHG_MISC_FN__PHY_ON,             /**< PHY_ON Function>*/
+   PM_SMBCHG_MISC_FN__CFG_NTCVOUT,        /**< Reserved>*/
+   PM_SMBCHG_MISC_FN__FETDRV,             /**< Reserved>*/
+   PM_SMBCHG_MISC_FN__SYSOK_LDO,          /**< SYSOK LDO Function>*/
+   PM_SMBCHG_MISC_FN__INVALID             /**< INVALID>*/
+}pm_smbchg_misc_misc_fn_cfg_type; 
+
+
+
+/*===========================================================================
+
+                 SMBCHG OTG DRIVER FUNCTION PROTOTYPES
+
+===========================================================================*/
+
+
+ /**
+ * @brief This function detects the type of chgarging port device is connected to
+ * 
+ * @details
+ *  This API detects the type of chgarging port device is connected to
+ * 
+ * @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+ * @param[out] src_detected       Refer pm_smbchg_misc_src_detect_type for more info
+ *                                
+ *
+ * @return  pm_err_flag_type 
+ *          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ *          version of the PMIC.
+ *          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_misc_chgr_port_detected(uint32 pmic_device, pm_smbchg_misc_src_detect_type *src_detected);
+
+
+ /**
+ * @brief This function restarts the charger watchdog
+ * 
+ * @details
+ *  This API restarts charger watchdog
+ * 
+ * @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+ *                                
+ *
+ * @return  pm_err_flag_type 
+ *          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ *          version of the PMIC.
+ *          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_misc_wdog_rst(uint32 pmic_device);
+
+
+ /**
+ * @brief This function enables automatic fault protection
+ * 
+ * @details
+ *  This API enables automatic fault protection
+ * 
+ * @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+ *                                
+ *
+ * @return  pm_err_flag_type 
+ *          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ *          version of the PMIC.
+ *          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_misc_en_afp(uint32 pmic_device);
+
+
+ /**
+ * @brief This function configures the charger watchdog 
+ * 
+ * @details
+ *  This API configures the charger watchdog 
+ * 
+ * @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+ * @param[in] wd_cfg              Refer struct pm_smbchg_misc_wdog_cfg_type for more info
+ *                                
+ *
+ * @return  pm_err_flag_type 
+ *          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ *          version of the PMIC.
+ *          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_misc_config_wdog(uint32 pmic_device, pm_smbchg_misc_wdog_cfg_type *wd_cfg);
+
+
+ /**
+ * @brief This function reads the charger watchdog configuration
+ * 
+ * @details
+ *  This API reads the charger watchdog configuration 
+ * 
+ * @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+ * @param[out] wd_cfg              Refer struct pm_smbchg_misc_wdog_cfg_type for more info
+ *                                
+ *
+ * @return  pm_err_flag_type 
+ *          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ *          version of the PMIC.
+ *          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_misc_get_wdog_config(uint32 pmic_device, pm_smbchg_misc_wdog_cfg_type *wd_cfg);
+
+
+ /**
+ * @brief This function enable/disable charger watchdog
+ * 
+ * @details
+ *  This API enable/disable charger watchdog
+ * 
+ * @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+ * @param[in] enable_smbchg_wdog: TRUE=Enable; FALSE=Disable charger watchdog
+ *                                
+ *
+ * @return  pm_err_flag_type 
+ *          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ *          version of the PMIC.
+ *          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_misc_enable_wdog(uint32 pmic_device, boolean enable_smbchg_wdog);
+
+
+ /**
+ * @brief This function sets charger watchdog timeout
+ * 
+ * @details
+ *  This API sets charger watchdog timeout
+ * 
+ * @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+ * @param[in] wdog_timeout :   Refer struct pm_smbchg_wdog_timeout_type for more info
+ *                                
+ *
+ * @return  pm_err_flag_type 
+ *          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ *          version of the PMIC.
+ *          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_misc_set_wdog_timeout(uint32 pmic_device, pm_smbchg_wdog_timeout_type wdog_timeout);
+
+
+ /**
+ * @brief This function clear/sets MISC funtions like VCHG, PA_ON, standby VCHG, CHGR_OK, PHY_ON, SYSOK_LDO
+ * 
+ * @details
+ *  This function clear/sets MISC funtions like VCHG, PA_ON, standby VCHG, CHGR_OK, PHY_ON, SYSOK_LDO
+ *  VCHG output proportional to the charger/discharge current. 
+ * 
+ * @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+ * @param[in] misc_cfg            Refer pm_smbchg_misc_misc_fn_cfg_type for more info
+ * @param[in]enable               TRUE sets and FALSE clears                                
+ *
+ * @return  pm_err_flag_type 
+ *          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ *          version of the PMIC.
+ *          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_misc_config_misc_fn(uint32 pmic_device, pm_smbchg_misc_misc_fn_cfg_type misc_cfg, boolean enable);
+
+
+ /**
+ * @brief This function reads MISC funtions status like VCHG, PA_ON, standby VCHG, CHGR_OK, PHY_ON, SYSOK_LDO
+ * 
+ * @details
+ *  This function reads MISC funtions status like VCHG, PA_ON, standby VCHG, CHGR_OK, PHY_ON, SYSOK_LDO
+ *  VCHG output proportional to the charger/discharge current. 
+ * 
+ * @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+ * @param[in] misc_cfg            Refer pm_smbchg_misc_misc_fn_cfg_type for more info
+ * @param[out]enable              TRUE sets and FALSE clears                 
+ *
+ * @return  pm_err_flag_type 
+ *          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ *          version of the PMIC.
+ *          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_misc_get_misc_fn_config(uint32 pmic_device, pm_smbchg_misc_misc_fn_cfg_type misc_cfg, boolean* enable);
+
+ /**
+ * @brief This function enables the SMBCHG irq 
+ * 
+ * @details
+ *  This function enables the SMBCHG irq 
+ * 
+ * @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+ * @param[in] irq                 refer pm_smbchg_misc_irq_type
+ *                                
+ *
+ * @return  pm_err_flag_type 
+ *          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ *          version of the PMIC.
+ *          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_misc_irq_enable(uint32 pmic_device, pm_smbchg_misc_irq_type irq, boolean enable);
+
+ /**
+ * @brief This function clears the SMBCHG irq 
+ * 
+ * @details
+ *  This function clears the SMBCHG irq 
+ * 
+ * @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+ * @param[in] irq                 refer pm_smbchg_misc_irq_type
+ *                                
+ *
+ * @return  pm_err_flag_type 
+ *          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ *          version of the PMIC.
+ *          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_misc_irq_clear(uint32  pmic_device, pm_smbchg_misc_irq_type irq);
+
+ /**
+ * @brief This function configures the SMBCHG irq trigger 
+ * 
+ * @details
+ *  This function configures the SMBCHG irq trigger 
+ * 
+ * @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+ * @param[in] irq                 refer pm_smbchg_misc_irq_type
+ *                                
+ *
+ * @return  pm_err_flag_type 
+ *          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ *          version of the PMIC.
+ *          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_misc_irq_set_trigger(uint32 pmic_device, pm_smbchg_misc_irq_type irq, pm_irq_trigger_type trigger);
+
+ /**
+ * @brief This function configures the SMBCHG for irq 
+ * 
+ * @details
+ *  This function configures the SMBCHG for irq 
+ * 
+ * @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+ * @param[in] irq                 refer pm_smbchg_misc_irq_type
+ *                                
+ *
+ * @return  pm_err_flag_type 
+ *          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ *          version of the PMIC.
+ *          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_misc_irq_status(uint32 pmic_device, pm_smbchg_misc_irq_type irq, pm_irq_status_type type, boolean *status);
+
+
+
+
+
+#endif /* PM_SMBCHG_MISC_H*/
+
diff --git a/dev/pmic/pmi8994/include/pm_smbchg_usb_chgpth.h b/dev/pmic/pmi8994/include/pm_smbchg_usb_chgpth.h
new file mode 100644
index 0000000..20d39ac
--- /dev/null
+++ b/dev/pmic/pmi8994/include/pm_smbchg_usb_chgpth.h
@@ -0,0 +1,726 @@
+/* Copyright (c) 2015, The Linux Foundation. All rights reserved.
+
+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 Linux Foundation nor the names of its
+      contributors may be used to endorse or promote products derived
+      from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#ifndef PM_SMBCHG_USB_CHGPTH_H
+#define PM_SMBCHG_USB_CHGPTH_H
+
+#include "pm_err_flags.h"
+#include "pm_resources_and_types.h"
+
+/*===========================================================================
+
+                        TYPE DEFINITIONS 
+
+===========================================================================*/
+
+
+typedef enum input_current_limit_mode
+{
+  PM_SMBCHG_USB_CHGPTH_ICL_MODE_HIGH_CURRENT,
+  PM_SMBCHG_USB_CHGPTH_ICL_MODE_100mA,
+  PM_SMBCHG_USB_CHGPTH_ICL_MODE_500mA,
+  PM_SMBCHG_USB_CHGPTH_ICL_MODE_INVALID
+}input_current_limit_mode;
+
+typedef struct input_current_limit_sts
+{
+  boolean                  is_aicl_complete;
+  uint32                   input_current_limit;
+  input_current_limit_mode icl_mode;
+  boolean                  is_usbin_suspended;
+  boolean                  is_dcin_suspended;
+  boolean                  is_usbin_active_pwr_src;
+  boolean                  is_dcin_active_pwr_src;
+}input_current_limit_sts;
+
+typedef enum pm_smbchg_usb_chgpth_pwr_pth_type
+{
+   PM_SMBCHG_USB_CHGPTH_PWR_PATH__NONE,
+   PM_SMBCHG_USB_CHGPTH_PWR_PATH__BATTERY,
+   PM_SMBCHG_USB_CHGPTH_PWR_PATH__USB_CHARGER,
+   PM_SMBCHG_USB_CHGPTH_PWR_PATH__DC_CHARGER,
+   PM_SMBCHG_USB_CHGPTH_PWR_PATH__INVALID
+}pm_smbchg_usb_chgpth_pwr_pth_type;
+
+
+typedef enum
+{
+   PM_SMBCHG_USB_CHGPTH_DG_STS__RID_ABC_DG,  /**< RID-A/B/C Data Connect Detect Deglitch status >*/
+   PM_SMBCHG_USB_CHGPTH_DG_STS__OCD_GOOD_DG, /**< Other Charger Device Data Connect Deglitch status >*/
+   PM_SMBCHG_USB_CHGPTH_DG_STS__DCD_GOOD_DG, /**< Data Connect Device Deglitch status >*/
+   PM_SMBCHG_USB_CHGPTH_DG_STS__DCD_TIMEOUT, /**< DCD Timeout status >*/
+   PM_SMBCHG_USB_CHGPTH_DG_STS__INVALID      /**<  INVALID>*/
+}pm_apsd_dg_sts_type;
+
+
+typedef enum
+{
+   PM_SMBCHG_USB_CHGPTH_RID__GND,
+   PM_SMBCHG_USB_CHGPTH_RID__FLOAT,
+   PM_SMBCHG_USB_CHGPTH_RID__A,
+   PM_SMBCHG_USB_CHGPTH_RID__B,
+   PM_SMBCHG_USB_CHGPTH_RID__C,
+   PM_SMBCHG_USB_CHGPTH_RID__INVALID
+}pm_smbchg_usb_chgpth_rid_sts_type;
+
+
+typedef enum
+{
+   PM_SMBCHG_USB_CHGPTH__HVDCP_SEL_5V,     /**< 5V High Voltage DCP Enabled >*/
+   PM_SMBCHG_USB_CHGPTH__HVDCP_SEL_9V,     /**< 9V High Voltage DCP Enabled >*/
+   PM_SMBCHG_USB_CHGPTH__HVDCP_SEL_12V,    /**< 12V High Voltage DCP Enabled>*/
+   PM_SMBCHG_USB_CHGPTH__HVDCP_SEL_20V,    /**< 20V High Voltage DCP Enabled>*/
+   PM_SMBCHG_USB_CHGPTH__IDEV_HVDCP_SEL_A, /**< High Voltage DCP detected   >*/
+   PM_SMBCHG_USB_CHGPTH__HVDCP_STS_INVALID /**< INVALID >*/
+}pm_smbchg_usb_chgpth_hvdcp_sts_type;
+
+typedef enum
+{
+  PM_SMBCHG_CHAR_TYPE_USB,
+  PM_SMBCHG_CHAR_TYPE_DC,
+  PM_SMBCHG_CHAR_TYPE_INVALID
+}pm_smbchg_usb_chgpth_chgr_type;
+
+typedef enum
+{
+  PM_SMBCHG_NO_CHGR_DETECTED,
+  PM_SMBCHG_5V_9V_CHGR_DETECTED,
+  PM_SMBCHG_UNREGULATED_CHGR_DETECTED,
+  PM_SMBCHG_9V_CHGR_DETECTED,
+  PM_SMBCHG_INVALID_DETECTED
+}pm_smbchg_usb_chgpth_input_sts_type;
+
+
+typedef enum
+{
+   PM_SMBCHG_USBCHGPTH_CMD_IL__USBIN_MODE_CHG,    /**< USBIN Mode Charge             >*/
+   PM_SMBCHG_USBCHGPTH_CMD_IL__USB51_MODE,        /**< USB5/1 Mode                   >*/
+   PM_SMBCHG_USBCHGPTH_CMD_IL__ICL_OVERRIDE,      /**< ICL Override                  >*/
+   PM_SMBCHG_USBCHGPTH_CMD_IL__DCIN_SUSPEND,      /**< DCIN Suspend                  >*/
+   PM_SMBCHG_USBCHGPTH_CMD_IL__USBIN_SUSPEND,     /**< USBIN Suspend                 >*/
+   PM_SMBCHG_USBCHGPTH_CMD_IL__BAT_2_SYS_FET_DIS, /**< Battery-to-System FET Disable >*/
+   PM_SMBCHG_USBCHGPTH_CMD_IL__SHDN_N_CLEAR_CMD,  /**< shdn_n_clear command           >*/
+   PM_SMBCHG_USBCHGPTH_CMD_IL__INVALID            /**< INVALID                       >*/
+}pm_smbchg_usb_chgpth_cmd_il_type;
+
+
+typedef enum
+{
+   PM_SMBCHG_USB_CHGPTH_AICL_CFG__DEB_LV_ADAPTER,     /**< USBIN Input Collapse Option for LV adapter>*/
+   PM_SMBCHG_USB_CHGPTH_AICL_CFG__DEB_HV_ADAPTER,     /**< USBIN Input Collapse Option for HV adapter>*/
+   PM_SMBCHG_USB_CHGPTH_AICL_CFG__AICL_EN,            /**< TRUE:enabled, FALSE: disabled>*/
+   PM_SMBCHG_USB_CHGPTH_AICL_CFG__DEB_5V_ADAPTER_SEL, /**< USBIN Input Collapse Glitch Filter for 5V Select, Unregulated or 5V - 9V Adapter >*/
+   PM_SMBCHG_USB_CHGPTH_AICL_CFG__DEB_9V_ADAPTER_SEL, /**< USBIN Input Collapse Glitch Filter for 9V Adapter Select. >*/
+   PM_SMBCHG_USB_CHGPTH_AICL_CFG__DEB_9V_ADAPTER_EN,  /**< USBIN Input Collapse Glitch Filter for 9V Adapter Enable  >*/
+   PM_SMBCHG_USB_CHGPTH_AICL_CFG__OV_OPTION,          /**< FALSE = OV on USBIN will block DCIN current path; TRUE = OV on USBIN will not block DCIN current path>*/
+   PM_SMBCHG_USB_CHGPTH_AICL_CFG__INVALID             /**< INVALID >*/
+}pm_smbchg_usb_chgpth_aicl_cfg_type;
+
+typedef enum pm_smbchg_usbin_adptr_allowance
+{
+ PM_SMBCHG_USBIN_ADPTR_ALLOWANCE_5V,
+ PM_SMBCHG_USBIN_ADPTR_ALLOWANCE_5V_OR_9V,
+ PM_SMBCHG_USBIN_ADPTR_ALLOWANCE_5V_TO_9V,
+ PM_SMBCHG_USBIN_ADPTR_ALLOWANCE_9V,
+ PM_SMBCHG_USBIN_ADPTR_ALLOWANCE_5V_UNREG,
+ PM_SMBCHG_USBIN_ADPTR_ALLOWANCE_5V_9V_UNREG,
+ PM_SMBCHG_USBIN_ADPTR_ALLOWANCE_INVALID
+}pm_smbchg_usbin_adptr_allowance;
+
+/*! \enum pm_smbchg_usb_chgpth_irq_bit_field_type
+   \brief different types of irq bit fields of by smbb irq module
+ */
+typedef enum
+{
+  PM_SMBCHG_USB_CHGPTH_USBIN_UV,
+  PM_SMBCHG_USB_CHGPTH_USBIN_OV,
+  PM_SMBCHG_USB_CHGPTH_USBIN_SRC_DET,
+  PM_SMBCHG_USB_CHGPTH_OTG_FAIL,
+  PM_SMBCHG_USB_CHGPTH_OTG_OVERCURRENT,
+  PM_SMBCHG_USB_CHGPTH_AICL_DONE,
+  PM_SMBCHG_USB_CHGPTH_USBID_CHANGE_INTR,
+  PM_SMBCHG_USB_CHGPTH_IRQ_INVALID
+}pm_smbchg_usb_chgpth_irq_type; 
+
+
+typedef enum 
+{
+   PM_SMBCHG_USB_CHGPTH_USB51AC_CTRL__CMD,    /**< USB51AC Command Register Controlled. >*/
+   PM_SMBCHG_USB_CHGPTH_USB51AC_CTRL__PIN,    /**< USB51AC Pin Controlled. >*/
+   PM_SMBCHG_USB_CHGPTH_USB51AC_CTRL__INVALID /**< INVALID >*/
+}pm_smbchg_usb_chgpth_usb51ac_ctrl_type;
+
+typedef enum 
+{
+   PM_SMBCHG_USB_CHGPTH_USB51_CMD_POL__CMD1_500,    /**< USB51AC Tri-state input. >*/
+   PM_SMBCHG_USB_CHGPTH_USB51_CMD_POL__CMD1_100,   /**< USB51AC Dual-state input. >*/
+   PM_SMBCHG_USB_CHGPTH_USB51_CMD_POL__INVALID       /**< INVALID >*/
+}pm_smbchg_usb_chgpth_usb51_cmd_pol_type;  
+
+typedef struct 
+{
+   pm_smbchg_usb_chgpth_usb51ac_ctrl_type   usb51ac_ctrl_type;  /**< See pm_smbchg_usb_chgpth_usb51ac_ctrl_type for details */
+   pm_smbchg_usb_chgpth_usb51_cmd_pol_type  usb51_cmd_pol_type;  /**< See pm_smbchg_usb_chgpth_usb51ac_ctrl_type for details */
+}pm_usb_chgpth_usb_cfg_type;
+
+
+typedef struct pm_smbchg_usb_chgpth_apsd_cfg_type
+{
+   boolean en_auto_src_detect; /*autopower source detect enable/disable*/
+   boolean en_dcd_tmout_only; /*0 = DCD Option - Deglitchers and Timeout 1 = DCD Option - Timeout only*/
+   boolean set_rid_clk_2khz; /*0 = 1kHz; 1 = 2kHz*/
+   boolean force_icl_500ma_vbat_low_sdp; /*0X = VBATT_LOW during SDP has no effect; 1X = VBATT_LOW during SDP forces 500ma ICL*/
+   boolean sdp_suspend; /*0 = Normal SDP operation 1 = SDP enters suspend*/
+   boolean is_ocd_isel_hc; /*0 = ICL 500mA, 1 = ICL HC*/
+   boolean usb_fail_pok_hv; /*0 = Normal 1 = Use Power-OK thresholds for HV adapter*/
+   boolean is_input_prority_usbin; /*0 = DCIN has priority, 1 = USBIN has priority*/
+}pm_smbchg_usb_chgpth_apsd_cfg_type;
+
+
+typedef enum
+{
+   PM_SMBCHG_USBCHGPTH_INPUT_PRIORITY_DCIN,
+   PM_SMBCHG_USBCHGPTH_INPUT_PRIORITY_USBIN,
+   PM_SMBCHG_USBCHGPTH_INPUT_PRIORITY_INVALID
+}pm_smbchg_chgpth_input_priority_type;
+
+/*===========================================================================
+
+                 SMBCHG DRIVER FUNCTION PROTOTYPES
+
+===========================================================================*/
+
+/**
+* @brief This API returns input current limit status for usb chgpth
+* 
+* @details
+*  This API returns input current limit status for usb chgpth
+* 
+* @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+* @param[out] icl_sts             Refer input_current_limit_sts for more info
+*                                
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_usb_chgpth_icl_sts(uint32 device_index, input_current_limit_sts* icl_sts);
+
+/**
+* @brief This function returns power path for device
+* 
+* @details
+*  This function returns power path for device
+* 
+* @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+* @param[out] pwr_path           Refer enum pm_pwr_pth_type for more info
+*                                
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_usb_chgpth_get_pwr_pth(uint32 device_index, pm_smbchg_usb_chgpth_pwr_pth_type *pwr_path);
+
+
+/**
+* @brief This function returns auto power source detection degitched status
+* 
+* @details
+*  his function returns auto power source detection degitched status
+* 
+* @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+* @param[in] apsd_dg_sts         Refer enum pm_apsd_dg_sts_type for more info
+* @param[in] status              Returns set or clear           
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_usb_chgpth_apsd_dg_sts(uint32 device_index, pm_apsd_dg_sts_type apsd_dg_sts_type, boolean *status);
+
+/**
+* @brief This function returns RID state machine detected status
+* 
+* @details
+*  This function returns RID state machine detected status
+* 
+* @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+* @param[in] rid_sts             For more info please refer pm_rid_sts_type
+*                                
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_usb_chgpth_rid_sts(uint32 device_index, pm_smbchg_usb_chgpth_rid_sts_type *rid_sts);
+
+
+/**
+* @brief This function returns high voltage DCP detection and enable status
+* 
+* @details
+*  This function returns high voltage DCP detection and enable status
+* 
+* @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+* @param[in] hvdcp_sts           Refer pm_hvdcp_sts for more info
+* @param[out]status              TRUE set, FALSE clear
+*
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_usb_chgpth_hvdcp_sts(uint32 device_index, pm_smbchg_usb_chgpth_hvdcp_sts_type hvdcp_sts, boolean *status);
+
+
+/**
+* @brief This function returns USBIN and DCIN input status
+* 
+* @details
+*  This function returns USBIN and DCIN input status
+* 
+* @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+* @param[in] chgr                Refer pm_smbchg_usb_chgpth_chgr_type for more info
+* @param[in] input_sts_type      Refer pm_smbchg_usb_chgpth_input_sts_type for more info
+*                                
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_usb_chgpth_input_sts(uint32 device_index, pm_smbchg_usb_chgpth_chgr_type chgr, pm_smbchg_usb_chgpth_input_sts_type *input_sts_type);
+
+
+/**
+* @brief This function returns the valid usbid
+* 
+* @details
+*  This function returns the valid usbid
+* 
+* @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+* @param[out] valid_id           Valid USBID read
+*                                
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_usb_chgpth_get_valid_usbid(uint32 device_index, uint16 *valid_id);
+
+/**
+* @brief This function sets the command for current limit
+* 
+* @details
+*  This function sets the command for current limit
+* 
+* @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+* @param[in] chgpth_cmd_il       Please refer pm_chgpth_cmd_il for more info
+* @param[in] enable              TRUE to set and FALSE to clear
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_usb_chgpth_set_cmd_il(uint32 device_index, pm_smbchg_usb_chgpth_cmd_il_type chgpth_cmd_il, boolean enable);
+
+/**
+* @brief This function reads the command for current limit
+* 
+* @details
+*  This function reads the command for current limit
+* 
+* @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+* @param[in] chgpth_cmd_il       Please refer pm_chgpth_cmd_il for more info
+* @param[out] enable             TRUE to set and FALSE to clear
+*                                
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_usb_chgpth_get_cmd_il(uint32 device_index, pm_smbchg_usb_chgpth_cmd_il_type chgpth_cmd_il, boolean *enable);
+
+/**
+* @brief This function sets the maximum USB current
+* 
+* @details
+*  This function sets the maximum USB current
+* 
+* @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+* @param[in] i_milli_amp         Current from 100 mA to 2500 mA
+*                                
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_usb_chgpth_set_iusb_max(uint32 device_index, uint32 i_milli_amp);
+
+/**
+* @brief This function reads the set maximum USB current
+* 
+* @details
+*  This function reads the set maximum USB current
+* 
+* @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+* @param[out] i_milli_amp         Current from 100 mA to 2500 mA
+*                                
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_usb_chgpth_get_iusb_max(uint32 device_index, uint32 *i_milli_amp);
+
+/**
+* @brief This function sets the STOP bit of enum timer 
+* 
+* @details
+*  This function sets the STOP bit of enum timer stop. To stop the ENUM_TIMER, 
+*  SW has to set this STOP bit and increase IUSB_MAX above 100mA
+* 
+* @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+*                                
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_usb_chgpth_set_enum_timer_stop(uint32 device_index);
+
+/**
+* @brief This function sets the USBIN adapter allowance
+* 
+* @details
+*  This function sets the USBIN adapter allowance
+* 
+* @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+* @param[in] adptr_allowance     Refer  pm_smbchg_usbin_adptr_allowance for more info
+*                                
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_usb_chgpth_set_usbin_adptr_allowance(uint32 device_index, pm_smbchg_usbin_adptr_allowance adptr_allowance);
+
+/**
+* @brief This function reads the USBIN adapter allowance
+* 
+* @details
+*  This function reads the USBIN adapter allowance
+* 
+* @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+* @param[out] adptr_allowance     Refer  pm_smbchg_usbin_adptr_allowance for more info
+*                                
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_usb_chgpth_get_usbin_adptr_allowance(uint32 device_index, pm_smbchg_usbin_adptr_allowance *adptr_allowance);
+
+/**
+* @brief This function sets the USBIN input current limit
+* 
+* @details
+*  This function sets the USBIN input current limit
+* 
+* @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+* @param[in] current_ma          Valid value is 300 to 3000mAmp
+*                                
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_usb_chgpth_set_usbin_current_limit(uint32 device_index, uint32 current_ma);
+
+/**
+* @brief This function reads the USBIN input current limit
+* 
+* @details
+*  This function reads the USBIN input current limit
+* 
+* @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+* @param[out]current_ma          Valid value is 300 to 3000mAmp
+*                                
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_usb_chgpth_get_usbin_current_limit(uint32 device_index, uint32 *current_ma);
+
+
+/**
+* @brief This function configures the AICL for USB CHGPTH
+* 
+* @details
+*  This function configures the AICL for USB CHGPTH
+* 
+* @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+* @param[in] usb_aicl_cfg        Refer pm_smbchg_usb_aicl_cfg for more info
+* @param[in] enable              TRUE: enabled, FALSE: disabled
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_usb_chgpth_config_aicl(uint32 device_index, pm_smbchg_usb_chgpth_aicl_cfg_type usb_aicl_cfg, boolean enable);
+
+
+/**
+* @brief This function reads the configured the AICL for USB CHGPTH
+* 
+* @details
+*  This function reads the configured the AICL for USB CHGPTH
+* 
+* @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+* @param[in] usb_aicl_cfg        Refer pm_smbchg_usb_aicl_cfg for more info
+* @param[in] enable              TRUE: enabled, FALSE: disabled                                
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_usb_chgpth_get_aicl_config(uint32 device_index, pm_smbchg_usb_chgpth_aicl_cfg_type usb_aicl_cfg, boolean *enable);
+
+
+/**
+* @brief This function configures the USB charge path
+* 
+* @details
+*   This function configures the USB charge path
+* 
+* @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+* @param[in] usb_cfg_type        Refer usb_cfg_type for more info
+*                                
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_usb_chgpth_config_usb_chgpth(uint32 device_index, pm_usb_chgpth_usb_cfg_type *usb_cfg_type);
+
+
+/**
+* @brief This function gets configuration for the USB charge path
+* 
+* @details
+*   This function gets configuration for the USB charge path
+* 
+* @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+* @param[out] usb_cfg_type        Refer usb_cfg_type for more info
+*                                
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_usb_chgpth_get_usb_chgpth_config(uint32 device_index, pm_usb_chgpth_usb_cfg_type *usb_cfg_type);
+
+
+/**
+* @brief This function configures USB charge path for auto power source detection
+* 
+* @details
+*  This function configures USB charge path for auto power source detection
+* 
+* @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+* @param[in] apsd_cfg            Refer pm_smbchg_usb_chgpth_apsd_cfg_type for more info
+*                                
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_usb_chgpth_config_apsd(uint32 device_index, pm_smbchg_usb_chgpth_apsd_cfg_type *apsd_cfg);
+
+
+/**
+* @brief This function reads configuration for  USB charge path auto power source detection
+* 
+* @details
+*  This function reads configuration for  USB charge path auto power source detection
+* 
+* @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+* @param[in] apsd_cfg            Refer pm_smbchg_usb_chgpth_apsd_cfg_type for more info
+*                                
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_usb_chgpth_get_apsd_config(uint32 device_index, pm_smbchg_usb_chgpth_apsd_cfg_type *apsd_cfg);
+
+
+/**
+* @brief This function sets chgpath input priority
+* 
+* @details
+*  This function sets chgpath input priority
+* 
+* @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+* @param[in] chgpth_priority:    Refer pm_smbchg_chgpth_input_priority_type for more info
+*                                
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_chgpth_set_input_priority(uint32 device_index, pm_smbchg_chgpth_input_priority_type chgpth_priority);
+
+/**
+* @brief This function enables irq
+* 
+* @details
+*  This function enables irq
+* 
+* @param[in] pmic_device_index.  Primary: 0 Secondary: 1
+* @param[in] irq                 pm_smbchg_usb_chgpth_irq_type
+*                                
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_usb_chgpth_irq_enable(uint32 device_index, pm_smbchg_usb_chgpth_irq_type irq, boolean enable);
+
+
+/**
+ * @brief This function clears the SMBCHG irq 
+ * 
+ * @param[in] device_index. Primary: 0. Secondary: 1
+ * @param[in] irq:  
+ *                SMBCHG irq type. Refer enum pm_smbchg_usb_chgpth_irq_type.  
+ *
+ *
+ * @return  pm_err_flag_type 
+ *          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ *          version of the PMIC.
+ *          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_usb_chgpth_irq_clear(uint32  device_index, pm_smbchg_usb_chgpth_irq_type irq);
+
+
+
+/**
+ * @brief This function configures the SMBCHG irq trigger 
+ * 
+ * @param[in] device_index. Primary: 0. Secondary: 1
+ * @param[in] irq:  
+ *                SMBCHG irq type. Refer enum pm_smbchg_usb_chgpth_irq_type.  
+ * @param[in] trigger:  
+ *                One of different irq triggers. Refer enum pm_irq_trigger_type 
+ *                from pm_uefi_irq.h for more details
+ *
+ *
+ * @return  pm_err_flag_type 
+ *          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ *          version of the PMIC.
+ *          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_usb_chgpth_irq_set_trigger(uint32 device_index, pm_smbchg_usb_chgpth_irq_type irq, pm_irq_trigger_type trigger);
+
+
+/**
+ * @brief This function configures the SMBCHG for irq 
+ * 
+ * @param[in] device_index. Primary: 0. Secondary: 1
+ * @param[in] irq:  
+ *                SMBCHG irq type. Refer enum pm_Smbb_irq_type. 
+ * @param[in] type:  
+ *                Type of IRQ status to read. Refer enum pm_irq_status_type 
+ *                from pm_uefi_irq.h for more details
+ * @param[out] status:  
+ *                IRQ status.
+ *
+ *
+ * @return  pm_err_flag_type 
+ *          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ *          version of the PMIC.
+ *          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_usb_chgpth_irq_status(uint32 device_index, pm_smbchg_usb_chgpth_irq_type irq, pm_irq_status_type type, boolean *status);
+
+
+#endif /* PM_SMBCHG_USB_CHGPTH_H */
+
diff --git a/dev/pmic/pmi8994/pm_app_smbchg.c b/dev/pmic/pmi8994/pm_app_smbchg.c
new file mode 100644
index 0000000..4d8a2db
--- /dev/null
+++ b/dev/pmic/pmi8994/pm_app_smbchg.c
@@ -0,0 +1,586 @@
+/* Copyright (c) 2015, The Linux Foundation. All rights reserved.
+
+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 Linux Foundation nor the names of its
+      contributors may be used to endorse or promote products derived
+      from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*===========================================================================
+
+                     INCLUDE FILES
+
+===========================================================================*/
+#include "pm_app_smbchg.h"
+#include "pm_smbchg_chgr.h"
+#include "pm_smbchg_bat_if.h"
+#include "pm_app_smbchg.h"
+#include "pm_fg_adc_usr.h"
+#include "pm_fg_driver.h"
+#include "pm_smbchg_driver.h"
+#include "pm_comm.h"
+#include "pm_smbchg_dc_chgpth.h"
+#include <debug.h>
+#include <platform/timer.h>
+#include <sys/types.h>
+#include <target.h>
+
+
+/*===========================================================================
+
+                     PROTOTYPES
+
+===========================================================================*/
+
+
+/*===========================================================================
+
+                     GLOBAL TYPE DEFINITIONS
+
+===========================================================================*/
+#define  PM_REG_CONFIG_SETTLE_DELAY       175  * 1000 //175ms  ; Delay required for battery voltage de-glitch time
+#define  PM_WEAK_BATTERY_CHARGING_DELAY   500 * 1000  //500ms
+#define  PM_WIPOWER_START_CHARGING_DELAY  3500 * 1000 //3.5sec
+#define  PM_MIN_ADC_READY_DELAY             1 * 1000  //1ms
+#define  PM_MAX_ADC_READY_DELAY     2000              //2s
+#define SBL_PACKED_SRAM_CONFIG_SIZE 3
+
+#define boot_log_message(...) dprintf(CRITICAL, __VA_ARGS__)
+
+static pm_smbchg_bat_if_low_bat_thresh_type pm_dbc_bootup_volt_threshold;
+static bool display_initialized;
+static bool charge_in_progress;
+char panel_name[256];
+
+pm_err_flag_type pm_smbchg_get_charger_path(uint32 device_index, pm_smbchg_usb_chgpth_pwr_pth_type* charger_path);
+pm_err_flag_type pm_appsbl_chg_config_vbat_low_threshold(uint32 device_index, pm_smbchg_specific_data_type *chg_param_ptr);
+
+/*===========================================================================
+
+                     FUNCTION IMPLEMENTATION
+
+===========================================================================*/
+pm_err_flag_type pm_appsbl_chg_check_weak_battery_status(uint32 device_index)
+{
+   pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+   pm_smbchg_specific_data_type *chg_param_ptr = NULL;
+   pm_smbchg_chgr_chgr_status_type vbatt_chging_status;
+   boolean hot_bat_hard_lim_rt_sts  = FALSE;
+   boolean cold_bat_hard_lim_rt_sts = FALSE;
+   boolean vbatt_weak_status = TRUE;
+   boolean adc_reading_ready = FALSE;
+   boolean bat_present       = TRUE;
+   uint32 vbat_adc = 0;
+   uint16  wait_index = 0;
+   boolean vbatt_status = FALSE;
+   pm_smbchg_misc_src_detect_type chgr_src_detected;
+   boolean configure_icl_flag = FALSE;
+   boolean chg_prog_message_flag = FALSE;
+   pm_smbchg_usb_chgpth_pwr_pth_type charger_path = PM_SMBCHG_USB_CHGPTH_PWR_PATH__INVALID;;  uint32  bootup_threshold;
+
+   pm_smbchg_driver_init(device_index);
+   pm_fg_driver_init(device_index);
+
+   chg_param_ptr = (pm_smbchg_specific_data_type*)pm_target_information_get_specific_info();
+   ASSERT(chg_param_ptr);
+   bootup_threshold = chg_param_ptr->bootup_battery_theshold_mv; 
+
+   if(chg_param_ptr->dbc_bootup_volt_threshold.enable_config == PM_ENABLE_CONFIG)
+   {
+      //Configure Vlowbatt threshold: Used by PMI on next bootup
+      err_flag  |= pm_appsbl_chg_config_vbat_low_threshold(device_index, chg_param_ptr); 
+   }
+
+   //Check Battery presence
+   err_flag |= pm_smbchg_bat_if_get_bat_pres_status(device_index, &bat_present);
+   if( bat_present == FALSE )
+   {
+      dprintf(CRITICAL, "Booting up to HLOS: Charger is Connected and NO battery\n");
+      return err_flag;
+   }
+
+
+   //Detect the typpe of charger used
+   //err_flag |= pm_smbchg_usb_chgpth_get_pwr_pth(device_index, &
+   err_flag |= pm_smbchg_get_charger_path(device_index, &charger_path);
+   if (charger_path == PM_SMBCHG_USB_CHGPTH_PWR_PATH__DC_CHARGER) 
+   {
+
+      bootup_threshold = chg_param_ptr->wipwr_bootup_battery_theshold_mv;
+   }
+   else if (charger_path == PM_SMBCHG_USB_CHGPTH_PWR_PATH__USB_CHARGER)
+   {
+      bootup_threshold = chg_param_ptr->bootup_battery_theshold_mv;
+   }
+
+   //Enable BMS FG Algorithm BCL
+   err_flag |= pm_fg_adc_usr_enable_bcl_monitoring(device_index, TRUE);
+   if ( err_flag != PM_ERR_FLAG__SUCCESS )  
+   { 
+       return err_flag;
+   }
+
+
+   while( vbatt_weak_status == TRUE )  //While battery is in weak state
+   {
+      //Check Vbatt ADC level  
+      err_flag |= pm_fg_adc_usr_get_bcl_values(device_index, &adc_reading_ready); //Check if Vbatt ADC is ready
+
+      //Check if Vbatt ADC is Ready
+      for (wait_index = 0; wait_index < PM_MAX_ADC_READY_DELAY; wait_index++)
+      {
+        if(adc_reading_ready == FALSE)
+        {
+           udelay(PM_MIN_ADC_READY_DELAY);
+           err_flag |= pm_fg_adc_usr_get_bcl_values(device_index,&adc_reading_ready);
+        }
+        else
+        {
+           break;
+        }
+      }
+
+      if ( err_flag != PM_ERR_FLAG__SUCCESS )  { break;} 
+
+      if ( adc_reading_ready)
+      {
+         err_flag |= pm_fg_adc_usr_get_calibrated_vbat(device_index, &vbat_adc); //Read calibrated vbatt ADC
+         if ( err_flag != PM_ERR_FLAG__SUCCESS )  { break;}
+
+         //Check if ADC reading is within limit
+         if ( vbat_adc >=  bootup_threshold)  //Compaire it with SW bootup threshold
+         {
+            vbatt_weak_status = FALSE;
+            break; //bootup
+         }
+   }
+   else
+   {
+         boot_log_message("ERROR:  ADC Reading is NOT Ready\n");
+         err_flag |= PM_ERR_FLAG__ADC_NOT_READY;
+         break; 
+   }
+
+      //Check if USB charger is SDP
+      err_flag |= pm_smbchg_misc_chgr_port_detected(device_index, &chgr_src_detected);
+      if (chgr_src_detected == PM_SMBCHG_MISC_SRC_DETECT_SDP) 
+   {
+         if (configure_icl_flag == FALSE)
+         {
+            //Check Vlow_batt status
+            err_flag |= pm_smbchg_chgr_vbat_sts(device_index, &vbatt_status);
+            if (vbatt_status)
+            {
+               //set ICL to 500mA
+               err_flag |= pm_smbchg_usb_chgpth_set_cmd_il(device_index, PM_SMBCHG_USBCHGPTH_CMD_IL__USB51_MODE, TRUE);
+               err_flag |= pm_smbchg_usb_chgpth_set_cmd_il(device_index, PM_SMBCHG_USBCHGPTH_CMD_IL__USBIN_MODE_CHG, FALSE);
+               configure_icl_flag = TRUE;
+            }
+         }
+   }
+
+      if (chg_prog_message_flag == FALSE)
+      {
+          //Ensure that Charging is enabled
+          err_flag |= pm_smbchg_chgr_enable_src(device_index, FALSE);
+          err_flag |= pm_smbchg_chgr_set_chg_polarity_low(device_index, FALSE);
+          err_flag |= pm_smbchg_bat_if_config_chg_cmd(device_index, PM_SMBCHG_BAT_IF_CMD__EN_BAT_CHG, TRUE);
+          udelay(PM_WEAK_BATTERY_CHARGING_DELAY);
+      }
+
+      //Check if JEITA check is enabled
+      if (chg_param_ptr->enable_jeita_hard_limit_check == TRUE)
+      {
+         //Read JEITA condition
+         err_flag |= pm_smbchg_bat_if_irq_status(device_index, PM_SMBCHG_BAT_IF_HOT_BAT_HARD_LIM,  PM_IRQ_STATUS_RT, &hot_bat_hard_lim_rt_sts );
+         err_flag |= pm_smbchg_bat_if_irq_status(device_index, PM_SMBCHG_BAT_IF_COLD_BAT_HARD_LIM, PM_IRQ_STATUS_RT, &cold_bat_hard_lim_rt_sts);
+         if ( err_flag != PM_ERR_FLAG__SUCCESS )  { break;}  
+
+         if ( ( hot_bat_hard_lim_rt_sts  == TRUE ) || (cold_bat_hard_lim_rt_sts == TRUE) )  
+         {
+            continue;  // Stay in this loop as long as JEITA Hard Hot/Cold limit is exceeded
+         }
+      }
+
+	if (!charge_in_progress)
+      dprintf(INFO,"APPSBL Weak Battery charging: Start\n");
+
+      charge_in_progress = true;
+#if DISPLAY_SPLASH_SCREEN
+      if (!display_initialized)
+         target_display_init(panel_name);
+      display_initialized = true;
+#endif
+      /* Wait for 500 msecs before looking for vbat */
+      udelay(PM_WEAK_BATTERY_CHARGING_DELAY); //500ms
+
+
+      //Check if Charging in progress
+      err_flag |= pm_smbchg_chgr_get_chgr_sts(device_index, &vbatt_chging_status);
+      if ( err_flag != PM_ERR_FLAG__SUCCESS )  { break;}
+
+      if ( vbatt_chging_status.charging_type == PM_SMBCHG_CHGR_NO_CHARGING )
+      {
+         if (charger_path == PM_SMBCHG_USB_CHGPTH_PWR_PATH__DC_CHARGER) 
+         {
+            //Delay for 3.5sec for charging to begin, and check charging status again prior to shutting down.
+            udelay(PM_WIPOWER_START_CHARGING_DELAY); //3500ms 
+
+            err_flag |= pm_smbchg_chgr_get_chgr_sts(device_index, &vbatt_chging_status);
+            if ( err_flag != PM_ERR_FLAG__SUCCESS )  { break;}
+
+            if ( vbatt_chging_status.charging_type == PM_SMBCHG_CHGR_NO_CHARGING )
+            {
+               boot_log_message("ERROR: Charging is NOT in progress: Shutting Down\n");
+               shutdown_device();
+            }
+         }
+         else
+         {
+            boot_log_message("ERROR: Charging is NOT in progress: Shutting Down\n");
+            shutdown_device();
+         }
+      }
+      else
+      {
+#ifdef DEBUG_CHARGER
+          dprintf(INFO, "APPSBL Charging in Progress....\n");
+#endif
+          chg_prog_message_flag = TRUE;
+      }
+   }//while
+
+
+   if (charger_path == PM_SMBCHG_USB_CHGPTH_PWR_PATH__DC_CHARGER) 
+   {
+      //If battery is good, Toggle SHDN_N_CLEAR_CMD Reg:  Set 0x1340[6] to  1 and then  0
+      err_flag = pm_smbchg_usb_chgpth_set_cmd_il(device_index, PM_SMBCHG_USBCHGPTH_CMD_IL__SHDN_N_CLEAR_CMD, TRUE);
+      err_flag = pm_smbchg_usb_chgpth_set_cmd_il(device_index, PM_SMBCHG_USBCHGPTH_CMD_IL__SHDN_N_CLEAR_CMD, FALSE);
+   }
+   
+   if (charge_in_progress)
+     dprintf(INFO, "APPSBL Weak Battery Charging: Done \n");
+
+   charge_in_progress = false;
+   return err_flag; 
+}
+
+
+
+pm_err_flag_type pm_smbchg_get_charger_path(uint32 device_index, pm_smbchg_usb_chgpth_pwr_pth_type* charger_path)
+{
+   pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+   boolean usbin_uv_status = TRUE;
+   boolean usbin_ov_status = TRUE;
+   boolean dcbin_uv_status = TRUE;
+   boolean dcbin_ov_status = TRUE;
+
+   //DC charger present, if DCIN_UV_RT_STS and DCIN_UV_RT_STS status is 0 (INT_RT_STS : 0x1410[1] and [0] == 0)
+   err_flag |= pm_smbchg_dc_chgpth_irq_status(device_index, PM_SMBCHG_DC_CHGPTH_DCBIN_UV, PM_IRQ_STATUS_RT, &dcbin_uv_status);
+   err_flag |= pm_smbchg_dc_chgpth_irq_status(device_index, PM_SMBCHG_DC_CHGPTH_DCBIN_OV, PM_IRQ_STATUS_RT, &dcbin_ov_status);
+   //USB charger present, if USBIN_UV_RT_STS and USBIN_OV_RT_STS status is 0 ( INT_RT_STS : 0x1310[1] and [0] == 0)
+   err_flag |= pm_smbchg_usb_chgpth_irq_status(device_index, PM_SMBCHG_USB_CHGPTH_USBIN_UV, PM_IRQ_STATUS_RT, &usbin_uv_status);
+   err_flag |= pm_smbchg_usb_chgpth_irq_status(device_index, PM_SMBCHG_USB_CHGPTH_USBIN_OV, PM_IRQ_STATUS_RT, &usbin_ov_status);
+
+   if((dcbin_uv_status == FALSE) && (dcbin_ov_status == FALSE))
+   {
+      *charger_path = PM_SMBCHG_USB_CHGPTH_PWR_PATH__DC_CHARGER;
+   }
+   else if((usbin_uv_status == FALSE) && (usbin_ov_status == FALSE))
+   {
+      *charger_path = PM_SMBCHG_USB_CHGPTH_PWR_PATH__USB_CHARGER;
+   }
+   else
+   {
+      *charger_path = PM_SMBCHG_USB_CHGPTH_PWR_PATH__INVALID;
+   }
+
+   return err_flag;
+}
+
+
+
+pm_err_flag_type pm_appsbl_chg_config_vbat_low_threshold(uint32 device_index, pm_smbchg_specific_data_type *chg_param_ptr)
+{
+   pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+
+   pm_dbc_bootup_volt_threshold = chg_param_ptr->dbc_bootup_volt_threshold.vlowbatt_threshold;
+
+   if (chg_param_ptr->dbc_bootup_volt_threshold.enable_config == PM_ENABLE_CONFIG)
+   {
+   if (pm_dbc_bootup_volt_threshold  >= PM_SMBCHG_BAT_IF_LOW_BATTERY_THRESH_INVALID)
+   {
+      err_flag = PM_ERR_FLAG__INVALID_VBATT_INDEXED;
+      return err_flag;
+   }
+
+      err_flag = pm_smbchg_bat_if_set_low_batt_volt_threshold(device_index, pm_dbc_bootup_volt_threshold);
+#ifdef DEBUG_CHARGER
+      dprintf(INFO,"Configure Vlowbatt threshold");
+#endif
+   }
+
+   return err_flag;
+}
+
+#ifndef LK
+pm_err_flag_type pm_sbl_config_fg_sram(uint32 device_index)
+   {
+  pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+  FgSramAddrDataEx_type *sram_data_ptr = NULL;
+  FgSramAddrDataEx_type pm_sbl_sram_data[SBL_PACKED_SRAM_CONFIG_SIZE];
+  pm_model_type pmic_model = PMIC_IS_INVALID;
+  boolean sram_enable_config_flag = FALSE;
+
+  //Check if any SRAM configuration is needed
+  sram_data_ptr = (FgSramAddrDataEx_type*)pm_target_information_get_specific_info(PM_PROP_FG_SPECIFIC_DATA);
+  CORE_VERIFY_PTR(sram_data_ptr);
+  for (int i=0; i< SBL_SRAM_CONFIG_SIZE; i++) 
+  {
+     sram_enable_config_flag |= sram_data_ptr[i].EnableConfig;
+   }
+
+   
+  if (sram_enable_config_flag == TRUE )
+  {
+     pmic_model = pm_get_pmic_model(device_index);   //Check if PMIC exists
+     if ( (pmic_model != PMIC_IS_INVALID) || (pmic_model != PMIC_IS_UNKNOWN) )
+     {
+        //boot_log_message("BEGIN: Configure FG SRAM");
+
+        //Pre-process JEITA data
+        pm_sbl_sram_data[0].SramAddr = sram_data_ptr[0].SramAddr;
+        pm_sbl_sram_data[0].SramData = (sram_data_ptr[3].SramData  << 24)| 
+                                       (sram_data_ptr[2].SramData  << 16)|   
+                                       (sram_data_ptr[1].SramData  <<  8)|   
+                                        sram_data_ptr[0].SramData;
+        pm_sbl_sram_data[0].DataOffset = sram_data_ptr[0].DataOffset;  
+        pm_sbl_sram_data[0].DataSize = 4;
+        //Set JEITA threshould configuration flag
+        pm_sbl_sram_data[0].EnableConfig = sram_data_ptr[0].EnableConfig | sram_data_ptr[1].EnableConfig | 
+                                           sram_data_ptr[2].EnableConfig | sram_data_ptr[3].EnableConfig;   
+
+        //Pre-process Thermistor Beta Data
+        //thremistor_c1_coeff
+        pm_sbl_sram_data[1]  = sram_data_ptr[4];
+
+        //thremistor_c2_coeff and thremistor_c3_coeff
+        pm_sbl_sram_data[2].SramAddr   = sram_data_ptr[5].SramAddr;
+        pm_sbl_sram_data[2].SramData   = (sram_data_ptr[6].SramData << 16) | sram_data_ptr[5].SramData;
+        pm_sbl_sram_data[2].DataOffset = sram_data_ptr[5].DataOffset;  
+        pm_sbl_sram_data[2].DataSize = 4;
+        pm_sbl_sram_data[2].EnableConfig   = sram_data_ptr[5].EnableConfig;
+
+        //Configure SRAM Data
+        err_flag |= PmicFgSram_ProgBurstAccessEx(device_index, pm_sbl_sram_data, SBL_PACKED_SRAM_CONFIG_SIZE);
+
+        //Test: Read Back
+        //err_flag |= PmicFgSram_Dump(device_index, 0x0454, 0x0454);
+        //err_flag |= PmicFgSram_Dump(device_index, 0x0444, 0x0448);
+        //err_flag |= PmicFgSram_Dump(device_index, 0x0448, 0x0452);
+        
+        //boot_log_message("END: Configure FG SRAM");
+     }
+  }
+
+   return err_flag; 
+}
+
+
+
+
+pm_err_flag_type pm_sbl_config_chg_parameters(uint32 device_index)
+{
+   pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+   static pm_smbchg_specific_data_type *chg_param_ptr;
+   
+   if(chg_param_ptr == NULL)
+   {
+      chg_param_ptr = (pm_smbchg_specific_data_type*)pm_target_information_get_specific_info(PM_PROP_SMBCHG_SPECIFIC_DATA);
+      CORE_VERIFY_PTR(chg_param_ptr);
+   }
+
+   //Vlowbatt Threshold  
+   //  - Done on:  pm_sbl_chg_config_vbat_low_threshold()
+   
+   //Charger Path Input Priority 
+   if (chg_param_ptr->chgpth_input_priority.enable_config == PM_ENABLE_CONFIG)
+   {
+      pm_smbchg_chgpth_input_priority_type chgpth_priority = chg_param_ptr->chgpth_input_priority.chgpth_input_priority;
+      if (chgpth_priority < PM_SMBCHG_USBCHGPTH_INPUT_PRIORITY_INVALID) 
+      {
+          err_flag |= pm_smbchg_chgpth_set_input_priority(device_index, chgpth_priority);
+      }
+      else
+      {
+         err_flag |= PM_ERR_FLAG__INVALID_PARAMETER;
+      }
+   }
+
+
+   //Battery Missing Detection Source 
+   if (chg_param_ptr->bat_miss_detect_src.enable_config == PM_ENABLE_CONFIG)
+   {
+      pm_smbchg_bat_miss_detect_src_type batt_missing_det_src = chg_param_ptr->bat_miss_detect_src.bat_missing_detection_src;
+      if (batt_missing_det_src < PM_SMBCHG_BAT_IF_BAT_MISS_DETECT_SRC_INVALID) 
+      {
+          err_flag |= pm_smbchg_bat_if_set_bat_missing_detection_src(device_index, batt_missing_det_src);
+      }
+      else
+      {
+         err_flag |= PM_ERR_FLAG__INVALID_PARAMETER;
+      }
+   }
+
+   //WDOG Timeout      
+   if (chg_param_ptr->wdog_timeout.enable_config == PM_ENABLE_CONFIG)
+   {
+      pm_smbchg_wdog_timeout_type wdog_timeout = chg_param_ptr->wdog_timeout.wdog_timeout;
+      if (wdog_timeout < PM_SMBCHG_MISC_WD_TMOUT_INVALID) 
+      {
+          err_flag |= pm_smbchg_misc_set_wdog_timeout(device_index, wdog_timeout);
+      }
+      else
+      {
+         err_flag |= PM_ERR_FLAG__INVALID_PARAMETER;
+      }
+   }
+
+
+   //Enable WDOG                      
+   if (chg_param_ptr->enable_wdog.enable_config == PM_ENABLE_CONFIG)
+   {
+      pm_smbchg_wdog_timeout_type enable_smbchg_wdog = chg_param_ptr->enable_wdog.enable_wdog;
+      err_flag |= pm_smbchg_misc_enable_wdog(device_index, enable_smbchg_wdog);
+   }
+
+
+   //FAST Charging Current            
+   if (chg_param_ptr->fast_chg_i.enable_config == PM_ENABLE_CONFIG)
+   {
+      uint32 fast_chg_i_ma = chg_param_ptr->fast_chg_i.fast_chg_i_ma;
+      if ((fast_chg_i_ma >= 300) && (fast_chg_i_ma <= 3000) )
+      {
+          err_flag |= pm_smbchg_chgr_set_fast_chg_i(device_index, fast_chg_i_ma);
+      }
+      else
+      {
+         err_flag |= PM_ERR_FLAG__INVALID_PARAMETER;
+      }
+   }
+
+   //Pre Charge Current               
+   if (chg_param_ptr->pre_chg_i.enable_config == PM_ENABLE_CONFIG)
+   {
+      uint32 pre_chg_i_ma = chg_param_ptr->pre_chg_i.pre_chg_i_ma;
+      if ((pre_chg_i_ma >= 100) && (pre_chg_i_ma <= 550) )
+      {
+          err_flag |= pm_smbchg_chgr_set_pre_chg_i(device_index, pre_chg_i_ma);
+      }
+      else
+      {
+         err_flag |= PM_ERR_FLAG__INVALID_PARAMETER;
+      }
+   }
+
+   //Pre to Fast Charge Current       
+   if (chg_param_ptr->pre_to_fast_chg_theshold_mv.enable_config == PM_ENABLE_CONFIG)
+   {
+      uint32 p2f_chg_mv = chg_param_ptr->pre_to_fast_chg_theshold_mv.pre_to_fast_chg_theshold_mv;
+      if ((p2f_chg_mv >= 2400) && (p2f_chg_mv <= 3000)  )
+      {
+          err_flag |= pm_smbchg_chgr_set_p2f_threshold(device_index, p2f_chg_mv);
+      }
+      else
+      {
+         err_flag |= PM_ERR_FLAG__INVALID_PARAMETER;
+      }
+   }
+
+   //Float Voltage : 3600mV to 4500 mv                   
+   if (chg_param_ptr->float_volt_theshold_mv.enable_config == PM_ENABLE_CONFIG)
+   {
+      uint32 float_volt_mv = chg_param_ptr->float_volt_theshold_mv.float_volt_theshold_mv;
+      if ((float_volt_mv >= 3600) && (float_volt_mv <= 4500))
+      {
+          err_flag |= pm_smbchg_chgr_set_float_volt(device_index, float_volt_mv);
+      }
+      else
+      {
+         err_flag |= PM_ERR_FLAG__INVALID_PARAMETER;
+      }
+   }
+
+
+   //USBIN Input Current Limit  :Valid value is 300 to 3000mAmp      
+   if (chg_param_ptr->usbin_input_current_limit.enable_config == PM_ENABLE_CONFIG)
+   {
+      uint32 usbin_i_limit_ma = chg_param_ptr->usbin_input_current_limit.usbin_input_current_limit;
+      if ((usbin_i_limit_ma >= 300) && (usbin_i_limit_ma <= 3000))
+      {
+          err_flag |= pm_smbchg_usb_chgpth_set_usbin_current_limit(device_index, usbin_i_limit_ma);
+      }
+      else
+      {
+         err_flag |= PM_ERR_FLAG__INVALID_PARAMETER;
+      }
+   }
+
+
+   //DCIN Input Current Limit : valid range is 300 to 2000 mAmp         
+   if (chg_param_ptr->dcin_input_current_limit.enable_config == PM_ENABLE_CONFIG)
+   {
+      uint32 dcin_i_limit_ma = chg_param_ptr->dcin_input_current_limit.dcin_input_current_limit;
+      if ((dcin_i_limit_ma >= 300) && (dcin_i_limit_ma <= 3200))
+      {
+          err_flag |= pm_smbchg_dc_chgpth_set_dcin_current_limit(device_index, dcin_i_limit_ma);
+      }
+      else
+      {
+         err_flag |= PM_ERR_FLAG__INVALID_PARAMETER;
+      }
+   }
+
+
+   return err_flag; 
+}
+#endif
+
+bool pm_appsbl_charging_in_progress()
+{
+	return charge_in_progress;
+}
+
+bool pm_appsbl_display_init_done()
+{
+	return display_initialized;
+}
+
+pm_err_flag_type pm_appsbl_set_dcin_suspend(uint32_t device_index)
+{
+	pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+
+	err_flag = pm_smbchg_usb_chgpth_set_cmd_il(device_index, PM_SMBCHG_USBCHGPTH_CMD_IL__DCIN_SUSPEND, TRUE);
+
+	return err_flag;
+}
diff --git a/dev/pmic/pmi8994/pm_comm_spmi_lite.c b/dev/pmic/pmi8994/pm_comm_spmi_lite.c
new file mode 100644
index 0000000..5a41e4b
--- /dev/null
+++ b/dev/pmic/pmi8994/pm_comm_spmi_lite.c
@@ -0,0 +1,221 @@
+/* Copyright (c) 2015, The Linux Foundation. All rights reserved.
+
+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 Linux Foundation nor the names of its
+      contributors may be used to endorse or promote products derived
+      from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*===========================================================================
+
+INCLUDE FILES FOR MODULE
+
+===========================================================================*/
+
+#include <pm8x41.h>
+#include <debug.h>
+#include <sys/types.h>
+#include "pm_err_flags.h"
+#include "pm_resources_and_types.h"
+#include "pm_comm.h"
+#include <spmi.h>
+
+#define PM_MAX_REGS   0xFFFF
+
+typedef uint32_t SpmiBus_ResultType;
+
+enum spmi_result
+{
+    SPMI_BUS_SUCCESS,
+};
+
+pm_err_flag_type pm_comm_read_byte(uint32 slave_id, uint32 addr, uint8* data, uint8 priority)
+{
+    pm_err_flag_type     err = PM_ERR_FLAG__SUCCESS ;
+    SpmiBus_ResultType   spmi_result = SPMI_BUS_SUCCESS;
+    
+    if(TRUE == spmi_initialized())
+    {
+        /* check for out-of-bounds index */
+        if ( addr > PM_MAX_REGS)
+        { 
+            err = PM_ERR_FLAG__SPMI_OPT_ERR ;
+        }
+        else
+        {
+            spmi_result = spmi_reg_read(slave_id, addr, data, priority);
+
+            if ( spmi_result != SPMI_BUS_SUCCESS ) { err = PM_ERR_FLAG__SPMI_OPT_ERR ; }
+        }
+    }
+    else
+    {
+        err = PM_ERR_FLAG__SPMI_OPT_ERR ;
+    }
+
+    return err ;
+}
+
+pm_err_flag_type pm_comm_read_byte_mask(uint32 slave_id, uint32 addr, uint8 mask, uint8* data, uint8 priority)
+{
+    pm_err_flag_type     err = PM_ERR_FLAG__SUCCESS ;
+   
+    err = spmi_reg_read(slave_id, addr, data, priority);
+    if ( err != PM_ERR_FLAG__SUCCESS ) 
+    { 
+        err = PM_ERR_FLAG__SPMI_OPT_ERR ; 
+    }
+    else 
+    { 
+        *data = *data & mask; 
+    }
+
+    
+    return err ;
+}
+
+
+
+pm_err_flag_type pm_comm_write_byte(uint32 slave_id, uint32 addr, uint8 data, uint8 priority)
+{
+    pm_err_flag_type     err = PM_ERR_FLAG__SUCCESS ;
+    SpmiBus_ResultType   spmi_result = SPMI_BUS_SUCCESS;
+    
+    if(TRUE == spmi_initialized())
+    {
+        /* check for out-of-bounds index */
+        if ( addr > PM_MAX_REGS)
+        { 
+            err = PM_ERR_FLAG__SPMI_OPT_ERR ;
+        }
+        else
+        {
+            spmi_result = spmi_reg_write(slave_id, addr, &data, priority);
+
+            if ( spmi_result != SPMI_BUS_SUCCESS ) { err = PM_ERR_FLAG__SPMI_OPT_ERR ; }
+        }
+    }
+    else
+    {
+        err = PM_ERR_FLAG__SPMI_OPT_ERR ;
+    }
+
+    return err ;
+}
+
+pm_err_flag_type pm_comm_write_byte_mask(uint32 slave_id, uint32 addr, uint8 mask, uint8 value, uint8 priority)
+{
+    pm_err_flag_type         err = PM_ERR_FLAG__SUCCESS ;
+    SpmiBus_ResultType       spmi_result = SPMI_BUS_SUCCESS;
+    uint8                    data = 0 ;
+
+    if(TRUE == spmi_initialized())
+    {
+        /* check for out-of-bounds index */
+        if ( addr > PM_MAX_REGS)
+        { 
+            err = PM_ERR_FLAG__SPMI_OPT_ERR ;
+        }
+        else
+        {
+             /* Read the data from the SPMI and leave all the bits other than the mask to the previous state */
+            spmi_result = spmi_reg_read(slave_id, addr, &data, priority);
+
+            if ( spmi_result == SPMI_BUS_SUCCESS )
+            {
+                data &= (~mask) ; 
+                data |= (value & mask) ;
+
+                spmi_result = spmi_reg_write(slave_id, addr, &data, priority);
+
+                if ( spmi_result != SPMI_BUS_SUCCESS ) { err = PM_ERR_FLAG__SPMI_OPT_ERR ; }
+            }
+        }
+    }
+    else
+    {
+        err = PM_ERR_FLAG__SPMI_OPT_ERR ;
+    }
+
+
+    return err ;
+}
+
+#ifndef LK
+pm_err_flag_type pm_comm_write_byte_array(uint32 slave_id, uint16 addr, uint32 num_bytes, uint8* data, uint8 priority) 
+{
+    pm_err_flag_type     err = PM_ERR_FLAG__SUCCESS ;
+    SpmiBus_ResultType   spmi_result = SPMI_BUS_SUCCESS;
+
+    if(TRUE == spmi_initialized)
+    {
+        /* check for out-of-bounds index */
+        if ( addr > PM_MAX_REGS)
+        { 
+            err = PM_ERR_FLAG__SPMI_OPT_ERR ;
+        }
+        else
+        {
+            spmi_result = SpmiBus_WriteLong(slave_id, (SpmiBus_AccessPriorityType)priority, addr, data, num_bytes);
+
+            if ( spmi_result != SPMI_BUS_SUCCESS ) { err = PM_ERR_FLAG__SPMI_OPT_ERR ; }
+        }
+    }
+    else
+    {
+        err = PM_ERR_FLAG__SPMI_OPT_ERR ;
+    }
+
+    return err ;
+}
+
+pm_err_flag_type pm_comm_read_byte_array (uint32 slave_id, uint16 addr, uint32 num_bytes, uint8* data, uint8 priority) 
+{
+    pm_err_flag_type     err = PM_ERR_FLAG__SUCCESS ;
+    SpmiBus_ResultType   spmi_result = SPMI_BUS_SUCCESS;
+    /* Read the data from the SPMI */
+    uint32               dataReadLength = 0;
+
+   
+    if(TRUE == spmi_initialized)
+    {
+        /* check for out-of-bounds index */
+        if ( addr > PM_MAX_REGS)
+        { 
+            err = PM_ERR_FLAG__SPMI_OPT_ERR ;
+        }
+        else
+        {
+            spmi_result = SpmiBus_ReadLong(slave_id, (SpmiBus_AccessPriorityType)priority, addr, data, num_bytes, &dataReadLength);
+
+            if ( spmi_result != SPMI_BUS_SUCCESS ) { err = PM_ERR_FLAG__SPMI_OPT_ERR ; }
+        }
+    }
+    else
+    {
+        err = PM_ERR_FLAG__SPMI_OPT_ERR ;
+    }
+
+    return err ;
+}
+#endif
diff --git a/dev/pmic/pmi8994/pm_config_target.c b/dev/pmic/pmi8994/pm_config_target.c
new file mode 100644
index 0000000..6e25a79
--- /dev/null
+++ b/dev/pmic/pmi8994/pm_config_target.c
@@ -0,0 +1,252 @@
+/* Copyright (c) 2015, The Linux Foundation. All rights reserved.
+
+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 Linux Foundation nor the names of its
+      contributors may be used to endorse or promote products derived
+      from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*===========================================================================
+
+                     INCLUDE FILES 
+
+===========================================================================*/
+#include "pm_smbchg_driver.h"
+#include "pm_app_smbchg.h"
+#include "pm_smbchg_bat_if.h"
+#include <sys/types.h>
+
+/* 2 slave IDs per PMIC device. */
+#define PM_MAX_SLAVE_ID          2
+
+ /************************************************ DRIVER DATA *********************************/
+ #ifndef LK
+//PM8994,PMi8994,PM8004
+uint32 num_of_ldo[]        = {32, 1, 1};
+uint32 num_of_smps[]       = {12, 3, 5};
+uint32 num_of_gpio[]       = {22,10, 0};
+uint32 num_of_mpp[]        = {8, 4, 4};
+uint32 num_of_rtc[]        = {1, 0, 0};
+uint32 num_of_megaxo[]     = {1, 0, 0};
+uint32 num_of_boost[]      = {0, 1, 0}; 
+uint32 num_of_vs[]         = {2, 0, 0};
+uint32 num_of_lpg_chan[]   = {12, 4,0};
+uint32 num_of_pwron[]      = {1, 1, 1};
+uint32 num_of_misc[]       = {1, 0, 0};
+uint32 num_of_clk_buffer[] = {13,13,0};
+uint32 num_of_rgb[]        = {0,1,0};
+uint32 num_of_wled[]       = {0,1,0};
+uint32 num_of_smbchg[]     = {0,1,0};
+uint32 num_of_fg[]         = {0,1,0};
+uint32 num_of_ibb[]        = {0,1,0};
+uint32 num_of_lab[]        = {0,1,0};
+uint32 num_of_vib[]        = {0,1,0};
+uint32 num_of_pbs_client[] = {16,12,8};
+pm_mpp_specific_info_type
+mpp_specific[1] =
+{
+   {0x9E0, 4}
+};
+
+pm_lpg_specific_info_type lpg_specific[1] =  
+{
+    {24}
+};
+
+pm_vib_specific_data_type
+vib_specific[1] = 
+{
+  {1200, 2000}
+};
+#endif
+pm_smbchg_specific_data_type
+smbchg_specific_data[1] = {
+{
+      //Configuration Value,                             Enable config
+      {PM_SMBCHG_BAT_IF_LOW_BATTERY_THRESH_3P25,         PM_DISABLE_CONFIG },  //Vlowbatt Threshold
+      {PM_SMBCHG_USBCHGPTH_INPUT_PRIORITY_USBIN,         PM_DISABLE_CONFIG },  //Charger Path Input Priority
+      {PM_SMBCHG_BAT_IF_BAT_MISS_DETECT_SRC_BMD_PIN,     PM_DISABLE_CONFIG },  //Battery Missing Detection Source
+      {PM_SMBCHG_MISC_WD_TMOUT_18S,                      PM_DISABLE_CONFIG },  //WDOG Timeout
+      {FALSE,                                            PM_DISABLE_CONFIG },  //Enable WDOG
+      {1000,                                             PM_DISABLE_CONFIG },  //FAST Charging Current
+      {250,                                              PM_DISABLE_CONFIG },  //PRE Charge Current
+      {3000,                                             PM_DISABLE_CONFIG },  //PRE to Fast Charge Current
+      {4200,                                             PM_DISABLE_CONFIG },  //Float Voltage
+      {2100,                                             PM_DISABLE_CONFIG },  //USBIN Input Current Limit
+      {1000,                                             PM_DISABLE_CONFIG },  //DCIN Input Current Limit
+      3600,                                                                    //bootup_battery_theshold_mv
+      3800,                                                                    //wipowr bootup battery thesholdmv
+      FALSE,                                                                   //Enable/Disable JEITA Hard Temp Limit Check in SBL
+   }
+};
+
+
+chg_range_data_type chg_range_data[1] = {
+   {
+      //batt_missing_detect_time_range
+      { 80, 160, 320, 640 },
+      //DCIN_range
+      { 300, 400, 450, 475, 500, 550, 600, 650, 700, 900, 950, 1000, 1100, 1200, 1400, 1450, 1500, 1600, 1800, 1850, 1880, 1910, 1930, 1950, 1970, 2000 },
+      //USBIN_range
+      { 300, 400, 450, 475, 500, 550, 600, 650, 700, 900, 950, 1000, 1100, 1200, 1400, 1450, 1500, 1600, 1800, 1850, 1880, 1910, 1930, 1950, 1970, 2000, 2050, 2100, 2300, 2400, 2500, 3000 }
+   }
+}; 
+
+#ifndef LK
+//By default, configuration of the FG params is NOT enabled. since the last parameter(EnableConfig) = 0
+//To enable configuration, set EnableConfig = 1
+FgSramAddrDataEx_type
+fg_sram_data[SBL_SRAM_CONFIG_SIZE] = 
+{
+     //JEITA Thresholds:
+    //SramAddr,  SramData, DataOffset, DataSize, EnableConfig
+    { 0x0454,     0x23,     0,          1,        PM_DISABLE_CONFIG }, //JEITA Soft Cold Threshold:  default = 0x23
+    { 0x0454,     0x46,     1,          1,        PM_DISABLE_CONFIG }, //JEITA Soft Hot  Threshold:  default = 0x46
+    { 0x0454,     0x1E,     2,          1,        PM_DISABLE_CONFIG }, //JEITA Hard Cold Threshold:  default = 0x1E
+    { 0x0454,     0x48,     3,          1,        PM_DISABLE_CONFIG }, //JEITA hard Hot  Threshold:  default = 0x48
+    
+    //Thermistor Beta Coefficents:    
+    { 0x0444,     0x86D8,   2,          2,        PM_DISABLE_CONFIG }, //thremistor_c1_coeff:  default = 0x86D8;
+    { 0x0448,     0x50F1,   0,          2,        PM_DISABLE_CONFIG }, //thremistor_c2_coeff:  default = 0x50F1;
+    { 0x0448,     0x3C11,   2,          2,        PM_DISABLE_CONFIG }  //thremistor_c3_coeff:  default = 0x3C11;  
+};
+
+pm_pbs_info_data_type pm_pbs_info_data_a =
+{
+    256,                /* PBS MEMORY Size */
+    PM_PBS_INFO_IN_OTP, /* Place where PBS Info stored */
+};
+
+pm_pbs_info_data_type pm_pbs_info_data_b =
+{
+    128,                /* PBS MEMORY Size */
+    PM_PBS_INFO_IN_OTP, /* Place where PBS Info stored */
+};
+
+pm_pbs_info_data_type pm_pbs_info_data_c =
+{
+    256,                /* PBS MEMORY Size */
+    PM_PBS_INFO_IN_OTP, /* Place where PBS Info stored */
+};
+
+pm_pbs_info_data_type *pm_pbs_info_data[] = {&pm_pbs_info_data_a, &pm_pbs_info_data_b, &pm_pbs_info_data_c};
+
+/* max_num_seqs, ram_start_addr, poff_trig_id, poff_otp_addr, warmreset_trig_id, warmreset_otp_addr */
+pm_pbs_custom_seq_data_type pbs_custom_seq_data_a = {2, 0x07DC, 3, 0x000C, 2, 0x0008};
+
+/* max_num_seqs, ram_start_addr, poff_trig_id, poff_otp_addr, warmreset_trig_id, warmreset_otp_addr */
+pm_pbs_custom_seq_data_type pbs_custom_seq_data_b = {33, 0x0554, 2, 0x0008, 7, 0x001C};
+ 
+pm_pbs_custom_seq_data_type* pbs_custom_seq_data[] = 
+{
+   &pbs_custom_seq_data_a,
+   &pbs_custom_seq_data_b,
+   NULL,
+};
+
+/* PPID, channel mapping and ownership.  */
+
+const uint8 pm_periph_bitmap[][PM_MAX_SLAVE_ID][PM_MAX_BITMAP_ENTRIES] =
+{
+    /* PM8994*/
+    {
+        {
+          0x72, 0x07, 0x00, 0x10,
+          0x10, 0x11, 0x16, 0x00,
+          0x00, 0x00, 0x37, 0x3f,
+          0x07, 0x00, 0xff, 0xff,
+          0x01, 0x00, 0x00, 0x00,
+          0xff, 0x00, 0x00, 0x00,
+          0xff, 0xff, 0x3f, 0x00,
+          0x00, 0x00, 0x00, 0x40,
+        },
+        {
+          0x00, 0x00, 0xf1, 0xff,
+          0xff, 0xff, 0xff, 0x00,
+          0xff, 0xff, 0xff, 0xff,
+          0x00, 0x00, 0x00, 0x00,
+          0x03, 0x00, 0x00, 0x00,
+          0x00, 0x00, 0x7f, 0x10,
+          0x00, 0x00, 0x00, 0x00,
+          0x00, 0x00, 0x00, 0x00,
+        },
+    },
+    /* PMI8994*/
+    {
+        {
+          0x72, 0x03, 0x5f, 0x18,
+          0x00, 0x10, 0x02, 0x00,
+          0x1f, 0x00, 0x00, 0x02,
+          0x00, 0x00, 0xff, 0x1f,
+          0x00, 0x00, 0x00, 0x00,
+          0x0f, 0x00, 0x00, 0x00,
+          0xff, 0x03, 0x00, 0x00,
+          0x00, 0x00, 0x00, 0x40,
+        },
+        {
+          0x00, 0x00, 0xf1, 0x1f,
+          0x00, 0x00, 0x00, 0x00,
+          0x01, 0x00, 0x00, 0x00,
+          0x00, 0x00, 0x00, 0x00,
+          0x00, 0x00, 0x00, 0x00,
+          0x07, 0x00, 0x1f, 0x00,
+          0x01, 0x00, 0x09, 0x53,
+          0x00, 0x00, 0x00, 0x00,
+        }
+    },
+  /* PM8004 */
+    {
+        {
+          0x00, 0x03, 0x00, 0x00,
+          0x10, 0x10, 0x00, 0x00,
+          0x00, 0x00, 0x00, 0x02,
+          0x00, 0x00, 0xff, 0x01,
+          0x00, 0x00, 0x00, 0x00,
+          0x0f, 0x00, 0x00, 0x00,
+          0x00, 0x00, 0x00, 0x00,
+          0x00, 0x00, 0x00, 0x40,
+        },
+        {
+          0x00, 0x00, 0xf1, 0xe3,
+          0x07, 0x00, 0x00, 0x00,
+          0x01, 0x00, 0x00, 0x00,
+          0x00, 0x00, 0x00, 0x00,
+          0x00, 0x00, 0x00, 0x00,
+          0x00, 0x00, 0x00, 0x00,
+          0x00, 0x00, 0x00, 0x00,
+          0x00, 0x00, 0x00, 0x00,
+
+        }
+    }
+};
+#endif
+
+void *pm_target_information_get_specific_info()
+{
+	return (void *) smbchg_specific_data;
+};
+
+void *pm_target_chg_range_data()
+{
+	return (void *) chg_range_data;
+}
diff --git a/dev/pmic/pmi8994/pm_fg_adc_usr.c b/dev/pmic/pmi8994/pm_fg_adc_usr.c
new file mode 100644
index 0000000..e7e01fc
--- /dev/null
+++ b/dev/pmic/pmi8994/pm_fg_adc_usr.c
@@ -0,0 +1,1268 @@
+/* Copyright (c) 2015, The Linux Foundation. All rights reserved.
+
+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 Linux Foundation nor the names of its
+      contributors may be used to endorse or promote products derived
+      from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#include "pm_fg_adc_usr.h"
+#include "pm_fg_driver.h"
+#include "pm_smbchg_driver.h"
+#include "pm_err_flags.h"
+#include "pm_comm.h"
+#include <sys/types.h>
+
+/*===========================================================================
+                        TYPE DEFINITIONS 
+===========================================================================*/
+#define RAW_IBAT_LSB          39
+#define RAW_VBAT_LSB          39
+#define OFFSET_LSB_NUM        12   //Offset LSB Numerator
+#define OFFSET_LSB_DENOM      10   //Offset LSB Denominator
+#define GAIN_LSB_DENOM       400  // Gain LSB is 0.32/128 = 1/400
+
+/*===========================================================================
+                         FUNCTION DEFINITIONS
+===========================================================================*/
+/**
+* @brief This function grant access to FG ADC User access *
+* @details
+* This function grant access to FG ADC User access 
+* 
+* @param[in] pm_fg_data_type Self
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_grant_sec_access(pm_fg_data_type *fg_adc_usr_ptr)
+{
+
+  pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+
+  if(NULL == fg_adc_usr_ptr)
+  {
+    err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+  }
+  else
+  {
+    pm_register_address_type sec_access = fg_adc_usr_ptr->fg_register->adc_usr_register->base_address + fg_adc_usr_ptr->fg_register->adc_usr_register->fg_adc_usr_sec_access;
+    err_flag = pm_comm_write_byte(fg_adc_usr_ptr->comm_ptr->slave_id, sec_access, 0xA5, 0);
+  }
+
+  return err_flag;
+}
+
+/* Interrupt */
+pm_err_flag_type pm_fg_adc_usr_irq_enable(uint32 pmic_device, pm_fg_adc_usr_irq_type irq, boolean enable)
+{
+  pm_err_flag_type    err_flag    = PM_ERR_FLAG__SUCCESS;
+  pm_register_address_type irq_reg;
+  pm_register_data_type data = 1 << irq;
+
+  pm_fg_data_type* fg_adc_usr_ptr = pm_fg_get_data(pmic_device);
+
+  if (NULL == fg_adc_usr_ptr)
+  {
+    err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+  }
+  else if (irq >= PM_FG_ADC_USR_IRQ_INVALID)
+  {
+    err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+  }
+  else
+  {
+    if (enable)
+    {
+      irq_reg = fg_adc_usr_ptr->fg_register->adc_usr_register->base_address + fg_adc_usr_ptr->fg_register->adc_usr_register->int_en_set;
+    }
+    else
+    {
+      irq_reg = fg_adc_usr_ptr->fg_register->adc_usr_register->base_address + fg_adc_usr_ptr->fg_register->adc_usr_register->int_en_clr;
+    }
+
+    err_flag = pm_comm_write_byte(fg_adc_usr_ptr->comm_ptr->slave_id, irq_reg, data, 0);
+  }
+  return err_flag;
+}
+
+pm_err_flag_type pm_fg_adc_usr_irq_clear(uint32 pmic_device, pm_fg_adc_usr_irq_type irq)
+{
+  pm_err_flag_type    err_flag    = PM_ERR_FLAG__SUCCESS;
+  pm_register_data_type data = 1 << irq;
+  pm_register_address_type int_latched_clr;
+  pm_fg_data_type* fg_adc_usr_ptr = pm_fg_get_data(pmic_device);
+
+  if (NULL == fg_adc_usr_ptr)
+  {
+    err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+  }
+  else if (irq >= PM_FG_ADC_USR_IRQ_INVALID)
+  {
+    err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+  }
+  else
+  {
+    int_latched_clr = fg_adc_usr_ptr->fg_register->adc_usr_register->base_address + fg_adc_usr_ptr->fg_register->adc_usr_register->int_latched_clr;
+    err_flag = pm_comm_write_byte(fg_adc_usr_ptr->comm_ptr->slave_id, int_latched_clr, data, 0);
+  }
+
+  return err_flag;
+}
+
+
+pm_err_flag_type pm_fg_adc_usr_irq_set_trigger(uint32 pmic_device, pm_fg_adc_usr_irq_type irq, pm_irq_trigger_type trigger)
+{
+  pm_err_flag_type    err_flag    = PM_ERR_FLAG__SUCCESS;
+  uint8 mask = 1 << irq;
+  pm_register_data_type set_type, polarity_high, polarity_low;
+  pm_register_address_type int_set_type, int_polarity_high, int_polarity_low;
+
+  pm_fg_data_type* fg_adc_usr_ptr = pm_fg_get_data(pmic_device);
+
+  if (NULL == fg_adc_usr_ptr)
+  {
+    err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+  }
+  else if (irq >= PM_FG_ADC_USR_IRQ_INVALID)
+  {
+    err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+  }
+  else
+  {
+    int_set_type = fg_adc_usr_ptr->fg_register->adc_usr_register->base_address + fg_adc_usr_ptr->fg_register->adc_usr_register->int_set_type;
+    int_polarity_high = fg_adc_usr_ptr->fg_register->adc_usr_register->base_address + fg_adc_usr_ptr->fg_register->adc_usr_register->int_polarity_high;
+    int_polarity_low = fg_adc_usr_ptr->fg_register->adc_usr_register->base_address + fg_adc_usr_ptr->fg_register->adc_usr_register->int_polarity_low;
+
+    switch (trigger)
+    {
+    case PM_IRQ_TRIGGER_ACTIVE_LOW:
+        set_type = 0x00;
+        polarity_high = 0x00;
+        polarity_low = 0xFF;
+        break;
+    case PM_IRQ_TRIGGER_ACTIVE_HIGH:
+        set_type = 0x00;
+        polarity_high = 0xFF;
+        polarity_low = 0x00;
+        break;
+    case PM_IRQ_TRIGGER_RISING_EDGE:
+        set_type = 0xFF;
+        polarity_high = 0xFF;
+        polarity_low = 0x00;
+        break;
+    case PM_IRQ_TRIGGER_FALLING_EDGE:
+        set_type = 0xFF;
+        polarity_high = 0x00;
+        polarity_low = 0xFF;
+        break;
+    case PM_IRQ_TRIGGER_DUAL_EDGE:
+        set_type = 0xFF;
+        polarity_high = 0xFF;
+        polarity_low = 0xFF;
+        break;
+    default:
+        return PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+    }
+    err_flag = pm_comm_write_byte_mask(fg_adc_usr_ptr->comm_ptr->slave_id, int_set_type, mask, set_type, 0);
+    err_flag |= pm_comm_write_byte_mask(fg_adc_usr_ptr->comm_ptr->slave_id, int_polarity_high, mask, polarity_high, 0);
+    err_flag |= pm_comm_write_byte_mask(fg_adc_usr_ptr->comm_ptr->slave_id, int_polarity_low, mask, polarity_low, 0);
+  }
+
+  return err_flag;
+}
+
+
+pm_err_flag_type pm_fg_adc_usr_irq_status(uint32 pmic_device, pm_fg_adc_usr_irq_type irq, pm_irq_status_type type, boolean *status)
+{
+  pm_err_flag_type    err_flag    = PM_ERR_FLAG__SUCCESS;
+  pm_register_data_type data;
+  uint8 mask = 1 << irq;
+  pm_register_address_type int_sts;
+  pm_fg_data_type* fg_adc_usr_ptr = pm_fg_get_data(pmic_device);
+
+  if (NULL == fg_adc_usr_ptr)
+  {
+    err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+  }
+  else if (irq >= PM_FG_ADC_USR_IRQ_INVALID)
+  {
+    err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+  }
+  else
+  {
+    switch (type)
+    {
+    case PM_IRQ_STATUS_RT:
+      int_sts = fg_adc_usr_ptr->fg_register->adc_usr_register->base_address + fg_adc_usr_ptr->fg_register->adc_usr_register->int_rt_sts;
+        break;
+    case PM_IRQ_STATUS_LATCHED:
+      int_sts = fg_adc_usr_ptr->fg_register->adc_usr_register->base_address + fg_adc_usr_ptr->fg_register->adc_usr_register->int_latched_sts;
+        break;
+    case PM_IRQ_STATUS_PENDING:
+      int_sts = fg_adc_usr_ptr->fg_register->adc_usr_register->base_address + fg_adc_usr_ptr->fg_register->adc_usr_register->int_pending_sts;
+        break;
+    default:
+      return PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+    }
+
+    err_flag = pm_comm_read_byte_mask(fg_adc_usr_ptr->comm_ptr->slave_id, int_sts, mask, &data, 0);
+    *status = data ? TRUE : FALSE;
+  }
+
+  return err_flag;
+}
+
+
+
+/**
+* @brief This function enable/disables BMS Fule Gauge Algorithm BCL (battery current limiting s/w use) *
+* @details
+*  This function enable/disables BMS Fule Gauge Algorithm BCL (battery current limiting s/w use) 
+* 
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in]enable  enable/disable BCL monitoring
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_enable_bcl_monitoring(uint32 pmic_device, boolean enable)
+{
+  pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+  pm_register_address_type  fg_adc_usr_bcl_monitoring = 0x00;
+  uint8 mask = 0x80;
+
+  pm_fg_data_type* fg_adc_usr_ptr = pm_fg_get_data(pmic_device);
+
+  if (NULL == fg_adc_usr_ptr)
+  {
+    return PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+  }
+  else
+  {
+    fg_adc_usr_bcl_monitoring = fg_adc_usr_ptr->fg_register->adc_usr_register->base_address + fg_adc_usr_ptr->fg_register->adc_usr_register->fg_adc_usr_en_ctl;
+    err_flag = pm_comm_write_byte_mask(fg_adc_usr_ptr->comm_ptr->slave_id, fg_adc_usr_bcl_monitoring, mask, (pm_register_data_type)(enable << 7), 0);
+  }
+
+  return err_flag;
+
+}
+
+
+/**
+* @brief This function returns BMS Fule Gauge BCL (battery current limiting s/w use) *
+* @details
+* This function returns BMS Fule Gauge BCL (battery current limiting s/w use)  
+* 
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[out]enable  BCL monitoring sts
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_bcl_monitoring_sts(uint32 pmic_device, boolean *enable)
+{
+  pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+  pm_register_address_type  fg_adc_usr_bcl_monitoring = 0x00;
+  pm_register_data_type data = 0x00;
+  uint8 mask = 0x80;
+
+  pm_fg_data_type* fg_adc_usr_ptr = pm_fg_get_data(pmic_device);
+
+  if (NULL == fg_adc_usr_ptr)
+  {
+    return PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+  }
+  else
+  {
+    fg_adc_usr_bcl_monitoring = fg_adc_usr_ptr->fg_register->adc_usr_register->base_address + fg_adc_usr_ptr->fg_register->adc_usr_register->fg_adc_usr_en_ctl;
+    err_flag = pm_comm_read_byte_mask(fg_adc_usr_ptr->comm_ptr->slave_id, fg_adc_usr_bcl_monitoring, mask, &data, 0);
+    *enable = (boolean )data;
+  }
+
+  return err_flag;
+
+}
+
+
+/**
+* @brief This function returns of status of adc_usrery parameter update request *
+* @details
+*  This function returns of status of battery parameter update request (VBAT, IBAT, VBAT_CP, IBAT_CP, IBAT_MAX, IBAT_MAX_CP, VBAT_MIN, VBAT_MIN_CP) 
+* 
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in]enable  enable/disable BCL monitoring
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_access_bat_req_sts(uint32 pmic_device, boolean *enable)
+{
+
+  pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+  pm_register_address_type  fg_adc_usr_bat_req_sts = 0x00;
+  pm_register_data_type data = 0x00;
+  uint8 mask = 0x80;
+
+  pm_fg_data_type* fg_adc_usr_ptr = pm_fg_get_data(pmic_device);
+
+  if (NULL == fg_adc_usr_ptr)
+  {
+    return PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+  }
+  else
+  {
+    fg_adc_usr_bat_req_sts = fg_adc_usr_ptr->fg_register->adc_usr_register->base_address + fg_adc_usr_ptr->fg_register->adc_usr_register->fg_adc_usr_access_bat_req;
+    err_flag = pm_comm_read_byte_mask(fg_adc_usr_ptr->comm_ptr->slave_id, fg_adc_usr_bat_req_sts, mask, &data, 0);
+    *enable = (boolean )data;
+  }
+
+  return err_flag;
+
+}
+
+
+
+/**
+* @brief This function enable/disables the updates of VBAT, IBAT, VBAT_CP, IBAT_CP, IBAT_MAX, IBAT_MAX_CP, VBAT_MIN, VBAT_MIN_CP *
+* @details
+*  This function enable/disables the updates of VBAT, IBAT, VBAT_CP, IBAT_CP, IBAT_MAX, IBAT_MAX_CP, VBAT_MIN, VBAT_MIN_CP 
+* 
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in]enable  enable/disable BCL monitoring
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_set_access_bat_req(uint32 pmic_device, boolean enable)
+{
+  pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+  pm_register_address_type  fg_adc_usr_bat_req_sts = 0x00;
+  uint8 mask = 0x80;
+
+  pm_fg_data_type* fg_adc_usr_ptr = pm_fg_get_data(pmic_device);
+
+  if (NULL == fg_adc_usr_ptr)
+  {
+    return PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+  }
+  else
+  {
+    fg_adc_usr_bat_req_sts = fg_adc_usr_ptr->fg_register->adc_usr_register->base_address + fg_adc_usr_ptr->fg_register->adc_usr_register->fg_adc_usr_access_bat_req;
+    err_flag = pm_comm_write_byte_mask(fg_adc_usr_ptr->comm_ptr->slave_id, fg_adc_usr_bat_req_sts, mask, (pm_register_data_type)enable, 0);
+  }
+
+  return err_flag;
+}
+
+
+/**
+* @brief This function returns the grant status of battery parameter update request *
+* @details
+*  This function returns of status of battery parameter update request (VBAT, IBAT, VBAT_CP, IBAT_CP, IBAT_MAX, IBAT_MAX_CP, VBAT_MIN, VBAT_MIN_CP) 
+* 
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in]enable  enable/disable BCL monitoring
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_access_bat_grnt_sts(uint32 pmic_device, boolean *enable)
+{
+  pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+  pm_register_address_type  fg_adc_usr_bat_grnt_sts = 0x00;
+  pm_register_data_type data = 0x00;
+  uint8 mask = 0x80;
+
+  pm_fg_data_type* fg_adc_usr_ptr = pm_fg_get_data(pmic_device);
+
+  if (NULL == fg_adc_usr_ptr)
+  {
+    return PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+  }
+  else
+  {
+    fg_adc_usr_bat_grnt_sts = fg_adc_usr_ptr->fg_register->adc_usr_register->base_address + fg_adc_usr_ptr->fg_register->adc_usr_register->fg_adc_usr_access_bat_grnt;
+    err_flag = pm_comm_read_byte_mask(fg_adc_usr_ptr->comm_ptr->slave_id, fg_adc_usr_bat_grnt_sts, mask, &data, 0);
+    *enable = (boolean )data;
+  }
+
+  return err_flag;
+
+}
+
+
+
+/**
+* @brief This function returns status RDY bit after battery parameter update request is serviced *
+* @details
+*  After the first readings from ADC are obtained, this bit is set to 1; At reset and shutdown, this bit gets automatically cleared 
+* 
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in]enable  enable/disable BCL monitoring
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_bcl_values(uint32 pmic_device, boolean *enable)
+{
+  pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+  pm_register_address_type  fg_adc_usr_bcl_values = 0x00;
+  pm_register_data_type data = 0x00;
+  uint8 mask = 0x80;
+
+  pm_fg_data_type* fg_adc_usr_ptr = pm_fg_get_data(pmic_device);
+
+  if (NULL == fg_adc_usr_ptr)
+  {
+    return PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+  }
+  else
+  {
+    fg_adc_usr_bcl_values = fg_adc_usr_ptr->fg_register->adc_usr_register->base_address + fg_adc_usr_ptr->fg_register->adc_usr_register->fg_adc_usr_bcl_values;
+    err_flag = pm_comm_read_byte_mask(fg_adc_usr_ptr->comm_ptr->slave_id, fg_adc_usr_bcl_values, mask, &data, 0);
+    *enable = (boolean )data;
+  }
+
+  return err_flag;
+
+}
+
+
+/**
+* @brief This function returns battery ADC Voltage *
+* @details
+*  8 bit signed partial ADC value, MSB = 0 is positive voltage (positive number), only positive voltages are captured, 1 LSB = 39 mV 
+* 
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[out]vbat_adc  Battery Voltage
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_vbat(uint32 pmic_device, uint32 *vbat_adc)
+{
+  pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+  pm_register_address_type  fg_adc_usr_vbat = 0x00;
+  pm_register_address_type  fg_adc_usr_vbat_cp = 0x00;
+  pm_register_data_type data = 0x00;
+  pm_register_data_type data1 = 0x00;
+
+  int8   temp_data = 0;
+  int32  temp_data1 = 0;
+
+  //Compare data thrice in copy register and original register to make sure we have right data
+  uint32  total_count = 3;
+  uint32  count = 0;
+
+  pm_fg_data_type* fg_adc_usr_ptr = pm_fg_get_data(pmic_device);
+
+  *vbat_adc = 0;
+
+  if (NULL == fg_adc_usr_ptr)
+  {
+    return PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+  }
+  else
+  {
+    fg_adc_usr_vbat = fg_adc_usr_ptr->fg_register->adc_usr_register->base_address + fg_adc_usr_ptr->fg_register->adc_usr_register->fg_adc_usr_vbat;
+    fg_adc_usr_vbat_cp = fg_adc_usr_ptr->fg_register->adc_usr_register->base_address + fg_adc_usr_ptr->fg_register->adc_usr_register->fg_adc_usr_vbat_cp;
+
+    do {
+      err_flag = pm_comm_read_byte(fg_adc_usr_ptr->comm_ptr->slave_id, fg_adc_usr_vbat, &data1, 0);
+      err_flag = pm_comm_read_byte(fg_adc_usr_ptr->comm_ptr->slave_id, fg_adc_usr_vbat_cp, &data, 0);
+
+      if(data == data1)
+      {
+        break;
+      }
+
+      if((total_count - 1) == count)
+      {
+        data = 0;
+        err_flag = PM_ERR_FLAG__INVALID;
+      }
+
+      count++;
+
+    }while ( count < total_count);
+
+    //Convert uint8 to int8
+	temp_data = data;
+
+	//Convert int8 to int32
+    temp_data1 = temp_data;
+
+    *vbat_adc = temp_data1 * RAW_VBAT_LSB;
+  }
+
+  return err_flag;
+}
+
+
+/**
+* @brief This function returns battery ADC Current *
+* @details
+*  8 bit signed partial ADC value, MSB = 0 is discharging current (positive number), only discharging currents are captured, 1 LSB = 39 mA 
+* 
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[out]ibat_adc  Battery Current
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_ibat(uint32 pmic_device, int32 *ibat_adc)
+{
+  pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+  pm_register_address_type  fg_adc_usr_ibat = 0x00;
+  pm_register_address_type  fg_adc_usr_ibat_cp = 0x00;
+  pm_register_data_type     data = 0x00;
+  pm_register_data_type     data1 = 0x00;
+
+  int8   temp_data = 0;
+  int32  temp_data1 = 0;
+
+  uint32   count = 0;
+  //Compare data thrice in copy register and original register to make sure we have right data
+  uint32   total_count = 3;
+
+  pm_fg_data_type *fg_adc_usr_ptr = pm_fg_get_data(pmic_device);
+
+  if (NULL == fg_adc_usr_ptr)
+  {
+    return PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+  }
+  else if (NULL == ibat_adc)
+  {
+    err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+  }
+  else
+  {
+    fg_adc_usr_ibat = fg_adc_usr_ptr->fg_register->adc_usr_register->base_address + fg_adc_usr_ptr->fg_register->adc_usr_register->fg_adc_usr_ibat;
+    fg_adc_usr_ibat_cp = fg_adc_usr_ptr->fg_register->adc_usr_register->base_address + fg_adc_usr_ptr->fg_register->adc_usr_register->fg_adc_usr_ibat_cp;
+
+    do
+    {
+      /*Read original register and copy register to make sure available data is reliable*/
+      err_flag = pm_comm_read_byte(fg_adc_usr_ptr->comm_ptr->slave_id, fg_adc_usr_ibat, &data1, 0);
+      err_flag = pm_comm_read_byte(fg_adc_usr_ptr->comm_ptr->slave_id, fg_adc_usr_ibat_cp, &data, 0);
+
+      if (data1 == data)
+      {
+        break;
+      }
+      if ((total_count - 1) == count)
+      {
+        err_flag = PM_ERR_FLAG__INVALID;
+      }
+      count++;
+
+    }
+    while (count < total_count);
+
+    //Convert uint8 to int8
+	temp_data = data;
+
+	//Convert int8 to int32
+	temp_data1 = temp_data;
+
+    *ibat_adc = temp_data1 * RAW_IBAT_LSB;
+  }
+
+  return err_flag;
+}
+
+
+/**
+* @brief This function returns minimum battery Voltage *
+* @details
+*  Running Vbat Min stored and then cleared by SW
+* 
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[out]vbat_min  Battery Minimum Voltage
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_vbat_min(uint32 pmic_device, uint8 *vbat_min)
+{
+  pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+  pm_register_address_type  fg_adc_usr_vbat_min = 0x00;
+  pm_register_data_type data = 0x00;
+
+  pm_fg_data_type* fg_adc_usr_ptr = pm_fg_get_data(pmic_device);
+
+  if (NULL == fg_adc_usr_ptr)
+  {
+    return PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+  }
+  else
+  {
+    fg_adc_usr_vbat_min = fg_adc_usr_ptr->fg_register->adc_usr_register->base_address + fg_adc_usr_ptr->fg_register->adc_usr_register->fg_adc_usr_vbat_min;
+    err_flag = pm_comm_read_byte(fg_adc_usr_ptr->comm_ptr->slave_id, fg_adc_usr_vbat_min, &data, 0);
+    *vbat_min = data;
+  }
+
+  return err_flag;
+
+}
+
+/**
+* @brief This function returns max battery current *
+* @details
+*  Running Ibat Min stored and then cleared by SW
+* 
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[out]ibat_max  Battery Maximum Current
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_ibat_max(uint32 pmic_device, uint8 *ibat_max)
+{
+  pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+  pm_register_address_type  fg_adc_usr_ibat_max = 0x00;
+  pm_register_data_type data = 0x00;
+
+  pm_fg_data_type* fg_adc_usr_ptr = pm_fg_get_data(pmic_device);
+
+  if (NULL == fg_adc_usr_ptr)
+  {
+    return PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+  }
+  else
+  {
+    fg_adc_usr_ibat_max = fg_adc_usr_ptr->fg_register->adc_usr_register->base_address + fg_adc_usr_ptr->fg_register->adc_usr_register->fg_adc_usr_ibat_max;
+    err_flag = pm_comm_read_byte(fg_adc_usr_ptr->comm_ptr->slave_id, fg_adc_usr_ibat_max, &data, 0);
+    *ibat_max = (uint8)data;
+  }
+
+  return err_flag;
+
+}
+
+
+/**
+* @brief This function returns copy of minimum battery Voltage *
+* @details
+*  Running Vbat Min stored and then cleared by SW
+* 
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[out]vbat_min  Battery Minimum Voltage
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_vbat_min_cp(uint32 pmic_device, uint8 *vbat_min_cp)
+{
+  pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+  pm_register_address_type  fg_adc_usr_vbat_min_cp = 0x00;
+  pm_register_data_type data = 0x00;
+
+  pm_fg_data_type* fg_adc_usr_ptr = pm_fg_get_data(pmic_device);
+
+  if (NULL == fg_adc_usr_ptr)
+  {
+    return PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+  }
+  else
+  {
+    fg_adc_usr_vbat_min_cp = fg_adc_usr_ptr->fg_register->adc_usr_register->base_address + fg_adc_usr_ptr->fg_register->adc_usr_register->fg_adc_usr_vbat_min_cp;
+    err_flag = pm_comm_read_byte(fg_adc_usr_ptr->comm_ptr->slave_id, fg_adc_usr_vbat_min_cp, &data, 0);
+    *vbat_min_cp = (uint8)data;
+  }
+
+  return err_flag;
+
+}
+
+/**
+* @brief This function returns copy of max battery current *
+* @details
+*  Running Ibat Min stored and then cleared by SW
+* 
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[out]ibat_max  Battery Maximum Current
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_ibat_max_cp(uint32 pmic_device, uint8 *ibat_max_cp)
+{
+  pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+  pm_register_address_type  fg_adc_usr_ibat_max_cp = 0x00;
+  pm_register_data_type data = 0x00;
+
+  pm_fg_data_type* fg_adc_usr_ptr = pm_fg_get_data(pmic_device);
+
+  if (NULL == fg_adc_usr_ptr)
+  {
+    return PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+  }
+  else
+  {
+    fg_adc_usr_ibat_max_cp = fg_adc_usr_ptr->fg_register->adc_usr_register->base_address + fg_adc_usr_ptr->fg_register->adc_usr_register->fg_adc_usr_ibat_max_cp;
+    err_flag = pm_comm_read_byte(fg_adc_usr_ptr->comm_ptr->slave_id, fg_adc_usr_ibat_max_cp, &data, 0);
+    *ibat_max_cp = (uint8)data;
+  }
+
+  return err_flag;
+
+}
+
+
+/**
+* @brief This function returns Battery Resitance in HALF encoding *
+* @details
+*  HALF-FLOATING point encoding, 15:11 exp, bit 10 sign, 9:0 mantissa, 1=1 ohm, refer to MDOS for encoding info
+* 
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[out]battResistance  Battery Resistance 
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_half_point_encoding(uint32 pmic_device, uint16 *battResistance)
+{
+
+  pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+  pm_register_address_type addr_msb;
+  pm_register_address_type addr_lsb;
+  pm_register_data_type    data_0 = 0x00;
+  pm_register_data_type    data_1 = 0x00;
+  uint16 battR = 0x0000;
+
+  pm_fg_data_type* fg_adc_usr_ptr = pm_fg_get_data(pmic_device);
+
+  if (NULL == fg_adc_usr_ptr)
+  {
+    return PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+  }
+  else
+  {
+    addr_lsb = fg_adc_usr_ptr->fg_register->adc_usr_register->base_address + fg_adc_usr_ptr->fg_register->adc_usr_register->fg_adc_usr_bat_res_7_0;
+    addr_msb = fg_adc_usr_ptr->fg_register->adc_usr_register->base_address + fg_adc_usr_ptr->fg_register->adc_usr_register->fg_adc_usr_bat_res_15_8;
+    err_flag = pm_comm_read_byte(fg_adc_usr_ptr->comm_ptr->slave_id, addr_lsb, &data_0, 0);
+    err_flag = pm_comm_read_byte(fg_adc_usr_ptr->comm_ptr->slave_id, addr_msb, &data_1, 0);
+
+    battR = ((data_1 | battR) << 8) | (data_0 | battR);
+
+    *battResistance = battR;
+  }
+
+  return err_flag;
+
+}
+
+
+/**
+* @brief This function returns BCL mode status *
+* @details
+*  This function returns BCL mode status 
+* 
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[out] bcl_mode  BCL mode
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_bcl_mode(uint32 pmic_device, pm_fg_adc_usr_bcl_mode_sts *bcl_mode)
+{
+  pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+  pm_register_address_type  fg_adc_usr_bcl_values = 0x00;
+  pm_register_data_type data = 0x00;
+
+  pm_fg_data_type* fg_adc_usr_ptr = pm_fg_get_data(pmic_device);
+
+  if (NULL == fg_adc_usr_ptr)
+  {
+    return PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+  }
+  else
+  {
+    fg_adc_usr_bcl_values = fg_adc_usr_ptr->fg_register->adc_usr_register->base_address + fg_adc_usr_ptr->fg_register->adc_usr_register->fg_adc_usr_bcl_values;
+    err_flag = pm_comm_read_byte(fg_adc_usr_ptr->comm_ptr->slave_id, fg_adc_usr_bcl_values, &data, 0);
+    data = data >> 0x06;
+    *bcl_mode = (pm_fg_adc_usr_bcl_mode_sts)data;
+  }
+
+  return err_flag;
+
+}
+
+
+/**
+* @brief This function returns votlage gain correction value for battery voltage *
+* @details
+*  This function returns gain correction value for battery 
+* 
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in] gainCorrection  for battery volatge
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_bcl_v_gain_batt(uint32 pmic_device, int32 *v_gain_correction)
+{
+  pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+  pm_register_address_type  fg_adc_usr_v_gain_batt = 0x00;
+  pm_register_data_type data = 0x00;
+
+  int8   temp_data = 0;
+  int32  temp_data1 = 0;
+
+  pm_fg_data_type* fg_adc_usr_ptr = pm_fg_get_data(pmic_device);
+
+  if (NULL == fg_adc_usr_ptr)
+  {
+    return PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+  }
+  else
+  {
+    fg_adc_usr_v_gain_batt = fg_adc_usr_ptr->fg_register->adc_usr_register->base_address + fg_adc_usr_ptr->fg_register->adc_usr_register->fg_adc_usr_bcl_v_gain_batt;
+    err_flag = pm_comm_read_byte(fg_adc_usr_ptr->comm_ptr->slave_id, fg_adc_usr_v_gain_batt, &data, 0);
+
+    //Convert uint8 to int8
+	temp_data = data;
+
+	//Convert int8 to int32
+	temp_data1 = temp_data;
+
+    *v_gain_correction = temp_data1;
+  }
+
+  return err_flag;
+
+}
+
+/**
+* @brief This function returns current Rsense gain correction value for Battery Current *
+* @details
+*  This function returns current Rsense gain correction value for Battery Current  
+* 
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in] gainCorrection  for battery volatge
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_bcl_i_gain_rsense(uint32 pmic_device, int32 *i_gain_rsense)
+{
+  pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+  pm_register_address_type  fg_adc_usr_i_gain_rsense = 0x00;
+  pm_register_data_type data = 0x00;
+
+  int8   temp_data = 0;
+  int32  temp_data1 = 0;
+
+  pm_fg_data_type* fg_adc_usr_ptr = pm_fg_get_data(pmic_device);;
+
+  if (NULL == fg_adc_usr_ptr)
+  {
+    return PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+  }
+  else
+  {
+    fg_adc_usr_i_gain_rsense = fg_adc_usr_ptr->fg_register->adc_usr_register->base_address + fg_adc_usr_ptr->fg_register->adc_usr_register->fg_adc_usr_bcl_i_gain_rsense;
+    err_flag = pm_comm_read_byte(fg_adc_usr_ptr->comm_ptr->slave_id, fg_adc_usr_i_gain_rsense, &data, 0);
+
+    //Convert uint8 to int8
+	temp_data = data;
+
+    //Convert int8 to int32
+	temp_data1 = temp_data;
+	
+    *i_gain_rsense = temp_data1;
+  }
+
+  return err_flag;
+}
+
+
+
+/**
+* @brief This function returns current Rsense offset value for Battery Current *
+* @details
+*  This function returns current Rsense offset value for Battery Current  
+* 
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in] ioffset_rsense  Offset Gain Correction battery current
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_bcl_i_offset_rsense(uint32 pmic_device, int32 *i_offset_rsense)
+{
+  pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+  pm_register_address_type  fg_adc_usr_i_offset_rsense = 0x00;
+  pm_register_data_type data = 0x00;
+
+  int8   temp_data = 0;
+  int32  temp_data1 = 0;
+
+  pm_fg_data_type* fg_adc_usr_ptr = pm_fg_get_data(pmic_device);
+
+  if (NULL == fg_adc_usr_ptr)
+  {
+    return PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+  }
+  else
+  {
+    fg_adc_usr_i_offset_rsense = fg_adc_usr_ptr->fg_register->adc_usr_register->base_address + fg_adc_usr_ptr->fg_register->adc_usr_register->fg_adc_usr_bcl_i_offset_rsense;
+    err_flag = pm_comm_read_byte(fg_adc_usr_ptr->comm_ptr->slave_id, fg_adc_usr_i_offset_rsense, &data, 0);
+
+    //Convert uint8 to int8
+	temp_data = data;
+
+	//Convert int8 to int32
+    temp_data1 = temp_data;
+
+    *i_offset_rsense = (temp_data1 * OFFSET_LSB_NUM) / OFFSET_LSB_DENOM;
+  }
+
+  return err_flag;
+
+}
+
+
+/**
+* @brief This function returns current gain in BATFET for Battery Current *
+* @details
+*  This function returns current gain in BATFET for Battery Current  
+* 
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in] igain_offset_correction  Gain Correction for battery current
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_bcl_i_gain_batfet(uint32 pmic_device, int32 *i_gain_batfet)
+{
+  pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+  pm_register_address_type  fg_adc_usr_i_gain_batfet = 0x00;
+  pm_register_data_type data = 0x00;
+
+  int8   temp_data = 0;
+  int32  temp_data1 = 0;
+
+  pm_fg_data_type* fg_adc_usr_ptr = pm_fg_get_data(pmic_device);
+
+  if (NULL == fg_adc_usr_ptr)
+  {
+    return PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+  }
+  else
+  {
+    fg_adc_usr_i_gain_batfet = fg_adc_usr_ptr->fg_register->adc_usr_register->base_address + fg_adc_usr_ptr->fg_register->adc_usr_register->fg_adc_usr_bcl_i_gain_batfet;
+    err_flag = pm_comm_read_byte(fg_adc_usr_ptr->comm_ptr->slave_id, fg_adc_usr_i_gain_batfet, &data, 0);
+
+    //Convert uint8 to int8
+	temp_data = data;
+
+    //Convert int8 to int32
+	temp_data1 = temp_data;
+
+    *i_gain_batfet = temp_data1;
+  }
+
+  return err_flag;
+
+}
+
+
+/**
+* @brief This function returns current offset in BATFET for Battery Current *
+* @details
+*  This function returns current gain in BATFET for Battery Current  
+* 
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in] ioffset_batfet_correction  offset Gain Correction for BATFET
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_bcl_i_offset_batfet(uint32 pmic_device, int32 *i_offset_batfet)
+{
+  pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+  pm_register_address_type  fg_adc_usr_i_offset_batfet = 0x00;
+  pm_register_data_type data = 0x00;
+
+  int8   temp_data = 0;
+  int32  temp_data1 = 0;
+
+  pm_fg_data_type* fg_adc_usr_ptr = pm_fg_get_data(pmic_device);;
+
+  if (NULL == fg_adc_usr_ptr)
+  {
+    return PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+  }
+  else
+  {
+    fg_adc_usr_i_offset_batfet = fg_adc_usr_ptr->fg_register->adc_usr_register->base_address + fg_adc_usr_ptr->fg_register->adc_usr_register->fg_adc_usr_bcl_i_offset_batfet;
+    err_flag = pm_comm_read_byte(fg_adc_usr_ptr->comm_ptr->slave_id, fg_adc_usr_i_offset_batfet, &data, 0);
+
+	//Convert uint8 to int8
+	temp_data = data;
+
+	//Convert int8 to int32
+    temp_data1 = temp_data;
+
+    *i_offset_batfet = ((temp_data1 * OFFSET_LSB_NUM) / OFFSET_LSB_DENOM);
+  }
+
+  return err_flag;
+}
+
+
+
+/**
+* @brief This function returns source used for current sense *
+* @details
+*  This function returns source used for current sense  
+* 
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in] isense_source  source used for current sense
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_bcl_i_sense_source(uint32 pmic_device, boolean *i_sense_source)
+{
+  pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+  pm_register_address_type  fg_adc_usr_bcl_isense_source = 0x00;
+  pm_register_data_type data = 0x00;
+  uint8 mask = 0x01;
+
+  pm_fg_data_type* fg_adc_usr_ptr = pm_fg_get_data(pmic_device);
+
+  if (NULL == fg_adc_usr_ptr)
+  {
+    return PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+  }
+  else
+  {
+    fg_adc_usr_bcl_isense_source = fg_adc_usr_ptr->fg_register->adc_usr_register->base_address + fg_adc_usr_ptr->fg_register->adc_usr_register->fg_adc_usr_bcl_i_sense_source;
+    err_flag = pm_comm_read_byte_mask(fg_adc_usr_ptr->comm_ptr->slave_id, fg_adc_usr_bcl_isense_source, mask, &data, 0);
+    *i_sense_source = (boolean )data;
+  }
+
+  return err_flag;
+}
+
+
+/**
+* @brief This function cleras stored VBAT minimum  *
+* @details
+* This function cleras stored VBAT minimum  
+* 
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in]enable  enable/disable for clearing stored vbat minimum
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_clear_vbat_min(uint32 pmic_device, boolean enable)
+{
+  pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+  pm_register_address_type  fg_adc_usr_clr_vbat_min = 0x00;
+
+  pm_fg_data_type* fg_adc_usr_ptr = pm_fg_get_data(pmic_device);
+
+  if (NULL == fg_adc_usr_ptr)
+  {
+    return PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+  }
+  else
+  {
+    fg_adc_usr_clr_vbat_min = fg_adc_usr_ptr->fg_register->adc_usr_register->base_address + fg_adc_usr_ptr->fg_register->adc_usr_register->fg_adc_usr_vbat_min_clr;
+    err_flag = pm_comm_write_byte_mask(fg_adc_usr_ptr->comm_ptr->slave_id, fg_adc_usr_clr_vbat_min, 0x80, (pm_register_data_type)enable, 0);
+  }
+
+  return err_flag;
+
+}
+
+/**
+* @brief This function clears stored IBAT Max *
+* @details
+* This function cleras stored IBAT Max 
+* 
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in]enable  enable/disable for clearing stored vbat minimum
+*
+* @return  pm_err_flag_type 
+*          PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+*          version of the PMIC.
+*          PM_ERR_FLAG__SUCCESS               = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_clear_ibat_max(uint32 pmic_device, boolean enable)
+{
+  pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+  pm_register_address_type  fg_adc_usr_clr_ibat_min = 0x00;
+
+  pm_fg_data_type* fg_adc_usr_ptr = pm_fg_get_data(pmic_device);
+
+  if (NULL == fg_adc_usr_ptr)
+  {
+    return PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+  }
+  else
+  {
+    fg_adc_usr_clr_ibat_min = fg_adc_usr_ptr->fg_register->adc_usr_register->base_address + fg_adc_usr_ptr->fg_register->adc_usr_register->fg_adc_usr_ibat_max_clr;
+    err_flag = pm_comm_write_byte_mask(fg_adc_usr_ptr->comm_ptr->slave_id, fg_adc_usr_clr_ibat_min, 0x80, (pm_register_data_type)enable, 0);
+  }
+
+  return err_flag;
+
+}
+
+
+/**
+PmicFgCalibrateIbat()
+
+@brief
+
+*/
+pm_err_flag_type pm_fg_adc_usr_get_calibrated_ibat(uint32 pmic_device, int32 *calibrated_ibat)
+{
+  pm_err_flag_type   errFlag = PM_ERR_FLAG__SUCCESS;
+
+  int32 raw_ibat = 0;
+  static int32 gain = 0;
+  static int32 offset = 0;
+
+  boolean sense_source = FALSE;
+  
+  *calibrated_ibat = 0;
+
+  errFlag |= pm_fg_adc_usr_get_ibat(pmic_device, &raw_ibat);
+
+  if((!gain) || (!offset))
+  {//gain and offset are constant per part, so we should read them only once
+    errFlag |= pm_fg_adc_usr_get_bcl_i_sense_source( pmic_device, &sense_source);
+    
+    if(sense_source)
+    {// 1 -> pick rsense correction
+      errFlag |= pm_fg_adc_usr_get_bcl_i_gain_rsense( pmic_device, &gain );
+      errFlag |= pm_fg_adc_usr_get_bcl_i_offset_rsense( pmic_device, &offset );
+    }
+    else
+    {// 0 -> pick batfet correction
+      errFlag |= pm_fg_adc_usr_get_bcl_i_gain_batfet( pmic_device,  &gain );
+      errFlag |= pm_fg_adc_usr_get_bcl_i_offset_batfet( pmic_device, &offset );
+    }
+  }
+      
+  *calibrated_ibat = (((raw_ibat + offset) * (GAIN_LSB_DENOM + gain ))/ GAIN_LSB_DENOM);
+
+  return errFlag;
+}
+
+pm_err_flag_type pm_fg_adc_usr_get_calibrated_vbat(uint32 pmic_device, uint32 *calibrated_vbat)
+{
+  pm_err_flag_type   errFlag = PM_ERR_FLAG__SUCCESS;
+
+  uint32 raw_vbat = 0;
+  static int32 gain = 0;
+  
+  errFlag = pm_fg_adc_usr_get_vbat(pmic_device, &raw_vbat);
+  
+  if(!gain)
+  {//Gain is constant w.r.t to every part, so we should read it only once.
+    errFlag |= pm_fg_adc_usr_get_bcl_v_gain_batt( pmic_device,  &gain );
+  }
+
+  /* Applying gain calibration to the raw value*/
+  // Twos_complement(VBAT_registerval) *39 * (1+ Twos_Complement(V_GAIN_registerval) * (.32/128))
+  *calibrated_vbat = (uint32)(((raw_vbat * (GAIN_LSB_DENOM + gain)))/GAIN_LSB_DENOM);
+
+  return errFlag;
+}
+
diff --git a/dev/pmic/pmi8994/pm_fg_driver.c b/dev/pmic/pmi8994/pm_fg_driver.c
new file mode 100644
index 0000000..436e19d
--- /dev/null
+++ b/dev/pmic/pmi8994/pm_fg_driver.c
@@ -0,0 +1,74 @@
+/* Copyright (c) 2015, The Linux Foundation. All rights reserved.
+
+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 Linux Foundation nor the names of its
+      contributors may be used to endorse or promote products derived
+      from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#include "pm_fg_driver.h"
+
+/*===========================================================================
+
+                        STATIC VARIABLES 
+
+===========================================================================*/
+
+/* Static global variable to store the FG driver data */
+
+pm_fg_data_type        fg_data[PM_MAX_NUM_PMICS];
+fg_adc_usr_register_ds fg_adc_usr_reg[1] =
+	{   /* FG base address and offsets */
+		{0x4200, 0x0 ,0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16,\
+		0x18, 0x19, 0x1A, 0x1B, 0x46, 0x50, 0x51, 0x53, \
+		0xD0, 0x54, 0x55, 0x56,	0x57, 0x58, 0x59, 0x5A, 0x5B, \
+		0x5C, 0x5D, 0x5E, 0x60,	0x61, 0x62, 0x63, 0x64, 0x65, \
+		0x66, 0x67, 0x68, 0x69},
+	};
+/* Fill in slave id, pmic index and comm type (comm type is unused) */
+pm_comm_info_type      comm[1] = {{2, 1, 0},};
+/* We use only adc user register others are not needed */
+fg_register_ds         fg_reg[1] = { {NULL, NULL, NULL, &fg_adc_usr_reg[0]}, };
+
+/*===========================================================================
+
+                        FUNCTION DEFINITIONS
+
+===========================================================================*/
+/* Initialize FG driver and data structure */
+void pm_fg_driver_init(uint32_t device_index)
+{
+	fg_data[device_index].comm_ptr = &comm[0];
+	fg_data[device_index].fg_register = &fg_reg[0];
+	fg_data[device_index].num_of_peripherals = 0x0;
+}
+
+pm_fg_data_type* pm_fg_get_data(uint32 pmic_index)
+{
+  if(pmic_index <PM_MAX_NUM_PMICS) 
+  {
+      return &fg_data[pmic_index];
+  }
+
+  return NULL;
+}
diff --git a/dev/pmic/pmi8994/pm_smbchg_bat_if.c b/dev/pmic/pmi8994/pm_smbchg_bat_if.c
new file mode 100644
index 0000000..5e8253a
--- /dev/null
+++ b/dev/pmic/pmi8994/pm_smbchg_bat_if.c
@@ -0,0 +1,763 @@
+/* Copyright (c) 2015, The Linux Foundation. All rights reserved.
+
+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 Linux Foundation nor the names of its
+      contributors may be used to endorse or promote products derived
+      from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*===========================================================================
+
+					INCLUDE FILES
+
+===========================================================================*/
+
+#include "pm_smbchg_bat_if.h"
+#include "pm_smbchg_driver.h"
+#include <debug.h>
+#include <sys/types.h>
+
+/*Find the nearest register value corresponding to input_data*/
+static void pm_smbchg_bat_if_return_reg_value(uint32 input_data, uint32 *array, uint32 array_size, pm_register_data_type *reg_value);
+
+/*writes to secured acess register to unlock pmic write operation*/
+static inline pm_err_flag_type pm_smbchg_bat_if_unlock_perph_write(pm_smbchg_data_type *smbchg);
+
+/*Returns battery presence status*/
+pm_err_flag_type pm_smbchg_bat_if_get_bat_pres_status(uint32 device_index, boolean *bat_present)
+{
+    pm_err_flag_type errFlag = PM_ERR_FLAG__SUCCESS;
+    pm_register_data_type data;
+
+    pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+
+    if (NULL == smbchg_ptr)
+    {
+        errFlag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+    }
+    else if (NULL == bat_present)
+    {
+        errFlag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+    }
+    else
+    {
+        pm_register_address_type bat_pres_status = smbchg_ptr->smbchg_register->bat_if_register->base_address + smbchg_ptr->smbchg_register->bat_if_register->bat_pres_status;
+        errFlag = pm_comm_read_byte_mask(smbchg_ptr->comm_ptr->slave_id, bat_pres_status, 0x80, &data, 0);
+        *bat_present = (data) ? TRUE : FALSE;
+    }
+
+    return errFlag;
+}
+
+/*This API clears the dead battery timer*/
+pm_err_flag_type pm_smbchg_bat_if_clear_dead_bat_timer(uint32 device_index)
+{
+    pm_err_flag_type errFlag = PM_ERR_FLAG__SUCCESS;
+     
+    pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+
+    if (NULL == smbchg_ptr)
+    {
+        errFlag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+    }
+    else
+    {
+        pm_register_address_type clr_dead_bat_timer = smbchg_ptr->smbchg_register->bat_if_register->base_address + smbchg_ptr->smbchg_register->bat_if_register->clr_dead_bat_timer;
+
+        errFlag = pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, clr_dead_bat_timer, 0x1, 0x1, 0);
+    }
+
+    return errFlag;
+}
+
+/*writes to battery interface command control to enable/disable wireless charging, thermal current override, stat output, fast charge, battery charging, OTG */
+pm_err_flag_type pm_smbchg_bat_if_config_chg_cmd(uint32 device_index, pm_smbchg_bat_if_cmd_chg_type cmd_chg_cfg, boolean enable)
+{
+    pm_err_flag_type errFlag = PM_ERR_FLAG__SUCCESS;
+   
+    pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+
+    if (NULL == smbchg_ptr)
+    {
+        errFlag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+    }
+    else if (PM_SMBCHG_BAT_IF_CMD__INVALID == cmd_chg_cfg)
+    {
+        errFlag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+    }
+    else
+    {
+        pm_register_address_type cmd_chg = smbchg_ptr->smbchg_register->bat_if_register->base_address + smbchg_ptr->smbchg_register->bat_if_register->cmd_chg;
+
+        errFlag = pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, cmd_chg, (0x1<<cmd_chg_cfg), (pm_register_data_type)(enable<<cmd_chg_cfg), 0);
+    }
+
+    return errFlag;
+}
+
+
+/*reads battery interface command control settings for enable/disable wireless charging, thermal current override, stat output, fast charge, battery charging, OTG */
+pm_err_flag_type pm_smbchg_bat_if_get_chg_cmd(uint32 device_index, pm_smbchg_bat_if_cmd_chg_type cmd_chg_cfg, boolean *enable)
+{
+    pm_err_flag_type errFlag = PM_ERR_FLAG__SUCCESS;
+    pm_register_data_type data = 0;
+    pm_register_address_type cmd_chg;
+
+    pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+    if (NULL == smbchg_ptr)
+    {
+        errFlag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+    }
+    else if (PM_SMBCHG_BAT_IF_CMD__INVALID == cmd_chg_cfg)
+    {
+        errFlag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+    }
+    else if (NULL == enable)
+    {
+       errFlag = PM_ERR_FLAG__PAR3_OUT_OF_RANGE;
+    }
+    else
+    {
+        cmd_chg = smbchg_ptr->smbchg_register->bat_if_register->base_address + smbchg_ptr->smbchg_register->bat_if_register->cmd_chg;
+        errFlag = pm_comm_read_byte(smbchg_ptr->comm_ptr->slave_id, cmd_chg, &data, 0);
+
+        *enable = (data & (0x1<<cmd_chg_cfg)) ? TRUE : FALSE;
+    }
+
+    return errFlag;
+}
+
+/*Sets low battery voltag threshold*/
+pm_err_flag_type pm_smbchg_bat_if_set_low_batt_volt_threshold(uint32 device_index, pm_smbchg_bat_if_low_bat_thresh_type low_bat_threshold)
+{
+    pm_err_flag_type errFlag = PM_ERR_FLAG__SUCCESS;
+    pm_register_address_type vbl_cfg;
+    pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+
+    if (NULL == smbchg_ptr)
+    {
+        errFlag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+    }
+    else if (low_bat_threshold >= PM_SMBCHG_BAT_IF_LOW_BATTERY_THRESH_INVALID)
+    {
+        errFlag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+    }
+    else
+    {
+        vbl_cfg = smbchg_ptr->smbchg_register->bat_if_register->base_address + smbchg_ptr->smbchg_register->bat_if_register->vbl_cfg;
+        errFlag = pm_smbchg_bat_if_unlock_perph_write(smbchg_ptr);
+        errFlag |= pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, vbl_cfg, 0xF, (pm_register_data_type)low_bat_threshold, 0);
+    }
+    return errFlag;
+}
+
+/*Gets low battery voltag threshold*/
+pm_err_flag_type pm_smbchg_bat_if_get_low_bat_volt_threshold(uint32 device_index, pm_smbchg_bat_if_low_bat_thresh_type *low_bat_threshold)
+{
+    pm_err_flag_type errFlag = PM_ERR_FLAG__SUCCESS;
+    pm_register_data_type data;
+    pm_register_address_type vbl_cfg;
+    pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+
+    if (NULL == smbchg_ptr)
+    {
+        errFlag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+    }
+    else if (NULL == low_bat_threshold)
+    {
+        errFlag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+    }
+    else
+    {
+        vbl_cfg = smbchg_ptr->smbchg_register->bat_if_register->base_address + smbchg_ptr->smbchg_register->bat_if_register->vbl_cfg;
+        errFlag = pm_comm_read_byte_mask(smbchg_ptr->comm_ptr->slave_id, vbl_cfg, 0xF, &data, 0);
+        *low_bat_threshold = (pm_smbchg_bat_if_low_bat_thresh_type)data;
+    }
+
+    return errFlag;
+}
+
+/* This API sets battery missing detection configuration like select if the battery missing monitoring should only happen at the beginning of a charge cycle or every 3 seconds */
+pm_err_flag_type pm_smbchg_bat_if_set_bat_missing_cfg(uint32 device_index, pm_smbchg_bat_if_batt_missing_cfg_type *batt_missing_cfg)
+{
+    pm_err_flag_type errFlag = PM_ERR_FLAG__SUCCESS;
+    pm_register_data_type data;
+    pm_register_address_type bm_cfg;
+    uint32 time_pos = 0;
+
+    pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+
+    if (NULL == smbchg_ptr)
+    {
+        errFlag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+    }
+    else if (NULL == batt_missing_cfg)
+    {
+        errFlag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+    }
+    else
+    {
+        uint32 *batt_missing_detect_time = smbchg_ptr->chg_range_data->batt_missing_detect_time;
+        bm_cfg = smbchg_ptr->smbchg_register->bat_if_register->base_address + smbchg_ptr->smbchg_register->bat_if_register->bm_cfg;
+
+        /*Find the nearest register value corresponding to time*/
+        while (time_pos < BATT_MISSING_SIZE)
+        {
+            if (batt_missing_cfg->batt_removal_det_time_usec < batt_missing_detect_time[time_pos])
+            {
+                break;
+            }
+            else
+            {
+                time_pos++;
+            }
+        }
+        batt_missing_cfg->batt_removal_det_time_usec = (time_pos) ? (time_pos - 1) : 0;
+
+        data =  (batt_missing_cfg->batt_removal_det_time_usec << 6) | (batt_missing_cfg->batt_bat_get_override_en << 5) | (batt_missing_cfg->batt_missing_input_plugin_en << 4)
+           | (batt_missing_cfg->batt_missing_2p6s_poller_en << 3) | (batt_missing_cfg->batt_missing_algo_en << 2) | (batt_missing_cfg->use_therm_pin_for_batt_missing_src << 1)
+           | batt_missing_cfg->use_bmd_pin_for_batt_missing_src;
+
+        errFlag = pm_smbchg_bat_if_unlock_perph_write(smbchg_ptr);
+        errFlag |= pm_comm_write_byte(smbchg_ptr->comm_ptr->slave_id, bm_cfg, data, 0);
+    }
+
+    return errFlag;
+}
+
+
+/*This API reads the battery missing configuration settings*/
+pm_err_flag_type pm_smbchg_bat_if_get_bat_missing_cfg(uint32 device_index, pm_smbchg_bat_if_batt_missing_cfg_type *batt_missing_cfg)
+{
+    pm_err_flag_type errFlag = PM_ERR_FLAG__SUCCESS;
+    pm_register_data_type data = 0;
+    pm_register_address_type bm_cfg;
+
+    pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+
+    if (NULL == smbchg_ptr)
+    {
+        errFlag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+    }
+    else if (NULL == batt_missing_cfg)
+    {
+        errFlag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+    }
+    else
+    {
+        uint32 *batt_missing_detect_time = smbchg_ptr->chg_range_data->batt_missing_detect_time;
+        bm_cfg = smbchg_ptr->smbchg_register->bat_if_register->base_address + smbchg_ptr->smbchg_register->bat_if_register->bm_cfg;
+
+        errFlag = pm_comm_read_byte(smbchg_ptr->comm_ptr->slave_id, bm_cfg, &data, 0);
+
+        batt_missing_cfg->batt_removal_det_time_usec         = batt_missing_detect_time[(data >> 6)];
+        batt_missing_cfg->batt_bat_get_override_en           = (data & 0x20) ? TRUE : FALSE;
+        batt_missing_cfg->batt_missing_input_plugin_en       = (data & 0x10) ? TRUE : FALSE;
+        batt_missing_cfg->batt_missing_2p6s_poller_en        = (data & 0x8) ? TRUE : FALSE;
+        batt_missing_cfg->batt_missing_algo_en               = (data & 0x4) ? TRUE : FALSE;
+        batt_missing_cfg->use_therm_pin_for_batt_missing_src = (data & 0x2) ? TRUE : FALSE;
+        batt_missing_cfg->use_bmd_pin_for_batt_missing_src   = (data & 0x1) ? TRUE : FALSE;
+    }
+    return errFlag;
+}
+
+
+
+
+pm_err_flag_type pm_smbchg_bat_if_set_bat_missing_detection_src(uint32 device_index, pm_smbchg_bat_miss_detect_src_type batt_missing_det_src)
+{
+   pm_err_flag_type      err_flag    = PM_ERR_FLAG__SUCCESS;
+   pm_smbchg_bat_if_batt_missing_cfg_type batt_missing_cfg;
+
+   if (batt_missing_det_src >= PM_SMBCHG_BAT_IF_BAT_MISS_DETECT_SRC_INVALID)
+   {
+      err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+   }
+   else
+   {
+      //Get the current configuration
+      err_flag = pm_smbchg_bat_if_get_bat_missing_cfg(device_index, &batt_missing_cfg);
+ 
+      if (err_flag == PM_ERR_FLAG__SUCCESS)
+      {
+         //Change needed bits and write it back
+         switch (batt_missing_det_src)
+         {
+         case PM_SMBCHG_BAT_IF_BAT_MISS_DETECT_SRC_THERM_PIN:
+            batt_missing_cfg.use_bmd_pin_for_batt_missing_src   = 0;
+            batt_missing_cfg.use_therm_pin_for_batt_missing_src = 1;
+            break;
+         case PM_SMBCHG_BAT_IF_BAT_MISS_DETECT_SRC_BMD_PIN:
+            batt_missing_cfg.use_bmd_pin_for_batt_missing_src   = 1;
+            batt_missing_cfg.use_therm_pin_for_batt_missing_src = 0;
+            break;
+         case PM_SMBCHG_BAT_IF_BAT_MISS_DETECT_SRC_THERM_BMD_PIN:
+            batt_missing_cfg.use_bmd_pin_for_batt_missing_src   = 1;
+            batt_missing_cfg.use_therm_pin_for_batt_missing_src = 1;
+            break;
+         case PM_SMBCHG_BAT_IF_BAT_MISS_DETECT_SRC_NONE:
+            batt_missing_cfg.use_bmd_pin_for_batt_missing_src   = 0;
+            batt_missing_cfg.use_therm_pin_for_batt_missing_src = 0;
+            break;
+         default:
+            err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+            break;
+         }
+         err_flag |= pm_smbchg_bat_if_set_bat_missing_cfg(device_index, &batt_missing_cfg);  
+      }
+   }
+   return err_flag;
+}
+
+
+/*This API sets the minimum system voltage. And below this voltage system and battery are not connected together.Valid values are 315, 345 and 360 milli volt*/
+pm_err_flag_type pm_smbchg_bat_if_set_min_sys_volt(uint32 device_index, uint32 min_sys_millivolt)
+{
+    pm_err_flag_type errFlag = PM_ERR_FLAG__SUCCESS;
+    pm_register_data_type data;
+    pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+
+    if (NULL == smbchg_ptr)
+    {
+        errFlag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+    }
+    else
+    {
+        if (min_sys_millivolt < 345)
+        {
+            data = 0;
+        }
+        else if (min_sys_millivolt < 360)
+        {
+            data = 1;
+        }
+        else
+        {
+            data = 0x2;
+        }
+        pm_register_address_type cfg_sysmin = smbchg_ptr->smbchg_register->bat_if_register->base_address + smbchg_ptr->smbchg_register->bat_if_register->cfg_sysmin;
+
+        errFlag = pm_smbchg_bat_if_unlock_perph_write(smbchg_ptr);
+        errFlag |= pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, cfg_sysmin, 0x3, data, 0);
+    }
+
+    return errFlag;
+}
+
+/*This API reads the configured minimum system voltage */
+pm_err_flag_type pm_smbchg_bat_if_get_min_sys_volt(uint32 device_index, uint32 *min_sys_millivolt)
+{
+    pm_err_flag_type errFlag = PM_ERR_FLAG__SUCCESS;
+    pm_register_data_type data = 0;
+    pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+
+    if (NULL == smbchg_ptr)
+    {
+        errFlag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+    }
+    else if (NULL == min_sys_millivolt)
+    {
+        errFlag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+    }
+    else
+    {
+        pm_register_address_type cfg_sysmin = smbchg_ptr->smbchg_register->bat_if_register->base_address + smbchg_ptr->smbchg_register->bat_if_register->cfg_sysmin;
+        errFlag = pm_comm_read_byte(smbchg_ptr->comm_ptr->slave_id, cfg_sysmin, &data, 0);
+        switch (data & 0x03)
+        {
+        case 0x00:
+            *min_sys_millivolt = 315;
+            break;
+        case 0x01:
+            *min_sys_millivolt = 354;
+        default:
+            *min_sys_millivolt = 360;
+        }
+    }
+
+    return errFlag;
+}
+
+/*This API configures the current limit for pass through mode, low volt mode and high volt mode in milliamp*/
+pm_err_flag_type pm_smbchg_bat_if_set_dcin_input_current_limit(uint32 device_index, pm_smbchg_bat_if_dcin_icl_type dcin_icl_type, uint32 current_ma)
+{
+    pm_err_flag_type errFlag = PM_ERR_FLAG__SUCCESS;
+    pm_register_data_type data = 0;
+    pm_register_address_type reg;
+    
+    pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+
+    if (NULL == smbchg_ptr)
+    {
+        errFlag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+    }
+    else if (dcin_icl_type >= PM_SMBCHG_BAT_IF_DCIN_INVALID_MODE)
+    {
+        errFlag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+    }
+    else
+    {
+        uint32 *current_limits = smbchg_ptr->chg_range_data->dcin_current_limits;
+
+        switch (dcin_icl_type)
+        {
+        case PM_SMBCHG_BAT_IF_DCIN_PASS_THROUGH_MODE:
+            reg = smbchg_ptr->smbchg_register->bat_if_register->base_address + smbchg_ptr->smbchg_register->bat_if_register->zin_icl_pt;
+            break;
+        case PM_SMBCHG_BAT_IF_DCIN_LOW_VOLT_MODE:
+            reg = smbchg_ptr->smbchg_register->bat_if_register->base_address + smbchg_ptr->smbchg_register->bat_if_register->zin_icl_lv;
+            break;
+        case PM_SMBCHG_BAT_IF_DCIN_HIGH_VOLT_MODE:
+            reg = smbchg_ptr->smbchg_register->bat_if_register->base_address + smbchg_ptr->smbchg_register->bat_if_register->zin_icl_hv;
+            break;
+        default:
+            return PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+        }
+
+        pm_smbchg_bat_if_return_reg_value(current_ma, current_limits, DCIN_SIZE, &data);
+        errFlag |= pm_smbchg_bat_if_unlock_perph_write(smbchg_ptr);
+        errFlag = pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, reg, 0x1F, data, 0);
+    }
+
+    return errFlag;
+}
+
+/*This API reads the configured current limit for pass through mode, low volt mode and high volt mode in milliamp*/
+pm_err_flag_type pm_smbchg_bat_if_get_dcin_input_current_limit(uint32 device_index, pm_smbchg_bat_if_dcin_icl_type dcin_icl_type, uint32 *current_ma)
+{
+    pm_err_flag_type errFlag = PM_ERR_FLAG__SUCCESS;
+    pm_register_data_type data = 0;
+    pm_register_address_type reg;
+
+    pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+
+    if (NULL == smbchg_ptr)
+    {
+        errFlag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+    }
+    else if (dcin_icl_type >= PM_SMBCHG_BAT_IF_DCIN_INVALID_MODE)
+    {
+        errFlag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+    }
+    else if (NULL == current_ma)
+    {
+        errFlag = PM_ERR_FLAG__PAR3_OUT_OF_RANGE;
+    }
+    else
+    {
+        uint32 *current_limits = smbchg_ptr->chg_range_data->dcin_current_limits;
+
+        switch (dcin_icl_type)
+        {
+        case PM_SMBCHG_BAT_IF_DCIN_PASS_THROUGH_MODE:
+            reg = smbchg_ptr->smbchg_register->bat_if_register->base_address + smbchg_ptr->smbchg_register->bat_if_register->zin_icl_pt;
+            break;
+        case PM_SMBCHG_BAT_IF_DCIN_LOW_VOLT_MODE:
+            reg = smbchg_ptr->smbchg_register->bat_if_register->base_address + smbchg_ptr->smbchg_register->bat_if_register->zin_icl_lv;
+            break;
+        case PM_SMBCHG_BAT_IF_DCIN_HIGH_VOLT_MODE:
+            reg = smbchg_ptr->smbchg_register->bat_if_register->base_address + smbchg_ptr->smbchg_register->bat_if_register->zin_icl_hv;
+            break;
+        default:
+            return PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+        }
+
+        errFlag = pm_comm_read_byte_mask(smbchg_ptr->comm_ptr->slave_id, reg, 0x1F, &data, 0);
+        if (DCIN_SIZE <= data)
+        {
+           errFlag |= PM_ERR_FLAG__INVALID;
+        }
+        else
+        {
+           *current_ma = current_limits[data];
+        }
+    }
+
+    return errFlag;
+}
+
+///////////////////////////////
+/*This API configures WI PWR timer. div2 falling edge values: 0, 150, 250, 500 usec. wipwr_irq_tmr_us values 1000, 1500,2000,2500,3000,4000,4500 usec*/
+///////////////////////////////
+pm_err_flag_type pm_smbchg_bat_if_set_wi_pwr_tmr(uint32 device_index, uint32 div2_falling_edge_time_us, uint32 wipwr_irq_tmr_us)
+{
+    pm_err_flag_type errFlag = PM_ERR_FLAG__SUCCESS;
+    pm_register_data_type data;
+    pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+
+    if (NULL == smbchg_ptr)
+    {
+        errFlag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+    }
+    else
+    {
+        pm_register_data_type wi_pwr_tmr = smbchg_ptr->smbchg_register->bat_if_register->base_address + smbchg_ptr->smbchg_register->bat_if_register->wi_pwr_tmr;
+
+        /*div2_falling_edge_time_us: 0 - 0, 1 - 150, 2 - 250, 3 - 500 us*/
+        div2_falling_edge_time_us = (div2_falling_edge_time_us > 250) ? 0x3 : ((div2_falling_edge_time_us - 50) / 100);
+
+        /*wipwr_irq_tmr_us: 0 - 1000, 1 - 1500, 2 - 2000, 3 - 2500, 4 - 3000, 5 - 3500, 6 -4000, 7 - 4500 us*/
+        wipwr_irq_tmr_us = (wipwr_irq_tmr_us > 4500) ? 5 : (wipwr_irq_tmr_us - 1000) / 500;
+
+        data = (div2_falling_edge_time_us << 4) | wipwr_irq_tmr_us;
+        errFlag = pm_smbchg_bat_if_unlock_perph_write(smbchg_ptr);
+        errFlag |= pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, wi_pwr_tmr, 0x3F, data, 0);
+    }
+
+    return errFlag;
+}
+
+/*This API reads the WIPWR timer settings*/
+pm_err_flag_type pm_smbchg_bat_if_get_wi_pwr_tmr(uint32 device_index, uint32 *div2_falling_edge_time_us, uint32 *wipwr_irq_tmr_us)
+{
+    pm_err_flag_type errFlag = PM_ERR_FLAG__SUCCESS;
+    pm_register_data_type data;
+    pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+
+    if (NULL == smbchg_ptr)
+    {
+        errFlag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+    }
+    else if (NULL == div2_falling_edge_time_us)
+    {
+        errFlag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+    }
+    else if (NULL == wipwr_irq_tmr_us)
+    {
+        errFlag = PM_ERR_FLAG__PAR3_OUT_OF_RANGE;
+    }
+    else
+    {
+        pm_register_data_type wi_pwr_tmr = smbchg_ptr->smbchg_register->bat_if_register->base_address + smbchg_ptr->smbchg_register->bat_if_register->wi_pwr_tmr;
+
+        errFlag = pm_comm_read_byte(smbchg_ptr->comm_ptr->slave_id, wi_pwr_tmr, &data, 0);
+        /*div2_falling_edge_time_us: 0 - 0, 1 - 150, 2 - 250, 3 - 500 us*/
+        *div2_falling_edge_time_us = ((data & 0x30) == 0x30) ? 500 : (((data & 0x30) >> 4) * 100 + 2);
+
+        /*wipwr_irq_tmr_us: 0 - 1000, 1 - 1500, 2 - 2000, 3 - 2500, 4 - 3000, 5 - 3500, 6 -4000, 7 - 4500 us*/
+        *wipwr_irq_tmr_us = (data & 0x7) * 500 + 1000;
+    }
+
+    return errFlag;
+}
+
+
+pm_err_flag_type pm_smbchg_bat_if_irq_enable(uint32 device_index, pm_smbchg_bat_if_irq_type irq, boolean enable)
+{
+    pm_err_flag_type    errFlag    = PM_ERR_FLAG__SUCCESS;
+    pm_register_address_type irq_reg;
+    pm_register_data_type data = 1 << irq;
+
+    pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+
+    if (NULL == smbchg_ptr)
+    {
+        errFlag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+    }
+    else if (irq >= PM_SMBCHG_BAT_IF_IRQ_INVALID)
+    {
+        errFlag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+    }
+    else
+    {
+        if (enable)
+        {
+            irq_reg = smbchg_ptr->smbchg_register->bat_if_register->base_address + smbchg_ptr->smbchg_register->bat_if_register->int_en_set;
+        }
+        else
+        {
+            irq_reg = smbchg_ptr->smbchg_register->bat_if_register->base_address + smbchg_ptr->smbchg_register->bat_if_register->int_en_clr;
+        }
+
+        errFlag = pm_comm_write_byte(smbchg_ptr->comm_ptr->slave_id, irq_reg, data, 0);
+    }
+    return errFlag;
+}
+
+pm_err_flag_type pm_smbchg_bat_if_irq_clear(uint32  device_index, pm_smbchg_bat_if_irq_type irq)
+{
+    pm_err_flag_type    errFlag    = PM_ERR_FLAG__SUCCESS;
+    pm_register_data_type data = 1 << irq;
+    pm_register_address_type int_latched_clr;
+    pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+
+    if (NULL == smbchg_ptr)
+    {
+        errFlag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+    }
+    else if (irq >= PM_SMBCHG_BAT_IF_IRQ_INVALID)
+    {
+        errFlag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+    }
+    else
+    {
+        int_latched_clr = smbchg_ptr->smbchg_register->bat_if_register->base_address + smbchg_ptr->smbchg_register->bat_if_register->int_latched_clr;
+        errFlag = pm_comm_write_byte(smbchg_ptr->comm_ptr->slave_id, int_latched_clr, data, 0);
+    }
+
+    return errFlag;
+}
+
+
+pm_err_flag_type pm_smbchg_bat_if_irq_set_trigger(uint32 device_index, pm_smbchg_bat_if_irq_type irq, pm_irq_trigger_type trigger)
+{
+    pm_err_flag_type    errFlag    = PM_ERR_FLAG__SUCCESS;
+    uint8 mask = 1 << irq;
+    pm_register_data_type set_type, polarity_high, polarity_low;
+    pm_register_address_type int_set_type, int_polarity_high, int_polarity_low;
+
+    pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+
+    if (NULL == smbchg_ptr)
+    {
+        errFlag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+    }
+    else if (irq >= PM_SMBCHG_BAT_IF_IRQ_INVALID)
+    {
+        errFlag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+    }
+    else
+    {
+        int_set_type = smbchg_ptr->smbchg_register->bat_if_register->base_address + smbchg_ptr->smbchg_register->bat_if_register->int_set_type;
+        int_polarity_high = smbchg_ptr->smbchg_register->bat_if_register->base_address + smbchg_ptr->smbchg_register->bat_if_register->int_polarity_high;
+        int_polarity_low = smbchg_ptr->smbchg_register->bat_if_register->base_address + smbchg_ptr->smbchg_register->bat_if_register->int_polarity_low;
+
+        switch (trigger)
+        {
+        case PM_IRQ_TRIGGER_ACTIVE_LOW:
+            set_type = 0x00;
+            polarity_high = 0x00;
+            polarity_low = 0xFF;
+            break;
+        case PM_IRQ_TRIGGER_ACTIVE_HIGH:
+            set_type = 0x00;
+            polarity_high = 0xFF;
+            polarity_low = 0x00;
+            break;
+        case PM_IRQ_TRIGGER_RISING_EDGE:
+            set_type = 0xFF;
+            polarity_high = 0xFF;
+            polarity_low = 0x00;
+            break;
+        case PM_IRQ_TRIGGER_FALLING_EDGE:
+            set_type = 0xFF;
+            polarity_high = 0x00;
+            polarity_low = 0xFF;
+            break;
+        case PM_IRQ_TRIGGER_DUAL_EDGE:
+            set_type = 0xFF;
+            polarity_high = 0xFF;
+            polarity_low = 0xFF;
+            break;
+        default:
+            return PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+        }
+        errFlag = pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, int_set_type, mask, set_type, 0);
+        errFlag |= pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, int_polarity_high, mask, polarity_high, 0);
+        errFlag |= pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, int_polarity_low, mask, polarity_low, 0);
+    }
+
+    return errFlag;
+}
+
+
+pm_err_flag_type pm_smbchg_bat_if_irq_status(uint32 device_index, pm_smbchg_bat_if_irq_type irq, pm_irq_status_type type, boolean *status)
+{
+    pm_err_flag_type    errFlag    = PM_ERR_FLAG__SUCCESS;
+    pm_register_data_type data;
+    uint8 mask = 1 << irq;
+    pm_register_address_type int_sts;
+    pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+
+    if (NULL == smbchg_ptr)
+    {
+        errFlag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+    }
+    else if (irq >= PM_SMBCHG_BAT_IF_IRQ_INVALID)
+    {
+        errFlag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+    }
+    else
+    {
+        switch (type)
+        {
+        case PM_IRQ_STATUS_RT:
+            int_sts = smbchg_ptr->smbchg_register->bat_if_register->base_address + smbchg_ptr->smbchg_register->bat_if_register->int_rt_sts;
+            break;
+        case PM_IRQ_STATUS_LATCHED:
+            int_sts = smbchg_ptr->smbchg_register->bat_if_register->base_address + smbchg_ptr->smbchg_register->bat_if_register->int_latched_sts;
+            break;
+        case PM_IRQ_STATUS_PENDING:
+            int_sts = smbchg_ptr->smbchg_register->bat_if_register->base_address + smbchg_ptr->smbchg_register->bat_if_register->int_pending_sts;
+            break;
+        default:
+            return PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+        }
+
+        errFlag = pm_comm_read_byte_mask(smbchg_ptr->comm_ptr->slave_id, int_sts, mask, &data, 0);
+        *status = data ? TRUE : FALSE;
+    }
+
+    return errFlag;
+}
+
+/*Find the nearest register value corresponding to input_data*/
+static void pm_smbchg_bat_if_return_reg_value(uint32 input_data, uint32 *array, uint32 array_size, pm_register_data_type *reg_value)
+{
+    uint32 loc = 0;
+
+    while (loc < array_size)
+    {
+        if (input_data < array[loc])
+        {
+            break;
+        }
+        else
+        {
+            loc++;
+        }
+    }
+
+    *reg_value = (loc) ? (loc - 1) : 0;
+
+    return;
+}
+
+
+static inline pm_err_flag_type pm_smbchg_bat_if_unlock_perph_write(pm_smbchg_data_type *smbchg_ptr)
+{
+    pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+
+    if (NULL == smbchg_ptr)
+    {
+        err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+    }
+    else
+    {
+        pm_register_address_type sec_access = smbchg_ptr->smbchg_register->bat_if_register->base_address + smbchg_ptr->smbchg_register->bat_if_register->sec_access;
+        err_flag = pm_comm_write_byte(smbchg_ptr->comm_ptr->slave_id, sec_access, 0xA5, 0);
+    }
+
+    return err_flag;
+}
+
diff --git a/dev/pmic/pmi8994/pm_smbchg_chgr.c b/dev/pmic/pmi8994/pm_smbchg_chgr.c
new file mode 100644
index 0000000..2179772
--- /dev/null
+++ b/dev/pmic/pmi8994/pm_smbchg_chgr.c
@@ -0,0 +1,1091 @@
+/* Copyright (c) 2015, The Linux Foundation. All rights reserved.
+
+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 Linux Foundation nor the names of its
+      contributors may be used to endorse or promote products derived
+      from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*===========================================================================
+
+					INCLUDE FILES
+
+===========================================================================*/
+#include "pm_smbchg_chgr.h"
+#include "pm_smbchg_driver.h"
+#include <sys/types.h>
+
+static inline pm_err_flag_type pm_smbchg_chgr_unlock_perph_write(pm_smbchg_data_type *smbchg);
+
+
+/*Find the nearest register value corresponding to input_data*/
+//static void pm_smbchg_chgr_return_reg_value(uint32 input_data, uint32 *array, uint32 array_size, pm_register_data_type *reg_value)
+//{
+//   uint32 position = 0;
+//
+//   while (position < array_size)
+//   {
+//      if (input_data < array[position])
+//      {
+//         break;
+//      }
+//      else
+//      {
+//         position++;
+//      }
+//   }
+//
+//   *reg_value = (position) ? (position - 1) : 0;
+//
+//   return;
+//}
+
+//@todo: implement pm_smbchg_chgr_chg_option
+
+/*This API returns if battery is above VBAT_WEAK threshold or not*/
+pm_err_flag_type pm_smbchg_chgr_vbat_sts(uint32 device_index, boolean *is_above_vbat_weak)
+{
+   pm_err_flag_type    err_flag    = PM_ERR_FLAG__SUCCESS;
+   pm_register_data_type data;
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+
+   if (NULL == smbchg_ptr)
+   {
+      err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else if (NULL == is_above_vbat_weak)
+   {
+      err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+   }
+   else
+   {
+      pm_register_address_type vbat_status  = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->vbat_status;
+
+      err_flag = pm_comm_read_byte(smbchg_ptr->comm_ptr->slave_id, vbat_status, &data, 0);
+
+      if (PM_ERR_FLAG__SUCCESS == err_flag)
+      {
+         *is_above_vbat_weak = (data & 0x2) ? TRUE : FALSE;
+      }
+   }
+
+   return err_flag;
+}
+
+//This API returns the float vlotage status
+pm_err_flag_type pm_smbchg_chgr_get_float_volt_sts(uint32 device_index, boolean *aicl_in_hard_limit, uint32 *fv_mv)
+{
+   pm_err_flag_type    err_flag    = PM_ERR_FLAG__SUCCESS;
+   pm_register_data_type data;
+   uint32 temp_data;
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+
+   if (NULL == smbchg_ptr)
+   {
+      err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else if (NULL == fv_mv)
+   {
+      err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+   }
+   else
+   {
+      pm_register_address_type fv_sts  = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->fv_sts;
+
+      err_flag = pm_comm_read_byte(smbchg_ptr->comm_ptr->slave_id, fv_sts, &data, 0);
+
+      if (PM_ERR_FLAG__SUCCESS == err_flag)
+      {
+         *aicl_in_hard_limit = (data & 0x40) ? TRUE : FALSE;
+         temp_data = data & 0x3F;
+         if (temp_data < 0x5)
+         {
+            temp_data = 3600;
+         }
+         if (temp_data >= 0x22)
+         {
+            temp_data = 4500;
+         }
+         else
+         {
+            temp_data = (temp_data > 0x2D) ? (3620 + ((temp_data - 0x5) * 20)) : (3600 + ((temp_data - 0x5) * 20));
+         }
+
+         *fv_mv = temp_data;
+      }
+   }
+
+   return err_flag;
+}
+
+/*This API returns the pre charger and fast charger current status in milliamp*/
+pm_err_flag_type pm_smbchg_chgr_get_chg_i_sts(uint32 device_index, uint32 *pre_charge_current_ma, uint32 *fast_charge_current_ma)
+{
+   pm_err_flag_type      err_flag    = PM_ERR_FLAG__SUCCESS;
+   pm_register_data_type data;
+
+
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+
+   if (NULL == smbchg_ptr)
+   {
+      err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else if (NULL == fast_charge_current_ma)
+   {
+      err_flag = PM_ERR_FLAG__PAR3_OUT_OF_RANGE;
+   }
+   else
+   {
+     uint32 *charge_current = smbchg_ptr->chg_range_data->usbin_current_limits;
+     if ( NULL == charge_current)
+     {
+        err_flag |= PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+     }
+      pm_register_address_type ichg_sts = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->ichg_sts;
+
+      err_flag = pm_comm_read_byte(smbchg_ptr->comm_ptr->slave_id, ichg_sts, &data, 0);
+
+      if (PM_ERR_FLAG__SUCCESS == err_flag)
+      {
+         *pre_charge_current_ma = ((data >> 5) & 0x04) ? 550 : (100 + ((data >> 5) * 50));
+
+         *fast_charge_current_ma = charge_current[data & 0x1F];
+      }
+   }
+
+   return err_flag;
+}
+
+/*This API reads the various charging status*/
+pm_err_flag_type pm_smbchg_chgr_get_chgr_sts(uint32 device_index, pm_smbchg_chgr_chgr_status_type *chgr_sts)
+{
+   pm_err_flag_type      err_flag    = PM_ERR_FLAG__SUCCESS;
+   pm_register_data_type data;
+   pm_register_address_type chgr_sts_reg;
+
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+
+   if (NULL == smbchg_ptr)
+   {
+      err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else if (NULL == chgr_sts)
+   {
+      err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+   }
+   else
+   {
+      chgr_sts_reg = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->chgr_sts;
+
+      err_flag = pm_comm_read_byte(smbchg_ptr->comm_ptr->slave_id, chgr_sts_reg, &data, 0);
+
+      if (PM_ERR_FLAG__SUCCESS == err_flag)
+      {
+         chgr_sts->is_net_i_discharg       = (data & 0x80) ? TRUE : FALSE;
+         chgr_sts->is_auto_fv_comp_active  = (data & 0x40) ? TRUE : FALSE;
+         chgr_sts->is_chgr_done_once       = (data & 0x20) ? TRUE : FALSE;
+         chgr_sts->is_batt_lt_2v           = (data & 0x10) ? TRUE : FALSE;
+         chgr_sts->is_chgr_in_hold_off     = (data & 0x8) ? TRUE : FALSE;
+         chgr_sts->charging_type           = (pm_smbchg_chgr_charging_type)((data & 0x6) >> 1);
+         chgr_sts->charger_enable          = (data & 0x1) ? TRUE : FALSE;
+      }
+   }
+
+   return err_flag;
+}
+
+/*This API configures the pre-charger current value in milliamp. Valid values are 100 to 550 mAmp*/
+pm_err_flag_type pm_smbchg_chgr_set_pre_chg_i(uint32 device_index, uint32 pre_chg_i_ma)
+{
+   pm_err_flag_type      err_flag    = PM_ERR_FLAG__SUCCESS;
+   pm_register_data_type data;
+   pm_register_address_type pcc_cfg;
+
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+   if (NULL == smbchg_ptr)
+   {
+      err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else
+   {
+      pcc_cfg = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->pcc_cfg;
+
+      pre_chg_i_ma = (pre_chg_i_ma<100)? 100 : pre_chg_i_ma;
+
+      data = (pre_chg_i_ma > 250) ? 0x4 : ((pre_chg_i_ma - 100) / 50);
+
+      err_flag = pm_smbchg_chgr_unlock_perph_write(smbchg_ptr);
+      err_flag |= pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, pcc_cfg, 0x7, data, 0);
+   }
+
+   return err_flag;
+}
+
+/*This API configures the fast-charger current value in milliamp. Valid values are 300 to 3000 mAmp*/
+pm_err_flag_type pm_smbchg_chgr_set_fast_chg_i(uint32 device_index, uint32 fast_chag_i_ma)
+{
+   pm_err_flag_type      err_flag    = PM_ERR_FLAG__SUCCESS;
+   pm_register_data_type data = 0;
+
+
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+   if (NULL == smbchg_ptr)
+   {
+      err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else
+   {
+     uint32 *charge_current = smbchg_ptr->chg_range_data->usbin_current_limits;
+      pm_register_address_type fcc_cfg = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->fcc_cfg;
+
+      while (data < USBIN_SIZE)
+      {
+         if (charge_current[data] > fast_chag_i_ma)
+         {
+            break;
+         }
+         else
+         {
+            data++;
+         }
+      }
+
+      data = (data < USBIN_SIZE) ? (data - 1) : 0;
+
+      err_flag = pm_smbchg_chgr_unlock_perph_write(smbchg_ptr);
+      err_flag |= pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, fcc_cfg, 0x1F, data, 0);
+   }
+
+   return err_flag;
+}
+
+/*This API configures the fast-charger current compensation value in milliamp. Valid values are 300 to 1200 mAmp*/
+pm_err_flag_type pm_smbchg_chgr_set_fast_chg_i_cmpn(uint32 device_index, uint32 fast_chg_i_cmp_ma)
+{
+   pm_err_flag_type      err_flag    = PM_ERR_FLAG__SUCCESS;
+   pm_register_data_type data;
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+   if (NULL == smbchg_ptr)
+   {
+      err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else
+   {
+      pm_register_address_type fcc_cmp_cfg = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->fcc_cmp_cfg;
+
+      if (fast_chg_i_cmp_ma < 700)
+      {
+         data = 0x00;
+      }
+      else if (fast_chg_i_cmp_ma < 900)
+      {
+         data = 0x01;
+      }
+      else if (fast_chg_i_cmp_ma < 1200)
+      {
+         data = 0x02;
+      }
+      else
+      {
+         data = 0x03;
+      }
+
+      err_flag = pm_smbchg_chgr_unlock_perph_write(smbchg_ptr);
+      err_flag |= pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, fcc_cmp_cfg, 0x3, data, 0);
+   }
+
+   return err_flag;
+}
+
+/*This API configures the floating voltage. Valid range is 3600mV to 4500 mv*/
+pm_err_flag_type pm_smbchg_chgr_set_float_volt(uint32 device_index, uint32 float_volt_mv)
+{
+   pm_err_flag_type  err_flag  = PM_ERR_FLAG__SUCCESS;
+   pm_register_data_type data;
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+   if (NULL == smbchg_ptr)
+   {
+      err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else
+   {
+      pm_register_address_type fv_cfg = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->fv_cfg;
+
+      if (float_volt_mv < 3600)
+      {
+         data = 0x5;
+      }
+      else if (float_volt_mv > 4500)
+      {
+         data = 0x33;
+      }
+      else
+      {
+         data = ((float_volt_mv - 3600) / 20) + 5;
+      }
+
+      err_flag = pm_smbchg_chgr_unlock_perph_write(smbchg_ptr);
+      err_flag |= pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, fv_cfg, 0x3F, data, 0);
+   }
+
+   return err_flag;
+}
+
+
+pm_err_flag_type pm_smbchg_chgr_get_float_volt_cfg(uint32 device_index, uint32 *float_volt_mv)
+{
+   pm_err_flag_type  err_flag  = PM_ERR_FLAG__SUCCESS;
+   pm_register_data_type data;
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+   if (NULL == smbchg_ptr)
+   {
+      err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else if (NULL == float_volt_mv)
+   {
+      err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+   }
+   else
+   {
+      pm_register_address_type fv_cfg = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->fv_cfg;
+      err_flag = pm_comm_read_byte_mask(smbchg_ptr->comm_ptr->slave_id, fv_cfg, 0x3F, &data, 0);
+      *float_volt_mv = (data > 0x5) ? 0x00 : (3600 + ((data - 0x5) * 20));
+   }
+
+   return err_flag;
+}
+
+/*This api sets floating voltage conpmensation code. Valid value is from 0 to 6300 mV*/
+pm_err_flag_type pm_smbchg_chgr_set_float_volt_cmpn(uint32 device_index, uint32 float_volt_cmpn)
+{
+   pm_err_flag_type  err_flag  = PM_ERR_FLAG__SUCCESS;
+   pm_register_data_type data;
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+   if (NULL == smbchg_ptr)
+   {
+      err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else
+   {
+      pm_register_address_type fv_cmp_cfg = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->fv_cmp_cfg;
+
+      data = (float_volt_cmpn > 6300) ? 63 : float_volt_cmpn/100;
+      err_flag = pm_smbchg_chgr_unlock_perph_write(smbchg_ptr);
+      err_flag |= pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, fv_cmp_cfg, 0x3F, data, 0);
+   }
+
+   return err_flag;
+}
+
+
+/*This api reads floating voltage conpmensation code settings. Valid value is from 0 to 63*/
+pm_err_flag_type pm_smbchg_chgr_get_float_volt_cmpn(uint32 device_index, uint32 *float_volt_cmpn)
+{
+   pm_err_flag_type  err_flag  = PM_ERR_FLAG__SUCCESS;
+   pm_register_data_type data;
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+   if (NULL == smbchg_ptr)
+   {
+      err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else if (NULL == float_volt_cmpn)
+   {
+      err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+   }
+   else
+   {
+      pm_register_address_type fv_cmp_cfg = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->fv_cmp_cfg;
+      err_flag = pm_comm_read_byte_mask(smbchg_ptr->comm_ptr->slave_id, fv_cmp_cfg, 0x3F, &data, 0);
+      *float_volt_cmpn = data * 10;
+   }
+
+   return err_flag;
+}
+
+/*This api enables/disables Charger Auto Float Voltage Compensation*/
+pm_err_flag_type pm_smbchg_chgr_en_afvc(uint32 device_index, boolean enable)
+{
+   pm_err_flag_type  err_flag  = PM_ERR_FLAG__SUCCESS;
+   pm_register_data_type data;
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+   if (NULL == smbchg_ptr)
+   {
+      err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else
+   {
+      pm_register_address_type cfg_afvc = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->cfg_afvc;
+      data = (enable) ? TRUE : FALSE;
+      err_flag = pm_smbchg_chgr_unlock_perph_write(smbchg_ptr);
+      err_flag |= pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, cfg_afvc, 0x7, data, 0);
+   }
+
+   return err_flag;
+}
+
+/*This API sets charge inhibit level*/
+pm_err_flag_type pm_smbchg_chgr_set_inhibi_threshold(uint32 device_index, uint32 inhibit_lvl_mv)
+{
+   pm_err_flag_type  err_flag  = PM_ERR_FLAG__SUCCESS;
+   pm_register_data_type data;
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+   if (NULL == smbchg_ptr)
+   {
+      err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else
+   {
+      if (inhibit_lvl_mv < 100)
+      {
+         data = 0x00;
+      }
+      else if (inhibit_lvl_mv < 200)
+      {
+         data = 0x1;
+      }
+      else if (inhibit_lvl_mv < 300)
+      {
+         data = 0x2;
+      }
+      else
+      {
+         data = 0x3;
+      }
+
+      pm_register_address_type cfg_chg_inhib = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->cfg_chg_inhib;
+      err_flag = pm_smbchg_chgr_unlock_perph_write(smbchg_ptr);
+      err_flag |= pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, cfg_chg_inhib, 0x3, data, 0);
+   }
+
+   return err_flag;
+}
+
+/*This API reads charge inhibit level configured*/
+pm_err_flag_type pm_smbchg_chgr_get_inhibi_threshold(uint32 device_index, uint32 *inhibit_lvl_mv)
+{
+   pm_err_flag_type  err_flag  = PM_ERR_FLAG__SUCCESS;
+   pm_register_data_type data;
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+   if (NULL == smbchg_ptr)
+   {
+      err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else if (NULL == inhibit_lvl_mv)
+   {
+      err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+   }
+   else
+   {
+      pm_register_address_type cfg_chg_inhib = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->cfg_chg_inhib;
+      err_flag = pm_comm_read_byte_mask(smbchg_ptr->comm_ptr->slave_id, cfg_chg_inhib, 0x3, &data, 0);
+      *inhibit_lvl_mv = (data == 0x00) ? 50 : (data * 100);
+   }
+
+   return err_flag;
+}
+
+/*This API sets the pre-charge to full charger threshold. Valid range is 2400mV to 3000mV*/
+pm_err_flag_type pm_smbchg_chgr_set_p2f_threshold(uint32 device_index, uint32 milli_volt)
+
+{
+   pm_err_flag_type  err_flag  = PM_ERR_FLAG__SUCCESS;
+   pm_register_data_type data;
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+   if (NULL == smbchg_ptr)
+   {
+      err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else
+   {
+      if (milli_volt < 2600)
+      {
+         data = 0x00;
+      }
+      else if (milli_volt < 2800)
+      {
+         data = 0x1;
+      }
+      else if (milli_volt < 3000)
+      {
+         data = 0x2;
+      }
+      else
+      {
+         data = 0x3;
+      }
+
+      pm_register_address_type cfg_p2f = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->cfg_p2f;
+      err_flag = pm_smbchg_chgr_unlock_perph_write(smbchg_ptr);
+      err_flag |= pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, cfg_p2f, 0x3, data, 0);
+   }
+
+   return err_flag;
+}
+
+
+/*This API reads the pre-charge to full charger threshold. Valid range is 2400mV to 3000mV*/
+pm_err_flag_type pm_smbchg_chgr_get_p2f_threshold(uint32 device_index, uint32 *milli_volt)
+{
+   pm_err_flag_type  err_flag  = PM_ERR_FLAG__SUCCESS;
+   pm_register_data_type data;
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+   if (NULL == smbchg_ptr)
+   {
+      err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else if (NULL == milli_volt)
+   {
+      err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+   }
+   else
+   {
+      pm_register_address_type cfg_p2f = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->cfg_p2f;
+      err_flag = pm_comm_read_byte_mask(smbchg_ptr->comm_ptr->slave_id, cfg_p2f, 0x3, &data, 0);
+      *milli_volt = 2400 + (200 * data);
+   }
+
+   return err_flag;
+}
+
+
+/*This API sets the charge termination current in milliamp */
+pm_err_flag_type pm_smbchg_chgr_set_charge_termination_current(uint32 device_index, uint32 current_ma)
+{
+   pm_err_flag_type  err_flag  = PM_ERR_FLAG__SUCCESS;
+   pm_register_data_type data;
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+   if (NULL == smbchg_ptr)
+   {
+      err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else
+   {
+      /* 000 = 300mA, 001 = 50mA, 010 = 100mA, 011 = 150mA, 100 = 200mA, 101 = 250mA, 110 =500mA, 111 = 600mA */
+      if (current_ma < 300)
+      {
+         data = (current_ma / 50) ? (current_ma / 50) : 0x1;
+      }
+      else if (current_ma < 500)
+      {
+         data = 0x00;
+      }
+      else
+      {
+         data = (current_ma < 600) ? 0x6 : 0x7;
+      }
+
+      pm_register_address_type cfg_tcc = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->cfg_tcc;
+      err_flag = pm_smbchg_chgr_unlock_perph_write(smbchg_ptr);
+      err_flag |= pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, cfg_tcc, 0x7, data, 0);
+   }
+
+   return err_flag;
+}
+
+
+/*This API reads the charge termination current_ma*/
+pm_err_flag_type pm_smbchg_chgr_get_charge_termination_current(uint32 device_index, uint32 *current_ma)
+{
+   pm_err_flag_type  err_flag  = PM_ERR_FLAG__SUCCESS;
+   pm_register_data_type data;
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+   if (NULL == smbchg_ptr)
+   {
+      err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else if (NULL == current_ma)
+   {
+      err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+   }
+   else
+   {
+      pm_register_address_type cfg_tcc = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->cfg_tcc;
+      err_flag = pm_comm_read_byte_mask(smbchg_ptr->comm_ptr->slave_id, cfg_tcc, 0x7, &data, 0);
+      if (data == 0)
+      {
+         *current_ma = 300;
+      }
+      else if (data < 5)
+      {
+         *current_ma = 50 * data;
+      }
+      else
+      {
+         *current_ma = 100 * (data - 1);
+      }
+   }
+
+   return err_flag;
+}
+
+
+/*This API configures charge temperature compensation type*/
+pm_err_flag_type pm_smbchg_chgr_config_chgr_temp_cmpn(uint32 device_index, pm_smbchg_chgr_ccmpn_type ccmpn_type, boolean enable)
+{
+   pm_err_flag_type  err_flag  = PM_ERR_FLAG__SUCCESS;
+
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+
+   if (NULL == smbchg_ptr)
+   {
+      err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else if (PM_SMBCHG_CHGR_CCMPN__INVALID == ccmpn_type)
+   {
+      err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+   }
+   else
+   {
+      pm_register_address_type ccmp_cfg = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->ccmp_cfg;
+      err_flag = pm_smbchg_chgr_unlock_perph_write(smbchg_ptr);
+      err_flag |= pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, ccmp_cfg, (0x1 << ccmpn_type), (pm_register_data_type)(enable << ccmpn_type), 0);
+   }
+
+   return err_flag;
+}
+
+
+/*This API reads configured charge temperature compensation type*/
+pm_err_flag_type pm_smbchg_chgr_get_chgr_temp_cmpn_config(uint32 device_index, pm_smbchg_chgr_ccmpn_type ccmpn_type, boolean *enable)
+{
+   pm_err_flag_type  err_flag  = PM_ERR_FLAG__SUCCESS;
+   pm_register_data_type data;
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+
+   if (NULL == smbchg_ptr)
+   {
+      err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else if (PM_SMBCHG_CHGR_CCMPN__INVALID == ccmpn_type)
+   {
+      err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+   }
+   else
+   {
+      pm_register_address_type ccmp_cfg = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->ccmp_cfg;
+      err_flag = pm_comm_read_byte(smbchg_ptr->comm_ptr->slave_id, ccmp_cfg, &data, 0);
+      *enable = (data & (0x1 << ccmpn_type)) ? TRUE : FALSE;
+   }
+
+   return err_flag;
+}
+
+
+/*This API sets charger configuration */
+pm_err_flag_type pm_smbchg_chgr_config_chgr(uint32 device_index, pm_chgr_chgr_cfg_type *chgr_cfg_type)
+{
+   pm_err_flag_type  err_flag  = PM_ERR_FLAG__SUCCESS;
+   pm_register_data_type data1, data2;
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+
+   if (NULL == smbchg_ptr)
+   {
+      err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else if (NULL == chgr_cfg_type)
+   {
+      err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+   }
+   else if (chgr_cfg_type->sysok_opt >= PM_SMBCHG_CHGR_SYSOK_OPT__INVALID)
+   {
+      err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+   }
+   else
+   {
+      data1 =  (chgr_cfg_type->cont_without_fg_ready) | (chgr_cfg_type->is_rchg_threshold_src_fg << 1) | (chgr_cfg_type->is_term_current_src_fg << 2)
+         | (chgr_cfg_type->en_early_current_termination << 3) | (chgr_cfg_type->sysok_opt << 4) | (chgr_cfg_type->en_sysok_pol_table_n << 7);
+
+      data2 =  (chgr_cfg_type->en_charger_inhibit) | (chgr_cfg_type->is_holdoff_tmr_350ms << 1) | (chgr_cfg_type->auto_rchg_dis << 2) | (chgr_cfg_type->current_termination_dis << 3)
+         | (chgr_cfg_type->batt_ov_ends_cycle_en << 4) | (chgr_cfg_type->p2f_chg_tran_require_cmd << 5);
+
+      pm_register_address_type chgr_cfg1 = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->chgr_cfg1;
+      pm_register_address_type chgr_cfg2 = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->chgr_cfg2;
+
+      err_flag = pm_smbchg_chgr_unlock_perph_write(smbchg_ptr);
+      err_flag |= pm_comm_write_byte(smbchg_ptr->comm_ptr->slave_id, chgr_cfg1, data1, 0);
+
+      err_flag |= pm_smbchg_chgr_unlock_perph_write(smbchg_ptr);
+      err_flag |= pm_comm_write_byte(smbchg_ptr->comm_ptr->slave_id, chgr_cfg2, data2, 0);
+   }
+
+   return err_flag;
+}
+
+/*This API reads charger configuration */
+pm_err_flag_type pm_smbchg_chgr_get_chgr_config(uint32 device_index, pm_chgr_chgr_cfg_type *chgr_cfg_type)
+{
+   pm_err_flag_type  err_flag  = PM_ERR_FLAG__SUCCESS;
+   pm_register_data_type data1, data2;
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+
+   if (NULL == smbchg_ptr)
+   {
+      err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else if (NULL == chgr_cfg_type)
+   {
+      err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+   }
+   else
+   {
+      pm_register_address_type chgr_cfg1 = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->chgr_cfg1;
+      pm_register_address_type chgr_cfg2 = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->chgr_cfg2;
+
+      err_flag = pm_comm_read_byte(smbchg_ptr->comm_ptr->slave_id, chgr_cfg1, &data1, 0);
+      err_flag |= pm_comm_read_byte(smbchg_ptr->comm_ptr->slave_id, chgr_cfg2, &data2, 0);
+
+      chgr_cfg_type->cont_without_fg_ready        = (data1 & 0x1) ? TRUE : FALSE;
+      chgr_cfg_type->is_rchg_threshold_src_fg     = (data1 & 0x2) ? TRUE : FALSE;
+      chgr_cfg_type->is_term_current_src_fg       = (data1 & 0x4) ? TRUE : FALSE;
+      chgr_cfg_type->en_early_current_termination = (data1 & 0x8) ? TRUE : FALSE;
+      chgr_cfg_type->sysok_opt                    = (pm_smbchg_chgr_sysok_opt_type)((data1 & 0x70) >> 4);
+      chgr_cfg_type->en_sysok_pol_table_n         = (data1 & 0x80) ? TRUE : FALSE;;
+
+      chgr_cfg_type->en_charger_inhibit       = (data2 & 0x1) ?  TRUE : FALSE;
+      chgr_cfg_type->is_holdoff_tmr_350ms     = (data2 & 0x2) ?  TRUE : FALSE;
+      chgr_cfg_type->auto_rchg_dis            = (data2 & 0x4) ?  TRUE : FALSE;
+      chgr_cfg_type->current_termination_dis  = (data2 & 0x8) ?  TRUE : FALSE;
+      chgr_cfg_type->batt_ov_ends_cycle_en    = (data2 & 0x10) ? TRUE : FALSE;
+      chgr_cfg_type->p2f_chg_tran_require_cmd = (data2 & 0x20) ? TRUE : FALSE;
+   }
+
+   return err_flag;
+}
+
+pm_err_flag_type pm_smbchg_chgr_config_sfty_timer(uint32 device_index, uint32 pre_chg_sfty_min, uint32 total_chg_sfty_min, pm_smbchg_chgr_sfty_timer_type sfty_timer_type)
+
+{
+   pm_err_flag_type  err_flag  = PM_ERR_FLAG__SUCCESS;
+   pm_register_data_type data1, data2, data;
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+   if (NULL == smbchg_ptr)
+   {
+      err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else if (sfty_timer_type >= PM_SMBCHG_CHGR_SFTY_TIMER__INVAID_TYPE)
+   {
+      err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+   }
+   else
+   {
+      if (pre_chg_sfty_min < 96)
+      {
+         data1 = (pre_chg_sfty_min < 48) ? 0x0 : 0x1;
+      }
+      else
+      {
+         data1 = (pre_chg_sfty_min < 192) ? 0x2 : 0x3;
+      }
+
+      if (total_chg_sfty_min < 768)
+      {
+         data2 = (total_chg_sfty_min < 384) ? 0x0 : 0x1;
+      }
+      else
+      {
+         data2 = (total_chg_sfty_min < 1536) ? 0x2 : 0x3;
+      }
+
+      data = (sfty_timer_type << 4) | (data2 << 2) | data1;
+
+      pm_register_address_type sft_cfg = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->sft_cfg;
+
+      err_flag = pm_smbchg_chgr_unlock_perph_write(smbchg_ptr);
+      err_flag |= pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, sft_cfg, 0x3F, data, 0);
+   }
+
+   return err_flag;
+}
+
+
+pm_err_flag_type pm_smbchg_chgr_get_sfty_timer_config(uint32 device_index, uint32 *pre_chg_sfty_min, uint32 *total_chg_sfty_min, pm_smbchg_chgr_sfty_timer_type *sfty_timer_type)
+{
+   pm_err_flag_type  err_flag  = PM_ERR_FLAG__SUCCESS;
+   pm_register_data_type data;
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+
+   if (NULL == smbchg_ptr)
+   {
+      err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else if (NULL == pre_chg_sfty_min || NULL == total_chg_sfty_min || NULL == sfty_timer_type)
+   {
+      err_flag = PM_ERR_FLAG__INVALID_POINTER;
+   }
+   else
+   {
+      pm_register_address_type sft_cfg = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->sft_cfg;
+      err_flag = pm_comm_read_byte(smbchg_ptr->comm_ptr->slave_id, sft_cfg, &data, 0);
+
+      *sfty_timer_type = (pm_smbchg_chgr_sfty_timer_type)((data & 0x30) >> 0x4);
+
+      switch (data & 0x3)
+      {
+      case 0:
+         *pre_chg_sfty_min = 24;  break;
+      case 1:
+         *pre_chg_sfty_min = 48;  break;
+      case 2:
+         *pre_chg_sfty_min = 96;  break;
+      default:
+         *pre_chg_sfty_min = 192;
+      }
+
+      switch ((data & 0x6) >> 2)
+      {
+      case 0:
+         *total_chg_sfty_min = 192;  break;
+      case 1:
+         *total_chg_sfty_min = 384;  break;
+      case 2:
+         *total_chg_sfty_min = 768;  break;
+      default:
+         *total_chg_sfty_min = 1536;
+      }
+
+   }
+
+   return err_flag;
+}
+
+
+pm_err_flag_type pm_smbchg_chgr_irq_enable(uint32 device_index, pm_smbchg_chgr_irq_type irq, boolean enable)
+{
+   pm_err_flag_type    err_flag    = PM_ERR_FLAG__SUCCESS;
+   pm_register_address_type irq_reg;
+   pm_register_data_type data = 1 << irq;
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+
+   if (NULL == smbchg_ptr)
+   {
+      err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else if (irq >= PM_SMBCHG_CHGR_IRQ_INVALID)
+   {
+      err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+   }
+   else
+   {
+      if (enable)
+      {
+         irq_reg = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->int_en_set;
+      }
+      else
+      {
+         irq_reg = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->int_en_clr;
+      }
+
+      err_flag = pm_comm_write_byte(smbchg_ptr->comm_ptr->slave_id, irq_reg, data, 0);
+   }
+   return err_flag;
+}
+
+pm_err_flag_type pm_smbchg_chgr_irq_clear(uint32  device_index, pm_smbchg_chgr_irq_type irq)
+{
+   pm_err_flag_type    err_flag    = PM_ERR_FLAG__SUCCESS;
+   pm_register_data_type data = 1 << irq;
+
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+
+   if (NULL == smbchg_ptr)
+   {
+      err_flag =  PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else if (irq >= PM_SMBCHG_CHGR_IRQ_INVALID)
+   {
+      err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else
+   {
+      pm_register_address_type int_latched_clr = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->int_latched_clr;
+      err_flag = pm_comm_write_byte(smbchg_ptr->comm_ptr->slave_id, int_latched_clr, data, 0);
+   }
+
+   return err_flag;
+}
+
+
+pm_err_flag_type pm_smbchg_chgr_irq_set_trigger(uint32 device_index, pm_smbchg_chgr_irq_type irq, pm_irq_trigger_type trigger)
+{
+   pm_err_flag_type    err_flag    = PM_ERR_FLAG__SUCCESS;
+   uint8 mask = 1 << irq;
+   pm_register_data_type set_type, polarity_high, polarity_low;
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+
+   if (NULL == smbchg_ptr)
+   {
+      err_flag =  PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else if (irq >= PM_SMBCHG_CHGR_IRQ_INVALID)
+   {
+      err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+   }
+   else
+   {
+      switch (trigger)
+      {
+      case PM_IRQ_TRIGGER_ACTIVE_LOW:
+         set_type = 0x00;
+         polarity_high = 0x00;
+         polarity_low = 0xFF;
+         break;
+      case PM_IRQ_TRIGGER_ACTIVE_HIGH:
+         set_type = 0x00;
+         polarity_high = 0xFF;
+         polarity_low = 0x00;
+         break;
+      case PM_IRQ_TRIGGER_RISING_EDGE:
+         set_type = 0xFF;
+         polarity_high = 0xFF;
+         polarity_low = 0x00;
+         break;
+      case PM_IRQ_TRIGGER_FALLING_EDGE:
+         set_type = 0xFF;
+         polarity_high = 0x00;
+         polarity_low = 0xFF;
+         break;
+      case PM_IRQ_TRIGGER_DUAL_EDGE:
+         set_type = 0xFF;
+         polarity_high = 0xFF;
+         polarity_low = 0xFF;
+         break;
+      default:
+         return PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+      }
+
+      pm_register_address_type int_set_type = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->int_set_type;
+      pm_register_address_type int_polarity_high = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->int_polarity_high;
+      pm_register_address_type int_polarity_low = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->int_polarity_low;
+
+      err_flag = pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, int_set_type, mask, set_type, 0);
+      err_flag |= pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, int_polarity_high, mask, polarity_high, 0);
+      err_flag |= pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, int_polarity_low, mask, polarity_low, 0);
+   }
+
+   return err_flag;
+}
+
+pm_err_flag_type pm_smbchg_chgr_irq_status(uint32 device_index, pm_smbchg_chgr_irq_type irq, pm_irq_status_type type, boolean *status)
+{
+   pm_err_flag_type    err_flag    = PM_ERR_FLAG__SUCCESS;
+   pm_register_data_type data;
+   uint8 mask = 1 << irq;
+   pm_register_address_type int_sts;
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+
+   if (NULL == smbchg_ptr)
+   {
+      err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else if (irq >= PM_SMBCHG_CHGR_IRQ_INVALID)
+   {
+      err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+   }
+   else if (NULL == status)
+   {
+      err_flag = PM_ERR_FLAG__PAR4_OUT_OF_RANGE;
+   }
+   else
+   {
+      switch (type)
+      {
+      case PM_IRQ_STATUS_RT:
+         int_sts = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->int_rt_sts;
+         break;
+      case PM_IRQ_STATUS_LATCHED:
+         int_sts = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->int_latched_sts;
+         break;
+      case PM_IRQ_STATUS_PENDING:
+         int_sts = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->int_pending_sts;
+         break;
+      default:
+         return PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+      }
+
+      err_flag = pm_comm_read_byte_mask(smbchg_ptr->comm_ptr->slave_id, int_sts, mask, &data, 0);
+      *status = data ? TRUE : FALSE;
+   }
+
+   return err_flag;
+}
+
+static inline pm_err_flag_type pm_smbchg_chgr_unlock_perph_write(pm_smbchg_data_type *smbchg_ptr)
+{
+   pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+
+   if (NULL == smbchg_ptr)
+   {
+      err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else
+   {
+      pm_register_address_type sec_access = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->sec_access;
+      err_flag = pm_comm_write_byte(smbchg_ptr->comm_ptr->slave_id, sec_access, 0xA5, 0);
+   }
+
+   return err_flag;
+}
+
+
+/*This API sets charger source */
+pm_err_flag_type pm_smbchg_chgr_enable_src(uint32 device_index, boolean chg_en_src)
+{
+   pm_err_flag_type  err_flag  = PM_ERR_FLAG__SUCCESS;
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+
+   if (NULL == smbchg_ptr)
+   {
+      err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else
+   {
+      pm_register_address_type chgr_cfg2 = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->chgr_cfg2;
+
+      err_flag = pm_smbchg_chgr_unlock_perph_write(smbchg_ptr);
+      err_flag |= pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, chgr_cfg2, 0x80, chg_en_src, 0);
+   }
+
+   return err_flag;
+}
+
+/*This API sets charger polarity */
+pm_err_flag_type  pm_smbchg_chgr_set_chg_polarity_low (uint32 device_index, boolean chg_pol_low)
+{
+   pm_err_flag_type  err_flag  = PM_ERR_FLAG__SUCCESS;
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+
+   if (NULL == smbchg_ptr)
+   {
+      err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else
+   {
+      pm_register_address_type chgr_cfg2 = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->chgr_cfg2;
+
+      err_flag = pm_smbchg_chgr_unlock_perph_write(smbchg_ptr);
+      err_flag |= pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, chgr_cfg2, 0x40, chg_pol_low, 0);
+   }
+
+   return err_flag;
+}
diff --git a/dev/pmic/pmi8994/pm_smbchg_dc_chgpth.c b/dev/pmic/pmi8994/pm_smbchg_dc_chgpth.c
new file mode 100644
index 0000000..f485217
--- /dev/null
+++ b/dev/pmic/pmi8994/pm_smbchg_dc_chgpth.c
@@ -0,0 +1,484 @@
+/* Copyright (c) 2015, The Linux Foundation. All rights reserved.
+
+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 Linux Foundation nor the names of its
+      contributors may be used to endorse or promote products derived
+      from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*===========================================================================
+
+					INCLUDE FILES
+
+===========================================================================*/
+
+#include "pm_smbchg_dc_chgpth.h"
+#include "pm_smbchg_driver.h"
+#include <sys/types.h>
+
+/*Unlock peripheral for secured write access*/
+static inline pm_err_flag_type pm_smbchg_dc_chgpth_unlock_perph_write(pm_smbchg_data_type *smbchg_ptr);
+
+/*Find the nearest register value corresponding to input_data*/
+static void pm_smbchg_dc_chgpth_return_reg_value(uint32 input_data, uint32 *array, uint32 array_size, pm_register_data_type *reg_value);
+
+/*This API configures ADCIN adapter allowance*/
+pm_err_flag_type pm_smbchg_dc_chgpth_set_dcin_adptr_allowance(uint32 device_index, pm_smbchg_dcin_adptr_allowance adptr_allowance)
+{
+   pm_err_flag_type    errFlag    = PM_ERR_FLAG__SUCCESS;
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+   if (NULL == smbchg_ptr)
+   {
+      errFlag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else
+   {
+      pm_register_address_type dcin_chgr_cfg  = smbchg_ptr->smbchg_register->dc_chgpth_register->base_address + smbchg_ptr->smbchg_register->dc_chgpth_register->dcin_chgr_cfg;
+
+      errFlag = pm_smbchg_dc_chgpth_unlock_perph_write(smbchg_ptr);
+      errFlag |= pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, dcin_chgr_cfg, 0x7, (pm_register_data_type)adptr_allowance, 0);
+   }
+   return errFlag;
+}
+
+/*This API reads the adapter allowance configuration*/
+pm_err_flag_type pm_smbchg_dc_chgpth_get_dcin_adptr_allowance(uint32 device_index, pm_smbchg_dcin_adptr_allowance *adptr_allowance)
+{
+   pm_err_flag_type    errFlag    = PM_ERR_FLAG__SUCCESS;
+   pm_register_data_type data;
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+   if (NULL == smbchg_ptr)
+   {
+      errFlag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else if (NULL == adptr_allowance)
+   {
+      errFlag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+   }
+   else
+   {
+      pm_register_address_type dcin_chgr_cfg  = smbchg_ptr->smbchg_register->dc_chgpth_register->base_address + smbchg_ptr->smbchg_register->dc_chgpth_register->dcin_chgr_cfg;
+
+      errFlag = pm_comm_read_byte_mask(smbchg_ptr->comm_ptr->slave_id, dcin_chgr_cfg, 0x7, &data, 0);
+
+      if (PM_ERR_FLAG__SUCCESS == errFlag)
+      {
+         *adptr_allowance = (pm_smbchg_dcin_adptr_allowance)data;
+      }
+   }
+
+   return errFlag;
+}
+
+/*This API configures the DCIN input current limit*/
+pm_err_flag_type pm_smbchg_dc_chgpth_set_dcin_current_limit(uint32 device_index, uint32 current_ma)
+{
+   pm_err_flag_type    errFlag    = PM_ERR_FLAG__SUCCESS;
+   pm_register_data_type data = 0;
+   
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+   if (NULL == smbchg_ptr)
+   {
+      errFlag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else
+   {
+      uint32 *current_limits = smbchg_ptr->chg_range_data->dcin_current_limits;
+
+      pm_register_address_type dcin_il_cfg  = smbchg_ptr->smbchg_register->dc_chgpth_register->base_address + smbchg_ptr->smbchg_register->dc_chgpth_register->dcin_il_cfg;
+
+      pm_smbchg_dc_chgpth_return_reg_value(current_ma, current_limits, DCIN_SIZE, &data);
+
+      errFlag = pm_smbchg_dc_chgpth_unlock_perph_write(smbchg_ptr);
+      errFlag = pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, dcin_il_cfg, 0x1F, data, 0);
+   }
+
+   return errFlag;
+}
+
+/*This API reads the DCIN input current limit*/
+pm_err_flag_type pm_smbchg_dc_chgpth_get_dcin_current_limit(uint32 device_index, uint32 *current_milli_amp)
+{
+   pm_err_flag_type    errFlag    = PM_ERR_FLAG__SUCCESS;
+   pm_register_data_type data;
+   
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+   if (NULL == smbchg_ptr )
+   {
+      errFlag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else if (NULL == current_milli_amp)
+   {
+      errFlag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+   }
+   else
+   {
+      uint32 *current_limits = smbchg_ptr->chg_range_data->dcin_current_limits;
+
+      pm_register_address_type dcin_il_cfg  = smbchg_ptr->smbchg_register->dc_chgpth_register->base_address + smbchg_ptr->smbchg_register->dc_chgpth_register->dcin_il_cfg;
+
+      errFlag |= pm_comm_read_byte_mask(smbchg_ptr->comm_ptr->slave_id, dcin_il_cfg, 0x1F, &data, 0);
+      if ((data & 0x1F) >= DCIN_SIZE)
+      {
+         errFlag |= PM_ERR_FLAG__INVALID;
+      }
+      else
+      {
+         *current_milli_amp = current_limits[data & 0x1F];
+      }
+   }
+
+   return errFlag;
+}
+
+/*This API configures various AICL parameters*/
+pm_err_flag_type pm_smbchg_dc_chgpth_config_aicl(uint32 device_index, pm_smbchg_dc_aicl_cfg_type dc_aicl_cfg, boolean enable)
+{
+   pm_err_flag_type    errFlag    = PM_ERR_FLAG__SUCCESS;
+   pm_register_address_type dc_aicl_cfg_reg;
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+
+   if (NULL == smbchg_ptr)
+   {
+      errFlag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else if (PM_SMBCHG_AICL__INVALID_CFG == dc_aicl_cfg)
+   {
+      errFlag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+   }
+   else
+   {
+      pm_register_data_type mask = (0x1 << (dc_aicl_cfg & 0x7));
+
+      if (dc_aicl_cfg > PM_SMBCHG_AICL__OV_OPTION)
+      {
+         dc_aicl_cfg_reg  = smbchg_ptr->smbchg_register->dc_chgpth_register->base_address + smbchg_ptr->smbchg_register->dc_chgpth_register->dc_aicl_cfg2;
+      }
+      else
+      {
+         dc_aicl_cfg_reg  = smbchg_ptr->smbchg_register->dc_chgpth_register->base_address + smbchg_ptr->smbchg_register->dc_chgpth_register->dc_aicl_cfg1;
+      }
+
+      pm_register_data_type data = (enable)? 0xFF : 0x00;
+      errFlag = pm_smbchg_dc_chgpth_unlock_perph_write(smbchg_ptr);
+      errFlag |= pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, dc_aicl_cfg_reg, mask, data, 0);
+   }
+
+   return errFlag;
+}
+
+/*This API reads the various AICL configurations*/
+pm_err_flag_type pm_smbchg_dc_chgpth_get_aicl_config(uint32 device_index, pm_smbchg_dc_aicl_cfg_type dc_aicl_cfg, boolean *enable)
+{
+   pm_err_flag_type    errFlag    = PM_ERR_FLAG__SUCCESS;
+   pm_register_address_type dc_aicl_cfg_reg;
+   pm_register_data_type data;
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+
+   if (NULL == smbchg_ptr)
+   {
+      errFlag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else if (PM_SMBCHG_AICL__INVALID_CFG == dc_aicl_cfg)
+   {
+      errFlag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+   }
+   else if (NULL == enable)
+   {
+      errFlag = PM_ERR_FLAG__PAR3_OUT_OF_RANGE;
+   }
+   else
+   {
+      pm_register_data_type mask = (0x1 << (dc_aicl_cfg & 0x7));
+
+      if (dc_aicl_cfg > PM_SMBCHG_AICL__OV_OPTION)
+      {
+         dc_aicl_cfg_reg  = smbchg_ptr->smbchg_register->dc_chgpth_register->base_address + smbchg_ptr->smbchg_register->dc_chgpth_register->dc_aicl_cfg2;
+      }
+      else
+      {
+         dc_aicl_cfg_reg  = smbchg_ptr->smbchg_register->dc_chgpth_register->base_address + smbchg_ptr->smbchg_register->dc_chgpth_register->dc_aicl_cfg1;
+      }
+
+      errFlag = pm_comm_read_byte_mask(smbchg_ptr->comm_ptr->slave_id, dc_aicl_cfg_reg, mask, &data, 0);
+      *enable = (data) ? TRUE : FALSE;
+   }
+
+   return errFlag;
+}
+
+/* This API configures AICL restart timer */
+pm_err_flag_type pm_smbchg_dc_chgpth_set_aicl_restart_tmr(uint32 device_index, pm_smbchg_dc_chgpth_aicl_rstrt_tmr timer_type)
+{
+   pm_err_flag_type    errFlag    = PM_ERR_FLAG__SUCCESS;
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+
+   if (NULL == smbchg_ptr)
+   {
+      errFlag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else if (timer_type >= PM_SMBCHG_AICL_WL_RSTRT_TMR_INVALID)
+   {
+      errFlag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+   }
+   else
+   {
+      pm_register_address_type aicl_wl_sel_cfg  = smbchg_ptr->smbchg_register->dc_chgpth_register->base_address + smbchg_ptr->smbchg_register->dc_chgpth_register->aicl_wl_sel_cfg;
+
+      errFlag = pm_smbchg_dc_chgpth_unlock_perph_write(smbchg_ptr);
+      errFlag |= pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, aicl_wl_sel_cfg, 0x3, (pm_smbchg_dc_chgpth_aicl_rstrt_tmr)timer_type, 0);
+   }
+
+   return errFlag;
+}
+
+
+/* This API reads configured AICL restart timer */
+pm_err_flag_type pm_smbchg_dc_chgpth_get_aicl_restart_tmr(uint32 device_index, pm_smbchg_dc_chgpth_aicl_rstrt_tmr *timer_type)
+{
+   pm_err_flag_type    errFlag    = PM_ERR_FLAG__SUCCESS;
+   pm_register_data_type data;
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+
+   if (NULL == smbchg_ptr)
+   {
+      errFlag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else if (NULL == timer_type)
+   {
+      errFlag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+   }
+   else
+   {
+      pm_register_address_type aicl_wl_sel_cfg  = smbchg_ptr->smbchg_register->dc_chgpth_register->base_address + smbchg_ptr->smbchg_register->dc_chgpth_register->aicl_wl_sel_cfg;
+
+      errFlag = pm_comm_read_byte_mask(smbchg_ptr->comm_ptr->slave_id, aicl_wl_sel_cfg, 0x3, &data, 0);
+
+      *timer_type = (pm_smbchg_dc_chgpth_aicl_rstrt_tmr)data;
+   }
+
+   return errFlag;
+}
+
+
+pm_err_flag_type pm_smbchg_dc_chgpth_irq_enable(uint32 device_index, pm_smbchg_dc_chgpth_irq_type irq, boolean enable)
+{
+   pm_err_flag_type    errFlag    = PM_ERR_FLAG__SUCCESS;
+   pm_register_address_type irq_reg;
+   pm_register_data_type data = 1 << irq;
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+
+   if (NULL == smbchg_ptr)
+   {
+      errFlag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else if (irq >= PM_SMBCHG_DC_CHGPTH_IRQ_INVALID)
+   {
+      errFlag =  PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+   }
+   else
+   {
+      if (enable)
+      {
+         irq_reg = smbchg_ptr->smbchg_register->dc_chgpth_register->base_address + smbchg_ptr->smbchg_register->dc_chgpth_register->int_en_set;
+      }
+      else
+      {
+         irq_reg = smbchg_ptr->smbchg_register->dc_chgpth_register->base_address + smbchg_ptr->smbchg_register->dc_chgpth_register->int_en_clr;
+      }
+
+      errFlag = pm_comm_write_byte(smbchg_ptr->comm_ptr->slave_id, irq_reg, data, 0);
+   }
+   return errFlag;
+}
+
+pm_err_flag_type pm_smbchg_dc_chgpth_irq_clear(uint32  device_index, pm_smbchg_dc_chgpth_irq_type irq)
+{
+   pm_err_flag_type    errFlag    = PM_ERR_FLAG__SUCCESS;
+   pm_register_data_type data = 1 << irq;
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+
+   if (NULL == smbchg_ptr)
+   {
+      errFlag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else if (irq >= PM_SMBCHG_DC_CHGPTH_IRQ_INVALID)
+   {
+      errFlag =  PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+   }
+   else
+   {
+      pm_register_address_type int_latched_clr = smbchg_ptr->smbchg_register->dc_chgpth_register->base_address + smbchg_ptr->smbchg_register->dc_chgpth_register->int_latched_clr;
+
+      errFlag = pm_comm_write_byte(smbchg_ptr->comm_ptr->slave_id, int_latched_clr, data, 0);
+   }
+   return errFlag;
+}
+
+
+pm_err_flag_type pm_smbchg_dc_chgpth_irq_set_trigger(uint32 device_index, pm_smbchg_dc_chgpth_irq_type irq, pm_irq_trigger_type trigger)
+{
+   pm_err_flag_type    errFlag    = PM_ERR_FLAG__SUCCESS;
+   uint8 mask = 1 << irq;
+   pm_register_data_type set_type, polarity_high, polarity_low;
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+
+   if (NULL == smbchg_ptr)
+   {
+      errFlag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else if (irq >= PM_SMBCHG_DC_CHGPTH_IRQ_INVALID)
+   {
+      errFlag =  PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+   }
+   else
+   {
+      pm_register_address_type int_set_type = smbchg_ptr->smbchg_register->dc_chgpth_register->base_address + smbchg_ptr->smbchg_register->dc_chgpth_register->int_set_type;
+      pm_register_address_type int_polarity_high = smbchg_ptr->smbchg_register->dc_chgpth_register->base_address + smbchg_ptr->smbchg_register->dc_chgpth_register->int_polarity_high;
+      pm_register_address_type int_polarity_low = smbchg_ptr->smbchg_register->dc_chgpth_register->base_address + smbchg_ptr->smbchg_register->dc_chgpth_register->int_polarity_low;
+
+      switch (trigger)
+      {
+      case PM_IRQ_TRIGGER_ACTIVE_LOW:
+         set_type = 0x00;
+         polarity_high = 0x00;
+         polarity_low = 0xFF;
+         break;
+      case PM_IRQ_TRIGGER_ACTIVE_HIGH:
+         set_type = 0x00;
+         polarity_high = 0xFF;
+         polarity_low = 0x00;
+         break;
+      case PM_IRQ_TRIGGER_RISING_EDGE:
+         set_type = 0xFF;
+         polarity_high = 0xFF;
+         polarity_low = 0x00;
+         break;
+      case PM_IRQ_TRIGGER_FALLING_EDGE:
+         set_type = 0xFF;
+         polarity_high = 0x00;
+         polarity_low = 0xFF;
+         break;
+      case PM_IRQ_TRIGGER_DUAL_EDGE:
+         set_type = 0xFF;
+         polarity_high = 0xFF;
+         polarity_low = 0xFF;
+         break;
+      default:
+         return PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+      }
+      errFlag = pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, int_set_type, mask, set_type, 0);
+      errFlag |= pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, int_polarity_high, mask, polarity_high, 0);
+      errFlag |= pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, int_polarity_low, mask, polarity_low, 0);
+   }
+
+   return errFlag;
+}
+
+pm_err_flag_type pm_smbchg_dc_chgpth_irq_status(uint32 device_index, pm_smbchg_dc_chgpth_irq_type irq, pm_irq_status_type type, boolean *status)
+{
+   pm_err_flag_type    errFlag    = PM_ERR_FLAG__SUCCESS;
+   pm_register_data_type data;
+   uint8 mask = 1 << irq;
+   pm_register_address_type int_sts;
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+
+   if (NULL == smbchg_ptr)
+   {
+      errFlag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else if (irq >= PM_SMBCHG_DC_CHGPTH_IRQ_INVALID)
+   {
+      errFlag =  PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+   }
+   else
+   {
+      switch (type)
+      {
+      case PM_IRQ_STATUS_RT:
+         int_sts = smbchg_ptr->smbchg_register->dc_chgpth_register->base_address + smbchg_ptr->smbchg_register->dc_chgpth_register->int_rt_sts;
+         break;
+      case PM_IRQ_STATUS_LATCHED:
+         int_sts = smbchg_ptr->smbchg_register->dc_chgpth_register->base_address + smbchg_ptr->smbchg_register->dc_chgpth_register->int_latched_sts;
+         break;
+      case PM_IRQ_STATUS_PENDING:
+         int_sts = smbchg_ptr->smbchg_register->dc_chgpth_register->base_address + smbchg_ptr->smbchg_register->dc_chgpth_register->int_pending_sts;
+         break;
+      default:
+         return PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+      }
+
+      errFlag = pm_comm_read_byte_mask(smbchg_ptr->comm_ptr->slave_id, int_sts, mask, &data, 0);
+      *status = data ? TRUE : FALSE;
+   }
+
+   return errFlag;
+}
+
+/*@todo: following API may require implementation. Need more info */
+//pm_smbchg_dc_chgpth_temp_comp_cfg
+//pm_smbchg_dc_chgpth_tr_dcin_sns
+//pm_smbchg_dc_chgpth_tr_dcin_divider
+//pm_smbchg_dc_chgpth_tr_iinos_dc
+
+
+static inline pm_err_flag_type pm_smbchg_dc_chgpth_unlock_perph_write(pm_smbchg_data_type *smbchg_ptr)
+{
+   pm_err_flag_type errFlag = PM_ERR_FLAG__SUCCESS;
+
+   if (NULL == smbchg_ptr)
+   {
+      errFlag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else
+   {
+      pm_register_address_type sec_access = smbchg_ptr->smbchg_register->dc_chgpth_register->base_address + smbchg_ptr->smbchg_register->dc_chgpth_register->sec_access;
+      errFlag = pm_comm_write_byte(smbchg_ptr->comm_ptr->slave_id, sec_access, 0xA5, 0);
+   }
+
+   return errFlag;
+}
+
+
+/*Find the nearest register value corresponding to input_data*/
+static void pm_smbchg_dc_chgpth_return_reg_value(uint32 input_data, uint32 *array, uint32 array_size, pm_register_data_type *reg_value)
+{
+   uint32 loc = 0;
+
+
+   while (loc < array_size)
+   {
+      if (input_data < array[loc])
+      {
+         break;
+      }
+      else
+      {
+         loc++;
+      }
+   }
+
+   *reg_value = (loc) ? (loc - 1) : 0;
+
+   return;
+}
diff --git a/dev/pmic/pmi8994/pm_smbchg_driver.c b/dev/pmic/pmi8994/pm_smbchg_driver.c
new file mode 100644
index 0000000..e0925ab
--- /dev/null
+++ b/dev/pmic/pmi8994/pm_smbchg_driver.c
@@ -0,0 +1,146 @@
+/* Copyright (c) 2015, The Linux Foundation. All rights reserved.
+
+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 Linux Foundation nor the names of its
+      contributors may be used to endorse or promote products derived
+      from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*===========================================================================
+
+					INCLUDE FILES
+
+===========================================================================*/
+#include "pm_app_smbchg.h"
+#include "pm_smbchg_driver.h"
+#include "pm_comm.h"
+
+/*===========================================================================
+
+                        STATIC VARIABLES 
+
+===========================================================================*/
+
+/* Static global variable to store the SMBCHG driver data */
+pm_smbchg_data_type smb_data[PM_MAX_NUM_PMICS];
+
+/* Initialize bat i/f registers */
+smbchg_bat_if_register_ds bat_if_reg[1] =
+	{   /* Battery interface register base and offsets */
+		{
+		0x1200, 0x5,  0x8,  0x10, 0x11, 0x12, 0x13,
+		0x14,    0x15, 0x16, 0x18, 0x19, 0x1a, 0x1b,
+		0x40, 0x41, 0x42, 0xD0, 0xDF, 0xE0, 0xE1, 0xF0,
+		0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF8, 0xF9,
+		0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF
+		},
+	};
+
+/* Initialize usb charger path registers */
+smbchg_usb_chgpth_register_ds usb_chgpath_reg[1] =
+	{   /* Charger path register base & offset */
+		{
+		0x1300, 0x5,  0x7, 0x8, 0x9, 0xA, 0xB,
+		0xC,    0xD,  0xE, 0xF, 0x10, 0x11, 0x12,
+		0x13,   0x14, 0x15, 0x16, 0x18, 0x19,
+		0x1A,   0x1B, 0x40, 0x44, 0x4E, 0xD0, 0xF1,
+		0xF2,   0xF3, 0xF4, 0xF5, 0xFF
+		},
+	};
+
+/* Initialize dc charger path registers */
+smbchg_dc_chgpth_register_ds dc_chgpath_reg[1] =
+	{   /* DC charge path base & offset */
+		{
+		0x1400, 0x5, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16,
+		0x18, 0x19, 0x1A, 0x1B, 0xD0, 0xDF,	0xE0, 0xE1, 0xE2,
+		0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xFA
+		},
+	};
+
+/* Initialize misc charger registers */
+smbchg_misc_register_ds misc_reg[1] =
+	{   /* Misc charge register base & offsets */
+		{
+		0x1600, 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x8,
+		0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16,
+		0x18, 0x19, 0x1A, 0x1B, 0x40, 0x41, 0x42,
+		0xD0, 0xDF, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5,
+		0xF6, 0xF7,	0xF8, 0xFF
+		},
+	};
+
+smbchg_chgr_register_ds smb_chgr_reg[1] =
+	{
+		{
+		0x1000, 0x5, 0x8, 0xB, 0xC, 0xD, 0xE, 0x10, 0x11,
+		0x12, 0x13, 0x14, 0x15, 0x16, 0x18, 0x19, 0x1A,
+		0x1B, 0xD0, 0xDF, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5,
+		0xF6, 0xF7, 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD,
+		0xFE, 0xFF,
+		},
+	};
+
+pm_comm_info_type   comm_ptr[1] =
+	{ /* slave_id , pmic index, and comm type (comm type is unused) */
+	{0x2, 0x1, 0x0},
+	};
+
+/* Initialize the SMB charger data structure */
+smbchg_register_ds smb_charge[1] =
+	{
+		{
+			NULL,
+			&smb_chgr_reg[0],
+			NULL,
+			&bat_if_reg[0],
+			&usb_chgpath_reg[0],
+			&dc_chgpath_reg[0],
+			&misc_reg[0],
+		},
+	};
+
+/* Initialize the SMB data */
+void pm_smbchg_driver_init(uint32_t device_index)
+{
+
+	smb_data[device_index].smbchg_register = &smb_charge[0];
+	smb_data[device_index].comm_ptr        = &comm_ptr[0];
+	smb_data[device_index].chg_range_data  = (chg_range_data_type *) pm_target_chg_range_data();
+}
+
+/*===========================================================================
+
+                        FUNCTION DEFINITIONS
+
+===========================================================================*/
+
+pm_smbchg_data_type* pm_smbchg_get_data(uint32 pmic_index)
+{
+  if(pmic_index < PM_MAX_NUM_PMICS) 
+  {
+      return &smb_data[pmic_index];
+  }
+
+  return NULL;
+}
diff --git a/dev/pmic/pmi8994/pm_smbchg_misc.c b/dev/pmic/pmi8994/pm_smbchg_misc.c
new file mode 100644
index 0000000..f92a89a
--- /dev/null
+++ b/dev/pmic/pmi8994/pm_smbchg_misc.c
@@ -0,0 +1,451 @@
+/* Copyright (c) 2015, The Linux Foundation. All rights reserved.
+
+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 Linux Foundation nor the names of its
+      contributors may be used to endorse or promote products derived
+      from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*===========================================================================
+
+					INCLUDE FILES
+
+===========================================================================*/
+#include "pm_smbchg_misc.h"
+#include "pm_smbchg_driver.h"
+#include "pm_resources_and_types.h"
+
+/*This API detects the type of chgarging port device is connected to*/
+pm_err_flag_type pm_smbchg_misc_chgr_port_detected(uint32 pmic_device, pm_smbchg_misc_src_detect_type *src_detected)
+{
+   pm_err_flag_type      err_flag    = PM_ERR_FLAG__SUCCESS;
+   pm_register_data_type data;
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(pmic_device);
+   uint8 src_loc = 0x0;
+
+   if (NULL == smbchg_ptr)
+   {
+      err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else if (NULL == src_detected)
+   {
+      err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+   }
+   else
+   {
+      pm_register_address_type idev_sts = smbchg_ptr->smbchg_register->misc_register->base_address + smbchg_ptr->smbchg_register->misc_register->idev_sts;
+      err_flag = pm_comm_read_byte(smbchg_ptr->comm_ptr->slave_id, idev_sts, &data, 0);
+      if (err_flag == PM_ERR_FLAG__SUCCESS)
+      {
+         while (src_loc < 0x08) //loop thru each bit
+         {
+            if (data & (0x80 >> src_loc))
+            {
+               break;
+            }
+            src_loc++;
+         }
+
+         *src_detected = (src_loc > 7) ? PM_SMBCHG_MISC_SRC_DETECT_INVALID : (pm_smbchg_misc_src_detect_type)src_loc;
+
+      }
+   }
+   return err_flag;
+}
+
+#ifndef LK
+/*This API restarts watchdog*/
+pm_err_flag_type pm_smbchg_misc_wdog_rst(uint32 pmic_device)
+{
+   pm_err_flag_type      err_flag    = PM_ERR_FLAG__SUCCESS;
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(pmic_device);
+
+   if (NULL == smbchg_ptr)
+   {
+      err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else
+   {
+      pm_register_address_type wdog_rst = smbchg_ptr->smbchg_register->misc_register->base_address + smbchg_ptr->smbchg_register->misc_register->wdog_rst;
+      err_flag = pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, wdog_rst, 0x80, 0x80, 0);
+   }
+
+   return err_flag;
+}
+
+/*This API enables automatic fault protection */
+pm_err_flag_type pm_smbchg_misc_en_afp(uint32 pmic_device)
+{
+   pm_err_flag_type      err_flag    = PM_ERR_FLAG__SUCCESS;
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(pmic_device);
+   if (NULL == smbchg_ptr)
+   {
+      err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else
+   {
+      pm_register_address_type afp_mode = smbchg_ptr->smbchg_register->misc_register->base_address + smbchg_ptr->smbchg_register->misc_register->afp_mode;
+      err_flag = pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, afp_mode, 0x80, 0x80, 0);
+   }
+
+   return err_flag;
+}
+
+
+/*This API configures the charger watchgod */
+pm_err_flag_type pm_smbchg_misc_config_wdog(uint32 pmic_device, pm_smbchg_misc_wdog_cfg_type *wd_cfg)
+{
+   pm_err_flag_type      err_flag    = PM_ERR_FLAG__SUCCESS;
+   pm_register_data_type data = 0;
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(pmic_device);
+
+   if (NULL == smbchg_ptr)
+   {
+      err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else if (NULL == wd_cfg)
+   {
+      err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+   }
+   else if (wd_cfg->sfty_timer >= PM_SMBCHG_MISC_SFTY_TIMER_AFTER_WDOG_INVALID || wd_cfg->wdog_timeout >= PM_SMBCHG_MISC_WD_TMOUT_INVALID)
+   {
+      err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+   }
+   else
+   {
+      pm_register_address_type wd_cfg_reg = smbchg_ptr->smbchg_register->misc_register->base_address + smbchg_ptr->smbchg_register->misc_register->wd_cfg;
+      data = (wd_cfg->afp_wdog_en << 0x7) | (wd_cfg->wdog_timeout << 0x5) | (wd_cfg->sfty_timer << 3) | (wd_cfg->wdog_irq_sfty_en << 2) | (wd_cfg->wdog_option_run_always << 1) | (wd_cfg->wdog_timer_en);
+      err_flag = pm_smbchg_misc_unlock_perph_write(smbchg_ptr);
+      err_flag = pm_comm_write_byte(smbchg_ptr->comm_ptr->slave_id, wd_cfg_reg, data, 0);
+   }
+
+   return err_flag;
+}
+
+
+/*This API reads the configurations for charger watchgod */
+pm_err_flag_type pm_smbchg_misc_get_wdog_config(uint32 pmic_device, pm_smbchg_misc_wdog_cfg_type *wd_cfg)
+{
+   pm_err_flag_type      err_flag    = PM_ERR_FLAG__SUCCESS;
+   pm_register_data_type data = 0;
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(pmic_device);
+
+   if (NULL == smbchg_ptr)
+   {
+      err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else if (NULL == wd_cfg)
+   {
+      err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+   }
+   else
+   {
+      pm_register_address_type wd_cfg_reg = smbchg_ptr->smbchg_register->misc_register->base_address + smbchg_ptr->smbchg_register->misc_register->wd_cfg;
+      err_flag = pm_comm_read_byte(smbchg_ptr->comm_ptr->slave_id, wd_cfg_reg, &data, 0);
+   }
+
+   if (err_flag == PM_ERR_FLAG__SUCCESS)
+   {
+      wd_cfg->wdog_timer_en          = (data & 0x1) ? TRUE : FALSE;
+      wd_cfg->wdog_option_run_always = (data & 0x2) ? TRUE : FALSE;
+      wd_cfg->wdog_irq_sfty_en       = (data & 0x4) ? TRUE : FALSE;
+      wd_cfg->sfty_timer             = (pm_smbchg_misc_sfty_after_wdog_irq_type)((data & 0x18) >> 3);
+      wd_cfg->wdog_timeout           = (pm_smbchg_wdog_timeout_type)((data & 0x60) >> 5);
+      wd_cfg->afp_wdog_en            = (data & 0x80) ? TRUE : FALSE;
+   }
+
+   return err_flag;
+}
+
+
+
+pm_err_flag_type pm_smbchg_misc_enable_wdog(uint32 pmic_device, boolean enable_smbchg_wdog)
+{
+   pm_err_flag_type      err_flag    = PM_ERR_FLAG__SUCCESS;
+   pm_smbchg_misc_wdog_cfg_type wd_cfg;
+
+   err_flag = pm_smbchg_misc_get_wdog_config(pmic_device, &wd_cfg);
+
+   //Change needed bits and write it back
+   if (err_flag == PM_ERR_FLAG__SUCCESS)
+   {
+      wd_cfg.afp_wdog_en  = enable_smbchg_wdog;
+
+      err_flag |= pm_smbchg_misc_config_wdog(pmic_device, &wd_cfg);
+   }
+
+   return err_flag;
+}
+
+
+pm_err_flag_type pm_smbchg_misc_set_wdog_timeout(uint32 pmic_device, pm_smbchg_wdog_timeout_type wdog_timeout)
+{
+   pm_err_flag_type      err_flag    = PM_ERR_FLAG__SUCCESS;
+   pm_smbchg_misc_wdog_cfg_type wd_cfg;
+
+
+   err_flag = pm_smbchg_misc_get_wdog_config(pmic_device, &wd_cfg);
+
+   //change needed bits and write it back
+   if (err_flag == PM_ERR_FLAG__SUCCESS)
+   {
+     wd_cfg.wdog_timeout = wdog_timeout;
+     err_flag |= pm_smbchg_misc_config_wdog(pmic_device, &wd_cfg);
+   }
+
+   return err_flag;
+}
+
+
+/*This API configures VCHG output which is proportional to the input current or the charger/discharge current. This also configures SYSOK LDO function and PHY_ON */
+pm_err_flag_type pm_smbchg_misc_config_misc_fn(uint32 pmic_device, pm_smbchg_misc_misc_fn_cfg_type misc_cfg, boolean enable)
+{
+   pm_err_flag_type      err_flag    = PM_ERR_FLAG__SUCCESS;
+
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(pmic_device);
+
+   if (NULL == smbchg_ptr)
+   {
+      err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else if (PM_SMBCHG_MISC_FN__INVALID == misc_cfg)
+   {
+      err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+   }
+   else
+   {
+      pm_register_address_type misc_cfg_reg = smbchg_ptr->smbchg_register->misc_register->base_address + smbchg_ptr->smbchg_register->misc_register->misc_cfg;
+
+      err_flag = pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, misc_cfg_reg, (0x1 << misc_cfg), (pm_register_data_type)(enable<<misc_cfg), 0);
+   }
+
+   return err_flag;
+}
+
+/*This API reads VCHG output configuration, SYSOK LDO function and PHY_ON */
+pm_err_flag_type pm_smbchg_misc_get_misc_fn_config(uint32 pmic_device, pm_smbchg_misc_misc_fn_cfg_type misc_cfg, boolean *enable)
+{
+   pm_err_flag_type      err_flag    = PM_ERR_FLAG__SUCCESS;
+   pm_register_data_type data = 0;
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(pmic_device);
+
+   if (NULL == smbchg_ptr)
+   {
+      err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else if (PM_SMBCHG_MISC_FN__INVALID == misc_cfg)
+   {
+      err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+   }
+   else if (NULL == enable) 
+   {
+      err_flag = PM_ERR_FLAG__PAR3_OUT_OF_RANGE;
+   }
+   else
+   {
+      pm_register_address_type misc_cfg_reg = smbchg_ptr->smbchg_register->misc_register->base_address + smbchg_ptr->smbchg_register->misc_register->misc_cfg;
+
+      err_flag = pm_comm_read_byte(smbchg_ptr->comm_ptr->slave_id, misc_cfg_reg, &data, 0);
+
+      *enable = (data & (0x1 << misc_cfg)) ? TRUE : FALSE;
+   }
+
+   return err_flag;
+}
+
+pm_err_flag_type pm_smbchg_misc_irq_enable(uint32 pmic_device, pm_smbchg_misc_irq_type irq, boolean enable)
+{
+   pm_err_flag_type    err_flag    = PM_ERR_FLAG__SUCCESS;
+   pm_register_address_type irq_reg;
+   pm_register_data_type data = 1 << irq;
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(pmic_device);
+
+   if (NULL == smbchg_ptr)
+   {
+      err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else if (irq >= PM_SMBCHG_MISC_IRQ_INVALID)
+   {
+      err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+   }
+   else
+   {
+      if (enable)
+      {
+         irq_reg = smbchg_ptr->smbchg_register->misc_register->base_address + smbchg_ptr->smbchg_register->misc_register->int_en_set;
+      }
+      else
+      {
+         irq_reg = smbchg_ptr->smbchg_register->misc_register->base_address + smbchg_ptr->smbchg_register->misc_register->int_en_clr;
+      }
+
+      err_flag = pm_comm_write_byte(smbchg_ptr->comm_ptr->slave_id, irq_reg, data, 0);
+   }
+   return err_flag;
+}
+
+pm_err_flag_type pm_smbchg_misc_irq_clear(uint32  pmic_device, pm_smbchg_misc_irq_type irq)
+{
+   pm_err_flag_type    err_flag    = PM_ERR_FLAG__SUCCESS;
+   pm_register_data_type data = 1 << irq;
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(pmic_device);
+
+   if (NULL == smbchg_ptr)
+   {
+      err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else if (irq >= PM_SMBCHG_MISC_IRQ_INVALID)
+   {
+      err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+   }
+   else
+   {
+      pm_register_address_type int_latched_clr = smbchg_ptr->smbchg_register->misc_register->base_address + smbchg_ptr->smbchg_register->misc_register->int_latched_clr;
+
+      err_flag = pm_comm_write_byte(smbchg_ptr->comm_ptr->slave_id, int_latched_clr, data, 0);
+   }
+   return err_flag;
+}
+
+
+pm_err_flag_type pm_smbchg_misc_irq_set_trigger(uint32 pmic_device, pm_smbchg_misc_irq_type irq, pm_irq_trigger_type trigger)
+{
+   pm_err_flag_type    err_flag    = PM_ERR_FLAG__SUCCESS;
+   uint8 mask = 1 << irq;
+   pm_register_data_type set_type, polarity_high, polarity_low;
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(pmic_device);
+
+   if (NULL == smbchg_ptr)
+   {
+      err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else if (irq >= PM_SMBCHG_MISC_IRQ_INVALID)
+   {
+      err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else
+   {
+      pm_register_address_type int_set_type = smbchg_ptr->smbchg_register->misc_register->base_address + smbchg_ptr->smbchg_register->misc_register->int_set_type;
+      pm_register_address_type int_polarity_high = smbchg_ptr->smbchg_register->misc_register->base_address + smbchg_ptr->smbchg_register->misc_register->int_polarity_high;
+      pm_register_address_type int_polarity_low = smbchg_ptr->smbchg_register->misc_register->base_address + smbchg_ptr->smbchg_register->misc_register->int_polarity_low;
+
+      switch (trigger)
+      {
+      case PM_IRQ_TRIGGER_ACTIVE_LOW:
+         set_type = 0x00;
+         polarity_high = 0x00;
+         polarity_low = 0xFF;
+         break;
+      case PM_IRQ_TRIGGER_ACTIVE_HIGH:
+         set_type = 0x00;
+         polarity_high = 0xFF;
+         polarity_low = 0x00;
+         break;
+      case PM_IRQ_TRIGGER_RISING_EDGE:
+         set_type = 0xFF;
+         polarity_high = 0xFF;
+         polarity_low = 0x00;
+         break;
+      case PM_IRQ_TRIGGER_FALLING_EDGE:
+         set_type = 0xFF;
+         polarity_high = 0x00;
+         polarity_low = 0xFF;
+         break;
+      case PM_IRQ_TRIGGER_DUAL_EDGE:
+         set_type = 0xFF;
+         polarity_high = 0xFF;
+         polarity_low = 0xFF;
+         break;
+      default:
+         return PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+      }
+      err_flag = pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, int_set_type, mask, set_type, 0);
+      err_flag |= pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, int_polarity_high, mask, polarity_high, 0);
+      err_flag |= pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, int_polarity_low, mask, polarity_low, 0);
+   }
+
+   return err_flag;
+}
+
+pm_err_flag_type pm_smbchg_misc_irq_status(uint32 pmic_device, pm_smbchg_misc_irq_type irq, pm_irq_status_type type, boolean *status)
+{
+   pm_err_flag_type    err_flag    = PM_ERR_FLAG__SUCCESS;
+   pm_register_data_type data;
+   uint8 mask = 1 << irq;
+   pm_register_address_type int_sts;
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(pmic_device);
+
+   if (NULL == smbchg_ptr)
+   {
+      err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else if (NULL == status)
+   {
+      err_flag = PM_ERR_FLAG__PAR4_OUT_OF_RANGE;
+   }
+   else if (irq >= PM_SMBCHG_MISC_IRQ_INVALID)
+   {
+      err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else
+   {
+      switch (type)
+      {
+      case PM_IRQ_STATUS_RT:
+         int_sts = smbchg_ptr->smbchg_register->misc_register->base_address + smbchg_ptr->smbchg_register->misc_register->int_rt_sts;
+         break;
+      case PM_IRQ_STATUS_LATCHED:
+         int_sts = smbchg_ptr->smbchg_register->misc_register->base_address + smbchg_ptr->smbchg_register->misc_register->int_latched_sts;
+         break;
+      case PM_IRQ_STATUS_PENDING:
+         int_sts = smbchg_ptr->smbchg_register->misc_register->base_address + smbchg_ptr->smbchg_register->misc_register->int_pending_sts;
+         break;
+      default:
+         return PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+      }
+
+      err_flag = pm_comm_read_byte_mask(smbchg_ptr->comm_ptr->slave_id, int_sts, mask, &data, 0);
+      *status = data ? TRUE : FALSE;
+   }
+
+   return err_flag;
+}
+
+
+static inline pm_err_flag_type pm_smbchg_misc_unlock_perph_write(pm_smbchg_data_type *smbchg_ptr)
+{
+   pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+
+   if (NULL == smbchg_ptr)
+   {
+      err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else
+   {
+      pm_register_address_type sec_access = smbchg_ptr->smbchg_register->misc_register->base_address + smbchg_ptr->smbchg_register->misc_register->sec_access;
+      err_flag = pm_comm_write_byte(smbchg_ptr->comm_ptr->slave_id, sec_access, 0xA5, 0);
+   }
+
+   return err_flag;
+}
+#endif
\ No newline at end of file
diff --git a/dev/pmic/pmi8994/pm_smbchg_usb_chgpth.c b/dev/pmic/pmi8994/pm_smbchg_usb_chgpth.c
new file mode 100644
index 0000000..b508850
--- /dev/null
+++ b/dev/pmic/pmi8994/pm_smbchg_usb_chgpth.c
@@ -0,0 +1,928 @@
+/* Copyright (c) 2015, The Linux Foundation. All rights reserved.
+
+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 Linux Foundation nor the names of its
+      contributors may be used to endorse or promote products derived
+      from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+
+/*=============================================================================
+
+					INCLUDE FILES
+
+===============================================================================*/
+
+#include "pm_smbchg_driver.h"
+#include "pm_smbchg_usb_chgpth.h"
+
+/*unlock peripheral for secured access write*/
+static inline pm_err_flag_type pm_smbchg_usb_chgpth_unlock_perph_write(pm_smbchg_data_type *smbchg_ptr);
+
+/*Find the nearest register value corresponding to input_data*/
+static void pm_smbchg_usb_chgpth_return_reg_value(uint32 input_data, uint32 *array, uint32 array_size, pm_register_data_type *reg_value);
+
+pm_err_flag_type pm_smbchg_usb_chgpth_icl_sts(uint32 device_index, input_current_limit_sts *icl_sts)
+{
+   pm_err_flag_type    err_flag    = PM_ERR_FLAG__SUCCESS;
+   pm_register_data_type data1, data2;
+
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+
+   if (NULL == smbchg_ptr)
+   {
+      err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else
+   {
+      uint32 *icl_current = smbchg_ptr->chg_range_data->usbin_current_limits;
+
+      pm_register_address_type icl_sts1 = smbchg_ptr->smbchg_register->usb_chgpth_register->base_address + smbchg_ptr->smbchg_register->usb_chgpth_register->icl_sts_1;
+      pm_register_address_type icl_sts2 = smbchg_ptr->smbchg_register->usb_chgpth_register->base_address + smbchg_ptr->smbchg_register->usb_chgpth_register->icl_sts_2;
+
+      err_flag = pm_comm_read_byte(smbchg_ptr->comm_ptr->slave_id, icl_sts1, &data1, 0);
+      err_flag |= pm_comm_read_byte(smbchg_ptr->comm_ptr->slave_id, icl_sts2, &data2, 0);
+
+      icl_sts->is_aicl_complete = (data1 & 0x20) ? TRUE : FALSE;
+      icl_sts->input_current_limit = icl_current[data1 & 0x1F];
+      icl_sts->icl_mode = (input_current_limit_mode)((data2 & 0x30) >> 4);
+      icl_sts->is_usbin_suspended = (data2 & 0x8) ? TRUE : FALSE;
+      icl_sts->is_dcin_suspended = (data2 & 0x4) ? TRUE : FALSE;
+      icl_sts->is_usbin_active_pwr_src = (data2 & 0x2) ? TRUE : FALSE;
+      icl_sts->is_dcin_active_pwr_src = (data2 & 0x1) ? TRUE : FALSE;
+   }
+
+   return err_flag;
+}
+
+
+pm_err_flag_type pm_smbchg_usb_chgpth_get_pwr_pth(uint32 device_index, pm_smbchg_usb_chgpth_pwr_pth_type *pwr_path)
+{
+   pm_err_flag_type    err_flag    = PM_ERR_FLAG__SUCCESS;
+   pm_register_data_type data;
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+
+   if (NULL == smbchg_ptr)
+   {
+      err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else
+   {
+      pm_register_address_type pwr_pth_sts = smbchg_ptr->smbchg_register->usb_chgpth_register->base_address + smbchg_ptr->smbchg_register->usb_chgpth_register->pwr_pth_sts;
+
+      err_flag = pm_comm_read_byte(smbchg_ptr->comm_ptr->slave_id, pwr_pth_sts, &data, 0);
+
+      *pwr_path = (pm_smbchg_usb_chgpth_pwr_pth_type)(data & 0x03);
+   }
+
+   return err_flag;
+}
+
+
+/*auto power source detection degitched status*/
+pm_err_flag_type pm_smbchg_usb_chgpth_apsd_dg_sts(uint32 device_index, pm_apsd_dg_sts_type apsd_dg_sts_type, boolean* status)
+{
+   pm_err_flag_type    err_flag    = PM_ERR_FLAG__SUCCESS;
+   pm_register_data_type data;
+
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+
+   if (NULL == smbchg_ptr)
+   {
+      err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else if ( NULL == status || PM_SMBCHG_USB_CHGPTH_DG_STS__INVALID == apsd_dg_sts_type)
+   {
+      err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+   }
+   else
+   {
+      pm_register_address_type apsd_dg_sts_reg = smbchg_ptr->smbchg_register->usb_chgpth_register->base_address + smbchg_ptr->smbchg_register->usb_chgpth_register->apsd_dg_sts;
+
+      err_flag = pm_comm_read_byte(smbchg_ptr->comm_ptr->slave_id, apsd_dg_sts_reg, &data, 0);
+
+      *status = (data & (0x1 << apsd_dg_sts_type))? TRUE : FALSE;
+   }
+   return err_flag;
+}
+
+
+pm_err_flag_type pm_smbchg_usb_chgpth_rid_sts(uint32 device_index, pm_smbchg_usb_chgpth_rid_sts_type *rid_sts)
+{
+   pm_err_flag_type    err_flag    = PM_ERR_FLAG__SUCCESS;
+   pm_register_data_type data;
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+
+   if (NULL == smbchg_ptr)
+   {
+      err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else
+   {
+      pm_register_address_type rid_sts_reg = smbchg_ptr->smbchg_register->usb_chgpth_register->base_address + smbchg_ptr->smbchg_register->usb_chgpth_register->rid_sts;
+
+      err_flag = pm_comm_read_byte_mask(smbchg_ptr->comm_ptr->slave_id, rid_sts_reg, 0xF, &data, 0);
+
+      switch (data)
+      {
+         case 0x8: *rid_sts = PM_SMBCHG_USB_CHGPTH_RID__FLOAT;   break;
+         case 0x4: *rid_sts = PM_SMBCHG_USB_CHGPTH_RID__A;       break;
+         case 0x2: *rid_sts = PM_SMBCHG_USB_CHGPTH_RID__B;       break;
+         case 0x1: *rid_sts = PM_SMBCHG_USB_CHGPTH_RID__C;       break;
+         case 0x0: *rid_sts = PM_SMBCHG_USB_CHGPTH_RID__GND;     break;
+         default:  *rid_sts = PM_SMBCHG_USB_CHGPTH_RID__INVALID; 
+      }
+   }
+
+   return err_flag;
+};
+
+
+
+pm_err_flag_type pm_smbchg_usb_chgpth_hvdcp_sts(uint32 device_index, pm_smbchg_usb_chgpth_hvdcp_sts_type hvdcp_sts, boolean *status)
+{
+
+   pm_err_flag_type    err_flag    = PM_ERR_FLAG__SUCCESS;
+   pm_register_data_type data;
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+
+   if (NULL == smbchg_ptr)
+   {
+      err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else if (NULL == status || PM_SMBCHG_USB_CHGPTH__HVDCP_STS_INVALID == hvdcp_sts)
+   {
+      err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+   }
+   else
+   {
+      pm_register_address_type hvdcp_sts_reg = smbchg_ptr->smbchg_register->usb_chgpth_register->base_address + smbchg_ptr->smbchg_register->usb_chgpth_register->hvdcp_sts;
+
+      err_flag = pm_comm_read_byte(smbchg_ptr->comm_ptr->slave_id, hvdcp_sts_reg, &data, 0);
+
+      *status = (data & (0x1 << hvdcp_sts))? TRUE : FALSE;
+
+   }
+   return err_flag;
+}
+
+pm_err_flag_type pm_smbchg_usb_chgpth_input_sts(uint32 device_index, pm_smbchg_usb_chgpth_chgr_type chgr, pm_smbchg_usb_chgpth_input_sts_type *input_sts_type)
+{
+   pm_err_flag_type    err_flag    = PM_ERR_FLAG__SUCCESS;
+   pm_register_data_type data;
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+
+   if (NULL == smbchg_ptr)
+   {
+      err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else
+   {
+      pm_register_address_type input_sts = smbchg_ptr->smbchg_register->usb_chgpth_register->base_address + smbchg_ptr->smbchg_register->usb_chgpth_register->input_sts;
+
+      err_flag = pm_comm_read_byte(smbchg_ptr->comm_ptr->slave_id, input_sts, &data, 0);
+      if (PM_ERR_FLAG__SUCCESS == err_flag)
+      {
+         switch (chgr)
+         {
+         case PM_SMBCHG_CHAR_TYPE_USB:
+            data = (data & 0x38) >> 3;     break;
+         case PM_SMBCHG_CHAR_TYPE_DC:
+            data = (data & 0x7);           break;
+         default:
+            return PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+         }
+
+         switch (data)
+         {
+         case 0x00:
+            *input_sts_type = PM_SMBCHG_NO_CHGR_DETECTED;             break;
+         case 0x01:
+            *input_sts_type = PM_SMBCHG_5V_9V_CHGR_DETECTED;          break;
+         case 0x02:
+            *input_sts_type = PM_SMBCHG_UNREGULATED_CHGR_DETECTED;    break;
+         case 0x04:
+            *input_sts_type = PM_SMBCHG_9V_CHGR_DETECTED;             break;
+         default:
+            *input_sts_type = PM_SMBCHG_INVALID_DETECTED;             break;
+         }
+      }
+
+   }
+
+   return err_flag;
+}
+
+pm_err_flag_type pm_smbchg_usb_chgpth_get_valid_usbid(uint32 device_index, uint16 *valid_id)
+{
+   pm_err_flag_type    err_flag    = PM_ERR_FLAG__SUCCESS;
+   pm_register_data_type data1, data2;
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+
+   if (NULL == smbchg_ptr)
+   {
+      err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else
+   {
+      pm_register_address_type usbid_valid_id_7_0  = smbchg_ptr->smbchg_register->usb_chgpth_register->base_address + smbchg_ptr->smbchg_register->usb_chgpth_register->usbid_valid_id_7_0;
+      pm_register_address_type usbid_valid_id_11_8 = smbchg_ptr->smbchg_register->usb_chgpth_register->base_address + smbchg_ptr->smbchg_register->usb_chgpth_register->usbid_valid_id_11_8;
+
+      err_flag = pm_comm_read_byte(smbchg_ptr->comm_ptr->slave_id, usbid_valid_id_7_0, &data1, 0);
+      err_flag |= pm_comm_read_byte_mask(smbchg_ptr->comm_ptr->slave_id, usbid_valid_id_11_8, 0x0F, &data2, 0);
+      if (PM_ERR_FLAG__SUCCESS == err_flag)
+      {
+         *valid_id = (uint16)((data2 << 8) | data1);
+      }
+
+   }
+   return err_flag;
+}
+
+
+pm_err_flag_type pm_smbchg_usb_chgpth_set_cmd_il(uint32 device_index, pm_smbchg_usb_chgpth_cmd_il_type chgpth_cmd_il, boolean enable)
+{
+   pm_err_flag_type    err_flag    = PM_ERR_FLAG__SUCCESS;
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+   pm_register_data_type data;
+
+   if(NULL == smbchg_ptr)
+   {
+      err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else if(PM_SMBCHG_USBCHGPTH_CMD_IL__INVALID == chgpth_cmd_il)
+   {
+      err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+   }
+   else
+   {
+      pm_register_address_type cmd_il  = smbchg_ptr->smbchg_register->usb_chgpth_register->base_address + smbchg_ptr->smbchg_register->usb_chgpth_register->cmd_il;
+
+      data = (enable) ? 0xFF : 0x00;
+
+      err_flag = pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, cmd_il, (0x1 << chgpth_cmd_il), data, 0);
+   }
+
+   return err_flag;
+}
+
+
+pm_err_flag_type pm_smbchg_usb_chgpth_get_cmd_il(uint32 device_index, pm_smbchg_usb_chgpth_cmd_il_type chgpth_cmd_il, boolean *enable)
+{
+   pm_err_flag_type    err_flag    = PM_ERR_FLAG__SUCCESS;
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+   pm_register_data_type data;
+   pm_register_address_type cmd_il;
+
+   if (NULL == smbchg_ptr)
+   {
+      err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else if (PM_SMBCHG_USBCHGPTH_CMD_IL__INVALID == chgpth_cmd_il || NULL == enable)
+   {
+      err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+   }
+   else
+   {
+      cmd_il  = smbchg_ptr->smbchg_register->usb_chgpth_register->base_address + smbchg_ptr->smbchg_register->usb_chgpth_register->cmd_il;
+      err_flag = pm_comm_read_byte(smbchg_ptr->comm_ptr->slave_id, cmd_il, &data, 0);
+      *enable = (data & (0x1 << chgpth_cmd_il))? TRUE : FALSE;
+   }
+   return err_flag;
+}
+
+pm_err_flag_type pm_smbchg_usb_chgpth_set_iusb_max(uint32 device_index, uint32 i_milli_amp)
+{
+   pm_err_flag_type    err_flag    = PM_ERR_FLAG__SUCCESS;
+   pm_register_data_type data;
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+
+   if (NULL == smbchg_ptr)
+   {
+      err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else
+   {
+      pm_register_address_type iusb_max  = smbchg_ptr->smbchg_register->usb_chgpth_register->base_address + smbchg_ptr->smbchg_register->usb_chgpth_register->iusb_max;
+
+      if (i_milli_amp > 2500)
+      {
+         data = 0x19;
+      }
+      else if (i_milli_amp < 100)
+      {
+         data = 0x0;
+      }
+      else if (i_milli_amp > 100 && i_milli_amp <= 150)
+      {
+         data = 0x1;
+      }
+      else
+      {
+         /*IUSB_MAX = data * 100*/
+         data = (i_milli_amp + 50) / 100; //rounding
+      }
+
+      err_flag = pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, iusb_max, 0x1F, data, 0);
+   }
+
+   return err_flag;
+}
+
+pm_err_flag_type pm_smbchg_usb_chgpth_get_iusb_max(uint32 device_index, uint32 *i_milli_amp)
+{
+   pm_err_flag_type    err_flag    = PM_ERR_FLAG__SUCCESS;
+   pm_register_data_type data;
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+
+   if (NULL == smbchg_ptr)
+   {
+      err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else if (NULL == i_milli_amp)
+   {
+      err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+   }
+   else
+   {
+      pm_register_address_type iusb_max  = smbchg_ptr->smbchg_register->usb_chgpth_register->base_address + smbchg_ptr->smbchg_register->usb_chgpth_register->iusb_max;
+      err_flag = pm_comm_read_byte(smbchg_ptr->comm_ptr->slave_id, iusb_max, &data, 0);
+
+      if (PM_ERR_FLAG__SUCCESS == err_flag)
+      {
+         data &= 0x1F;
+         switch (data)
+         {
+         case 0:
+            *i_milli_amp = 100; break;
+         case 1:
+            *i_milli_amp = 150; break;
+         default:
+            *i_milli_amp = data * 100;
+         }
+      }
+   }
+   return err_flag;
+}
+
+pm_err_flag_type pm_smbchg_usb_chgpth_set_enum_timer_stop(uint32 device_index)
+{
+   pm_err_flag_type    err_flag    = PM_ERR_FLAG__SUCCESS;
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+
+   if (NULL == smbchg_ptr)
+   {
+      err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else
+   {
+      pm_register_address_type enum_timer_stop  = smbchg_ptr->smbchg_register->usb_chgpth_register->base_address + smbchg_ptr->smbchg_register->usb_chgpth_register->enum_timer_stop;
+      err_flag = pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, enum_timer_stop, 0x1, 0x1, 0);
+   }
+   return err_flag;
+}
+
+
+pm_err_flag_type pm_smbchg_usb_chgpth_set_usbin_adptr_allowance(uint32 device_index, pm_smbchg_usbin_adptr_allowance adptr_allowance)
+{
+   pm_err_flag_type  err_flag  = PM_ERR_FLAG__SUCCESS;
+  
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+
+   if (NULL == smbchg_ptr)
+   {
+      err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else if (adptr_allowance >= PM_SMBCHG_USBIN_ADPTR_ALLOWANCE_INVALID)
+   {
+      err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+   }
+   else
+   {
+      pm_register_address_type usbin_chgr_cfg = smbchg_ptr->smbchg_register->usb_chgpth_register->base_address + smbchg_ptr->smbchg_register->usb_chgpth_register->usbin_chgr_cfg;
+      err_flag = pm_smbchg_usb_chgpth_unlock_perph_write(smbchg_ptr);
+      err_flag |= pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, usbin_chgr_cfg, 0x7, (pm_register_data_type)adptr_allowance, 0);
+   }
+
+   return err_flag;
+}
+
+
+pm_err_flag_type pm_smbchg_usb_chgpth_get_usbin_adptr_allowance(uint32 device_index, pm_smbchg_usbin_adptr_allowance *adptr_allowance)
+{
+   pm_err_flag_type  err_flag  = PM_ERR_FLAG__SUCCESS;
+   pm_register_data_type data = 0;
+
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+
+   if (NULL == smbchg_ptr)
+   {
+      err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else if (NULL == adptr_allowance)
+   {
+      err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+   }
+   else
+   {
+      pm_register_address_type usbin_chgr_cfg = smbchg_ptr->smbchg_register->usb_chgpth_register->base_address + smbchg_ptr->smbchg_register->usb_chgpth_register->usbin_chgr_cfg;
+      
+      err_flag = pm_comm_read_byte_mask(smbchg_ptr->comm_ptr->slave_id, usbin_chgr_cfg, 0x7, &data, 0);
+       /*valid adptr_allowance is only 0 to 5 but data read is 3 bits*/
+      *adptr_allowance = (data >=PM_SMBCHG_USBIN_ADPTR_ALLOWANCE_INVALID)? PM_SMBCHG_USBIN_ADPTR_ALLOWANCE_INVALID :(pm_smbchg_usbin_adptr_allowance)data;
+   }
+
+   return err_flag;
+}
+
+
+pm_err_flag_type pm_smbchg_usb_chgpth_set_usbin_current_limit(uint32 device_index, uint32 current_ma)
+{
+   pm_err_flag_type  err_flag  = PM_ERR_FLAG__SUCCESS;
+   pm_register_data_type data =0;
+   
+ 
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+   if (NULL == smbchg_ptr)
+   {
+      err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else
+   {
+      uint32 *usbin_icl = smbchg_ptr->chg_range_data->usbin_current_limits;
+      pm_register_address_type usbin_il_cfg = smbchg_ptr->smbchg_register->usb_chgpth_register->base_address + smbchg_ptr->smbchg_register->usb_chgpth_register->usbin_il_cfg;
+
+      pm_smbchg_usb_chgpth_return_reg_value(current_ma, usbin_icl, USBIN_SIZE, &data);
+
+      err_flag = pm_smbchg_usb_chgpth_unlock_perph_write(smbchg_ptr);
+      err_flag |= pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, usbin_il_cfg, 0x1F, data, 0);
+   }
+
+   return err_flag;
+}
+
+
+
+pm_err_flag_type pm_smbchg_usb_chgpth_get_usbin_current_limit(uint32 device_index, uint32 *current_ma)
+{
+   pm_err_flag_type  err_flag  = PM_ERR_FLAG__SUCCESS;
+   pm_register_data_type data;
+
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+   if (NULL == smbchg_ptr)
+   {
+      err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else if (NULL == current_ma)
+   {
+      err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+   }
+   else
+   {
+      uint32 *usbin_icl = smbchg_ptr->chg_range_data->usbin_current_limits;
+      pm_register_address_type usbin_il_cfg = smbchg_ptr->smbchg_register->usb_chgpth_register->base_address + smbchg_ptr->smbchg_register->usb_chgpth_register->usbin_il_cfg;
+      err_flag |= pm_comm_read_byte_mask(smbchg_ptr->comm_ptr->slave_id, usbin_il_cfg, 0x1F, &data, 0);
+      *current_ma = usbin_icl[data & 0x1F];
+   }
+
+   return err_flag;
+}
+
+
+pm_err_flag_type pm_smbchg_usb_chgpth_config_aicl(uint32 device_index, pm_smbchg_usb_chgpth_aicl_cfg_type usb_aicl_cfg, boolean enable)
+{
+   pm_err_flag_type  err_flag  = PM_ERR_FLAG__SUCCESS;
+   
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+   if (NULL == smbchg_ptr)
+   {
+      err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else if (PM_SMBCHG_USB_CHGPTH_AICL_CFG__INVALID == usb_aicl_cfg)
+   {
+      err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+   }
+   else
+   {
+      pm_register_address_type usb_aicl_cfg_reg = smbchg_ptr->smbchg_register->usb_chgpth_register->base_address + smbchg_ptr->smbchg_register->usb_chgpth_register->usb_aicl_cfg;
+      err_flag = pm_smbchg_usb_chgpth_unlock_perph_write(smbchg_ptr);
+      err_flag |= pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, usb_aicl_cfg_reg, (0x1 << usb_aicl_cfg), (pm_register_data_type)(enable<<usb_aicl_cfg), 0);
+   }
+
+   return err_flag;
+}
+
+
+pm_err_flag_type pm_smbchg_usb_chgpth_get_aicl_config(uint32 device_index, pm_smbchg_usb_chgpth_aicl_cfg_type usb_aicl_cfg, boolean* enable)
+{
+   pm_err_flag_type  err_flag  = PM_ERR_FLAG__SUCCESS;
+   pm_register_data_type data;
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+
+   if (NULL == smbchg_ptr)
+   {
+      err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else if (PM_SMBCHG_USB_CHGPTH_AICL_CFG__INVALID == usb_aicl_cfg)
+   {
+      err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+   }
+   else if (NULL == enable)
+   {
+      err_flag = PM_ERR_FLAG__PAR3_OUT_OF_RANGE;
+   } 
+   else
+   {
+      pm_register_address_type usb_aicl_cfg_reg = smbchg_ptr->smbchg_register->usb_chgpth_register->base_address + smbchg_ptr->smbchg_register->usb_chgpth_register->usb_aicl_cfg;
+
+      err_flag = pm_comm_read_byte_mask(smbchg_ptr->comm_ptr->slave_id, usb_aicl_cfg_reg, (0x1<<usb_aicl_cfg), &data, 0);
+      
+      *enable = (data)? TRUE: FALSE;
+   }
+
+   return err_flag;
+}
+
+
+
+pm_err_flag_type pm_smbchg_usb_chgpth_config_usb_chgpth(uint32 device_index, pm_usb_chgpth_usb_cfg_type *usb_cfg_type)
+{
+   pm_err_flag_type  err_flag  = PM_ERR_FLAG__SUCCESS;
+   pm_register_data_type data;
+   uint8 mask = 0x06;
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+
+   if (NULL == smbchg_ptr)
+   {
+      err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else if (NULL == usb_cfg_type)
+   {
+      err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+   }
+   else
+   {
+      data = ((usb_cfg_type->usb51ac_ctrl_type << 1) |(usb_cfg_type->usb51_cmd_pol_type << 2));
+
+      pm_register_address_type cfg = smbchg_ptr->smbchg_register->usb_chgpth_register->base_address + smbchg_ptr->smbchg_register->usb_chgpth_register->cfg;
+      err_flag = pm_smbchg_usb_chgpth_unlock_perph_write(smbchg_ptr);
+      err_flag |= pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, cfg, mask, data, 0);
+   }
+
+   return err_flag;
+}
+
+
+
+pm_err_flag_type pm_smbchg_usb_chgpth_get_usb_chgpth_config(uint32 device_index, pm_usb_chgpth_usb_cfg_type *usb_cfg_type)
+{
+    pm_err_flag_type  err_flag  = PM_ERR_FLAG__SUCCESS;
+    pm_register_data_type data;
+    pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+    
+    if (NULL == smbchg_ptr)
+    {
+       err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+    }
+    else if (NULL == usb_cfg_type)
+    {
+       err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+    }
+    else
+    {
+       pm_register_address_type cfg = smbchg_ptr->smbchg_register->usb_chgpth_register->base_address + smbchg_ptr->smbchg_register->usb_chgpth_register->cfg;
+       err_flag = pm_comm_read_byte(smbchg_ptr->comm_ptr->slave_id, cfg, &data, 0);
+
+       usb_cfg_type->usb51ac_ctrl_type   = (data & 0x1)?  PM_SMBCHG_USB_CHGPTH_USB51AC_CTRL__PIN: PM_SMBCHG_USB_CHGPTH_USB51AC_CTRL__CMD;
+       usb_cfg_type->usb51_cmd_pol_type  = (data & 0x2)?  PM_SMBCHG_USB_CHGPTH_USB51_CMD_POL__CMD1_100: PM_SMBCHG_USB_CHGPTH_USB51_CMD_POL__CMD1_500;                 
+    }
+    
+    return err_flag;
+}
+
+
+pm_err_flag_type pm_smbchg_usb_chgpth_config_apsd(uint32 device_index, pm_smbchg_usb_chgpth_apsd_cfg_type *apsd_cfg)
+{
+   pm_err_flag_type  err_flag  = PM_ERR_FLAG__SUCCESS;
+   pm_register_data_type data;
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+
+   if (NULL == smbchg_ptr)
+   {
+      err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else if (NULL == apsd_cfg)
+   {
+      err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+   }
+   else
+   {
+       data = (apsd_cfg->en_auto_src_detect) |(apsd_cfg->en_dcd_tmout_only << 1)|(apsd_cfg->set_rid_clk_2khz << 2)|(apsd_cfg->force_icl_500ma_vbat_low_sdp << 3)
+       |(apsd_cfg->sdp_suspend << 4)|(apsd_cfg->is_ocd_isel_hc << 5)|(apsd_cfg->usb_fail_pok_hv << 6)|(apsd_cfg->is_input_prority_usbin << 7 );
+
+      pm_register_address_type apsd_cfg_reg = smbchg_ptr->smbchg_register->usb_chgpth_register->base_address + smbchg_ptr->smbchg_register->usb_chgpth_register->apsd_cfg;
+      err_flag = pm_smbchg_usb_chgpth_unlock_perph_write(smbchg_ptr);
+      err_flag |= pm_comm_write_byte(smbchg_ptr->comm_ptr->slave_id, apsd_cfg_reg, data, 0);
+   }
+
+   return err_flag;
+}
+
+
+pm_err_flag_type pm_smbchg_usb_chgpth_get_apsd_config(uint32 device_index, pm_smbchg_usb_chgpth_apsd_cfg_type *apsd_cfg)
+{
+   pm_err_flag_type  err_flag  = PM_ERR_FLAG__SUCCESS;
+   pm_register_data_type data;
+
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+
+   if (NULL == smbchg_ptr)
+   {
+      err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else if (NULL == apsd_cfg )
+   {
+      err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+   }
+   else
+   {
+      pm_register_address_type apsd_cfg_reg = smbchg_ptr->smbchg_register->usb_chgpth_register->base_address + smbchg_ptr->smbchg_register->usb_chgpth_register->apsd_cfg;
+      err_flag = pm_comm_read_byte(smbchg_ptr->comm_ptr->slave_id, apsd_cfg_reg, &data, 0);
+
+      apsd_cfg->en_auto_src_detect           = (data & 0x1)  ? TRUE : FALSE;     
+      apsd_cfg->en_dcd_tmout_only            = (data & 0x2)  ? TRUE : FALSE;            
+      apsd_cfg->set_rid_clk_2khz             = (data & 0x4)  ? TRUE : FALSE;             
+      apsd_cfg->force_icl_500ma_vbat_low_sdp = (data & 0x8)  ? TRUE : FALSE; 
+      apsd_cfg->sdp_suspend                  = (data & 0x10) ? TRUE : FALSE;                  
+      apsd_cfg->is_ocd_isel_hc               = (data & 0x20) ? TRUE : FALSE;               
+      apsd_cfg->usb_fail_pok_hv              = (data & 0x40) ? TRUE : FALSE;              
+      apsd_cfg->is_input_prority_usbin       = (data & 0x80) ? TRUE : FALSE; 
+   }
+   return err_flag;
+}
+
+
+
+pm_err_flag_type pm_smbchg_chgpth_set_input_priority(uint32 device_index, pm_smbchg_chgpth_input_priority_type chgpth_priority)
+{
+   pm_err_flag_type      err_flag    = PM_ERR_FLAG__SUCCESS;
+   pm_smbchg_usb_chgpth_apsd_cfg_type apsd_cfg;
+
+   if (chgpth_priority >= PM_SMBCHG_USBCHGPTH_INPUT_PRIORITY_INVALID)
+   {
+      err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+   }
+   else
+   {
+      //Get the current configuration
+      err_flag = pm_smbchg_usb_chgpth_get_apsd_config(device_index,  &apsd_cfg);
+      
+      if (err_flag == PM_ERR_FLAG__SUCCESS)
+      {
+         switch (chgpth_priority) 
+         {
+         case PM_SMBCHG_USBCHGPTH_INPUT_PRIORITY_DCIN:
+            {
+               apsd_cfg.is_input_prority_usbin = 0;
+            }
+            break;
+         case PM_SMBCHG_USBCHGPTH_INPUT_PRIORITY_USBIN:
+            {
+               apsd_cfg.is_input_prority_usbin = 1;
+            }
+            break;
+         default:
+            err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+            break;
+         }
+
+         err_flag |= pm_smbchg_usb_chgpth_config_apsd(device_index, &apsd_cfg);
+      }
+   }
+   return err_flag;
+}
+
+
+pm_err_flag_type pm_smbchg_usb_chgpth_irq_enable(uint32 device_index, pm_smbchg_usb_chgpth_irq_type irq, boolean enable)
+{
+   pm_err_flag_type    err_flag    = PM_ERR_FLAG__SUCCESS;
+   pm_register_address_type irq_reg;
+   pm_register_data_type data = 1 << irq;
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+
+   if (NULL == smbchg_ptr)
+   {
+      err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else if (irq >= PM_SMBCHG_USB_CHGPTH_IRQ_INVALID)
+   {
+      err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else
+   {
+      if (enable)
+      {
+         irq_reg = smbchg_ptr->smbchg_register->usb_chgpth_register->base_address + smbchg_ptr->smbchg_register->usb_chgpth_register->int_en_set;
+      }
+      else
+      {
+         irq_reg = smbchg_ptr->smbchg_register->usb_chgpth_register->base_address + smbchg_ptr->smbchg_register->usb_chgpth_register->int_en_clr;
+      }
+
+      err_flag = pm_comm_write_byte(smbchg_ptr->comm_ptr->slave_id, irq_reg, data, 0);
+   }
+
+   return err_flag;
+}
+
+pm_err_flag_type pm_smbchg_usb_chgpth_irq_clear(uint32  device_index, pm_smbchg_usb_chgpth_irq_type irq)
+{
+   pm_err_flag_type    err_flag    = PM_ERR_FLAG__SUCCESS;
+   pm_register_data_type data = 1 << irq;
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+
+   if (NULL == smbchg_ptr)
+   {
+      err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else if (irq >= PM_SMBCHG_USB_CHGPTH_IRQ_INVALID)
+   {
+      err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else
+   {
+      pm_register_address_type int_latched_clr = smbchg_ptr->smbchg_register->usb_chgpth_register->base_address + smbchg_ptr->smbchg_register->usb_chgpth_register->int_latched_clr;
+      err_flag = pm_comm_write_byte(smbchg_ptr->comm_ptr->slave_id, int_latched_clr, data, 0);
+   }
+   return err_flag;
+}
+
+
+pm_err_flag_type pm_smbchg_usb_chgpth_irq_set_trigger(uint32 device_index, pm_smbchg_usb_chgpth_irq_type irq, pm_irq_trigger_type trigger)
+{
+   pm_err_flag_type    err_flag    = PM_ERR_FLAG__SUCCESS;
+   uint8 mask = 1 << irq;
+   pm_register_data_type set_type, polarity_high, polarity_low;
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+
+   if (NULL == smbchg_ptr)
+   {
+      err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else if (irq >= PM_SMBCHG_USB_CHGPTH_IRQ_INVALID)
+   {
+      err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else
+   {
+      pm_register_address_type int_set_type = smbchg_ptr->smbchg_register->usb_chgpth_register->base_address + smbchg_ptr->smbchg_register->usb_chgpth_register->int_set_type;
+      pm_register_address_type int_polarity_high = smbchg_ptr->smbchg_register->usb_chgpth_register->base_address + smbchg_ptr->smbchg_register->usb_chgpth_register->int_polarity_high;
+      pm_register_address_type int_polarity_low = smbchg_ptr->smbchg_register->usb_chgpth_register->base_address + smbchg_ptr->smbchg_register->usb_chgpth_register->int_polarity_low;
+
+      switch (trigger)
+      {
+      case PM_IRQ_TRIGGER_ACTIVE_LOW:
+         set_type = 0x00;
+         polarity_high = 0x00;
+         polarity_low = 0xFF;
+         break;
+      case PM_IRQ_TRIGGER_ACTIVE_HIGH:
+         set_type = 0x00;
+         polarity_high = 0xFF;
+         polarity_low = 0x00;
+         break;
+      case PM_IRQ_TRIGGER_RISING_EDGE:
+         set_type = 0xFF;
+         polarity_high = 0xFF;
+         polarity_low = 0x00;
+         break;
+      case PM_IRQ_TRIGGER_FALLING_EDGE:
+         set_type = 0xFF;
+         polarity_high = 0x00;
+         polarity_low = 0xFF;
+         break;
+      case PM_IRQ_TRIGGER_DUAL_EDGE:
+         set_type = 0xFF;
+         polarity_high = 0xFF;
+         polarity_low = 0xFF;
+         break;
+      default:
+         return PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+      }
+      err_flag = pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, int_set_type, mask, set_type, 0);
+      err_flag |= pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, int_polarity_high, mask, polarity_high, 0);
+      err_flag |= pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, int_polarity_low, mask, polarity_low, 0);
+   }
+
+   return err_flag;
+}
+
+pm_err_flag_type pm_smbchg_usb_chgpth_irq_status(uint32 device_index, pm_smbchg_usb_chgpth_irq_type irq, pm_irq_status_type type, boolean *status)
+{
+   pm_err_flag_type    err_flag    = PM_ERR_FLAG__SUCCESS;
+   pm_register_data_type data;
+   uint8 mask = 1 << irq;
+   pm_register_address_type int_sts;
+   pm_smbchg_data_type *smbchg_ptr  = pm_smbchg_get_data(device_index);
+
+   if (NULL == smbchg_ptr)
+   {
+      err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else if (irq >= PM_SMBCHG_USB_CHGPTH_IRQ_INVALID)
+   {
+      err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else
+   {
+      switch (type)
+      {
+      case PM_IRQ_STATUS_RT:
+         int_sts = smbchg_ptr->smbchg_register->usb_chgpth_register->base_address + smbchg_ptr->smbchg_register->usb_chgpth_register->int_rt_sts;
+         break;
+      case PM_IRQ_STATUS_LATCHED:
+         int_sts = smbchg_ptr->smbchg_register->usb_chgpth_register->base_address + smbchg_ptr->smbchg_register->usb_chgpth_register->int_latched_sts;
+         break;
+      case PM_IRQ_STATUS_PENDING:
+         int_sts = smbchg_ptr->smbchg_register->usb_chgpth_register->base_address + smbchg_ptr->smbchg_register->usb_chgpth_register->int_pending_sts;
+         break;
+      default:
+         return PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+      }
+
+      err_flag = pm_comm_read_byte_mask(smbchg_ptr->comm_ptr->slave_id, int_sts, mask, &data, 0);
+      *status = data ? TRUE : FALSE;
+   }
+   return err_flag;
+}
+
+
+static inline pm_err_flag_type pm_smbchg_usb_chgpth_unlock_perph_write(pm_smbchg_data_type *smbchg_ptr)
+{
+   pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+
+   if (NULL == smbchg_ptr)
+   {
+      err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+   }
+   else
+   {
+      pm_register_address_type sec_access = smbchg_ptr->smbchg_register->usb_chgpth_register->base_address + smbchg_ptr->smbchg_register->usb_chgpth_register->sec_access;
+      err_flag = pm_comm_write_byte(smbchg_ptr->comm_ptr->slave_id, sec_access, 0xA5, 0);
+   }
+
+   return err_flag;
+}
+
+
+/*Find the nearest register value corresponding to input_data*/
+static void pm_smbchg_usb_chgpth_return_reg_value(uint32 input_data, uint32 *array, uint32 array_size, pm_register_data_type *reg_value)
+{
+    uint32 loc = 0;
+    
+    /*checking lower bound*/
+    input_data = (array[0]>input_data)? array[0]: input_data;
+
+    while (loc < array_size)
+    {
+        if (input_data < array[loc])
+        {
+            break;
+        }
+        else
+        {
+            loc++;
+        }
+    }
+
+    *reg_value = (loc) ? (loc - 1) : 0;
+
+    return;
+}
+
+
+
+/*@todo: need more info to implement below 
+pm_smbchg_usb_chgpth_set_wi_pwr_options(uint32 device_index)
+pm_smbchg_usb_chgpth_get_wi_pwr_options(uint32 device_index)
+*/
diff --git a/dev/pmic/pmi8994/rules.mk b/dev/pmic/pmi8994/rules.mk
new file mode 100644
index 0000000..bbf41d0
--- /dev/null
+++ b/dev/pmic/pmi8994/rules.mk
@@ -0,0 +1,16 @@
+LOCAL_DIR := $(GET_LOCAL_DIR)
+
+INCLUDES += -I$(LOCAL_DIR)/include
+
+OBJS += \
+	$(LOCAL_DIR)/pm_app_smbchg.o \
+	$(LOCAL_DIR)/pm_config_target.o \
+	$(LOCAL_DIR)/pm_smbchg_bat_if.o \
+	$(LOCAL_DIR)/pm_smbchg_dc_chgpth.o\
+	$(LOCAL_DIR)/pm_smbchg_misc.o \
+	$(LOCAL_DIR)/pm_comm_spmi_lite.o \
+	$(LOCAL_DIR)/pm_fg_adc_usr.o \
+	$(LOCAL_DIR)/pm_fg_driver.o \
+	$(LOCAL_DIR)/pm_smbchg_chgr.o \
+	$(LOCAL_DIR)/pm_smbchg_driver.o \
+	$(LOCAL_DIR)/pm_smbchg_usb_chgpth.o
diff --git a/include/sys/types.h b/include/sys/types.h
index 9b26eeb..3ef3508 100644
--- a/include/sys/types.h
+++ b/include/sys/types.h
@@ -58,6 +58,23 @@
 
 typedef unsigned long time_t;
 typedef unsigned long long bigtime_t;
+typedef uint8_t uint8;
+typedef uint16_t uint16;
+typedef uint32_t uint32;
+typedef uint64_t uint64;
+typedef int     boolean;
+typedef int8_t int8;
+typedef int16_t int16;
+typedef int32_t int32;
+typedef bool boolean;
+
+#ifndef TRUE
+#define TRUE true
+#endif
+#ifndef FALSE
+#define FALSE false
+#endif
+
 #define INFINITE_TIME ULONG_MAX
 
 #define ARRAY_SIZE(x) (sizeof(x)/sizeof((x)[0]))
diff --git a/platform/msm_shared/include/crypto_hash.h b/platform/msm_shared/include/crypto_hash.h
index 44e227a..4faca91 100644
--- a/platform/msm_shared/include/crypto_hash.h
+++ b/platform/msm_shared/include/crypto_hash.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2010-2014, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2010-2015, The Linux Foundation. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions are
@@ -29,13 +29,12 @@
 #ifndef __CRYPTO_HASH_H__
 #define __CRYPYO_HASH_H__
 
+#include <sys/types.h>
+
 #ifndef NULL
 #define NULL		0
 #endif
 
-#define TRUE		1
-#define FALSE		0
-
 #define SHA256_INIT_VECTOR_SIZE		8
 #define SHA1_INIT_VECTOR_SIZE		5
 
diff --git a/platform/msm_shared/include/glink_os_type.h b/platform/msm_shared/include/glink_os_type.h
index 091ad05..a129372 100644
--- a/platform/msm_shared/include/glink_os_type.h
+++ b/platform/msm_shared/include/glink_os_type.h
@@ -40,6 +40,7 @@
                         INCLUDE FILES
 
 ===========================================================================*/
+#include <sys/types.h>
 #include <string.h>
 #include <assert.h>
 
@@ -55,13 +56,6 @@
 #define DALSYS_SYNC_OBJ_SIZE_BYTES           40
 #define DALSYS_EVENT_OBJ_SIZE_BYTES          80
 
-typedef bool boolean;
-typedef uint64_t uint64;
-typedef uint32_t uint32;
-typedef long int32;
-#define TRUE 1
-#define FALSE 0
-
 typedef struct DALSYSEventObj  DALSYSEventObj;
 
 struct DALSYSEventObj
diff --git a/platform/msm_shared/include/msm_panel.h b/platform/msm_shared/include/msm_panel.h
index 7a3b014..03c8ae9 100755
--- a/platform/msm_shared/include/msm_panel.h
+++ b/platform/msm_shared/include/msm_panel.h
@@ -30,12 +30,10 @@
 #ifndef _PLATFORM_MSM_SHARED_MSM_PANEL_H_
 #define _PLATFORM_MSM_SHARED_MSM_PANEL_H_
 
+#include <sys/types.h>
 #include <stdint.h>
 #include <dev/fbcon.h>
 
-#define TRUE	1
-#define FALSE	0
-
 #define DFPS_MAX_FRAME_RATE 10
 #define DFPS_PLL_CODES_SIZE 0x1000 /* One page */
 
diff --git a/platform/msm_shared/include/splash.h b/platform/msm_shared/include/splash.h
index 76e867d..badb8d0 100644
--- a/platform/msm_shared/include/splash.h
+++ b/platform/msm_shared/include/splash.h
@@ -8806,6 +8806,6452 @@
 	0x00, 0x00, 0x00, 0x00,
 	0x00, 0x00, 0x00, 0x00,
 };
+
+#if ENABLE_WBC
+static char image_batt888[] = {
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 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, 0x01, 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,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 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, 0x01, 0x01, 0x01, 0x01, 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, 0x00, 0x00, 0x00, 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, 0x01, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x01, 0x01, 0x01, 0x01, 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, 0x00, 0x00, 0x00, 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, 0x01, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x01, 0x01,
+  0x01, 0x01, 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, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 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, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+  0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x01, 0x01, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+  0x01, 0x01, 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, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+  0x01, 0x01, 0x01, 0x01, 0x01, 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,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 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, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+  0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01,
+  0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x01, 0x01, 0x01, 0x01, 0x01,
+  0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+  0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+  0x01, 0x01, 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, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x01, 0x01,
+  0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+  0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+  0x01, 0x01, 0x01, 0x01, 0x01, 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,
+  0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+  0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x01, 0x01,
+  0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03,
+  0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03,
+  0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00,
+  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 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, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+  0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+  0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  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, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01,
+  0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
+  0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+  0x01, 0x01, 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,
+  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+  0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02,
+  0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02,
+  0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  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, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03,
+  0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
+  0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02,
+  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+  0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 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, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+  0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+  0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
+  0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01,
+  0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 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, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02,
+  0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
+  0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04,
+  0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00,
+  0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 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, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+  0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+  0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
+  0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x03, 0x03, 0x03,
+  0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+  0x01, 0x01, 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, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 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, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+  0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x05, 0x05, 0x05,
+  0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
+  0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+  0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+  0x01, 0x01, 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, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+  0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03,
+  0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
+  0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
+  0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01,
+  0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  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, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+  0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x05, 0x05, 0x05,
+  0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+  0x06, 0x06, 0x06, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x02, 0x02, 0x02,
+  0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 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, 0x01, 0x01, 0x01,
+  0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01,
+  0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x04, 0x04, 0x04,
+  0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x06, 0x06, 0x06,
+  0x06, 0x06, 0x06, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x03, 0x03, 0x03,
+  0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01,
+  0x01, 0x01, 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, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 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, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02,
+  0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03,
+  0x06, 0x06, 0x06, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
+  0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
+  0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 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,
+  0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+  0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04,
+  0x04, 0x04, 0x04, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
+  0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x04, 0x04, 0x04, 0x05, 0x05, 0x05,
+  0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+  0x01, 0x01, 0x01, 0x01, 0x01, 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,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x01, 0x01, 0x01, 0x01, 0x01,
+  0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
+  0x05, 0x05, 0x05, 0x07, 0x07, 0x07, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
+  0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x07, 0x07, 0x07,
+  0x07, 0x07, 0x07, 0x05, 0x05, 0x05, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02,
+  0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+  0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03,
+  0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
+  0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+  0x06, 0x06, 0x06, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x05, 0x05, 0x05,
+  0x05, 0x05, 0x05, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03,
+  0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+  0x01, 0x01, 0x01, 0x01, 0x01, 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,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 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, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+  0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x05, 0x05, 0x05,
+  0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x08, 0x08, 0x08, 0x09, 0x09, 0x09,
+  0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
+  0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x06, 0x06, 0x06, 0x05, 0x05, 0x05,
+  0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+  0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x01, 0x02, 0x02,
+  0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x05, 0x05, 0x05, 0x04, 0x04, 0x04,
+  0x04, 0x04, 0x04, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x07, 0x07, 0x07,
+  0x07, 0x07, 0x07, 0x08, 0x08, 0x08, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
+  0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02,
+  0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01,
+  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x01, 0x01, 0x01, 0x01, 0x01,
+  0x01, 0x01, 0x00, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
+  0x06, 0x06, 0x06, 0x07, 0x07, 0x07, 0x08, 0x08, 0x08, 0x09, 0x09, 0x09,
+  0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a,
+  0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x08, 0x08, 0x08,
+  0x07, 0x07, 0x07, 0x04, 0x04, 0x04, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
+  0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+  0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x04, 0x04, 0x04,
+  0x04, 0x04, 0x04, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x07, 0x07, 0x07,
+  0x08, 0x07, 0x07, 0x07, 0x07, 0x07, 0x08, 0x08, 0x08, 0x07, 0x07, 0x07,
+  0x07, 0x08, 0x07, 0x07, 0x06, 0x06, 0x06, 0x05, 0x05, 0x05, 0x04, 0x04,
+  0x03, 0x03, 0x03, 0x02, 0x03, 0x03, 0x02, 0x02, 0x02, 0x00, 0x01, 0x01,
+  0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00,
+  0x01, 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, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 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, 0x01, 0x01, 0x03, 0x03, 0x02, 0x03, 0x04, 0x03,
+  0x04, 0x04, 0x03, 0x07, 0x07, 0x06, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
+  0x09, 0x09, 0x09, 0x0a, 0x0a, 0x0a, 0x09, 0x09, 0x09, 0x0a, 0x09, 0x0a,
+  0x09, 0x09, 0x09, 0x0a, 0x09, 0x09, 0x0a, 0x0a, 0x0a, 0x09, 0x09, 0x09,
+  0x08, 0x08, 0x08, 0x07, 0x07, 0x07, 0x06, 0x06, 0x06, 0x05, 0x05, 0x05,
+  0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00,
+  0x01, 0x01, 0x01, 0x02, 0x03, 0x03, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03,
+  0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
+  0x08, 0x08, 0x08, 0x08, 0x07, 0x07, 0x07, 0x08, 0x08, 0x08, 0x08, 0x09,
+  0x07, 0x07, 0x07, 0x07, 0x08, 0x07, 0x07, 0x06, 0x06, 0x06, 0x05, 0x05,
+  0x06, 0x05, 0x05, 0x03, 0x03, 0x03, 0x02, 0x03, 0x03, 0x03, 0x02, 0x03,
+  0x01, 0x01, 0x02, 0x02, 0x01, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
+  0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
+  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, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 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, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+  0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x02, 0x02, 0x01, 0x03, 0x03, 0x02,
+  0x03, 0x04, 0x04, 0x04, 0x04, 0x04, 0x07, 0x07, 0x07, 0x08, 0x08, 0x08,
+  0x09, 0x09, 0x09, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x09, 0x09, 0x09,
+  0x0a, 0x09, 0x0a, 0x09, 0x0a, 0x0a, 0x0a, 0x09, 0x09, 0x0a, 0x0a, 0x0a,
+  0x0a, 0x0a, 0x0a, 0x09, 0x09, 0x09, 0x08, 0x08, 0x08, 0x07, 0x07, 0x07,
+  0x06, 0x06, 0x06, 0x04, 0x04, 0x04, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+  0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x02, 0x01, 0x01,
+  0x02, 0x01, 0x01, 0x03, 0x02, 0x02, 0x04, 0x03, 0x03, 0x03, 0x02, 0x02,
+  0x04, 0x04, 0x04, 0x06, 0x06, 0x06, 0x07, 0x07, 0x07, 0x06, 0x06, 0x06,
+  0x08, 0x09, 0x09, 0x07, 0x08, 0x08, 0x07, 0x08, 0x08, 0x08, 0x09, 0x09,
+  0x08, 0x07, 0x08, 0x09, 0x07, 0x09, 0x08, 0x08, 0x09, 0x05, 0x07, 0x07,
+  0x05, 0x06, 0x06, 0x07, 0x06, 0x07, 0x04, 0x04, 0x06, 0x04, 0x03, 0x03,
+  0x06, 0x04, 0x05, 0x05, 0x03, 0x02, 0x05, 0x04, 0x01, 0x02, 0x02, 0x00,
+  0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x01, 0x01, 0x03, 0x01, 0x00, 0x02,
+  0x04, 0x01, 0x00, 0x04, 0x01, 0x00, 0x03, 0x02, 0x00, 0x01, 0x01, 0x00,
+  0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00,
+  0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00,
+  0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
+  0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
+  0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
+  0x00, 0x02, 0x01, 0x01, 0x01, 0x01, 0x03, 0x00, 0x01, 0x03, 0x00, 0x03,
+  0x02, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00,
+  0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x01, 0x03, 0x00,
+  0x00, 0x00, 0x02, 0x01, 0x00, 0x02, 0x00, 0x00, 0x01, 0x02, 0x02, 0x01,
+  0x01, 0x00, 0x03, 0x02, 0x00, 0x03, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01,
+  0x01, 0x00, 0x01, 0x01, 0x01, 0x02, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02,
+  0x03, 0x03, 0x04, 0x05, 0x05, 0x06, 0x05, 0x05, 0x06, 0x06, 0x07, 0x08,
+  0x06, 0x07, 0x08, 0x09, 0x09, 0x0a, 0x0a, 0x0a, 0x0b, 0x09, 0x0a, 0x0a,
+  0x0a, 0x0b, 0x0b, 0x09, 0x0a, 0x0a, 0x0a, 0x0b, 0x0b, 0x09, 0x0a, 0x0a,
+  0x0a, 0x0a, 0x0a, 0x0b, 0x0b, 0x0b, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
+  0x08, 0x08, 0x08, 0x06, 0x06, 0x06, 0x05, 0x05, 0x05, 0x02, 0x02, 0x02,
+  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x02, 0x00, 0x01,
+  0x03, 0x02, 0x02, 0x03, 0x01, 0x01, 0x05, 0x02, 0x02, 0x05, 0x02, 0x02,
+  0x04, 0x03, 0x03, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x07, 0x07, 0x07,
+  0x05, 0x05, 0x05, 0x0a, 0x0a, 0x0a, 0x06, 0x08, 0x08, 0x07, 0x08, 0x08,
+  0x0a, 0x0a, 0x0b, 0x07, 0x07, 0x08, 0x09, 0x08, 0x0a, 0x09, 0x08, 0x0a,
+  0x05, 0x08, 0x07, 0x03, 0x07, 0x07, 0x07, 0x08, 0x09, 0x05, 0x05, 0x07,
+  0x05, 0x03, 0x04, 0x09, 0x06, 0x07, 0x08, 0x05, 0x02, 0x07, 0x05, 0x01,
+  0x03, 0x04, 0x00, 0x01, 0x02, 0x02, 0x00, 0x01, 0x03, 0x00, 0x01, 0x04,
+  0x02, 0x01, 0x03, 0x06, 0x01, 0x00, 0x07, 0x02, 0x00, 0x04, 0x03, 0x00,
+  0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x01, 0x01, 0x00,
+  0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00,
+  0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00,
+  0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01,
+  0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01,
+  0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00,
+  0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01,
+  0x00, 0x01, 0x01, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x05, 0x00, 0x02,
+  0x05, 0x00, 0x04, 0x03, 0x00, 0x04, 0x01, 0x01, 0x01, 0x00, 0x05, 0x00,
+  0x00, 0x05, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x05, 0x00,
+  0x02, 0x05, 0x00, 0x01, 0x01, 0x03, 0x01, 0x00, 0x05, 0x01, 0x01, 0x01,
+  0x02, 0x03, 0x02, 0x02, 0x01, 0x05, 0x02, 0x00, 0x05, 0x01, 0x00, 0x02,
+  0x02, 0x00, 0x01, 0x01, 0x01, 0x02, 0x02, 0x01, 0x03, 0x02, 0x01, 0x03,
+  0x02, 0x01, 0x03, 0x03, 0x02, 0x05, 0x06, 0x05, 0x07, 0x06, 0x06, 0x07,
+  0x06, 0x08, 0x08, 0x05, 0x07, 0x08, 0x09, 0x0a, 0x0a, 0x0a, 0x0b, 0x0c,
+  0x09, 0x0a, 0x0a, 0x0b, 0x0c, 0x0c, 0x09, 0x0a, 0x0a, 0x0b, 0x0d, 0x0c,
+  0x0a, 0x0b, 0x0a, 0x0a, 0x0a, 0x0a, 0x0b, 0x0b, 0x0b, 0x09, 0x09, 0x09,
+  0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+  0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00,
+  0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01,
+  0x03, 0x00, 0x02, 0x04, 0x02, 0x02, 0x04, 0x02, 0x02, 0x06, 0x03, 0x03,
+  0x06, 0x02, 0x02, 0x04, 0x03, 0x03, 0x05, 0x05, 0x05, 0x06, 0x06, 0x06,
+  0x08, 0x08, 0x08, 0x04, 0x05, 0x05, 0x0a, 0x0c, 0x0c, 0x06, 0x09, 0x09,
+  0x07, 0x09, 0x09, 0x0a, 0x0c, 0x0c, 0x07, 0x06, 0x08, 0x0a, 0x07, 0x0b,
+  0x0a, 0x08, 0x0b, 0x04, 0x09, 0x08, 0x03, 0x09, 0x08, 0x08, 0x0a, 0x0b,
+  0x06, 0x07, 0x09, 0x06, 0x03, 0x04, 0x0b, 0x08, 0x08, 0x0b, 0x07, 0x02,
+  0x0a, 0x07, 0x00, 0x04, 0x06, 0x00, 0x01, 0x03, 0x02, 0x00, 0x02, 0x04,
+  0x00, 0x02, 0x07, 0x04, 0x01, 0x04, 0x09, 0x02, 0x01, 0x09, 0x03, 0x00,
+  0x06, 0x05, 0x00, 0x03, 0x03, 0x00, 0x03, 0x03, 0x00, 0x03, 0x03, 0x00,
+  0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00,
+  0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00,
+  0x02, 0x02, 0x00, 0x01, 0x02, 0x00, 0x01, 0x02, 0x00, 0x01, 0x02, 0x00,
+  0x00, 0x02, 0x01, 0x00, 0x02, 0x01, 0x00, 0x02, 0x01, 0x00, 0x02, 0x01,
+  0x00, 0x02, 0x01, 0x00, 0x02, 0x01, 0x00, 0x02, 0x01, 0x00, 0x02, 0x01,
+  0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x01, 0x00, 0x02, 0x01,
+  0x00, 0x02, 0x01, 0x00, 0x02, 0x01, 0x01, 0x03, 0x02, 0x03, 0x02, 0x03,
+  0x07, 0x01, 0x03, 0x07, 0x01, 0x06, 0x04, 0x01, 0x05, 0x02, 0x02, 0x02,
+  0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0x00, 0x00, 0x07, 0x00,
+  0x01, 0x08, 0x00, 0x04, 0x07, 0x01, 0x02, 0x02, 0x04, 0x02, 0x01, 0x06,
+  0x01, 0x02, 0x02, 0x03, 0x05, 0x03, 0x03, 0x01, 0x07, 0x03, 0x01, 0x08,
+  0x02, 0x00, 0x04, 0x03, 0x00, 0x02, 0x02, 0x01, 0x03, 0x03, 0x02, 0x04,
+  0x03, 0x02, 0x04, 0x02, 0x01, 0x04, 0x03, 0x02, 0x06, 0x07, 0x06, 0x09,
+  0x08, 0x07, 0x0a, 0x06, 0x08, 0x0a, 0x04, 0x07, 0x08, 0x09, 0x0a, 0x0b,
+  0x0a, 0x0b, 0x0d, 0x08, 0x0b, 0x0b, 0x0c, 0x0e, 0x0e, 0x09, 0x0b, 0x0b,
+  0x0d, 0x0f, 0x0e, 0x0a, 0x0c, 0x0c, 0x0a, 0x0a, 0x0a, 0x0b, 0x0b, 0x0b,
+  0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x05, 0x05, 0x05,
+  0x08, 0x08, 0x08, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02,
+  0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x01, 0x00, 0x01, 0x02, 0x00, 0x02, 0x03, 0x02, 0x02, 0x03, 0x02, 0x02,
+  0x05, 0x03, 0x03, 0x05, 0x03, 0x03, 0x04, 0x04, 0x04, 0x06, 0x06, 0x06,
+  0x07, 0x07, 0x07, 0x08, 0x08, 0x09, 0x07, 0x07, 0x07, 0x0a, 0x0b, 0x0a,
+  0x08, 0x0a, 0x09, 0x0a, 0x0c, 0x0b, 0x0b, 0x0c, 0x0c, 0x0a, 0x0a, 0x0b,
+  0x0c, 0x0b, 0x0c, 0x0b, 0x0b, 0x0c, 0x06, 0x0e, 0x0a, 0x03, 0x0c, 0x09,
+  0x06, 0x0c, 0x0a, 0x05, 0x0a, 0x09, 0x06, 0x07, 0x06, 0x0a, 0x0a, 0x07,
+  0x0a, 0x09, 0x01, 0x08, 0x0a, 0x00, 0x03, 0x08, 0x00, 0x01, 0x06, 0x02,
+  0x00, 0x05, 0x04, 0x00, 0x04, 0x07, 0x02, 0x04, 0x05, 0x06, 0x05, 0x01,
+  0x07, 0x06, 0x00, 0x04, 0x07, 0x00, 0x02, 0x06, 0x00, 0x02, 0x06, 0x00,
+  0x02, 0x06, 0x00, 0x01, 0x05, 0x00, 0x01, 0x05, 0x00, 0x01, 0x05, 0x00,
+  0x01, 0x05, 0x00, 0x01, 0x05, 0x00, 0x01, 0x05, 0x00, 0x01, 0x05, 0x00,
+  0x01, 0x05, 0x00, 0x01, 0x05, 0x00, 0x01, 0x05, 0x00, 0x01, 0x05, 0x00,
+  0x01, 0x05, 0x00, 0x00, 0x05, 0x01, 0x00, 0x05, 0x01, 0x00, 0x05, 0x01,
+  0x00, 0x05, 0x01, 0x00, 0x05, 0x01, 0x00, 0x05, 0x01, 0x00, 0x05, 0x01,
+  0x00, 0x05, 0x01, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x01,
+  0x00, 0x05, 0x01, 0x00, 0x05, 0x01, 0x00, 0x05, 0x01, 0x01, 0x06, 0x01,
+  0x02, 0x05, 0x02, 0x05, 0x04, 0x02, 0x05, 0x03, 0x05, 0x03, 0x03, 0x04,
+  0x02, 0x04, 0x01, 0x01, 0x09, 0x00, 0x01, 0x09, 0x00, 0x01, 0x08, 0x00,
+  0x00, 0x08, 0x00, 0x01, 0x09, 0x00, 0x04, 0x09, 0x00, 0x03, 0x04, 0x03,
+  0x02, 0x03, 0x05, 0x01, 0x05, 0x01, 0x02, 0x08, 0x02, 0x02, 0x04, 0x05,
+  0x02, 0x04, 0x05, 0x01, 0x01, 0x03, 0x02, 0x00, 0x02, 0x02, 0x01, 0x03,
+  0x03, 0x02, 0x03, 0x03, 0x02, 0x04, 0x03, 0x02, 0x05, 0x04, 0x03, 0x06,
+  0x07, 0x06, 0x09, 0x08, 0x07, 0x0a, 0x07, 0x08, 0x0a, 0x07, 0x08, 0x0a,
+  0x0a, 0x0a, 0x0a, 0x0b, 0x0c, 0x0c, 0x0b, 0x0d, 0x0c, 0x0f, 0x10, 0x0f,
+  0x09, 0x0c, 0x0b, 0x0d, 0x0f, 0x0e, 0x0c, 0x0d, 0x0d, 0x0c, 0x0c, 0x0c,
+  0x0c, 0x0c, 0x0c, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a,
+  0x06, 0x06, 0x06, 0x08, 0x08, 0x08, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
+  0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x02, 0x02, 0x02, 0x02,
+  0x02, 0x01, 0x01, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x05, 0x05, 0x05,
+  0x06, 0x06, 0x06, 0x08, 0x08, 0x08, 0x09, 0x09, 0x09, 0x0a, 0x0a, 0x09,
+  0x09, 0x0a, 0x09, 0x0b, 0x0c, 0x0b, 0x0d, 0x0d, 0x0d, 0x0b, 0x0b, 0x0c,
+  0x0f, 0x10, 0x0f, 0x0d, 0x0e, 0x0e, 0x0b, 0x0e, 0x0c, 0x09, 0x13, 0x0b,
+  0x05, 0x10, 0x09, 0x04, 0x0f, 0x09, 0x05, 0x0e, 0x09, 0x06, 0x0b, 0x08,
+  0x06, 0x0c, 0x04, 0x08, 0x0b, 0x01, 0x05, 0x0c, 0x00, 0x01, 0x0b, 0x00,
+  0x00, 0x0a, 0x02, 0x00, 0x09, 0x04, 0x00, 0x08, 0x07, 0x01, 0x07, 0x05,
+  0x03, 0x08, 0x01, 0x04, 0x08, 0x00, 0x02, 0x09, 0x00, 0x01, 0x08, 0x00,
+  0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00,
+  0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00,
+  0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x00, 0x09, 0x00,
+  0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00,
+  0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00,
+  0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00,
+  0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00,
+  0x00, 0x09, 0x01, 0x01, 0x08, 0x01, 0x03, 0x08, 0x02, 0x03, 0x07, 0x03,
+  0x03, 0x07, 0x03, 0x02, 0x08, 0x02, 0x02, 0x0a, 0x00, 0x02, 0x0a, 0x00,
+  0x02, 0x09, 0x01, 0x01, 0x09, 0x01, 0x01, 0x0a, 0x00, 0x04, 0x0a, 0x00,
+  0x05, 0x06, 0x03, 0x03, 0x07, 0x03, 0x01, 0x09, 0x01, 0x01, 0x0b, 0x01,
+  0x01, 0x07, 0x02, 0x01, 0x07, 0x03, 0x01, 0x02, 0x01, 0x01, 0x01, 0x01,
+  0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x04, 0x04, 0x03, 0x06,
+  0x05, 0x04, 0x07, 0x08, 0x07, 0x0a, 0x09, 0x08, 0x0a, 0x09, 0x09, 0x0a,
+  0x0b, 0x0b, 0x0d, 0x0a, 0x0a, 0x0b, 0x0b, 0x0b, 0x0c, 0x0f, 0x10, 0x0f,
+  0x11, 0x12, 0x11, 0x0a, 0x0c, 0x0a, 0x0e, 0x10, 0x0e, 0x0d, 0x0e, 0x0e,
+  0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0b, 0x0b, 0x0b, 0x09, 0x09, 0x09,
+  0x09, 0x09, 0x09, 0x06, 0x06, 0x06, 0x07, 0x07, 0x07, 0x04, 0x04, 0x04,
+  0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02,
+  0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x04, 0x04,
+  0x06, 0x06, 0x06, 0x07, 0x07, 0x07, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
+  0x0c, 0x0c, 0x0a, 0x09, 0x09, 0x07, 0x0d, 0x0e, 0x0c, 0x0d, 0x0e, 0x0d,
+  0x09, 0x09, 0x0a, 0x0f, 0x10, 0x0e, 0x0f, 0x0f, 0x0f, 0x0c, 0x0d, 0x0b,
+  0x0c, 0x15, 0x0c, 0x07, 0x11, 0x09, 0x03, 0x0e, 0x08, 0x06, 0x0f, 0x08,
+  0x08, 0x0d, 0x09, 0x05, 0x0b, 0x03, 0x07, 0x0b, 0x00, 0x04, 0x0b, 0x01,
+  0x01, 0x0b, 0x01, 0x00, 0x0a, 0x02, 0x00, 0x0a, 0x04, 0x00, 0x09, 0x07,
+  0x00, 0x08, 0x06, 0x01, 0x08, 0x03, 0x03, 0x09, 0x02, 0x02, 0x08, 0x00,
+  0x02, 0x08, 0x01, 0x02, 0x08, 0x01, 0x02, 0x08, 0x01, 0x02, 0x08, 0x01,
+  0x02, 0x08, 0x01, 0x02, 0x08, 0x01, 0x02, 0x08, 0x01, 0x01, 0x08, 0x00,
+  0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00,
+  0x02, 0x09, 0x01, 0x02, 0x09, 0x01, 0x02, 0x09, 0x01, 0x02, 0x08, 0x01,
+  0x02, 0x08, 0x01, 0x02, 0x08, 0x01, 0x02, 0x08, 0x01, 0x02, 0x08, 0x01,
+  0x02, 0x08, 0x01, 0x02, 0x08, 0x01, 0x02, 0x08, 0x01, 0x02, 0x09, 0x01,
+  0x02, 0x09, 0x01, 0x02, 0x08, 0x01, 0x01, 0x08, 0x01, 0x01, 0x08, 0x01,
+  0x01, 0x08, 0x01, 0x01, 0x08, 0x01, 0x00, 0x08, 0x00, 0x01, 0x09, 0x01,
+  0x01, 0x08, 0x02, 0x02, 0x08, 0x02, 0x02, 0x07, 0x02, 0x02, 0x09, 0x01,
+  0x02, 0x08, 0x02, 0x02, 0x08, 0x03, 0x02, 0x08, 0x03, 0x01, 0x08, 0x01,
+  0x03, 0x08, 0x00, 0x04, 0x07, 0x02, 0x02, 0x07, 0x01, 0x00, 0x09, 0x00,
+  0x00, 0x0a, 0x00, 0x00, 0x07, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00,
+  0x00, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03,
+  0x03, 0x02, 0x05, 0x05, 0x03, 0x05, 0x07, 0x05, 0x07, 0x08, 0x07, 0x08,
+  0x08, 0x07, 0x08, 0x0d, 0x0b, 0x0c, 0x0a, 0x09, 0x09, 0x0c, 0x0b, 0x0b,
+  0x11, 0x11, 0x0f, 0x12, 0x13, 0x11, 0x0c, 0x0d, 0x0a, 0x0e, 0x0f, 0x0d,
+  0x10, 0x10, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0c, 0x0c, 0x0c,
+  0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x08, 0x08, 0x08, 0x07, 0x07, 0x07,
+  0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+  0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x02, 0x02,
+  0x04, 0x03, 0x03, 0x06, 0x06, 0x06, 0x08, 0x08, 0x08, 0x0a, 0x0a, 0x0a,
+  0x08, 0x08, 0x09, 0x0b, 0x0c, 0x0b, 0x08, 0x09, 0x07, 0x0e, 0x0f, 0x0d,
+  0x0d, 0x0e, 0x0d, 0x07, 0x07, 0x06, 0x0b, 0x09, 0x09, 0x10, 0x0c, 0x0e,
+  0x0c, 0x09, 0x09, 0x0e, 0x11, 0x0b, 0x09, 0x0e, 0x09, 0x05, 0x0c, 0x07,
+  0x07, 0x0d, 0x09, 0x0a, 0x0c, 0x0a, 0x07, 0x08, 0x05, 0x08, 0x09, 0x01,
+  0x06, 0x09, 0x01, 0x02, 0x08, 0x02, 0x00, 0x07, 0x04, 0x00, 0x07, 0x06,
+  0x00, 0x06, 0x08, 0x00, 0x06, 0x07, 0x03, 0x06, 0x05, 0x04, 0x06, 0x04,
+  0x03, 0x04, 0x02, 0x04, 0x04, 0x03, 0x04, 0x04, 0x03, 0x04, 0x04, 0x03,
+  0x04, 0x04, 0x03, 0x04, 0x04, 0x03, 0x05, 0x06, 0x03, 0x05, 0x06, 0x03,
+  0x03, 0x04, 0x01, 0x03, 0x04, 0x01, 0x03, 0x04, 0x01, 0x03, 0x04, 0x01,
+  0x03, 0x04, 0x01, 0x04, 0x05, 0x03, 0x04, 0x05, 0x03, 0x04, 0x05, 0x02,
+  0x04, 0x04, 0x03, 0x04, 0x04, 0x03, 0x04, 0x04, 0x03, 0x04, 0x04, 0x03,
+  0x04, 0x04, 0x03, 0x04, 0x04, 0x03, 0x04, 0x04, 0x03, 0x04, 0x04, 0x03,
+  0x04, 0x05, 0x03, 0x04, 0x05, 0x03, 0x04, 0x04, 0x03, 0x03, 0x04, 0x02,
+  0x03, 0x04, 0x03, 0x03, 0x04, 0x03, 0x03, 0x04, 0x03, 0x00, 0x05, 0x01,
+  0x00, 0x07, 0x00, 0x00, 0x07, 0x01, 0x01, 0x06, 0x03, 0x01, 0x05, 0x04,
+  0x01, 0x06, 0x01, 0x01, 0x05, 0x04, 0x01, 0x04, 0x05, 0x02, 0x04, 0x05,
+  0x01, 0x05, 0x03, 0x02, 0x05, 0x01, 0x03, 0x04, 0x01, 0x01, 0x04, 0x00,
+  0x00, 0x06, 0x00, 0x00, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x04, 0x00,
+  0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+  0x01, 0x01, 0x02, 0x02, 0x01, 0x03, 0x02, 0x02, 0x03, 0x05, 0x03, 0x03,
+  0x07, 0x05, 0x05, 0x07, 0x05, 0x06, 0x0b, 0x09, 0x0a, 0x09, 0x08, 0x08,
+  0x0b, 0x0a, 0x0a, 0x0f, 0x0e, 0x0d, 0x10, 0x0f, 0x0d, 0x0c, 0x0b, 0x09,
+  0x0e, 0x0d, 0x0c, 0x11, 0x10, 0x10, 0x0e, 0x0e, 0x0e, 0x0f, 0x0f, 0x0f,
+  0x0d, 0x0d, 0x0d, 0x09, 0x09, 0x09, 0x0a, 0x0a, 0x0a, 0x09, 0x09, 0x09,
+  0x07, 0x07, 0x07, 0x05, 0x05, 0x05, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02,
+  0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03,
+  0x03, 0x02, 0x02, 0x04, 0x03, 0x03, 0x06, 0x06, 0x06, 0x08, 0x08, 0x08,
+  0x0a, 0x0a, 0x0a, 0x08, 0x08, 0x08, 0x0b, 0x0c, 0x0b, 0x09, 0x0a, 0x08,
+  0x0e, 0x0f, 0x0d, 0x0e, 0x0e, 0x0d, 0x0a, 0x09, 0x08, 0x0d, 0x09, 0x0a,
+  0x14, 0x0d, 0x10, 0x0e, 0x09, 0x0a, 0x10, 0x11, 0x0c, 0x0b, 0x10, 0x09,
+  0x08, 0x0d, 0x08, 0x0a, 0x0e, 0x0a, 0x0c, 0x0f, 0x0c, 0x09, 0x0a, 0x07,
+  0x0a, 0x0b, 0x03, 0x08, 0x0b, 0x03, 0x04, 0x0b, 0x03, 0x02, 0x0a, 0x07,
+  0x01, 0x0a, 0x08, 0x01, 0x08, 0x09, 0x02, 0x08, 0x09, 0x05, 0x08, 0x07,
+  0x06, 0x08, 0x06, 0x06, 0x06, 0x03, 0x07, 0x06, 0x05, 0x07, 0x06, 0x05,
+  0x07, 0x06, 0x05, 0x07, 0x06, 0x05, 0x07, 0x06, 0x05, 0x08, 0x08, 0x06,
+  0x08, 0x08, 0x06, 0x06, 0x06, 0x03, 0x06, 0x06, 0x03, 0x06, 0x06, 0x03,
+  0x06, 0x06, 0x03, 0x06, 0x06, 0x03, 0x07, 0x06, 0x05, 0x07, 0x06, 0x05,
+  0x07, 0x06, 0x04, 0x07, 0x06, 0x06, 0x07, 0x06, 0x06, 0x07, 0x06, 0x06,
+  0x07, 0x06, 0x06, 0x07, 0x06, 0x06, 0x07, 0x06, 0x06, 0x07, 0x06, 0x06,
+  0x07, 0x06, 0x06, 0x07, 0x06, 0x06, 0x07, 0x06, 0x06, 0x07, 0x06, 0x06,
+  0x06, 0x06, 0x04, 0x06, 0x06, 0x05, 0x06, 0x06, 0x05, 0x05, 0x06, 0x05,
+  0x03, 0x07, 0x03, 0x02, 0x0a, 0x02, 0x02, 0x0a, 0x02, 0x02, 0x09, 0x04,
+  0x02, 0x07, 0x06, 0x02, 0x08, 0x04, 0x02, 0x07, 0x07, 0x02, 0x05, 0x09,
+  0x04, 0x05, 0x08, 0x02, 0x06, 0x05, 0x02, 0x05, 0x02, 0x02, 0x05, 0x02,
+  0x02, 0x04, 0x01, 0x03, 0x05, 0x02, 0x03, 0x04, 0x02, 0x03, 0x03, 0x02,
+  0x03, 0x03, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+  0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x02, 0x03, 0x03, 0x03, 0x03,
+  0x06, 0x03, 0x03, 0x07, 0x05, 0x05, 0x08, 0x06, 0x06, 0x0c, 0x0a, 0x0a,
+  0x0b, 0x09, 0x09, 0x0e, 0x0c, 0x0b, 0x0f, 0x0e, 0x0c, 0x11, 0x10, 0x0d,
+  0x11, 0x10, 0x0d, 0x11, 0x0f, 0x0e, 0x12, 0x13, 0x11, 0x0f, 0x0f, 0x0f,
+  0x10, 0x10, 0x10, 0x0e, 0x0e, 0x0e, 0x0a, 0x0a, 0x0a, 0x0b, 0x0b, 0x0b,
+  0x0a, 0x0a, 0x0a, 0x07, 0x07, 0x07, 0x06, 0x06, 0x06, 0x03, 0x03, 0x03,
+  0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x02, 0x02,
+  0x02, 0x03, 0x03, 0x02, 0x03, 0x03, 0x03, 0x04, 0x04, 0x07, 0x07, 0x07,
+  0x08, 0x08, 0x08, 0x0a, 0x0a, 0x0a, 0x09, 0x08, 0x09, 0x0e, 0x0d, 0x0c,
+  0x0c, 0x0c, 0x0a, 0x0f, 0x0f, 0x0d, 0x14, 0x13, 0x12, 0x21, 0x20, 0x1e,
+  0x24, 0x23, 0x22, 0x20, 0x20, 0x1c, 0x16, 0x1a, 0x12, 0x17, 0x25, 0x14,
+  0x11, 0x24, 0x10, 0x0d, 0x22, 0x0e, 0x0e, 0x22, 0x0f, 0x10, 0x22, 0x11,
+  0x0e, 0x1e, 0x0c, 0x0f, 0x1e, 0x09, 0x0d, 0x1f, 0x09, 0x09, 0x1f, 0x09,
+  0x07, 0x1e, 0x0b, 0x06, 0x1e, 0x0c, 0x05, 0x1c, 0x0d, 0x06, 0x1c, 0x0d,
+  0x09, 0x1b, 0x0c, 0x0a, 0x1c, 0x0c, 0x0b, 0x1b, 0x0a, 0x0c, 0x1b, 0x0b,
+  0x0c, 0x1b, 0x0c, 0x0c, 0x1b, 0x0b, 0x0c, 0x1b, 0x0b, 0x0c, 0x1b, 0x0c,
+  0x0d, 0x1d, 0x0c, 0x0d, 0x1d, 0x0c, 0x0c, 0x1c, 0x0a, 0x0b, 0x1c, 0x0a,
+  0x0b, 0x1c, 0x0a, 0x0b, 0x1c, 0x0a, 0x0c, 0x1d, 0x0b, 0x0c, 0x1c, 0x0d,
+  0x0c, 0x1c, 0x0d, 0x0d, 0x1d, 0x0c, 0x0e, 0x1c, 0x0d, 0x0d, 0x1c, 0x0d,
+  0x0e, 0x1d, 0x0e, 0x0e, 0x1d, 0x0e, 0x0e, 0x1d, 0x0e, 0x0e, 0x1d, 0x0e,
+  0x0e, 0x1d, 0x0e, 0x0e, 0x1d, 0x0e, 0x0e, 0x1d, 0x0e, 0x0d, 0x1c, 0x0d,
+  0x0e, 0x1c, 0x0d, 0x0d, 0x1c, 0x0c, 0x0d, 0x1c, 0x0d, 0x0d, 0x1c, 0x0d,
+  0x0c, 0x1c, 0x0d, 0x0a, 0x1d, 0x0a, 0x0a, 0x1f, 0x09, 0x0b, 0x1f, 0x09,
+  0x0b, 0x1e, 0x0c, 0x0b, 0x1c, 0x0d, 0x0b, 0x1d, 0x0a, 0x0c, 0x1b, 0x0d,
+  0x0c, 0x19, 0x0f, 0x0d, 0x19, 0x0f, 0x0c, 0x1b, 0x0d, 0x0b, 0x19, 0x09,
+  0x0b, 0x18, 0x0a, 0x0a, 0x13, 0x08, 0x0f, 0x11, 0x0b, 0x12, 0x0f, 0x0d,
+  0x12, 0x0e, 0x0c, 0x11, 0x0f, 0x0d, 0x0e, 0x0d, 0x0c, 0x0d, 0x0e, 0x0c,
+  0x0d, 0x0e, 0x0d, 0x0d, 0x0e, 0x0d, 0x0d, 0x0e, 0x0d, 0x0e, 0x0d, 0x0c,
+  0x0e, 0x0e, 0x0d, 0x10, 0x0e, 0x0e, 0x12, 0x10, 0x10, 0x13, 0x11, 0x10,
+  0x15, 0x13, 0x13, 0x17, 0x14, 0x14, 0x1a, 0x18, 0x17, 0x19, 0x18, 0x15,
+  0x1f, 0x1e, 0x1a, 0x28, 0x26, 0x22, 0x25, 0x23, 0x21, 0x18, 0x18, 0x17,
+  0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x0f, 0x0f, 0x0f, 0x0b, 0x0b, 0x0b,
+  0x0c, 0x0c, 0x0c, 0x0b, 0x0b, 0x0b, 0x08, 0x08, 0x08, 0x06, 0x06, 0x06,
+  0x04, 0x04, 0x04, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x01, 0x02, 0x02, 0x01, 0x03, 0x03, 0x02, 0x04, 0x04, 0x03, 0x05, 0x05,
+  0x07, 0x08, 0x08, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x0a, 0x09, 0x09,
+  0x0f, 0x0e, 0x0e, 0x0f, 0x0e, 0x0d, 0x0f, 0x0e, 0x0b, 0x1b, 0x1b, 0x18,
+  0x3c, 0x3b, 0x38, 0x41, 0x44, 0x3d, 0x2f, 0x38, 0x2a, 0x20, 0x31, 0x1c,
+  0x1f, 0x3d, 0x1c, 0x18, 0x3c, 0x17, 0x13, 0x3c, 0x15, 0x12, 0x3a, 0x15,
+  0x15, 0x3a, 0x17, 0x13, 0x36, 0x13, 0x13, 0x37, 0x11, 0x12, 0x38, 0x10,
+  0x0f, 0x38, 0x10, 0x0d, 0x37, 0x12, 0x0d, 0x36, 0x12, 0x0b, 0x35, 0x13,
+  0x0b, 0x35, 0x13, 0x0d, 0x34, 0x12, 0x0e, 0x36, 0x11, 0x11, 0x35, 0x12,
+  0x11, 0x35, 0x12, 0x11, 0x36, 0x13, 0x11, 0x36, 0x12, 0x11, 0x36, 0x12,
+  0x12, 0x36, 0x14, 0x12, 0x36, 0x13, 0x12, 0x36, 0x13, 0x13, 0x38, 0x14,
+  0x12, 0x37, 0x14, 0x12, 0x37, 0x14, 0x12, 0x37, 0x14, 0x13, 0x39, 0x15,
+  0x13, 0x38, 0x15, 0x13, 0x38, 0x15, 0x14, 0x39, 0x15, 0x15, 0x38, 0x15,
+  0x14, 0x38, 0x15, 0x16, 0x39, 0x16, 0x16, 0x39, 0x16, 0x16, 0x39, 0x16,
+  0x16, 0x39, 0x16, 0x16, 0x39, 0x16, 0x16, 0x39, 0x16, 0x16, 0x39, 0x16,
+  0x14, 0x38, 0x15, 0x15, 0x38, 0x15, 0x15, 0x38, 0x15, 0x15, 0x38, 0x15,
+  0x15, 0x38, 0x15, 0x13, 0x37, 0x15, 0x13, 0x38, 0x14, 0x14, 0x3a, 0x12,
+  0x16, 0x39, 0x12, 0x16, 0x38, 0x14, 0x17, 0x36, 0x15, 0x17, 0x36, 0x13,
+  0x17, 0x34, 0x14, 0x19, 0x32, 0x16, 0x1a, 0x33, 0x18, 0x18, 0x34, 0x15,
+  0x15, 0x31, 0x12, 0x16, 0x2f, 0x13, 0x14, 0x25, 0x11, 0x1e, 0x21, 0x16,
+  0x23, 0x1f, 0x19, 0x23, 0x1d, 0x19, 0x22, 0x1e, 0x19, 0x1b, 0x1b, 0x18,
+  0x1a, 0x1b, 0x19, 0x1a, 0x1b, 0x1a, 0x1a, 0x1b, 0x1a, 0x1b, 0x1b, 0x1a,
+  0x1c, 0x1a, 0x19, 0x1b, 0x1b, 0x1a, 0x1d, 0x1b, 0x1c, 0x1f, 0x1d, 0x1d,
+  0x21, 0x1f, 0x1e, 0x21, 0x1f, 0x1e, 0x25, 0x23, 0x22, 0x29, 0x27, 0x26,
+  0x25, 0x23, 0x21, 0x30, 0x2d, 0x2b, 0x42, 0x40, 0x3c, 0x3c, 0x3a, 0x37,
+  0x1f, 0x1f, 0x1e, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x0f, 0x0f, 0x0f,
+  0x0c, 0x0c, 0x0c, 0x0d, 0x0d, 0x0d, 0x0c, 0x0c, 0x0c, 0x09, 0x09, 0x09,
+  0x06, 0x06, 0x06, 0x05, 0x05, 0x05, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01,
+  0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x01, 0x01, 0x00, 0x02, 0x02, 0x00, 0x03, 0x03, 0x01, 0x04, 0x04,
+  0x03, 0x06, 0x06, 0x07, 0x08, 0x08, 0x09, 0x09, 0x09, 0x08, 0x08, 0x08,
+  0x0b, 0x0a, 0x0a, 0x10, 0x0f, 0x0f, 0x11, 0x10, 0x0f, 0x0f, 0x0f, 0x0c,
+  0x26, 0x25, 0x21, 0x56, 0x56, 0x51, 0x5b, 0x62, 0x57, 0x3c, 0x52, 0x39,
+  0x2f, 0x53, 0x2d, 0x2f, 0x65, 0x2d, 0x26, 0x65, 0x26, 0x20, 0x67, 0x24,
+  0x1e, 0x64, 0x23, 0x20, 0x63, 0x23, 0x20, 0x62, 0x22, 0x1f, 0x62, 0x1f,
+  0x1e, 0x63, 0x1e, 0x1b, 0x63, 0x1d, 0x1a, 0x63, 0x1e, 0x19, 0x62, 0x1e,
+  0x18, 0x60, 0x1f, 0x18, 0x60, 0x1f, 0x18, 0x60, 0x1e, 0x1a, 0x61, 0x1e,
+  0x1c, 0x62, 0x20, 0x1c, 0x61, 0x1f, 0x1c, 0x62, 0x20, 0x1c, 0x63, 0x20,
+  0x1c, 0x63, 0x20, 0x1d, 0x63, 0x21, 0x1d, 0x63, 0x21, 0x1d, 0x63, 0x21,
+  0x1f, 0x65, 0x23, 0x1f, 0x65, 0x23, 0x1f, 0x65, 0x23, 0x1f, 0x65, 0x23,
+  0x20, 0x66, 0x24, 0x20, 0x66, 0x24, 0x20, 0x66, 0x24, 0x21, 0x67, 0x24,
+  0x23, 0x66, 0x23, 0x22, 0x66, 0x23, 0x23, 0x68, 0x25, 0x23, 0x67, 0x25,
+  0x24, 0x68, 0x25, 0x24, 0x68, 0x25, 0x24, 0x68, 0x25, 0x24, 0x68, 0x25,
+  0x23, 0x68, 0x25, 0x22, 0x66, 0x23, 0x23, 0x66, 0x23, 0x23, 0x66, 0x24,
+  0x22, 0x66, 0x24, 0x22, 0x66, 0x24, 0x21, 0x65, 0x24, 0x22, 0x66, 0x23,
+  0x23, 0x67, 0x22, 0x25, 0x66, 0x22, 0x24, 0x65, 0x23, 0x24, 0x64, 0x22,
+  0x23, 0x65, 0x21, 0x24, 0x62, 0x22, 0x26, 0x60, 0x24, 0x26, 0x5f, 0x26,
+  0x24, 0x61, 0x23, 0x21, 0x5c, 0x21, 0x22, 0x57, 0x22, 0x1c, 0x3d, 0x1a,
+  0x27, 0x2d, 0x1f, 0x2f, 0x27, 0x25, 0x2f, 0x25, 0x25, 0x2d, 0x26, 0x25,
+  0x26, 0x24, 0x22, 0x25, 0x26, 0x22, 0x25, 0x26, 0x24, 0x24, 0x26, 0x24,
+  0x25, 0x26, 0x24, 0x26, 0x25, 0x23, 0x26, 0x26, 0x24, 0x28, 0x27, 0x27,
+  0x2a, 0x28, 0x28, 0x2c, 0x2b, 0x2a, 0x2b, 0x29, 0x28, 0x31, 0x2e, 0x2d,
+  0x37, 0x34, 0x33, 0x33, 0x31, 0x2e, 0x43, 0x3f, 0x3c, 0x5d, 0x5a, 0x56,
+  0x55, 0x53, 0x4f, 0x29, 0x29, 0x28, 0x15, 0x15, 0x15, 0x12, 0x12, 0x12,
+  0x11, 0x11, 0x11, 0x0e, 0x0e, 0x0e, 0x0d, 0x0d, 0x0d, 0x0c, 0x0c, 0x0c,
+  0x0a, 0x0a, 0x0a, 0x07, 0x07, 0x07, 0x06, 0x06, 0x06, 0x04, 0x04, 0x04,
+  0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x02, 0x02,
+  0x01, 0x03, 0x03, 0x04, 0x07, 0x07, 0x08, 0x09, 0x09, 0x0a, 0x0a, 0x0a,
+  0x0a, 0x0a, 0x0a, 0x0c, 0x0c, 0x0c, 0x10, 0x0e, 0x0e, 0x11, 0x10, 0x0f,
+  0x11, 0x11, 0x0d, 0x2f, 0x2e, 0x2a, 0x62, 0x62, 0x5c, 0x65, 0x70, 0x61,
+  0x42, 0x62, 0x41, 0x3d, 0x71, 0x3c, 0x3f, 0x87, 0x3d, 0x34, 0x89, 0x34,
+  0x2f, 0x8e, 0x32, 0x2c, 0x8b, 0x31, 0x2c, 0x89, 0x32, 0x2e, 0x8a, 0x32,
+  0x2d, 0x89, 0x2e, 0x2c, 0x8b, 0x2c, 0x29, 0x8c, 0x2a, 0x28, 0x8c, 0x2a,
+  0x26, 0x8c, 0x2a, 0x24, 0x8b, 0x2b, 0x26, 0x8a, 0x2c, 0x26, 0x8b, 0x2a,
+  0x28, 0x8a, 0x2b, 0x29, 0x8b, 0x2c, 0x29, 0x8a, 0x2c, 0x29, 0x8a, 0x2d,
+  0x29, 0x8c, 0x2d, 0x29, 0x8c, 0x2d, 0x29, 0x8c, 0x2e, 0x2a, 0x8c, 0x2e,
+  0x2a, 0x8c, 0x2e, 0x2c, 0x8e, 0x30, 0x2b, 0x8e, 0x2f, 0x2c, 0x8e, 0x31,
+  0x2c, 0x8e, 0x31, 0x2d, 0x8f, 0x30, 0x2d, 0x8f, 0x32, 0x2d, 0x8f, 0x32,
+  0x2e, 0x90, 0x32, 0x2f, 0x91, 0x31, 0x2f, 0x91, 0x31, 0x30, 0x91, 0x32,
+  0x30, 0x90, 0x31, 0x30, 0x92, 0x33, 0x30, 0x92, 0x33, 0x30, 0x92, 0x33,
+  0x30, 0x92, 0x33, 0x30, 0x91, 0x31, 0x2f, 0x91, 0x31, 0x2f, 0x91, 0x31,
+  0x2f, 0x91, 0x32, 0x2f, 0x8f, 0x32, 0x2f, 0x8f, 0x32, 0x2e, 0x8f, 0x32,
+  0x2e, 0x8f, 0x31, 0x2e, 0x90, 0x30, 0x2e, 0x90, 0x30, 0x2d, 0x8f, 0x2f,
+  0x2d, 0x8f, 0x2f, 0x29, 0x91, 0x2d, 0x2a, 0x8e, 0x2e, 0x2e, 0x8c, 0x31,
+  0x2e, 0x8a, 0x33, 0x2a, 0x8b, 0x2f, 0x28, 0x85, 0x2e, 0x29, 0x7a, 0x2f,
+  0x1e, 0x50, 0x21, 0x24, 0x31, 0x22, 0x2d, 0x26, 0x29, 0x30, 0x23, 0x2a,
+  0x2d, 0x23, 0x29, 0x29, 0x25, 0x26, 0x27, 0x28, 0x24, 0x27, 0x28, 0x26,
+  0x27, 0x28, 0x26, 0x28, 0x28, 0x26, 0x29, 0x27, 0x27, 0x2a, 0x28, 0x27,
+  0x2c, 0x2a, 0x2a, 0x2d, 0x2b, 0x2b, 0x30, 0x2e, 0x2e, 0x2f, 0x2d, 0x2c,
+  0x35, 0x32, 0x30, 0x3d, 0x39, 0x37, 0x3c, 0x39, 0x35, 0x4d, 0x4a, 0x46,
+  0x6b, 0x68, 0x63, 0x63, 0x60, 0x5c, 0x32, 0x32, 0x31, 0x19, 0x19, 0x19,
+  0x14, 0x14, 0x14, 0x13, 0x13, 0x13, 0x10, 0x10, 0x10, 0x0e, 0x0e, 0x0e,
+  0x0b, 0x0b, 0x0b, 0x09, 0x09, 0x09, 0x08, 0x08, 0x08, 0x06, 0x06, 0x06,
+  0x05, 0x05, 0x05, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+  0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x02, 0x02, 0x00, 0x01, 0x01,
+  0x00, 0x02, 0x02, 0x01, 0x03, 0x03, 0x04, 0x07, 0x07, 0x08, 0x09, 0x09,
+  0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0d, 0x0d, 0x0d, 0x0f, 0x0f, 0x0e,
+  0x11, 0x11, 0x0f, 0x13, 0x13, 0x0f, 0x35, 0x35, 0x30, 0x68, 0x68, 0x61,
+  0x68, 0x77, 0x63, 0x43, 0x70, 0x44, 0x47, 0x8e, 0x48, 0x4b, 0xa9, 0x4b,
+  0x3e, 0xac, 0x40, 0x39, 0xb3, 0x3e, 0x35, 0xb0, 0x3c, 0x34, 0xad, 0x3d,
+  0x39, 0xb0, 0x3f, 0x37, 0xb0, 0x39, 0x36, 0xb1, 0x36, 0x32, 0xb3, 0x34,
+  0x31, 0xb3, 0x34, 0x2f, 0xb3, 0x34, 0x2e, 0xb3, 0x35, 0x2f, 0xb1, 0x36,
+  0x30, 0xb2, 0x34, 0x32, 0xb1, 0x35, 0x31, 0xb2, 0x36, 0x31, 0xb0, 0x36,
+  0x31, 0xb0, 0x36, 0x31, 0xb3, 0x37, 0x31, 0xb3, 0x37, 0x31, 0xb3, 0x37,
+  0x32, 0xb4, 0x38, 0x32, 0xb4, 0x38, 0x34, 0xb5, 0x3a, 0x34, 0xb5, 0x39,
+  0x35, 0xb6, 0x3b, 0x35, 0xb6, 0x3b, 0x35, 0xb6, 0x3a, 0x36, 0xb6, 0x3c,
+  0x36, 0xb6, 0x3c, 0x36, 0xb7, 0x3c, 0x38, 0xb8, 0x3c, 0x38, 0xb8, 0x3c,
+  0x38, 0xb7, 0x3c, 0x38, 0xb7, 0x3b, 0x39, 0xba, 0x3d, 0x39, 0xba, 0x3d,
+  0x39, 0xba, 0x3d, 0x39, 0xba, 0x3d, 0x38, 0xb8, 0x3b, 0x38, 0xb8, 0x3c,
+  0x38, 0xb8, 0x3c, 0x38, 0xb8, 0x3c, 0x37, 0xb6, 0x3c, 0x37, 0xb6, 0x3c,
+  0x37, 0xb6, 0x3c, 0x37, 0xb6, 0x3c, 0x36, 0xb7, 0x3c, 0x35, 0xb7, 0x3c,
+  0x34, 0xb6, 0x3a, 0x33, 0xb7, 0x39, 0x2e, 0xba, 0x36, 0x2f, 0xb7, 0x38,
+  0x33, 0xb5, 0x3b, 0x32, 0xb2, 0x3d, 0x2d, 0xb3, 0x39, 0x2d, 0xac, 0x39,
+  0x2f, 0x9d, 0x3a, 0x1f, 0x62, 0x25, 0x21, 0x34, 0x22, 0x2a, 0x23, 0x29,
+  0x2d, 0x1f, 0x2b, 0x2c, 0x20, 0x29, 0x28, 0x24, 0x25, 0x26, 0x27, 0x24,
+  0x26, 0x27, 0x25, 0x27, 0x27, 0x26, 0x28, 0x27, 0x26, 0x29, 0x27, 0x27,
+  0x2a, 0x28, 0x27, 0x2c, 0x2b, 0x2a, 0x2e, 0x2c, 0x2c, 0x31, 0x2f, 0x2e,
+  0x30, 0x2e, 0x2c, 0x35, 0x33, 0x30, 0x3f, 0x3c, 0x39, 0x42, 0x3f, 0x3a,
+  0x54, 0x51, 0x4c, 0x72, 0x6f, 0x6a, 0x6b, 0x68, 0x64, 0x39, 0x3a, 0x38,
+  0x1c, 0x1d, 0x1d, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x11, 0x11, 0x11,
+  0x0e, 0x0e, 0x0e, 0x0a, 0x0a, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
+  0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01,
+  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x02, 0x01,
+  0x01, 0x02, 0x02, 0x02, 0x03, 0x02, 0x03, 0x04, 0x05, 0x05, 0x07, 0x08,
+  0x09, 0x09, 0x09, 0x0a, 0x0a, 0x0a, 0x0b, 0x0b, 0x0b, 0x0e, 0x0e, 0x0d,
+  0x0f, 0x0e, 0x0d, 0x11, 0x11, 0x0e, 0x16, 0x17, 0x12, 0x36, 0x37, 0x31,
+  0x54, 0x56, 0x4e, 0x4d, 0x63, 0x4a, 0x35, 0x76, 0x39, 0x43, 0xac, 0x49,
+  0x47, 0xc9, 0x4b, 0x39, 0xcb, 0x3f, 0x34, 0xd1, 0x3d, 0x2f, 0xcf, 0x3b,
+  0x2f, 0xcd, 0x3c, 0x33, 0xcf, 0x3e, 0x32, 0xcf, 0x38, 0x30, 0xd0, 0x36,
+  0x2d, 0xd1, 0x34, 0x2c, 0xd1, 0x33, 0x2a, 0xd1, 0x33, 0x29, 0xd1, 0x34,
+  0x2a, 0xd0, 0x35, 0x2b, 0xd0, 0x33, 0x2c, 0xd0, 0x34, 0x2b, 0xd0, 0x35,
+  0x2b, 0xcf, 0x35, 0x2b, 0xcf, 0x35, 0x2b, 0xd1, 0x36, 0x2b, 0xd1, 0x36,
+  0x2c, 0xd1, 0x36, 0x2c, 0xd1, 0x37, 0x2c, 0xd1, 0x37, 0x2c, 0xd2, 0x37,
+  0x2c, 0xd2, 0x37, 0x2d, 0xd3, 0x38, 0x2d, 0xd3, 0x38, 0x2d, 0xd3, 0x37,
+  0x2e, 0xd3, 0x38, 0x2e, 0xd3, 0x38, 0x2e, 0xd3, 0x38, 0x30, 0xd5, 0x39,
+  0x30, 0xd5, 0x39, 0x30, 0xd4, 0x39, 0x30, 0xd4, 0x38, 0x31, 0xd6, 0x3a,
+  0x31, 0xd6, 0x3a, 0x31, 0xd6, 0x3a, 0x31, 0xd6, 0x3a, 0x30, 0xd4, 0x38,
+  0x30, 0xd5, 0x39, 0x30, 0xd5, 0x39, 0x30, 0xd5, 0x39, 0x2f, 0xd3, 0x38,
+  0x2f, 0xd3, 0x38, 0x2f, 0xd3, 0x38, 0x31, 0xd3, 0x39, 0x31, 0xd3, 0x39,
+  0x32, 0xd4, 0x39, 0x30, 0xd3, 0x37, 0x2e, 0xd3, 0x36, 0x29, 0xd5, 0x34,
+  0x2a, 0xd4, 0x35, 0x2e, 0xd3, 0x37, 0x2d, 0xd1, 0x38, 0x28, 0xd1, 0x37,
+  0x29, 0xcc, 0x38, 0x2c, 0xbb, 0x39, 0x19, 0x72, 0x21, 0x16, 0x31, 0x17,
+  0x1c, 0x1b, 0x1c, 0x1f, 0x17, 0x1d, 0x1f, 0x17, 0x1c, 0x1c, 0x1a, 0x19,
+  0x1a, 0x1b, 0x18, 0x1b, 0x1c, 0x1a, 0x1d, 0x1d, 0x1c, 0x1d, 0x1d, 0x1c,
+  0x1e, 0x1d, 0x1d, 0x1f, 0x1e, 0x1d, 0x22, 0x21, 0x20, 0x23, 0x22, 0x21,
+  0x26, 0x24, 0x23, 0x27, 0x25, 0x24, 0x2c, 0x2a, 0x27, 0x36, 0x33, 0x30,
+  0x3e, 0x3c, 0x38, 0x4b, 0x49, 0x45, 0x5e, 0x5c, 0x57, 0x5a, 0x58, 0x54,
+  0x3b, 0x3c, 0x3b, 0x1f, 0x20, 0x20, 0x15, 0x15, 0x15, 0x14, 0x14, 0x14,
+  0x12, 0x12, 0x12, 0x0e, 0x0e, 0x0e, 0x0b, 0x0b, 0x0b, 0x0a, 0x0a, 0x0a,
+  0x09, 0x09, 0x09, 0x07, 0x07, 0x07, 0x06, 0x06, 0x06, 0x03, 0x03, 0x03,
+  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00,
+  0x01, 0x03, 0x01, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x04, 0x04, 0x06,
+  0x06, 0x07, 0x08, 0x09, 0x09, 0x0a, 0x0a, 0x0a, 0x0a, 0x0d, 0x0d, 0x0d,
+  0x0f, 0x0f, 0x0e, 0x0e, 0x0e, 0x0d, 0x0f, 0x10, 0x0e, 0x18, 0x1a, 0x15,
+  0x35, 0x36, 0x31, 0x41, 0x46, 0x3d, 0x35, 0x51, 0x34, 0x29, 0x79, 0x30,
+  0x3d, 0xc0, 0x46, 0x41, 0xdd, 0x48, 0x34, 0xe0, 0x3c, 0x2e, 0xe3, 0x3a,
+  0x29, 0xe2, 0x39, 0x29, 0xe1, 0x39, 0x2d, 0xe2, 0x3b, 0x2b, 0xe2, 0x37,
+  0x2b, 0xe3, 0x35, 0x28, 0xe3, 0x32, 0x27, 0xe3, 0x31, 0x25, 0xe3, 0x31,
+  0x24, 0xe3, 0x32, 0x25, 0xe2, 0x32, 0x25, 0xe3, 0x31, 0x26, 0xe2, 0x32,
+  0x24, 0xe3, 0x32, 0x25, 0xe2, 0x32, 0x25, 0xe2, 0x32, 0x25, 0xe3, 0x33,
+  0x25, 0xe3, 0x33, 0x25, 0xe3, 0x33, 0x26, 0xe4, 0x34, 0x26, 0xe4, 0x34,
+  0x25, 0xe4, 0x34, 0x25, 0xe4, 0x33, 0x25, 0xe4, 0x34, 0x25, 0xe4, 0x34,
+  0x26, 0xe4, 0x34, 0x26, 0xe5, 0x34, 0x26, 0xe5, 0x34, 0x26, 0xe5, 0x34,
+  0x28, 0xe6, 0x35, 0x28, 0xe6, 0x35, 0x28, 0xe5, 0x35, 0x28, 0xe5, 0x35,
+  0x28, 0xe6, 0x35, 0x28, 0xe6, 0x35, 0x28, 0xe6, 0x35, 0x28, 0xe6, 0x35,
+  0x28, 0xe5, 0x35, 0x28, 0xe6, 0x35, 0x28, 0xe6, 0x35, 0x28, 0xe6, 0x35,
+  0x27, 0xe5, 0x34, 0x27, 0xe5, 0x34, 0x27, 0xe5, 0x34, 0x2a, 0xe5, 0x35,
+  0x2b, 0xe5, 0x34, 0x2c, 0xe5, 0x35, 0x2b, 0xe5, 0x33, 0x29, 0xe5, 0x32,
+  0x24, 0xe6, 0x30, 0x25, 0xe5, 0x31, 0x29, 0xe4, 0x33, 0x28, 0xe3, 0x34,
+  0x23, 0xe3, 0x33, 0x25, 0xe0, 0x35, 0x29, 0xcf, 0x36, 0x14, 0x7d, 0x1c,
+  0x0d, 0x30, 0x0f, 0x11, 0x16, 0x11, 0x14, 0x12, 0x12, 0x15, 0x11, 0x11,
+  0x12, 0x11, 0x0f, 0x11, 0x12, 0x0f, 0x11, 0x12, 0x11, 0x13, 0x14, 0x13,
+  0x14, 0x14, 0x13, 0x14, 0x14, 0x14, 0x16, 0x15, 0x14, 0x19, 0x18, 0x17,
+  0x1a, 0x19, 0x18, 0x1b, 0x1a, 0x19, 0x1f, 0x1d, 0x1c, 0x23, 0x22, 0x1e,
+  0x2c, 0x2b, 0x28, 0x3a, 0x38, 0x35, 0x43, 0x41, 0x3e, 0x4d, 0x4b, 0x47,
+  0x4a, 0x49, 0x46, 0x3c, 0x3d, 0x3c, 0x21, 0x21, 0x22, 0x16, 0x16, 0x16,
+  0x15, 0x15, 0x15, 0x12, 0x12, 0x12, 0x0e, 0x0e, 0x0e, 0x0b, 0x0b, 0x0b,
+  0x0b, 0x0b, 0x0b, 0x0a, 0x0a, 0x0a, 0x07, 0x07, 0x07, 0x06, 0x06, 0x06,
+  0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+  0x01, 0x02, 0x00, 0x02, 0x03, 0x00, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04,
+  0x06, 0x04, 0x07, 0x08, 0x07, 0x09, 0x0a, 0x09, 0x0a, 0x0a, 0x0a, 0x0b,
+  0x0d, 0x0d, 0x0e, 0x0f, 0x0f, 0x0e, 0x0f, 0x0f, 0x0c, 0x0f, 0x10, 0x0d,
+  0x1c, 0x1e, 0x19, 0x34, 0x36, 0x30, 0x2d, 0x32, 0x28, 0x1a, 0x3c, 0x19,
+  0x1b, 0x7e, 0x24, 0x38, 0xda, 0x45, 0x3a, 0xf7, 0x46, 0x2c, 0xfa, 0x38,
+  0x25, 0xfa, 0x36, 0x20, 0xf9, 0x34, 0x20, 0xf9, 0x35, 0x23, 0xf9, 0x37,
+  0x23, 0xf9, 0x34, 0x22, 0xf9, 0x32, 0x1f, 0xfa, 0x2e, 0x1e, 0xf9, 0x2d,
+  0x1e, 0xf9, 0x2d, 0x1c, 0xfa, 0x2e, 0x1d, 0xf9, 0x2e, 0x1d, 0xf9, 0x2e,
+  0x1d, 0xf9, 0x2e, 0x1c, 0xf9, 0x2e, 0x1c, 0xf9, 0x2e, 0x1c, 0xf9, 0x2e,
+  0x1c, 0xf9, 0x2e, 0x1c, 0xf9, 0x2e, 0x1d, 0xf9, 0x2f, 0x1d, 0xf9, 0x2f,
+  0x1d, 0xf9, 0x2f, 0x1a, 0xf9, 0x2e, 0x1a, 0xf9, 0x2e, 0x1a, 0xf9, 0x2e,
+  0x1a, 0xf9, 0x2e, 0x1b, 0xf9, 0x2e, 0x1b, 0xfa, 0x2d, 0x1b, 0xfa, 0x2d,
+  0x1b, 0xfa, 0x2d, 0x1d, 0xfa, 0x2f, 0x1d, 0xfa, 0x2f, 0x1d, 0xfa, 0x2f,
+  0x1d, 0xfa, 0x2f, 0x1d, 0xfa, 0x2f, 0x1d, 0xfa, 0x2f, 0x1d, 0xfa, 0x2f,
+  0x1d, 0xfa, 0x2f, 0x1d, 0xfa, 0x2f, 0x1d, 0xfa, 0x2f, 0x1d, 0xfa, 0x2f,
+  0x1d, 0xfa, 0x2f, 0x1c, 0xfa, 0x2d, 0x1c, 0xfa, 0x2d, 0x1d, 0xfa, 0x2d,
+  0x20, 0xf9, 0x2f, 0x23, 0xfa, 0x2e, 0x25, 0xfa, 0x2f, 0x24, 0xfa, 0x2e,
+  0x21, 0xfa, 0x2c, 0x1d, 0xfa, 0x2b, 0x1e, 0xfa, 0x2b, 0x21, 0xfa, 0x2c,
+  0x21, 0xf9, 0x2d, 0x1c, 0xfa, 0x2e, 0x20, 0xf9, 0x31, 0x25, 0xe8, 0x32,
+  0x0e, 0x89, 0x16, 0x03, 0x2c, 0x05, 0x03, 0x0f, 0x03, 0x06, 0x0a, 0x03,
+  0x08, 0x09, 0x03, 0x05, 0x06, 0x03, 0x04, 0x05, 0x03, 0x05, 0x06, 0x05,
+  0x07, 0x08, 0x07, 0x08, 0x09, 0x08, 0x08, 0x09, 0x09, 0x0a, 0x0b, 0x09,
+  0x0d, 0x0d, 0x0b, 0x0e, 0x0e, 0x0c, 0x10, 0x0e, 0x0e, 0x15, 0x14, 0x13,
+  0x19, 0x18, 0x15, 0x22, 0x22, 0x1f, 0x37, 0x36, 0x33, 0x3a, 0x39, 0x36,
+  0x37, 0x36, 0x32, 0x38, 0x37, 0x34, 0x3d, 0x3e, 0x3d, 0x24, 0x24, 0x24,
+  0x17, 0x17, 0x17, 0x14, 0x14, 0x14, 0x12, 0x12, 0x12, 0x0e, 0x0e, 0x0e,
+  0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0a, 0x0a, 0x0a, 0x08, 0x08, 0x08,
+  0x06, 0x06, 0x06, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+  0x01, 0x01, 0x01, 0x01, 0x02, 0x00, 0x02, 0x03, 0x00, 0x03, 0x03, 0x03,
+  0x04, 0x04, 0x04, 0x06, 0x04, 0x07, 0x08, 0x07, 0x09, 0x0a, 0x09, 0x0a,
+  0x0a, 0x0a, 0x0b, 0x0d, 0x0d, 0x0d, 0x0f, 0x0f, 0x0f, 0x10, 0x11, 0x0e,
+  0x12, 0x13, 0x10, 0x20, 0x22, 0x1d, 0x35, 0x37, 0x30, 0x2b, 0x30, 0x25,
+  0x1a, 0x3c, 0x19, 0x1d, 0x82, 0x24, 0x3b, 0xe2, 0x46, 0x38, 0xfc, 0x42,
+  0x29, 0xfe, 0x35, 0x20, 0xfd, 0x31, 0x1a, 0xf9, 0x2f, 0x1a, 0xf8, 0x2f,
+  0x1b, 0xf6, 0x30, 0x1c, 0xf7, 0x2d, 0x1c, 0xf8, 0x2c, 0x19, 0xfa, 0x29,
+  0x18, 0xf9, 0x29, 0x18, 0xf9, 0x29, 0x16, 0xfa, 0x29, 0x17, 0xf8, 0x29,
+  0x17, 0xf8, 0x29, 0x17, 0xf8, 0x2a, 0x15, 0xf8, 0x29, 0x15, 0xf8, 0x29,
+  0x15, 0xf8, 0x29, 0x15, 0xf8, 0x29, 0x15, 0xf8, 0x29, 0x16, 0xf8, 0x2a,
+  0x16, 0xf8, 0x2a, 0x16, 0xf8, 0x2a, 0x15, 0xf8, 0x29, 0x15, 0xf8, 0x29,
+  0x15, 0xf8, 0x29, 0x15, 0xf8, 0x29, 0x16, 0xf8, 0x29, 0x16, 0xf8, 0x29,
+  0x16, 0xf8, 0x29, 0x16, 0xf8, 0x29, 0x17, 0xf8, 0x2a, 0x16, 0xf8, 0x2a,
+  0x16, 0xf8, 0x2a, 0x16, 0xf8, 0x2a, 0x16, 0xf8, 0x2a, 0x16, 0xf8, 0x2a,
+  0x16, 0xf8, 0x2a, 0x16, 0xf8, 0x2a, 0x17, 0xf8, 0x2a, 0x17, 0xf8, 0x2a,
+  0x16, 0xf8, 0x2a, 0x16, 0xf8, 0x2a, 0x16, 0xf8, 0x29, 0x16, 0xf8, 0x29,
+  0x16, 0xf8, 0x29, 0x19, 0xf8, 0x2a, 0x1a, 0xf8, 0x2a, 0x1c, 0xf8, 0x2b,
+  0x1b, 0xf8, 0x29, 0x19, 0xf9, 0x28, 0x16, 0xfa, 0x27, 0x17, 0xf9, 0x27,
+  0x1a, 0xf9, 0x28, 0x1a, 0xf9, 0x28, 0x16, 0xfb, 0x2a, 0x1a, 0xfc, 0x2e,
+  0x21, 0xed, 0x31, 0x0c, 0x8e, 0x17, 0x01, 0x2a, 0x03, 0x00, 0x0c, 0x00,
+  0x02, 0x08, 0x00, 0x04, 0x05, 0x00, 0x02, 0x02, 0x00, 0x01, 0x02, 0x00,
+  0x02, 0x03, 0x02, 0x04, 0x05, 0x03, 0x05, 0x05, 0x04, 0x06, 0x06, 0x06,
+  0x08, 0x09, 0x07, 0x0b, 0x0b, 0x09, 0x0c, 0x0c, 0x0a, 0x0d, 0x0d, 0x0c,
+  0x13, 0x13, 0x12, 0x18, 0x17, 0x15, 0x23, 0x22, 0x20, 0x3c, 0x3c, 0x39,
+  0x3c, 0x3c, 0x39, 0x31, 0x32, 0x2e, 0x33, 0x33, 0x30, 0x3e, 0x3f, 0x3e,
+  0x28, 0x28, 0x28, 0x19, 0x19, 0x19, 0x14, 0x14, 0x14, 0x13, 0x13, 0x13,
+  0x0f, 0x0f, 0x0f, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0a, 0x0a, 0x0a,
+  0x08, 0x08, 0x08, 0x06, 0x06, 0x06, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01,
+  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x03, 0x00,
+  0x02, 0x02, 0x03, 0x03, 0x04, 0x04, 0x05, 0x04, 0x07, 0x09, 0x08, 0x09,
+  0x0a, 0x0a, 0x0a, 0x0b, 0x09, 0x0b, 0x0c, 0x0b, 0x0c, 0x10, 0x10, 0x10,
+  0x13, 0x14, 0x11, 0x15, 0x16, 0x13, 0x24, 0x27, 0x20, 0x36, 0x38, 0x31,
+  0x2d, 0x32, 0x28, 0x20, 0x42, 0x1e, 0x22, 0x86, 0x28, 0x40, 0xe7, 0x48,
+  0x37, 0xfb, 0x3f, 0x27, 0xfd, 0x32, 0x1b, 0xfa, 0x2c, 0x14, 0xf5, 0x28,
+  0x13, 0xf2, 0x29, 0x13, 0xee, 0x29, 0x16, 0xef, 0x28, 0x16, 0xf1, 0x27,
+  0x14, 0xf4, 0x24, 0x13, 0xf4, 0x24, 0x13, 0xf4, 0x24, 0x11, 0xf4, 0x24,
+  0x12, 0xf2, 0x24, 0x12, 0xf2, 0x24, 0x12, 0xf1, 0x25, 0x10, 0xf0, 0x24,
+  0x10, 0xf0, 0x24, 0x10, 0xf0, 0x24, 0x10, 0xf0, 0x24, 0x10, 0xf0, 0x24,
+  0x10, 0xf0, 0x25, 0x10, 0xf0, 0x25, 0x10, 0xf0, 0x25, 0x11, 0xf2, 0x24,
+  0x11, 0xf2, 0x24, 0x11, 0xf2, 0x24, 0x11, 0xf2, 0x24, 0x11, 0xf2, 0x24,
+  0x11, 0xf2, 0x24, 0x11, 0xf2, 0x24, 0x11, 0xf2, 0x24, 0x12, 0xf2, 0x25,
+  0x11, 0xf2, 0x25, 0x11, 0xf2, 0x25, 0x11, 0xf2, 0x25, 0x11, 0xf2, 0x25,
+  0x11, 0xf2, 0x25, 0x11, 0xf2, 0x25, 0x11, 0xf2, 0x25, 0x12, 0xf2, 0x25,
+  0x12, 0xf2, 0x25, 0x11, 0xf2, 0x25, 0x11, 0xf2, 0x25, 0x11, 0xf2, 0x24,
+  0x11, 0xf2, 0x24, 0x11, 0xf2, 0x24, 0x12, 0xf1, 0x25, 0x11, 0xf2, 0x27,
+  0x13, 0xf2, 0x27, 0x12, 0xf2, 0x24, 0x12, 0xf3, 0x24, 0x10, 0xf6, 0x24,
+  0x10, 0xf4, 0x24, 0x13, 0xf2, 0x24, 0x13, 0xf3, 0x24, 0x10, 0xf6, 0x25,
+  0x14, 0xf8, 0x2a, 0x1c, 0xed, 0x2f, 0x0b, 0x90, 0x18, 0x01, 0x28, 0x03,
+  0x00, 0x0b, 0x00, 0x01, 0x07, 0x00, 0x02, 0x03, 0x00, 0x01, 0x01, 0x00,
+  0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x02, 0x03, 0x01, 0x03, 0x04, 0x02,
+  0x05, 0x05, 0x06, 0x08, 0x08, 0x08, 0x0b, 0x0a, 0x0a, 0x0b, 0x0b, 0x0b,
+  0x0d, 0x0d, 0x0d, 0x14, 0x14, 0x13, 0x19, 0x18, 0x17, 0x25, 0x26, 0x23,
+  0x43, 0x44, 0x40, 0x41, 0x42, 0x3e, 0x31, 0x32, 0x2d, 0x33, 0x33, 0x2f,
+  0x40, 0x40, 0x3f, 0x2b, 0x2b, 0x2b, 0x1b, 0x1b, 0x1b, 0x15, 0x15, 0x15,
+  0x14, 0x14, 0x14, 0x10, 0x10, 0x10, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
+  0x0a, 0x0a, 0x0a, 0x09, 0x09, 0x09, 0x07, 0x07, 0x07, 0x03, 0x03, 0x03,
+  0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00,
+  0x02, 0x03, 0x00, 0x03, 0x02, 0x03, 0x04, 0x04, 0x04, 0x06, 0x04, 0x07,
+  0x09, 0x08, 0x0a, 0x0a, 0x0a, 0x0a, 0x0b, 0x09, 0x0c, 0x0c, 0x0b, 0x0c,
+  0x0f, 0x0f, 0x0f, 0x14, 0x15, 0x13, 0x19, 0x1a, 0x17, 0x28, 0x2b, 0x24,
+  0x35, 0x37, 0x31, 0x33, 0x38, 0x2e, 0x27, 0x4a, 0x24, 0x2b, 0x8e, 0x2e,
+  0x45, 0xe9, 0x4a, 0x34, 0xf5, 0x38, 0x25, 0xfa, 0x2e, 0x17, 0xf8, 0x26,
+  0x0f, 0xf0, 0x22, 0x0e, 0xec, 0x23, 0x0e, 0xe8, 0x23, 0x11, 0xe8, 0x23,
+  0x11, 0xea, 0x22, 0x0f, 0xed, 0x20, 0x0f, 0xed, 0x20, 0x0f, 0xed, 0x20,
+  0x0d, 0xec, 0x20, 0x0d, 0xea, 0x21, 0x0e, 0xe9, 0x20, 0x0e, 0xe8, 0x22,
+  0x0c, 0xe9, 0x21, 0x0c, 0xe9, 0x20, 0x0c, 0xe9, 0x20, 0x0c, 0xe9, 0x20,
+  0x0c, 0xe9, 0x20, 0x0c, 0xe9, 0x20, 0x0c, 0xe9, 0x20, 0x0c, 0xe9, 0x20,
+  0x0e, 0xea, 0x20, 0x0e, 0xea, 0x20, 0x0e, 0xea, 0x20, 0x0e, 0xea, 0x20,
+  0x0e, 0xea, 0x20, 0x0d, 0xea, 0x20, 0x0d, 0xea, 0x20, 0x0d, 0xea, 0x20,
+  0x0d, 0xea, 0x20, 0x0d, 0xea, 0x20, 0x0d, 0xea, 0x20, 0x0d, 0xea, 0x20,
+  0x0d, 0xea, 0x20, 0x0d, 0xea, 0x20, 0x0d, 0xea, 0x20, 0x0d, 0xea, 0x20,
+  0x0d, 0xea, 0x20, 0x0d, 0xea, 0x20, 0x0d, 0xea, 0x20, 0x0d, 0xea, 0x20,
+  0x0e, 0xea, 0x20, 0x0e, 0xea, 0x20, 0x0e, 0xeb, 0x20, 0x0d, 0xe9, 0x21,
+  0x0b, 0xea, 0x23, 0x0b, 0xea, 0x23, 0x0b, 0xea, 0x20, 0x0b, 0xec, 0x20,
+  0x0a, 0xef, 0x20, 0x0c, 0xed, 0x20, 0x10, 0xea, 0x20, 0x10, 0xea, 0x20,
+  0x0b, 0xee, 0x21, 0x0f, 0xf0, 0x26, 0x19, 0xeb, 0x2c, 0x0c, 0x93, 0x18,
+  0x02, 0x27, 0x04, 0x02, 0x0a, 0x02, 0x01, 0x06, 0x01, 0x00, 0x02, 0x00,
+  0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x01,
+  0x03, 0x03, 0x02, 0x05, 0x04, 0x05, 0x07, 0x07, 0x07, 0x09, 0x0a, 0x0a,
+  0x0a, 0x0a, 0x0a, 0x0d, 0x0d, 0x0d, 0x12, 0x13, 0x13, 0x18, 0x19, 0x18,
+  0x27, 0x28, 0x26, 0x48, 0x4a, 0x46, 0x49, 0x4b, 0x47, 0x37, 0x3a, 0x36,
+  0x3a, 0x3c, 0x39, 0x42, 0x43, 0x41, 0x30, 0x30, 0x30, 0x1f, 0x1f, 0x1f,
+  0x17, 0x17, 0x17, 0x15, 0x15, 0x15, 0x11, 0x11, 0x11, 0x0c, 0x0c, 0x0c,
+  0x0c, 0x0c, 0x0c, 0x0a, 0x0a, 0x0a, 0x09, 0x09, 0x09, 0x07, 0x07, 0x07,
+  0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+  0x03, 0x02, 0x01, 0x03, 0x02, 0x01, 0x05, 0x03, 0x03, 0x06, 0x04, 0x04,
+  0x07, 0x04, 0x07, 0x09, 0x08, 0x0a, 0x0a, 0x0a, 0x0a, 0x0c, 0x0a, 0x0b,
+  0x0d, 0x0d, 0x0d, 0x0e, 0x0f, 0x0e, 0x13, 0x15, 0x11, 0x1c, 0x1e, 0x1a,
+  0x2a, 0x2f, 0x26, 0x33, 0x37, 0x2e, 0x39, 0x40, 0x33, 0x2c, 0x50, 0x29,
+  0x33, 0x98, 0x36, 0x47, 0xe8, 0x4a, 0x2e, 0xec, 0x31, 0x23, 0xf7, 0x2a,
+  0x15, 0xf6, 0x24, 0x0d, 0xed, 0x20, 0x0e, 0xec, 0x22, 0x0e, 0xe7, 0x23,
+  0x10, 0xe4, 0x21, 0x10, 0xe5, 0x21, 0x0e, 0xe8, 0x1f, 0x0e, 0xe8, 0x1f,
+  0x0e, 0xe8, 0x1f, 0x0c, 0xe7, 0x1f, 0x0c, 0xe4, 0x20, 0x0d, 0xe3, 0x1f,
+  0x0d, 0xe3, 0x20, 0x0c, 0xe6, 0x20, 0x0c, 0xe7, 0x1f, 0x0c, 0xe6, 0x1f,
+  0x0c, 0xe7, 0x1f, 0x0c, 0xe5, 0x1f, 0x0c, 0xe5, 0x1f, 0x0c, 0xe5, 0x1f,
+  0x0c, 0xe5, 0x1f, 0x0d, 0xe6, 0x1f, 0x0d, 0xe6, 0x1f, 0x0d, 0xe6, 0x1f,
+  0x0d, 0xe6, 0x1f, 0x0d, 0xe6, 0x1f, 0x0c, 0xe6, 0x1e, 0x0c, 0xe6, 0x1e,
+  0x0c, 0xe6, 0x1e, 0x0c, 0xe6, 0x1e, 0x0c, 0xe6, 0x1f, 0x0c, 0xe6, 0x1f,
+  0x0c, 0xe6, 0x1f, 0x0c, 0xe6, 0x1f, 0x0c, 0xe6, 0x1f, 0x0c, 0xe6, 0x1f,
+  0x0c, 0xe6, 0x1f, 0x0c, 0xe6, 0x1e, 0x0c, 0xe6, 0x1e, 0x0c, 0xe6, 0x1f,
+  0x0c, 0xe6, 0x1f, 0x0d, 0xe6, 0x1f, 0x0d, 0xe6, 0x1f, 0x0d, 0xe7, 0x1f,
+  0x0b, 0xe5, 0x20, 0x08, 0xe6, 0x21, 0x08, 0xe6, 0x21, 0x0a, 0xe6, 0x1f,
+  0x0a, 0xe7, 0x1f, 0x09, 0xe8, 0x1f, 0x0c, 0xe7, 0x1f, 0x13, 0xe3, 0x1e,
+  0x12, 0xe3, 0x1f, 0x0b, 0xe7, 0x1e, 0x0c, 0xe8, 0x21, 0x19, 0xe8, 0x29,
+  0x0e, 0x94, 0x17, 0x03, 0x27, 0x04, 0x03, 0x09, 0x03, 0x03, 0x05, 0x01,
+  0x01, 0x01, 0x00, 0x03, 0x01, 0x01, 0x03, 0x01, 0x01, 0x01, 0x01, 0x02,
+  0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x06, 0x06, 0x06,
+  0x08, 0x09, 0x09, 0x09, 0x0a, 0x0a, 0x0d, 0x0e, 0x0e, 0x0f, 0x10, 0x10,
+  0x16, 0x17, 0x17, 0x25, 0x27, 0x26, 0x47, 0x4a, 0x46, 0x4f, 0x53, 0x4e,
+  0x42, 0x47, 0x42, 0x47, 0x49, 0x47, 0x43, 0x46, 0x43, 0x34, 0x35, 0x34,
+  0x22, 0x22, 0x22, 0x18, 0x18, 0x18, 0x15, 0x15, 0x15, 0x12, 0x11, 0x11,
+  0x0c, 0x0c, 0x0c, 0x0b, 0x0b, 0x0b, 0x0a, 0x0a, 0x0a, 0x09, 0x09, 0x09,
+  0x06, 0x07, 0x07, 0x03, 0x03, 0x03, 0x02, 0x01, 0x02, 0x00, 0x00, 0x00,
+  0x01, 0x00, 0x01, 0x04, 0x02, 0x01, 0x04, 0x01, 0x01, 0x06, 0x03, 0x03,
+  0x07, 0x04, 0x04, 0x08, 0x04, 0x07, 0x0a, 0x08, 0x0a, 0x0a, 0x0a, 0x0b,
+  0x0c, 0x0b, 0x0c, 0x0e, 0x0e, 0x0e, 0x0f, 0x0f, 0x0e, 0x13, 0x15, 0x11,
+  0x1e, 0x21, 0x1d, 0x2c, 0x31, 0x29, 0x38, 0x3c, 0x34, 0x48, 0x50, 0x43,
+  0x38, 0x5d, 0x35, 0x3c, 0xa0, 0x3f, 0x4b, 0xe8, 0x4e, 0x2e, 0xe5, 0x30,
+  0x26, 0xf3, 0x2a, 0x18, 0xf3, 0x25, 0x10, 0xea, 0x22, 0x12, 0xec, 0x25,
+  0x12, 0xe6, 0x25, 0x12, 0xe2, 0x23, 0x13, 0xe2, 0x22, 0x11, 0xe4, 0x20,
+  0x11, 0xe4, 0x20, 0x11, 0xe4, 0x20, 0x0f, 0xe3, 0x20, 0x0f, 0xdf, 0x22,
+  0x10, 0xde, 0x22, 0x10, 0xdf, 0x22, 0x10, 0xe3, 0x22, 0x10, 0xe4, 0x20,
+  0x10, 0xe4, 0x20, 0x10, 0xe4, 0x20, 0x10, 0xe3, 0x20, 0x10, 0xe3, 0x20,
+  0x10, 0xe3, 0x20, 0x10, 0xe3, 0x20, 0x10, 0xe3, 0x20, 0x10, 0xe3, 0x20,
+  0x10, 0xe3, 0x20, 0x10, 0xe3, 0x20, 0x10, 0xe3, 0x21, 0x0f, 0xe2, 0x1f,
+  0x0f, 0xe2, 0x1f, 0x0f, 0xe2, 0x1f, 0x0f, 0xe2, 0x20, 0x10, 0xe3, 0x20,
+  0x10, 0xe3, 0x20, 0x10, 0xe3, 0x20, 0x10, 0xe3, 0x20, 0x10, 0xe3, 0x20,
+  0x10, 0xe3, 0x20, 0x10, 0xe3, 0x20, 0x0f, 0xe2, 0x1f, 0x0f, 0xe2, 0x1f,
+  0x10, 0xe3, 0x21, 0x10, 0xe3, 0x20, 0x10, 0xe3, 0x20, 0x10, 0xe3, 0x20,
+  0x10, 0xe4, 0x20, 0x0e, 0xe3, 0x22, 0x0b, 0xe2, 0x22, 0x0b, 0xe2, 0x22,
+  0x0d, 0xe2, 0x21, 0x0e, 0xe3, 0x21, 0x0c, 0xe4, 0x20, 0x11, 0xe2, 0x21,
+  0x18, 0xdf, 0x20, 0x18, 0xde, 0x20, 0x0e, 0xe1, 0x1f, 0x0f, 0xe1, 0x21,
+  0x1d, 0xe6, 0x2a, 0x14, 0x97, 0x1a, 0x07, 0x2b, 0x08, 0x08, 0x0d, 0x07,
+  0x07, 0x08, 0x05, 0x05, 0x05, 0x04, 0x07, 0x05, 0x04, 0x08, 0x06, 0x05,
+  0x06, 0x06, 0x06, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x08, 0x08,
+  0x08, 0x09, 0x09, 0x0b, 0x0b, 0x0c, 0x0d, 0x0d, 0x0d, 0x10, 0x12, 0x12,
+  0x11, 0x12, 0x13, 0x19, 0x1b, 0x1a, 0x29, 0x2b, 0x2a, 0x4b, 0x4f, 0x4a,
+  0x57, 0x5c, 0x57, 0x53, 0x59, 0x55, 0x5a, 0x5d, 0x5b, 0x4a, 0x4d, 0x4a,
+  0x39, 0x39, 0x38, 0x26, 0x26, 0x26, 0x19, 0x19, 0x19, 0x16, 0x16, 0x16,
+  0x13, 0x12, 0x12, 0x0d, 0x0c, 0x0c, 0x0b, 0x0b, 0x0b, 0x0a, 0x0a, 0x0a,
+  0x09, 0x09, 0x09, 0x06, 0x07, 0x07, 0x03, 0x03, 0x03, 0x02, 0x01, 0x02,
+  0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x03, 0x01, 0x01, 0x03, 0x01, 0x00,
+  0x06, 0x03, 0x02, 0x07, 0x04, 0x03, 0x07, 0x05, 0x06, 0x09, 0x09, 0x0a,
+  0x09, 0x0a, 0x0b, 0x0b, 0x0b, 0x0c, 0x0e, 0x0f, 0x0f, 0x11, 0x11, 0x11,
+  0x13, 0x16, 0x14, 0x1f, 0x22, 0x1f, 0x30, 0x33, 0x2e, 0x57, 0x5a, 0x54,
+  0x7c, 0x83, 0x77, 0x60, 0x83, 0x5d, 0x4a, 0xa6, 0x4c, 0x59, 0xe7, 0x5c,
+  0x42, 0xe4, 0x43, 0x3b, 0xee, 0x3d, 0x30, 0xef, 0x39, 0x27, 0xe8, 0x34,
+  0x28, 0xea, 0x37, 0x26, 0xe3, 0x36, 0x26, 0xe0, 0x33, 0x27, 0xe1, 0x33,
+  0x26, 0xe3, 0x30, 0x26, 0xe3, 0x2f, 0x26, 0xe3, 0x2f, 0x24, 0xe3, 0x2f,
+  0x24, 0xe0, 0x31, 0x24, 0xde, 0x32, 0x24, 0xdf, 0x32, 0x24, 0xe2, 0x31,
+  0x24, 0xe4, 0x30, 0x24, 0xe3, 0x30, 0x24, 0xe4, 0x30, 0x24, 0xe2, 0x30,
+  0x24, 0xe2, 0x30, 0x24, 0xe2, 0x30, 0x25, 0xe2, 0x30, 0x24, 0xe1, 0x2f,
+  0x24, 0xe1, 0x2f, 0x24, 0xe1, 0x2f, 0x24, 0xe1, 0x2f, 0x24, 0xe1, 0x30,
+  0x23, 0xe1, 0x2f, 0x23, 0xe1, 0x2f, 0x23, 0xe1, 0x2f, 0x24, 0xe2, 0x30,
+  0x24, 0xe2, 0x30, 0x24, 0xe2, 0x30, 0x24, 0xe2, 0x30, 0x24, 0xe2, 0x30,
+  0x24, 0xe2, 0x30, 0x24, 0xe2, 0x30, 0x25, 0xe2, 0x30, 0x23, 0xe1, 0x2f,
+  0x23, 0xe1, 0x2f, 0x24, 0xe1, 0x30, 0x24, 0xe1, 0x2f, 0x25, 0xe2, 0x30,
+  0x24, 0xe2, 0x30, 0x24, 0xe3, 0x30, 0x24, 0xe2, 0x31, 0x22, 0xe2, 0x30,
+  0x22, 0xe2, 0x30, 0x23, 0xe0, 0x31, 0x24, 0xe1, 0x31, 0x24, 0xe2, 0x30,
+  0x26, 0xe1, 0x30, 0x2a, 0xdf, 0x2f, 0x29, 0xde, 0x30, 0x23, 0xdf, 0x2f,
+  0x25, 0xe2, 0x32, 0x30, 0xe5, 0x38, 0x27, 0xa2, 0x2a, 0x18, 0x3f, 0x17,
+  0x1c, 0x22, 0x19, 0x1b, 0x1b, 0x17, 0x1a, 0x18, 0x17, 0x19, 0x18, 0x16,
+  0x1a, 0x18, 0x17, 0x1a, 0x19, 0x18, 0x1b, 0x1a, 0x19, 0x1c, 0x1a, 0x19,
+  0x1d, 0x1b, 0x19, 0x1e, 0x1c, 0x1a, 0x21, 0x1f, 0x1d, 0x22, 0x21, 0x1f,
+  0x25, 0x26, 0x24, 0x26, 0x27, 0x26, 0x2e, 0x31, 0x2d, 0x3e, 0x41, 0x3e,
+  0x5f, 0x62, 0x5d, 0x68, 0x6b, 0x65, 0x7c, 0x7f, 0x7b, 0x8c, 0x8e, 0x8c,
+  0x69, 0x69, 0x67, 0x3d, 0x3c, 0x3b, 0x28, 0x27, 0x27, 0x1b, 0x1b, 0x1b,
+  0x15, 0x17, 0x16, 0x11, 0x13, 0x12, 0x0c, 0x0d, 0x0c, 0x0b, 0x0b, 0x0b,
+  0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x07, 0x07, 0x07, 0x04, 0x03, 0x03,
+  0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x02, 0x01, 0x00,
+  0x03, 0x01, 0x00, 0x06, 0x03, 0x02, 0x07, 0x03, 0x03, 0x07, 0x06, 0x06,
+  0x09, 0x09, 0x09, 0x09, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0d, 0x0e, 0x0f,
+  0x12, 0x13, 0x14, 0x14, 0x16, 0x16, 0x1f, 0x22, 0x20, 0x33, 0x36, 0x32,
+  0x71, 0x73, 0x6d, 0xa5, 0xac, 0xa0, 0x7f, 0xa2, 0x7d, 0x53, 0xab, 0x56,
+  0x63, 0xe7, 0x67, 0x52, 0xe5, 0x54, 0x4b, 0xea, 0x4d, 0x42, 0xec, 0x48,
+  0x3a, 0xe6, 0x42, 0x3a, 0xe9, 0x44, 0x36, 0xe2, 0x42, 0x36, 0xe0, 0x40,
+  0x36, 0xe1, 0x40, 0x37, 0xe3, 0x3d, 0x36, 0xe4, 0x3c, 0x36, 0xe4, 0x3c,
+  0x36, 0xe3, 0x3c, 0x36, 0xe1, 0x3d, 0x35, 0xdf, 0x3f, 0x35, 0xe0, 0x3f,
+  0x35, 0xe2, 0x3e, 0x35, 0xe3, 0x3c, 0x35, 0xe3, 0x3c, 0x35, 0xe3, 0x3c,
+  0x35, 0xe3, 0x3c, 0x35, 0xe3, 0x3c, 0x35, 0xe3, 0x3c, 0x35, 0xe3, 0x3c,
+  0x34, 0xe1, 0x3c, 0x34, 0xe1, 0x3c, 0x34, 0xe1, 0x3c, 0x34, 0xe1, 0x3c,
+  0x34, 0xe1, 0x3c, 0x34, 0xe0, 0x3b, 0x34, 0xe0, 0x3b, 0x34, 0xe0, 0x3b,
+  0x35, 0xe2, 0x3d, 0x35, 0xe3, 0x3c, 0x35, 0xe3, 0x3c, 0x35, 0xe3, 0x3c,
+  0x35, 0xe3, 0x3c, 0x35, 0xe3, 0x3c, 0x35, 0xe3, 0x3c, 0x35, 0xe3, 0x3c,
+  0x34, 0xe0, 0x3b, 0x34, 0xe0, 0x3b, 0x34, 0xe1, 0x3c, 0x34, 0xe1, 0x3c,
+  0x35, 0xe3, 0x3c, 0x35, 0xe3, 0x3c, 0x35, 0xe3, 0x3c, 0x34, 0xe3, 0x3d,
+  0x34, 0xe2, 0x3b, 0x34, 0xe2, 0x3c, 0x34, 0xe0, 0x3e, 0x37, 0xe0, 0x3e,
+  0x37, 0xe1, 0x3c, 0x39, 0xe0, 0x3c, 0x39, 0xe0, 0x3b, 0x37, 0xdf, 0x3c,
+  0x33, 0xe0, 0x3c, 0x38, 0xe5, 0x3f, 0x3f, 0xe5, 0x43, 0x37, 0xab, 0x37,
+  0x26, 0x51, 0x23, 0x2a, 0x33, 0x26, 0x29, 0x2b, 0x25, 0x2a, 0x28, 0x25,
+  0x28, 0x28, 0x24, 0x29, 0x27, 0x26, 0x29, 0x28, 0x26, 0x2b, 0x29, 0x27,
+  0x2c, 0x2a, 0x27, 0x2e, 0x2b, 0x28, 0x2f, 0x2c, 0x29, 0x32, 0x2f, 0x2c,
+  0x33, 0x31, 0x2e, 0x35, 0x35, 0x31, 0x37, 0x39, 0x35, 0x40, 0x43, 0x3e,
+  0x50, 0x53, 0x4e, 0x6f, 0x71, 0x6c, 0x74, 0x76, 0x70, 0x9c, 0x9d, 0x97,
+  0xb2, 0xb3, 0xb1, 0x82, 0x80, 0x7e, 0x40, 0x3e, 0x3d, 0x29, 0x28, 0x28,
+  0x1c, 0x1c, 0x1c, 0x15, 0x17, 0x17, 0x11, 0x13, 0x13, 0x0c, 0x0d, 0x0d,
+  0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x08, 0x07, 0x07,
+  0x05, 0x03, 0x03, 0x02, 0x02, 0x01, 0x01, 0x02, 0x01, 0x00, 0x01, 0x00,
+  0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x06, 0x03, 0x01, 0x07, 0x04, 0x02,
+  0x07, 0x08, 0x05, 0x09, 0x0a, 0x09, 0x09, 0x0b, 0x0b, 0x0a, 0x0c, 0x0b,
+  0x0d, 0x0e, 0x0e, 0x14, 0x15, 0x16, 0x16, 0x17, 0x18, 0x20, 0x22, 0x22,
+  0x39, 0x39, 0x38, 0x94, 0x94, 0x90, 0xda, 0xdf, 0xd4, 0xa8, 0xc9, 0xa6,
+  0x60, 0xb1, 0x62, 0x72, 0xe8, 0x75, 0x68, 0xe7, 0x69, 0x61, 0xe7, 0x61,
+  0x5b, 0xe9, 0x5d, 0x53, 0xe6, 0x56, 0x52, 0xe9, 0x58, 0x4c, 0xe1, 0x54,
+  0x4c, 0xe1, 0x53, 0x4c, 0xe2, 0x52, 0x4d, 0xe5, 0x4e, 0x4d, 0xe6, 0x4d,
+  0x4c, 0xe6, 0x4c, 0x4d, 0xe6, 0x4c, 0x4d, 0xe4, 0x4d, 0x4a, 0xe2, 0x50,
+  0x4a, 0xe2, 0x51, 0x4a, 0xe5, 0x4e, 0x4a, 0xe5, 0x4d, 0x4a, 0xe5, 0x4d,
+  0x4a, 0xe5, 0x4d, 0x4a, 0xe5, 0x4d, 0x4a, 0xe5, 0x4d, 0x4a, 0xe5, 0x4d,
+  0x4b, 0xe5, 0x4d, 0x4a, 0xe2, 0x4c, 0x4a, 0xe2, 0x4c, 0x4a, 0xe2, 0x4c,
+  0x4a, 0xe2, 0x4c, 0x4a, 0xe2, 0x4c, 0x49, 0xe2, 0x4c, 0x49, 0xe2, 0x4c,
+  0x49, 0xe2, 0x4c, 0x4b, 0xe5, 0x4e, 0x4a, 0xe5, 0x4d, 0x4a, 0xe5, 0x4d,
+  0x4a, 0xe5, 0x4d, 0x4a, 0xe5, 0x4d, 0x4a, 0xe5, 0x4d, 0x4a, 0xe5, 0x4d,
+  0x4b, 0xe5, 0x4d, 0x49, 0xe2, 0x4c, 0x49, 0xe2, 0x4c, 0x4a, 0xe2, 0x4c,
+  0x4a, 0xe2, 0x4c, 0x4b, 0xe5, 0x4d, 0x4a, 0xe5, 0x4d, 0x4a, 0xe5, 0x4d,
+  0x4a, 0xe5, 0x4d, 0x4c, 0xe5, 0x4b, 0x4d, 0xe4, 0x4c, 0x4c, 0xe1, 0x4f,
+  0x4e, 0xe0, 0x50, 0x50, 0xe1, 0x4d, 0x50, 0xe1, 0x4c, 0x4c, 0xe3, 0x4c,
+  0x49, 0xe2, 0x4c, 0x49, 0xe2, 0x4c, 0x50, 0xe9, 0x51, 0x52, 0xe6, 0x53,
+  0x4b, 0xb7, 0x49, 0x37, 0x66, 0x33, 0x3d, 0x48, 0x37, 0x3d, 0x3f, 0x36,
+  0x3e, 0x3b, 0x37, 0x3b, 0x3b, 0x36, 0x3c, 0x3a, 0x38, 0x3c, 0x3b, 0x38,
+  0x3e, 0x3d, 0x39, 0x40, 0x3d, 0x39, 0x42, 0x3e, 0x3a, 0x44, 0x40, 0x3b,
+  0x47, 0x43, 0x3f, 0x49, 0x45, 0x40, 0x4a, 0x49, 0x43, 0x4e, 0x4e, 0x48,
+  0x56, 0x59, 0x52, 0x67, 0x68, 0x62, 0x84, 0x84, 0x7e, 0x84, 0x84, 0x7e,
+  0xc4, 0xc2, 0xbc, 0xe3, 0xe1, 0xe0, 0xa3, 0x9f, 0x9c, 0x46, 0x42, 0x41,
+  0x2b, 0x29, 0x29, 0x1d, 0x1d, 0x1d, 0x14, 0x18, 0x17, 0x0f, 0x13, 0x13,
+  0x0b, 0x0f, 0x0d, 0x09, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a,
+  0x09, 0x07, 0x07, 0x06, 0x04, 0x04, 0x02, 0x03, 0x01, 0x02, 0x03, 0x01,
+  0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x03, 0x01, 0x01, 0x06, 0x03, 0x01,
+  0x07, 0x04, 0x02, 0x07, 0x08, 0x05, 0x09, 0x0a, 0x09, 0x0a, 0x0b, 0x0b,
+  0x0b, 0x0c, 0x0b, 0x0c, 0x0e, 0x0e, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18,
+  0x22, 0x23, 0x23, 0x41, 0x41, 0x40, 0xaa, 0xaa, 0xa6, 0xe9, 0xed, 0xe4,
+  0xb5, 0xd6, 0xb2, 0x69, 0xb9, 0x6a, 0x7a, 0xeb, 0x7d, 0x71, 0xee, 0x72,
+  0x6b, 0xee, 0x69, 0x65, 0xf0, 0x65, 0x5e, 0xee, 0x5f, 0x5d, 0xf0, 0x61,
+  0x57, 0xeb, 0x5d, 0x58, 0xeb, 0x5d, 0x58, 0xec, 0x5c, 0x59, 0xee, 0x58,
+  0x58, 0xee, 0x57, 0x58, 0xee, 0x56, 0x59, 0xee, 0x56, 0x59, 0xee, 0x57,
+  0x56, 0xec, 0x5a, 0x56, 0xec, 0x5a, 0x56, 0xee, 0x58, 0x56, 0xee, 0x57,
+  0x56, 0xee, 0x57, 0x56, 0xee, 0x57, 0x56, 0xee, 0x57, 0x56, 0xee, 0x57,
+  0x56, 0xee, 0x57, 0x56, 0xee, 0x57, 0x55, 0xec, 0x56, 0x55, 0xec, 0x56,
+  0x55, 0xec, 0x56, 0x55, 0xec, 0x56, 0x55, 0xec, 0x56, 0x55, 0xec, 0x56,
+  0x55, 0xec, 0x56, 0x55, 0xec, 0x56, 0x56, 0xee, 0x57, 0x56, 0xee, 0x57,
+  0x56, 0xee, 0x57, 0x56, 0xee, 0x57, 0x56, 0xee, 0x57, 0x56, 0xee, 0x57,
+  0x56, 0xee, 0x57, 0x56, 0xee, 0x57, 0x55, 0xec, 0x56, 0x55, 0xec, 0x56,
+  0x55, 0xec, 0x56, 0x55, 0xec, 0x56, 0x56, 0xee, 0x57, 0x56, 0xee, 0x57,
+  0x56, 0xee, 0x57, 0x56, 0xee, 0x56, 0x56, 0xee, 0x54, 0x57, 0xee, 0x55,
+  0x56, 0xeb, 0x58, 0x58, 0xea, 0x59, 0x5b, 0xeb, 0x57, 0x5b, 0xeb, 0x56,
+  0x57, 0xec, 0x56, 0x54, 0xec, 0x56, 0x52, 0xeb, 0x55, 0x59, 0xf1, 0x5a,
+  0x5a, 0xec, 0x5a, 0x52, 0xbe, 0x50, 0x3d, 0x6c, 0x39, 0x41, 0x4e, 0x3c,
+  0x41, 0x44, 0x3b, 0x42, 0x40, 0x3c, 0x3f, 0x40, 0x3b, 0x41, 0x3f, 0x3d,
+  0x42, 0x41, 0x3d, 0x44, 0x42, 0x3f, 0x46, 0x42, 0x3f, 0x48, 0x43, 0x40,
+  0x49, 0x45, 0x41, 0x4c, 0x48, 0x44, 0x4f, 0x4a, 0x45, 0x50, 0x4f, 0x49,
+  0x54, 0x54, 0x4d, 0x5b, 0x5e, 0x57, 0x6b, 0x6d, 0x66, 0x88, 0x88, 0x82,
+  0x8a, 0x89, 0x83, 0xcd, 0xca, 0xc5, 0xef, 0xed, 0xec, 0xb7, 0xb1, 0xae,
+  0x4e, 0x4a, 0x49, 0x2c, 0x2a, 0x29, 0x1c, 0x1c, 0x1c, 0x14, 0x16, 0x16,
+  0x0f, 0x12, 0x12, 0x0d, 0x0f, 0x0e, 0x0b, 0x0c, 0x0c, 0x0a, 0x0a, 0x0a,
+  0x0a, 0x0a, 0x0a, 0x09, 0x07, 0x07, 0x06, 0x04, 0x04, 0x02, 0x03, 0x01,
+  0x02, 0x03, 0x01, 0x00, 0x02, 0x00, 0x03, 0x01, 0x01, 0x04, 0x02, 0x02,
+  0x06, 0x02, 0x01, 0x07, 0x04, 0x02, 0x07, 0x08, 0x06, 0x0a, 0x0a, 0x09,
+  0x0b, 0x0b, 0x0b, 0x0c, 0x0c, 0x0b, 0x0d, 0x0d, 0x0e, 0x12, 0x11, 0x12,
+  0x17, 0x16, 0x17, 0x24, 0x24, 0x24, 0x4b, 0x4a, 0x49, 0xbc, 0xbc, 0xb7,
+  0xee, 0xf2, 0xea, 0xbc, 0xdc, 0xb6, 0x70, 0xc0, 0x70, 0x81, 0xef, 0x82,
+  0x78, 0xf7, 0x76, 0x72, 0xf8, 0x6f, 0x6c, 0xf9, 0x6a, 0x65, 0xf7, 0x64,
+  0x66, 0xf8, 0x67, 0x61, 0xf5, 0x63, 0x62, 0xf7, 0x64, 0x62, 0xf7, 0x63,
+  0x62, 0xf8, 0x5f, 0x61, 0xf8, 0x5e, 0x61, 0xf8, 0x5d, 0x61, 0xf8, 0x5d,
+  0x61, 0xf8, 0x5f, 0x5f, 0xf7, 0x61, 0x5f, 0xf7, 0x61, 0x5e, 0xf8, 0x5f,
+  0x5e, 0xf8, 0x5e, 0x5e, 0xf8, 0x5e, 0x5e, 0xf8, 0x5e, 0x5e, 0xf8, 0x5e,
+  0x5e, 0xf8, 0x5e, 0x5e, 0xf8, 0x5e, 0x5f, 0xf8, 0x5e, 0x5e, 0xf7, 0x5e,
+  0x5e, 0xf7, 0x5e, 0x5e, 0xf7, 0x5e, 0x5e, 0xf7, 0x5e, 0x5e, 0xf7, 0x5e,
+  0x5e, 0xf7, 0x5e, 0x5e, 0xf7, 0x5e, 0x5e, 0xf7, 0x5e, 0x5f, 0xf8, 0x5e,
+  0x5e, 0xf8, 0x5e, 0x5e, 0xf8, 0x5e, 0x5e, 0xf8, 0x5e, 0x5e, 0xf8, 0x5e,
+  0x5e, 0xf8, 0x5e, 0x5e, 0xf8, 0x5e, 0x5f, 0xf8, 0x5e, 0x5e, 0xf7, 0x5e,
+  0x5e, 0xf7, 0x5e, 0x5e, 0xf7, 0x5e, 0x5e, 0xf7, 0x5e, 0x5f, 0xf8, 0x5e,
+  0x5f, 0xf8, 0x5f, 0x5f, 0xf8, 0x5f, 0x5f, 0xf8, 0x5f, 0x5d, 0xf8, 0x5b,
+  0x5e, 0xf8, 0x5c, 0x5d, 0xf7, 0x5f, 0x5f, 0xf7, 0x60, 0x62, 0xf7, 0x5f,
+  0x62, 0xf7, 0x5e, 0x5f, 0xf8, 0x5e, 0x5c, 0xf7, 0x5e, 0x59, 0xf6, 0x5b,
+  0x5f, 0xf9, 0x5f, 0x60, 0xf3, 0x5f, 0x56, 0xc4, 0x54, 0x40, 0x6f, 0x3c,
+  0x42, 0x4f, 0x3e, 0x42, 0x45, 0x3c, 0x42, 0x42, 0x3d, 0x41, 0x41, 0x3d,
+  0x42, 0x41, 0x3e, 0x44, 0x42, 0x3f, 0x47, 0x44, 0x41, 0x48, 0x45, 0x41,
+  0x49, 0x44, 0x42, 0x4b, 0x46, 0x43, 0x4d, 0x4a, 0x45, 0x50, 0x4c, 0x47,
+  0x51, 0x50, 0x4b, 0x55, 0x55, 0x4e, 0x5c, 0x5f, 0x58, 0x6b, 0x6d, 0x67,
+  0x89, 0x89, 0x82, 0x8d, 0x8b, 0x86, 0xce, 0xcb, 0xc6, 0xf2, 0xf1, 0xef,
+  0xc6, 0xc1, 0xbe, 0x58, 0x53, 0x52, 0x2d, 0x2b, 0x2a, 0x1c, 0x1a, 0x1a,
+  0x13, 0x14, 0x15, 0x0f, 0x11, 0x11, 0x0e, 0x10, 0x0f, 0x0d, 0x0f, 0x0f,
+  0x0a, 0x0a, 0x0a, 0x0a, 0x09, 0x09, 0x09, 0x07, 0x07, 0x06, 0x03, 0x04,
+  0x02, 0x02, 0x01, 0x02, 0x03, 0x01, 0x00, 0x01, 0x00, 0x03, 0x01, 0x01,
+  0x04, 0x02, 0x02, 0x05, 0x03, 0x01, 0x07, 0x04, 0x03, 0x07, 0x08, 0x06,
+  0x0a, 0x0a, 0x09, 0x0b, 0x0b, 0x0b, 0x0c, 0x0c, 0x0b, 0x0e, 0x0d, 0x0e,
+  0x11, 0x10, 0x11, 0x17, 0x16, 0x17, 0x24, 0x23, 0x23, 0x52, 0x50, 0x4f,
+  0xce, 0xce, 0xc7, 0xf1, 0xf5, 0xee, 0xbc, 0xdb, 0xb5, 0x75, 0xc4, 0x72,
+  0x85, 0xf2, 0x85, 0x7d, 0xfc, 0x79, 0x78, 0xfe, 0x72, 0x72, 0xff, 0x6d,
+  0x6c, 0xfe, 0x68, 0x6c, 0xff, 0x6b, 0x69, 0xfe, 0x68, 0x6a, 0xff, 0x68,
+  0x6a, 0xff, 0x68, 0x69, 0xff, 0x64, 0x69, 0xff, 0x63, 0x69, 0xff, 0x62,
+  0x68, 0xff, 0x62, 0x68, 0xff, 0x63, 0x66, 0xff, 0x66, 0x66, 0xff, 0x66,
+  0x66, 0xff, 0x64, 0x66, 0xff, 0x63, 0x66, 0xff, 0x63, 0x66, 0xff, 0x63,
+  0x66, 0xff, 0x63, 0x66, 0xff, 0x63, 0x66, 0xff, 0x63, 0x66, 0xff, 0x63,
+  0x65, 0xff, 0x63, 0x65, 0xff, 0x63, 0x65, 0xff, 0x63, 0x65, 0xff, 0x63,
+  0x65, 0xff, 0x63, 0x65, 0xff, 0x63, 0x65, 0xff, 0x63, 0x65, 0xff, 0x63,
+  0x66, 0xff, 0x63, 0x66, 0xff, 0x63, 0x66, 0xff, 0x63, 0x66, 0xff, 0x63,
+  0x66, 0xff, 0x63, 0x66, 0xff, 0x63, 0x66, 0xff, 0x63, 0x66, 0xff, 0x63,
+  0x65, 0xff, 0x63, 0x65, 0xff, 0x63, 0x65, 0xff, 0x63, 0x66, 0xff, 0x63,
+  0x66, 0xff, 0x63, 0x67, 0xff, 0x64, 0x67, 0xff, 0x64, 0x66, 0xff, 0x64,
+  0x63, 0xff, 0x60, 0x63, 0xff, 0x61, 0x63, 0xff, 0x64, 0x65, 0xff, 0x65,
+  0x68, 0xff, 0x64, 0x67, 0xff, 0x62, 0x64, 0xff, 0x63, 0x62, 0xff, 0x63,
+  0x5e, 0xfe, 0x60, 0x62, 0xff, 0x63, 0x63, 0xf8, 0x63, 0x58, 0xc7, 0x56,
+  0x3f, 0x6f, 0x3c, 0x41, 0x4d, 0x3d, 0x41, 0x45, 0x3b, 0x41, 0x41, 0x3c,
+  0x40, 0x40, 0x3c, 0x42, 0x41, 0x3e, 0x43, 0x42, 0x3f, 0x46, 0x44, 0x41,
+  0x47, 0x44, 0x41, 0x48, 0x43, 0x42, 0x4a, 0x45, 0x43, 0x4c, 0x49, 0x45,
+  0x4f, 0x4b, 0x47, 0x4f, 0x4f, 0x4b, 0x53, 0x54, 0x4d, 0x5a, 0x5c, 0x56,
+  0x68, 0x6a, 0x64, 0x85, 0x86, 0x7f, 0x8c, 0x89, 0x84, 0xcc, 0xc9, 0xc4,
+  0xf4, 0xf3, 0xf1, 0xd3, 0xcd, 0xca, 0x5f, 0x5a, 0x59, 0x2d, 0x2b, 0x2a,
+  0x1c, 0x1b, 0x1a, 0x14, 0x15, 0x15, 0x10, 0x11, 0x11, 0x0e, 0x0f, 0x0f,
+  0x0e, 0x0f, 0x0f, 0x0a, 0x0a, 0x0a, 0x0a, 0x09, 0x09, 0x09, 0x07, 0x07,
+  0x06, 0x03, 0x04, 0x02, 0x02, 0x01, 0x02, 0x03, 0x01, 0x00, 0x01, 0x00,
+  0x03, 0x00, 0x00, 0x04, 0x01, 0x02, 0x04, 0x03, 0x01, 0x06, 0x06, 0x03,
+  0x07, 0x07, 0x05, 0x09, 0x0a, 0x09, 0x0a, 0x0a, 0x0a, 0x0b, 0x0c, 0x0b,
+  0x0f, 0x0d, 0x0e, 0x11, 0x10, 0x11, 0x18, 0x15, 0x16, 0x22, 0x20, 0x1f,
+  0x53, 0x50, 0x4d, 0xd6, 0xd5, 0xce, 0xf2, 0xf5, 0xed, 0xb5, 0xd3, 0xad,
+  0x75, 0xc3, 0x70, 0x85, 0xf2, 0x82, 0x7e, 0xfc, 0x77, 0x78, 0xfe, 0x71,
+  0x73, 0xff, 0x6d, 0x6e, 0xfe, 0x68, 0x6e, 0xff, 0x6c, 0x6a, 0xfe, 0x68,
+  0x6b, 0xff, 0x68, 0x6a, 0xff, 0x67, 0x6b, 0xff, 0x65, 0x6b, 0xff, 0x62,
+  0x6b, 0xff, 0x61, 0x69, 0xff, 0x61, 0x69, 0xff, 0x62, 0x67, 0xff, 0x65,
+  0x67, 0xff, 0x66, 0x68, 0xff, 0x64, 0x68, 0xff, 0x64, 0x68, 0xff, 0x64,
+  0x68, 0xff, 0x64, 0x68, 0xff, 0x64, 0x68, 0xff, 0x64, 0x68, 0xff, 0x64,
+  0x68, 0xff, 0x64, 0x67, 0xff, 0x63, 0x67, 0xff, 0x63, 0x67, 0xff, 0x63,
+  0x67, 0xff, 0x63, 0x67, 0xff, 0x63, 0x67, 0xff, 0x63, 0x67, 0xff, 0x63,
+  0x67, 0xff, 0x63, 0x68, 0xff, 0x64, 0x68, 0xff, 0x64, 0x68, 0xff, 0x64,
+  0x68, 0xff, 0x64, 0x68, 0xff, 0x64, 0x68, 0xff, 0x64, 0x68, 0xff, 0x64,
+  0x68, 0xff, 0x64, 0x67, 0xff, 0x63, 0x67, 0xff, 0x63, 0x67, 0xff, 0x63,
+  0x68, 0xff, 0x64, 0x68, 0xff, 0x64, 0x69, 0xff, 0x64, 0x69, 0xff, 0x64,
+  0x68, 0xff, 0x63, 0x65, 0xff, 0x60, 0x65, 0xff, 0x61, 0x64, 0xff, 0x64,
+  0x65, 0xff, 0x65, 0x67, 0xff, 0x63, 0x66, 0xff, 0x62, 0x63, 0xff, 0x63,
+  0x61, 0xff, 0x62, 0x5d, 0xfe, 0x60, 0x62, 0xff, 0x63, 0x62, 0xf8, 0x63,
+  0x57, 0xc6, 0x55, 0x3c, 0x6c, 0x39, 0x3e, 0x4a, 0x3a, 0x3d, 0x42, 0x38,
+  0x3e, 0x3f, 0x3a, 0x3d, 0x3d, 0x3a, 0x3f, 0x3e, 0x3b, 0x40, 0x3f, 0x3c,
+  0x43, 0x41, 0x3d, 0x44, 0x41, 0x3d, 0x45, 0x40, 0x3e, 0x47, 0x42, 0x40,
+  0x48, 0x46, 0x42, 0x4b, 0x48, 0x44, 0x4b, 0x4d, 0x47, 0x4f, 0x51, 0x4b,
+  0x56, 0x58, 0x52, 0x63, 0x65, 0x5e, 0x80, 0x80, 0x79, 0x88, 0x85, 0x7f,
+  0xc9, 0xc6, 0xbf, 0xf4, 0xf3, 0xf1, 0xd5, 0xcf, 0xcd, 0x5f, 0x5b, 0x59,
+  0x2d, 0x2b, 0x2a, 0x1e, 0x1d, 0x1c, 0x16, 0x17, 0x17, 0x10, 0x12, 0x12,
+  0x0d, 0x0e, 0x0e, 0x0c, 0x0d, 0x0d, 0x0a, 0x0a, 0x0a, 0x0a, 0x09, 0x09,
+  0x09, 0x07, 0x07, 0x06, 0x04, 0x04, 0x02, 0x03, 0x01, 0x01, 0x02, 0x00,
+  0x00, 0x02, 0x00, 0x03, 0x00, 0x00, 0x04, 0x01, 0x02, 0x03, 0x04, 0x02,
+  0x05, 0x07, 0x04, 0x07, 0x07, 0x05, 0x09, 0x09, 0x08, 0x09, 0x0a, 0x09,
+  0x0b, 0x0c, 0x0b, 0x0f, 0x0e, 0x0e, 0x12, 0x0f, 0x10, 0x19, 0x15, 0x16,
+  0x20, 0x1d, 0x1c, 0x55, 0x50, 0x4c, 0xdd, 0xda, 0xd2, 0xf2, 0xf4, 0xeb,
+  0xaf, 0xcb, 0xa5, 0x74, 0xc2, 0x6e, 0x84, 0xf2, 0x80, 0x7e, 0xfb, 0x76,
+  0x78, 0xfe, 0x71, 0x74, 0xff, 0x6c, 0x6f, 0xfe, 0x68, 0x6f, 0xff, 0x6b,
+  0x6b, 0xfe, 0x68, 0x6b, 0xfe, 0x68, 0x6b, 0xfe, 0x66, 0x6c, 0xff, 0x64,
+  0x6c, 0xff, 0x62, 0x6b, 0xff, 0x61, 0x69, 0xff, 0x60, 0x69, 0xff, 0x61,
+  0x67, 0xfe, 0x64, 0x67, 0xfe, 0x65, 0x6a, 0xfe, 0x63, 0x6a, 0xff, 0x63,
+  0x6a, 0xff, 0x63, 0x6a, 0xff, 0x63, 0x6a, 0xff, 0x63, 0x6a, 0xff, 0x63,
+  0x6a, 0xff, 0x63, 0x6a, 0xff, 0x63, 0x68, 0xff, 0x62, 0x68, 0xff, 0x62,
+  0x68, 0xff, 0x62, 0x68, 0xff, 0x62, 0x68, 0xff, 0x62, 0x68, 0xff, 0x62,
+  0x68, 0xff, 0x62, 0x68, 0xff, 0x62, 0x6a, 0xff, 0x63, 0x6a, 0xff, 0x63,
+  0x6a, 0xff, 0x63, 0x6a, 0xff, 0x63, 0x6a, 0xff, 0x63, 0x6a, 0xff, 0x63,
+  0x6a, 0xff, 0x63, 0x6a, 0xff, 0x63, 0x68, 0xff, 0x62, 0x68, 0xff, 0x62,
+  0x68, 0xff, 0x62, 0x6a, 0xff, 0x63, 0x6a, 0xff, 0x63, 0x6a, 0xff, 0x63,
+  0x6a, 0xff, 0x63, 0x69, 0xff, 0x62, 0x66, 0xff, 0x60, 0x65, 0xff, 0x60,
+  0x64, 0xfe, 0x63, 0x65, 0xfe, 0x64, 0x67, 0xff, 0x62, 0x66, 0xff, 0x61,
+  0x63, 0xff, 0x62, 0x61, 0xff, 0x62, 0x5e, 0xff, 0x60, 0x62, 0xff, 0x63,
+  0x61, 0xf8, 0x63, 0x55, 0xc6, 0x54, 0x39, 0x6a, 0x36, 0x3b, 0x46, 0x37,
+  0x3a, 0x3f, 0x36, 0x3c, 0x3c, 0x37, 0x3a, 0x3b, 0x37, 0x3c, 0x3c, 0x39,
+  0x3e, 0x3d, 0x3a, 0x40, 0x3e, 0x39, 0x41, 0x3e, 0x39, 0x42, 0x3d, 0x3a,
+  0x44, 0x3f, 0x3e, 0x45, 0x43, 0x40, 0x47, 0x45, 0x42, 0x48, 0x4a, 0x43,
+  0x4b, 0x4e, 0x47, 0x52, 0x54, 0x4e, 0x5f, 0x60, 0x59, 0x7a, 0x7a, 0x74,
+  0x83, 0x7f, 0x7a, 0xc5, 0xc2, 0xba, 0xf4, 0xf2, 0xf0, 0xd7, 0xd0, 0xcf,
+  0x60, 0x5b, 0x5a, 0x2c, 0x2a, 0x2a, 0x1f, 0x1d, 0x1d, 0x18, 0x19, 0x19,
+  0x10, 0x12, 0x12, 0x0c, 0x0d, 0x0d, 0x0b, 0x0c, 0x0c, 0x09, 0x0a, 0x0a,
+  0x0a, 0x09, 0x09, 0x09, 0x07, 0x07, 0x06, 0x04, 0x04, 0x02, 0x03, 0x01,
+  0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x02, 0x01, 0x01, 0x03, 0x01, 0x02,
+  0x03, 0x04, 0x01, 0x05, 0x07, 0x03, 0x06, 0x07, 0x05, 0x09, 0x09, 0x08,
+  0x09, 0x0a, 0x09, 0x0b, 0x0c, 0x0b, 0x0f, 0x0d, 0x0e, 0x11, 0x0f, 0x10,
+  0x18, 0x15, 0x16, 0x1e, 0x1b, 0x1b, 0x54, 0x4e, 0x4b, 0xdd, 0xd9, 0xd0,
+  0xf0, 0xef, 0xe5, 0xaa, 0xc5, 0x9e, 0x72, 0xc3, 0x6c, 0x81, 0xf2, 0x7c,
+  0x7b, 0xf9, 0x73, 0x76, 0xfd, 0x6e, 0x72, 0xfe, 0x69, 0x6c, 0xfd, 0x65,
+  0x6c, 0xfe, 0x69, 0x68, 0xfc, 0x66, 0x69, 0xfb, 0x65, 0x68, 0xfc, 0x63,
+  0x69, 0xfc, 0x60, 0x69, 0xfd, 0x5f, 0x69, 0xfd, 0x5e, 0x67, 0xfe, 0x5d,
+  0x67, 0xfd, 0x5f, 0x65, 0xfc, 0x62, 0x65, 0xfc, 0x63, 0x66, 0xfc, 0x60,
+  0x67, 0xfc, 0x60, 0x67, 0xfc, 0x60, 0x67, 0xfc, 0x60, 0x67, 0xfc, 0x60,
+  0x67, 0xfc, 0x60, 0x67, 0xfc, 0x60, 0x67, 0xfc, 0x60, 0x65, 0xfc, 0x5f,
+  0x65, 0xfc, 0x5f, 0x65, 0xfc, 0x5f, 0x65, 0xfc, 0x5f, 0x65, 0xfc, 0x5f,
+  0x65, 0xfc, 0x5f, 0x65, 0xfc, 0x5f, 0x65, 0xfc, 0x5f, 0x67, 0xfc, 0x60,
+  0x67, 0xfc, 0x60, 0x67, 0xfc, 0x60, 0x67, 0xfc, 0x60, 0x67, 0xfc, 0x60,
+  0x67, 0xfc, 0x60, 0x67, 0xfc, 0x60, 0x67, 0xfc, 0x60, 0x65, 0xfc, 0x5f,
+  0x65, 0xfc, 0x5f, 0x65, 0xfc, 0x5f, 0x67, 0xfc, 0x60, 0x67, 0xfc, 0x60,
+  0x67, 0xfc, 0x60, 0x67, 0xfc, 0x60, 0x66, 0xfc, 0x5f, 0x64, 0xfd, 0x5d,
+  0x63, 0xfd, 0x5e, 0x62, 0xfc, 0x61, 0x63, 0xfb, 0x62, 0x64, 0xfc, 0x5f,
+  0x63, 0xfc, 0x5e, 0x60, 0xfc, 0x5f, 0x5f, 0xfd, 0x5f, 0x5c, 0xfe, 0x5f,
+  0x60, 0xfd, 0x61, 0x60, 0xf8, 0x62, 0x55, 0xc6, 0x54, 0x38, 0x69, 0x35,
+  0x38, 0x44, 0x35, 0x38, 0x3e, 0x35, 0x3a, 0x3b, 0x36, 0x38, 0x39, 0x35,
+  0x3a, 0x3a, 0x36, 0x3b, 0x3b, 0x37, 0x3d, 0x3c, 0x37, 0x3e, 0x3c, 0x37,
+  0x3f, 0x3b, 0x38, 0x42, 0x3d, 0x3b, 0x43, 0x40, 0x3d, 0x45, 0x42, 0x3f,
+  0x45, 0x47, 0x42, 0x48, 0x4b, 0x46, 0x4f, 0x51, 0x4c, 0x5b, 0x5c, 0x56,
+  0x77, 0x76, 0x6f, 0x7f, 0x7c, 0x75, 0xbf, 0xbc, 0xb4, 0xf3, 0xef, 0xec,
+  0xd5, 0xce, 0xcc, 0x5e, 0x59, 0x57, 0x2a, 0x28, 0x27, 0x1e, 0x1d, 0x1c,
+  0x18, 0x18, 0x19, 0x10, 0x12, 0x12, 0x0c, 0x0e, 0x0e, 0x0b, 0x0c, 0x0d,
+  0x0a, 0x0a, 0x0a, 0x0a, 0x09, 0x0a, 0x09, 0x07, 0x07, 0x06, 0x03, 0x03,
+  0x02, 0x02, 0x01, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x02, 0x02, 0x02,
+  0x02, 0x02, 0x02, 0x03, 0x04, 0x01, 0x04, 0x06, 0x03, 0x07, 0x08, 0x06,
+  0x09, 0x0a, 0x08, 0x09, 0x0a, 0x0a, 0x0c, 0x0c, 0x0c, 0x0e, 0x0c, 0x0d,
+  0x11, 0x0e, 0x0f, 0x18, 0x14, 0x15, 0x1d, 0x1a, 0x19, 0x52, 0x4c, 0x49,
+  0xdc, 0xd6, 0xcd, 0xee, 0xe9, 0xdd, 0xa5, 0xbf, 0x97, 0x70, 0xc2, 0x6a,
+  0x7d, 0xf2, 0x78, 0x77, 0xf8, 0x6f, 0x73, 0xfc, 0x6b, 0x6e, 0xfc, 0x66,
+  0x68, 0xfa, 0x63, 0x68, 0xfd, 0x65, 0x65, 0xfa, 0x63, 0x65, 0xf7, 0x62,
+  0x65, 0xf8, 0x60, 0x64, 0xf9, 0x5c, 0x65, 0xfb, 0x5a, 0x65, 0xfb, 0x5a,
+  0x64, 0xfc, 0x5b, 0x64, 0xfb, 0x5b, 0x62, 0xf8, 0x5e, 0x62, 0xf8, 0x5f,
+  0x61, 0xf8, 0x5c, 0x62, 0xf9, 0x5b, 0x62, 0xf9, 0x5b, 0x62, 0xf9, 0x5b,
+  0x62, 0xf9, 0x5b, 0x62, 0xf9, 0x5b, 0x62, 0xf9, 0x5b, 0x62, 0xf9, 0x5b,
+  0x62, 0xf9, 0x5b, 0x62, 0xf9, 0x5b, 0x62, 0xf9, 0x5b, 0x62, 0xf9, 0x5b,
+  0x62, 0xf9, 0x5b, 0x62, 0xf9, 0x5b, 0x62, 0xf9, 0x5b, 0x62, 0xf9, 0x5b,
+  0x62, 0xf9, 0x5b, 0x62, 0xf9, 0x5b, 0x62, 0xf9, 0x5b, 0x62, 0xf9, 0x5b,
+  0x62, 0xf9, 0x5b, 0x62, 0xf9, 0x5b, 0x62, 0xf9, 0x5b, 0x62, 0xf9, 0x5b,
+  0x62, 0xf9, 0x5b, 0x62, 0xf9, 0x5b, 0x62, 0xf9, 0x5b, 0x62, 0xf9, 0x5b,
+  0x62, 0xf9, 0x5b, 0x62, 0xf9, 0x5b, 0x62, 0xf9, 0x5b, 0x62, 0xf9, 0x5b,
+  0x60, 0xfb, 0x59, 0x60, 0xfb, 0x5a, 0x5f, 0xf8, 0x5d, 0x61, 0xf8, 0x5e,
+  0x60, 0xfa, 0x5b, 0x60, 0xf9, 0x5a, 0x5d, 0xfa, 0x5b, 0x5b, 0xfb, 0x5b,
+  0x5b, 0xfc, 0x5c, 0x5e, 0xfc, 0x5f, 0x5f, 0xf7, 0x60, 0x54, 0xc6, 0x54,
+  0x37, 0x67, 0x35, 0x36, 0x42, 0x33, 0x35, 0x3c, 0x33, 0x38, 0x39, 0x34,
+  0x36, 0x37, 0x33, 0x38, 0x38, 0x34, 0x39, 0x39, 0x35, 0x3b, 0x3a, 0x35,
+  0x3c, 0x3a, 0x35, 0x3d, 0x39, 0x36, 0x40, 0x3b, 0x39, 0x41, 0x3e, 0x3b,
+  0x42, 0x40, 0x3c, 0x43, 0x43, 0x40, 0x46, 0x48, 0x44, 0x4d, 0x4f, 0x4a,
+  0x59, 0x59, 0x53, 0x73, 0x72, 0x6a, 0x7b, 0x78, 0x70, 0xba, 0xb7, 0xaf,
+  0xf1, 0xec, 0xe7, 0xd4, 0xcc, 0xc7, 0x5d, 0x56, 0x54, 0x29, 0x25, 0x24,
+  0x1c, 0x1b, 0x1b, 0x17, 0x17, 0x17, 0x10, 0x11, 0x12, 0x0d, 0x0f, 0x0e,
+  0x0c, 0x0e, 0x0e, 0x0a, 0x0a, 0x0b, 0x09, 0x09, 0x0a, 0x09, 0x07, 0x07,
+  0x06, 0x03, 0x03, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x02, 0x00,
+  0x01, 0x02, 0x02, 0x01, 0x02, 0x02, 0x03, 0x04, 0x02, 0x04, 0x05, 0x03,
+  0x07, 0x08, 0x06, 0x09, 0x09, 0x07, 0x09, 0x09, 0x0a, 0x0c, 0x0b, 0x0c,
+  0x0d, 0x0b, 0x0c, 0x11, 0x0e, 0x0f, 0x17, 0x13, 0x14, 0x1c, 0x19, 0x17,
+  0x51, 0x4b, 0x46, 0xd7, 0xcf, 0xc5, 0xe7, 0xe1, 0xd2, 0x9d, 0xb8, 0x8e,
+  0x6c, 0xc2, 0x66, 0x76, 0xf1, 0x73, 0x71, 0xf5, 0x6a, 0x6e, 0xfa, 0x67,
+  0x69, 0xfa, 0x61, 0x64, 0xf8, 0x5e, 0x62, 0xfb, 0x61, 0x60, 0xf7, 0x5f,
+  0x61, 0xf4, 0x5e, 0x61, 0xf5, 0x5c, 0x5f, 0xf7, 0x58, 0x60, 0xf8, 0x57,
+  0x60, 0xf9, 0x57, 0x5f, 0xfa, 0x57, 0x5f, 0xf9, 0x58, 0x5d, 0xf6, 0x5a,
+  0x5d, 0xf5, 0x5b, 0x5c, 0xf5, 0x59, 0x5d, 0xf6, 0x57, 0x5d, 0xf6, 0x57,
+  0x5d, 0xf6, 0x57, 0x5d, 0xf6, 0x57, 0x5d, 0xf6, 0x57, 0x5d, 0xf6, 0x57,
+  0x5d, 0xf6, 0x57, 0x5d, 0xf6, 0x57, 0x5d, 0xf6, 0x57, 0x5d, 0xf6, 0x57,
+  0x5d, 0xf6, 0x57, 0x5d, 0xf6, 0x57, 0x5d, 0xf6, 0x57, 0x5d, 0xf6, 0x57,
+  0x5d, 0xf6, 0x57, 0x5d, 0xf6, 0x57, 0x5d, 0xf6, 0x57, 0x5d, 0xf6, 0x57,
+  0x5d, 0xf6, 0x57, 0x5d, 0xf6, 0x57, 0x5d, 0xf6, 0x57, 0x5d, 0xf6, 0x57,
+  0x5d, 0xf6, 0x57, 0x5d, 0xf6, 0x57, 0x5d, 0xf6, 0x57, 0x5d, 0xf6, 0x57,
+  0x5c, 0xf6, 0x57, 0x5c, 0xf6, 0x57, 0x5c, 0xf6, 0x57, 0x5c, 0xf6, 0x57,
+  0x5c, 0xf6, 0x57, 0x5c, 0xf9, 0x56, 0x5c, 0xf8, 0x57, 0x5c, 0xf5, 0x5a,
+  0x5e, 0xf5, 0x5a, 0x5d, 0xf6, 0x57, 0x5d, 0xf6, 0x56, 0x5a, 0xf7, 0x57,
+  0x58, 0xf9, 0x57, 0x58, 0xfa, 0x58, 0x5a, 0xfa, 0x5b, 0x5d, 0xf7, 0x5e,
+  0x53, 0xc7, 0x54, 0x36, 0x67, 0x34, 0x33, 0x41, 0x32, 0x33, 0x3b, 0x32,
+  0x35, 0x38, 0x32, 0x35, 0x36, 0x32, 0x37, 0x36, 0x32, 0x38, 0x37, 0x33,
+  0x39, 0x38, 0x34, 0x3a, 0x38, 0x34, 0x3b, 0x37, 0x35, 0x3d, 0x39, 0x37,
+  0x3e, 0x3b, 0x39, 0x3f, 0x3d, 0x3a, 0x40, 0x40, 0x3e, 0x44, 0x45, 0x42,
+  0x4b, 0x4c, 0x47, 0x57, 0x56, 0x51, 0x6f, 0x6e, 0x67, 0x76, 0x73, 0x6b,
+  0xb1, 0xad, 0xa5, 0xeb, 0xe4, 0xdd, 0xcf, 0xc7, 0xc0, 0x5a, 0x54, 0x51,
+  0x26, 0x23, 0x22, 0x1b, 0x1a, 0x19, 0x17, 0x16, 0x16, 0x12, 0x12, 0x12,
+  0x0f, 0x10, 0x0f, 0x0e, 0x0f, 0x0f, 0x0b, 0x0a, 0x0c, 0x09, 0x09, 0x0a,
+  0x09, 0x07, 0x07, 0x06, 0x03, 0x03, 0x02, 0x01, 0x02, 0x01, 0x00, 0x01,
+  0x00, 0x02, 0x00, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x03, 0x03, 0x02,
+  0x04, 0x04, 0x03, 0x06, 0x07, 0x06, 0x08, 0x08, 0x08, 0x0a, 0x0a, 0x0a,
+  0x0b, 0x0a, 0x0c, 0x0c, 0x0a, 0x0c, 0x12, 0x0e, 0x10, 0x16, 0x12, 0x12,
+  0x1c, 0x18, 0x16, 0x50, 0x4a, 0x45, 0xcf, 0xc8, 0xbd, 0xe0, 0xdb, 0xcb,
+  0x98, 0xb5, 0x88, 0x69, 0xc2, 0x63, 0x70, 0xf1, 0x6e, 0x6c, 0xf4, 0x67,
+  0x69, 0xf9, 0x63, 0x65, 0xf9, 0x5f, 0x60, 0xf7, 0x5c, 0x5e, 0xf8, 0x5d,
+  0x5c, 0xf5, 0x5c, 0x5e, 0xf4, 0x5b, 0x5d, 0xf4, 0x5a, 0x5d, 0xf5, 0x56,
+  0x5c, 0xf5, 0x55, 0x5c, 0xf6, 0x55, 0x5b, 0xf7, 0x55, 0x5b, 0xf7, 0x55,
+  0x59, 0xf4, 0x58, 0x59, 0xf4, 0x58, 0x58, 0xf4, 0x56, 0x59, 0xf5, 0x56,
+  0x59, 0xf5, 0x56, 0x59, 0xf5, 0x56, 0x59, 0xf5, 0x56, 0x59, 0xf5, 0x56,
+  0x59, 0xf5, 0x56, 0x59, 0xf5, 0x56, 0x59, 0xf5, 0x56, 0x59, 0xf5, 0x56,
+  0x59, 0xf5, 0x56, 0x59, 0xf5, 0x56, 0x59, 0xf5, 0x56, 0x59, 0xf5, 0x56,
+  0x59, 0xf5, 0x56, 0x59, 0xf5, 0x56, 0x59, 0xf5, 0x56, 0x59, 0xf5, 0x56,
+  0x59, 0xf5, 0x56, 0x59, 0xf5, 0x56, 0x59, 0xf5, 0x56, 0x59, 0xf5, 0x56,
+  0x59, 0xf5, 0x56, 0x59, 0xf5, 0x56, 0x59, 0xf5, 0x56, 0x59, 0xf5, 0x56,
+  0x59, 0xf5, 0x56, 0x58, 0xf3, 0x55, 0x58, 0xf4, 0x55, 0x58, 0xf4, 0x55,
+  0x58, 0xf4, 0x55, 0x58, 0xf4, 0x55, 0x5a, 0xf7, 0x54, 0x5a, 0xf7, 0x55,
+  0x5a, 0xf4, 0x58, 0x5c, 0xf3, 0x58, 0x5b, 0xf5, 0x56, 0x5b, 0xf5, 0x55,
+  0x57, 0xf6, 0x55, 0x55, 0xf7, 0x55, 0x54, 0xf7, 0x55, 0x57, 0xf8, 0x57,
+  0x5b, 0xf7, 0x5b, 0x53, 0xc9, 0x53, 0x36, 0x67, 0x34, 0x33, 0x41, 0x31,
+  0x33, 0x3b, 0x31, 0x34, 0x37, 0x31, 0x33, 0x35, 0x31, 0x34, 0x35, 0x31,
+  0x37, 0x36, 0x32, 0x38, 0x37, 0x33, 0x39, 0x37, 0x34, 0x3a, 0x36, 0x35,
+  0x3c, 0x38, 0x37, 0x3c, 0x3a, 0x39, 0x3e, 0x3c, 0x3a, 0x3f, 0x3f, 0x3c,
+  0x43, 0x44, 0x41, 0x4a, 0x4b, 0x46, 0x56, 0x55, 0x50, 0x6d, 0x6c, 0x65,
+  0x73, 0x70, 0x68, 0xaa, 0xa5, 0x9c, 0xe4, 0xdc, 0xd4, 0xca, 0xc0, 0xbb,
+  0x59, 0x52, 0x4f, 0x25, 0x22, 0x21, 0x1b, 0x19, 0x18, 0x16, 0x16, 0x15,
+  0x13, 0x14, 0x14, 0x11, 0x11, 0x11, 0x0d, 0x0f, 0x0e, 0x0c, 0x0b, 0x0b,
+  0x0a, 0x0a, 0x09, 0x09, 0x07, 0x07, 0x06, 0x03, 0x03, 0x02, 0x02, 0x02,
+  0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01,
+  0x03, 0x02, 0x03, 0x04, 0x03, 0x04, 0x06, 0x06, 0x06, 0x08, 0x07, 0x08,
+  0x0a, 0x09, 0x0a, 0x0b, 0x09, 0x0c, 0x0c, 0x09, 0x0c, 0x13, 0x0e, 0x11,
+  0x14, 0x12, 0x10, 0x1b, 0x17, 0x15, 0x4f, 0x49, 0x43, 0xc7, 0xc0, 0xb4,
+  0xd8, 0xd4, 0xc2, 0x92, 0xb0, 0x81, 0x66, 0xc3, 0x61, 0x6a, 0xf0, 0x69,
+  0x67, 0xf4, 0x63, 0x64, 0xf9, 0x60, 0x60, 0xf8, 0x5c, 0x5c, 0xf5, 0x59,
+  0x5b, 0xf6, 0x5a, 0x59, 0xf3, 0x59, 0x5a, 0xf3, 0x59, 0x5a, 0xf2, 0x57,
+  0x5a, 0xf4, 0x54, 0x59, 0xf3, 0x53, 0x58, 0xf3, 0x53, 0x57, 0xf5, 0x52,
+  0x56, 0xf5, 0x53, 0x55, 0xf3, 0x55, 0x55, 0xf2, 0x56, 0x55, 0xf3, 0x54,
+  0x55, 0xf3, 0x54, 0x55, 0xf3, 0x54, 0x55, 0xf3, 0x54, 0x55, 0xf3, 0x54,
+  0x55, 0xf3, 0x54, 0x55, 0xf3, 0x54, 0x55, 0xf3, 0x54, 0x55, 0xf3, 0x54,
+  0x55, 0xf3, 0x54, 0x55, 0xf3, 0x54, 0x55, 0xf3, 0x54, 0x55, 0xf3, 0x54,
+  0x55, 0xf3, 0x54, 0x55, 0xf3, 0x54, 0x55, 0xf3, 0x54, 0x55, 0xf3, 0x54,
+  0x55, 0xf3, 0x54, 0x55, 0xf3, 0x54, 0x55, 0xf3, 0x54, 0x55, 0xf3, 0x54,
+  0x55, 0xf3, 0x54, 0x55, 0xf3, 0x54, 0x55, 0xf3, 0x54, 0x55, 0xf3, 0x54,
+  0x55, 0xf3, 0x54, 0x55, 0xf3, 0x54, 0x53, 0xf1, 0x53, 0x54, 0xf2, 0x53,
+  0x54, 0xf2, 0x53, 0x54, 0xf2, 0x53, 0x54, 0xf2, 0x53, 0x56, 0xf5, 0x52,
+  0x57, 0xf5, 0x53, 0x57, 0xf2, 0x56, 0x59, 0xf1, 0x56, 0x59, 0xf3, 0x54,
+  0x59, 0xf3, 0x53, 0x55, 0xf5, 0x53, 0x53, 0xf5, 0x53, 0x51, 0xf5, 0x52,
+  0x53, 0xf6, 0x54, 0x59, 0xf7, 0x59, 0x52, 0xc9, 0x52, 0x36, 0x67, 0x35,
+  0x32, 0x41, 0x31, 0x32, 0x3b, 0x30, 0x33, 0x36, 0x31, 0x33, 0x34, 0x31,
+  0x33, 0x34, 0x31, 0x36, 0x35, 0x32, 0x37, 0x36, 0x33, 0x38, 0x36, 0x34,
+  0x39, 0x36, 0x35, 0x3b, 0x38, 0x37, 0x3b, 0x39, 0x39, 0x3d, 0x3b, 0x3a,
+  0x3e, 0x3e, 0x3a, 0x42, 0x43, 0x40, 0x49, 0x4a, 0x45, 0x54, 0x54, 0x4f,
+  0x6b, 0x6b, 0x63, 0x70, 0x6d, 0x64, 0xa2, 0x9d, 0x93, 0xdc, 0xd2, 0xca,
+  0xc4, 0xb9, 0xb5, 0x57, 0x4f, 0x4d, 0x24, 0x20, 0x1f, 0x1b, 0x19, 0x18,
+  0x16, 0x16, 0x15, 0x15, 0x16, 0x15, 0x13, 0x13, 0x12, 0x0e, 0x0e, 0x0e,
+  0x0d, 0x0b, 0x0b, 0x0a, 0x0a, 0x09, 0x09, 0x07, 0x07, 0x06, 0x03, 0x03,
+  0x02, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01,
+  0x01, 0x01, 0x01, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x04, 0x05, 0x05,
+  0x06, 0x07, 0x08, 0x09, 0x09, 0x0a, 0x0a, 0x09, 0x0b, 0x0d, 0x0b, 0x0d,
+  0x12, 0x0e, 0x10, 0x12, 0x0f, 0x0f, 0x1a, 0x17, 0x14, 0x4d, 0x49, 0x41,
+  0xbc, 0xb8, 0xaa, 0xce, 0xcb, 0xb7, 0x89, 0xa9, 0x78, 0x61, 0xc1, 0x5c,
+  0x64, 0xed, 0x64, 0x61, 0xf1, 0x5f, 0x60, 0xf7, 0x5c, 0x5b, 0xf6, 0x58,
+  0x57, 0xf2, 0x55, 0x56, 0xf3, 0x56, 0x55, 0xf0, 0x55, 0x56, 0xef, 0x56,
+  0x55, 0xef, 0x54, 0x55, 0xf1, 0x51, 0x55, 0xf1, 0x50, 0x54, 0xf1, 0x50,
+  0x53, 0xf2, 0x4f, 0x52, 0xf2, 0x50, 0x51, 0xf0, 0x52, 0x51, 0xef, 0x52,
+  0x50, 0xf0, 0x50, 0x50, 0xf0, 0x50, 0x50, 0xf0, 0x50, 0x50, 0xf0, 0x50,
+  0x50, 0xf0, 0x50, 0x50, 0xf0, 0x50, 0x50, 0xf0, 0x50, 0x50, 0xf0, 0x50,
+  0x50, 0xf0, 0x50, 0x50, 0xf0, 0x50, 0x50, 0xf0, 0x50, 0x50, 0xf0, 0x50,
+  0x50, 0xf0, 0x50, 0x50, 0xf0, 0x50, 0x50, 0xf0, 0x50, 0x50, 0xf0, 0x50,
+  0x50, 0xf0, 0x50, 0x50, 0xf0, 0x50, 0x50, 0xf0, 0x50, 0x50, 0xf0, 0x50,
+  0x50, 0xf0, 0x50, 0x50, 0xf0, 0x50, 0x50, 0xf0, 0x50, 0x50, 0xf0, 0x50,
+  0x50, 0xf0, 0x50, 0x50, 0xf0, 0x50, 0x50, 0xf0, 0x50, 0x4f, 0xef, 0x50,
+  0x50, 0xf0, 0x50, 0x50, 0xf0, 0x50, 0x50, 0xf0, 0x50, 0x50, 0xf0, 0x50,
+  0x52, 0xf2, 0x4e, 0x52, 0xf1, 0x4f, 0x52, 0xee, 0x52, 0x55, 0xee, 0x52,
+  0x55, 0xf0, 0x50, 0x55, 0xf0, 0x4f, 0x51, 0xf1, 0x4f, 0x4f, 0xf1, 0x4f,
+  0x4d, 0xf1, 0x4e, 0x4f, 0xf2, 0x50, 0x55, 0xf5, 0x56, 0x50, 0xc8, 0x50,
+  0x33, 0x65, 0x33, 0x2f, 0x3f, 0x2f, 0x2f, 0x39, 0x2e, 0x30, 0x34, 0x2e,
+  0x30, 0x32, 0x2e, 0x31, 0x32, 0x30, 0x34, 0x33, 0x30, 0x35, 0x34, 0x31,
+  0x36, 0x34, 0x32, 0x37, 0x34, 0x33, 0x39, 0x35, 0x35, 0x39, 0x37, 0x36,
+  0x3a, 0x39, 0x37, 0x3a, 0x3b, 0x37, 0x3e, 0x40, 0x3d, 0x46, 0x47, 0x42,
+  0x51, 0x51, 0x4c, 0x68, 0x67, 0x5f, 0x6b, 0x67, 0x5f, 0x98, 0x93, 0x88,
+  0xd1, 0xc7, 0xbe, 0xbb, 0xb1, 0xac, 0x53, 0x4c, 0x49, 0x23, 0x1f, 0x1d,
+  0x1b, 0x19, 0x17, 0x16, 0x16, 0x15, 0x16, 0x16, 0x15, 0x13, 0x13, 0x12,
+  0x0d, 0x0d, 0x0c, 0x0c, 0x0b, 0x0c, 0x0b, 0x0a, 0x0a, 0x0a, 0x07, 0x07,
+  0x06, 0x03, 0x03, 0x02, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01,
+  0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x03, 0x03, 0x02, 0x02, 0x03,
+  0x03, 0x04, 0x04, 0x06, 0x07, 0x07, 0x0a, 0x09, 0x0a, 0x0b, 0x09, 0x0a,
+  0x0d, 0x0b, 0x0c, 0x11, 0x0e, 0x0f, 0x11, 0x0e, 0x0d, 0x19, 0x16, 0x13,
+  0x4b, 0x48, 0x41, 0xb6, 0xb2, 0xa4, 0xc6, 0xc4, 0xb0, 0x83, 0xa4, 0x74,
+  0x5e, 0xc0, 0x59, 0x5f, 0xec, 0x60, 0x5d, 0xf0, 0x5c, 0x5c, 0xf6, 0x59,
+  0x57, 0xf4, 0x55, 0x53, 0xf0, 0x53, 0x52, 0xf2, 0x53, 0x51, 0xef, 0x53,
+  0x52, 0xed, 0x53, 0x51, 0xed, 0x51, 0x52, 0xef, 0x4e, 0x52, 0xef, 0x4d,
+  0x51, 0xf0, 0x4d, 0x50, 0xf1, 0x4c, 0x4f, 0xef, 0x4d, 0x4e, 0xee, 0x4f,
+  0x4e, 0xed, 0x4f, 0x4d, 0xef, 0x4d, 0x4d, 0xee, 0x4d, 0x4d, 0xee, 0x4d,
+  0x4d, 0xee, 0x4d, 0x4d, 0xee, 0x4d, 0x4d, 0xee, 0x4d, 0x4d, 0xee, 0x4d,
+  0x4d, 0xee, 0x4d, 0x4d, 0xee, 0x4d, 0x4d, 0xee, 0x4d, 0x4d, 0xee, 0x4d,
+  0x4d, 0xee, 0x4d, 0x4d, 0xee, 0x4d, 0x4d, 0xee, 0x4d, 0x4d, 0xee, 0x4d,
+  0x4d, 0xee, 0x4d, 0x4d, 0xee, 0x4d, 0x4d, 0xee, 0x4d, 0x4d, 0xee, 0x4d,
+  0x4d, 0xee, 0x4d, 0x4d, 0xee, 0x4d, 0x4d, 0xee, 0x4d, 0x4d, 0xee, 0x4d,
+  0x4d, 0xee, 0x4d, 0x4d, 0xee, 0x4d, 0x4d, 0xee, 0x4d, 0x4d, 0xef, 0x4d,
+  0x4c, 0xee, 0x4d, 0x4d, 0xee, 0x4d, 0x4d, 0xee, 0x4d, 0x4d, 0xee, 0x4d,
+  0x4d, 0xee, 0x4d, 0x4f, 0xef, 0x4c, 0x4f, 0xee, 0x4c, 0x4f, 0xec, 0x4f,
+  0x51, 0xec, 0x4f, 0x53, 0xed, 0x4d, 0x52, 0xed, 0x4c, 0x4e, 0xef, 0x4c,
+  0x4c, 0xef, 0x4c, 0x4a, 0xee, 0x4d, 0x4b, 0xee, 0x4e, 0x53, 0xf4, 0x54,
+  0x4f, 0xc7, 0x4f, 0x32, 0x64, 0x31, 0x2d, 0x3e, 0x2e, 0x2e, 0x37, 0x2d,
+  0x2f, 0x32, 0x2d, 0x2f, 0x31, 0x2d, 0x30, 0x31, 0x2f, 0x32, 0x31, 0x2e,
+  0x33, 0x33, 0x2f, 0x34, 0x33, 0x30, 0x36, 0x32, 0x31, 0x38, 0x34, 0x34,
+  0x38, 0x35, 0x35, 0x39, 0x37, 0x36, 0x38, 0x3a, 0x36, 0x3c, 0x3e, 0x3b,
+  0x43, 0x45, 0x3f, 0x4f, 0x4f, 0x49, 0x66, 0x65, 0x5c, 0x68, 0x64, 0x5a,
+  0x92, 0x8c, 0x81, 0xc8, 0xbe, 0xb6, 0xb5, 0xaa, 0xa6, 0x52, 0x4a, 0x48,
+  0x22, 0x1e, 0x1c, 0x1c, 0x19, 0x17, 0x17, 0x16, 0x14, 0x16, 0x16, 0x15,
+  0x12, 0x12, 0x12, 0x0c, 0x0c, 0x0c, 0x0d, 0x0b, 0x0b, 0x0b, 0x0a, 0x0a,
+  0x0a, 0x07, 0x08, 0x06, 0x02, 0x04, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00,
+  0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x01, 0x03, 0x03,
+  0x00, 0x02, 0x02, 0x01, 0x03, 0x03, 0x04, 0x07, 0x07, 0x09, 0x09, 0x09,
+  0x0a, 0x09, 0x0a, 0x0e, 0x0c, 0x0d, 0x0f, 0x0d, 0x0f, 0x0e, 0x0c, 0x0b,
+  0x17, 0x15, 0x12, 0x49, 0x47, 0x3f, 0xac, 0xaa, 0x9b, 0xbb, 0xbb, 0xa5,
+  0x7a, 0x9e, 0x6c, 0x59, 0xbe, 0x55, 0x59, 0xe9, 0x5b, 0x57, 0xee, 0x57,
+  0x57, 0xf4, 0x55, 0x52, 0xf2, 0x51, 0x4e, 0xee, 0x4e, 0x4e, 0xef, 0x4f,
+  0x4c, 0xed, 0x4f, 0x4d, 0xe9, 0x50, 0x4c, 0xeb, 0x4e, 0x4e, 0xeb, 0x4a,
+  0x4d, 0xed, 0x4a, 0x4d, 0xee, 0x49, 0x4b, 0xee, 0x48, 0x4b, 0xec, 0x4a,
+  0x49, 0xeb, 0x4c, 0x49, 0xea, 0x4c, 0x49, 0xec, 0x4a, 0x49, 0xeb, 0x49,
+  0x49, 0xeb, 0x49, 0x49, 0xeb, 0x49, 0x49, 0xeb, 0x49, 0x49, 0xeb, 0x49,
+  0x49, 0xeb, 0x49, 0x49, 0xeb, 0x49, 0x49, 0xeb, 0x49, 0x49, 0xeb, 0x49,
+  0x49, 0xeb, 0x49, 0x49, 0xeb, 0x49, 0x49, 0xeb, 0x49, 0x49, 0xeb, 0x49,
+  0x49, 0xeb, 0x49, 0x49, 0xeb, 0x49, 0x49, 0xeb, 0x49, 0x49, 0xeb, 0x49,
+  0x49, 0xeb, 0x49, 0x49, 0xeb, 0x49, 0x49, 0xeb, 0x49, 0x49, 0xeb, 0x49,
+  0x49, 0xeb, 0x49, 0x49, 0xeb, 0x49, 0x49, 0xeb, 0x49, 0x49, 0xeb, 0x49,
+  0x48, 0xec, 0x49, 0x48, 0xec, 0x4a, 0x48, 0xec, 0x4a, 0x48, 0xec, 0x4a,
+  0x48, 0xec, 0x4a, 0x48, 0xec, 0x4a, 0x4a, 0xec, 0x48, 0x4a, 0xea, 0x48,
+  0x4a, 0xe8, 0x4b, 0x4c, 0xe8, 0x4b, 0x4f, 0xea, 0x48, 0x4e, 0xea, 0x48,
+  0x4a, 0xeb, 0x48, 0x48, 0xeb, 0x48, 0x47, 0xeb, 0x49, 0x47, 0xea, 0x49,
+  0x50, 0xf1, 0x51, 0x4d, 0xc5, 0x4d, 0x2f, 0x62, 0x2f, 0x2a, 0x3c, 0x2c,
+  0x2b, 0x35, 0x2a, 0x2c, 0x2f, 0x2a, 0x2c, 0x2f, 0x2a, 0x2e, 0x2f, 0x2c,
+  0x30, 0x2f, 0x2c, 0x31, 0x31, 0x2d, 0x32, 0x31, 0x2e, 0x34, 0x30, 0x2f,
+  0x36, 0x31, 0x32, 0x36, 0x33, 0x32, 0x37, 0x35, 0x34, 0x35, 0x37, 0x33,
+  0x38, 0x3c, 0x38, 0x40, 0x42, 0x3c, 0x4c, 0x4c, 0x46, 0x63, 0x61, 0x58,
+  0x63, 0x5e, 0x55, 0x88, 0x82, 0x77, 0xbd, 0xb2, 0xaa, 0xac, 0xa1, 0x9d,
+  0x4f, 0x47, 0x45, 0x22, 0x1e, 0x1c, 0x1d, 0x19, 0x18, 0x17, 0x16, 0x15,
+  0x17, 0x17, 0x16, 0x12, 0x12, 0x12, 0x0b, 0x0b, 0x0b, 0x0d, 0x0b, 0x0c,
+  0x0c, 0x0a, 0x0b, 0x0a, 0x07, 0x08, 0x06, 0x02, 0x04, 0x02, 0x02, 0x01,
+  0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01,
+  0x01, 0x02, 0x02, 0x00, 0x02, 0x02, 0x01, 0x03, 0x03, 0x04, 0x07, 0x06,
+  0x08, 0x08, 0x09, 0x09, 0x09, 0x0a, 0x0c, 0x0b, 0x0c, 0x0d, 0x0c, 0x0c,
+  0x0d, 0x0c, 0x0a, 0x16, 0x15, 0x10, 0x48, 0x47, 0x3e, 0xa5, 0xa5, 0x95,
+  0xb4, 0xb5, 0x9f, 0x76, 0x9a, 0x67, 0x57, 0xbe, 0x54, 0x55, 0xe7, 0x58,
+  0x54, 0xed, 0x54, 0x55, 0xf3, 0x52, 0x4e, 0xf0, 0x4e, 0x4b, 0xed, 0x4c,
+  0x4b, 0xee, 0x4d, 0x4a, 0xeb, 0x4d, 0x4a, 0xe7, 0x4d, 0x49, 0xe8, 0x4b,
+  0x4b, 0xe9, 0x47, 0x4b, 0xea, 0x46, 0x4a, 0xeb, 0x46, 0x49, 0xeb, 0x45,
+  0x48, 0xea, 0x46, 0x46, 0xe9, 0x49, 0x46, 0xe8, 0x49, 0x46, 0xea, 0x46,
+  0x46, 0xe9, 0x46, 0x46, 0xe9, 0x46, 0x46, 0xe9, 0x46, 0x46, 0xe9, 0x46,
+  0x46, 0xe9, 0x46, 0x46, 0xe9, 0x46, 0x46, 0xe9, 0x46, 0x46, 0xe9, 0x46,
+  0x46, 0xe9, 0x46, 0x46, 0xe9, 0x46, 0x46, 0xe9, 0x46, 0x46, 0xe9, 0x46,
+  0x46, 0xe9, 0x46, 0x46, 0xe9, 0x46, 0x46, 0xe9, 0x46, 0x46, 0xe9, 0x46,
+  0x46, 0xe9, 0x46, 0x46, 0xe9, 0x46, 0x46, 0xe9, 0x46, 0x46, 0xe9, 0x46,
+  0x46, 0xe9, 0x46, 0x46, 0xe9, 0x46, 0x46, 0xe9, 0x46, 0x46, 0xe9, 0x46,
+  0x46, 0xe9, 0x46, 0x45, 0xe9, 0x46, 0x45, 0xe9, 0x46, 0x45, 0xe9, 0x46,
+  0x45, 0xe9, 0x46, 0x45, 0xe9, 0x46, 0x45, 0xe9, 0x46, 0x47, 0xea, 0x45,
+  0x47, 0xe9, 0x46, 0x47, 0xe6, 0x48, 0x49, 0xe6, 0x48, 0x4b, 0xe9, 0x46,
+  0x4a, 0xe9, 0x45, 0x47, 0xea, 0x45, 0x45, 0xea, 0x45, 0x45, 0xe9, 0x46,
+  0x45, 0xe8, 0x47, 0x4e, 0xf0, 0x4f, 0x4c, 0xc5, 0x4c, 0x2e, 0x63, 0x2e,
+  0x2a, 0x3d, 0x2a, 0x2b, 0x35, 0x29, 0x2b, 0x2f, 0x28, 0x2b, 0x2e, 0x29,
+  0x2d, 0x2e, 0x2c, 0x2f, 0x2e, 0x2c, 0x30, 0x30, 0x2d, 0x31, 0x30, 0x2d,
+  0x32, 0x2f, 0x2e, 0x33, 0x30, 0x30, 0x34, 0x32, 0x32, 0x35, 0x34, 0x33,
+  0x33, 0x36, 0x33, 0x36, 0x3a, 0x37, 0x3d, 0x3f, 0x3a, 0x49, 0x4a, 0x43,
+  0x61, 0x5f, 0x55, 0x60, 0x5b, 0x51, 0x81, 0x7b, 0x6e, 0xb4, 0xa9, 0xa0,
+  0xa7, 0x9c, 0x97, 0x50, 0x48, 0x45, 0x27, 0x22, 0x20, 0x21, 0x1e, 0x1c,
+  0x18, 0x17, 0x16, 0x15, 0x15, 0x15, 0x12, 0x12, 0x12, 0x0d, 0x0c, 0x0d,
+  0x0d, 0x0c, 0x0c, 0x0c, 0x0a, 0x0b, 0x0a, 0x07, 0x08, 0x06, 0x02, 0x04,
+  0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01,
+  0x00, 0x01, 0x01, 0x00, 0x02, 0x02, 0x01, 0x03, 0x03, 0x00, 0x03, 0x03,
+  0x02, 0x06, 0x06, 0x06, 0x08, 0x09, 0x08, 0x0a, 0x0a, 0x0b, 0x0a, 0x0b,
+  0x0b, 0x0a, 0x0b, 0x0d, 0x0a, 0x0b, 0x15, 0x13, 0x0f, 0x47, 0x48, 0x3d,
+  0xa0, 0xa1, 0x8f, 0xad, 0xaf, 0x98, 0x72, 0x97, 0x63, 0x55, 0xbe, 0x52,
+  0x53, 0xe6, 0x55, 0x50, 0xec, 0x50, 0x52, 0xf2, 0x50, 0x4c, 0xef, 0x4c,
+  0x49, 0xec, 0x4a, 0x49, 0xec, 0x4b, 0x48, 0xe9, 0x4b, 0x48, 0xe6, 0x49,
+  0x47, 0xe5, 0x48, 0x49, 0xe7, 0x45, 0x49, 0xe8, 0x43, 0x48, 0xe8, 0x43,
+  0x47, 0xe9, 0x43, 0x46, 0xe8, 0x43, 0x44, 0xe7, 0x46, 0x44, 0xe6, 0x46,
+  0x44, 0xe8, 0x43, 0x44, 0xe7, 0x43, 0x44, 0xe7, 0x43, 0x44, 0xe7, 0x43,
+  0x44, 0xe7, 0x43, 0x44, 0xe7, 0x43, 0x44, 0xe7, 0x43, 0x44, 0xe7, 0x43,
+  0x44, 0xe7, 0x43, 0x44, 0xe7, 0x43, 0x44, 0xe7, 0x43, 0x44, 0xe7, 0x43,
+  0x44, 0xe7, 0x43, 0x44, 0xe7, 0x43, 0x44, 0xe7, 0x43, 0x44, 0xe7, 0x43,
+  0x44, 0xe7, 0x43, 0x44, 0xe7, 0x43, 0x44, 0xe7, 0x43, 0x44, 0xe7, 0x43,
+  0x44, 0xe7, 0x43, 0x44, 0xe7, 0x43, 0x44, 0xe7, 0x43, 0x44, 0xe7, 0x43,
+  0x44, 0xe7, 0x43, 0x44, 0xe7, 0x44, 0x43, 0xe7, 0x42, 0x43, 0xe7, 0x43,
+  0x43, 0xe7, 0x43, 0x43, 0xe7, 0x43, 0x43, 0xe7, 0x43, 0x43, 0xe7, 0x43,
+  0x45, 0xe8, 0x42, 0x45, 0xe7, 0x43, 0x45, 0xe4, 0x46, 0x45, 0xe4, 0x46,
+  0x47, 0xe7, 0x43, 0x47, 0xe7, 0x42, 0x45, 0xe8, 0x42, 0x43, 0xe8, 0x42,
+  0x43, 0xe8, 0x44, 0x43, 0xe7, 0x45, 0x4c, 0xee, 0x4e, 0x4b, 0xc5, 0x4b,
+  0x2d, 0x64, 0x2c, 0x29, 0x3d, 0x28, 0x2a, 0x34, 0x29, 0x2b, 0x2e, 0x27,
+  0x2b, 0x2e, 0x29, 0x2d, 0x2e, 0x2b, 0x2f, 0x2d, 0x2b, 0x2f, 0x2e, 0x2c,
+  0x2f, 0x2e, 0x2d, 0x30, 0x2f, 0x2e, 0x31, 0x2f, 0x2e, 0x32, 0x32, 0x31,
+  0x33, 0x33, 0x33, 0x33, 0x34, 0x33, 0x35, 0x38, 0x36, 0x3a, 0x3c, 0x37,
+  0x47, 0x47, 0x41, 0x5e, 0x5d, 0x53, 0x5b, 0x57, 0x4e, 0x7a, 0x73, 0x67,
+  0xab, 0xa1, 0x96, 0xa3, 0x98, 0x91, 0x53, 0x4b, 0x47, 0x2d, 0x28, 0x25,
+  0x26, 0x22, 0x20, 0x19, 0x18, 0x17, 0x14, 0x14, 0x13, 0x12, 0x12, 0x12,
+  0x0f, 0x0e, 0x0e, 0x0e, 0x0b, 0x0c, 0x0c, 0x0a, 0x0a, 0x0a, 0x07, 0x08,
+  0x06, 0x02, 0x04, 0x01, 0x01, 0x01, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00,
+  0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x03, 0x03,
+  0x00, 0x03, 0x03, 0x02, 0x06, 0x05, 0x05, 0x07, 0x09, 0x07, 0x0a, 0x0a,
+  0x09, 0x0a, 0x0b, 0x09, 0x0a, 0x0a, 0x0c, 0x0b, 0x0b, 0x12, 0x12, 0x0e,
+  0x44, 0x45, 0x3a, 0x96, 0x98, 0x87, 0xa1, 0xa5, 0x8d, 0x6b, 0x92, 0x5c,
+  0x52, 0xbc, 0x4f, 0x50, 0xe3, 0x51, 0x4d, 0xe9, 0x4c, 0x50, 0xf0, 0x4c,
+  0x49, 0xeb, 0x48, 0x45, 0xe8, 0x45, 0x46, 0xe8, 0x46, 0x45, 0xe5, 0x47,
+  0x45, 0xe2, 0x46, 0x45, 0xe1, 0x44, 0x46, 0xe3, 0x41, 0x46, 0xe4, 0x3f,
+  0x45, 0xe4, 0x3f, 0x44, 0xe5, 0x3f, 0x43, 0xe4, 0x3f, 0x41, 0xe4, 0x42,
+  0x41, 0xe3, 0x42, 0x42, 0xe4, 0x40, 0x42, 0xe4, 0x40, 0x42, 0xe4, 0x40,
+  0x42, 0xe4, 0x40, 0x42, 0xe4, 0x40, 0x42, 0xe4, 0x40, 0x42, 0xe4, 0x40,
+  0x42, 0xe4, 0x40, 0x42, 0xe4, 0x3f, 0x42, 0xe4, 0x3f, 0x42, 0xe4, 0x3f,
+  0x42, 0xe4, 0x3f, 0x42, 0xe4, 0x3f, 0x42, 0xe4, 0x3f, 0x42, 0xe4, 0x3f,
+  0x42, 0xe4, 0x3f, 0x42, 0xe4, 0x40, 0x42, 0xe4, 0x40, 0x42, 0xe4, 0x40,
+  0x42, 0xe4, 0x40, 0x42, 0xe4, 0x40, 0x42, 0xe4, 0x40, 0x42, 0xe4, 0x40,
+  0x42, 0xe4, 0x40, 0x42, 0xe4, 0x3f, 0x42, 0xe4, 0x40, 0x40, 0xe3, 0x3f,
+  0x40, 0xe3, 0x3f, 0x40, 0xe3, 0x3f, 0x40, 0xe3, 0x3f, 0x40, 0xe3, 0x3e,
+  0x40, 0xe3, 0x3e, 0x41, 0xe5, 0x3e, 0x41, 0xe4, 0x40, 0x41, 0xe1, 0x43,
+  0x41, 0xe1, 0x43, 0x42, 0xe4, 0x40, 0x43, 0xe4, 0x3e, 0x41, 0xe5, 0x3e,
+  0x3f, 0xe5, 0x3f, 0x3f, 0xe6, 0x41, 0x40, 0xe4, 0x41, 0x49, 0xeb, 0x4a,
+  0x49, 0xc3, 0x48, 0x2b, 0x62, 0x2a, 0x28, 0x3b, 0x26, 0x29, 0x34, 0x27,
+  0x29, 0x2e, 0x25, 0x29, 0x2c, 0x27, 0x2a, 0x2b, 0x28, 0x2d, 0x2a, 0x2a,
+  0x2d, 0x2b, 0x2a, 0x2d, 0x2b, 0x2b, 0x2e, 0x2c, 0x2c, 0x2e, 0x2c, 0x2c,
+  0x2f, 0x2f, 0x2f, 0x31, 0x31, 0x31, 0x31, 0x32, 0x32, 0x32, 0x35, 0x34,
+  0x37, 0x39, 0x35, 0x44, 0x45, 0x3f, 0x5b, 0x5a, 0x51, 0x58, 0x53, 0x4a,
+  0x72, 0x6c, 0x5f, 0xa2, 0x98, 0x8d, 0x9e, 0x93, 0x8b, 0x58, 0x50, 0x4c,
+  0x3c, 0x36, 0x33, 0x37, 0x32, 0x30, 0x20, 0x20, 0x1e, 0x15, 0x15, 0x14,
+  0x12, 0x13, 0x12, 0x10, 0x10, 0x10, 0x0e, 0x0c, 0x0d, 0x0c, 0x0a, 0x0b,
+  0x0a, 0x07, 0x08, 0x06, 0x02, 0x04, 0x01, 0x00, 0x01, 0x01, 0x00, 0x02,
+  0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x02, 0x02,
+  0x00, 0x02, 0x02, 0x01, 0x03, 0x03, 0x03, 0x06, 0x06, 0x06, 0x08, 0x09,
+  0x07, 0x09, 0x0a, 0x09, 0x0a, 0x0b, 0x09, 0x0a, 0x0a, 0x0d, 0x0e, 0x0d,
+  0x10, 0x11, 0x0d, 0x3f, 0x41, 0x36, 0x8d, 0x90, 0x80, 0x97, 0x9c, 0x84,
+  0x64, 0x8c, 0x56, 0x50, 0xb9, 0x4d, 0x4e, 0xdf, 0x4e, 0x4a, 0xe5, 0x49,
+  0x4d, 0xec, 0x49, 0x45, 0xe7, 0x44, 0x42, 0xe4, 0x41, 0x42, 0xe2, 0x42,
+  0x41, 0xe1, 0x43, 0x43, 0xde, 0x43, 0x43, 0xde, 0x42, 0x44, 0xe0, 0x3e,
+  0x44, 0xe0, 0x3d, 0x43, 0xe1, 0x3c, 0x41, 0xe2, 0x3c, 0x41, 0xe0, 0x3c,
+  0x3f, 0xe0, 0x3e, 0x3f, 0xdf, 0x3f, 0x3f, 0xe1, 0x3e, 0x3f, 0xe0, 0x3e,
+  0x3f, 0xe0, 0x3e, 0x3f, 0xe0, 0x3e, 0x3f, 0xe0, 0x3e, 0x3f, 0xe0, 0x3e,
+  0x3f, 0xe0, 0x3e, 0x3f, 0xe0, 0x3e, 0x3f, 0xe0, 0x3d, 0x3f, 0xe0, 0x3d,
+  0x3f, 0xe0, 0x3d, 0x3f, 0xe0, 0x3d, 0x3f, 0xe0, 0x3d, 0x3f, 0xe0, 0x3d,
+  0x3f, 0xe0, 0x3d, 0x3f, 0xe0, 0x3d, 0x3f, 0xe0, 0x3e, 0x3f, 0xe0, 0x3e,
+  0x3f, 0xe0, 0x3e, 0x3f, 0xe0, 0x3e, 0x3f, 0xe0, 0x3e, 0x3f, 0xe0, 0x3e,
+  0x3f, 0xe0, 0x3e, 0x3f, 0xe0, 0x3e, 0x3f, 0xe0, 0x3d, 0x3f, 0xe0, 0x3d,
+  0x3f, 0xdf, 0x3d, 0x3f, 0xdf, 0x3d, 0x3f, 0xdf, 0x3d, 0x3f, 0xdf, 0x3d,
+  0x3e, 0xdf, 0x3c, 0x3e, 0xdf, 0x3c, 0x3d, 0xe1, 0x3c, 0x3d, 0xe0, 0x3d,
+  0x3d, 0xdd, 0x40, 0x3f, 0xdd, 0x40, 0x40, 0xe0, 0x3d, 0x40, 0xe0, 0x3c,
+  0x3d, 0xe2, 0x3c, 0x3b, 0xe2, 0x3d, 0x3d, 0xe3, 0x3e, 0x3c, 0xe0, 0x3d,
+  0x47, 0xe7, 0x47, 0x47, 0xbf, 0x46, 0x29, 0x5f, 0x29, 0x27, 0x3a, 0x25,
+  0x27, 0x33, 0x25, 0x27, 0x2d, 0x23, 0x26, 0x29, 0x24, 0x28, 0x29, 0x26,
+  0x2a, 0x28, 0x28, 0x2a, 0x29, 0x28, 0x2b, 0x29, 0x28, 0x2c, 0x2a, 0x29,
+  0x2d, 0x2b, 0x2b, 0x2d, 0x2d, 0x2d, 0x2f, 0x2e, 0x2f, 0x30, 0x31, 0x30,
+  0x31, 0x34, 0x31, 0x35, 0x37, 0x32, 0x41, 0x42, 0x3c, 0x59, 0x57, 0x4f,
+  0x55, 0x50, 0x47, 0x6e, 0x67, 0x5b, 0x9d, 0x93, 0x88, 0x9a, 0x8f, 0x87,
+  0x5e, 0x56, 0x51, 0x4d, 0x46, 0x43, 0x4a, 0x46, 0x43, 0x2c, 0x29, 0x28,
+  0x18, 0x17, 0x16, 0x11, 0x12, 0x12, 0x0f, 0x10, 0x10, 0x0e, 0x0c, 0x0d,
+  0x0c, 0x0a, 0x0b, 0x0a, 0x07, 0x08, 0x06, 0x02, 0x04, 0x01, 0x00, 0x01,
+  0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00,
+  0x00, 0x02, 0x02, 0x00, 0x01, 0x01, 0x01, 0x02, 0x02, 0x03, 0x06, 0x06,
+  0x06, 0x08, 0x09, 0x07, 0x09, 0x0a, 0x09, 0x0a, 0x0b, 0x09, 0x0b, 0x0b,
+  0x0e, 0x0f, 0x0d, 0x0e, 0x10, 0x0c, 0x3c, 0x3d, 0x33, 0x85, 0x89, 0x78,
+  0x8d, 0x93, 0x7a, 0x5e, 0x86, 0x50, 0x4f, 0xb7, 0x4b, 0x4b, 0xdc, 0x4b,
+  0x48, 0xe2, 0x47, 0x4a, 0xe9, 0x47, 0x42, 0xe3, 0x40, 0x3f, 0xe0, 0x3e,
+  0x3e, 0xde, 0x3e, 0x3e, 0xdd, 0x3f, 0x40, 0xdb, 0x40, 0x40, 0xdb, 0x3f,
+  0x42, 0xdd, 0x3b, 0x41, 0xdd, 0x3a, 0x41, 0xde, 0x3a, 0x3f, 0xdf, 0x39,
+  0x3f, 0xdd, 0x3a, 0x3d, 0xdc, 0x3b, 0x3d, 0xdc, 0x3d, 0x3d, 0xdd, 0x3c,
+  0x3d, 0xdd, 0x3c, 0x3d, 0xdd, 0x3c, 0x3d, 0xdd, 0x3c, 0x3d, 0xdd, 0x3c,
+  0x3d, 0xdd, 0x3c, 0x3d, 0xdd, 0x3c, 0x3d, 0xdd, 0x3c, 0x3d, 0xdc, 0x3a,
+  0x3d, 0xdc, 0x3a, 0x3d, 0xdc, 0x3a, 0x3d, 0xdc, 0x3a, 0x3d, 0xdc, 0x3a,
+  0x3d, 0xdc, 0x3a, 0x3d, 0xdc, 0x3a, 0x3d, 0xdc, 0x3a, 0x3d, 0xdd, 0x3c,
+  0x3d, 0xdd, 0x3c, 0x3d, 0xdd, 0x3c, 0x3d, 0xdd, 0x3c, 0x3d, 0xdd, 0x3c,
+  0x3d, 0xdd, 0x3c, 0x3d, 0xdd, 0x3c, 0x3d, 0xdd, 0x3c, 0x3d, 0xdc, 0x3a,
+  0x3d, 0xdc, 0x3a, 0x3d, 0xdc, 0x3b, 0x3d, 0xdc, 0x3b, 0x3d, 0xdc, 0x3b,
+  0x3d, 0xdc, 0x3b, 0x3c, 0xdb, 0x39, 0x3c, 0xdc, 0x39, 0x39, 0xde, 0x39,
+  0x39, 0xdc, 0x3a, 0x39, 0xda, 0x3d, 0x3c, 0xda, 0x3d, 0x3d, 0xdc, 0x3a,
+  0x3d, 0xdc, 0x39, 0x3a, 0xde, 0x39, 0x38, 0xdf, 0x3a, 0x3a, 0xe1, 0x3c,
+  0x39, 0xdd, 0x3a, 0x45, 0xe5, 0x44, 0x45, 0xbd, 0x43, 0x27, 0x5c, 0x27,
+  0x25, 0x38, 0x24, 0x26, 0x31, 0x23, 0x25, 0x2b, 0x22, 0x24, 0x27, 0x22,
+  0x25, 0x26, 0x23, 0x28, 0x26, 0x25, 0x28, 0x26, 0x25, 0x29, 0x26, 0x26,
+  0x2a, 0x27, 0x27, 0x2b, 0x2a, 0x2a, 0x2b, 0x2a, 0x2a, 0x2d, 0x2c, 0x2d,
+  0x2e, 0x30, 0x2e, 0x2e, 0x32, 0x2f, 0x32, 0x35, 0x30, 0x3f, 0x3f, 0x3a,
+  0x56, 0x55, 0x4c, 0x52, 0x4d, 0x45, 0x69, 0x62, 0x57, 0x98, 0x8e, 0x83,
+  0x97, 0x8b, 0x84, 0x63, 0x59, 0x55, 0x58, 0x51, 0x4d, 0x57, 0x52, 0x4f,
+  0x34, 0x32, 0x30, 0x1a, 0x18, 0x18, 0x11, 0x11, 0x11, 0x0f, 0x0f, 0x10,
+  0x0e, 0x0c, 0x0e, 0x0c, 0x0a, 0x0c, 0x0a, 0x07, 0x09, 0x06, 0x02, 0x04,
+  0x01, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x01, 0x01,
+  0x02, 0x01, 0x00, 0x00, 0x02, 0x01, 0x01, 0x02, 0x01, 0x01, 0x03, 0x02,
+  0x02, 0x06, 0x05, 0x05, 0x07, 0x08, 0x06, 0x08, 0x09, 0x08, 0x0a, 0x0a,
+  0x0a, 0x0a, 0x0a, 0x0e, 0x0e, 0x0c, 0x0f, 0x0f, 0x0c, 0x3a, 0x3c, 0x32,
+  0x81, 0x84, 0x73, 0x87, 0x8f, 0x74, 0x58, 0x82, 0x4a, 0x4a, 0xb8, 0x47,
+  0x45, 0xd9, 0x46, 0x43, 0xdf, 0x43, 0x46, 0xe5, 0x43, 0x40, 0xe2, 0x3f,
+  0x3e, 0xdf, 0x3d, 0x3b, 0xdc, 0x3c, 0x3b, 0xdc, 0x3c, 0x3c, 0xda, 0x3d,
+  0x3c, 0xda, 0x3c, 0x3e, 0xdb, 0x3a, 0x3d, 0xda, 0x39, 0x3d, 0xdb, 0x39,
+  0x3b, 0xdb, 0x38, 0x3b, 0xda, 0x39, 0x39, 0xdb, 0x39, 0x3a, 0xda, 0x3a,
+  0x3a, 0xdc, 0x39, 0x3a, 0xdb, 0x3a, 0x3a, 0xdb, 0x3a, 0x3a, 0xdb, 0x3a,
+  0x3a, 0xdb, 0x3a, 0x3a, 0xdb, 0x3a, 0x3a, 0xdb, 0x3a, 0x3a, 0xdb, 0x3a,
+  0x3a, 0xdb, 0x39, 0x3a, 0xdb, 0x39, 0x3a, 0xdb, 0x39, 0x3a, 0xdb, 0x39,
+  0x3a, 0xdb, 0x39, 0x3a, 0xdb, 0x39, 0x3a, 0xdb, 0x39, 0x3a, 0xdb, 0x39,
+  0x3a, 0xdb, 0x3a, 0x3a, 0xdb, 0x3a, 0x3a, 0xdb, 0x3a, 0x3a, 0xdb, 0x3a,
+  0x3a, 0xdb, 0x3a, 0x3a, 0xdb, 0x3a, 0x3a, 0xdb, 0x3a, 0x3a, 0xdb, 0x3a,
+  0x3a, 0xda, 0x38, 0x3a, 0xda, 0x38, 0x3a, 0xda, 0x38, 0x3a, 0xda, 0x38,
+  0x3a, 0xda, 0x38, 0x3a, 0xda, 0x38, 0x39, 0xda, 0x38, 0x39, 0xda, 0x37,
+  0x38, 0xdb, 0x38, 0x38, 0xda, 0x39, 0x38, 0xd8, 0x3b, 0x38, 0xd9, 0x3b,
+  0x38, 0xdb, 0x39, 0x38, 0xdb, 0x38, 0x39, 0xdc, 0x38, 0x38, 0xdc, 0x38,
+  0x38, 0xdd, 0x39, 0x37, 0xdd, 0x38, 0x3f, 0xe6, 0x40, 0x40, 0xc1, 0x40,
+  0x25, 0x5d, 0x24, 0x24, 0x36, 0x21, 0x26, 0x2e, 0x23, 0x25, 0x27, 0x22,
+  0x24, 0x26, 0x22, 0x25, 0x25, 0x23, 0x26, 0x25, 0x24, 0x26, 0x26, 0x24,
+  0x27, 0x26, 0x25, 0x28, 0x27, 0x26, 0x29, 0x28, 0x28, 0x28, 0x29, 0x29,
+  0x2a, 0x2a, 0x2a, 0x2d, 0x2d, 0x2b, 0x2e, 0x2e, 0x2c, 0x32, 0x32, 0x2d,
+  0x3d, 0x3c, 0x38, 0x51, 0x4f, 0x48, 0x4f, 0x4b, 0x44, 0x65, 0x5f, 0x54,
+  0x90, 0x88, 0x7e, 0x90, 0x86, 0x7e, 0x5b, 0x53, 0x4e, 0x49, 0x42, 0x3f,
+  0x48, 0x43, 0x40, 0x35, 0x32, 0x30, 0x1e, 0x1b, 0x19, 0x12, 0x13, 0x12,
+  0x10, 0x10, 0x10, 0x0d, 0x0c, 0x0d, 0x0b, 0x0a, 0x0b, 0x09, 0x07, 0x08,
+  0x05, 0x03, 0x04, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00,
+  0x03, 0x00, 0x01, 0x03, 0x00, 0x01, 0x01, 0x02, 0x01, 0x01, 0x03, 0x01,
+  0x00, 0x04, 0x01, 0x01, 0x06, 0x04, 0x03, 0x06, 0x06, 0x07, 0x06, 0x08,
+  0x08, 0x08, 0x0a, 0x0a, 0x0a, 0x0a, 0x0d, 0x0b, 0x0b, 0x11, 0x0f, 0x0c,
+  0x3b, 0x3b, 0x30, 0x7f, 0x81, 0x6e, 0x82, 0x8b, 0x6e, 0x53, 0x7f, 0x44,
+  0x47, 0xb9, 0x43, 0x3e, 0xd6, 0x3f, 0x3f, 0xdc, 0x3f, 0x41, 0xe0, 0x41,
+  0x3f, 0xe1, 0x3e, 0x3d, 0xde, 0x3c, 0x39, 0xdc, 0x3a, 0x38, 0xdb, 0x39,
+  0x38, 0xd9, 0x3a, 0x38, 0xd9, 0x39, 0x39, 0xd8, 0x39, 0x38, 0xd8, 0x39,
+  0x38, 0xd8, 0x39, 0x38, 0xd9, 0x38, 0x38, 0xd8, 0x38, 0x37, 0xd9, 0x37,
+  0x37, 0xd9, 0x37, 0x38, 0xda, 0x37, 0x38, 0xd9, 0x38, 0x38, 0xd9, 0x38,
+  0x38, 0xd9, 0x38, 0x38, 0xd9, 0x38, 0x38, 0xd9, 0x38, 0x38, 0xd9, 0x38,
+  0x38, 0xd9, 0x38, 0x38, 0xd9, 0x37, 0x38, 0xd9, 0x37, 0x38, 0xd9, 0x37,
+  0x38, 0xd9, 0x37, 0x38, 0xd9, 0x37, 0x38, 0xd9, 0x37, 0x38, 0xd9, 0x37,
+  0x38, 0xd9, 0x37, 0x38, 0xd9, 0x38, 0x38, 0xd9, 0x38, 0x38, 0xd9, 0x38,
+  0x38, 0xd9, 0x38, 0x38, 0xd9, 0x38, 0x38, 0xd9, 0x38, 0x38, 0xd9, 0x38,
+  0x38, 0xd9, 0x38, 0x36, 0xd8, 0x36, 0x36, 0xd8, 0x36, 0x36, 0xd8, 0x36,
+  0x36, 0xd8, 0x36, 0x36, 0xd8, 0x36, 0x36, 0xd8, 0x36, 0x37, 0xd8, 0x36,
+  0x36, 0xd8, 0x35, 0x37, 0xd9, 0x37, 0x37, 0xd8, 0x38, 0x36, 0xd7, 0x37,
+  0x35, 0xd8, 0x37, 0x33, 0xd9, 0x37, 0x34, 0xd9, 0x37, 0x37, 0xd8, 0x38,
+  0x38, 0xd8, 0x38, 0x37, 0xd9, 0x37, 0x35, 0xdd, 0x36, 0x3a, 0xe7, 0x3c,
+  0x3b, 0xc4, 0x3d, 0x23, 0x5d, 0x21, 0x23, 0x34, 0x1f, 0x26, 0x2a, 0x22,
+  0x26, 0x23, 0x21, 0x25, 0x23, 0x22, 0x25, 0x23, 0x22, 0x24, 0x25, 0x22,
+  0x24, 0x25, 0x24, 0x25, 0x25, 0x24, 0x26, 0x26, 0x25, 0x27, 0x26, 0x26,
+  0x26, 0x28, 0x27, 0x28, 0x29, 0x27, 0x2b, 0x2b, 0x27, 0x2c, 0x2c, 0x29,
+  0x31, 0x30, 0x2b, 0x3b, 0x39, 0x35, 0x4b, 0x49, 0x42, 0x4e, 0x4a, 0x43,
+  0x61, 0x5c, 0x52, 0x88, 0x82, 0x78, 0x89, 0x80, 0x79, 0x51, 0x4a, 0x44,
+  0x33, 0x2e, 0x2a, 0x32, 0x2d, 0x29, 0x32, 0x30, 0x2d, 0x21, 0x1f, 0x1c,
+  0x14, 0x14, 0x12, 0x10, 0x10, 0x0f, 0x0c, 0x0c, 0x0d, 0x0a, 0x0b, 0x0b,
+  0x07, 0x08, 0x08, 0x04, 0x04, 0x04, 0x02, 0x02, 0x01, 0x02, 0x01, 0x01,
+  0x02, 0x01, 0x01, 0x04, 0x00, 0x01, 0x03, 0x00, 0x01, 0x01, 0x02, 0x00,
+  0x01, 0x03, 0x01, 0x00, 0x04, 0x01, 0x01, 0x05, 0x03, 0x03, 0x05, 0x05,
+  0x06, 0x05, 0x07, 0x08, 0x07, 0x09, 0x0b, 0x09, 0x0a, 0x0c, 0x09, 0x0a,
+  0x11, 0x0e, 0x0c, 0x38, 0x38, 0x2e, 0x77, 0x79, 0x65, 0x78, 0x83, 0x66,
+  0x4d, 0x7b, 0x3f, 0x43, 0xb9, 0x3f, 0x38, 0xd3, 0x3a, 0x3a, 0xd9, 0x3a,
+  0x3d, 0xdc, 0x3c, 0x3c, 0xdf, 0x3b, 0x3a, 0xdc, 0x39, 0x36, 0xda, 0x37,
+  0x34, 0xd9, 0x35, 0x34, 0xd6, 0x36, 0x33, 0xd6, 0x36, 0x33, 0xd5, 0x36,
+  0x33, 0xd5, 0x37, 0x33, 0xd5, 0x37, 0x33, 0xd5, 0x35, 0x33, 0xd5, 0x35,
+  0x34, 0xd7, 0x34, 0x34, 0xd7, 0x34, 0x34, 0xd6, 0x34, 0x34, 0xd6, 0x34,
+  0x34, 0xd6, 0x34, 0x34, 0xd6, 0x34, 0x34, 0xd6, 0x34, 0x34, 0xd6, 0x34,
+  0x34, 0xd6, 0x34, 0x34, 0xd6, 0x35, 0x34, 0xd6, 0x34, 0x34, 0xd6, 0x34,
+  0x34, 0xd6, 0x34, 0x34, 0xd6, 0x34, 0x34, 0xd6, 0x34, 0x34, 0xd6, 0x34,
+  0x34, 0xd6, 0x34, 0x34, 0xd6, 0x34, 0x34, 0xd6, 0x35, 0x34, 0xd6, 0x34,
+  0x34, 0xd6, 0x34, 0x34, 0xd6, 0x34, 0x34, 0xd6, 0x34, 0x34, 0xd6, 0x34,
+  0x34, 0xd6, 0x34, 0x34, 0xd6, 0x34, 0x32, 0xd5, 0x33, 0x32, 0xd5, 0x33,
+  0x32, 0xd5, 0x33, 0x32, 0xd5, 0x33, 0x32, 0xd5, 0x33, 0x32, 0xd5, 0x33,
+  0x33, 0xd5, 0x34, 0x32, 0xd5, 0x33, 0x34, 0xd6, 0x34, 0x34, 0xd5, 0x35,
+  0x34, 0xd4, 0x34, 0x31, 0xd5, 0x34, 0x2e, 0xd7, 0x34, 0x2f, 0xd6, 0x34,
+  0x35, 0xd4, 0x35, 0x36, 0xd5, 0x35, 0x33, 0xd5, 0x33, 0x32, 0xdb, 0x34,
+  0x35, 0xe7, 0x39, 0x37, 0xc6, 0x3b, 0x21, 0x5d, 0x1e, 0x22, 0x32, 0x1d,
+  0x26, 0x28, 0x22, 0x25, 0x21, 0x22, 0x24, 0x21, 0x21, 0x24, 0x21, 0x21,
+  0x22, 0x23, 0x21, 0x22, 0x24, 0x22, 0x22, 0x24, 0x22, 0x23, 0x25, 0x23,
+  0x25, 0x24, 0x23, 0x24, 0x26, 0x25, 0x25, 0x26, 0x24, 0x28, 0x28, 0x24,
+  0x2a, 0x29, 0x25, 0x30, 0x2d, 0x29, 0x38, 0x35, 0x31, 0x45, 0x42, 0x3c,
+  0x49, 0x47, 0x40, 0x5b, 0x56, 0x4e, 0x81, 0x7a, 0x72, 0x81, 0x79, 0x72,
+  0x58, 0x51, 0x4b, 0x4c, 0x46, 0x41, 0x49, 0x44, 0x40, 0x3f, 0x3c, 0x38,
+  0x23, 0x21, 0x1d, 0x15, 0x15, 0x14, 0x11, 0x11, 0x0f, 0x0c, 0x0d, 0x0c,
+  0x09, 0x0b, 0x0a, 0x07, 0x08, 0x08, 0x03, 0x04, 0x04, 0x01, 0x02, 0x01,
+  0x02, 0x01, 0x00, 0x03, 0x01, 0x01, 0x04, 0x00, 0x01, 0x03, 0x00, 0x01,
+  0x01, 0x02, 0x00, 0x01, 0x02, 0x00, 0x00, 0x03, 0x01, 0x01, 0x04, 0x04,
+  0x02, 0x05, 0x06, 0x06, 0x05, 0x07, 0x08, 0x07, 0x09, 0x0a, 0x08, 0x09,
+  0x0c, 0x09, 0x0a, 0x11, 0x0f, 0x0c, 0x35, 0x36, 0x2b, 0x6d, 0x71, 0x5d,
+  0x70, 0x7a, 0x5e, 0x48, 0x77, 0x3c, 0x41, 0xb7, 0x3d, 0x35, 0xd1, 0x38,
+  0x37, 0xd6, 0x38, 0x3a, 0xdb, 0x3a, 0x38, 0xdd, 0x38, 0x37, 0xd9, 0x35,
+  0x33, 0xd7, 0x34, 0x32, 0xd5, 0x33, 0x32, 0xd4, 0x34, 0x31, 0xd3, 0x33,
+  0x31, 0xd2, 0x34, 0x31, 0xd2, 0x34, 0x31, 0xd2, 0x34, 0x30, 0xd2, 0x32,
+  0x31, 0xd3, 0x32, 0x33, 0xd4, 0x31, 0x33, 0xd5, 0x31, 0x30, 0xd3, 0x32,
+  0x30, 0xd3, 0x32, 0x30, 0xd3, 0x32, 0x30, 0xd3, 0x32, 0x30, 0xd3, 0x32,
+  0x30, 0xd3, 0x32, 0x30, 0xd3, 0x32, 0x30, 0xd3, 0x32, 0x30, 0xd2, 0x31,
+  0x30, 0xd2, 0x31, 0x30, 0xd2, 0x31, 0x30, 0xd2, 0x31, 0x30, 0xd2, 0x31,
+  0x30, 0xd2, 0x31, 0x30, 0xd2, 0x31, 0x30, 0xd2, 0x31, 0x30, 0xd3, 0x32,
+  0x30, 0xd3, 0x32, 0x30, 0xd3, 0x32, 0x30, 0xd3, 0x32, 0x30, 0xd3, 0x32,
+  0x30, 0xd3, 0x32, 0x30, 0xd3, 0x32, 0x30, 0xd3, 0x32, 0x30, 0xd2, 0x31,
+  0x30, 0xd3, 0x31, 0x30, 0xd3, 0x31, 0x30, 0xd3, 0x31, 0x30, 0xd3, 0x31,
+  0x30, 0xd3, 0x31, 0x30, 0xd3, 0x31, 0x30, 0xd3, 0x31, 0x31, 0xd4, 0x32,
+  0x31, 0xd3, 0x32, 0x31, 0xd1, 0x33, 0x30, 0xd2, 0x33, 0x2d, 0xd5, 0x31,
+  0x2e, 0xd4, 0x32, 0x32, 0xd2, 0x33, 0x34, 0xd2, 0x33, 0x30, 0xd3, 0x32,
+  0x2f, 0xd9, 0x33, 0x33, 0xe5, 0x38, 0x36, 0xc3, 0x3a, 0x20, 0x5c, 0x1d,
+  0x21, 0x33, 0x1c, 0x25, 0x28, 0x21, 0x24, 0x22, 0x22, 0x22, 0x20, 0x20,
+  0x23, 0x20, 0x20, 0x21, 0x22, 0x20, 0x21, 0x22, 0x20, 0x21, 0x23, 0x20,
+  0x22, 0x24, 0x21, 0x24, 0x23, 0x22, 0x23, 0x25, 0x24, 0x24, 0x25, 0x23,
+  0x27, 0x27, 0x23, 0x29, 0x28, 0x24, 0x2d, 0x2b, 0x27, 0x35, 0x32, 0x2e,
+  0x40, 0x3d, 0x36, 0x44, 0x41, 0x3b, 0x56, 0x51, 0x4a, 0x7c, 0x75, 0x6d,
+  0x7d, 0x75, 0x6d, 0x6d, 0x65, 0x5e, 0x85, 0x7f, 0x78, 0x81, 0x7c, 0x77,
+  0x54, 0x50, 0x4c, 0x24, 0x21, 0x1e, 0x17, 0x18, 0x16, 0x11, 0x12, 0x11,
+  0x0c, 0x0d, 0x0c, 0x09, 0x0b, 0x0b, 0x07, 0x08, 0x08, 0x03, 0x04, 0x04,
+  0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x03, 0x01, 0x01, 0x04, 0x00, 0x01,
+  0x03, 0x00, 0x01, 0x01, 0x02, 0x00, 0x01, 0x01, 0x00, 0x00, 0x02, 0x01,
+  0x02, 0x03, 0x04, 0x03, 0x05, 0x06, 0x06, 0x04, 0x07, 0x09, 0x07, 0x09,
+  0x0a, 0x07, 0x09, 0x0b, 0x09, 0x09, 0x10, 0x0e, 0x0b, 0x32, 0x33, 0x2a,
+  0x66, 0x6a, 0x57, 0x69, 0x73, 0x57, 0x46, 0x75, 0x3a, 0x40, 0xb5, 0x3b,
+  0x34, 0xcf, 0x35, 0x35, 0xd3, 0x35, 0x38, 0xd9, 0x37, 0x35, 0xda, 0x35,
+  0x34, 0xd7, 0x32, 0x30, 0xd5, 0x31, 0x2f, 0xd2, 0x30, 0x30, 0xd1, 0x32,
+  0x2e, 0xd1, 0x31, 0x2e, 0xd0, 0x31, 0x2e, 0xd0, 0x32, 0x2e, 0xd0, 0x31,
+  0x2d, 0xd0, 0x2f, 0x2e, 0xd1, 0x2f, 0x31, 0xd2, 0x2f, 0x30, 0xd2, 0x2f,
+  0x2e, 0xd0, 0x2f, 0x2d, 0xd0, 0x2f, 0x2d, 0xd0, 0x2f, 0x2d, 0xd0, 0x2f,
+  0x2d, 0xd0, 0x2f, 0x2d, 0xd0, 0x2f, 0x2d, 0xd0, 0x2f, 0x2d, 0xd0, 0x30,
+  0x2d, 0xcf, 0x2e, 0x2d, 0xd0, 0x2e, 0x2d, 0xd0, 0x2e, 0x2d, 0xd0, 0x2e,
+  0x2d, 0xd0, 0x2e, 0x2d, 0xd0, 0x2e, 0x2d, 0xd0, 0x2e, 0x2d, 0xcf, 0x2e,
+  0x2d, 0xd0, 0x30, 0x2d, 0xd0, 0x2f, 0x2d, 0xd0, 0x2f, 0x2d, 0xd0, 0x2f,
+  0x2d, 0xd0, 0x2f, 0x2d, 0xd0, 0x2f, 0x2d, 0xd0, 0x2f, 0x2d, 0xd0, 0x2f,
+  0x2d, 0xd0, 0x2f, 0x2d, 0xd0, 0x2f, 0x2d, 0xd0, 0x2f, 0x2d, 0xd0, 0x2f,
+  0x2d, 0xd0, 0x2f, 0x2d, 0xd0, 0x2f, 0x2d, 0xd0, 0x2f, 0x2d, 0xd0, 0x2f,
+  0x2e, 0xd1, 0x2f, 0x2e, 0xd0, 0x2f, 0x2f, 0xcf, 0x31, 0x2e, 0xd0, 0x31,
+  0x2b, 0xd3, 0x2f, 0x2c, 0xd1, 0x2f, 0x2f, 0xcf, 0x30, 0x31, 0xd0, 0x31,
+  0x2e, 0xd1, 0x30, 0x2d, 0xd7, 0x31, 0x31, 0xe2, 0x37, 0x34, 0xc2, 0x38,
+  0x1f, 0x5b, 0x1c, 0x20, 0x33, 0x1c, 0x24, 0x27, 0x20, 0x23, 0x21, 0x21,
+  0x21, 0x1e, 0x1f, 0x21, 0x1e, 0x1f, 0x20, 0x20, 0x1f, 0x1f, 0x20, 0x1e,
+  0x1f, 0x21, 0x1e, 0x20, 0x22, 0x1f, 0x22, 0x21, 0x20, 0x21, 0x23, 0x22,
+  0x22, 0x23, 0x21, 0x26, 0x26, 0x21, 0x27, 0x27, 0x23, 0x2b, 0x29, 0x25,
+  0x32, 0x2f, 0x2b, 0x3b, 0x38, 0x32, 0x40, 0x3d, 0x36, 0x52, 0x4c, 0x46,
+  0x79, 0x71, 0x69, 0x79, 0x72, 0x68, 0x80, 0x77, 0x6f, 0xb7, 0xb1, 0xa9,
+  0xb4, 0xae, 0xa8, 0x68, 0x64, 0x5f, 0x26, 0x23, 0x20, 0x19, 0x19, 0x18,
+  0x11, 0x13, 0x11, 0x0c, 0x0d, 0x0c, 0x09, 0x0b, 0x0b, 0x08, 0x08, 0x08,
+  0x04, 0x04, 0x04, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x03, 0x01, 0x01,
+  0x03, 0x00, 0x01, 0x03, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00,
+  0x00, 0x02, 0x01, 0x01, 0x03, 0x04, 0x02, 0x04, 0x05, 0x05, 0x04, 0x06,
+  0x08, 0x05, 0x08, 0x08, 0x05, 0x08, 0x0a, 0x08, 0x08, 0x10, 0x0e, 0x0b,
+  0x31, 0x33, 0x29, 0x64, 0x68, 0x55, 0x66, 0x72, 0x56, 0x45, 0x76, 0x3a,
+  0x3e, 0xb5, 0x3a, 0x31, 0xcc, 0x33, 0x33, 0xd2, 0x33, 0x35, 0xd9, 0x35,
+  0x33, 0xd9, 0x34, 0x31, 0xd6, 0x31, 0x2f, 0xd4, 0x30, 0x2e, 0xd3, 0x2f,
+  0x2d, 0xd1, 0x30, 0x2d, 0xd0, 0x2f, 0x2d, 0xd0, 0x30, 0x2d, 0xd0, 0x30,
+  0x2d, 0xd0, 0x30, 0x2c, 0xd0, 0x2e, 0x2c, 0xd1, 0x2e, 0x2f, 0xd1, 0x2d,
+  0x2e, 0xd2, 0x2d, 0x2c, 0xd0, 0x2d, 0x2b, 0xd0, 0x2d, 0x2b, 0xd0, 0x2d,
+  0x2b, 0xd0, 0x2d, 0x2b, 0xd0, 0x2d, 0x2b, 0xd0, 0x2d, 0x2b, 0xd0, 0x2d,
+  0x2b, 0xd0, 0x2e, 0x2b, 0xcf, 0x2d, 0x2b, 0xcf, 0x2d, 0x2b, 0xcf, 0x2d,
+  0x2b, 0xcf, 0x2d, 0x2b, 0xcf, 0x2d, 0x2b, 0xcf, 0x2d, 0x2b, 0xcf, 0x2d,
+  0x2b, 0xcf, 0x2d, 0x2b, 0xd0, 0x2e, 0x2b, 0xd0, 0x2d, 0x2b, 0xd0, 0x2d,
+  0x2b, 0xd0, 0x2d, 0x2b, 0xd0, 0x2d, 0x2b, 0xd0, 0x2d, 0x2b, 0xd0, 0x2d,
+  0x2b, 0xd0, 0x2d, 0x2c, 0xd0, 0x2e, 0x2c, 0xd0, 0x2e, 0x2c, 0xd0, 0x2e,
+  0x2c, 0xd0, 0x2e, 0x2c, 0xd0, 0x2e, 0x2c, 0xd0, 0x2e, 0x2c, 0xd0, 0x2e,
+  0x2c, 0xd0, 0x2e, 0x2d, 0xd1, 0x2e, 0x2c, 0xd0, 0x2e, 0x2d, 0xcf, 0x2f,
+  0x2c, 0xd0, 0x2f, 0x2a, 0xd2, 0x2e, 0x2b, 0xd1, 0x2e, 0x2e, 0xcf, 0x2f,
+  0x2f, 0xcf, 0x30, 0x2b, 0xcf, 0x2e, 0x2a, 0xd5, 0x2e, 0x2f, 0xe0, 0x35,
+  0x32, 0xc0, 0x37, 0x1d, 0x59, 0x1b, 0x1e, 0x31, 0x1a, 0x21, 0x26, 0x1e,
+  0x20, 0x21, 0x1f, 0x1f, 0x1e, 0x1d, 0x20, 0x1e, 0x1d, 0x1e, 0x1f, 0x1e,
+  0x1e, 0x1f, 0x1d, 0x1e, 0x20, 0x1d, 0x1f, 0x21, 0x1e, 0x21, 0x20, 0x1f,
+  0x20, 0x21, 0x20, 0x21, 0x22, 0x20, 0x25, 0x23, 0x20, 0x26, 0x25, 0x23,
+  0x2a, 0x28, 0x24, 0x2f, 0x2c, 0x28, 0x37, 0x34, 0x2e, 0x3c, 0x39, 0x33,
+  0x4e, 0x4a, 0x44, 0x75, 0x6d, 0x66, 0x76, 0x6f, 0x65, 0x8b, 0x81, 0x77,
+  0xcf, 0xc9, 0xc0, 0xce, 0xca, 0xc4, 0x7a, 0x77, 0x72, 0x2b, 0x28, 0x25,
+  0x19, 0x19, 0x18, 0x11, 0x13, 0x11, 0x0c, 0x0d, 0x0c, 0x0a, 0x0b, 0x0b,
+  0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
+  0x03, 0x01, 0x01, 0x02, 0x00, 0x01, 0x02, 0x00, 0x01, 0x01, 0x01, 0x00,
+  0x01, 0x02, 0x00, 0x00, 0x03, 0x01, 0x01, 0x03, 0x03, 0x03, 0x04, 0x04,
+  0x04, 0x03, 0x06, 0x07, 0x04, 0x08, 0x08, 0x04, 0x07, 0x0a, 0x07, 0x08,
+  0x10, 0x0e, 0x0c, 0x32, 0x34, 0x2a, 0x63, 0x69, 0x56, 0x64, 0x72, 0x56,
+  0x45, 0x76, 0x3a, 0x3d, 0xb4, 0x3a, 0x30, 0xcb, 0x31, 0x30, 0xd2, 0x32,
+  0x34, 0xd8, 0x34, 0x32, 0xd9, 0x33, 0x2f, 0xd6, 0x30, 0x2e, 0xd5, 0x2f,
+  0x2d, 0xd4, 0x2e, 0x2c, 0xd1, 0x2f, 0x2c, 0xd1, 0x2e, 0x2c, 0xd0, 0x2f,
+  0x2c, 0xcf, 0x2f, 0x2c, 0xcf, 0x2f, 0x2b, 0xd0, 0x2d, 0x2b, 0xd0, 0x2d,
+  0x2e, 0xd1, 0x2c, 0x2d, 0xd1, 0x2c, 0x2b, 0xcf, 0x2c, 0x2a, 0xcf, 0x2c,
+  0x2a, 0xcf, 0x2c, 0x2a, 0xcf, 0x2c, 0x2a, 0xcf, 0x2c, 0x2a, 0xcf, 0x2c,
+  0x2a, 0xcf, 0x2c, 0x2a, 0xcf, 0x2c, 0x2b, 0xcf, 0x2d, 0x2b, 0xd0, 0x2d,
+  0x2b, 0xd0, 0x2d, 0x2b, 0xd0, 0x2d, 0x2b, 0xd0, 0x2d, 0x2b, 0xd0, 0x2d,
+  0x2b, 0xd0, 0x2d, 0x2b, 0xcf, 0x2d, 0x2a, 0xcf, 0x2c, 0x2a, 0xcf, 0x2c,
+  0x2a, 0xcf, 0x2c, 0x2a, 0xcf, 0x2c, 0x2a, 0xcf, 0x2c, 0x2a, 0xcf, 0x2c,
+  0x2a, 0xcf, 0x2c, 0x2a, 0xcf, 0x2c, 0x2b, 0xd0, 0x2d, 0x2b, 0xd0, 0x2d,
+  0x2b, 0xd0, 0x2d, 0x2b, 0xd0, 0x2d, 0x2b, 0xd0, 0x2d, 0x2b, 0xd0, 0x2d,
+  0x2b, 0xd0, 0x2d, 0x2b, 0xd0, 0x2d, 0x2c, 0xd1, 0x2d, 0x2b, 0xd0, 0x2d,
+  0x2c, 0xd0, 0x2d, 0x2b, 0xd0, 0x2e, 0x29, 0xd1, 0x2d, 0x2a, 0xd1, 0x2d,
+  0x2d, 0xcf, 0x2e, 0x2e, 0xce, 0x2f, 0x2a, 0xce, 0x2d, 0x29, 0xd3, 0x2d,
+  0x2d, 0xde, 0x33, 0x31, 0xbf, 0x36, 0x1b, 0x58, 0x1a, 0x1d, 0x30, 0x19,
+  0x20, 0x25, 0x1d, 0x1f, 0x20, 0x1e, 0x1f, 0x1d, 0x1c, 0x1f, 0x1d, 0x1b,
+  0x1d, 0x1e, 0x1d, 0x1e, 0x1f, 0x1c, 0x1e, 0x1f, 0x1d, 0x1f, 0x20, 0x1e,
+  0x20, 0x20, 0x1f, 0x20, 0x20, 0x1f, 0x21, 0x21, 0x20, 0x24, 0x22, 0x20,
+  0x25, 0x23, 0x22, 0x29, 0x27, 0x23, 0x2d, 0x2b, 0x27, 0x35, 0x31, 0x2c,
+  0x3a, 0x36, 0x31, 0x4d, 0x48, 0x42, 0x72, 0x6b, 0x63, 0x75, 0x6d, 0x63,
+  0x90, 0x86, 0x7c, 0xdb, 0xd6, 0xcc, 0xdc, 0xd8, 0xd2, 0x86, 0x84, 0x7d,
+  0x2f, 0x2c, 0x29, 0x1a, 0x1a, 0x18, 0x12, 0x13, 0x11, 0x0d, 0x0d, 0x0c,
+  0x0a, 0x0a, 0x0b, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x01, 0x01, 0x01,
+  0x01, 0x00, 0x00, 0x03, 0x01, 0x00, 0x01, 0x00, 0x01, 0x02, 0x00, 0x01,
+  0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x03, 0x01, 0x00, 0x03, 0x03,
+  0x03, 0x02, 0x03, 0x04, 0x03, 0x06, 0x06, 0x02, 0x07, 0x07, 0x03, 0x06,
+  0x09, 0x06, 0x07, 0x0f, 0x0e, 0x0c, 0x31, 0x34, 0x2b, 0x62, 0x68, 0x55,
+  0x61, 0x71, 0x54, 0x44, 0x77, 0x39, 0x3a, 0xb4, 0x38, 0x2d, 0xc8, 0x2f,
+  0x2d, 0xd1, 0x30, 0x31, 0xd8, 0x32, 0x30, 0xd8, 0x31, 0x2d, 0xd6, 0x2e,
+  0x2d, 0xd5, 0x2e, 0x2c, 0xd4, 0x2d, 0x2a, 0xd1, 0x2d, 0x2a, 0xd1, 0x2c,
+  0x2b, 0xd0, 0x2e, 0x2a, 0xcf, 0x2d, 0x2a, 0xcf, 0x2d, 0x2a, 0xd0, 0x2b,
+  0x2a, 0xd0, 0x2c, 0x2c, 0xd0, 0x2a, 0x2b, 0xd0, 0x2a, 0x29, 0xcf, 0x2a,
+  0x28, 0xcf, 0x2a, 0x28, 0xcf, 0x2a, 0x28, 0xcf, 0x2a, 0x28, 0xcf, 0x2a,
+  0x28, 0xcf, 0x2a, 0x28, 0xcf, 0x2a, 0x28, 0xcf, 0x2a, 0x2a, 0xd0, 0x2c,
+  0x2a, 0xd0, 0x2c, 0x2a, 0xd0, 0x2c, 0x2a, 0xd0, 0x2c, 0x2a, 0xd0, 0x2c,
+  0x2a, 0xd0, 0x2c, 0x2a, 0xd0, 0x2c, 0x2a, 0xd0, 0x2c, 0x28, 0xcf, 0x2a,
+  0x28, 0xcf, 0x2a, 0x28, 0xcf, 0x2a, 0x28, 0xcf, 0x2a, 0x28, 0xcf, 0x2a,
+  0x28, 0xcf, 0x2a, 0x28, 0xcf, 0x2a, 0x28, 0xcf, 0x2a, 0x2a, 0xd0, 0x2c,
+  0x2a, 0xd0, 0x2c, 0x2a, 0xd0, 0x2c, 0x2a, 0xd0, 0x2c, 0x2a, 0xd0, 0x2c,
+  0x2a, 0xd0, 0x2c, 0x2a, 0xd0, 0x2c, 0x2a, 0xd0, 0x2c, 0x2a, 0xd1, 0x2c,
+  0x2a, 0xd0, 0x2c, 0x2a, 0xd0, 0x2b, 0x29, 0xcf, 0x2d, 0x28, 0xd1, 0x2c,
+  0x28, 0xd1, 0x2c, 0x2b, 0xcf, 0x2d, 0x2c, 0xcd, 0x2d, 0x28, 0xcc, 0x2a,
+  0x27, 0xd1, 0x2a, 0x2b, 0xdc, 0x31, 0x2f, 0xbe, 0x34, 0x19, 0x56, 0x19,
+  0x1b, 0x2e, 0x17, 0x1d, 0x23, 0x1b, 0x1d, 0x1e, 0x1c, 0x1e, 0x1d, 0x19,
+  0x1e, 0x1d, 0x19, 0x1c, 0x1c, 0x1b, 0x1d, 0x1e, 0x1b, 0x1d, 0x1e, 0x1c,
+  0x1e, 0x1f, 0x1d, 0x1f, 0x1f, 0x1e, 0x1f, 0x1e, 0x1d, 0x1f, 0x20, 0x1f,
+  0x22, 0x1f, 0x1f, 0x24, 0x21, 0x21, 0x27, 0x25, 0x22, 0x2a, 0x28, 0x24,
+  0x30, 0x2d, 0x29, 0x37, 0x33, 0x2e, 0x4a, 0x47, 0x3f, 0x6e, 0x68, 0x60,
+  0x73, 0x6a, 0x61, 0x94, 0x89, 0x7f, 0xe5, 0xdf, 0xd5, 0xe8, 0xe6, 0xe0,
+  0x95, 0x93, 0x8b, 0x34, 0x32, 0x2e, 0x1b, 0x1a, 0x17, 0x12, 0x12, 0x11,
+  0x0d, 0x0e, 0x0c, 0x0b, 0x0a, 0x0b, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04,
+  0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x03, 0x01, 0x00, 0x01, 0x00, 0x01,
+  0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x03, 0x01,
+  0x00, 0x02, 0x02, 0x03, 0x02, 0x02, 0x04, 0x03, 0x05, 0x06, 0x02, 0x07,
+  0x07, 0x04, 0x07, 0x08, 0x06, 0x07, 0x0d, 0x0c, 0x0a, 0x2e, 0x33, 0x29,
+  0x5d, 0x65, 0x53, 0x5a, 0x6b, 0x4f, 0x3d, 0x70, 0x34, 0x37, 0xb2, 0x36,
+  0x29, 0xc6, 0x2c, 0x2a, 0xce, 0x2c, 0x2e, 0xd6, 0x30, 0x2d, 0xd5, 0x2e,
+  0x2b, 0xd3, 0x2c, 0x2a, 0xd3, 0x2c, 0x29, 0xd1, 0x2b, 0x27, 0xcf, 0x2b,
+  0x27, 0xce, 0x2a, 0x28, 0xcd, 0x2b, 0x27, 0xcd, 0x2b, 0x27, 0xcd, 0x2b,
+  0x28, 0xcd, 0x2a, 0x27, 0xcd, 0x2a, 0x29, 0xce, 0x29, 0x29, 0xce, 0x29,
+  0x27, 0xcd, 0x29, 0x27, 0xcd, 0x29, 0x27, 0xcd, 0x29, 0x27, 0xcd, 0x29,
+  0x27, 0xcd, 0x29, 0x27, 0xcd, 0x29, 0x27, 0xcd, 0x29, 0x27, 0xcd, 0x29,
+  0x28, 0xce, 0x2a, 0x28, 0xce, 0x2a, 0x28, 0xce, 0x2a, 0x28, 0xce, 0x2a,
+  0x28, 0xce, 0x2a, 0x28, 0xce, 0x2a, 0x28, 0xce, 0x2a, 0x28, 0xce, 0x2a,
+  0x27, 0xcd, 0x29, 0x27, 0xcd, 0x29, 0x27, 0xcd, 0x29, 0x27, 0xcd, 0x29,
+  0x27, 0xcd, 0x29, 0x27, 0xcd, 0x29, 0x27, 0xcd, 0x29, 0x27, 0xcd, 0x29,
+  0x28, 0xcd, 0x2a, 0x28, 0xcd, 0x2a, 0x28, 0xcd, 0x2a, 0x28, 0xcd, 0x2a,
+  0x28, 0xcd, 0x2a, 0x28, 0xcd, 0x2a, 0x28, 0xcd, 0x2a, 0x28, 0xcd, 0x2b,
+  0x28, 0xce, 0x29, 0x28, 0xce, 0x2a, 0x28, 0xce, 0x29, 0x26, 0xcd, 0x2a,
+  0x25, 0xce, 0x29, 0x26, 0xce, 0x2a, 0x29, 0xcc, 0x2b, 0x29, 0xcb, 0x2c,
+  0x26, 0xcc, 0x2a, 0x25, 0xd0, 0x2a, 0x29, 0xdb, 0x30, 0x2d, 0xbc, 0x33,
+  0x17, 0x55, 0x18, 0x18, 0x2d, 0x15, 0x1b, 0x22, 0x19, 0x1a, 0x1d, 0x19,
+  0x1c, 0x1c, 0x18, 0x1d, 0x1c, 0x18, 0x1b, 0x1b, 0x1a, 0x1c, 0x1d, 0x1a,
+  0x1c, 0x1d, 0x1a, 0x1d, 0x1d, 0x1b, 0x1d, 0x1e, 0x1d, 0x1e, 0x1d, 0x1c,
+  0x1d, 0x1f, 0x1d, 0x1f, 0x1e, 0x1d, 0x21, 0x20, 0x1f, 0x24, 0x23, 0x20,
+  0x28, 0x26, 0x23, 0x2e, 0x2b, 0x27, 0x35, 0x33, 0x2e, 0x48, 0x46, 0x3f,
+  0x6c, 0x66, 0x5e, 0x73, 0x6a, 0x61, 0x8a, 0x7f, 0x75, 0xce, 0xc7, 0xbd,
+  0xd9, 0xd4, 0xcd, 0x96, 0x93, 0x8b, 0x39, 0x35, 0x31, 0x1b, 0x19, 0x17,
+  0x12, 0x12, 0x0f, 0x0d, 0x0d, 0x0b, 0x0b, 0x0a, 0x0a, 0x08, 0x08, 0x08,
+  0x04, 0x04, 0x04, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x01, 0x01,
+  0x02, 0x00, 0x01, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
+  0x00, 0x02, 0x00, 0x00, 0x01, 0x01, 0x02, 0x02, 0x01, 0x03, 0x02, 0x04,
+  0x07, 0x02, 0x08, 0x09, 0x06, 0x09, 0x08, 0x05, 0x07, 0x09, 0x0b, 0x08,
+  0x2b, 0x30, 0x26, 0x58, 0x61, 0x4f, 0x52, 0x64, 0x48, 0x35, 0x69, 0x2d,
+  0x33, 0xaf, 0x32, 0x25, 0xc3, 0x29, 0x26, 0xcb, 0x29, 0x2b, 0xd4, 0x2d,
+  0x2a, 0xd3, 0x2b, 0x29, 0xd2, 0x2a, 0x28, 0xd2, 0x2a, 0x26, 0xcf, 0x29,
+  0x25, 0xcd, 0x29, 0x25, 0xcc, 0x28, 0x24, 0xcb, 0x29, 0x24, 0xcb, 0x29,
+  0x25, 0xcb, 0x29, 0x26, 0xcb, 0x28, 0x25, 0xcb, 0x28, 0x26, 0xcc, 0x27,
+  0x26, 0xcc, 0x27, 0x25, 0xcb, 0x27, 0x25, 0xcb, 0x28, 0x25, 0xcb, 0x28,
+  0x25, 0xcb, 0x28, 0x25, 0xcb, 0x28, 0x25, 0xcb, 0x28, 0x25, 0xcb, 0x28,
+  0x25, 0xcb, 0x28, 0x26, 0xcc, 0x28, 0x26, 0xcc, 0x28, 0x26, 0xcc, 0x28,
+  0x26, 0xcc, 0x28, 0x26, 0xcc, 0x28, 0x26, 0xcc, 0x28, 0x26, 0xcc, 0x28,
+  0x26, 0xcc, 0x28, 0x25, 0xcb, 0x28, 0x25, 0xcb, 0x28, 0x25, 0xcb, 0x28,
+  0x25, 0xcb, 0x28, 0x25, 0xcb, 0x28, 0x25, 0xcb, 0x28, 0x25, 0xcb, 0x28,
+  0x25, 0xcb, 0x28, 0x26, 0xcb, 0x28, 0x26, 0xcb, 0x28, 0x26, 0xcb, 0x28,
+  0x26, 0xcb, 0x28, 0x26, 0xcb, 0x28, 0x26, 0xcb, 0x28, 0x26, 0xcb, 0x28,
+  0x26, 0xcb, 0x28, 0x26, 0xcc, 0x27, 0x26, 0xcc, 0x28, 0x26, 0xcc, 0x27,
+  0x23, 0xca, 0x28, 0x22, 0xcc, 0x27, 0x23, 0xcc, 0x28, 0x26, 0xca, 0x29,
+  0x28, 0xc8, 0x2a, 0x27, 0xcc, 0x2a, 0x24, 0xcf, 0x29, 0x27, 0xd9, 0x2e,
+  0x2b, 0xbb, 0x31, 0x15, 0x55, 0x16, 0x15, 0x2b, 0x13, 0x18, 0x21, 0x17,
+  0x18, 0x1b, 0x17, 0x1a, 0x1b, 0x18, 0x1b, 0x1b, 0x18, 0x1a, 0x1b, 0x1a,
+  0x1b, 0x1b, 0x1a, 0x1b, 0x1b, 0x1a, 0x1b, 0x1b, 0x19, 0x1b, 0x1c, 0x1b,
+  0x1c, 0x1d, 0x1b, 0x1b, 0x1d, 0x1b, 0x1d, 0x1d, 0x1b, 0x1f, 0x20, 0x1d,
+  0x22, 0x21, 0x1e, 0x26, 0x25, 0x21, 0x2c, 0x2a, 0x26, 0x35, 0x33, 0x2e,
+  0x48, 0x44, 0x3f, 0x6a, 0x63, 0x5c, 0x73, 0x69, 0x61, 0x7c, 0x72, 0x68,
+  0xaf, 0xa5, 0x9d, 0xc2, 0xb8, 0xb1, 0x94, 0x8e, 0x87, 0x3c, 0x37, 0x34,
+  0x1c, 0x1a, 0x16, 0x12, 0x11, 0x0e, 0x0e, 0x0d, 0x0c, 0x0c, 0x0b, 0x0a,
+  0x09, 0x08, 0x08, 0x04, 0x04, 0x04, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00,
+  0x01, 0x00, 0x02, 0x02, 0x00, 0x01, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x02, 0x02, 0x01,
+  0x03, 0x02, 0x03, 0x06, 0x02, 0x06, 0x09, 0x06, 0x09, 0x06, 0x04, 0x05,
+  0x08, 0x0a, 0x06, 0x29, 0x2f, 0x25, 0x52, 0x5d, 0x4b, 0x4b, 0x5f, 0x42,
+  0x30, 0x66, 0x2a, 0x31, 0xb0, 0x32, 0x22, 0xc2, 0x27, 0x24, 0xc9, 0x27,
+  0x29, 0xd3, 0x2c, 0x28, 0xd2, 0x2a, 0x27, 0xd0, 0x28, 0x26, 0xd1, 0x29,
+  0x24, 0xcd, 0x27, 0x23, 0xcc, 0x27, 0x23, 0xcb, 0x27, 0x22, 0xca, 0x27,
+  0x22, 0xca, 0x27, 0x23, 0xca, 0x27, 0x24, 0xca, 0x27, 0x24, 0xca, 0x27,
+  0x24, 0xcb, 0x26, 0x24, 0xcb, 0x26, 0x24, 0xcb, 0x26, 0x24, 0xca, 0x27,
+  0x24, 0xca, 0x27, 0x24, 0xca, 0x27, 0x24, 0xca, 0x27, 0x24, 0xca, 0x27,
+  0x24, 0xca, 0x27, 0x24, 0xca, 0x27, 0x24, 0xca, 0x27, 0x24, 0xcb, 0x27,
+  0x24, 0xcb, 0x27, 0x24, 0xcb, 0x27, 0x24, 0xcb, 0x27, 0x24, 0xcb, 0x27,
+  0x24, 0xcb, 0x27, 0x24, 0xca, 0x27, 0x24, 0xca, 0x27, 0x24, 0xca, 0x27,
+  0x24, 0xca, 0x27, 0x24, 0xca, 0x27, 0x24, 0xca, 0x27, 0x24, 0xca, 0x27,
+  0x24, 0xca, 0x27, 0x24, 0xca, 0x27, 0x24, 0xc9, 0x27, 0x24, 0xc9, 0x27,
+  0x24, 0xc9, 0x27, 0x24, 0xc9, 0x27, 0x24, 0xc9, 0x27, 0x24, 0xc9, 0x27,
+  0x24, 0xc9, 0x27, 0x24, 0xc9, 0x27, 0x24, 0xcb, 0x26, 0x24, 0xcb, 0x26,
+  0x24, 0xcb, 0x26, 0x21, 0xca, 0x26, 0x20, 0xcb, 0x25, 0x21, 0xcb, 0x26,
+  0x24, 0xc9, 0x27, 0x26, 0xc8, 0x28, 0x26, 0xcc, 0x29, 0x22, 0xcf, 0x29,
+  0x25, 0xd9, 0x2d, 0x2a, 0xbb, 0x2f, 0x14, 0x55, 0x15, 0x13, 0x2a, 0x12,
+  0x16, 0x20, 0x16, 0x16, 0x1a, 0x15, 0x18, 0x19, 0x16, 0x1a, 0x19, 0x16,
+  0x1a, 0x19, 0x18, 0x1a, 0x19, 0x18, 0x1a, 0x19, 0x18, 0x19, 0x19, 0x18,
+  0x19, 0x1b, 0x19, 0x1a, 0x1b, 0x19, 0x1a, 0x1b, 0x19, 0x1a, 0x1b, 0x1a,
+  0x1d, 0x1e, 0x1c, 0x1f, 0x1f, 0x1d, 0x24, 0x23, 0x20, 0x2a, 0x28, 0x24,
+  0x34, 0x32, 0x2f, 0x44, 0x41, 0x3c, 0x63, 0x5e, 0x56, 0x6e, 0x64, 0x5c,
+  0x6b, 0x61, 0x58, 0x8f, 0x84, 0x7c, 0xa6, 0x9a, 0x93, 0x88, 0x82, 0x7a,
+  0x3c, 0x36, 0x32, 0x1c, 0x1a, 0x16, 0x12, 0x10, 0x0e, 0x0e, 0x0c, 0x0c,
+  0x0c, 0x0b, 0x09, 0x09, 0x08, 0x08, 0x04, 0x04, 0x04, 0x01, 0x01, 0x01,
+  0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01,
+  0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01,
+  0x01, 0x01, 0x01, 0x03, 0x01, 0x03, 0x05, 0x01, 0x04, 0x08, 0x04, 0x07,
+  0x04, 0x04, 0x04, 0x07, 0x0b, 0x06, 0x28, 0x30, 0x26, 0x4e, 0x5b, 0x48,
+  0x48, 0x5d, 0x40, 0x32, 0x6a, 0x2b, 0x32, 0xb3, 0x32, 0x22, 0xc3, 0x27,
+  0x24, 0xca, 0x27, 0x29, 0xd3, 0x2c, 0x27, 0xd2, 0x2a, 0x25, 0xd1, 0x28,
+  0x25, 0xd2, 0x29, 0x23, 0xce, 0x27, 0x23, 0xcc, 0x27, 0x23, 0xcc, 0x27,
+  0x23, 0xcc, 0x28, 0x22, 0xcc, 0x27, 0x22, 0xcc, 0x27, 0x23, 0xcc, 0x27,
+  0x23, 0xcc, 0x27, 0x25, 0xcb, 0x26, 0x25, 0xcb, 0x27, 0x24, 0xcc, 0x27,
+  0x24, 0xcb, 0x28, 0x24, 0xcb, 0x28, 0x24, 0xcb, 0x28, 0x24, 0xcb, 0x28,
+  0x24, 0xcb, 0x28, 0x24, 0xcb, 0x28, 0x24, 0xcb, 0x28, 0x23, 0xca, 0x27,
+  0x23, 0xca, 0x27, 0x23, 0xca, 0x27, 0x23, 0xca, 0x27, 0x23, 0xca, 0x27,
+  0x23, 0xca, 0x27, 0x23, 0xca, 0x27, 0x23, 0xca, 0x27, 0x24, 0xcb, 0x28,
+  0x24, 0xcb, 0x28, 0x24, 0xcb, 0x28, 0x24, 0xcb, 0x28, 0x24, 0xcb, 0x28,
+  0x24, 0xcb, 0x28, 0x24, 0xcb, 0x28, 0x24, 0xcc, 0x28, 0x24, 0xca, 0x27,
+  0x24, 0xca, 0x27, 0x24, 0xca, 0x27, 0x24, 0xca, 0x27, 0x24, 0xca, 0x27,
+  0x24, 0xca, 0x27, 0x24, 0xca, 0x27, 0x24, 0xca, 0x27, 0x23, 0xcc, 0x26,
+  0x24, 0xcb, 0x27, 0x24, 0xcc, 0x27, 0x21, 0xcb, 0x27, 0x20, 0xcd, 0x26,
+  0x21, 0xcc, 0x27, 0x25, 0xc9, 0x27, 0x27, 0xc9, 0x28, 0x25, 0xce, 0x29,
+  0x21, 0xd0, 0x29, 0x25, 0xd9, 0x2c, 0x29, 0xbb, 0x2f, 0x13, 0x55, 0x15,
+  0x14, 0x2b, 0x12, 0x15, 0x1f, 0x15, 0x16, 0x19, 0x14, 0x17, 0x18, 0x15,
+  0x19, 0x18, 0x15, 0x19, 0x18, 0x17, 0x19, 0x18, 0x17, 0x19, 0x18, 0x17,
+  0x18, 0x18, 0x17, 0x18, 0x1a, 0x18, 0x19, 0x19, 0x18, 0x19, 0x1a, 0x19,
+  0x19, 0x1a, 0x19, 0x1c, 0x1c, 0x1b, 0x1e, 0x1d, 0x1c, 0x23, 0x22, 0x20,
+  0x28, 0x27, 0x24, 0x33, 0x31, 0x2e, 0x40, 0x3e, 0x39, 0x5a, 0x56, 0x4f,
+  0x64, 0x5c, 0x55, 0x5f, 0x56, 0x4d, 0x7d, 0x73, 0x6b, 0x92, 0x88, 0x80,
+  0x7a, 0x73, 0x6c, 0x36, 0x31, 0x2d, 0x1c, 0x19, 0x16, 0x12, 0x0f, 0x0e,
+  0x0d, 0x0c, 0x0b, 0x0b, 0x0a, 0x0a, 0x08, 0x08, 0x08, 0x03, 0x03, 0x03,
+  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01,
+  0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+  0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x03, 0x01, 0x02, 0x04, 0x01, 0x03,
+  0x08, 0x02, 0x05, 0x03, 0x02, 0x02, 0x07, 0x0c, 0x06, 0x27, 0x30, 0x25,
+  0x48, 0x56, 0x43, 0x43, 0x58, 0x3b, 0x30, 0x6a, 0x2c, 0x31, 0xb4, 0x32,
+  0x20, 0xc2, 0x26, 0x23, 0xc9, 0x27, 0x28, 0xd2, 0x2c, 0x25, 0xd1, 0x29,
+  0x23, 0xce, 0x27, 0x23, 0xd0, 0x28, 0x22, 0xcc, 0x26, 0x22, 0xcb, 0x26,
+  0x22, 0xcb, 0x26, 0x22, 0xcb, 0x27, 0x21, 0xca, 0x26, 0x21, 0xca, 0x26,
+  0x22, 0xca, 0x26, 0x22, 0xca, 0x26, 0x23, 0xca, 0x25, 0x23, 0xca, 0x26,
+  0x23, 0xcb, 0x26, 0x23, 0xca, 0x27, 0x23, 0xca, 0x27, 0x23, 0xca, 0x27,
+  0x23, 0xca, 0x27, 0x23, 0xca, 0x27, 0x23, 0xca, 0x27, 0x23, 0xc9, 0x27,
+  0x21, 0xc7, 0x26, 0x21, 0xc7, 0x26, 0x21, 0xc7, 0x26, 0x21, 0xc7, 0x26,
+  0x21, 0xc7, 0x26, 0x21, 0xc7, 0x26, 0x21, 0xc7, 0x26, 0x21, 0xc7, 0x26,
+  0x23, 0xc9, 0x27, 0x23, 0xca, 0x27, 0x23, 0xca, 0x27, 0x23, 0xca, 0x27,
+  0x23, 0xca, 0x27, 0x23, 0xca, 0x27, 0x23, 0xca, 0x27, 0x23, 0xca, 0x27,
+  0x23, 0xc8, 0x26, 0x23, 0xc8, 0x26, 0x23, 0xc8, 0x26, 0x23, 0xc8, 0x26,
+  0x23, 0xc8, 0x26, 0x23, 0xc8, 0x26, 0x23, 0xc8, 0x26, 0x23, 0xc8, 0x26,
+  0x22, 0xcb, 0x26, 0x23, 0xca, 0x26, 0x23, 0xca, 0x26, 0x20, 0xca, 0x26,
+  0x1f, 0xcb, 0x25, 0x20, 0xcb, 0x26, 0x23, 0xc8, 0x26, 0x25, 0xc8, 0x27,
+  0x24, 0xcc, 0x28, 0x20, 0xcd, 0x28, 0x24, 0xd7, 0x2b, 0x28, 0xb9, 0x2d,
+  0x12, 0x53, 0x14, 0x12, 0x2a, 0x11, 0x13, 0x1e, 0x13, 0x15, 0x17, 0x13,
+  0x15, 0x16, 0x13, 0x17, 0x16, 0x13, 0x17, 0x15, 0x15, 0x18, 0x15, 0x15,
+  0x17, 0x15, 0x15, 0x16, 0x16, 0x15, 0x17, 0x17, 0x15, 0x16, 0x16, 0x16,
+  0x17, 0x17, 0x18, 0x17, 0x18, 0x17, 0x1a, 0x1a, 0x19, 0x1c, 0x1a, 0x1a,
+  0x21, 0x1f, 0x1f, 0x26, 0x25, 0x22, 0x31, 0x30, 0x2c, 0x3b, 0x39, 0x34,
+  0x51, 0x4d, 0x46, 0x5a, 0x54, 0x4c, 0x54, 0x4c, 0x44, 0x6c, 0x64, 0x5b,
+  0x7f, 0x76, 0x6f, 0x6a, 0x64, 0x5d, 0x30, 0x2c, 0x28, 0x1b, 0x18, 0x16,
+  0x12, 0x0f, 0x0f, 0x0d, 0x0c, 0x0b, 0x0b, 0x09, 0x0a, 0x08, 0x07, 0x08,
+  0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
+  0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x03, 0x01, 0x02,
+  0x05, 0x01, 0x04, 0x08, 0x02, 0x06, 0x02, 0x02, 0x02, 0x06, 0x0b, 0x05,
+  0x1f, 0x28, 0x1e, 0x36, 0x44, 0x32, 0x31, 0x45, 0x2b, 0x26, 0x5d, 0x22,
+  0x2a, 0xaa, 0x2c, 0x19, 0xb7, 0x21, 0x1b, 0xbe, 0x21, 0x20, 0xc7, 0x26,
+  0x1d, 0xc5, 0x23, 0x1b, 0xc2, 0x22, 0x1c, 0xc3, 0x22, 0x1a, 0xc0, 0x21,
+  0x1a, 0xc0, 0x21, 0x1a, 0xbf, 0x21, 0x1b, 0xbf, 0x22, 0x1a, 0xbe, 0x21,
+  0x1a, 0xbe, 0x21, 0x1b, 0xbe, 0x21, 0x1b, 0xbe, 0x21, 0x1c, 0xbe, 0x20,
+  0x1c, 0xbe, 0x21, 0x1b, 0xbf, 0x21, 0x1b, 0xbe, 0x21, 0x1b, 0xbe, 0x21,
+  0x1b, 0xbe, 0x21, 0x1b, 0xbe, 0x21, 0x1b, 0xbe, 0x21, 0x1b, 0xbe, 0x21,
+  0x1b, 0xbe, 0x21, 0x1a, 0xbc, 0x21, 0x1a, 0xbc, 0x21, 0x1a, 0xbc, 0x21,
+  0x1a, 0xbc, 0x21, 0x1a, 0xbc, 0x21, 0x1a, 0xbc, 0x21, 0x1a, 0xbc, 0x21,
+  0x1a, 0xbc, 0x21, 0x1b, 0xbe, 0x21, 0x1b, 0xbe, 0x21, 0x1b, 0xbe, 0x21,
+  0x1b, 0xbe, 0x21, 0x1b, 0xbe, 0x21, 0x1b, 0xbe, 0x21, 0x1b, 0xbe, 0x21,
+  0x1b, 0xbf, 0x21, 0x1b, 0xbd, 0x21, 0x1b, 0xbd, 0x21, 0x1b, 0xbd, 0x21,
+  0x1b, 0xbd, 0x21, 0x1b, 0xbd, 0x21, 0x1b, 0xbd, 0x21, 0x1b, 0xbd, 0x21,
+  0x1b, 0xbd, 0x21, 0x1c, 0xbf, 0x21, 0x1b, 0xbe, 0x21, 0x1b, 0xbe, 0x21,
+  0x1a, 0xbe, 0x21, 0x19, 0xc0, 0x20, 0x19, 0xbf, 0x21, 0x1c, 0xbc, 0x21,
+  0x1e, 0xbd, 0x22, 0x1c, 0xc0, 0x22, 0x19, 0xc0, 0x22, 0x1c, 0xca, 0x25,
+  0x21, 0xad, 0x28, 0x0e, 0x4b, 0x10, 0x0c, 0x22, 0x0b, 0x0d, 0x17, 0x0d,
+  0x0e, 0x12, 0x0d, 0x0e, 0x0f, 0x0d, 0x11, 0x0f, 0x0d, 0x11, 0x0e, 0x0e,
+  0x11, 0x0e, 0x0e, 0x10, 0x0e, 0x0e, 0x0f, 0x0f, 0x0e, 0x0f, 0x10, 0x0e,
+  0x0f, 0x0f, 0x0f, 0x10, 0x0f, 0x10, 0x11, 0x12, 0x12, 0x13, 0x13, 0x13,
+  0x14, 0x13, 0x13, 0x19, 0x18, 0x18, 0x1e, 0x1e, 0x1b, 0x28, 0x27, 0x25,
+  0x2f, 0x2d, 0x2a, 0x3f, 0x3d, 0x37, 0x49, 0x44, 0x3d, 0x4c, 0x45, 0x3d,
+  0x5f, 0x58, 0x50, 0x6b, 0x65, 0x5e, 0x5d, 0x58, 0x52, 0x2d, 0x29, 0x25,
+  0x19, 0x17, 0x14, 0x11, 0x0e, 0x0e, 0x0d, 0x0b, 0x0b, 0x0b, 0x09, 0x0a,
+  0x08, 0x07, 0x08, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00,
+  0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x01,
+  0x03, 0x00, 0x03, 0x07, 0x01, 0x06, 0x09, 0x02, 0x06, 0x02, 0x02, 0x02,
+  0x05, 0x09, 0x04, 0x19, 0x23, 0x18, 0x28, 0x37, 0x25, 0x23, 0x36, 0x1e,
+  0x1c, 0x53, 0x1a, 0x24, 0xa2, 0x28, 0x14, 0xae, 0x1e, 0x15, 0xb5, 0x1d,
+  0x1a, 0xbe, 0x21, 0x17, 0xbc, 0x1f, 0x15, 0xb8, 0x1d, 0x15, 0xb9, 0x1e,
+  0x14, 0xb6, 0x1c, 0x14, 0xb7, 0x1c, 0x14, 0xb6, 0x1e, 0x15, 0xb6, 0x1e,
+  0x15, 0xb4, 0x1d, 0x15, 0xb3, 0x1c, 0x16, 0xb3, 0x1c, 0x15, 0xb3, 0x1c,
+  0x16, 0xb5, 0x1c, 0x16, 0xb5, 0x1c, 0x15, 0xb6, 0x1c, 0x15, 0xb5, 0x1d,
+  0x15, 0xb5, 0x1d, 0x15, 0xb5, 0x1d, 0x15, 0xb5, 0x1d, 0x15, 0xb5, 0x1d,
+  0x15, 0xb5, 0x1d, 0x15, 0xb5, 0x1d, 0x14, 0xb3, 0x1c, 0x14, 0xb4, 0x1c,
+  0x14, 0xb4, 0x1c, 0x14, 0xb4, 0x1c, 0x14, 0xb4, 0x1c, 0x14, 0xb4, 0x1c,
+  0x14, 0xb4, 0x1c, 0x14, 0xb3, 0x1c, 0x15, 0xb5, 0x1d, 0x15, 0xb5, 0x1d,
+  0x15, 0xb5, 0x1d, 0x15, 0xb5, 0x1d, 0x15, 0xb5, 0x1d, 0x15, 0xb5, 0x1d,
+  0x15, 0xb5, 0x1d, 0x15, 0xb5, 0x1d, 0x15, 0xb4, 0x1c, 0x15, 0xb4, 0x1c,
+  0x15, 0xb4, 0x1c, 0x15, 0xb4, 0x1c, 0x15, 0xb4, 0x1c, 0x15, 0xb4, 0x1c,
+  0x15, 0xb4, 0x1c, 0x15, 0xb4, 0x1c, 0x17, 0xb6, 0x1c, 0x16, 0xb4, 0x1c,
+  0x16, 0xb3, 0x1c, 0x15, 0xb3, 0x1c, 0x14, 0xb6, 0x1c, 0x14, 0xb5, 0x1c,
+  0x16, 0xb3, 0x1c, 0x18, 0xb3, 0x1e, 0x17, 0xb5, 0x1e, 0x14, 0xb6, 0x1e,
+  0x17, 0xc0, 0x21, 0x1b, 0xa4, 0x23, 0x0a, 0x44, 0x0c, 0x08, 0x1d, 0x07,
+  0x08, 0x12, 0x08, 0x08, 0x0c, 0x08, 0x09, 0x0a, 0x08, 0x0b, 0x0a, 0x08,
+  0x0c, 0x09, 0x09, 0x0c, 0x09, 0x08, 0x0b, 0x09, 0x08, 0x09, 0x0a, 0x08,
+  0x09, 0x0b, 0x08, 0x0a, 0x0a, 0x0a, 0x0a, 0x0b, 0x0a, 0x0d, 0x0e, 0x0d,
+  0x0e, 0x0f, 0x0e, 0x0f, 0x0e, 0x0d, 0x14, 0x13, 0x12, 0x19, 0x17, 0x15,
+  0x22, 0x21, 0x1e, 0x26, 0x25, 0x21, 0x33, 0x31, 0x2c, 0x3c, 0x39, 0x32,
+  0x47, 0x41, 0x3a, 0x56, 0x50, 0x4b, 0x5f, 0x59, 0x54, 0x55, 0x50, 0x4c,
+  0x2a, 0x26, 0x23, 0x17, 0x15, 0x14, 0x11, 0x0e, 0x0e, 0x0c, 0x0b, 0x0a,
+  0x0a, 0x0a, 0x09, 0x07, 0x07, 0x07, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02,
+  0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01,
+  0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+  0x02, 0x01, 0x01, 0x03, 0x00, 0x02, 0x08, 0x02, 0x08, 0x09, 0x03, 0x07,
+  0x02, 0x02, 0x02, 0x03, 0x08, 0x03, 0x11, 0x1b, 0x11, 0x16, 0x24, 0x15,
+  0x10, 0x23, 0x0d, 0x10, 0x45, 0x10, 0x1c, 0x97, 0x21, 0x0d, 0xa2, 0x18,
+  0x0d, 0xa8, 0x18, 0x12, 0xb2, 0x1b, 0x0f, 0xaf, 0x19, 0x0d, 0xab, 0x17,
+  0x0d, 0xab, 0x18, 0x0c, 0xa8, 0x17, 0x0c, 0xa9, 0x17, 0x0c, 0xa9, 0x19,
+  0x0e, 0xa8, 0x19, 0x0e, 0xa7, 0x18, 0x0d, 0xa6, 0x17, 0x0e, 0xa6, 0x17,
+  0x0e, 0xa6, 0x17, 0x0e, 0xa8, 0x17, 0x0e, 0xa8, 0x17, 0x0d, 0xa8, 0x17,
+  0x0d, 0xa8, 0x17, 0x0d, 0xa8, 0x17, 0x0d, 0xa8, 0x17, 0x0d, 0xa8, 0x17,
+  0x0d, 0xa8, 0x17, 0x0d, 0xa8, 0x17, 0x0d, 0xa8, 0x17, 0x0d, 0xa8, 0x17,
+  0x0d, 0xa8, 0x17, 0x0d, 0xa8, 0x17, 0x0d, 0xa8, 0x17, 0x0d, 0xa8, 0x17,
+  0x0d, 0xa8, 0x17, 0x0d, 0xa8, 0x17, 0x0d, 0xa8, 0x17, 0x0d, 0xa8, 0x17,
+  0x0d, 0xa8, 0x17, 0x0d, 0xa8, 0x17, 0x0d, 0xa8, 0x17, 0x0d, 0xa8, 0x17,
+  0x0d, 0xa8, 0x17, 0x0d, 0xa8, 0x17, 0x0d, 0xa8, 0x17, 0x0d, 0xa8, 0x17,
+  0x0d, 0xa8, 0x17, 0x0d, 0xa8, 0x17, 0x0d, 0xa8, 0x17, 0x0d, 0xa8, 0x17,
+  0x0d, 0xa8, 0x17, 0x0d, 0xa8, 0x17, 0x0d, 0xa8, 0x17, 0x0f, 0xa8, 0x17,
+  0x0e, 0xa6, 0x17, 0x0e, 0xa6, 0x17, 0x0e, 0xa6, 0x17, 0x0d, 0xa8, 0x17,
+  0x0c, 0xa8, 0x17, 0x0e, 0xa6, 0x17, 0x10, 0xa6, 0x19, 0x0f, 0xa7, 0x18,
+  0x0d, 0xa7, 0x18, 0x0f, 0xb2, 0x1b, 0x13, 0x98, 0x1d, 0x05, 0x3b, 0x08,
+  0x01, 0x15, 0x01, 0x01, 0x0b, 0x01, 0x01, 0x07, 0x01, 0x02, 0x03, 0x01,
+  0x04, 0x03, 0x01, 0x05, 0x02, 0x01, 0x05, 0x02, 0x01, 0x04, 0x02, 0x01,
+  0x02, 0x03, 0x01, 0x02, 0x03, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
+  0x07, 0x07, 0x07, 0x08, 0x08, 0x08, 0x07, 0x07, 0x06, 0x0d, 0x0c, 0x0b,
+  0x11, 0x0f, 0x0e, 0x19, 0x18, 0x16, 0x1a, 0x19, 0x16, 0x21, 0x20, 0x1d,
+  0x2b, 0x29, 0x23, 0x3f, 0x3a, 0x34, 0x49, 0x45, 0x41, 0x4c, 0x48, 0x44,
+  0x49, 0x45, 0x42, 0x26, 0x23, 0x21, 0x15, 0x12, 0x11, 0x10, 0x0e, 0x0e,
+  0x0c, 0x0a, 0x0a, 0x09, 0x09, 0x09, 0x07, 0x07, 0x07, 0x03, 0x03, 0x03,
+  0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+  0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
+  0x00, 0x00, 0x00, 0x02, 0x01, 0x01, 0x03, 0x00, 0x02, 0x07, 0x01, 0x06,
+  0x07, 0x02, 0x05, 0x01, 0x02, 0x02, 0x03, 0x08, 0x03, 0x0e, 0x19, 0x0f,
+  0x10, 0x1d, 0x0f, 0x0a, 0x1b, 0x08, 0x0d, 0x41, 0x0e, 0x19, 0x92, 0x1f,
+  0x09, 0x9b, 0x16, 0x09, 0xa0, 0x16, 0x0f, 0xab, 0x19, 0x0b, 0xa7, 0x17,
+  0x08, 0xa3, 0x15, 0x09, 0xa4, 0x16, 0x07, 0xa1, 0x15, 0x07, 0xa2, 0x15,
+  0x07, 0xa2, 0x16, 0x09, 0xa0, 0x16, 0x09, 0x9f, 0x15, 0x09, 0x9e, 0x15,
+  0x0a, 0x9e, 0x15, 0x0a, 0x9e, 0x15, 0x0b, 0xa0, 0x15, 0x0b, 0xa0, 0x15,
+  0x09, 0xa0, 0x15, 0x09, 0xa0, 0x15, 0x09, 0xa0, 0x15, 0x09, 0xa0, 0x15,
+  0x09, 0xa0, 0x15, 0x09, 0xa0, 0x15, 0x09, 0xa0, 0x15, 0x09, 0xa0, 0x15,
+  0x0a, 0xa1, 0x15, 0x0a, 0xa1, 0x15, 0x0a, 0xa1, 0x15, 0x0a, 0xa1, 0x15,
+  0x0a, 0xa1, 0x15, 0x0a, 0xa1, 0x15, 0x0a, 0xa1, 0x15, 0x0a, 0xa1, 0x15,
+  0x09, 0xa0, 0x15, 0x09, 0xa0, 0x15, 0x09, 0xa0, 0x15, 0x09, 0xa0, 0x15,
+  0x09, 0xa0, 0x15, 0x09, 0xa0, 0x15, 0x09, 0xa0, 0x15, 0x09, 0xa0, 0x15,
+  0x09, 0xa0, 0x15, 0x09, 0xa0, 0x15, 0x09, 0xa0, 0x15, 0x09, 0xa0, 0x15,
+  0x09, 0xa0, 0x15, 0x09, 0xa0, 0x15, 0x09, 0xa0, 0x15, 0x09, 0xa0, 0x15,
+  0x0b, 0xa1, 0x15, 0x0a, 0x9f, 0x15, 0x0a, 0x9e, 0x15, 0x09, 0x9f, 0x15,
+  0x08, 0xa1, 0x15, 0x08, 0xa1, 0x15, 0x0b, 0x9e, 0x15, 0x0c, 0x9f, 0x15,
+  0x0c, 0xa1, 0x16, 0x09, 0xa2, 0x16, 0x0c, 0xad, 0x19, 0x12, 0x94, 0x1a,
+  0x04, 0x38, 0x06, 0x00, 0x13, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x05, 0x00,
+  0x01, 0x02, 0x00, 0x03, 0x02, 0x00, 0x03, 0x01, 0x00, 0x03, 0x01, 0x00,
+  0x02, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01,
+  0x01, 0x02, 0x02, 0x04, 0x05, 0x05, 0x05, 0x05, 0x06, 0x05, 0x05, 0x04,
+  0x0b, 0x0a, 0x0a, 0x0f, 0x0d, 0x0c, 0x17, 0x16, 0x14, 0x15, 0x14, 0x12,
+  0x1a, 0x18, 0x15, 0x21, 0x1f, 0x1a, 0x37, 0x33, 0x2e, 0x3a, 0x37, 0x34,
+  0x3b, 0x38, 0x36, 0x3e, 0x3b, 0x39, 0x23, 0x21, 0x1f, 0x13, 0x10, 0x10,
+  0x0f, 0x0d, 0x0d, 0x0b, 0x0a, 0x0a, 0x09, 0x09, 0x09, 0x07, 0x06, 0x07,
+  0x03, 0x02, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
+  0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x01,
+  0x05, 0x01, 0x03, 0x06, 0x02, 0x04, 0x02, 0x02, 0x02, 0x03, 0x08, 0x03,
+  0x0d, 0x17, 0x0d, 0x0b, 0x18, 0x0b, 0x05, 0x17, 0x05, 0x0b, 0x3f, 0x0e,
+  0x16, 0x8d, 0x1d, 0x07, 0x94, 0x14, 0x05, 0x99, 0x14, 0x0c, 0xa4, 0x18,
+  0x08, 0xa1, 0x15, 0x04, 0x9d, 0x14, 0x06, 0x9f, 0x15, 0x04, 0x9a, 0x14,
+  0x04, 0x9b, 0x14, 0x04, 0x9c, 0x14, 0x05, 0x99, 0x14, 0x05, 0x99, 0x14,
+  0x05, 0x99, 0x14, 0x06, 0x99, 0x14, 0x06, 0x99, 0x14, 0x09, 0x99, 0x14,
+  0x09, 0x99, 0x14, 0x06, 0x99, 0x14, 0x06, 0x99, 0x14, 0x06, 0x99, 0x14,
+  0x06, 0x99, 0x14, 0x06, 0x99, 0x14, 0x06, 0x99, 0x14, 0x06, 0x99, 0x14,
+  0x06, 0x99, 0x14, 0x08, 0x9b, 0x14, 0x08, 0x9b, 0x14, 0x08, 0x9b, 0x14,
+  0x08, 0x9b, 0x14, 0x08, 0x9b, 0x14, 0x08, 0x9b, 0x14, 0x08, 0x9b, 0x14,
+  0x08, 0x9b, 0x14, 0x06, 0x99, 0x14, 0x06, 0x99, 0x14, 0x06, 0x99, 0x14,
+  0x06, 0x99, 0x14, 0x06, 0x99, 0x14, 0x06, 0x99, 0x14, 0x06, 0x99, 0x14,
+  0x06, 0x99, 0x14, 0x06, 0x99, 0x14, 0x06, 0x99, 0x14, 0x06, 0x99, 0x14,
+  0x06, 0x99, 0x14, 0x06, 0x99, 0x14, 0x06, 0x99, 0x14, 0x06, 0x99, 0x14,
+  0x06, 0x99, 0x14, 0x07, 0x9a, 0x14, 0x06, 0x99, 0x14, 0x06, 0x99, 0x14,
+  0x05, 0x99, 0x14, 0x03, 0x9b, 0x14, 0x04, 0x9b, 0x14, 0x09, 0x99, 0x14,
+  0x0a, 0x98, 0x13, 0x0b, 0x9e, 0x15, 0x07, 0xa0, 0x15, 0x0b, 0xaa, 0x18,
+  0x11, 0x92, 0x19, 0x04, 0x37, 0x06, 0x00, 0x13, 0x00, 0x00, 0x0b, 0x00,
+  0x00, 0x04, 0x00, 0x00, 0x01, 0x00, 0x02, 0x02, 0x00, 0x02, 0x00, 0x00,
+  0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
+  0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x02, 0x03, 0x03, 0x03, 0x04, 0x04,
+  0x03, 0x04, 0x04, 0x0b, 0x0b, 0x0b, 0x0d, 0x0e, 0x0c, 0x15, 0x15, 0x13,
+  0x13, 0x12, 0x10, 0x14, 0x13, 0x10, 0x17, 0x17, 0x13, 0x2e, 0x2b, 0x27,
+  0x2a, 0x28, 0x26, 0x29, 0x27, 0x26, 0x33, 0x30, 0x30, 0x20, 0x1e, 0x1e,
+  0x0f, 0x0f, 0x0f, 0x0e, 0x0c, 0x0c, 0x0b, 0x09, 0x0a, 0x09, 0x07, 0x09,
+  0x06, 0x04, 0x07, 0x02, 0x01, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00,
+  0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00,
+  0x02, 0x00, 0x00, 0x03, 0x00, 0x02, 0x05, 0x02, 0x03, 0x02, 0x02, 0x02,
+  0x03, 0x08, 0x03, 0x0c, 0x16, 0x0c, 0x09, 0x15, 0x09, 0x03, 0x14, 0x03,
+  0x0a, 0x3d, 0x0d, 0x15, 0x8a, 0x1c, 0x04, 0x90, 0x13, 0x02, 0x94, 0x13,
+  0x0b, 0xa1, 0x17, 0x06, 0x9d, 0x15, 0x03, 0x9a, 0x14, 0x06, 0x9c, 0x15,
+  0x02, 0x97, 0x13, 0x02, 0x98, 0x13, 0x01, 0x98, 0x13, 0x03, 0x96, 0x13,
+  0x03, 0x96, 0x13, 0x04, 0x96, 0x13, 0x05, 0x95, 0x13, 0x05, 0x95, 0x13,
+  0x08, 0x95, 0x13, 0x08, 0x95, 0x13, 0x05, 0x96, 0x13, 0x05, 0x96, 0x13,
+  0x05, 0x96, 0x13, 0x05, 0x96, 0x13, 0x05, 0x96, 0x13, 0x05, 0x96, 0x13,
+  0x05, 0x96, 0x13, 0x05, 0x96, 0x13, 0x07, 0x98, 0x13, 0x07, 0x98, 0x13,
+  0x07, 0x98, 0x13, 0x07, 0x98, 0x13, 0x07, 0x98, 0x13, 0x07, 0x98, 0x13,
+  0x07, 0x98, 0x13, 0x07, 0x98, 0x13, 0x05, 0x96, 0x13, 0x05, 0x96, 0x13,
+  0x05, 0x96, 0x13, 0x05, 0x96, 0x13, 0x05, 0x96, 0x13, 0x05, 0x96, 0x13,
+  0x05, 0x96, 0x13, 0x05, 0x96, 0x13, 0x05, 0x95, 0x13, 0x05, 0x95, 0x13,
+  0x05, 0x95, 0x13, 0x05, 0x95, 0x13, 0x05, 0x95, 0x13, 0x05, 0x95, 0x13,
+  0x05, 0x95, 0x13, 0x05, 0x96, 0x13, 0x05, 0x96, 0x13, 0x05, 0x95, 0x13,
+  0x05, 0x95, 0x13, 0x03, 0x95, 0x13, 0x01, 0x98, 0x13, 0x02, 0x98, 0x13,
+  0x08, 0x96, 0x13, 0x09, 0x94, 0x12, 0x09, 0x9b, 0x14, 0x05, 0x9d, 0x14,
+  0x09, 0xa7, 0x17, 0x10, 0x90, 0x18, 0x03, 0x36, 0x06, 0x00, 0x12, 0x00,
+  0x00, 0x0b, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x00, 0x02, 0x02, 0x00,
+  0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01,
+  0x01, 0x02, 0x02, 0x02, 0x03, 0x03, 0x0b, 0x0b, 0x0a, 0x0d, 0x0d, 0x0c,
+  0x14, 0x14, 0x13, 0x11, 0x0f, 0x0e, 0x10, 0x0e, 0x0c, 0x12, 0x11, 0x0f,
+  0x24, 0x23, 0x21, 0x1c, 0x1b, 0x1a, 0x1b, 0x1a, 0x1a, 0x26, 0x24, 0x25,
+  0x1b, 0x1a, 0x1a, 0x0f, 0x0e, 0x0e, 0x0c, 0x0b, 0x0b, 0x0a, 0x08, 0x09,
+  0x08, 0x06, 0x09, 0x05, 0x03, 0x07, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00,
+  0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01,
+  0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00,
+  0x02, 0x00, 0x00, 0x04, 0x00, 0x01, 0x04, 0x00, 0x03, 0x05, 0x02, 0x05,
+  0x02, 0x01, 0x02, 0x02, 0x06, 0x02, 0x0b, 0x15, 0x0b, 0x09, 0x16, 0x08,
+  0x03, 0x14, 0x03, 0x09, 0x3d, 0x0c, 0x14, 0x8b, 0x1c, 0x04, 0x8f, 0x14,
+  0x02, 0x95, 0x13, 0x0b, 0xa2, 0x17, 0x08, 0x9e, 0x15, 0x04, 0x9b, 0x14,
+  0x07, 0x9e, 0x15, 0x03, 0x99, 0x13, 0x02, 0x99, 0x14, 0x02, 0x99, 0x14,
+  0x04, 0x96, 0x14, 0x03, 0x96, 0x14, 0x04, 0x96, 0x14, 0x06, 0x95, 0x14,
+  0x07, 0x95, 0x14, 0x09, 0x95, 0x14, 0x09, 0x95, 0x14, 0x07, 0x98, 0x14,
+  0x07, 0x98, 0x14, 0x07, 0x98, 0x14, 0x07, 0x98, 0x14, 0x07, 0x98, 0x14,
+  0x07, 0x98, 0x14, 0x07, 0x98, 0x14, 0x07, 0x98, 0x14, 0x07, 0x98, 0x14,
+  0x08, 0x98, 0x14, 0x08, 0x98, 0x14, 0x08, 0x98, 0x14, 0x08, 0x98, 0x14,
+  0x08, 0x98, 0x14, 0x08, 0x98, 0x14, 0x07, 0x98, 0x14, 0x07, 0x98, 0x14,
+  0x07, 0x98, 0x14, 0x07, 0x98, 0x14, 0x07, 0x98, 0x14, 0x07, 0x98, 0x14,
+  0x07, 0x98, 0x14, 0x07, 0x98, 0x14, 0x07, 0x98, 0x14, 0x07, 0x97, 0x14,
+  0x07, 0x97, 0x14, 0x07, 0x97, 0x14, 0x07, 0x97, 0x14, 0x07, 0x97, 0x14,
+  0x07, 0x97, 0x14, 0x07, 0x97, 0x14, 0x07, 0x98, 0x14, 0x07, 0x96, 0x14,
+  0x07, 0x95, 0x14, 0x06, 0x95, 0x14, 0x03, 0x96, 0x14, 0x01, 0x98, 0x14,
+  0x02, 0x98, 0x14, 0x08, 0x96, 0x14, 0x09, 0x96, 0x13, 0x09, 0x9a, 0x13,
+  0x04, 0x9b, 0x13, 0x0a, 0xa6, 0x17, 0x10, 0x8f, 0x18, 0x03, 0x36, 0x06,
+  0x00, 0x13, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00,
+  0x02, 0x01, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00,
+  0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02, 0x02, 0x02, 0x0b, 0x0b, 0x0a,
+  0x0d, 0x0d, 0x0b, 0x14, 0x14, 0x13, 0x10, 0x0e, 0x0d, 0x0f, 0x0d, 0x0c,
+  0x11, 0x11, 0x10, 0x1d, 0x1d, 0x1c, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16,
+  0x1d, 0x1c, 0x1d, 0x17, 0x15, 0x17, 0x0f, 0x0e, 0x10, 0x0a, 0x0a, 0x0b,
+  0x09, 0x08, 0x0a, 0x08, 0x06, 0x08, 0x04, 0x02, 0x06, 0x02, 0x00, 0x03,
+  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+  0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
+  0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x01, 0x04, 0x00, 0x03,
+  0x06, 0x02, 0x05, 0x02, 0x01, 0x02, 0x02, 0x05, 0x02, 0x0b, 0x15, 0x0b,
+  0x0a, 0x16, 0x08, 0x03, 0x14, 0x03, 0x08, 0x3b, 0x0b, 0x14, 0x8a, 0x1c,
+  0x04, 0x8f, 0x14, 0x02, 0x95, 0x13, 0x0b, 0xa2, 0x18, 0x09, 0x9f, 0x15,
+  0x05, 0x9c, 0x15, 0x08, 0x9f, 0x15, 0x03, 0x9b, 0x14, 0x03, 0x9a, 0x14,
+  0x03, 0x99, 0x14, 0x04, 0x97, 0x14, 0x04, 0x97, 0x14, 0x05, 0x97, 0x14,
+  0x07, 0x95, 0x14, 0x08, 0x95, 0x14, 0x09, 0x96, 0x14, 0x09, 0x97, 0x14,
+  0x09, 0x99, 0x14, 0x09, 0x99, 0x14, 0x09, 0x99, 0x14, 0x09, 0x99, 0x14,
+  0x09, 0x99, 0x14, 0x09, 0x99, 0x14, 0x09, 0x99, 0x14, 0x09, 0x99, 0x14,
+  0x07, 0x99, 0x14, 0x08, 0x99, 0x14, 0x08, 0x99, 0x14, 0x08, 0x99, 0x14,
+  0x08, 0x99, 0x14, 0x08, 0x99, 0x14, 0x08, 0x99, 0x14, 0x07, 0x99, 0x14,
+  0x09, 0x9a, 0x14, 0x09, 0x99, 0x14, 0x09, 0x99, 0x14, 0x09, 0x99, 0x14,
+  0x09, 0x99, 0x14, 0x09, 0x99, 0x14, 0x09, 0x99, 0x14, 0x09, 0x9a, 0x14,
+  0x08, 0x98, 0x14, 0x08, 0x98, 0x14, 0x08, 0x98, 0x14, 0x08, 0x98, 0x14,
+  0x08, 0x98, 0x14, 0x08, 0x98, 0x14, 0x08, 0x98, 0x14, 0x08, 0x98, 0x14,
+  0x08, 0x96, 0x14, 0x08, 0x95, 0x14, 0x07, 0x95, 0x14, 0x04, 0x97, 0x14,
+  0x02, 0x99, 0x14, 0x03, 0x99, 0x14, 0x08, 0x97, 0x14, 0x0a, 0x96, 0x14,
+  0x08, 0x99, 0x13, 0x03, 0x9a, 0x13, 0x09, 0xa5, 0x17, 0x10, 0x8e, 0x18,
+  0x03, 0x35, 0x06, 0x00, 0x12, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x03, 0x01,
+  0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00,
+  0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02,
+  0x0b, 0x0b, 0x0a, 0x0d, 0x0d, 0x0b, 0x13, 0x14, 0x13, 0x0f, 0x0d, 0x0c,
+  0x0d, 0x0b, 0x0c, 0x11, 0x10, 0x11, 0x18, 0x18, 0x19, 0x12, 0x12, 0x12,
+  0x12, 0x12, 0x12, 0x15, 0x15, 0x15, 0x13, 0x11, 0x13, 0x0f, 0x0e, 0x10,
+  0x0a, 0x09, 0x0a, 0x09, 0x08, 0x09, 0x07, 0x06, 0x08, 0x03, 0x02, 0x06,
+  0x02, 0x00, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01,
+  0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x03, 0x00, 0x01,
+  0x03, 0x00, 0x02, 0x05, 0x02, 0x05, 0x02, 0x01, 0x02, 0x02, 0x04, 0x03,
+  0x0b, 0x13, 0x0c, 0x09, 0x15, 0x09, 0x02, 0x14, 0x03, 0x08, 0x3b, 0x0a,
+  0x14, 0x88, 0x1b, 0x05, 0x8e, 0x14, 0x04, 0x94, 0x14, 0x0c, 0xa1, 0x17,
+  0x0a, 0x9f, 0x15, 0x06, 0x9c, 0x15, 0x08, 0x9d, 0x15, 0x05, 0x9a, 0x13,
+  0x05, 0x9a, 0x14, 0x05, 0x98, 0x14, 0x06, 0x96, 0x14, 0x06, 0x96, 0x14,
+  0x07, 0x96, 0x14, 0x08, 0x96, 0x14, 0x08, 0x96, 0x14, 0x09, 0x97, 0x14,
+  0x09, 0x97, 0x14, 0x09, 0x99, 0x14, 0x09, 0x99, 0x14, 0x09, 0x99, 0x14,
+  0x09, 0x99, 0x14, 0x09, 0x99, 0x14, 0x09, 0x99, 0x14, 0x09, 0x99, 0x14,
+  0x09, 0x99, 0x14, 0x07, 0x98, 0x14, 0x08, 0x98, 0x14, 0x08, 0x98, 0x14,
+  0x08, 0x98, 0x14, 0x08, 0x98, 0x14, 0x08, 0x98, 0x14, 0x08, 0x98, 0x14,
+  0x07, 0x98, 0x14, 0x09, 0x99, 0x14, 0x09, 0x98, 0x14, 0x09, 0x98, 0x14,
+  0x09, 0x98, 0x14, 0x09, 0x98, 0x14, 0x09, 0x98, 0x14, 0x09, 0x98, 0x14,
+  0x09, 0x99, 0x14, 0x07, 0x97, 0x14, 0x07, 0x97, 0x14, 0x07, 0x97, 0x14,
+  0x07, 0x97, 0x14, 0x07, 0x97, 0x14, 0x07, 0x97, 0x14, 0x07, 0x97, 0x14,
+  0x07, 0x97, 0x14, 0x07, 0x98, 0x14, 0x08, 0x96, 0x14, 0x08, 0x96, 0x14,
+  0x06, 0x96, 0x14, 0x03, 0x99, 0x14, 0x04, 0x99, 0x14, 0x08, 0x96, 0x14,
+  0x0a, 0x97, 0x14, 0x08, 0x99, 0x14, 0x03, 0x9a, 0x14, 0x08, 0xa5, 0x17,
+  0x0f, 0x8f, 0x19, 0x03, 0x36, 0x06, 0x00, 0x13, 0x00, 0x00, 0x0a, 0x00,
+  0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x02, 0x00, 0x00,
+  0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
+  0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x02, 0x00, 0x00, 0x01,
+  0x02, 0x02, 0x02, 0x09, 0x0a, 0x09, 0x0a, 0x0b, 0x0a, 0x11, 0x12, 0x12,
+  0x0d, 0x0c, 0x0c, 0x0c, 0x0b, 0x0b, 0x10, 0x10, 0x10, 0x16, 0x17, 0x17,
+  0x0f, 0x10, 0x10, 0x0f, 0x10, 0x10, 0x11, 0x12, 0x12, 0x11, 0x11, 0x11,
+  0x0d, 0x0d, 0x0e, 0x0a, 0x0a, 0x0a, 0x08, 0x07, 0x08, 0x06, 0x05, 0x06,
+  0x03, 0x02, 0x05, 0x01, 0x00, 0x02, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01,
+  0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01,
+  0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00,
+  0x01, 0x01, 0x00, 0x02, 0x00, 0x01, 0x04, 0x01, 0x03, 0x01, 0x00, 0x01,
+  0x02, 0x04, 0x03, 0x0a, 0x12, 0x0c, 0x08, 0x15, 0x09, 0x02, 0x15, 0x02,
+  0x08, 0x3b, 0x09, 0x13, 0x87, 0x1a, 0x05, 0x8f, 0x14, 0x06, 0x95, 0x14,
+  0x0c, 0x9f, 0x17, 0x0b, 0x9e, 0x15, 0x08, 0x9c, 0x15, 0x06, 0x9a, 0x14,
+  0x07, 0x99, 0x14, 0x07, 0x99, 0x14, 0x07, 0x97, 0x14, 0x07, 0x95, 0x14,
+  0x07, 0x96, 0x14, 0x07, 0x96, 0x14, 0x08, 0x97, 0x14, 0x08, 0x97, 0x14,
+  0x08, 0x98, 0x14, 0x08, 0x98, 0x14, 0x08, 0x97, 0x14, 0x08, 0x97, 0x14,
+  0x08, 0x97, 0x14, 0x08, 0x97, 0x14, 0x08, 0x97, 0x14, 0x08, 0x97, 0x14,
+  0x08, 0x97, 0x14, 0x08, 0x97, 0x14, 0x08, 0x98, 0x14, 0x08, 0x98, 0x14,
+  0x08, 0x98, 0x14, 0x08, 0x98, 0x14, 0x08, 0x98, 0x14, 0x08, 0x98, 0x14,
+  0x08, 0x98, 0x14, 0x08, 0x98, 0x14, 0x08, 0x97, 0x14, 0x08, 0x96, 0x14,
+  0x08, 0x96, 0x14, 0x08, 0x96, 0x14, 0x08, 0x96, 0x14, 0x08, 0x96, 0x14,
+  0x08, 0x96, 0x14, 0x08, 0x97, 0x14, 0x06, 0x95, 0x14, 0x06, 0x95, 0x14,
+  0x06, 0x95, 0x14, 0x06, 0x95, 0x14, 0x06, 0x95, 0x14, 0x06, 0x95, 0x14,
+  0x06, 0x95, 0x14, 0x06, 0x96, 0x14, 0x06, 0x98, 0x14, 0x08, 0x97, 0x14,
+  0x08, 0x97, 0x14, 0x07, 0x97, 0x14, 0x05, 0x99, 0x14, 0x05, 0x99, 0x14,
+  0x08, 0x97, 0x13, 0x09, 0x97, 0x15, 0x07, 0x9a, 0x15, 0x02, 0x9c, 0x14,
+  0x06, 0xa7, 0x18, 0x0d, 0x90, 0x19, 0x03, 0x36, 0x06, 0x00, 0x13, 0x00,
+  0x00, 0x0b, 0x00, 0x01, 0x04, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01,
+  0x00, 0x00, 0x01, 0x01, 0x00, 0x02, 0x01, 0x00, 0x02, 0x01, 0x02, 0x03,
+  0x00, 0x01, 0x02, 0x02, 0x03, 0x03, 0x09, 0x0a, 0x0a, 0x08, 0x0a, 0x0a,
+  0x0e, 0x10, 0x10, 0x0a, 0x0c, 0x0b, 0x0a, 0x0b, 0x0a, 0x0e, 0x0f, 0x0e,
+  0x15, 0x17, 0x16, 0x0e, 0x10, 0x0f, 0x0c, 0x0e, 0x0e, 0x0f, 0x11, 0x10,
+  0x0f, 0x11, 0x0f, 0x0b, 0x0c, 0x0a, 0x0a, 0x0b, 0x09, 0x06, 0x07, 0x06,
+  0x04, 0x04, 0x04, 0x03, 0x03, 0x03, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
+  0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+  0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x03, 0x01, 0x02,
+  0x01, 0x00, 0x01, 0x02, 0x04, 0x03, 0x0a, 0x11, 0x0c, 0x07, 0x14, 0x09,
+  0x02, 0x14, 0x02, 0x08, 0x3b, 0x08, 0x13, 0x86, 0x19, 0x05, 0x8e, 0x14,
+  0x05, 0x94, 0x14, 0x0b, 0x9d, 0x16, 0x0b, 0x9e, 0x15, 0x09, 0x9c, 0x15,
+  0x05, 0x98, 0x13, 0x07, 0x98, 0x14, 0x07, 0x98, 0x14, 0x08, 0x96, 0x14,
+  0x07, 0x95, 0x14, 0x07, 0x95, 0x14, 0x07, 0x95, 0x14, 0x07, 0x96, 0x14,
+  0x07, 0x96, 0x14, 0x07, 0x98, 0x14, 0x07, 0x98, 0x14, 0x07, 0x96, 0x14,
+  0x07, 0x95, 0x14, 0x07, 0x95, 0x14, 0x07, 0x95, 0x14, 0x07, 0x95, 0x14,
+  0x07, 0x95, 0x14, 0x07, 0x95, 0x14, 0x07, 0x95, 0x14, 0x07, 0x96, 0x14,
+  0x07, 0x96, 0x14, 0x07, 0x96, 0x14, 0x07, 0x96, 0x14, 0x07, 0x96, 0x14,
+  0x07, 0x96, 0x14, 0x07, 0x96, 0x14, 0x07, 0x96, 0x14, 0x07, 0x95, 0x14,
+  0x07, 0x95, 0x14, 0x07, 0x95, 0x14, 0x07, 0x95, 0x14, 0x07, 0x95, 0x14,
+  0x07, 0x95, 0x14, 0x07, 0x95, 0x14, 0x07, 0x95, 0x14, 0x05, 0x94, 0x14,
+  0x05, 0x94, 0x14, 0x05, 0x94, 0x14, 0x05, 0x94, 0x14, 0x05, 0x94, 0x14,
+  0x05, 0x94, 0x14, 0x05, 0x94, 0x14, 0x05, 0x95, 0x14, 0x04, 0x98, 0x14,
+  0x06, 0x96, 0x14, 0x07, 0x96, 0x14, 0x07, 0x96, 0x14, 0x05, 0x98, 0x14,
+  0x04, 0x98, 0x14, 0x07, 0x96, 0x13, 0x08, 0x97, 0x15, 0x07, 0x9a, 0x15,
+  0x02, 0x9c, 0x14, 0x05, 0xa7, 0x18, 0x0c, 0x90, 0x19, 0x03, 0x36, 0x06,
+  0x00, 0x13, 0x00, 0x00, 0x0a, 0x00, 0x01, 0x03, 0x02, 0x01, 0x00, 0x01,
+  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+  0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x02, 0x01, 0x00, 0x02,
+  0x01, 0x02, 0x03, 0x00, 0x01, 0x02, 0x02, 0x02, 0x03, 0x07, 0x09, 0x09,
+  0x06, 0x09, 0x09, 0x0d, 0x0f, 0x0f, 0x09, 0x0c, 0x0a, 0x08, 0x0a, 0x08,
+  0x0d, 0x0e, 0x0c, 0x14, 0x16, 0x14, 0x0c, 0x0e, 0x0d, 0x0b, 0x0d, 0x0c,
+  0x0e, 0x11, 0x0f, 0x0e, 0x10, 0x0d, 0x09, 0x0a, 0x07, 0x09, 0x0a, 0x08,
+  0x05, 0x06, 0x05, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
+  0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00,
+  0x02, 0x00, 0x02, 0x00, 0x00, 0x02, 0x02, 0x04, 0x03, 0x09, 0x12, 0x0c,
+  0x08, 0x14, 0x09, 0x02, 0x14, 0x02, 0x08, 0x3b, 0x08, 0x14, 0x86, 0x19,
+  0x05, 0x8e, 0x14, 0x05, 0x93, 0x13, 0x0a, 0x9c, 0x15, 0x0a, 0x9d, 0x14,
+  0x08, 0x9b, 0x14, 0x06, 0x98, 0x13, 0x06, 0x98, 0x13, 0x05, 0x96, 0x13,
+  0x05, 0x95, 0x13, 0x05, 0x94, 0x13, 0x05, 0x94, 0x13, 0x05, 0x94, 0x13,
+  0x05, 0x95, 0x13, 0x05, 0x95, 0x13, 0x05, 0x97, 0x13, 0x05, 0x96, 0x13,
+  0x05, 0x95, 0x13, 0x05, 0x94, 0x13, 0x05, 0x94, 0x13, 0x05, 0x94, 0x13,
+  0x05, 0x94, 0x13, 0x05, 0x94, 0x13, 0x05, 0x94, 0x13, 0x05, 0x94, 0x13,
+  0x05, 0x95, 0x13, 0x05, 0x95, 0x13, 0x05, 0x95, 0x13, 0x05, 0x95, 0x13,
+  0x05, 0x95, 0x13, 0x05, 0x95, 0x13, 0x05, 0x95, 0x13, 0x05, 0x95, 0x13,
+  0x05, 0x94, 0x13, 0x05, 0x94, 0x13, 0x05, 0x94, 0x13, 0x05, 0x94, 0x13,
+  0x05, 0x94, 0x13, 0x05, 0x94, 0x13, 0x05, 0x94, 0x13, 0x05, 0x94, 0x13,
+  0x05, 0x95, 0x13, 0x05, 0x95, 0x13, 0x05, 0x95, 0x13, 0x05, 0x95, 0x13,
+  0x05, 0x95, 0x13, 0x05, 0x95, 0x13, 0x05, 0x95, 0x13, 0x05, 0x94, 0x13,
+  0x03, 0x96, 0x13, 0x05, 0x95, 0x13, 0x05, 0x95, 0x13, 0x05, 0x94, 0x13,
+  0x03, 0x96, 0x13, 0x03, 0x96, 0x13, 0x06, 0x94, 0x13, 0x06, 0x95, 0x14,
+  0x06, 0x99, 0x15, 0x02, 0x9b, 0x14, 0x04, 0xa6, 0x17, 0x0c, 0x8f, 0x18,
+  0x03, 0x35, 0x06, 0x00, 0x12, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x02, 0x01,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+  0x00, 0x00, 0x01, 0x00, 0x01, 0x02, 0x00, 0x00, 0x01, 0x01, 0x02, 0x02,
+  0x07, 0x08, 0x08, 0x07, 0x09, 0x08, 0x0e, 0x10, 0x0e, 0x0a, 0x0c, 0x09,
+  0x07, 0x0a, 0x06, 0x0c, 0x0d, 0x0c, 0x13, 0x13, 0x12, 0x0d, 0x0d, 0x0b,
+  0x0d, 0x0e, 0x0c, 0x0e, 0x10, 0x0f, 0x0e, 0x0f, 0x0e, 0x08, 0x09, 0x07,
+  0x06, 0x07, 0x05, 0x04, 0x04, 0x04, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02,
+  0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
+  0x02, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x02, 0x02, 0x04, 0x03,
+  0x09, 0x12, 0x0c, 0x08, 0x14, 0x09, 0x02, 0x14, 0x02, 0x08, 0x3b, 0x08,
+  0x14, 0x87, 0x19, 0x05, 0x8f, 0x14, 0x04, 0x93, 0x12, 0x09, 0x9b, 0x15,
+  0x09, 0x9d, 0x14, 0x08, 0x9c, 0x14, 0x06, 0x99, 0x13, 0x06, 0x98, 0x13,
+  0x04, 0x96, 0x13, 0x04, 0x95, 0x13, 0x04, 0x94, 0x12, 0x04, 0x94, 0x12,
+  0x04, 0x94, 0x12, 0x04, 0x94, 0x12, 0x04, 0x94, 0x12, 0x04, 0x96, 0x13,
+  0x04, 0x95, 0x13, 0x04, 0x95, 0x13, 0x04, 0x94, 0x12, 0x04, 0x94, 0x12,
+  0x04, 0x94, 0x12, 0x04, 0x94, 0x12, 0x04, 0x94, 0x12, 0x04, 0x94, 0x12,
+  0x04, 0x94, 0x12, 0x04, 0x94, 0x12, 0x04, 0x94, 0x12, 0x04, 0x94, 0x12,
+  0x04, 0x94, 0x12, 0x04, 0x94, 0x12, 0x04, 0x94, 0x12, 0x04, 0x94, 0x12,
+  0x04, 0x94, 0x12, 0x04, 0x94, 0x12, 0x04, 0x94, 0x12, 0x04, 0x94, 0x12,
+  0x04, 0x94, 0x12, 0x04, 0x94, 0x12, 0x04, 0x94, 0x12, 0x04, 0x94, 0x12,
+  0x04, 0x94, 0x12, 0x05, 0x96, 0x13, 0x05, 0x96, 0x13, 0x05, 0x96, 0x13,
+  0x05, 0x96, 0x13, 0x05, 0x96, 0x13, 0x05, 0x96, 0x13, 0x05, 0x96, 0x13,
+  0x05, 0x95, 0x13, 0x03, 0x95, 0x13, 0x04, 0x94, 0x12, 0x04, 0x94, 0x12,
+  0x04, 0x94, 0x12, 0x03, 0x95, 0x13, 0x03, 0x96, 0x13, 0x05, 0x95, 0x13,
+  0x06, 0x95, 0x13, 0x06, 0x99, 0x14, 0x02, 0x9c, 0x14, 0x05, 0xa6, 0x17,
+  0x0c, 0x8e, 0x18, 0x03, 0x35, 0x06, 0x00, 0x12, 0x00, 0x00, 0x09, 0x00,
+  0x00, 0x02, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00,
+  0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x01,
+  0x01, 0x01, 0x02, 0x05, 0x07, 0x08, 0x07, 0x09, 0x08, 0x0f, 0x11, 0x0e,
+  0x0a, 0x0c, 0x09, 0x06, 0x0a, 0x04, 0x0c, 0x0c, 0x0b, 0x12, 0x11, 0x10,
+  0x0c, 0x0d, 0x0a, 0x0d, 0x0e, 0x0c, 0x0d, 0x0f, 0x0e, 0x0d, 0x0f, 0x0d,
+  0x08, 0x09, 0x07, 0x04, 0x05, 0x03, 0x04, 0x03, 0x04, 0x03, 0x03, 0x03,
+  0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
+  0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x02,
+  0x02, 0x04, 0x03, 0x09, 0x11, 0x0c, 0x07, 0x14, 0x09, 0x02, 0x14, 0x02,
+  0x08, 0x3b, 0x08, 0x15, 0x89, 0x1b, 0x05, 0x90, 0x14, 0x03, 0x94, 0x12,
+  0x09, 0x9c, 0x15, 0x0a, 0x9e, 0x15, 0x0a, 0x9e, 0x15, 0x07, 0x9c, 0x14,
+  0x07, 0x9b, 0x14, 0x06, 0x98, 0x14, 0x06, 0x98, 0x14, 0x06, 0x97, 0x14,
+  0x06, 0x97, 0x14, 0x06, 0x97, 0x14, 0x06, 0x97, 0x13, 0x06, 0x97, 0x13,
+  0x06, 0x99, 0x14, 0x06, 0x98, 0x14, 0x06, 0x98, 0x14, 0x06, 0x97, 0x13,
+  0x06, 0x97, 0x13, 0x06, 0x97, 0x13, 0x06, 0x97, 0x13, 0x06, 0x97, 0x13,
+  0x06, 0x97, 0x13, 0x06, 0x97, 0x13, 0x06, 0x97, 0x13, 0x06, 0x97, 0x13,
+  0x06, 0x97, 0x13, 0x06, 0x97, 0x13, 0x06, 0x97, 0x13, 0x06, 0x97, 0x13,
+  0x06, 0x97, 0x13, 0x06, 0x97, 0x13, 0x06, 0x97, 0x13, 0x06, 0x97, 0x13,
+  0x06, 0x97, 0x13, 0x06, 0x97, 0x13, 0x06, 0x97, 0x13, 0x06, 0x97, 0x13,
+  0x06, 0x97, 0x13, 0x06, 0x97, 0x13, 0x08, 0x98, 0x14, 0x08, 0x98, 0x14,
+  0x08, 0x98, 0x14, 0x08, 0x98, 0x14, 0x08, 0x98, 0x14, 0x08, 0x98, 0x14,
+  0x08, 0x98, 0x14, 0x08, 0x98, 0x14, 0x06, 0x98, 0x15, 0x06, 0x98, 0x14,
+  0x07, 0x97, 0x14, 0x07, 0x97, 0x13, 0x05, 0x99, 0x14, 0x05, 0x9a, 0x14,
+  0x07, 0x98, 0x15, 0x08, 0x98, 0x14, 0x08, 0x9d, 0x15, 0x04, 0x9f, 0x15,
+  0x07, 0xa9, 0x18, 0x0e, 0x90, 0x19, 0x03, 0x36, 0x06, 0x00, 0x14, 0x00,
+  0x01, 0x0a, 0x01, 0x01, 0x04, 0x02, 0x03, 0x03, 0x02, 0x03, 0x03, 0x02,
+  0x02, 0x03, 0x01, 0x02, 0x03, 0x01, 0x02, 0x03, 0x01, 0x02, 0x02, 0x02,
+  0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x02, 0x03,
+  0x02, 0x02, 0x03, 0x02, 0x02, 0x02, 0x06, 0x07, 0x08, 0x09, 0x0b, 0x09,
+  0x11, 0x13, 0x10, 0x0a, 0x0c, 0x09, 0x05, 0x08, 0x04, 0x0c, 0x0c, 0x0a,
+  0x10, 0x10, 0x0f, 0x0a, 0x0b, 0x09, 0x0b, 0x0b, 0x09, 0x0b, 0x0c, 0x0b,
+  0x0b, 0x0c, 0x0b, 0x07, 0x08, 0x06, 0x03, 0x04, 0x02, 0x04, 0x03, 0x03,
+  0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x02,
+  0x00, 0x01, 0x02, 0x02, 0x03, 0x03, 0x08, 0x10, 0x0b, 0x06, 0x13, 0x08,
+  0x02, 0x14, 0x02, 0x08, 0x3b, 0x08, 0x16, 0x8b, 0x1b, 0x05, 0x92, 0x14,
+  0x03, 0x95, 0x13, 0x09, 0x9d, 0x16, 0x0a, 0xa0, 0x16, 0x0a, 0xa0, 0x15,
+  0x08, 0x9e, 0x14, 0x08, 0x9e, 0x14, 0x08, 0x9b, 0x14, 0x08, 0x9a, 0x14,
+  0x08, 0x9a, 0x15, 0x08, 0x9a, 0x15, 0x08, 0x9a, 0x15, 0x08, 0x9a, 0x14,
+  0x08, 0x9a, 0x14, 0x08, 0x9c, 0x14, 0x07, 0x9b, 0x14, 0x09, 0x9a, 0x14,
+  0x09, 0x9a, 0x14, 0x09, 0x9a, 0x14, 0x09, 0x9a, 0x14, 0x09, 0x9a, 0x14,
+  0x09, 0x9a, 0x14, 0x09, 0x9a, 0x14, 0x09, 0x9a, 0x14, 0x09, 0x9a, 0x14,
+  0x09, 0x9a, 0x14, 0x09, 0x9a, 0x14, 0x09, 0x9a, 0x14, 0x09, 0x9a, 0x14,
+  0x09, 0x9a, 0x14, 0x09, 0x9a, 0x14, 0x09, 0x9a, 0x14, 0x09, 0x9a, 0x14,
+  0x09, 0x9a, 0x14, 0x09, 0x9a, 0x14, 0x09, 0x9a, 0x14, 0x09, 0x9a, 0x14,
+  0x09, 0x9a, 0x14, 0x09, 0x9a, 0x14, 0x09, 0x9a, 0x14, 0x09, 0x9b, 0x14,
+  0x09, 0x9b, 0x14, 0x09, 0x9b, 0x14, 0x09, 0x9b, 0x14, 0x09, 0x9b, 0x14,
+  0x09, 0x9b, 0x14, 0x09, 0x9b, 0x14, 0x09, 0x9b, 0x14, 0x07, 0x9b, 0x16,
+  0x08, 0x9b, 0x15, 0x09, 0x9a, 0x15, 0x09, 0x9a, 0x14, 0x07, 0x9d, 0x14,
+  0x08, 0x9d, 0x14, 0x0a, 0x9b, 0x16, 0x0a, 0x9b, 0x15, 0x0a, 0x9f, 0x16,
+  0x06, 0xa1, 0x15, 0x08, 0xab, 0x19, 0x0f, 0x93, 0x1a, 0x03, 0x38, 0x07,
+  0x00, 0x15, 0x01, 0x01, 0x0b, 0x01, 0x02, 0x05, 0x04, 0x04, 0x05, 0x04,
+  0x04, 0x05, 0x04, 0x03, 0x04, 0x02, 0x04, 0x04, 0x02, 0x04, 0x04, 0x03,
+  0x04, 0x03, 0x04, 0x04, 0x04, 0x04, 0x04, 0x03, 0x03, 0x04, 0x03, 0x03,
+  0x02, 0x03, 0x04, 0x02, 0x03, 0x04, 0x02, 0x02, 0x03, 0x07, 0x08, 0x09,
+  0x0a, 0x0c, 0x09, 0x12, 0x14, 0x11, 0x0a, 0x0c, 0x09, 0x05, 0x08, 0x04,
+  0x0b, 0x0c, 0x0a, 0x0f, 0x0e, 0x0d, 0x09, 0x0a, 0x08, 0x08, 0x0a, 0x08,
+  0x08, 0x0a, 0x08, 0x0a, 0x0b, 0x09, 0x07, 0x08, 0x06, 0x03, 0x04, 0x02,
+  0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
+  0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00,
+  0x02, 0x00, 0x02, 0x00, 0x01, 0x02, 0x02, 0x03, 0x02, 0x08, 0x10, 0x0a,
+  0x06, 0x13, 0x08, 0x02, 0x14, 0x02, 0x08, 0x3b, 0x08, 0x17, 0x8d, 0x1c,
+  0x05, 0x93, 0x14, 0x02, 0x96, 0x13, 0x09, 0x9f, 0x16, 0x0b, 0xa2, 0x17,
+  0x0c, 0xa4, 0x16, 0x0a, 0xa2, 0x15, 0x0a, 0xa1, 0x15, 0x0b, 0x9f, 0x15,
+  0x0b, 0x9e, 0x15, 0x0b, 0x9e, 0x17, 0x0b, 0x9e, 0x17, 0x0b, 0x9e, 0x17,
+  0x0b, 0x9e, 0x15, 0x0b, 0x9e, 0x15, 0x0b, 0x9f, 0x15, 0x0a, 0x9f, 0x15,
+  0x0c, 0x9e, 0x15, 0x0c, 0x9e, 0x15, 0x0c, 0x9e, 0x15, 0x0c, 0x9e, 0x15,
+  0x0c, 0x9e, 0x15, 0x0c, 0x9e, 0x15, 0x0c, 0x9e, 0x15, 0x0c, 0x9e, 0x15,
+  0x0c, 0x9e, 0x15, 0x0c, 0x9e, 0x15, 0x0c, 0x9e, 0x15, 0x0c, 0x9e, 0x15,
+  0x0c, 0x9e, 0x15, 0x0c, 0x9e, 0x15, 0x0c, 0x9e, 0x15, 0x0c, 0x9e, 0x15,
+  0x0c, 0x9e, 0x15, 0x0c, 0x9e, 0x15, 0x0c, 0x9e, 0x15, 0x0c, 0x9e, 0x15,
+  0x0c, 0x9e, 0x15, 0x0c, 0x9e, 0x15, 0x0c, 0x9e, 0x15, 0x0c, 0x9e, 0x15,
+  0x0c, 0x9e, 0x15, 0x0c, 0x9e, 0x15, 0x0c, 0x9e, 0x15, 0x0c, 0x9e, 0x15,
+  0x0c, 0x9e, 0x15, 0x0c, 0x9e, 0x15, 0x0c, 0x9e, 0x15, 0x0c, 0x9e, 0x15,
+  0x0b, 0x9f, 0x17, 0x0b, 0x9f, 0x17, 0x0c, 0x9e, 0x17, 0x0c, 0x9f, 0x15,
+  0x0a, 0xa1, 0x15, 0x0b, 0xa2, 0x15, 0x0d, 0x9f, 0x17, 0x0d, 0xa0, 0x16,
+  0x0c, 0xa3, 0x16, 0x09, 0xa5, 0x16, 0x0b, 0xaf, 0x1a, 0x11, 0x96, 0x1b,
+  0x04, 0x3a, 0x07, 0x01, 0x16, 0x02, 0x02, 0x0c, 0x03, 0x03, 0x08, 0x06,
+  0x06, 0x08, 0x06, 0x07, 0x08, 0x06, 0x05, 0x07, 0x03, 0x06, 0x07, 0x03,
+  0x06, 0x07, 0x04, 0x06, 0x05, 0x06, 0x06, 0x06, 0x06, 0x06, 0x05, 0x05,
+  0x05, 0x05, 0x05, 0x03, 0x05, 0x05, 0x03, 0x06, 0x06, 0x02, 0x03, 0x03,
+  0x08, 0x09, 0x09, 0x0b, 0x0d, 0x0a, 0x13, 0x16, 0x13, 0x0a, 0x0c, 0x09,
+  0x03, 0x06, 0x03, 0x0a, 0x0b, 0x09, 0x0d, 0x0c, 0x0b, 0x07, 0x08, 0x06,
+  0x06, 0x08, 0x06, 0x06, 0x08, 0x06, 0x08, 0x09, 0x07, 0x07, 0x08, 0x06,
+  0x03, 0x04, 0x02, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
+  0x02, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x02, 0x01, 0x03, 0x02,
+  0x07, 0x10, 0x0a, 0x05, 0x13, 0x07, 0x01, 0x14, 0x02, 0x07, 0x3b, 0x08,
+  0x18, 0x8f, 0x1d, 0x06, 0x95, 0x15, 0x03, 0x97, 0x13, 0x0b, 0xa1, 0x17,
+  0x0d, 0xa5, 0x18, 0x0e, 0xa9, 0x18, 0x0d, 0xa7, 0x17, 0x0d, 0xa6, 0x17,
+  0x0d, 0xa5, 0x17, 0x0d, 0xa4, 0x17, 0x0d, 0xa4, 0x19, 0x0d, 0xa4, 0x19,
+  0x0d, 0xa4, 0x19, 0x0d, 0xa4, 0x17, 0x0d, 0xa4, 0x17, 0x0d, 0xa5, 0x17,
+  0x0d, 0xa5, 0x17, 0x0e, 0xa3, 0x17, 0x0e, 0xa4, 0x17, 0x0e, 0xa4, 0x17,
+  0x0e, 0xa4, 0x17, 0x0e, 0xa4, 0x17, 0x0e, 0xa4, 0x17, 0x0e, 0xa4, 0x17,
+  0x0e, 0xa4, 0x17, 0x0e, 0xa4, 0x17, 0x0e, 0xa4, 0x17, 0x0e, 0xa4, 0x17,
+  0x0e, 0xa4, 0x17, 0x0e, 0xa4, 0x17, 0x0e, 0xa4, 0x17, 0x0e, 0xa4, 0x17,
+  0x0e, 0xa4, 0x17, 0x0e, 0xa4, 0x17, 0x0e, 0xa4, 0x17, 0x0e, 0xa4, 0x17,
+  0x0e, 0xa4, 0x17, 0x0e, 0xa4, 0x17, 0x0e, 0xa4, 0x17, 0x0e, 0xa4, 0x17,
+  0x0e, 0xa4, 0x17, 0x0e, 0xa3, 0x17, 0x0e, 0xa3, 0x17, 0x0e, 0xa3, 0x17,
+  0x0e, 0xa3, 0x17, 0x0e, 0xa3, 0x17, 0x0e, 0xa3, 0x17, 0x0e, 0xa3, 0x17,
+  0x0e, 0xa3, 0x17, 0x0d, 0xa5, 0x18, 0x0d, 0xa5, 0x18, 0x0f, 0xa4, 0x19,
+  0x0e, 0xa4, 0x17, 0x0c, 0xa7, 0x17, 0x0d, 0xa7, 0x17, 0x10, 0xa5, 0x19,
+  0x10, 0xa5, 0x18, 0x0e, 0xa8, 0x18, 0x0b, 0xa9, 0x18, 0x0d, 0xb3, 0x1c,
+  0x13, 0x9b, 0x1d, 0x05, 0x3d, 0x08, 0x04, 0x18, 0x03, 0x05, 0x0f, 0x06,
+  0x06, 0x0b, 0x08, 0x09, 0x0a, 0x08, 0x09, 0x0a, 0x08, 0x08, 0x09, 0x07,
+  0x08, 0x09, 0x06, 0x08, 0x09, 0x07, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
+  0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x06, 0x08, 0x08, 0x06, 0x09, 0x09,
+  0x04, 0x06, 0x03, 0x09, 0x0a, 0x09, 0x0c, 0x0e, 0x0b, 0x15, 0x18, 0x14,
+  0x0a, 0x0d, 0x0a, 0x03, 0x06, 0x02, 0x08, 0x0a, 0x07, 0x0c, 0x0c, 0x0b,
+  0x08, 0x08, 0x07, 0x07, 0x08, 0x07, 0x08, 0x09, 0x07, 0x08, 0x09, 0x07,
+  0x05, 0x06, 0x04, 0x02, 0x03, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+  0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
+  0x00, 0x01, 0x00, 0x02, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x02,
+  0x01, 0x03, 0x02, 0x07, 0x0f, 0x09, 0x05, 0x12, 0x07, 0x01, 0x15, 0x02,
+  0x07, 0x3c, 0x08, 0x19, 0x92, 0x1e, 0x06, 0x97, 0x14, 0x04, 0x98, 0x13,
+  0x0c, 0xa3, 0x17, 0x0e, 0xa9, 0x19, 0x11, 0xad, 0x1a, 0x0f, 0xac, 0x19,
+  0x0f, 0xac, 0x19, 0x10, 0xaa, 0x19, 0x10, 0xaa, 0x19, 0x10, 0xa9, 0x1a,
+  0x10, 0xa9, 0x1a, 0x10, 0xa9, 0x1a, 0x10, 0xaa, 0x19, 0x10, 0xaa, 0x19,
+  0x10, 0xab, 0x19, 0x10, 0xab, 0x19, 0x0f, 0xa9, 0x19, 0x0f, 0xa9, 0x19,
+  0x0f, 0xa9, 0x19, 0x0f, 0xa9, 0x19, 0x0f, 0xa9, 0x19, 0x0f, 0xa9, 0x19,
+  0x0f, 0xa9, 0x19, 0x0f, 0xa9, 0x19, 0x0f, 0xa9, 0x19, 0x0f, 0xa9, 0x19,
+  0x0f, 0xa9, 0x19, 0x0f, 0xa9, 0x19, 0x0f, 0xa9, 0x19, 0x0f, 0xa9, 0x19,
+  0x0f, 0xa9, 0x19, 0x0f, 0xa9, 0x19, 0x0f, 0xa9, 0x19, 0x0f, 0xa9, 0x19,
+  0x0f, 0xa9, 0x19, 0x0f, 0xa9, 0x19, 0x0f, 0xa9, 0x19, 0x0f, 0xa9, 0x19,
+  0x0f, 0xa9, 0x19, 0x0f, 0xa9, 0x19, 0x0f, 0xa8, 0x19, 0x0f, 0xa8, 0x19,
+  0x0f, 0xa8, 0x19, 0x0f, 0xa8, 0x19, 0x0f, 0xa8, 0x19, 0x0f, 0xa8, 0x19,
+  0x0f, 0xa8, 0x19, 0x0f, 0xa8, 0x19, 0x0f, 0xaa, 0x19, 0x10, 0xaa, 0x19,
+  0x10, 0xa9, 0x1a, 0x10, 0xaa, 0x19, 0x0e, 0xac, 0x19, 0x0f, 0xac, 0x19,
+  0x12, 0xab, 0x1a, 0x12, 0xab, 0x1a, 0x0f, 0xad, 0x1a, 0x0c, 0xae, 0x19,
+  0x0f, 0xb9, 0x1d, 0x16, 0xa0, 0x1f, 0x06, 0x41, 0x0a, 0x08, 0x1b, 0x06,
+  0x09, 0x11, 0x0a, 0x0a, 0x0d, 0x0b, 0x0b, 0x0c, 0x0b, 0x0b, 0x0c, 0x0b,
+  0x0a, 0x0c, 0x0b, 0x0b, 0x0b, 0x0a, 0x0b, 0x0b, 0x09, 0x0b, 0x0a, 0x0a,
+  0x0b, 0x0b, 0x0a, 0x0b, 0x0b, 0x0a, 0x0b, 0x0b, 0x0a, 0x09, 0x0b, 0x0a,
+  0x0a, 0x0b, 0x0b, 0x05, 0x08, 0x04, 0x0a, 0x0c, 0x08, 0x0d, 0x0f, 0x0c,
+  0x16, 0x19, 0x16, 0x0b, 0x0e, 0x0a, 0x02, 0x05, 0x02, 0x06, 0x07, 0x04,
+  0x0d, 0x0b, 0x0a, 0x0a, 0x09, 0x07, 0x0a, 0x09, 0x08, 0x0b, 0x0b, 0x0a,
+  0x09, 0x09, 0x08, 0x04, 0x05, 0x03, 0x01, 0x02, 0x01, 0x01, 0x01, 0x02,
+  0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x02, 0x01, 0x00, 0x02, 0x00, 0x00,
+  0x00, 0x01, 0x01, 0x01, 0x03, 0x02, 0x05, 0x0e, 0x09, 0x04, 0x12, 0x07,
+  0x01, 0x15, 0x02, 0x06, 0x3b, 0x08, 0x1a, 0x93, 0x1f, 0x06, 0x98, 0x14,
+  0x04, 0x99, 0x13, 0x0c, 0xa4, 0x17, 0x0f, 0xac, 0x19, 0x12, 0xb1, 0x1b,
+  0x11, 0xb0, 0x1b, 0x11, 0xb0, 0x1b, 0x11, 0xae, 0x1a, 0x11, 0xaf, 0x1a,
+  0x11, 0xad, 0x1b, 0x11, 0xad, 0x1b, 0x11, 0xae, 0x1b, 0x11, 0xaf, 0x1a,
+  0x11, 0xaf, 0x1a, 0x11, 0xb0, 0x1a, 0x11, 0xb0, 0x1a, 0x10, 0xae, 0x1a,
+  0x10, 0xae, 0x1a, 0x10, 0xae, 0x1a, 0x10, 0xae, 0x1a, 0x10, 0xae, 0x1a,
+  0x10, 0xae, 0x1a, 0x10, 0xae, 0x1a, 0x10, 0xae, 0x1a, 0x10, 0xae, 0x1a,
+  0x10, 0xae, 0x1a, 0x10, 0xae, 0x1a, 0x10, 0xae, 0x1a, 0x10, 0xae, 0x1a,
+  0x10, 0xae, 0x1a, 0x10, 0xae, 0x1a, 0x10, 0xae, 0x1a, 0x10, 0xae, 0x1a,
+  0x10, 0xae, 0x1a, 0x10, 0xae, 0x1a, 0x10, 0xae, 0x1a, 0x10, 0xae, 0x1a,
+  0x10, 0xae, 0x1a, 0x10, 0xae, 0x1a, 0x10, 0xae, 0x1a, 0x10, 0xac, 0x1a,
+  0x10, 0xac, 0x1a, 0x10, 0xac, 0x1a, 0x10, 0xac, 0x1a, 0x10, 0xac, 0x1a,
+  0x10, 0xac, 0x1a, 0x10, 0xac, 0x1a, 0x10, 0xac, 0x1a, 0x10, 0xae, 0x1a,
+  0x11, 0xae, 0x1a, 0x11, 0xad, 0x1b, 0x11, 0xae, 0x1a, 0x10, 0xb0, 0x1a,
+  0x10, 0xb0, 0x1a, 0x13, 0xb0, 0x1b, 0x13, 0xaf, 0x1b, 0x11, 0xb1, 0x1b,
+  0x0e, 0xb1, 0x1a, 0x11, 0xbd, 0x1e, 0x18, 0xa3, 0x20, 0x07, 0x44, 0x0a,
+  0x0a, 0x1e, 0x09, 0x0c, 0x13, 0x0c, 0x0d, 0x0f, 0x0d, 0x0d, 0x0e, 0x0d,
+  0x0d, 0x0e, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0c, 0x0d, 0x0d, 0x0c,
+  0x0d, 0x0d, 0x0c, 0x0d, 0x0d, 0x0c, 0x0d, 0x0d, 0x0c, 0x0d, 0x0d, 0x0c,
+  0x0b, 0x0d, 0x0b, 0x0c, 0x0e, 0x0c, 0x05, 0x0a, 0x05, 0x0a, 0x0e, 0x08,
+  0x0e, 0x10, 0x0c, 0x18, 0x1b, 0x16, 0x0b, 0x0e, 0x09, 0x02, 0x03, 0x01,
+  0x04, 0x05, 0x02, 0x0c, 0x0b, 0x0a, 0x09, 0x07, 0x07, 0x09, 0x08, 0x07,
+  0x0c, 0x0c, 0x0b, 0x09, 0x09, 0x08, 0x03, 0x03, 0x02, 0x02, 0x02, 0x01,
+  0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
+  0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x02, 0x01, 0x00,
+  0x02, 0x00, 0x00, 0x00, 0x01, 0x02, 0x01, 0x03, 0x02, 0x04, 0x0d, 0x08,
+  0x03, 0x12, 0x06, 0x00, 0x15, 0x01, 0x06, 0x3b, 0x08, 0x19, 0x93, 0x1e,
+  0x06, 0x98, 0x14, 0x03, 0x99, 0x13, 0x0b, 0xa4, 0x17, 0x0f, 0xad, 0x1a,
+  0x12, 0xb2, 0x1c, 0x12, 0xb2, 0x1b, 0x12, 0xb1, 0x1b, 0x10, 0xaf, 0x1b,
+  0x10, 0xaf, 0x1b, 0x10, 0xad, 0x1b, 0x10, 0xad, 0x1b, 0x10, 0xae, 0x1b,
+  0x10, 0xaf, 0x1b, 0x10, 0xaf, 0x1b, 0x10, 0xb0, 0x1b, 0x10, 0xb0, 0x1b,
+  0x0f, 0xaf, 0x1b, 0x0f, 0xaf, 0x1b, 0x0f, 0xaf, 0x1b, 0x0f, 0xaf, 0x1b,
+  0x0f, 0xaf, 0x1b, 0x0f, 0xaf, 0x1b, 0x0f, 0xaf, 0x1b, 0x0f, 0xaf, 0x1b,
+  0x11, 0xb0, 0x1b, 0x11, 0xb0, 0x1b, 0x11, 0xb0, 0x1b, 0x11, 0xb0, 0x1b,
+  0x11, 0xb0, 0x1b, 0x11, 0xb0, 0x1b, 0x11, 0xb0, 0x1b, 0x11, 0xb0, 0x1b,
+  0x11, 0xb0, 0x1b, 0x11, 0xb0, 0x1b, 0x11, 0xb0, 0x1b, 0x11, 0xb0, 0x1b,
+  0x11, 0xb0, 0x1b, 0x11, 0xb0, 0x1b, 0x11, 0xb0, 0x1b, 0x11, 0xb0, 0x1b,
+  0x0f, 0xae, 0x1b, 0x0f, 0xae, 0x1b, 0x0f, 0xae, 0x1b, 0x0f, 0xae, 0x1b,
+  0x0f, 0xae, 0x1b, 0x0f, 0xae, 0x1b, 0x0f, 0xae, 0x1b, 0x0f, 0xae, 0x1b,
+  0x10, 0xaf, 0x1b, 0x10, 0xad, 0x1b, 0x12, 0xae, 0x1a, 0x12, 0xae, 0x1b,
+  0x10, 0xb0, 0x1b, 0x11, 0xb1, 0x1b, 0x12, 0xb0, 0x1b, 0x12, 0xb0, 0x1a,
+  0x11, 0xb2, 0x1b, 0x0e, 0xb3, 0x1b, 0x11, 0xbe, 0x1f, 0x18, 0xa4, 0x21,
+  0x07, 0x45, 0x0b, 0x09, 0x1e, 0x09, 0x0c, 0x13, 0x0c, 0x0d, 0x0f, 0x0d,
+  0x0d, 0x0e, 0x0d, 0x0d, 0x0e, 0x0d, 0x0d, 0x0e, 0x0d, 0x0d, 0x0d, 0x0c,
+  0x0d, 0x0d, 0x0c, 0x0d, 0x0d, 0x0c, 0x0d, 0x0d, 0x0c, 0x0d, 0x0e, 0x0d,
+  0x0d, 0x0e, 0x0c, 0x0b, 0x0e, 0x0b, 0x0c, 0x0f, 0x0c, 0x05, 0x0a, 0x04,
+  0x09, 0x0d, 0x09, 0x0d, 0x11, 0x0c, 0x18, 0x1c, 0x16, 0x0a, 0x0e, 0x07,
+  0x01, 0x02, 0x01, 0x03, 0x04, 0x02, 0x0c, 0x0b, 0x0a, 0x06, 0x05, 0x05,
+  0x06, 0x05, 0x04, 0x0c, 0x0b, 0x0a, 0x09, 0x08, 0x07, 0x03, 0x02, 0x01,
+  0x04, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
+  0x02, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x03, 0x02,
+  0x03, 0x0d, 0x08, 0x03, 0x12, 0x05, 0x00, 0x15, 0x01, 0x05, 0x3b, 0x08,
+  0x18, 0x93, 0x1e, 0x05, 0x98, 0x14, 0x02, 0x99, 0x13, 0x0a, 0xa3, 0x16,
+  0x0f, 0xad, 0x1a, 0x12, 0xb4, 0x1c, 0x12, 0xb3, 0x1c, 0x12, 0xb3, 0x1c,
+  0x0f, 0xb0, 0x1b, 0x0f, 0xaf, 0x1b, 0x0f, 0xad, 0x1b, 0x0f, 0xad, 0x1b,
+  0x0f, 0xae, 0x1b, 0x0f, 0xb0, 0x1b, 0x0f, 0xb0, 0x1b, 0x0f, 0xb1, 0x1b,
+  0x0f, 0xb1, 0x1b, 0x0f, 0xb0, 0x1b, 0x0f, 0xb0, 0x1b, 0x0f, 0xb0, 0x1b,
+  0x0f, 0xb0, 0x1b, 0x0f, 0xb0, 0x1b, 0x0f, 0xb0, 0x1b, 0x0f, 0xb0, 0x1b,
+  0x0f, 0xb0, 0x1b, 0x11, 0xb1, 0x1b, 0x11, 0xb1, 0x1b, 0x11, 0xb1, 0x1b,
+  0x11, 0xb1, 0x1b, 0x11, 0xb1, 0x1b, 0x11, 0xb1, 0x1b, 0x11, 0xb1, 0x1b,
+  0x11, 0xb1, 0x1b, 0x11, 0xb1, 0x1b, 0x11, 0xb1, 0x1b, 0x11, 0xb1, 0x1b,
+  0x11, 0xb1, 0x1b, 0x11, 0xb1, 0x1b, 0x11, 0xb1, 0x1b, 0x11, 0xb1, 0x1b,
+  0x11, 0xb1, 0x1b, 0x0f, 0xb0, 0x1b, 0x0f, 0xb0, 0x1b, 0x0f, 0xb0, 0x1b,
+  0x0f, 0xb0, 0x1b, 0x0f, 0xb0, 0x1b, 0x0f, 0xb0, 0x1b, 0x0f, 0xb0, 0x1b,
+  0x0f, 0xb0, 0x1b, 0x10, 0xb0, 0x1b, 0x10, 0xae, 0x1b, 0x12, 0xae, 0x1a,
+  0x12, 0xae, 0x1b, 0x10, 0xb1, 0x1b, 0x11, 0xb2, 0x1b, 0x11, 0xb1, 0x1b,
+  0x11, 0xb1, 0x1a, 0x11, 0xb3, 0x1b, 0x0f, 0xb4, 0x1b, 0x12, 0xbf, 0x20,
+  0x18, 0xa5, 0x21, 0x07, 0x45, 0x0b, 0x0a, 0x1f, 0x0a, 0x0d, 0x14, 0x0d,
+  0x0e, 0x0f, 0x0e, 0x0e, 0x0f, 0x0e, 0x0e, 0x0f, 0x0e, 0x0e, 0x0e, 0x0d,
+  0x0e, 0x0e, 0x0d, 0x0e, 0x0e, 0x0d, 0x0e, 0x0e, 0x0d, 0x0e, 0x0e, 0x0d,
+  0x0e, 0x0e, 0x0d, 0x0d, 0x0e, 0x0c, 0x0b, 0x0f, 0x0a, 0x0c, 0x10, 0x0c,
+  0x05, 0x0a, 0x04, 0x09, 0x0d, 0x09, 0x0e, 0x12, 0x0c, 0x19, 0x1d, 0x15,
+  0x0a, 0x0d, 0x05, 0x01, 0x02, 0x00, 0x03, 0x04, 0x02, 0x0b, 0x0a, 0x0a,
+  0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x0b, 0x0a, 0x09, 0x08, 0x06, 0x05,
+  0x03, 0x02, 0x01, 0x05, 0x03, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
+  0x00, 0x01, 0x00, 0x02, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x02,
+  0x00, 0x03, 0x02, 0x02, 0x0c, 0x07, 0x02, 0x11, 0x04, 0x00, 0x14, 0x01,
+  0x05, 0x3a, 0x08, 0x18, 0x93, 0x1e, 0x05, 0x98, 0x15, 0x02, 0x99, 0x13,
+  0x0a, 0xa4, 0x16, 0x0f, 0xae, 0x19, 0x12, 0xb4, 0x1b, 0x12, 0xb3, 0x1b,
+  0x11, 0xb3, 0x1b, 0x0f, 0xb0, 0x1b, 0x0f, 0xb0, 0x1b, 0x0f, 0xae, 0x1b,
+  0x0f, 0xae, 0x1b, 0x0f, 0xaf, 0x1b, 0x0f, 0xb0, 0x1b, 0x0f, 0xb0, 0x1b,
+  0x0f, 0xb1, 0x1b, 0x0f, 0xb1, 0x1b, 0x0f, 0xb0, 0x1b, 0x0f, 0xb0, 0x1b,
+  0x0f, 0xb0, 0x1b, 0x0f, 0xb0, 0x1b, 0x0f, 0xb0, 0x1b, 0x0f, 0xb0, 0x1b,
+  0x0f, 0xb0, 0x1b, 0x0f, 0xb0, 0x1b, 0x11, 0xb1, 0x1b, 0x11, 0xb1, 0x1b,
+  0x11, 0xb1, 0x1b, 0x11, 0xb1, 0x1b, 0x11, 0xb1, 0x1b, 0x11, 0xb1, 0x1b,
+  0x11, 0xb1, 0x1b, 0x11, 0xb1, 0x1b, 0x11, 0xb1, 0x1b, 0x11, 0xb1, 0x1b,
+  0x11, 0xb1, 0x1b, 0x11, 0xb1, 0x1b, 0x11, 0xb1, 0x1b, 0x11, 0xb1, 0x1b,
+  0x11, 0xb1, 0x1b, 0x11, 0xb1, 0x1b, 0x0f, 0xb0, 0x1b, 0x0f, 0xb0, 0x1b,
+  0x0f, 0xb0, 0x1b, 0x0f, 0xb0, 0x1b, 0x0f, 0xb0, 0x1b, 0x0f, 0xb0, 0x1b,
+  0x0f, 0xb0, 0x1b, 0x10, 0xb0, 0x1b, 0x10, 0xb0, 0x1b, 0x10, 0xae, 0x1b,
+  0x11, 0xae, 0x1b, 0x11, 0xae, 0x1b, 0x0f, 0xb1, 0x1b, 0x10, 0xb2, 0x1b,
+  0x12, 0xb1, 0x1b, 0x12, 0xb2, 0x1a, 0x11, 0xb4, 0x1b, 0x0f, 0xb5, 0x1b,
+  0x12, 0xbf, 0x1f, 0x18, 0xa6, 0x21, 0x07, 0x46, 0x0b, 0x0a, 0x1f, 0x0a,
+  0x0d, 0x14, 0x0d, 0x0e, 0x0f, 0x0e, 0x0e, 0x0f, 0x0e, 0x0e, 0x0e, 0x0d,
+  0x0e, 0x0e, 0x0d, 0x0e, 0x0e, 0x0d, 0x0e, 0x0e, 0x0d, 0x0d, 0x0d, 0x0d,
+  0x0e, 0x0e, 0x0d, 0x0e, 0x0e, 0x0d, 0x0d, 0x0e, 0x0c, 0x0b, 0x0e, 0x0b,
+  0x0d, 0x0f, 0x0c, 0x05, 0x09, 0x04, 0x09, 0x0d, 0x09, 0x0e, 0x11, 0x0c,
+  0x19, 0x1c, 0x15, 0x09, 0x0c, 0x05, 0x01, 0x02, 0x00, 0x05, 0x05, 0x02,
+  0x0d, 0x0b, 0x0b, 0x06, 0x05, 0x05, 0x05, 0x04, 0x04, 0x0d, 0x0c, 0x0b,
+  0x09, 0x06, 0x06, 0x03, 0x01, 0x01, 0x05, 0x02, 0x01, 0x02, 0x00, 0x00,
+  0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x02, 0x01, 0x00, 0x02, 0x00, 0x00,
+  0x00, 0x01, 0x02, 0x00, 0x02, 0x02, 0x02, 0x0c, 0x07, 0x01, 0x10, 0x03,
+  0x00, 0x14, 0x01, 0x05, 0x3a, 0x08, 0x18, 0x94, 0x1e, 0x05, 0x98, 0x15,
+  0x02, 0x99, 0x13, 0x0a, 0xa4, 0x16, 0x0e, 0xad, 0x19, 0x11, 0xb3, 0x1b,
+  0x12, 0xb2, 0x1b, 0x11, 0xb2, 0x1b, 0x10, 0xb0, 0x1a, 0x10, 0xb0, 0x1a,
+  0x10, 0xaf, 0x1a, 0x10, 0xaf, 0x1a, 0x10, 0xaf, 0x1a, 0x10, 0xb0, 0x1a,
+  0x10, 0xb0, 0x1a, 0x10, 0xb1, 0x1a, 0x10, 0xb1, 0x1a, 0x10, 0xb1, 0x1a,
+  0x10, 0xb1, 0x1a, 0x10, 0xb1, 0x1a, 0x10, 0xb1, 0x1a, 0x10, 0xb1, 0x1a,
+  0x10, 0xb1, 0x1a, 0x10, 0xb1, 0x1a, 0x10, 0xb1, 0x1a, 0x12, 0xb2, 0x1c,
+  0x12, 0xb2, 0x1c, 0x12, 0xb2, 0x1c, 0x12, 0xb2, 0x1c, 0x12, 0xb2, 0x1c,
+  0x12, 0xb2, 0x1c, 0x12, 0xb2, 0x1c, 0x12, 0xb2, 0x1c, 0x12, 0xb2, 0x1c,
+  0x12, 0xb2, 0x1c, 0x12, 0xb2, 0x1c, 0x12, 0xb2, 0x1c, 0x12, 0xb2, 0x1c,
+  0x12, 0xb2, 0x1c, 0x12, 0xb2, 0x1c, 0x12, 0xb2, 0x1c, 0x10, 0xb1, 0x1a,
+  0x10, 0xb1, 0x1a, 0x10, 0xb1, 0x1a, 0x10, 0xb1, 0x1a, 0x10, 0xb1, 0x1a,
+  0x10, 0xb1, 0x1a, 0x10, 0xb1, 0x1a, 0x10, 0xb1, 0x1a, 0x0f, 0xb0, 0x1a,
+  0x10, 0xaf, 0x1a, 0x11, 0xaf, 0x1b, 0x11, 0xaf, 0x1a, 0x0f, 0xb2, 0x1a,
+  0x10, 0xb2, 0x1a, 0x12, 0xb2, 0x1a, 0x12, 0xb1, 0x1a, 0x11, 0xb4, 0x1b,
+  0x0f, 0xb5, 0x1a, 0x12, 0xbf, 0x1f, 0x19, 0xa6, 0x22, 0x07, 0x46, 0x0c,
+  0x0a, 0x1e, 0x09, 0x0c, 0x15, 0x0d, 0x0e, 0x0f, 0x0e, 0x0d, 0x0f, 0x0e,
+  0x0d, 0x0e, 0x0d, 0x0d, 0x0d, 0x0c, 0x0e, 0x0e, 0x0c, 0x0e, 0x0e, 0x0c,
+  0x0d, 0x0d, 0x0c, 0x0e, 0x0e, 0x0d, 0x0e, 0x0e, 0x0c, 0x0d, 0x0e, 0x0c,
+  0x0b, 0x0d, 0x0b, 0x0d, 0x0f, 0x0d, 0x05, 0x08, 0x04, 0x09, 0x0c, 0x09,
+  0x0d, 0x11, 0x0c, 0x18, 0x1c, 0x15, 0x08, 0x0c, 0x04, 0x02, 0x03, 0x00,
+  0x06, 0x06, 0x02, 0x0e, 0x0c, 0x0b, 0x08, 0x07, 0x06, 0x07, 0x06, 0x05,
+  0x0e, 0x0d, 0x0c, 0x09, 0x07, 0x06, 0x02, 0x02, 0x01, 0x04, 0x02, 0x01,
+  0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
+  0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x02, 0x01, 0x00,
+  0x02, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x02, 0x02, 0x01, 0x0b, 0x06,
+  0x00, 0x10, 0x03, 0x00, 0x14, 0x01, 0x05, 0x39, 0x08, 0x18, 0x94, 0x1e,
+  0x05, 0x99, 0x15, 0x02, 0x9a, 0x13, 0x0a, 0xa5, 0x16, 0x0e, 0xad, 0x18,
+  0x11, 0xb3, 0x1a, 0x12, 0xb2, 0x1a, 0x10, 0xb1, 0x1a, 0x10, 0xb1, 0x1a,
+  0x10, 0xb0, 0x1a, 0x10, 0xb0, 0x1a, 0x10, 0xb0, 0x1a, 0x10, 0xb0, 0x1a,
+  0x10, 0xb0, 0x1a, 0x10, 0xb0, 0x1a, 0x10, 0xb1, 0x1a, 0x10, 0xb1, 0x1a,
+  0x10, 0xb1, 0x1a, 0x10, 0xb1, 0x1a, 0x10, 0xb1, 0x1a, 0x10, 0xb1, 0x1a,
+  0x10, 0xb1, 0x1a, 0x10, 0xb1, 0x1a, 0x10, 0xb1, 0x1a, 0x10, 0xb1, 0x1a,
+  0x12, 0xb2, 0x1c, 0x12, 0xb2, 0x1c, 0x12, 0xb2, 0x1c, 0x12, 0xb2, 0x1c,
+  0x12, 0xb2, 0x1c, 0x12, 0xb2, 0x1c, 0x12, 0xb2, 0x1c, 0x12, 0xb2, 0x1c,
+  0x12, 0xb2, 0x1c, 0x12, 0xb2, 0x1c, 0x12, 0xb2, 0x1c, 0x12, 0xb2, 0x1c,
+  0x12, 0xb2, 0x1c, 0x12, 0xb2, 0x1c, 0x12, 0xb2, 0x1c, 0x12, 0xb2, 0x1c,
+  0x10, 0xb1, 0x1a, 0x10, 0xb1, 0x1a, 0x10, 0xb1, 0x1a, 0x10, 0xb1, 0x1a,
+  0x10, 0xb1, 0x1a, 0x10, 0xb1, 0x1a, 0x10, 0xb1, 0x1a, 0x11, 0xb1, 0x1a,
+  0x10, 0xb0, 0x1a, 0x11, 0xb0, 0x1a, 0x10, 0xaf, 0x1b, 0x10, 0xb0, 0x1a,
+  0x0f, 0xb2, 0x1a, 0x10, 0xb2, 0x1a, 0x12, 0xb2, 0x1a, 0x13, 0xb2, 0x1a,
+  0x12, 0xb4, 0x1a, 0x0f, 0xb5, 0x1a, 0x12, 0xbf, 0x1e, 0x19, 0xa6, 0x22,
+  0x08, 0x47, 0x0c, 0x0a, 0x1e, 0x09, 0x0c, 0x15, 0x0d, 0x0e, 0x0f, 0x0e,
+  0x0d, 0x0f, 0x0e, 0x0d, 0x0d, 0x0c, 0x0d, 0x0d, 0x0c, 0x0e, 0x0e, 0x0c,
+  0x0e, 0x0e, 0x0c, 0x0d, 0x0d, 0x0c, 0x0e, 0x0e, 0x0d, 0x0e, 0x0e, 0x0c,
+  0x0d, 0x0d, 0x0c, 0x0a, 0x0c, 0x0c, 0x0d, 0x0e, 0x0d, 0x04, 0x07, 0x04,
+  0x08, 0x0b, 0x09, 0x0d, 0x10, 0x0c, 0x18, 0x1b, 0x15, 0x08, 0x0b, 0x04,
+  0x02, 0x03, 0x00, 0x07, 0x06, 0x03, 0x10, 0x0e, 0x0d, 0x0d, 0x0c, 0x0a,
+  0x0c, 0x0a, 0x09, 0x11, 0x0f, 0x0e, 0x09, 0x08, 0x07, 0x02, 0x01, 0x01,
+  0x03, 0x01, 0x01, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
+  0x02, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x03, 0x02,
+  0x01, 0x0c, 0x06, 0x00, 0x10, 0x03, 0x00, 0x14, 0x01, 0x05, 0x38, 0x07,
+  0x18, 0x94, 0x1e, 0x06, 0x9a, 0x15, 0x03, 0x9b, 0x13, 0x0b, 0xa7, 0x17,
+  0x0e, 0xaf, 0x19, 0x11, 0xb5, 0x1b, 0x12, 0xb4, 0x1b, 0x10, 0xb3, 0x1a,
+  0x11, 0xb4, 0x1b, 0x11, 0xb3, 0x1b, 0x11, 0xb2, 0x1b, 0x11, 0xb2, 0x1b,
+  0x11, 0xb2, 0x1b, 0x11, 0xb3, 0x1b, 0x11, 0xb3, 0x1b, 0x11, 0xb4, 0x1a,
+  0x11, 0xb4, 0x1b, 0x11, 0xb3, 0x1b, 0x11, 0xb3, 0x1b, 0x11, 0xb3, 0x1b,
+  0x11, 0xb3, 0x1b, 0x11, 0xb3, 0x1b, 0x11, 0xb3, 0x1b, 0x11, 0xb3, 0x1b,
+  0x11, 0xb3, 0x1b, 0x12, 0xb4, 0x1c, 0x12, 0xb4, 0x1c, 0x12, 0xb4, 0x1c,
+  0x12, 0xb4, 0x1c, 0x12, 0xb4, 0x1c, 0x12, 0xb4, 0x1c, 0x12, 0xb4, 0x1c,
+  0x12, 0xb4, 0x1c, 0x12, 0xb4, 0x1c, 0x12, 0xb4, 0x1c, 0x12, 0xb4, 0x1c,
+  0x12, 0xb4, 0x1c, 0x12, 0xb4, 0x1c, 0x12, 0xb4, 0x1c, 0x12, 0xb4, 0x1c,
+  0x12, 0xb4, 0x1c, 0x11, 0xb3, 0x1b, 0x11, 0xb3, 0x1b, 0x11, 0xb3, 0x1b,
+  0x11, 0xb3, 0x1b, 0x11, 0xb3, 0x1b, 0x11, 0xb3, 0x1b, 0x11, 0xb3, 0x1b,
+  0x12, 0xb3, 0x1a, 0x11, 0xb3, 0x1b, 0x12, 0xb3, 0x1b, 0x11, 0xb2, 0x1c,
+  0x11, 0xb2, 0x1a, 0x10, 0xb4, 0x1b, 0x11, 0xb4, 0x1b, 0x14, 0xb4, 0x1a,
+  0x14, 0xb4, 0x1b, 0x13, 0xb6, 0x1b, 0x10, 0xb7, 0x1a, 0x12, 0xc1, 0x1f,
+  0x19, 0xa7, 0x22, 0x09, 0x47, 0x0c, 0x0a, 0x1e, 0x09, 0x0d, 0x15, 0x0d,
+  0x0e, 0x0f, 0x0e, 0x0e, 0x0f, 0x0e, 0x0e, 0x0e, 0x0d, 0x0e, 0x0e, 0x0d,
+  0x0e, 0x0e, 0x0c, 0x0e, 0x0e, 0x0c, 0x0d, 0x0d, 0x0c, 0x0e, 0x0e, 0x0d,
+  0x0e, 0x0e, 0x0d, 0x0d, 0x0e, 0x0d, 0x0b, 0x0d, 0x0c, 0x0d, 0x0f, 0x0e,
+  0x04, 0x07, 0x05, 0x09, 0x0b, 0x09, 0x0d, 0x10, 0x0b, 0x17, 0x1b, 0x14,
+  0x07, 0x0b, 0x04, 0x02, 0x03, 0x00, 0x06, 0x06, 0x03, 0x14, 0x12, 0x11,
+  0x1c, 0x19, 0x18, 0x1c, 0x19, 0x18, 0x19, 0x17, 0x17, 0x0c, 0x0a, 0x09,
+  0x03, 0x01, 0x01, 0x03, 0x01, 0x01, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
+  0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x01, 0x01, 0x02, 0x03,
+  0x00, 0x04, 0x02, 0x00, 0x0b, 0x05, 0x01, 0x10, 0x03, 0x00, 0x14, 0x01,
+  0x06, 0x39, 0x08, 0x19, 0x95, 0x1f, 0x06, 0x9b, 0x16, 0x04, 0x9c, 0x14,
+  0x0c, 0xa8, 0x18, 0x0f, 0xb2, 0x1a, 0x12, 0xb7, 0x1c, 0x11, 0xb6, 0x1c,
+  0x11, 0xb5, 0x1b, 0x12, 0xb6, 0x1c, 0x12, 0xb5, 0x1c, 0x12, 0xb5, 0x1c,
+  0x12, 0xb5, 0x1c, 0x12, 0xb5, 0x1c, 0x12, 0xb5, 0x1c, 0x12, 0xb5, 0x1c,
+  0x12, 0xb6, 0x1b, 0x12, 0xb6, 0x1c, 0x12, 0xb6, 0x1c, 0x12, 0xb6, 0x1c,
+  0x12, 0xb6, 0x1c, 0x12, 0xb6, 0x1c, 0x12, 0xb6, 0x1c, 0x12, 0xb6, 0x1c,
+  0x12, 0xb6, 0x1c, 0x12, 0xb6, 0x1c, 0x13, 0xb6, 0x1c, 0x13, 0xb6, 0x1c,
+  0x13, 0xb6, 0x1c, 0x13, 0xb6, 0x1c, 0x13, 0xb6, 0x1c, 0x13, 0xb6, 0x1c,
+  0x13, 0xb6, 0x1c, 0x13, 0xb6, 0x1c, 0x13, 0xb6, 0x1c, 0x13, 0xb6, 0x1c,
+  0x13, 0xb6, 0x1c, 0x13, 0xb6, 0x1c, 0x13, 0xb6, 0x1c, 0x13, 0xb6, 0x1c,
+  0x13, 0xb6, 0x1c, 0x13, 0xb6, 0x1c, 0x12, 0xb4, 0x1c, 0x12, 0xb5, 0x1c,
+  0x12, 0xb5, 0x1c, 0x12, 0xb5, 0x1c, 0x12, 0xb5, 0x1c, 0x12, 0xb5, 0x1c,
+  0x12, 0xb5, 0x1c, 0x13, 0xb4, 0x1b, 0x12, 0xb5, 0x1c, 0x13, 0xb5, 0x1c,
+  0x12, 0xb4, 0x1d, 0x12, 0xb5, 0x1b, 0x11, 0xb7, 0x1c, 0x12, 0xb7, 0x1c,
+  0x15, 0xb7, 0x1b, 0x15, 0xb7, 0x1c, 0x14, 0xb8, 0x1c, 0x11, 0xb9, 0x1b,
+  0x13, 0xc4, 0x20, 0x1a, 0xa9, 0x23, 0x0a, 0x48, 0x0b, 0x0b, 0x1f, 0x09,
+  0x0e, 0x15, 0x0d, 0x0f, 0x10, 0x0f, 0x0f, 0x0e, 0x0f, 0x0f, 0x0f, 0x0e,
+  0x0f, 0x0f, 0x0e, 0x0e, 0x0e, 0x0d, 0x0d, 0x0d, 0x0d, 0x0e, 0x0e, 0x0d,
+  0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0e, 0x0e, 0x0e, 0x0c, 0x0e, 0x0c,
+  0x0e, 0x10, 0x0f, 0x05, 0x08, 0x05, 0x0a, 0x0c, 0x09, 0x0d, 0x10, 0x0b,
+  0x16, 0x1a, 0x14, 0x06, 0x0b, 0x04, 0x02, 0x03, 0x00, 0x06, 0x05, 0x03,
+  0x19, 0x17, 0x15, 0x2b, 0x28, 0x28, 0x2e, 0x2b, 0x2a, 0x24, 0x21, 0x1f,
+  0x0f, 0x0c, 0x0b, 0x04, 0x02, 0x01, 0x02, 0x01, 0x00, 0x02, 0x00, 0x00,
+  0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x01,
+  0x01, 0x02, 0x03, 0x00, 0x04, 0x02, 0x00, 0x0b, 0x05, 0x01, 0x10, 0x03,
+  0x00, 0x14, 0x01, 0x06, 0x38, 0x07, 0x19, 0x96, 0x1e, 0x06, 0x9c, 0x16,
+  0x06, 0x9e, 0x15, 0x0d, 0xaa, 0x19, 0x10, 0xb3, 0x1b, 0x12, 0xb8, 0x1c,
+  0x12, 0xb7, 0x1c, 0x12, 0xb7, 0x1b, 0x13, 0xb8, 0x1c, 0x13, 0xb7, 0x1d,
+  0x13, 0xb6, 0x1d, 0x13, 0xb6, 0x1d, 0x13, 0xb6, 0x1d, 0x13, 0xb7, 0x1d,
+  0x13, 0xb7, 0x1d, 0x13, 0xb8, 0x1c, 0x13, 0xb8, 0x1c, 0x13, 0xb7, 0x1c,
+  0x13, 0xb8, 0x1c, 0x13, 0xb8, 0x1c, 0x13, 0xb8, 0x1c, 0x13, 0xb8, 0x1c,
+  0x13, 0xb8, 0x1c, 0x13, 0xb8, 0x1c, 0x13, 0xb8, 0x1c, 0x13, 0xb7, 0x1c,
+  0x13, 0xb7, 0x1c, 0x13, 0xb7, 0x1c, 0x13, 0xb7, 0x1c, 0x13, 0xb7, 0x1c,
+  0x13, 0xb7, 0x1c, 0x13, 0xb7, 0x1c, 0x13, 0xb7, 0x1c, 0x13, 0xb7, 0x1c,
+  0x13, 0xb7, 0x1c, 0x13, 0xb7, 0x1c, 0x13, 0xb7, 0x1c, 0x13, 0xb7, 0x1c,
+  0x13, 0xb7, 0x1c, 0x13, 0xb7, 0x1c, 0x13, 0xb7, 0x1c, 0x13, 0xb6, 0x1c,
+  0x13, 0xb7, 0x1c, 0x13, 0xb7, 0x1c, 0x13, 0xb7, 0x1c, 0x13, 0xb7, 0x1c,
+  0x13, 0xb7, 0x1c, 0x13, 0xb7, 0x1c, 0x13, 0xb6, 0x1c, 0x12, 0xb7, 0x1d,
+  0x13, 0xb7, 0x1d, 0x13, 0xb6, 0x1d, 0x13, 0xb7, 0x1b, 0x12, 0xb9, 0x1c,
+  0x13, 0xb8, 0x1c, 0x15, 0xb8, 0x1c, 0x15, 0xb8, 0x1d, 0x14, 0xba, 0x1c,
+  0x11, 0xbb, 0x1c, 0x13, 0xc6, 0x21, 0x1a, 0xab, 0x23, 0x0a, 0x49, 0x0b,
+  0x0b, 0x20, 0x09, 0x0f, 0x15, 0x0d, 0x0f, 0x10, 0x0f, 0x0f, 0x0f, 0x0f,
+  0x0f, 0x0f, 0x10, 0x0f, 0x0f, 0x0f, 0x0e, 0x0e, 0x0e, 0x0d, 0x0e, 0x0e,
+  0x0e, 0x0e, 0x0e, 0x0d, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0f, 0x0e,
+  0x0e, 0x0e, 0x0d, 0x0f, 0x10, 0x0f, 0x05, 0x08, 0x05, 0x0a, 0x0d, 0x0a,
+  0x0c, 0x0f, 0x0b, 0x16, 0x1a, 0x14, 0x05, 0x0a, 0x04, 0x02, 0x04, 0x00,
+  0x07, 0x05, 0x04, 0x20, 0x1d, 0x1b, 0x3f, 0x3b, 0x3a, 0x41, 0x3d, 0x3c,
+  0x29, 0x26, 0x25, 0x0e, 0x0c, 0x0b, 0x04, 0x02, 0x01, 0x02, 0x00, 0x00,
+  0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
+  0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x01,
+  0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00,
+  0x02, 0x00, 0x01, 0x01, 0x02, 0x04, 0x00, 0x03, 0x02, 0x00, 0x0b, 0x04,
+  0x00, 0x10, 0x02, 0x00, 0x14, 0x01, 0x05, 0x38, 0x07, 0x18, 0x95, 0x1e,
+  0x06, 0x9d, 0x16, 0x06, 0x9f, 0x15, 0x0d, 0xac, 0x19, 0x11, 0xb4, 0x1a,
+  0x13, 0xb8, 0x1d, 0x12, 0xb8, 0x1d, 0x12, 0xb7, 0x1c, 0x14, 0xb9, 0x1c,
+  0x14, 0xb8, 0x1e, 0x14, 0xb7, 0x1e, 0x14, 0xb7, 0x1e, 0x14, 0xb7, 0x1e,
+  0x14, 0xb8, 0x1e, 0x14, 0xb8, 0x1e, 0x14, 0xb9, 0x1c, 0x14, 0xb9, 0x1d,
+  0x12, 0xb8, 0x1d, 0x12, 0xb8, 0x1d, 0x12, 0xb8, 0x1d, 0x12, 0xb8, 0x1d,
+  0x12, 0xb8, 0x1d, 0x12, 0xb8, 0x1d, 0x12, 0xb8, 0x1d, 0x12, 0xb8, 0x1d,
+  0x12, 0xb7, 0x1b, 0x12, 0xb7, 0x1b, 0x12, 0xb7, 0x1b, 0x12, 0xb7, 0x1b,
+  0x12, 0xb7, 0x1b, 0x12, 0xb7, 0x1b, 0x12, 0xb7, 0x1b, 0x12, 0xb7, 0x1b,
+  0x13, 0xb7, 0x1b, 0x13, 0xb7, 0x1b, 0x13, 0xb7, 0x1b, 0x13, 0xb7, 0x1b,
+  0x13, 0xb7, 0x1b, 0x13, 0xb7, 0x1b, 0x13, 0xb7, 0x1b, 0x12, 0xb7, 0x1b,
+  0x14, 0xb8, 0x1d, 0x14, 0xb9, 0x1d, 0x14, 0xb9, 0x1d, 0x14, 0xb9, 0x1d,
+  0x14, 0xb9, 0x1d, 0x14, 0xb9, 0x1d, 0x14, 0xb9, 0x1d, 0x14, 0xb8, 0x1c,
+  0x12, 0xb7, 0x1d, 0x13, 0xb7, 0x1c, 0x12, 0xb6, 0x1d, 0x12, 0xb7, 0x1c,
+  0x11, 0xb9, 0x1d, 0x12, 0xb8, 0x1d, 0x14, 0xb8, 0x1c, 0x16, 0xb9, 0x1d,
+  0x15, 0xbc, 0x1c, 0x12, 0xbd, 0x1c, 0x14, 0xc6, 0x20, 0x1b, 0xab, 0x23,
+  0x0b, 0x4a, 0x0c, 0x0c, 0x21, 0x0a, 0x10, 0x16, 0x0e, 0x10, 0x0f, 0x10,
+  0x10, 0x0f, 0x10, 0x10, 0x0e, 0x10, 0x0e, 0x0e, 0x10, 0x0e, 0x0e, 0x0f,
+  0x0e, 0x0e, 0x0f, 0x0e, 0x0f, 0x0f, 0x0e, 0x0e, 0x0f, 0x0e, 0x0e, 0x0e,
+  0x0e, 0x0e, 0x0e, 0x0e, 0x0f, 0x0e, 0x0f, 0x11, 0x10, 0x05, 0x08, 0x05,
+  0x0a, 0x0d, 0x0a, 0x0d, 0x10, 0x0b, 0x15, 0x19, 0x14, 0x05, 0x0a, 0x04,
+  0x03, 0x05, 0x00, 0x09, 0x06, 0x05, 0x25, 0x21, 0x20, 0x4c, 0x47, 0x47,
+  0x4b, 0x47, 0x46, 0x27, 0x24, 0x23, 0x0a, 0x08, 0x07, 0x04, 0x02, 0x01,
+  0x02, 0x01, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
+  0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
+  0x02, 0x00, 0x00, 0x02, 0x00, 0x01, 0x01, 0x02, 0x04, 0x00, 0x03, 0x02,
+  0x01, 0x0b, 0x03, 0x00, 0x10, 0x01, 0x00, 0x14, 0x00, 0x05, 0x37, 0x07,
+  0x17, 0x95, 0x1e, 0x06, 0x9e, 0x16, 0x06, 0xa0, 0x15, 0x0d, 0xac, 0x1a,
+  0x12, 0xb5, 0x1b, 0x14, 0xb9, 0x1d, 0x13, 0xb8, 0x1d, 0x13, 0xb8, 0x1d,
+  0x14, 0xb9, 0x1c, 0x14, 0xb8, 0x1e, 0x14, 0xb7, 0x1e, 0x14, 0xb7, 0x1e,
+  0x14, 0xb7, 0x1e, 0x14, 0xb8, 0x1e, 0x14, 0xb8, 0x1e, 0x14, 0xb9, 0x1d,
+  0x14, 0xb9, 0x1d, 0x12, 0xb8, 0x1d, 0x12, 0xb9, 0x1d, 0x12, 0xb9, 0x1d,
+  0x12, 0xb9, 0x1d, 0x12, 0xb9, 0x1d, 0x12, 0xb9, 0x1d, 0x12, 0xb9, 0x1d,
+  0x12, 0xb9, 0x1d, 0x12, 0xb7, 0x1b, 0x12, 0xb7, 0x1b, 0x12, 0xb7, 0x1b,
+  0x12, 0xb7, 0x1b, 0x12, 0xb7, 0x1b, 0x12, 0xb7, 0x1b, 0x12, 0xb7, 0x1b,
+  0x12, 0xb7, 0x1b, 0x13, 0xb7, 0x1b, 0x13, 0xb7, 0x1b, 0x13, 0xb7, 0x1b,
+  0x13, 0xb7, 0x1b, 0x13, 0xb7, 0x1b, 0x13, 0xb7, 0x1b, 0x13, 0xb7, 0x1b,
+  0x12, 0xb7, 0x1b, 0x14, 0xba, 0x1d, 0x14, 0xba, 0x1d, 0x14, 0xba, 0x1d,
+  0x14, 0xba, 0x1d, 0x14, 0xba, 0x1d, 0x14, 0xba, 0x1d, 0x14, 0xba, 0x1d,
+  0x14, 0xba, 0x1d, 0x12, 0xb8, 0x1d, 0x13, 0xb7, 0x1c, 0x12, 0xb6, 0x1d,
+  0x12, 0xb7, 0x1c, 0x11, 0xb9, 0x1d, 0x12, 0xb8, 0x1d, 0x14, 0xb8, 0x1d,
+  0x16, 0xb9, 0x1d, 0x15, 0xbd, 0x1c, 0x12, 0xbe, 0x1c, 0x15, 0xc7, 0x20,
+  0x1b, 0xac, 0x23, 0x0b, 0x4a, 0x0c, 0x0c, 0x22, 0x0a, 0x10, 0x16, 0x0e,
+  0x10, 0x10, 0x10, 0x10, 0x0f, 0x10, 0x10, 0x0e, 0x11, 0x0e, 0x0e, 0x10,
+  0x0e, 0x0f, 0x10, 0x0e, 0x0f, 0x10, 0x0e, 0x0f, 0x10, 0x0e, 0x0f, 0x10,
+  0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x0f, 0x0e, 0x0f, 0x0f, 0x10, 0x12, 0x11,
+  0x05, 0x09, 0x06, 0x0a, 0x0e, 0x0b, 0x0d, 0x10, 0x0c, 0x16, 0x19, 0x15,
+  0x06, 0x09, 0x05, 0x03, 0x05, 0x00, 0x0a, 0x06, 0x05, 0x28, 0x24, 0x23,
+  0x52, 0x4e, 0x4e, 0x4f, 0x4b, 0x4b, 0x24, 0x21, 0x21, 0x06, 0x06, 0x05,
+  0x03, 0x02, 0x01, 0x03, 0x01, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00,
+  0x01, 0x01, 0x00, 0x03, 0x01, 0x01, 0x02, 0x00, 0x01, 0x01, 0x02, 0x02,
+  0x01, 0x03, 0x02, 0x02, 0x0c, 0x04, 0x00, 0x0e, 0x02, 0x00, 0x13, 0x00,
+  0x05, 0x36, 0x07, 0x17, 0x94, 0x1e, 0x06, 0x9e, 0x16, 0x07, 0xa2, 0x15,
+  0x0c, 0xac, 0x19, 0x11, 0xb8, 0x1b, 0x13, 0xbd, 0x1d, 0x12, 0xbb, 0x1d,
+  0x12, 0xba, 0x1d, 0x13, 0xbb, 0x1d, 0x13, 0xba, 0x1e, 0x13, 0xba, 0x1e,
+  0x13, 0xba, 0x1e, 0x13, 0xba, 0x1e, 0x14, 0xbb, 0x1d, 0x14, 0xbb, 0x1d,
+  0x14, 0xbb, 0x1d, 0x14, 0xbb, 0x1d, 0x13, 0xba, 0x1d, 0x13, 0xb9, 0x1d,
+  0x13, 0xb9, 0x1d, 0x13, 0xb9, 0x1d, 0x13, 0xb9, 0x1d, 0x13, 0xb9, 0x1d,
+  0x13, 0xb9, 0x1d, 0x13, 0xb9, 0x1d, 0x13, 0xb8, 0x1b, 0x13, 0xb8, 0x1b,
+  0x13, 0xb8, 0x1b, 0x13, 0xb8, 0x1b, 0x13, 0xb8, 0x1b, 0x13, 0xb8, 0x1b,
+  0x13, 0xb8, 0x1b, 0x13, 0xb8, 0x1b, 0x13, 0xba, 0x1c, 0x13, 0xba, 0x1c,
+  0x13, 0xba, 0x1c, 0x13, 0xba, 0x1c, 0x13, 0xba, 0x1c, 0x13, 0xba, 0x1c,
+  0x13, 0xba, 0x1c, 0x12, 0xba, 0x1c, 0x13, 0xbb, 0x1d, 0x13, 0xbb, 0x1d,
+  0x13, 0xbb, 0x1d, 0x13, 0xbb, 0x1d, 0x13, 0xbb, 0x1d, 0x13, 0xbb, 0x1d,
+  0x13, 0xbb, 0x1d, 0x13, 0xbb, 0x1d, 0x11, 0xba, 0x1d, 0x12, 0xba, 0x1c,
+  0x13, 0xb7, 0x1d, 0x13, 0xb8, 0x1c, 0x12, 0xba, 0x1d, 0x13, 0xba, 0x1d,
+  0x15, 0xba, 0x1d, 0x16, 0xbb, 0x1d, 0x15, 0xbe, 0x1d, 0x12, 0xc0, 0x1e,
+  0x15, 0xc9, 0x23, 0x1a, 0xaa, 0x25, 0x0b, 0x4a, 0x0e, 0x0c, 0x21, 0x0b,
+  0x0f, 0x16, 0x0d, 0x10, 0x11, 0x0f, 0x10, 0x10, 0x0f, 0x10, 0x0e, 0x10,
+  0x0f, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f,
+  0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x0f, 0x0f, 0x0f, 0x0e,
+  0x11, 0x13, 0x11, 0x07, 0x09, 0x06, 0x0b, 0x0d, 0x0a, 0x0c, 0x0e, 0x0b,
+  0x16, 0x18, 0x15, 0x08, 0x09, 0x06, 0x03, 0x04, 0x00, 0x08, 0x06, 0x04,
+  0x21, 0x1e, 0x1d, 0x3f, 0x3c, 0x3b, 0x3c, 0x3a, 0x39, 0x1c, 0x1a, 0x1a,
+  0x05, 0x04, 0x04, 0x02, 0x02, 0x01, 0x02, 0x01, 0x00, 0x01, 0x00, 0x00,
+  0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x02, 0x00, 0x01,
+  0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x02, 0x00, 0x01, 0x02, 0x00, 0x01, 0x04, 0x01, 0x03, 0x02, 0x01, 0x01,
+  0x00, 0x02, 0x01, 0x01, 0x04, 0x01, 0x04, 0x0e, 0x06, 0x01, 0x0d, 0x01,
+  0x00, 0x12, 0x00, 0x05, 0x33, 0x07, 0x17, 0x94, 0x1f, 0x06, 0x9e, 0x16,
+  0x07, 0xa4, 0x15, 0x0b, 0xac, 0x18, 0x11, 0xbb, 0x1c, 0x14, 0xc0, 0x1e,
+  0x12, 0xbd, 0x1c, 0x12, 0xbd, 0x1c, 0x13, 0xbd, 0x1e, 0x13, 0xbd, 0x1d,
+  0x13, 0xbc, 0x1d, 0x13, 0xbc, 0x1e, 0x13, 0xbc, 0x1e, 0x13, 0xbd, 0x1d,
+  0x13, 0xbd, 0x1d, 0x13, 0xbe, 0x1c, 0x13, 0xbe, 0x1c, 0x14, 0xbb, 0x1c,
+  0x14, 0xb9, 0x1c, 0x14, 0xba, 0x1c, 0x14, 0xba, 0x1c, 0x14, 0xba, 0x1c,
+  0x14, 0xba, 0x1c, 0x14, 0xba, 0x1c, 0x14, 0xba, 0x1c, 0x14, 0xb9, 0x1c,
+  0x14, 0xb9, 0x1c, 0x14, 0xb9, 0x1c, 0x14, 0xb9, 0x1c, 0x14, 0xb9, 0x1c,
+  0x14, 0xb9, 0x1c, 0x14, 0xb9, 0x1c, 0x14, 0xb9, 0x1c, 0x12, 0xbc, 0x1d,
+  0x12, 0xbc, 0x1d, 0x12, 0xbc, 0x1d, 0x12, 0xbc, 0x1d, 0x12, 0xbc, 0x1d,
+  0x12, 0xbc, 0x1d, 0x12, 0xbc, 0x1d, 0x12, 0xbc, 0x1d, 0x12, 0xbc, 0x1e,
+  0x12, 0xbc, 0x1e, 0x12, 0xbc, 0x1e, 0x12, 0xbc, 0x1e, 0x12, 0xbc, 0x1e,
+  0x12, 0xbc, 0x1e, 0x12, 0xbc, 0x1e, 0x12, 0xbc, 0x1e, 0x10, 0xbd, 0x1c,
+  0x11, 0xbc, 0x1c, 0x14, 0xb9, 0x1d, 0x14, 0xb9, 0x1d, 0x13, 0xbb, 0x1d,
+  0x14, 0xbb, 0x1c, 0x16, 0xbb, 0x1c, 0x17, 0xbc, 0x1c, 0x15, 0xbf, 0x1e,
+  0x12, 0xc1, 0x1f, 0x16, 0xcb, 0x26, 0x19, 0xa9, 0x26, 0x0b, 0x4a, 0x10,
+  0x0c, 0x21, 0x0c, 0x0f, 0x17, 0x0c, 0x10, 0x12, 0x0e, 0x10, 0x10, 0x0e,
+  0x10, 0x0f, 0x0f, 0x10, 0x0f, 0x0f, 0x10, 0x0f, 0x0f, 0x10, 0x0f, 0x0f,
+  0x10, 0x10, 0x0f, 0x10, 0x0e, 0x0f, 0x0e, 0x0f, 0x0e, 0x0e, 0x0f, 0x0e,
+  0x0e, 0x0f, 0x0d, 0x12, 0x13, 0x11, 0x09, 0x0a, 0x07, 0x0a, 0x0c, 0x09,
+  0x0c, 0x0d, 0x0a, 0x16, 0x18, 0x14, 0x0a, 0x0b, 0x08, 0x02, 0x03, 0x01,
+  0x05, 0x06, 0x03, 0x17, 0x17, 0x15, 0x24, 0x24, 0x22, 0x24, 0x24, 0x22,
+  0x13, 0x13, 0x11, 0x03, 0x03, 0x03, 0x02, 0x02, 0x01, 0x01, 0x00, 0x00,
+  0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01,
+  0x02, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x02, 0x00, 0x01, 0x04, 0x01, 0x03,
+  0x02, 0x01, 0x01, 0x00, 0x02, 0x00, 0x01, 0x04, 0x02, 0x06, 0x0e, 0x07,
+  0x01, 0x0e, 0x02, 0x01, 0x12, 0x01, 0x05, 0x33, 0x07, 0x17, 0x93, 0x1f,
+  0x07, 0x9e, 0x16, 0x08, 0xa6, 0x16, 0x0b, 0xac, 0x17, 0x12, 0xbd, 0x1d,
+  0x15, 0xc3, 0x1e, 0x13, 0xbf, 0x1d, 0x12, 0xbf, 0x1d, 0x13, 0xbe, 0x1e,
+  0x13, 0xbe, 0x1d, 0x13, 0xbe, 0x1d, 0x13, 0xbe, 0x1e, 0x13, 0xbe, 0x1e,
+  0x14, 0xbf, 0x1d, 0x14, 0xbf, 0x1d, 0x14, 0xbf, 0x1c, 0x14, 0xbf, 0x1d,
+  0x15, 0xbe, 0x1d, 0x14, 0xbc, 0x1d, 0x14, 0xbd, 0x1d, 0x14, 0xbd, 0x1d,
+  0x14, 0xbd, 0x1d, 0x14, 0xbd, 0x1d, 0x14, 0xbd, 0x1d, 0x14, 0xbd, 0x1d,
+  0x15, 0xbd, 0x1d, 0x15, 0xbd, 0x1d, 0x14, 0xbd, 0x1d, 0x14, 0xbd, 0x1d,
+  0x14, 0xbd, 0x1d, 0x14, 0xbd, 0x1d, 0x14, 0xbd, 0x1d, 0x14, 0xbc, 0x1d,
+  0x13, 0xbe, 0x1e, 0x13, 0xbe, 0x1e, 0x13, 0xbe, 0x1e, 0x13, 0xbe, 0x1e,
+  0x13, 0xbe, 0x1e, 0x13, 0xbe, 0x1e, 0x13, 0xbe, 0x1e, 0x13, 0xbe, 0x1e,
+  0x12, 0xbd, 0x1e, 0x12, 0xbd, 0x1e, 0x12, 0xbd, 0x1e, 0x12, 0xbd, 0x1e,
+  0x12, 0xbd, 0x1e, 0x12, 0xbd, 0x1e, 0x12, 0xbd, 0x1e, 0x12, 0xbd, 0x1e,
+  0x12, 0xc0, 0x1d, 0x13, 0xbf, 0x1d, 0x15, 0xbc, 0x1e, 0x16, 0xbb, 0x1e,
+  0x14, 0xbe, 0x1e, 0x15, 0xbe, 0x1d, 0x18, 0xbe, 0x1d, 0x18, 0xbf, 0x1d,
+  0x15, 0xc0, 0x1f, 0x11, 0xc2, 0x20, 0x16, 0xcc, 0x28, 0x18, 0xa7, 0x27,
+  0x0b, 0x49, 0x11, 0x0c, 0x21, 0x0d, 0x0f, 0x17, 0x0c, 0x11, 0x13, 0x0e,
+  0x11, 0x11, 0x0e, 0x11, 0x10, 0x0f, 0x12, 0x10, 0x0f, 0x12, 0x10, 0x0f,
+  0x12, 0x10, 0x0f, 0x12, 0x11, 0x0f, 0x12, 0x0f, 0x0f, 0x0f, 0x10, 0x0f,
+  0x0f, 0x10, 0x0f, 0x0f, 0x10, 0x0d, 0x13, 0x14, 0x10, 0x09, 0x0a, 0x06,
+  0x0a, 0x0b, 0x08, 0x0b, 0x0c, 0x0a, 0x16, 0x16, 0x14, 0x0b, 0x0a, 0x08,
+  0x02, 0x02, 0x01, 0x04, 0x05, 0x03, 0x10, 0x11, 0x0f, 0x10, 0x11, 0x0f,
+  0x11, 0x12, 0x10, 0x0c, 0x0c, 0x0b, 0x03, 0x03, 0x02, 0x02, 0x03, 0x01,
+  0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x02, 0x00, 0x01, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x02, 0x00, 0x01,
+  0x03, 0x01, 0x02, 0x02, 0x00, 0x00, 0x00, 0x02, 0x01, 0x01, 0x04, 0x02,
+  0x06, 0x0e, 0x08, 0x02, 0x0f, 0x03, 0x01, 0x13, 0x02, 0x06, 0x34, 0x07,
+  0x17, 0x93, 0x1e, 0x07, 0x9f, 0x16, 0x09, 0xa8, 0x17, 0x0d, 0xad, 0x18,
+  0x14, 0xbd, 0x1d, 0x15, 0xc2, 0x1f, 0x14, 0xc0, 0x1e, 0x14, 0xc1, 0x1e,
+  0x14, 0xbf, 0x1e, 0x14, 0xbf, 0x1e, 0x14, 0xbe, 0x1e, 0x14, 0xbe, 0x1e,
+  0x15, 0xbe, 0x1e, 0x16, 0xbe, 0x1d, 0x15, 0xbe, 0x1d, 0x16, 0xbf, 0x1d,
+  0x14, 0xc0, 0x1d, 0x14, 0xc2, 0x1f, 0x13, 0xc1, 0x1f, 0x13, 0xc1, 0x1f,
+  0x13, 0xc1, 0x1f, 0x13, 0xc1, 0x1f, 0x13, 0xc1, 0x1f, 0x13, 0xc1, 0x1f,
+  0x13, 0xc1, 0x1f, 0x14, 0xc2, 0x1f, 0x14, 0xc2, 0x1f, 0x13, 0xc0, 0x1f,
+  0x13, 0xc1, 0x1f, 0x13, 0xc1, 0x1f, 0x13, 0xc1, 0x1f, 0x13, 0xc1, 0x1f,
+  0x14, 0xc1, 0x1f, 0x13, 0xbf, 0x1e, 0x15, 0xbf, 0x1e, 0x15, 0xbf, 0x1e,
+  0x15, 0xbf, 0x1e, 0x15, 0xbf, 0x1e, 0x15, 0xbf, 0x1e, 0x15, 0xbf, 0x1e,
+  0x15, 0xbf, 0x1e, 0x13, 0xbd, 0x1e, 0x13, 0xbe, 0x1e, 0x13, 0xbe, 0x1e,
+  0x13, 0xbe, 0x1e, 0x13, 0xbe, 0x1e, 0x13, 0xbe, 0x1e, 0x13, 0xbe, 0x1e,
+  0x13, 0xbe, 0x1e, 0x14, 0xc3, 0x1f, 0x16, 0xc2, 0x1f, 0x17, 0xbe, 0x20,
+  0x17, 0xbe, 0x20, 0x15, 0xc1, 0x20, 0x17, 0xc2, 0x1f, 0x18, 0xc2, 0x1f,
+  0x18, 0xc2, 0x1f, 0x15, 0xc0, 0x1e, 0x12, 0xc1, 0x1f, 0x16, 0xcc, 0x27,
+  0x19, 0xa7, 0x26, 0x0b, 0x49, 0x11, 0x0d, 0x21, 0x0d, 0x10, 0x17, 0x0c,
+  0x13, 0x13, 0x0d, 0x12, 0x12, 0x0f, 0x12, 0x11, 0x10, 0x12, 0x11, 0x10,
+  0x12, 0x11, 0x10, 0x12, 0x11, 0x10, 0x12, 0x11, 0x10, 0x12, 0x11, 0x10,
+  0x11, 0x12, 0x10, 0x11, 0x12, 0x0f, 0x10, 0x11, 0x0d, 0x12, 0x12, 0x10,
+  0x08, 0x09, 0x05, 0x0a, 0x0b, 0x08, 0x0b, 0x0c, 0x09, 0x13, 0x14, 0x11,
+  0x09, 0x09, 0x06, 0x01, 0x01, 0x00, 0x03, 0x04, 0x03, 0x0e, 0x0f, 0x0d,
+  0x0e, 0x0e, 0x0d, 0x0e, 0x0f, 0x0d, 0x09, 0x0a, 0x08, 0x02, 0x02, 0x02,
+  0x02, 0x03, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01,
+  0x02, 0x00, 0x01, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x01,
+  0x01, 0x04, 0x02, 0x06, 0x0e, 0x08, 0x02, 0x10, 0x04, 0x02, 0x14, 0x03,
+  0x06, 0x35, 0x07, 0x17, 0x93, 0x1e, 0x07, 0xa0, 0x17, 0x0a, 0xa9, 0x17,
+  0x0e, 0xaf, 0x19, 0x15, 0xbe, 0x1e, 0x17, 0xc3, 0x1f, 0x15, 0xc0, 0x1e,
+  0x16, 0xc2, 0x1f, 0x15, 0xc0, 0x1e, 0x15, 0xbf, 0x1e, 0x15, 0xbe, 0x1e,
+  0x15, 0xbe, 0x1e, 0x16, 0xbe, 0x1e, 0x17, 0xbf, 0x1e, 0x16, 0xbf, 0x1e,
+  0x17, 0xbf, 0x1d, 0x15, 0xc0, 0x1e, 0x13, 0xc3, 0x20, 0x12, 0xc4, 0x20,
+  0x13, 0xc4, 0x20, 0x13, 0xc4, 0x20, 0x13, 0xc4, 0x20, 0x13, 0xc4, 0x20,
+  0x13, 0xc4, 0x20, 0x12, 0xc4, 0x20, 0x14, 0xc5, 0x21, 0x14, 0xc5, 0x21,
+  0x12, 0xc3, 0x20, 0x12, 0xc4, 0x20, 0x12, 0xc4, 0x20, 0x12, 0xc4, 0x20,
+  0x12, 0xc4, 0x20, 0x14, 0xc3, 0x20, 0x14, 0xc0, 0x1e, 0x16, 0xbf, 0x1e,
+  0x16, 0xbf, 0x1e, 0x16, 0xbf, 0x1e, 0x16, 0xbf, 0x1e, 0x16, 0xbf, 0x1e,
+  0x16, 0xbf, 0x1e, 0x16, 0xbf, 0x1e, 0x14, 0xbe, 0x1e, 0x14, 0xbf, 0x1e,
+  0x14, 0xbf, 0x1e, 0x14, 0xbf, 0x1e, 0x14, 0xbf, 0x1e, 0x14, 0xbf, 0x1e,
+  0x14, 0xbf, 0x1e, 0x14, 0xc0, 0x1e, 0x16, 0xc5, 0x20, 0x18, 0xc5, 0x20,
+  0x18, 0xc1, 0x22, 0x19, 0xc1, 0x22, 0x16, 0xc4, 0x21, 0x18, 0xc5, 0x20,
+  0x19, 0xc5, 0x20, 0x18, 0xc4, 0x20, 0x14, 0xc0, 0x1d, 0x11, 0xc2, 0x1f,
+  0x16, 0xcd, 0x27, 0x19, 0xa7, 0x26, 0x0b, 0x48, 0x10, 0x0e, 0x20, 0x0d,
+  0x11, 0x17, 0x0c, 0x15, 0x13, 0x0d, 0x13, 0x13, 0x10, 0x13, 0x12, 0x11,
+  0x13, 0x12, 0x11, 0x13, 0x12, 0x11, 0x13, 0x12, 0x11, 0x13, 0x12, 0x11,
+  0x13, 0x12, 0x11, 0x12, 0x13, 0x11, 0x12, 0x13, 0x10, 0x10, 0x11, 0x0e,
+  0x11, 0x11, 0x0f, 0x07, 0x08, 0x05, 0x0a, 0x0b, 0x08, 0x0a, 0x0c, 0x0a,
+  0x12, 0x13, 0x10, 0x08, 0x08, 0x04, 0x01, 0x01, 0x00, 0x02, 0x03, 0x02,
+  0x0c, 0x0c, 0x0b, 0x0b, 0x0c, 0x0a, 0x0b, 0x0b, 0x0a, 0x07, 0x08, 0x07,
+  0x02, 0x02, 0x01, 0x03, 0x04, 0x01, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x02, 0x00, 0x01,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x02, 0x01, 0x01,
+  0x00, 0x02, 0x01, 0x01, 0x04, 0x02, 0x06, 0x0e, 0x06, 0x02, 0x0f, 0x03,
+  0x01, 0x12, 0x02, 0x05, 0x33, 0x07, 0x15, 0x91, 0x1d, 0x07, 0xa1, 0x17,
+  0x0a, 0xa9, 0x17, 0x0e, 0xb0, 0x19, 0x16, 0xc0, 0x1e, 0x17, 0xc3, 0x20,
+  0x15, 0xc1, 0x1e, 0x16, 0xc3, 0x1f, 0x17, 0xc2, 0x20, 0x17, 0xc2, 0x20,
+  0x17, 0xc1, 0x20, 0x17, 0xc1, 0x20, 0x18, 0xc1, 0x20, 0x19, 0xc1, 0x20,
+  0x18, 0xc1, 0x20, 0x19, 0xc2, 0x1f, 0x17, 0xc2, 0x20, 0x15, 0xc4, 0x20,
+  0x14, 0xc4, 0x20, 0x15, 0xc4, 0x20, 0x15, 0xc4, 0x20, 0x15, 0xc4, 0x20,
+  0x15, 0xc4, 0x20, 0x15, 0xc4, 0x20, 0x14, 0xc4, 0x20, 0x16, 0xc5, 0x21,
+  0x16, 0xc5, 0x21, 0x14, 0xc4, 0x20, 0x14, 0xc5, 0x20, 0x14, 0xc5, 0x20,
+  0x14, 0xc5, 0x20, 0x14, 0xc5, 0x20, 0x16, 0xc4, 0x20, 0x15, 0xc2, 0x1f,
+  0x17, 0xc2, 0x1f, 0x17, 0xc2, 0x1f, 0x17, 0xc2, 0x1f, 0x17, 0xc2, 0x1f,
+  0x17, 0xc2, 0x1f, 0x17, 0xc2, 0x1f, 0x17, 0xc2, 0x1f, 0x16, 0xc2, 0x20,
+  0x16, 0xc3, 0x20, 0x16, 0xc3, 0x20, 0x16, 0xc3, 0x20, 0x16, 0xc3, 0x20,
+  0x16, 0xc3, 0x20, 0x16, 0xc3, 0x20, 0x16, 0xc3, 0x20, 0x16, 0xc6, 0x20,
+  0x18, 0xc6, 0x20, 0x18, 0xc3, 0x22, 0x18, 0xc2, 0x22, 0x16, 0xc5, 0x21,
+  0x17, 0xc7, 0x20, 0x18, 0xc7, 0x20, 0x18, 0xc6, 0x20, 0x14, 0xc3, 0x1f,
+  0x13, 0xc5, 0x20, 0x17, 0xcf, 0x29, 0x1a, 0xa9, 0x27, 0x0d, 0x4a, 0x11,
+  0x0f, 0x22, 0x0d, 0x12, 0x18, 0x0d, 0x15, 0x14, 0x0e, 0x13, 0x12, 0x0f,
+  0x13, 0x11, 0x11, 0x13, 0x11, 0x11, 0x13, 0x11, 0x11, 0x13, 0x11, 0x11,
+  0x12, 0x11, 0x10, 0x12, 0x11, 0x10, 0x11, 0x12, 0x10, 0x11, 0x12, 0x10,
+  0x12, 0x12, 0x10, 0x11, 0x12, 0x10, 0x08, 0x09, 0x06, 0x0b, 0x0c, 0x09,
+  0x0c, 0x0e, 0x0b, 0x12, 0x13, 0x10, 0x08, 0x09, 0x05, 0x01, 0x02, 0x00,
+  0x03, 0x04, 0x03, 0x0b, 0x0c, 0x0b, 0x08, 0x08, 0x07, 0x07, 0x08, 0x06,
+  0x05, 0x05, 0x04, 0x01, 0x02, 0x01, 0x02, 0x03, 0x01, 0x01, 0x01, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01,
+  0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x01,
+  0x03, 0x01, 0x01, 0x01, 0x03, 0x02, 0x01, 0x04, 0x02, 0x05, 0x0d, 0x06,
+  0x01, 0x0e, 0x02, 0x01, 0x11, 0x02, 0x05, 0x32, 0x06, 0x14, 0x8f, 0x1c,
+  0x07, 0xa2, 0x17, 0x09, 0xaa, 0x17, 0x0d, 0xb1, 0x1a, 0x16, 0xc1, 0x1f,
+  0x18, 0xc4, 0x20, 0x16, 0xc2, 0x1f, 0x17, 0xc3, 0x20, 0x18, 0xc4, 0x21,
+  0x18, 0xc3, 0x21, 0x19, 0xc2, 0x22, 0x19, 0xc2, 0x22, 0x19, 0xc2, 0x22,
+  0x1a, 0xc3, 0x21, 0x19, 0xc3, 0x21, 0x1a, 0xc3, 0x20, 0x19, 0xc4, 0x21,
+  0x16, 0xc3, 0x1f, 0x16, 0xc4, 0x1f, 0x16, 0xc4, 0x1f, 0x16, 0xc4, 0x1f,
+  0x16, 0xc4, 0x1f, 0x16, 0xc4, 0x1f, 0x16, 0xc4, 0x1f, 0x16, 0xc3, 0x1f,
+  0x17, 0xc5, 0x20, 0x17, 0xc5, 0x20, 0x17, 0xc4, 0x20, 0x17, 0xc4, 0x21,
+  0x17, 0xc4, 0x21, 0x17, 0xc4, 0x21, 0x17, 0xc4, 0x21, 0x17, 0xc4, 0x21,
+  0x17, 0xc4, 0x20, 0x18, 0xc4, 0x20, 0x18, 0xc4, 0x20, 0x18, 0xc4, 0x20,
+  0x18, 0xc4, 0x20, 0x18, 0xc4, 0x20, 0x18, 0xc4, 0x20, 0x18, 0xc4, 0x1f,
+  0x18, 0xc5, 0x21, 0x18, 0xc6, 0x21, 0x18, 0xc6, 0x21, 0x18, 0xc6, 0x21,
+  0x18, 0xc6, 0x21, 0x18, 0xc6, 0x21, 0x18, 0xc6, 0x21, 0x18, 0xc6, 0x21,
+  0x17, 0xc8, 0x1f, 0x18, 0xc7, 0x20, 0x19, 0xc4, 0x21, 0x18, 0xc3, 0x21,
+  0x16, 0xc5, 0x20, 0x16, 0xc8, 0x20, 0x18, 0xc8, 0x20, 0x18, 0xc6, 0x20,
+  0x15, 0xc5, 0x20, 0x14, 0xc7, 0x20, 0x18, 0xd1, 0x29, 0x1a, 0xab, 0x28,
+  0x0e, 0x4b, 0x12, 0x0f, 0x23, 0x0e, 0x13, 0x18, 0x0d, 0x15, 0x14, 0x0e,
+  0x13, 0x12, 0x0f, 0x12, 0x11, 0x11, 0x12, 0x11, 0x10, 0x12, 0x11, 0x10,
+  0x12, 0x11, 0x10, 0x12, 0x11, 0x10, 0x12, 0x11, 0x10, 0x11, 0x11, 0x10,
+  0x11, 0x11, 0x10, 0x13, 0x14, 0x11, 0x11, 0x13, 0x10, 0x09, 0x0a, 0x07,
+  0x0c, 0x0d, 0x0a, 0x0d, 0x0e, 0x0c, 0x12, 0x13, 0x10, 0x09, 0x0a, 0x05,
+  0x02, 0x02, 0x01, 0x04, 0x05, 0x03, 0x0b, 0x0c, 0x0a, 0x06, 0x06, 0x05,
+  0x05, 0x05, 0x04, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x02, 0x01,
+  0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x02, 0x00, 0x01, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x02, 0x00, 0x01, 0x04, 0x02, 0x02, 0x01, 0x03, 0x02, 0x01, 0x04, 0x01,
+  0x05, 0x0d, 0x05, 0x02, 0x0e, 0x02, 0x00, 0x0f, 0x00, 0x04, 0x30, 0x05,
+  0x12, 0x8d, 0x1b, 0x06, 0xa3, 0x17, 0x09, 0xaa, 0x17, 0x0d, 0xb3, 0x1a,
+  0x17, 0xc3, 0x1f, 0x18, 0xc6, 0x21, 0x16, 0xc4, 0x1f, 0x17, 0xc4, 0x20,
+  0x1a, 0xc6, 0x22, 0x1a, 0xc6, 0x23, 0x1b, 0xc5, 0x24, 0x1b, 0xc5, 0x24,
+  0x1b, 0xc5, 0x24, 0x1b, 0xc6, 0x23, 0x1b, 0xc6, 0x23, 0x1b, 0xc6, 0x22,
+  0x1b, 0xc6, 0x22, 0x19, 0xc4, 0x1f, 0x19, 0xc4, 0x1f, 0x19, 0xc4, 0x1f,
+  0x19, 0xc4, 0x1f, 0x19, 0xc4, 0x1f, 0x19, 0xc4, 0x1f, 0x19, 0xc4, 0x1f,
+  0x19, 0xc3, 0x1f, 0x1a, 0xc5, 0x20, 0x1a, 0xc5, 0x20, 0x1a, 0xc4, 0x20,
+  0x1a, 0xc4, 0x21, 0x1a, 0xc4, 0x21, 0x1a, 0xc4, 0x21, 0x1a, 0xc4, 0x21,
+  0x1a, 0xc4, 0x21, 0x19, 0xc7, 0x21, 0x19, 0xc7, 0x21, 0x19, 0xc7, 0x21,
+  0x19, 0xc7, 0x21, 0x19, 0xc7, 0x21, 0x19, 0xc7, 0x21, 0x19, 0xc7, 0x21,
+  0x19, 0xc7, 0x20, 0x1a, 0xc9, 0x22, 0x1a, 0xc9, 0x22, 0x1a, 0xc9, 0x22,
+  0x1a, 0xc9, 0x22, 0x1a, 0xc9, 0x22, 0x1a, 0xc9, 0x22, 0x1a, 0xc9, 0x22,
+  0x1a, 0xc8, 0x22, 0x17, 0xc8, 0x20, 0x17, 0xc8, 0x20, 0x18, 0xc5, 0x21,
+  0x17, 0xc4, 0x21, 0x15, 0xc6, 0x20, 0x15, 0xc9, 0x20, 0x17, 0xc9, 0x20,
+  0x18, 0xc7, 0x20, 0x15, 0xc8, 0x21, 0x15, 0xcb, 0x21, 0x1a, 0xd4, 0x2a,
+  0x1c, 0xad, 0x29, 0x0f, 0x4d, 0x12, 0x10, 0x24, 0x0e, 0x14, 0x19, 0x0d,
+  0x15, 0x14, 0x0f, 0x13, 0x11, 0x0f, 0x12, 0x10, 0x10, 0x12, 0x10, 0x10,
+  0x12, 0x10, 0x10, 0x12, 0x10, 0x10, 0x11, 0x10, 0x0f, 0x11, 0x10, 0x0f,
+  0x10, 0x10, 0x0f, 0x11, 0x11, 0x10, 0x14, 0x15, 0x12, 0x12, 0x13, 0x10,
+  0x0b, 0x0b, 0x08, 0x0d, 0x0e, 0x0b, 0x0f, 0x0f, 0x0d, 0x13, 0x13, 0x10,
+  0x0a, 0x0a, 0x07, 0x02, 0x03, 0x01, 0x04, 0x06, 0x04, 0x0a, 0x0b, 0x0a,
+  0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+  0x01, 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, 0x02, 0x00, 0x01, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x03, 0x01, 0x02, 0x01, 0x03, 0x02,
+  0x02, 0x04, 0x02, 0x07, 0x0e, 0x06, 0x03, 0x0f, 0x03, 0x00, 0x10, 0x01,
+  0x04, 0x31, 0x06, 0x12, 0x8e, 0x1a, 0x08, 0xa7, 0x18, 0x09, 0xae, 0x17,
+  0x0d, 0xb7, 0x1b, 0x17, 0xc7, 0x21, 0x18, 0xc9, 0x22, 0x17, 0xc7, 0x21,
+  0x19, 0xc8, 0x22, 0x1a, 0xc9, 0x22, 0x1a, 0xc8, 0x23, 0x1a, 0xc7, 0x24,
+  0x1a, 0xc7, 0x24, 0x1a, 0xc7, 0x24, 0x1a, 0xc7, 0x23, 0x1a, 0xc7, 0x23,
+  0x1a, 0xc8, 0x22, 0x1b, 0xc8, 0x22, 0x1a, 0xc6, 0x20, 0x1b, 0xc6, 0x20,
+  0x1b, 0xc6, 0x20, 0x1b, 0xc6, 0x20, 0x1b, 0xc6, 0x20, 0x1b, 0xc6, 0x20,
+  0x1b, 0xc6, 0x20, 0x1b, 0xc5, 0x20, 0x1c, 0xc7, 0x21, 0x1c, 0xc7, 0x21,
+  0x1c, 0xc7, 0x21, 0x1b, 0xc6, 0x21, 0x1b, 0xc6, 0x21, 0x1b, 0xc6, 0x21,
+  0x1b, 0xc6, 0x21, 0x1b, 0xc6, 0x21, 0x19, 0xc8, 0x22, 0x19, 0xc8, 0x21,
+  0x19, 0xc8, 0x21, 0x19, 0xc8, 0x21, 0x19, 0xc8, 0x21, 0x19, 0xc8, 0x21,
+  0x19, 0xc8, 0x21, 0x19, 0xc8, 0x21, 0x1a, 0xca, 0x22, 0x1a, 0xca, 0x22,
+  0x1a, 0xca, 0x22, 0x1a, 0xca, 0x22, 0x1a, 0xca, 0x22, 0x1a, 0xca, 0x22,
+  0x1a, 0xca, 0x22, 0x1a, 0xca, 0x22, 0x19, 0xca, 0x21, 0x19, 0xca, 0x21,
+  0x1a, 0xc7, 0x22, 0x18, 0xc7, 0x23, 0x15, 0xc9, 0x22, 0x15, 0xcb, 0x21,
+  0x17, 0xcb, 0x21, 0x18, 0xc9, 0x21, 0x16, 0xca, 0x21, 0x16, 0xcc, 0x23,
+  0x1c, 0xd5, 0x2b, 0x1d, 0xad, 0x29, 0x0f, 0x4c, 0x12, 0x10, 0x24, 0x0e,
+  0x14, 0x19, 0x0e, 0x15, 0x14, 0x10, 0x13, 0x12, 0x10, 0x13, 0x11, 0x11,
+  0x13, 0x11, 0x11, 0x13, 0x11, 0x11, 0x13, 0x11, 0x11, 0x13, 0x11, 0x11,
+  0x13, 0x11, 0x11, 0x11, 0x12, 0x11, 0x12, 0x12, 0x11, 0x14, 0x15, 0x12,
+  0x12, 0x12, 0x10, 0x0b, 0x0b, 0x09, 0x0c, 0x0c, 0x0a, 0x0e, 0x0e, 0x0c,
+  0x11, 0x11, 0x0f, 0x09, 0x0a, 0x06, 0x02, 0x03, 0x01, 0x06, 0x07, 0x05,
+  0x0a, 0x0c, 0x0a, 0x02, 0x03, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00,
+  0x00, 0x00, 0x00, 0x01, 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, 0x02, 0x00, 0x01, 0x02, 0x00, 0x01,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x03, 0x01, 0x02,
+  0x02, 0x03, 0x01, 0x02, 0x05, 0x02, 0x09, 0x10, 0x09, 0x07, 0x11, 0x07,
+  0x02, 0x11, 0x03, 0x04, 0x32, 0x07, 0x11, 0x8e, 0x1a, 0x09, 0xab, 0x19,
+  0x0a, 0xb1, 0x18, 0x0e, 0xbb, 0x1c, 0x18, 0xcc, 0x22, 0x19, 0xcd, 0x23,
+  0x19, 0xca, 0x22, 0x1a, 0xcc, 0x23, 0x19, 0xca, 0x22, 0x19, 0xc9, 0x22,
+  0x1a, 0xc8, 0x23, 0x1a, 0xc8, 0x23, 0x1a, 0xc8, 0x23, 0x1a, 0xc8, 0x23,
+  0x1a, 0xc8, 0x24, 0x1a, 0xc9, 0x22, 0x1a, 0xc9, 0x22, 0x1c, 0xc9, 0x21,
+  0x1e, 0xc9, 0x21, 0x1d, 0xc9, 0x21, 0x1d, 0xc9, 0x21, 0x1d, 0xc9, 0x21,
+  0x1d, 0xc9, 0x21, 0x1d, 0xc9, 0x21, 0x1d, 0xc9, 0x21, 0x1d, 0xc9, 0x22,
+  0x1d, 0xc9, 0x22, 0x1d, 0xc9, 0x22, 0x1c, 0xc9, 0x21, 0x1c, 0xc9, 0x21,
+  0x1c, 0xc9, 0x21, 0x1c, 0xc9, 0x21, 0x1c, 0xc9, 0x21, 0x1a, 0xc9, 0x23,
+  0x19, 0xc9, 0x22, 0x19, 0xc9, 0x22, 0x19, 0xc9, 0x22, 0x19, 0xc9, 0x22,
+  0x19, 0xc9, 0x22, 0x19, 0xc9, 0x22, 0x19, 0xc9, 0x22, 0x19, 0xca, 0x22,
+  0x19, 0xca, 0x22, 0x19, 0xca, 0x22, 0x19, 0xca, 0x22, 0x19, 0xca, 0x22,
+  0x19, 0xca, 0x22, 0x19, 0xca, 0x22, 0x19, 0xcb, 0x22, 0x1b, 0xcc, 0x22,
+  0x1a, 0xcb, 0x22, 0x1b, 0xc9, 0x23, 0x19, 0xc9, 0x24, 0x16, 0xcc, 0x23,
+  0x16, 0xce, 0x22, 0x18, 0xce, 0x22, 0x19, 0xcc, 0x22, 0x17, 0xcb, 0x22,
+  0x17, 0xcf, 0x24, 0x1d, 0xd7, 0x2c, 0x1e, 0xae, 0x2a, 0x0f, 0x4d, 0x13,
+  0x11, 0x25, 0x0f, 0x14, 0x1a, 0x0f, 0x15, 0x15, 0x11, 0x14, 0x13, 0x11,
+  0x14, 0x12, 0x12, 0x14, 0x12, 0x12, 0x14, 0x12, 0x12, 0x14, 0x12, 0x12,
+  0x14, 0x12, 0x12, 0x14, 0x12, 0x12, 0x12, 0x13, 0x12, 0x12, 0x13, 0x11,
+  0x14, 0x14, 0x12, 0x12, 0x12, 0x10, 0x0a, 0x0b, 0x09, 0x0b, 0x0b, 0x09,
+  0x0d, 0x0e, 0x0b, 0x0f, 0x10, 0x0d, 0x08, 0x09, 0x05, 0x02, 0x03, 0x01,
+  0x06, 0x08, 0x06, 0x0b, 0x0c, 0x0a, 0x03, 0x04, 0x02, 0x00, 0x01, 0x00,
+  0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01,
+  0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01,
+  0x03, 0x00, 0x02, 0x02, 0x02, 0x01, 0x02, 0x05, 0x02, 0x0b, 0x10, 0x0a,
+  0x09, 0x11, 0x08, 0x02, 0x11, 0x03, 0x03, 0x33, 0x06, 0x0f, 0x8e, 0x19,
+  0x0a, 0xb0, 0x1a, 0x09, 0xb5, 0x19, 0x0e, 0xbe, 0x1c, 0x19, 0xd0, 0x23,
+  0x1a, 0xd2, 0x24, 0x1a, 0xcf, 0x23, 0x1b, 0xd0, 0x23, 0x1a, 0xcd, 0x22,
+  0x1a, 0xcb, 0x23, 0x1a, 0xcb, 0x23, 0x1a, 0xcb, 0x23, 0x1a, 0xcb, 0x23,
+  0x1a, 0xcb, 0x23, 0x1a, 0xcb, 0x24, 0x1a, 0xcc, 0x23, 0x1a, 0xcc, 0x23,
+  0x1c, 0xce, 0x23, 0x1d, 0xce, 0x23, 0x1d, 0xce, 0x23, 0x1d, 0xce, 0x23,
+  0x1d, 0xce, 0x23, 0x1d, 0xce, 0x23, 0x1d, 0xce, 0x23, 0x1d, 0xce, 0x23,
+  0x1d, 0xcd, 0x23, 0x1d, 0xcd, 0x23, 0x1d, 0xcd, 0x23, 0x1c, 0xcd, 0x22,
+  0x1c, 0xcd, 0x22, 0x1c, 0xcd, 0x22, 0x1c, 0xcd, 0x22, 0x1c, 0xcd, 0x22,
+  0x1a, 0xcc, 0x23, 0x1a, 0xcc, 0x23, 0x1a, 0xcc, 0x23, 0x1a, 0xcc, 0x23,
+  0x1a, 0xcc, 0x23, 0x1a, 0xcc, 0x23, 0x1a, 0xcc, 0x23, 0x1a, 0xcc, 0x23,
+  0x1a, 0xcb, 0x23, 0x1a, 0xcb, 0x23, 0x1a, 0xcb, 0x23, 0x1a, 0xcb, 0x23,
+  0x1a, 0xcb, 0x23, 0x1a, 0xcb, 0x23, 0x1a, 0xcb, 0x23, 0x1a, 0xcc, 0x22,
+  0x1d, 0xce, 0x24, 0x1d, 0xcc, 0x23, 0x1c, 0xcc, 0x24, 0x1b, 0xcc, 0x25,
+  0x18, 0xcf, 0x24, 0x17, 0xd0, 0x23, 0x1a, 0xd0, 0x23, 0x1a, 0xcf, 0x23,
+  0x18, 0xcc, 0x22, 0x19, 0xd0, 0x25, 0x1f, 0xd7, 0x2d, 0x1e, 0xad, 0x2a,
+  0x0e, 0x4b, 0x12, 0x10, 0x25, 0x10, 0x14, 0x1a, 0x10, 0x15, 0x16, 0x11,
+  0x15, 0x14, 0x11, 0x15, 0x13, 0x13, 0x15, 0x13, 0x13, 0x15, 0x13, 0x13,
+  0x15, 0x13, 0x13, 0x15, 0x13, 0x13, 0x15, 0x13, 0x13, 0x13, 0x14, 0x13,
+  0x13, 0x13, 0x12, 0x14, 0x14, 0x12, 0x12, 0x13, 0x11, 0x0b, 0x0c, 0x0a,
+  0x09, 0x0a, 0x07, 0x0d, 0x0e, 0x0b, 0x0e, 0x0f, 0x0c, 0x08, 0x09, 0x04,
+  0x02, 0x03, 0x01, 0x06, 0x07, 0x05, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x02,
+  0x01, 0x01, 0x00, 0x02, 0x03, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x01, 0x00, 0x00, 0x03, 0x01, 0x02, 0x01, 0x02, 0x00, 0x03, 0x06, 0x02,
+  0x0a, 0x10, 0x09, 0x09, 0x10, 0x09, 0x02, 0x10, 0x02, 0x03, 0x31, 0x05,
+  0x0e, 0x8c, 0x17, 0x0b, 0xb5, 0x1a, 0x0a, 0xb6, 0x18, 0x0f, 0xc0, 0x1c,
+  0x19, 0xd2, 0x23, 0x1a, 0xd5, 0x24, 0x1b, 0xd2, 0x23, 0x1c, 0xd3, 0x24,
+  0x1b, 0xd0, 0x23, 0x1b, 0xcd, 0x23, 0x1b, 0xcd, 0x24, 0x1b, 0xcd, 0x24,
+  0x1b, 0xcd, 0x24, 0x1b, 0xcd, 0x24, 0x1b, 0xcd, 0x24, 0x1a, 0xcf, 0x23,
+  0x1b, 0xcf, 0x23, 0x1a, 0xd1, 0x25, 0x1b, 0xd1, 0x25, 0x1a, 0xd1, 0x25,
+  0x1a, 0xd1, 0x25, 0x1a, 0xd1, 0x25, 0x1a, 0xd1, 0x25, 0x1a, 0xd1, 0x25,
+  0x1a, 0xd1, 0x25, 0x1a, 0xd0, 0x24, 0x1a, 0xd0, 0x24, 0x1a, 0xd0, 0x25,
+  0x1a, 0xd0, 0x24, 0x1a, 0xd0, 0x24, 0x1a, 0xd0, 0x24, 0x1a, 0xd0, 0x24,
+  0x1b, 0xd0, 0x24, 0x1b, 0xce, 0x24, 0x1b, 0xce, 0x23, 0x1b, 0xce, 0x23,
+  0x1b, 0xce, 0x23, 0x1b, 0xce, 0x23, 0x1b, 0xce, 0x23, 0x1b, 0xce, 0x23,
+  0x1b, 0xce, 0x23, 0x1b, 0xcd, 0x23, 0x1b, 0xcd, 0x23, 0x1b, 0xcd, 0x23,
+  0x1b, 0xcd, 0x23, 0x1b, 0xcd, 0x23, 0x1b, 0xcd, 0x23, 0x1b, 0xcd, 0x23,
+  0x1c, 0xce, 0x23, 0x1e, 0xd0, 0x24, 0x1f, 0xce, 0x24, 0x1e, 0xce, 0x26,
+  0x1d, 0xce, 0x26, 0x1a, 0xd1, 0x25, 0x1a, 0xd2, 0x25, 0x1c, 0xd1, 0x23,
+  0x1d, 0xd0, 0x24, 0x1a, 0xcc, 0x23, 0x1b, 0xcf, 0x26, 0x1f, 0xd6, 0x2d,
+  0x1d, 0xac, 0x29, 0x0d, 0x4a, 0x11, 0x0f, 0x25, 0x0f, 0x13, 0x1b, 0x10,
+  0x14, 0x16, 0x11, 0x14, 0x14, 0x11, 0x14, 0x13, 0x12, 0x14, 0x14, 0x12,
+  0x14, 0x14, 0x12, 0x14, 0x14, 0x12, 0x14, 0x14, 0x12, 0x14, 0x13, 0x12,
+  0x13, 0x14, 0x12, 0x12, 0x14, 0x13, 0x14, 0x15, 0x12, 0x13, 0x13, 0x11,
+  0x0d, 0x0d, 0x0b, 0x09, 0x0a, 0x06, 0x0d, 0x0e, 0x0b, 0x0d, 0x0e, 0x0b,
+  0x08, 0x09, 0x04, 0x03, 0x03, 0x01, 0x05, 0x06, 0x04, 0x09, 0x0a, 0x08,
+  0x02, 0x03, 0x02, 0x01, 0x01, 0x00, 0x02, 0x03, 0x01, 0x00, 0x01, 0x00,
+  0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x03, 0x01, 0x02, 0x01, 0x01, 0x00,
+  0x03, 0x07, 0x02, 0x0a, 0x0f, 0x09, 0x0a, 0x11, 0x09, 0x02, 0x10, 0x02,
+  0x03, 0x2f, 0x05, 0x0d, 0x8c, 0x16, 0x0c, 0xba, 0x1b, 0x0c, 0xba, 0x19,
+  0x10, 0xc3, 0x1d, 0x1b, 0xd5, 0x24, 0x1d, 0xd8, 0x26, 0x1d, 0xd6, 0x25,
+  0x1e, 0xd6, 0x25, 0x1e, 0xd4, 0x24, 0x1e, 0xd1, 0x25, 0x1d, 0xd1, 0x25,
+  0x1d, 0xd1, 0x25, 0x1d, 0xd1, 0x25, 0x1d, 0xd1, 0x25, 0x1d, 0xd1, 0x25,
+  0x1d, 0xd3, 0x25, 0x1d, 0xd3, 0x25, 0x1a, 0xd5, 0x26, 0x1a, 0xd5, 0x27,
+  0x1a, 0xd5, 0x27, 0x1a, 0xd5, 0x27, 0x1a, 0xd5, 0x27, 0x1a, 0xd5, 0x27,
+  0x1a, 0xd5, 0x27, 0x1a, 0xd5, 0x27, 0x1a, 0xd4, 0x26, 0x1a, 0xd4, 0x26,
+  0x1a, 0xd4, 0x27, 0x1a, 0xd5, 0x26, 0x1a, 0xd5, 0x26, 0x1a, 0xd5, 0x26,
+  0x1a, 0xd5, 0x26, 0x1c, 0xd4, 0x26, 0x1d, 0xd2, 0x25, 0x1d, 0xd1, 0x25,
+  0x1d, 0xd1, 0x25, 0x1d, 0xd1, 0x25, 0x1d, 0xd1, 0x25, 0x1d, 0xd1, 0x25,
+  0x1d, 0xd1, 0x25, 0x1d, 0xd1, 0x25, 0x1d, 0xcf, 0x25, 0x1d, 0xd0, 0x25,
+  0x1d, 0xd0, 0x25, 0x1d, 0xd0, 0x25, 0x1d, 0xd0, 0x25, 0x1d, 0xd0, 0x25,
+  0x1d, 0xd0, 0x25, 0x1e, 0xd0, 0x24, 0x20, 0xd3, 0x26, 0x22, 0xd1, 0x26,
+  0x21, 0xd0, 0x27, 0x20, 0xd0, 0x27, 0x1c, 0xd3, 0x26, 0x1c, 0xd4, 0x27,
+  0x20, 0xd3, 0x25, 0x20, 0xd3, 0x26, 0x1e, 0xce, 0x24, 0x1e, 0xd1, 0x27,
+  0x21, 0xd7, 0x2e, 0x1e, 0xab, 0x29, 0x0d, 0x49, 0x11, 0x0f, 0x25, 0x0e,
+  0x12, 0x1b, 0x10, 0x12, 0x16, 0x11, 0x13, 0x14, 0x11, 0x14, 0x13, 0x12,
+  0x14, 0x14, 0x12, 0x14, 0x14, 0x12, 0x14, 0x14, 0x12, 0x14, 0x14, 0x12,
+  0x14, 0x13, 0x12, 0x14, 0x14, 0x12, 0x13, 0x14, 0x13, 0x14, 0x15, 0x12,
+  0x14, 0x14, 0x12, 0x0e, 0x0f, 0x0c, 0x09, 0x0a, 0x05, 0x0d, 0x0e, 0x0c,
+  0x0d, 0x0e, 0x0b, 0x08, 0x09, 0x04, 0x03, 0x04, 0x01, 0x05, 0x06, 0x03,
+  0x07, 0x08, 0x06, 0x02, 0x03, 0x01, 0x01, 0x01, 0x00, 0x03, 0x03, 0x01,
+  0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x03, 0x01, 0x02,
+  0x01, 0x01, 0x00, 0x02, 0x06, 0x02, 0x0a, 0x0e, 0x09, 0x0c, 0x12, 0x0b,
+  0x06, 0x12, 0x06, 0x04, 0x30, 0x06, 0x10, 0x8e, 0x17, 0x13, 0xc2, 0x1f,
+  0x13, 0xc2, 0x1d, 0x17, 0xca, 0x21, 0x21, 0xdb, 0x27, 0x25, 0xde, 0x29,
+  0x25, 0xdd, 0x28, 0x25, 0xdd, 0x29, 0x27, 0xdc, 0x29, 0x27, 0xda, 0x29,
+  0x26, 0xda, 0x2a, 0x26, 0xda, 0x2a, 0x26, 0xda, 0x2a, 0x26, 0xda, 0x2a,
+  0x26, 0xd9, 0x2a, 0x25, 0xdb, 0x29, 0x25, 0xdb, 0x2a, 0x22, 0xdc, 0x2a,
+  0x22, 0xdb, 0x2b, 0x22, 0xdb, 0x2b, 0x22, 0xdb, 0x2b, 0x22, 0xdb, 0x2b,
+  0x22, 0xdb, 0x2b, 0x22, 0xdb, 0x2b, 0x22, 0xdb, 0x2b, 0x23, 0xdb, 0x2a,
+  0x23, 0xdb, 0x2a, 0x22, 0xda, 0x2b, 0x22, 0xdb, 0x2b, 0x22, 0xdb, 0x2b,
+  0x22, 0xdb, 0x2b, 0x22, 0xdb, 0x2b, 0x23, 0xdb, 0x2b, 0x24, 0xd8, 0x29,
+  0x25, 0xd8, 0x29, 0x25, 0xd8, 0x29, 0x25, 0xd8, 0x29, 0x25, 0xd8, 0x29,
+  0x25, 0xd8, 0x29, 0x25, 0xd8, 0x29, 0x25, 0xd8, 0x29, 0x25, 0xd7, 0x29,
+  0x25, 0xd8, 0x29, 0x25, 0xd8, 0x29, 0x25, 0xd8, 0x29, 0x25, 0xd8, 0x29,
+  0x25, 0xd8, 0x29, 0x25, 0xd8, 0x29, 0x27, 0xd8, 0x29, 0x28, 0xd9, 0x2a,
+  0x2a, 0xd8, 0x2a, 0x28, 0xd7, 0x2b, 0x27, 0xd7, 0x2b, 0x24, 0xd9, 0x2a,
+  0x24, 0xda, 0x2b, 0x28, 0xda, 0x29, 0x29, 0xd9, 0x2a, 0x27, 0xd6, 0x29,
+  0x27, 0xd8, 0x2b, 0x29, 0xdd, 0x32, 0x23, 0xae, 0x2c, 0x10, 0x4b, 0x13,
+  0x11, 0x25, 0x10, 0x13, 0x1d, 0x12, 0x13, 0x17, 0x12, 0x14, 0x15, 0x11,
+  0x15, 0x13, 0x13, 0x15, 0x14, 0x13, 0x15, 0x14, 0x13, 0x15, 0x14, 0x13,
+  0x15, 0x14, 0x13, 0x15, 0x13, 0x13, 0x14, 0x15, 0x13, 0x13, 0x14, 0x13,
+  0x13, 0x13, 0x11, 0x14, 0x14, 0x11, 0x0e, 0x0f, 0x0b, 0x08, 0x09, 0x05,
+  0x0f, 0x10, 0x0e, 0x0d, 0x0d, 0x0b, 0x07, 0x07, 0x03, 0x04, 0x05, 0x01,
+  0x07, 0x08, 0x06, 0x08, 0x09, 0x07, 0x02, 0x03, 0x01, 0x01, 0x01, 0x00,
+  0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
+  0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
+  0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01,
+  0x03, 0x01, 0x02, 0x01, 0x01, 0x00, 0x03, 0x05, 0x01, 0x0a, 0x0e, 0x08,
+  0x0e, 0x15, 0x0c, 0x09, 0x14, 0x08, 0x05, 0x31, 0x05, 0x13, 0x90, 0x19,
+  0x19, 0xc8, 0x23, 0x18, 0xc8, 0x21, 0x1c, 0xcf, 0x23, 0x26, 0xe0, 0x2a,
+  0x2a, 0xe3, 0x2c, 0x2a, 0xe2, 0x2b, 0x2b, 0xe2, 0x2b, 0x2e, 0xe2, 0x2c,
+  0x2e, 0xe1, 0x2d, 0x2c, 0xe0, 0x2d, 0x2c, 0xe0, 0x2d, 0x2c, 0xe0, 0x2d,
+  0x2c, 0xe0, 0x2d, 0x2c, 0xe0, 0x2d, 0x2b, 0xe2, 0x2d, 0x2b, 0xe2, 0x2e,
+  0x29, 0xe1, 0x2d, 0x29, 0xe0, 0x2e, 0x29, 0xe0, 0x2e, 0x29, 0xe0, 0x2e,
+  0x29, 0xe0, 0x2e, 0x29, 0xe0, 0x2e, 0x29, 0xe0, 0x2e, 0x29, 0xe0, 0x2e,
+  0x2a, 0xe1, 0x2e, 0x2a, 0xe1, 0x2e, 0x29, 0xdf, 0x2e, 0x29, 0xdf, 0x2e,
+  0x29, 0xdf, 0x2e, 0x29, 0xdf, 0x2e, 0x29, 0xdf, 0x2e, 0x2a, 0xdf, 0x2e,
+  0x2b, 0xdd, 0x2d, 0x2b, 0xde, 0x2d, 0x2b, 0xde, 0x2d, 0x2b, 0xde, 0x2d,
+  0x2b, 0xde, 0x2d, 0x2b, 0xde, 0x2d, 0x2b, 0xde, 0x2d, 0x2b, 0xdd, 0x2d,
+  0x2c, 0xde, 0x2d, 0x2c, 0xde, 0x2d, 0x2c, 0xde, 0x2d, 0x2c, 0xde, 0x2d,
+  0x2c, 0xde, 0x2d, 0x2c, 0xde, 0x2d, 0x2c, 0xde, 0x2d, 0x2d, 0xdd, 0x2c,
+  0x2f, 0xde, 0x2d, 0x31, 0xdd, 0x2d, 0x2f, 0xdc, 0x2f, 0x2e, 0xdc, 0x2f,
+  0x2b, 0xde, 0x2e, 0x2b, 0xdf, 0x2e, 0x2e, 0xdf, 0x2c, 0x30, 0xde, 0x2d,
+  0x2f, 0xdc, 0x2c, 0x2d, 0xde, 0x2f, 0x2f, 0xe2, 0x36, 0x27, 0xb1, 0x2f,
+  0x11, 0x4c, 0x14, 0x12, 0x26, 0x12, 0x14, 0x1e, 0x14, 0x13, 0x17, 0x13,
+  0x14, 0x15, 0x12, 0x15, 0x13, 0x13, 0x15, 0x13, 0x13, 0x15, 0x13, 0x13,
+  0x15, 0x13, 0x13, 0x15, 0x13, 0x13, 0x15, 0x13, 0x13, 0x13, 0x15, 0x13,
+  0x13, 0x14, 0x13, 0x13, 0x13, 0x10, 0x13, 0x14, 0x11, 0x0e, 0x0f, 0x0b,
+  0x09, 0x0a, 0x05, 0x10, 0x11, 0x0e, 0x0c, 0x0d, 0x0a, 0x06, 0x07, 0x02,
+  0x05, 0x06, 0x02, 0x09, 0x0a, 0x08, 0x08, 0x09, 0x07, 0x02, 0x02, 0x01,
+  0x01, 0x01, 0x00, 0x02, 0x02, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
+  0x01, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
+  0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x03, 0x00, 0x02, 0x03, 0x01, 0x02, 0x01, 0x00, 0x00, 0x02, 0x03, 0x01,
+  0x0a, 0x0d, 0x08, 0x13, 0x18, 0x11, 0x0f, 0x1a, 0x0e, 0x08, 0x34, 0x08,
+  0x17, 0x93, 0x1b, 0x23, 0xd1, 0x29, 0x22, 0xd3, 0x26, 0x26, 0xd8, 0x28,
+  0x30, 0xe8, 0x2f, 0x35, 0xe9, 0x31, 0x34, 0xe9, 0x30, 0x36, 0xe9, 0x30,
+  0x39, 0xeb, 0x32, 0x3a, 0xeb, 0x32, 0x37, 0xea, 0x33, 0x37, 0xea, 0x33,
+  0x37, 0xea, 0x33, 0x37, 0xea, 0x33, 0x37, 0xea, 0x33, 0x36, 0xeb, 0x32,
+  0x36, 0xeb, 0x33, 0x34, 0xe8, 0x32, 0x35, 0xe6, 0x33, 0x35, 0xe6, 0x33,
+  0x35, 0xe6, 0x33, 0x35, 0xe6, 0x33, 0x35, 0xe6, 0x33, 0x35, 0xe6, 0x33,
+  0x35, 0xe6, 0x33, 0x36, 0xe9, 0x33, 0x36, 0xe9, 0x33, 0x35, 0xe6, 0x33,
+  0x35, 0xe6, 0x33, 0x35, 0xe6, 0x33, 0x35, 0xe6, 0x33, 0x35, 0xe6, 0x33,
+  0x35, 0xe6, 0x33, 0x35, 0xe5, 0x32, 0x35, 0xe6, 0x32, 0x35, 0xe6, 0x32,
+  0x35, 0xe6, 0x32, 0x35, 0xe6, 0x32, 0x35, 0xe6, 0x32, 0x35, 0xe6, 0x32,
+  0x35, 0xe5, 0x32, 0x36, 0xe7, 0x32, 0x36, 0xe7, 0x32, 0x36, 0xe7, 0x32,
+  0x36, 0xe7, 0x32, 0x36, 0xe7, 0x32, 0x36, 0xe7, 0x32, 0x36, 0xe7, 0x32,
+  0x38, 0xe6, 0x32, 0x39, 0xe6, 0x32, 0x3b, 0xe5, 0x32, 0x39, 0xe3, 0x34,
+  0x37, 0xe4, 0x35, 0x35, 0xe5, 0x33, 0x35, 0xe6, 0x33, 0x39, 0xe6, 0x32,
+  0x3b, 0xe6, 0x32, 0x3c, 0xe6, 0x32, 0x38, 0xe7, 0x34, 0x38, 0xe8, 0x3b,
+  0x2d, 0xb5, 0x32, 0x15, 0x4d, 0x16, 0x15, 0x26, 0x13, 0x15, 0x1e, 0x15,
+  0x14, 0x18, 0x14, 0x16, 0x17, 0x13, 0x17, 0x14, 0x15, 0x17, 0x14, 0x15,
+  0x17, 0x14, 0x15, 0x17, 0x14, 0x15, 0x17, 0x14, 0x15, 0x17, 0x14, 0x15,
+  0x15, 0x16, 0x15, 0x14, 0x15, 0x14, 0x12, 0x13, 0x11, 0x13, 0x14, 0x11,
+  0x0e, 0x0f, 0x0c, 0x0a, 0x0b, 0x06, 0x14, 0x15, 0x12, 0x0d, 0x0e, 0x0b,
+  0x06, 0x07, 0x03, 0x07, 0x08, 0x04, 0x0c, 0x0d, 0x0c, 0x08, 0x09, 0x08,
+  0x02, 0x03, 0x01, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
+  0x00, 0x01, 0x00, 0x01, 0x03, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00,
+  0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x03, 0x01, 0x02, 0x02, 0x00, 0x00,
+  0x04, 0x04, 0x01, 0x0d, 0x10, 0x0b, 0x1c, 0x22, 0x1a, 0x1c, 0x27, 0x1a,
+  0x13, 0x3f, 0x11, 0x21, 0x99, 0x20, 0x33, 0xdc, 0x33, 0x32, 0xe0, 0x30,
+  0x36, 0xe3, 0x32, 0x3f, 0xf0, 0x37, 0x43, 0xf1, 0x38, 0x44, 0xf1, 0x38,
+  0x45, 0xf1, 0x38, 0x47, 0xf2, 0x3a, 0x47, 0xf3, 0x3a, 0x45, 0xf1, 0x3b,
+  0x45, 0xf1, 0x3b, 0x45, 0xf1, 0x3b, 0x44, 0xf2, 0x3a, 0x44, 0xf2, 0x3a,
+  0x44, 0xf3, 0x39, 0x45, 0xf3, 0x3a, 0x46, 0xf1, 0x39, 0x47, 0xef, 0x3a,
+  0x47, 0xef, 0x3a, 0x47, 0xef, 0x3a, 0x47, 0xef, 0x3a, 0x47, 0xef, 0x3a,
+  0x47, 0xef, 0x3a, 0x47, 0xef, 0x3a, 0x48, 0xf1, 0x3b, 0x48, 0xf1, 0x3b,
+  0x47, 0xef, 0x3a, 0x47, 0xef, 0x3a, 0x47, 0xef, 0x3a, 0x47, 0xef, 0x3a,
+  0x47, 0xef, 0x3a, 0x46, 0xef, 0x3a, 0x44, 0xed, 0x38, 0x43, 0xee, 0x39,
+  0x43, 0xee, 0x39, 0x43, 0xee, 0x39, 0x43, 0xee, 0x39, 0x43, 0xee, 0x39,
+  0x43, 0xee, 0x39, 0x43, 0xee, 0x39, 0x45, 0xf0, 0x3a, 0x45, 0xf0, 0x3a,
+  0x45, 0xf0, 0x3a, 0x45, 0xf0, 0x3a, 0x45, 0xf0, 0x3a, 0x45, 0xf0, 0x3a,
+  0x45, 0xf0, 0x3a, 0x46, 0xef, 0x39, 0x48, 0xef, 0x39, 0x49, 0xef, 0x39,
+  0x47, 0xed, 0x3b, 0x45, 0xee, 0x3c, 0x43, 0xef, 0x3b, 0x44, 0xef, 0x3a,
+  0x48, 0xef, 0x39, 0x4b, 0xef, 0x39, 0x4b, 0xef, 0x3a, 0x47, 0xef, 0x3c,
+  0x44, 0xee, 0x41, 0x36, 0xb8, 0x37, 0x1a, 0x50, 0x19, 0x19, 0x29, 0x16,
+  0x18, 0x21, 0x18, 0x17, 0x1b, 0x17, 0x19, 0x1a, 0x17, 0x1b, 0x18, 0x18,
+  0x1a, 0x18, 0x18, 0x1a, 0x18, 0x18, 0x1a, 0x18, 0x18, 0x1a, 0x18, 0x18,
+  0x1a, 0x18, 0x18, 0x18, 0x19, 0x18, 0x18, 0x19, 0x17, 0x17, 0x18, 0x15,
+  0x19, 0x1a, 0x17, 0x14, 0x15, 0x12, 0x12, 0x13, 0x0e, 0x21, 0x22, 0x1e,
+  0x15, 0x17, 0x13, 0x0c, 0x0d, 0x09, 0x0f, 0x10, 0x0c, 0x12, 0x13, 0x11,
+  0x09, 0x0a, 0x09, 0x02, 0x03, 0x01, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x02, 0x01, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00,
+  0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x02, 0x00, 0x01,
+  0x02, 0x00, 0x00, 0x05, 0x05, 0x02, 0x10, 0x13, 0x0d, 0x27, 0x2d, 0x24,
+  0x2b, 0x36, 0x28, 0x1f, 0x4b, 0x1b, 0x2b, 0x9f, 0x26, 0x45, 0xe8, 0x3d,
+  0x45, 0xef, 0x3a, 0x48, 0xf0, 0x3b, 0x50, 0xf8, 0x40, 0x53, 0xfa, 0x40,
+  0x55, 0xfa, 0x42, 0x56, 0xfa, 0x41, 0x55, 0xf9, 0x41, 0x55, 0xfa, 0x41,
+  0x55, 0xf8, 0x42, 0x55, 0xf8, 0x42, 0x55, 0xf9, 0x42, 0x53, 0xfa, 0x41,
+  0x53, 0xfa, 0x41, 0x53, 0xfa, 0x40, 0x55, 0xfa, 0x41, 0x59, 0xf9, 0x41,
+  0x5a, 0xf8, 0x43, 0x5a, 0xf8, 0x43, 0x5a, 0xf8, 0x43, 0x5a, 0xf8, 0x43,
+  0x5a, 0xf8, 0x43, 0x5a, 0xf8, 0x43, 0x5a, 0xf8, 0x43, 0x5b, 0xf9, 0x43,
+  0x5b, 0xf9, 0x43, 0x5a, 0xf8, 0x43, 0x5a, 0xf8, 0x43, 0x5a, 0xf8, 0x43,
+  0x5a, 0xf8, 0x43, 0x5a, 0xf8, 0x43, 0x58, 0xf8, 0x42, 0x54, 0xf6, 0x40,
+  0x52, 0xf6, 0x40, 0x53, 0xf6, 0x40, 0x53, 0xf6, 0x40, 0x53, 0xf6, 0x40,
+  0x53, 0xf6, 0x40, 0x53, 0xf6, 0x40, 0x53, 0xf6, 0x40, 0x55, 0xf8, 0x42,
+  0x55, 0xf8, 0x41, 0x55, 0xf8, 0x41, 0x55, 0xf8, 0x41, 0x55, 0xf8, 0x41,
+  0x55, 0xf8, 0x41, 0x55, 0xf8, 0x42, 0x55, 0xf9, 0x40, 0x58, 0xf9, 0x40,
+  0x58, 0xf9, 0x41, 0x56, 0xf7, 0x44, 0x54, 0xf8, 0x44, 0x52, 0xf9, 0x42,
+  0x54, 0xf9, 0x41, 0x58, 0xf9, 0x42, 0x5b, 0xf9, 0x41, 0x5b, 0xf8, 0x43,
+  0x57, 0xf7, 0x44, 0x50, 0xf3, 0x48, 0x3e, 0xbc, 0x3b, 0x20, 0x53, 0x1c,
+  0x1d, 0x2b, 0x19, 0x1c, 0x24, 0x1b, 0x1a, 0x1e, 0x1a, 0x1d, 0x1e, 0x1c,
+  0x1f, 0x1c, 0x1c, 0x1e, 0x1c, 0x1c, 0x1e, 0x1c, 0x1c, 0x1e, 0x1c, 0x1c,
+  0x1e, 0x1c, 0x1c, 0x1e, 0x1c, 0x1c, 0x1c, 0x1d, 0x1c, 0x1c, 0x1d, 0x1c,
+  0x1d, 0x1e, 0x1c, 0x1f, 0x20, 0x1d, 0x1b, 0x1c, 0x19, 0x1b, 0x1c, 0x18,
+  0x2f, 0x30, 0x2d, 0x20, 0x21, 0x1d, 0x14, 0x15, 0x11, 0x18, 0x19, 0x16,
+  0x17, 0x18, 0x18, 0x0a, 0x0b, 0x0a, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x01, 0x01, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
+  0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
+  0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+  0x02, 0x01, 0x02, 0x03, 0x00, 0x00, 0x06, 0x04, 0x02, 0x12, 0x15, 0x0f,
+  0x31, 0x37, 0x2d, 0x39, 0x44, 0x34, 0x2a, 0x54, 0x23, 0x34, 0xa1, 0x2a,
+  0x55, 0xef, 0x46, 0x57, 0xf8, 0x44, 0x5a, 0xf8, 0x44, 0x5f, 0xfd, 0x47,
+  0x61, 0xfe, 0x47, 0x63, 0xff, 0x48, 0x64, 0xfe, 0x47, 0x63, 0xfc, 0x47,
+  0x63, 0xfd, 0x47, 0x64, 0xfc, 0x48, 0x64, 0xfc, 0x48, 0x63, 0xfd, 0x48,
+  0x61, 0xfe, 0x47, 0x61, 0xfe, 0x47, 0x61, 0xff, 0x45, 0x62, 0xff, 0x46,
+  0x66, 0xff, 0x47, 0x68, 0xfe, 0x48, 0x68, 0xfe, 0x48, 0x68, 0xfe, 0x48,
+  0x68, 0xfe, 0x48, 0x68, 0xfe, 0x48, 0x68, 0xfe, 0x48, 0x68, 0xfe, 0x48,
+  0x68, 0xfe, 0x48, 0x68, 0xfe, 0x48, 0x68, 0xfe, 0x48, 0x68, 0xfe, 0x48,
+  0x68, 0xfe, 0x48, 0x68, 0xfe, 0x48, 0x68, 0xfe, 0x48, 0x67, 0xfe, 0x47,
+  0x63, 0xfc, 0x45, 0x61, 0xfc, 0x46, 0x62, 0xfc, 0x46, 0x62, 0xfc, 0x46,
+  0x62, 0xfc, 0x46, 0x62, 0xfc, 0x46, 0x62, 0xfc, 0x46, 0x61, 0xfc, 0x46,
+  0x63, 0xfe, 0x47, 0x63, 0xfe, 0x46, 0x63, 0xfe, 0x46, 0x63, 0xfe, 0x46,
+  0x63, 0xfe, 0x46, 0x63, 0xfe, 0x46, 0x63, 0xfe, 0x47, 0x63, 0xff, 0x46,
+  0x65, 0xff, 0x45, 0x65, 0xff, 0x47, 0x63, 0xfd, 0x49, 0x61, 0xfd, 0x49,
+  0x5f, 0xff, 0x47, 0x61, 0xff, 0x46, 0x66, 0xff, 0x47, 0x69, 0xfe, 0x46,
+  0x69, 0xfe, 0x48, 0x64, 0xfc, 0x49, 0x5a, 0xf7, 0x4c, 0x46, 0xbf, 0x3f,
+  0x25, 0x55, 0x1f, 0x22, 0x2e, 0x1c, 0x20, 0x27, 0x1f, 0x1f, 0x22, 0x1f,
+  0x21, 0x21, 0x20, 0x23, 0x20, 0x20, 0x22, 0x20, 0x1f, 0x21, 0x20, 0x1f,
+  0x21, 0x20, 0x1f, 0x21, 0x20, 0x1f, 0x22, 0x20, 0x1f, 0x20, 0x21, 0x1f,
+  0x20, 0x20, 0x1f, 0x21, 0x22, 0x1f, 0x22, 0x24, 0x21, 0x20, 0x21, 0x1e,
+  0x23, 0x24, 0x21, 0x3e, 0x3f, 0x3c, 0x29, 0x2a, 0x27, 0x1b, 0x1c, 0x19,
+  0x21, 0x22, 0x1f, 0x1d, 0x1f, 0x1d, 0x0b, 0x0c, 0x0b, 0x02, 0x02, 0x01,
+  0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x02, 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,
+  0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
+  0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x01, 0x00, 0x01, 0x04, 0x02, 0x03, 0x03, 0x01, 0x01, 0x03, 0x03, 0x01,
+  0x11, 0x14, 0x0e, 0x35, 0x3a, 0x30, 0x3e, 0x48, 0x38, 0x2c, 0x55, 0x24,
+  0x36, 0x9e, 0x2a, 0x5c, 0xee, 0x48, 0x60, 0xf8, 0x48, 0x62, 0xf8, 0x47,
+  0x65, 0xfd, 0x49, 0x66, 0xfb, 0x47, 0x67, 0xfd, 0x47, 0x69, 0xfd, 0x47,
+  0x6a, 0xfb, 0x48, 0x6a, 0xfc, 0x48, 0x6b, 0xfb, 0x4a, 0x6b, 0xfb, 0x49,
+  0x6a, 0xfc, 0x49, 0x68, 0xfd, 0x49, 0x68, 0xfd, 0x48, 0x66, 0xff, 0x46,
+  0x67, 0xff, 0x46, 0x68, 0xff, 0x47, 0x68, 0xff, 0x47, 0x68, 0xff, 0x47,
+  0x68, 0xff, 0x47, 0x68, 0xff, 0x47, 0x69, 0xff, 0x47, 0x69, 0xff, 0x47,
+  0x69, 0xff, 0x47, 0x68, 0xff, 0x47, 0x68, 0xff, 0x47, 0x68, 0xff, 0x47,
+  0x68, 0xff, 0x47, 0x68, 0xff, 0x47, 0x68, 0xff, 0x47, 0x68, 0xff, 0x47,
+  0x69, 0xff, 0x47, 0x68, 0xfe, 0x46, 0x69, 0xfe, 0x47, 0x68, 0xfe, 0x47,
+  0x68, 0xfe, 0x47, 0x68, 0xfe, 0x47, 0x68, 0xfe, 0x47, 0x68, 0xfe, 0x47,
+  0x69, 0xfe, 0x47, 0x68, 0xfe, 0x46, 0x68, 0xfe, 0x46, 0x68, 0xfe, 0x46,
+  0x68, 0xfe, 0x46, 0x68, 0xfe, 0x46, 0x68, 0xfe, 0x46, 0x68, 0xfe, 0x47,
+  0x68, 0xfe, 0x46, 0x69, 0xff, 0x45, 0x69, 0xff, 0x46, 0x67, 0xfc, 0x49,
+  0x66, 0xfc, 0x4a, 0x63, 0xff, 0x48, 0x66, 0xff, 0x47, 0x6b, 0xfe, 0x46,
+  0x6e, 0xfd, 0x46, 0x6e, 0xfd, 0x47, 0x68, 0xfb, 0x49, 0x5f, 0xf7, 0x4c,
+  0x4b, 0xc0, 0x3f, 0x28, 0x55, 0x1f, 0x25, 0x2f, 0x1e, 0x24, 0x29, 0x21,
+  0x22, 0x24, 0x22, 0x23, 0x22, 0x21, 0x24, 0x22, 0x22, 0x24, 0x22, 0x21,
+  0x23, 0x22, 0x21, 0x23, 0x22, 0x21, 0x23, 0x22, 0x21, 0x24, 0x22, 0x21,
+  0x22, 0x23, 0x21, 0x21, 0x22, 0x21, 0x20, 0x22, 0x20, 0x22, 0x24, 0x21,
+  0x21, 0x23, 0x20, 0x27, 0x28, 0x25, 0x46, 0x48, 0x43, 0x2e, 0x30, 0x2c,
+  0x1d, 0x1e, 0x1b, 0x24, 0x25, 0x22, 0x20, 0x21, 0x1f, 0x0b, 0x0c, 0x0c,
+  0x01, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00,
+  0x02, 0x03, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00,
+  0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x06, 0x03, 0x05, 0x03, 0x01, 0x01,
+  0x02, 0x02, 0x01, 0x11, 0x13, 0x0d, 0x38, 0x3d, 0x32, 0x43, 0x4d, 0x3d,
+  0x30, 0x56, 0x26, 0x38, 0x9a, 0x2a, 0x64, 0xed, 0x4c, 0x68, 0xf8, 0x4d,
+  0x69, 0xf8, 0x4b, 0x6b, 0xfd, 0x4b, 0x6b, 0xfa, 0x49, 0x6d, 0xfd, 0x48,
+  0x6e, 0xfb, 0x48, 0x71, 0xfb, 0x49, 0x71, 0xfb, 0x49, 0x72, 0xfb, 0x4b,
+  0x72, 0xfa, 0x4a, 0x71, 0xfa, 0x4a, 0x6f, 0xfb, 0x4a, 0x6f, 0xfc, 0x4a,
+  0x6d, 0xfe, 0x48, 0x6d, 0xff, 0x48, 0x6c, 0xff, 0x48, 0x6b, 0xff, 0x47,
+  0x6b, 0xff, 0x47, 0x6b, 0xff, 0x47, 0x6b, 0xff, 0x47, 0x6c, 0xff, 0x48,
+  0x6c, 0xff, 0x48, 0x6c, 0xff, 0x48, 0x6b, 0xff, 0x47, 0x6b, 0xff, 0x47,
+  0x6b, 0xff, 0x47, 0x6b, 0xff, 0x47, 0x6b, 0xff, 0x47, 0x6b, 0xff, 0x47,
+  0x6b, 0xff, 0x47, 0x6d, 0xff, 0x47, 0x6e, 0xff, 0x48, 0x70, 0xff, 0x49,
+  0x70, 0xff, 0x49, 0x70, 0xff, 0x49, 0x70, 0xff, 0x49, 0x70, 0xff, 0x49,
+  0x70, 0xff, 0x49, 0x71, 0xff, 0x49, 0x6f, 0xfe, 0x47, 0x6f, 0xfe, 0x47,
+  0x6f, 0xfe, 0x47, 0x6f, 0xfe, 0x47, 0x6f, 0xfe, 0x47, 0x6f, 0xfe, 0x47,
+  0x6f, 0xfe, 0x48, 0x6f, 0xfd, 0x48, 0x6d, 0xff, 0x46, 0x6d, 0xfe, 0x47,
+  0x6c, 0xfc, 0x4a, 0x6b, 0xfc, 0x4b, 0x68, 0xfe, 0x48, 0x6c, 0xff, 0x48,
+  0x71, 0xfd, 0x47, 0x74, 0xfc, 0x47, 0x73, 0xfc, 0x48, 0x6c, 0xfb, 0x4a,
+  0x64, 0xf6, 0x4d, 0x50, 0xbf, 0x3f, 0x2b, 0x56, 0x20, 0x29, 0x31, 0x20,
+  0x27, 0x2a, 0x24, 0x26, 0x25, 0x24, 0x26, 0x23, 0x23, 0x25, 0x23, 0x23,
+  0x26, 0x23, 0x23, 0x25, 0x23, 0x23, 0x25, 0x23, 0x23, 0x25, 0x23, 0x23,
+  0x25, 0x23, 0x23, 0x23, 0x24, 0x23, 0x23, 0x23, 0x22, 0x21, 0x22, 0x20,
+  0x22, 0x23, 0x21, 0x22, 0x23, 0x20, 0x2b, 0x2c, 0x28, 0x4d, 0x4d, 0x4a,
+  0x33, 0x33, 0x30, 0x20, 0x21, 0x1e, 0x28, 0x29, 0x26, 0x23, 0x24, 0x22,
+  0x0c, 0x0c, 0x0b, 0x01, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00,
+  0x01, 0x02, 0x00, 0x03, 0x04, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00,
+  0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x01, 0x05, 0x02, 0x04,
+  0x02, 0x01, 0x01, 0x02, 0x02, 0x01, 0x0f, 0x12, 0x0c, 0x3a, 0x3e, 0x33,
+  0x4b, 0x54, 0x45, 0x35, 0x57, 0x2b, 0x3d, 0x92, 0x2d, 0x6f, 0xec, 0x55,
+  0x6e, 0xfa, 0x51, 0x6c, 0xfa, 0x4c, 0x6e, 0xfd, 0x4b, 0x71, 0xfb, 0x4b,
+  0x77, 0xfd, 0x4d, 0x78, 0xfb, 0x4b, 0x79, 0xfc, 0x4c, 0x79, 0xfc, 0x4c,
+  0x77, 0xfc, 0x4d, 0x78, 0xfc, 0x4d, 0x78, 0xfc, 0x4d, 0x78, 0xfc, 0x4e,
+  0x78, 0xfc, 0x4e, 0x76, 0xfe, 0x4c, 0x76, 0xff, 0x4c, 0x76, 0xfe, 0x4c,
+  0x77, 0xfe, 0x4b, 0x77, 0xfe, 0x4b, 0x77, 0xfe, 0x4b, 0x77, 0xfe, 0x4b,
+  0x77, 0xfe, 0x4c, 0x77, 0xfe, 0x4c, 0x77, 0xfe, 0x4b, 0x78, 0xff, 0x4c,
+  0x77, 0xfe, 0x4c, 0x77, 0xfe, 0x4c, 0x77, 0xfe, 0x4c, 0x77, 0xfe, 0x4c,
+  0x77, 0xfe, 0x4c, 0x77, 0xfe, 0x4c, 0x79, 0xff, 0x4c, 0x79, 0xfe, 0x4d,
+  0x7b, 0xfe, 0x4d, 0x7a, 0xfe, 0x4d, 0x7a, 0xfe, 0x4d, 0x7a, 0xfe, 0x4d,
+  0x7a, 0xfe, 0x4d, 0x7a, 0xfe, 0x4d, 0x7b, 0xfe, 0x4d, 0x7a, 0xfe, 0x4c,
+  0x7a, 0xfe, 0x4c, 0x7a, 0xfe, 0x4c, 0x7a, 0xfe, 0x4c, 0x7a, 0xfe, 0x4c,
+  0x7a, 0xfe, 0x4c, 0x7a, 0xfd, 0x4c, 0x78, 0xfd, 0x4b, 0x75, 0xff, 0x49,
+  0x74, 0xfe, 0x4b, 0x74, 0xfb, 0x4f, 0x75, 0xfb, 0x4f, 0x73, 0xfe, 0x4c,
+  0x76, 0xfe, 0x4c, 0x7a, 0xfb, 0x4e, 0x7b, 0xfa, 0x4f, 0x77, 0xfb, 0x4f,
+  0x72, 0xfa, 0x50, 0x6e, 0xf5, 0x56, 0x53, 0xb9, 0x42, 0x2d, 0x54, 0x23,
+  0x2b, 0x33, 0x24, 0x28, 0x2c, 0x25, 0x28, 0x28, 0x25, 0x27, 0x25, 0x24,
+  0x28, 0x25, 0x24, 0x28, 0x25, 0x24, 0x28, 0x25, 0x24, 0x28, 0x25, 0x24,
+  0x28, 0x25, 0x24, 0x28, 0x25, 0x24, 0x27, 0x26, 0x24, 0x26, 0x25, 0x24,
+  0x25, 0x24, 0x22, 0x26, 0x25, 0x22, 0x26, 0x25, 0x22, 0x2e, 0x2d, 0x2a,
+  0x50, 0x4e, 0x4a, 0x36, 0x35, 0x31, 0x29, 0x28, 0x25, 0x31, 0x30, 0x2e,
+  0x27, 0x27, 0x26, 0x0a, 0x0a, 0x0b, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+  0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x02, 0x02, 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, 0x01, 0x01, 0x00,
+  0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+  0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x02, 0x02, 0x02,
+  0x02, 0x01, 0x02, 0x01, 0x00, 0x00, 0x02, 0x03, 0x00, 0x0e, 0x10, 0x0a,
+  0x3b, 0x3e, 0x36, 0x55, 0x5b, 0x4d, 0x3b, 0x58, 0x30, 0x43, 0x8a, 0x2f,
+  0x7b, 0xea, 0x5e, 0x74, 0xfd, 0x55, 0x6f, 0xfd, 0x4e, 0x71, 0xfe, 0x4b,
+  0x78, 0xfe, 0x4d, 0x83, 0xfe, 0x52, 0x83, 0xfb, 0x4f, 0x82, 0xfd, 0x4f,
+  0x81, 0xfe, 0x4e, 0x7e, 0xfe, 0x4f, 0x7f, 0xfe, 0x4f, 0x7f, 0xfe, 0x50,
+  0x80, 0xfd, 0x52, 0x80, 0xfc, 0x53, 0x7e, 0xfe, 0x51, 0x80, 0xfe, 0x51,
+  0x83, 0xfd, 0x51, 0x85, 0xfd, 0x51, 0x84, 0xfd, 0x51, 0x84, 0xfd, 0x51,
+  0x85, 0xfd, 0x51, 0x84, 0xfc, 0x50, 0x84, 0xfc, 0x50, 0x84, 0xfc, 0x50,
+  0x86, 0xfe, 0x52, 0x86, 0xfe, 0x51, 0x86, 0xfe, 0x51, 0x86, 0xfe, 0x51,
+  0x86, 0xfe, 0x51, 0x86, 0xfe, 0x51, 0x86, 0xfe, 0x51, 0x86, 0xfe, 0x51,
+  0x85, 0xfd, 0x51, 0x86, 0xfd, 0x51, 0x86, 0xfd, 0x51, 0x86, 0xfd, 0x51,
+  0x86, 0xfd, 0x51, 0x86, 0xfd, 0x51, 0x86, 0xfd, 0x51, 0x86, 0xfd, 0x51,
+  0x86, 0xfe, 0x51, 0x86, 0xfe, 0x51, 0x86, 0xfe, 0x51, 0x86, 0xfe, 0x51,
+  0x86, 0xfe, 0x51, 0x86, 0xfe, 0x52, 0x85, 0xfd, 0x51, 0x83, 0xfe, 0x4f,
+  0x7d, 0xff, 0x4d, 0x7c, 0xfe, 0x4f, 0x7e, 0xfb, 0x54, 0x7f, 0xfb, 0x54,
+  0x7d, 0xfe, 0x4f, 0x81, 0xfe, 0x51, 0x84, 0xfa, 0x55, 0x83, 0xf9, 0x57,
+  0x7b, 0xfb, 0x57, 0x78, 0xfa, 0x58, 0x7a, 0xf3, 0x60, 0x58, 0xb1, 0x46,
+  0x2e, 0x51, 0x25, 0x2c, 0x36, 0x28, 0x29, 0x2f, 0x27, 0x29, 0x2b, 0x26,
+  0x28, 0x28, 0x25, 0x2a, 0x28, 0x25, 0x2a, 0x28, 0x25, 0x2b, 0x28, 0x25,
+  0x2b, 0x28, 0x25, 0x2a, 0x28, 0x25, 0x2b, 0x28, 0x25, 0x2b, 0x28, 0x25,
+  0x2a, 0x28, 0x25, 0x2a, 0x27, 0x24, 0x2b, 0x27, 0x25, 0x2a, 0x27, 0x24,
+  0x30, 0x2e, 0x2b, 0x51, 0x4d, 0x4b, 0x38, 0x35, 0x33, 0x32, 0x2e, 0x2c,
+  0x3b, 0x37, 0x37, 0x2c, 0x2b, 0x2a, 0x09, 0x09, 0x09, 0x01, 0x01, 0x01,
+  0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 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, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01,
+  0x01, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00,
+  0x0d, 0x0f, 0x09, 0x3a, 0x3d, 0x36, 0x5c, 0x61, 0x55, 0x44, 0x5d, 0x39,
+  0x43, 0x84, 0x31, 0x7e, 0xe8, 0x63, 0x72, 0xfa, 0x57, 0x6d, 0xfe, 0x50,
+  0x70, 0xff, 0x4d, 0x76, 0xff, 0x4f, 0x84, 0xfd, 0x55, 0x84, 0xfb, 0x53,
+  0x80, 0xfd, 0x52, 0x7e, 0xff, 0x50, 0x7b, 0xff, 0x50, 0x7c, 0xff, 0x51,
+  0x7d, 0xfe, 0x52, 0x80, 0xfc, 0x55, 0x80, 0xfb, 0x56, 0x7e, 0xfd, 0x54,
+  0x7e, 0xfd, 0x54, 0x81, 0xfd, 0x54, 0x83, 0xfd, 0x54, 0x82, 0xfd, 0x54,
+  0x82, 0xfd, 0x54, 0x83, 0xfd, 0x54, 0x81, 0xfc, 0x53, 0x81, 0xfc, 0x53,
+  0x81, 0xfc, 0x53, 0x83, 0xfe, 0x55, 0x83, 0xfd, 0x55, 0x83, 0xfd, 0x55,
+  0x83, 0xfd, 0x55, 0x83, 0xfd, 0x55, 0x83, 0xfd, 0x55, 0x83, 0xfd, 0x55,
+  0x83, 0xfe, 0x55, 0x82, 0xfc, 0x54, 0x82, 0xfc, 0x54, 0x82, 0xfc, 0x54,
+  0x82, 0xfc, 0x54, 0x82, 0xfc, 0x54, 0x82, 0xfc, 0x54, 0x82, 0xfc, 0x54,
+  0x82, 0xfc, 0x54, 0x83, 0xfe, 0x55, 0x83, 0xfe, 0x55, 0x83, 0xfe, 0x55,
+  0x83, 0xfe, 0x55, 0x83, 0xfe, 0x55, 0x83, 0xfd, 0x55, 0x82, 0xfc, 0x54,
+  0x80, 0xfd, 0x52, 0x7b, 0xfe, 0x51, 0x7a, 0xfd, 0x53, 0x7d, 0xf9, 0x58,
+  0x7e, 0xfa, 0x57, 0x7e, 0xfe, 0x51, 0x7f, 0xfe, 0x52, 0x82, 0xfa, 0x58,
+  0x80, 0xf9, 0x5a, 0x78, 0xfb, 0x59, 0x75, 0xf9, 0x59, 0x7d, 0xf2, 0x61,
+  0x59, 0xad, 0x47, 0x32, 0x53, 0x28, 0x31, 0x3a, 0x2b, 0x2e, 0x31, 0x29,
+  0x2d, 0x2f, 0x29, 0x2d, 0x2c, 0x28, 0x2e, 0x2c, 0x28, 0x2e, 0x2c, 0x28,
+  0x2f, 0x2c, 0x29, 0x2f, 0x2c, 0x29, 0x2f, 0x2c, 0x29, 0x2f, 0x2c, 0x29,
+  0x30, 0x2c, 0x29, 0x30, 0x2c, 0x29, 0x30, 0x2b, 0x28, 0x30, 0x2b, 0x29,
+  0x30, 0x2c, 0x2a, 0x34, 0x30, 0x2e, 0x53, 0x4d, 0x4b, 0x3d, 0x38, 0x36,
+  0x41, 0x3b, 0x3a, 0x4e, 0x49, 0x49, 0x31, 0x2f, 0x2e, 0x09, 0x09, 0x09,
+  0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01,
+  0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00,
+  0x02, 0x03, 0x00, 0x0d, 0x0f, 0x08, 0x39, 0x3b, 0x34, 0x5e, 0x63, 0x57,
+  0x4b, 0x65, 0x41, 0x3e, 0x83, 0x30, 0x75, 0xe6, 0x61, 0x69, 0xf5, 0x55,
+  0x67, 0xfd, 0x51, 0x6a, 0xff, 0x51, 0x6f, 0xfe, 0x50, 0x79, 0xfd, 0x55,
+  0x7a, 0xfa, 0x54, 0x77, 0xfd, 0x51, 0x74, 0xfe, 0x51, 0x71, 0xff, 0x51,
+  0x72, 0xfe, 0x51, 0x73, 0xfd, 0x52, 0x76, 0xfb, 0x54, 0x77, 0xfa, 0x55,
+  0x74, 0xfc, 0x53, 0x73, 0xfc, 0x53, 0x72, 0xfd, 0x53, 0x71, 0xfd, 0x53,
+  0x71, 0xfd, 0x53, 0x71, 0xfd, 0x53, 0x71, 0xfd, 0x53, 0x71, 0xfd, 0x53,
+  0x71, 0xfd, 0x53, 0x71, 0xfd, 0x53, 0x72, 0xfe, 0x55, 0x72, 0xfd, 0x54,
+  0x72, 0xfd, 0x54, 0x72, 0xfd, 0x54, 0x72, 0xfd, 0x54, 0x72, 0xfd, 0x54,
+  0x72, 0xfd, 0x54, 0x72, 0xfd, 0x54, 0x72, 0xfb, 0x53, 0x72, 0xfb, 0x53,
+  0x72, 0xfb, 0x53, 0x72, 0xfb, 0x53, 0x72, 0xfb, 0x53, 0x72, 0xfb, 0x53,
+  0x72, 0xfb, 0x53, 0x72, 0xfb, 0x53, 0x73, 0xfd, 0x54, 0x73, 0xfd, 0x54,
+  0x73, 0xfd, 0x54, 0x73, 0xfd, 0x54, 0x73, 0xfe, 0x54, 0x72, 0xfc, 0x54,
+  0x72, 0xfb, 0x53, 0x72, 0xfc, 0x52, 0x70, 0xfd, 0x53, 0x70, 0xfb, 0x54,
+  0x72, 0xf7, 0x58, 0x72, 0xf9, 0x57, 0x71, 0xfe, 0x50, 0x72, 0xff, 0x50,
+  0x75, 0xfc, 0x54, 0x74, 0xfb, 0x56, 0x6e, 0xfc, 0x55, 0x6c, 0xf8, 0x54,
+  0x74, 0xf1, 0x5b, 0x58, 0xaf, 0x44, 0x36, 0x59, 0x2a, 0x36, 0x3d, 0x2d,
+  0x34, 0x34, 0x2b, 0x34, 0x32, 0x2d, 0x32, 0x31, 0x2d, 0x32, 0x31, 0x2d,
+  0x31, 0x31, 0x2d, 0x32, 0x31, 0x2e, 0x33, 0x31, 0x2e, 0x34, 0x31, 0x2e,
+  0x34, 0x31, 0x2e, 0x34, 0x31, 0x2e, 0x34, 0x31, 0x2e, 0x33, 0x30, 0x2d,
+  0x33, 0x30, 0x2d, 0x35, 0x32, 0x2f, 0x37, 0x34, 0x31, 0x54, 0x4f, 0x4c,
+  0x41, 0x3c, 0x3a, 0x4e, 0x49, 0x47, 0x60, 0x5c, 0x5b, 0x33, 0x32, 0x31,
+  0x0a, 0x0a, 0x0a, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01,
+  0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+  0x01, 0x01, 0x00, 0x03, 0x03, 0x00, 0x0d, 0x0e, 0x08, 0x35, 0x38, 0x31,
+  0x5c, 0x61, 0x55, 0x4c, 0x68, 0x44, 0x37, 0x81, 0x2e, 0x6b, 0xe5, 0x5e,
+  0x60, 0xf3, 0x53, 0x61, 0xfc, 0x52, 0x63, 0xff, 0x52, 0x65, 0xfd, 0x50,
+  0x6d, 0xfc, 0x53, 0x70, 0xfb, 0x53, 0x6c, 0xfc, 0x51, 0x69, 0xfd, 0x50,
+  0x66, 0xff, 0x50, 0x66, 0xfe, 0x50, 0x67, 0xfd, 0x51, 0x6b, 0xfb, 0x53,
+  0x6d, 0xfa, 0x53, 0x69, 0xfb, 0x52, 0x67, 0xfb, 0x52, 0x63, 0xfe, 0x52,
+  0x61, 0xfe, 0x52, 0x61, 0xfe, 0x52, 0x61, 0xfe, 0x52, 0x61, 0xfe, 0x52,
+  0x61, 0xfe, 0x52, 0x61, 0xfe, 0x52, 0x61, 0xfe, 0x52, 0x61, 0xfd, 0x52,
+  0x61, 0xfd, 0x52, 0x61, 0xfd, 0x52, 0x61, 0xfd, 0x52, 0x61, 0xfd, 0x52,
+  0x61, 0xfd, 0x52, 0x61, 0xfd, 0x52, 0x61, 0xfd, 0x52, 0x62, 0xfb, 0x51,
+  0x62, 0xfb, 0x51, 0x62, 0xfb, 0x51, 0x62, 0xfb, 0x51, 0x62, 0xfb, 0x51,
+  0x62, 0xfb, 0x51, 0x62, 0xfb, 0x51, 0x62, 0xfb, 0x51, 0x63, 0xfd, 0x52,
+  0x63, 0xfd, 0x52, 0x63, 0xfd, 0x52, 0x63, 0xfd, 0x52, 0x63, 0xfd, 0x52,
+  0x62, 0xfb, 0x52, 0x62, 0xfb, 0x51, 0x64, 0xfb, 0x51, 0x66, 0xfc, 0x53,
+  0x66, 0xfa, 0x54, 0x68, 0xf7, 0x57, 0x66, 0xf9, 0x55, 0x66, 0xfe, 0x4e,
+  0x66, 0xff, 0x4d, 0x68, 0xfe, 0x50, 0x68, 0xfc, 0x52, 0x64, 0xfd, 0x50,
+  0x62, 0xf7, 0x4e, 0x6b, 0xf0, 0x55, 0x54, 0xaf, 0x41, 0x38, 0x5d, 0x2a,
+  0x39, 0x3f, 0x2d, 0x37, 0x34, 0x2c, 0x38, 0x33, 0x2f, 0x36, 0x34, 0x30,
+  0x33, 0x34, 0x30, 0x33, 0x34, 0x30, 0x33, 0x34, 0x30, 0x34, 0x34, 0x30,
+  0x36, 0x34, 0x30, 0x36, 0x34, 0x30, 0x36, 0x34, 0x30, 0x36, 0x34, 0x30,
+  0x35, 0x33, 0x30, 0x35, 0x32, 0x2f, 0x38, 0x35, 0x32, 0x39, 0x37, 0x34,
+  0x53, 0x4f, 0x4c, 0x43, 0x3e, 0x3c, 0x56, 0x51, 0x4f, 0x6b, 0x67, 0x66,
+  0x33, 0x32, 0x31, 0x0a, 0x0b, 0x0b, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
+  0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+  0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01,
+  0x02, 0x02, 0x02, 0x01, 0x01, 0x00, 0x02, 0x02, 0x00, 0x0a, 0x0b, 0x06,
+  0x2a, 0x2c, 0x27, 0x49, 0x4e, 0x42, 0x39, 0x56, 0x33, 0x29, 0x7a, 0x25,
+  0x5c, 0xe5, 0x57, 0x54, 0xf6, 0x50, 0x54, 0xfd, 0x4e, 0x55, 0xff, 0x4f,
+  0x57, 0xfe, 0x4d, 0x5e, 0xfd, 0x50, 0x5f, 0xfc, 0x4f, 0x5b, 0xfd, 0x4d,
+  0x59, 0xfe, 0x4c, 0x56, 0xff, 0x4c, 0x56, 0xfe, 0x4c, 0x58, 0xfe, 0x4d,
+  0x5c, 0xfc, 0x4f, 0x5e, 0xfb, 0x50, 0x5b, 0xfd, 0x4e, 0x59, 0xfd, 0x4e,
+  0x55, 0xfe, 0x4e, 0x54, 0xfe, 0x4e, 0x54, 0xfe, 0x4e, 0x54, 0xfe, 0x4e,
+  0x54, 0xfe, 0x4e, 0x54, 0xfe, 0x4e, 0x54, 0xfe, 0x4e, 0x54, 0xfe, 0x4e,
+  0x53, 0xfe, 0x4e, 0x53, 0xfe, 0x4e, 0x53, 0xfe, 0x4e, 0x53, 0xfe, 0x4d,
+  0x53, 0xfe, 0x4e, 0x53, 0xfe, 0x4e, 0x53, 0xfe, 0x4e, 0x53, 0xfe, 0x4e,
+  0x55, 0xfd, 0x4e, 0x54, 0xfd, 0x4e, 0x54, 0xfd, 0x4e, 0x54, 0xfd, 0x4e,
+  0x54, 0xfd, 0x4e, 0x54, 0xfd, 0x4e, 0x54, 0xfd, 0x4e, 0x54, 0xfd, 0x4e,
+  0x55, 0xfe, 0x4e, 0x55, 0xfe, 0x4e, 0x55, 0xfe, 0x4e, 0x55, 0xfe, 0x4e,
+  0x55, 0xfe, 0x4e, 0x54, 0xfd, 0x4e, 0x54, 0xfd, 0x4e, 0x57, 0xfd, 0x4e,
+  0x5a, 0xfd, 0x50, 0x5b, 0xfc, 0x50, 0x5c, 0xf9, 0x52, 0x5a, 0xfb, 0x50,
+  0x58, 0xfe, 0x49, 0x58, 0xff, 0x49, 0x5b, 0xfe, 0x4c, 0x5c, 0xfd, 0x4d,
+  0x59, 0xfe, 0x4c, 0x5a, 0xfa, 0x4e, 0x62, 0xf0, 0x53, 0x48, 0xa9, 0x3b,
+  0x2f, 0x57, 0x25, 0x30, 0x3a, 0x28, 0x30, 0x31, 0x29, 0x31, 0x2f, 0x2c,
+  0x30, 0x2f, 0x2b, 0x2e, 0x2f, 0x2b, 0x2f, 0x2f, 0x2b, 0x2f, 0x2f, 0x2b,
+  0x30, 0x2f, 0x2b, 0x31, 0x2f, 0x2b, 0x30, 0x2f, 0x2b, 0x30, 0x2f, 0x2b,
+  0x30, 0x2f, 0x2b, 0x2f, 0x2d, 0x2a, 0x2e, 0x2d, 0x2a, 0x34, 0x32, 0x2f,
+  0x37, 0x35, 0x31, 0x4e, 0x4a, 0x47, 0x3b, 0x37, 0x34, 0x49, 0x45, 0x42,
+  0x59, 0x55, 0x54, 0x2c, 0x2b, 0x2a, 0x09, 0x09, 0x09, 0x01, 0x01, 0x01,
+  0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01,
+  0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00,
+  0x07, 0x08, 0x05, 0x21, 0x23, 0x1e, 0x39, 0x3e, 0x33, 0x28, 0x47, 0x24,
+  0x1e, 0x76, 0x1e, 0x52, 0xe5, 0x53, 0x4b, 0xfa, 0x4e, 0x4a, 0xfe, 0x4b,
+  0x4a, 0xff, 0x4a, 0x4c, 0xfe, 0x4a, 0x53, 0xfe, 0x4d, 0x53, 0xfd, 0x4c,
+  0x4f, 0xfe, 0x4a, 0x4d, 0xfe, 0x49, 0x4a, 0xff, 0x48, 0x4a, 0xff, 0x49,
+  0x4c, 0xff, 0x4a, 0x50, 0xfd, 0x4c, 0x53, 0xfc, 0x4d, 0x50, 0xfe, 0x4b,
+  0x4f, 0xfe, 0x4b, 0x4c, 0xff, 0x4a, 0x4b, 0xff, 0x4a, 0x4b, 0xff, 0x4a,
+  0x4b, 0xff, 0x4a, 0x4b, 0xff, 0x4a, 0x4b, 0xff, 0x4b, 0x4b, 0xff, 0x4b,
+  0x4b, 0xff, 0x4b, 0x4b, 0xfe, 0x4a, 0x4b, 0xfe, 0x4a, 0x4b, 0xfe, 0x4a,
+  0x4b, 0xfe, 0x4a, 0x4b, 0xfe, 0x4b, 0x4b, 0xfe, 0x4b, 0x4b, 0xfe, 0x4b,
+  0x4b, 0xff, 0x4b, 0x4c, 0xfe, 0x4b, 0x4b, 0xfe, 0x4b, 0x4b, 0xfe, 0x4b,
+  0x4b, 0xfe, 0x4b, 0x4b, 0xfe, 0x4b, 0x4b, 0xfe, 0x4b, 0x4b, 0xfe, 0x4b,
+  0x4b, 0xfe, 0x4b, 0x4c, 0xff, 0x4b, 0x4c, 0xfe, 0x4b, 0x4c, 0xfe, 0x4b,
+  0x4c, 0xfe, 0x4b, 0x4c, 0xff, 0x4b, 0x4b, 0xfe, 0x4b, 0x4b, 0xfe, 0x4b,
+  0x4e, 0xfe, 0x4b, 0x52, 0xfe, 0x4c, 0x53, 0xfd, 0x4e, 0x53, 0xfc, 0x4e,
+  0x51, 0xfd, 0x4b, 0x4f, 0xff, 0x46, 0x4f, 0xff, 0x46, 0x52, 0xff, 0x49,
+  0x53, 0xfe, 0x4a, 0x51, 0xfe, 0x4a, 0x56, 0xfc, 0x4e, 0x5d, 0xef, 0x53,
+  0x3f, 0xa3, 0x37, 0x26, 0x52, 0x21, 0x28, 0x36, 0x23, 0x2a, 0x2d, 0x26,
+  0x2c, 0x2a, 0x29, 0x2b, 0x2a, 0x27, 0x2a, 0x2a, 0x27, 0x2a, 0x2a, 0x27,
+  0x2a, 0x2a, 0x27, 0x2b, 0x2a, 0x27, 0x2c, 0x2a, 0x27, 0x2b, 0x2a, 0x27,
+  0x2b, 0x2a, 0x27, 0x2b, 0x2a, 0x27, 0x29, 0x28, 0x25, 0x29, 0x29, 0x26,
+  0x30, 0x2f, 0x2c, 0x35, 0x33, 0x2f, 0x48, 0x45, 0x42, 0x34, 0x30, 0x2d,
+  0x3c, 0x39, 0x36, 0x48, 0x45, 0x43, 0x25, 0x25, 0x24, 0x07, 0x08, 0x07,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01,
+  0x00, 0x00, 0x01, 0x02, 0x02, 0x02, 0x03, 0x02, 0x03, 0x01, 0x00, 0x01,
+  0x00, 0x00, 0x00, 0x03, 0x04, 0x03, 0x16, 0x17, 0x13, 0x25, 0x28, 0x1f,
+  0x14, 0x32, 0x11, 0x11, 0x6c, 0x15, 0x42, 0xe0, 0x4a, 0x3f, 0xf9, 0x48,
+  0x3b, 0xf9, 0x44, 0x3a, 0xf9, 0x42, 0x3c, 0xf9, 0x43, 0x43, 0xf9, 0x47,
+  0x40, 0xf9, 0x45, 0x3e, 0xfa, 0x43, 0x3c, 0xfa, 0x42, 0x39, 0xfa, 0x42,
+  0x39, 0xfa, 0x42, 0x3b, 0xfa, 0x43, 0x40, 0xfa, 0x44, 0x42, 0xf9, 0x46,
+  0x41, 0xfa, 0x44, 0x40, 0xfa, 0x44, 0x3f, 0xfa, 0x43, 0x3f, 0xfa, 0x43,
+  0x3f, 0xfa, 0x43, 0x3f, 0xfa, 0x44, 0x3f, 0xfa, 0x44, 0x3f, 0xfa, 0x44,
+  0x3f, 0xfa, 0x44, 0x3f, 0xfa, 0x44, 0x3e, 0xfa, 0x44, 0x3e, 0xfa, 0x44,
+  0x3e, 0xfa, 0x44, 0x3e, 0xfa, 0x43, 0x3e, 0xfa, 0x45, 0x3e, 0xfa, 0x45,
+  0x3e, 0xfa, 0x45, 0x3e, 0xfa, 0x45, 0x3e, 0xfa, 0x45, 0x3e, 0xfa, 0x45,
+  0x3e, 0xfa, 0x45, 0x3e, 0xfa, 0x45, 0x3e, 0xfa, 0x45, 0x3e, 0xfa, 0x45,
+  0x3e, 0xfa, 0x45, 0x3e, 0xfa, 0x45, 0x3e, 0xfa, 0x45, 0x3e, 0xfa, 0x45,
+  0x3e, 0xfa, 0x45, 0x3e, 0xfa, 0x45, 0x3e, 0xfa, 0x45, 0x3e, 0xfa, 0x44,
+  0x3e, 0xfa, 0x44, 0x40, 0xfa, 0x44, 0x45, 0xfa, 0x45, 0x47, 0xfa, 0x47,
+  0x46, 0xf9, 0x47, 0x44, 0xfa, 0x44, 0x41, 0xfa, 0x40, 0x41, 0xfa, 0x40,
+  0x44, 0xfa, 0x43, 0x45, 0xf9, 0x44, 0x45, 0xf9, 0x45, 0x4c, 0xf9, 0x4c,
+  0x52, 0xea, 0x50, 0x30, 0x97, 0x2f, 0x1b, 0x47, 0x1a, 0x1d, 0x2d, 0x1d,
+  0x20, 0x26, 0x20, 0x22, 0x23, 0x22, 0x22, 0x22, 0x1f, 0x22, 0x22, 0x1f,
+  0x23, 0x22, 0x1f, 0x23, 0x22, 0x1f, 0x23, 0x22, 0x1f, 0x23, 0x22, 0x1f,
+  0x22, 0x22, 0x1f, 0x22, 0x22, 0x1f, 0x22, 0x22, 0x1f, 0x21, 0x20, 0x1d,
+  0x21, 0x20, 0x1e, 0x29, 0x27, 0x24, 0x2f, 0x2d, 0x29, 0x3f, 0x3d, 0x39,
+  0x2a, 0x27, 0x23, 0x2b, 0x29, 0x25, 0x30, 0x2d, 0x2c, 0x1b, 0x1c, 0x1b,
+  0x04, 0x05, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01,
+  0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02,
+  0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x03, 0x04, 0x02, 0x11, 0x11, 0x0e,
+  0x1a, 0x1e, 0x16, 0x0c, 0x27, 0x0a, 0x0b, 0x5a, 0x0f, 0x33, 0xc3, 0x3b,
+  0x32, 0xde, 0x3b, 0x2c, 0xde, 0x36, 0x29, 0xdd, 0x34, 0x2c, 0xde, 0x36,
+  0x32, 0xde, 0x39, 0x30, 0xdd, 0x37, 0x2c, 0xdf, 0x36, 0x2b, 0xe0, 0x35,
+  0x29, 0xe1, 0x35, 0x2a, 0xe0, 0x35, 0x2b, 0xe0, 0x36, 0x2f, 0xe0, 0x37,
+  0x32, 0xdf, 0x38, 0x31, 0xe1, 0x36, 0x31, 0xe0, 0x36, 0x30, 0xe0, 0x36,
+  0x30, 0xe0, 0x36, 0x30, 0xe0, 0x36, 0x30, 0xe0, 0x37, 0x30, 0xe0, 0x37,
+  0x30, 0xe0, 0x37, 0x31, 0xe1, 0x38, 0x31, 0xe1, 0x38, 0x31, 0xe1, 0x37,
+  0x31, 0xe1, 0x37, 0x31, 0xe1, 0x37, 0x31, 0xe1, 0x37, 0x31, 0xe1, 0x38,
+  0x31, 0xe1, 0x38, 0x31, 0xe2, 0x39, 0x31, 0xe2, 0x39, 0x32, 0xe2, 0x39,
+  0x31, 0xe2, 0x39, 0x31, 0xe2, 0x39, 0x31, 0xe2, 0x39, 0x31, 0xe2, 0x39,
+  0x31, 0xe2, 0x39, 0x31, 0xe2, 0x39, 0x31, 0xe2, 0x39, 0x31, 0xe2, 0x39,
+  0x31, 0xe2, 0x39, 0x31, 0xe2, 0x39, 0x31, 0xe2, 0x39, 0x32, 0xe2, 0x39,
+  0x31, 0xe1, 0x38, 0x31, 0xe1, 0x38, 0x32, 0xe1, 0x38, 0x35, 0xe3, 0x38,
+  0x36, 0xe3, 0x3a, 0x36, 0xe1, 0x3a, 0x33, 0xe1, 0x38, 0x31, 0xe2, 0x34,
+  0x31, 0xe1, 0x34, 0x35, 0xe0, 0x37, 0x36, 0xdf, 0x38, 0x34, 0xdd, 0x38,
+  0x3c, 0xdd, 0x3f, 0x3f, 0xcc, 0x41, 0x21, 0x7c, 0x22, 0x10, 0x36, 0x11,
+  0x12, 0x20, 0x13, 0x14, 0x1b, 0x17, 0x16, 0x18, 0x19, 0x16, 0x17, 0x16,
+  0x17, 0x17, 0x14, 0x17, 0x17, 0x14, 0x17, 0x17, 0x14, 0x17, 0x17, 0x14,
+  0x17, 0x16, 0x14, 0x16, 0x17, 0x14, 0x16, 0x17, 0x14, 0x16, 0x16, 0x14,
+  0x16, 0x16, 0x14, 0x15, 0x15, 0x14, 0x1b, 0x1a, 0x18, 0x21, 0x20, 0x1c,
+  0x2e, 0x2c, 0x2a, 0x1d, 0x1b, 0x18, 0x1c, 0x1b, 0x18, 0x1f, 0x1c, 0x1b,
+  0x15, 0x15, 0x14, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 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, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+  0x02, 0x01, 0x02, 0x01, 0x00, 0x00, 0x02, 0x02, 0x01, 0x03, 0x04, 0x02,
+  0x0c, 0x0d, 0x0b, 0x13, 0x17, 0x10, 0x08, 0x1e, 0x06, 0x08, 0x46, 0x0a,
+  0x23, 0xa0, 0x29, 0x24, 0xbe, 0x2d, 0x1c, 0xbd, 0x27, 0x18, 0xbc, 0x24,
+  0x1c, 0xbd, 0x26, 0x21, 0xbe, 0x29, 0x1f, 0xbb, 0x28, 0x1b, 0xc1, 0x27,
+  0x1a, 0xc2, 0x26, 0x19, 0xc3, 0x27, 0x1a, 0xc3, 0x27, 0x1c, 0xc2, 0x27,
+  0x1e, 0xc1, 0x28, 0x22, 0xc0, 0x29, 0x20, 0xc2, 0x27, 0x20, 0xc2, 0x27,
+  0x22, 0xc1, 0x28, 0x22, 0xc1, 0x28, 0x22, 0xc1, 0x27, 0x22, 0xc2, 0x29,
+  0x22, 0xc2, 0x29, 0x22, 0xc2, 0x28, 0x23, 0xc2, 0x2a, 0x23, 0xc2, 0x2a,
+  0x23, 0xc3, 0x29, 0x23, 0xc3, 0x29, 0x23, 0xc3, 0x29, 0x23, 0xc4, 0x2a,
+  0x23, 0xc4, 0x2a, 0x23, 0xc4, 0x2a, 0x24, 0xc5, 0x2b, 0x24, 0xc5, 0x2b,
+  0x25, 0xc5, 0x2b, 0x25, 0xc5, 0x2b, 0x25, 0xc5, 0x2b, 0x25, 0xc5, 0x2b,
+  0x25, 0xc5, 0x2b, 0x25, 0xc5, 0x2b, 0x25, 0xc5, 0x2b, 0x25, 0xc5, 0x2b,
+  0x25, 0xc5, 0x2b, 0x25, 0xc5, 0x2b, 0x25, 0xc5, 0x2b, 0x25, 0xc5, 0x2b,
+  0x25, 0xc5, 0x2b, 0x24, 0xc4, 0x2a, 0x24, 0xc4, 0x2a, 0x24, 0xc4, 0x2a,
+  0x24, 0xc6, 0x2a, 0x24, 0xc6, 0x2b, 0x24, 0xc4, 0x2c, 0x22, 0xc5, 0x2a,
+  0x20, 0xc7, 0x27, 0x21, 0xc4, 0x27, 0x24, 0xc2, 0x29, 0x25, 0xbf, 0x2a,
+  0x22, 0xba, 0x2a, 0x28, 0xbb, 0x31, 0x2b, 0xa8, 0x30, 0x10, 0x5c, 0x14,
+  0x06, 0x23, 0x07, 0x08, 0x11, 0x09, 0x08, 0x0e, 0x0d, 0x09, 0x0c, 0x0e,
+  0x09, 0x0b, 0x0a, 0x0a, 0x0b, 0x08, 0x0a, 0x0b, 0x09, 0x0b, 0x0b, 0x09,
+  0x0b, 0x0b, 0x09, 0x09, 0x0a, 0x08, 0x09, 0x0a, 0x08, 0x0a, 0x0a, 0x08,
+  0x0a, 0x0a, 0x09, 0x0c, 0x0c, 0x0b, 0x09, 0x09, 0x08, 0x0b, 0x0b, 0x0a,
+  0x10, 0x10, 0x0f, 0x1b, 0x1a, 0x19, 0x10, 0x0e, 0x0e, 0x0e, 0x0d, 0x0c,
+  0x0e, 0x0e, 0x0d, 0x0e, 0x0e, 0x0e, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01,
+  0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x01, 0x01, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x03, 0x01,
+  0x02, 0x04, 0x01, 0x09, 0x0b, 0x08, 0x11, 0x15, 0x0f, 0x0e, 0x1c, 0x0b,
+  0x0c, 0x32, 0x0b, 0x1a, 0x6f, 0x1c, 0x1b, 0x8a, 0x20, 0x13, 0x8a, 0x1a,
+  0x10, 0x8b, 0x18, 0x13, 0x8b, 0x1a, 0x17, 0x8b, 0x1d, 0x15, 0x89, 0x1c,
+  0x11, 0x8f, 0x1b, 0x10, 0x90, 0x1a, 0x10, 0x92, 0x1b, 0x11, 0x91, 0x1b,
+  0x13, 0x90, 0x1b, 0x14, 0x8f, 0x1c, 0x17, 0x8e, 0x1c, 0x16, 0x90, 0x1a,
+  0x16, 0x90, 0x1a, 0x18, 0x90, 0x1c, 0x18, 0x90, 0x1c, 0x18, 0x90, 0x1c,
+  0x18, 0x91, 0x1d, 0x18, 0x91, 0x1d, 0x18, 0x91, 0x1d, 0x19, 0x92, 0x1e,
+  0x19, 0x92, 0x1e, 0x1a, 0x93, 0x1f, 0x1a, 0x93, 0x1f, 0x1a, 0x93, 0x1f,
+  0x1a, 0x94, 0x1f, 0x1a, 0x94, 0x1f, 0x1a, 0x94, 0x1f, 0x1b, 0x95, 0x20,
+  0x1b, 0x95, 0x20, 0x1d, 0x95, 0x21, 0x1c, 0x95, 0x21, 0x1c, 0x95, 0x21,
+  0x1c, 0x95, 0x21, 0x1c, 0x95, 0x21, 0x1c, 0x95, 0x21, 0x1c, 0x95, 0x21,
+  0x1c, 0x95, 0x21, 0x1c, 0x95, 0x21, 0x1c, 0x95, 0x21, 0x1c, 0x95, 0x21,
+  0x1c, 0x95, 0x21, 0x1d, 0x95, 0x21, 0x1b, 0x95, 0x1f, 0x1b, 0x94, 0x20,
+  0x1a, 0x94, 0x20, 0x18, 0x96, 0x1f, 0x17, 0x96, 0x1f, 0x18, 0x94, 0x20,
+  0x16, 0x95, 0x1f, 0x14, 0x97, 0x1d, 0x15, 0x94, 0x1d, 0x19, 0x91, 0x1f,
+  0x1a, 0x8e, 0x1f, 0x16, 0x8a, 0x1d, 0x19, 0x89, 0x20, 0x1a, 0x7a, 0x1f,
+  0x09, 0x40, 0x0c, 0x08, 0x19, 0x07, 0x09, 0x0c, 0x09, 0x07, 0x0a, 0x0b,
+  0x07, 0x09, 0x0b, 0x06, 0x08, 0x08, 0x07, 0x08, 0x06, 0x07, 0x08, 0x07,
+  0x07, 0x08, 0x06, 0x07, 0x08, 0x06, 0x06, 0x07, 0x06, 0x05, 0x07, 0x06,
+  0x06, 0x07, 0x06, 0x06, 0x07, 0x07, 0x09, 0x09, 0x09, 0x07, 0x06, 0x06,
+  0x06, 0x05, 0x05, 0x09, 0x09, 0x08, 0x10, 0x0f, 0x0e, 0x0c, 0x0b, 0x0b,
+  0x0c, 0x0c, 0x0b, 0x0c, 0x0c, 0x0b, 0x0b, 0x0b, 0x0b, 0x02, 0x02, 0x02,
+  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01,
+  0x00, 0x00, 0x00, 0x01, 0x01, 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,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00,
+  0x02, 0x03, 0x01, 0x03, 0x03, 0x01, 0x0b, 0x0b, 0x08, 0x17, 0x19, 0x15,
+  0x1b, 0x21, 0x18, 0x16, 0x29, 0x13, 0x1b, 0x49, 0x19, 0x1a, 0x5d, 0x1b,
+  0x14, 0x60, 0x16, 0x14, 0x63, 0x16, 0x15, 0x61, 0x16, 0x18, 0x61, 0x19,
+  0x19, 0x60, 0x1a, 0x13, 0x63, 0x17, 0x12, 0x64, 0x16, 0x11, 0x66, 0x18,
+  0x13, 0x65, 0x18, 0x14, 0x64, 0x18, 0x16, 0x62, 0x19, 0x18, 0x62, 0x19,
+  0x18, 0x64, 0x17, 0x17, 0x65, 0x17, 0x18, 0x66, 0x1a, 0x17, 0x66, 0x1a,
+  0x17, 0x66, 0x19, 0x18, 0x67, 0x1a, 0x18, 0x67, 0x1a, 0x18, 0x68, 0x1a,
+  0x18, 0x68, 0x1b, 0x18, 0x68, 0x1b, 0x1a, 0x6a, 0x1d, 0x1a, 0x6a, 0x1c,
+  0x1a, 0x6a, 0x1c, 0x1b, 0x6b, 0x1d, 0x1b, 0x6b, 0x1d, 0x1b, 0x6b, 0x1d,
+  0x1b, 0x6c, 0x1e, 0x1b, 0x6c, 0x1e, 0x1c, 0x6c, 0x1f, 0x1b, 0x6c, 0x1e,
+  0x1b, 0x6c, 0x1e, 0x1b, 0x6c, 0x1e, 0x1b, 0x6c, 0x1e, 0x1b, 0x6c, 0x1e,
+  0x1b, 0x6c, 0x1e, 0x1b, 0x6c, 0x1e, 0x1b, 0x6c, 0x1e, 0x1b, 0x6c, 0x1e,
+  0x1b, 0x6c, 0x1e, 0x1b, 0x6c, 0x1e, 0x1c, 0x6c, 0x1e, 0x1b, 0x6c, 0x1e,
+  0x1b, 0x6b, 0x1d, 0x19, 0x6b, 0x1d, 0x17, 0x6c, 0x1e, 0x16, 0x6b, 0x1d,
+  0x16, 0x6b, 0x1e, 0x15, 0x6b, 0x1c, 0x14, 0x6c, 0x1b, 0x16, 0x69, 0x1b,
+  0x19, 0x67, 0x1c, 0x1a, 0x66, 0x1c, 0x16, 0x64, 0x18, 0x14, 0x5f, 0x17,
+  0x16, 0x57, 0x17, 0x0d, 0x34, 0x0d, 0x13, 0x1c, 0x0e, 0x14, 0x13, 0x11,
+  0x11, 0x10, 0x11, 0x10, 0x11, 0x11, 0x0f, 0x10, 0x0f, 0x0e, 0x10, 0x0e,
+  0x0f, 0x10, 0x0f, 0x0f, 0x10, 0x0e, 0x0f, 0x10, 0x0e, 0x0e, 0x0f, 0x0e,
+  0x0d, 0x0f, 0x0e, 0x0e, 0x0f, 0x0e, 0x0e, 0x0f, 0x0e, 0x10, 0x11, 0x0f,
+  0x0e, 0x0f, 0x0e, 0x0c, 0x0c, 0x0b, 0x0f, 0x0f, 0x0e, 0x12, 0x11, 0x11,
+  0x13, 0x12, 0x12, 0x19, 0x17, 0x17, 0x19, 0x18, 0x18, 0x0c, 0x0b, 0x0c,
+  0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+  0x01, 0x02, 0x00, 0x02, 0x03, 0x01, 0x02, 0x03, 0x01, 0x0b, 0x0b, 0x08,
+  0x1a, 0x1b, 0x18, 0x24, 0x25, 0x21, 0x1d, 0x20, 0x19, 0x1a, 0x27, 0x16,
+  0x19, 0x36, 0x16, 0x14, 0x39, 0x13, 0x16, 0x3f, 0x14, 0x15, 0x3b, 0x13,
+  0x18, 0x3a, 0x16, 0x19, 0x3b, 0x17, 0x13, 0x3c, 0x14, 0x12, 0x3d, 0x13,
+  0x12, 0x3f, 0x15, 0x13, 0x3e, 0x15, 0x14, 0x3d, 0x15, 0x17, 0x3c, 0x16,
+  0x18, 0x3d, 0x16, 0x18, 0x3d, 0x14, 0x17, 0x3e, 0x14, 0x17, 0x41, 0x16,
+  0x15, 0x41, 0x16, 0x15, 0x41, 0x16, 0x17, 0x42, 0x17, 0x17, 0x42, 0x17,
+  0x17, 0x42, 0x17, 0x17, 0x42, 0x18, 0x17, 0x42, 0x18, 0x19, 0x44, 0x1a,
+  0x19, 0x44, 0x19, 0x19, 0x44, 0x19, 0x1a, 0x45, 0x19, 0x1a, 0x45, 0x19,
+  0x1a, 0x45, 0x19, 0x1a, 0x46, 0x1a, 0x1a, 0x46, 0x1a, 0x1a, 0x46, 0x1c,
+  0x1a, 0x46, 0x1b, 0x1a, 0x46, 0x1b, 0x1a, 0x46, 0x1b, 0x1a, 0x46, 0x1b,
+  0x1a, 0x46, 0x1b, 0x1a, 0x46, 0x1b, 0x1a, 0x46, 0x1b, 0x1a, 0x46, 0x1b,
+  0x1a, 0x46, 0x1b, 0x1a, 0x46, 0x1b, 0x1a, 0x46, 0x1b, 0x1a, 0x46, 0x1b,
+  0x1a, 0x47, 0x1c, 0x1a, 0x45, 0x1a, 0x17, 0x45, 0x1a, 0x15, 0x45, 0x1b,
+  0x14, 0x44, 0x1a, 0x15, 0x45, 0x1b, 0x14, 0x44, 0x19, 0x13, 0x45, 0x18,
+  0x15, 0x42, 0x19, 0x19, 0x41, 0x19, 0x19, 0x42, 0x19, 0x16, 0x43, 0x14,
+  0x10, 0x3b, 0x0f, 0x11, 0x38, 0x10, 0x11, 0x28, 0x0e, 0x1c, 0x1f, 0x14,
+  0x1e, 0x17, 0x18, 0x19, 0x14, 0x15, 0x17, 0x15, 0x16, 0x16, 0x15, 0x15,
+  0x14, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x14, 0x14, 0x15, 0x13,
+  0x15, 0x16, 0x14, 0x13, 0x14, 0x14, 0x13, 0x14, 0x14, 0x13, 0x14, 0x14,
+  0x15, 0x15, 0x14, 0x14, 0x15, 0x14, 0x11, 0x11, 0x11, 0x13, 0x13, 0x12,
+  0x13, 0x12, 0x11, 0x19, 0x17, 0x17, 0x21, 0x20, 0x1f, 0x22, 0x20, 0x20,
+  0x0c, 0x0c, 0x0c, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01,
+  0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  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, 0x01, 0x01, 0x01, 0x02, 0x00, 0x01, 0x02, 0x01, 0x02, 0x02, 0x01,
+  0x08, 0x08, 0x06, 0x16, 0x17, 0x15, 0x1e, 0x1e, 0x1d, 0x19, 0x17, 0x16,
+  0x13, 0x17, 0x10, 0x12, 0x24, 0x11, 0x0e, 0x28, 0x0d, 0x10, 0x2d, 0x0f,
+  0x0f, 0x2a, 0x0e, 0x12, 0x28, 0x11, 0x13, 0x29, 0x11, 0x0e, 0x2a, 0x0f,
+  0x0c, 0x2b, 0x0e, 0x0d, 0x2d, 0x0f, 0x0d, 0x2c, 0x0f, 0x0e, 0x2b, 0x0f,
+  0x11, 0x2a, 0x10, 0x12, 0x2a, 0x11, 0x12, 0x2b, 0x0f, 0x11, 0x2c, 0x10,
+  0x11, 0x2d, 0x11, 0x10, 0x2d, 0x11, 0x10, 0x2d, 0x11, 0x11, 0x2e, 0x12,
+  0x11, 0x2e, 0x12, 0x11, 0x2f, 0x12, 0x11, 0x2f, 0x12, 0x11, 0x2f, 0x12,
+  0x13, 0x30, 0x14, 0x13, 0x30, 0x13, 0x13, 0x30, 0x13, 0x14, 0x31, 0x13,
+  0x14, 0x31, 0x13, 0x14, 0x31, 0x14, 0x14, 0x31, 0x14, 0x14, 0x31, 0x14,
+  0x14, 0x32, 0x16, 0x14, 0x32, 0x15, 0x14, 0x32, 0x15, 0x14, 0x32, 0x15,
+  0x14, 0x32, 0x15, 0x14, 0x32, 0x15, 0x14, 0x32, 0x15, 0x14, 0x32, 0x15,
+  0x14, 0x32, 0x15, 0x14, 0x32, 0x15, 0x14, 0x32, 0x15, 0x14, 0x32, 0x15,
+  0x14, 0x32, 0x15, 0x14, 0x32, 0x16, 0x14, 0x31, 0x14, 0x12, 0x31, 0x14,
+  0x12, 0x31, 0x16, 0x10, 0x30, 0x15, 0x11, 0x31, 0x14, 0x11, 0x30, 0x13,
+  0x0f, 0x30, 0x13, 0x12, 0x2e, 0x14, 0x15, 0x2d, 0x14, 0x16, 0x2e, 0x13,
+  0x13, 0x30, 0x0f, 0x0c, 0x2a, 0x0a, 0x0e, 0x28, 0x0b, 0x0e, 0x1f, 0x0b,
+  0x19, 0x19, 0x12, 0x1b, 0x13, 0x16, 0x16, 0x11, 0x13, 0x14, 0x12, 0x13,
+  0x13, 0x13, 0x12, 0x11, 0x12, 0x12, 0x12, 0x12, 0x12, 0x11, 0x12, 0x11,
+  0x11, 0x12, 0x11, 0x12, 0x13, 0x12, 0x11, 0x12, 0x12, 0x11, 0x11, 0x12,
+  0x11, 0x11, 0x11, 0x11, 0x10, 0x0f, 0x12, 0x12, 0x11, 0x10, 0x10, 0x0f,
+  0x12, 0x11, 0x10, 0x10, 0x0f, 0x0e, 0x14, 0x13, 0x12, 0x1b, 0x1a, 0x19,
+  0x1b, 0x1a, 0x1a, 0x09, 0x09, 0x09, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x01, 0x01, 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, 0x00, 0x00, 0x00,
+  0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00,
+  0x01, 0x01, 0x00, 0x05, 0x04, 0x04, 0x10, 0x10, 0x0f, 0x15, 0x14, 0x15,
+  0x12, 0x10, 0x11, 0x0b, 0x0d, 0x0b, 0x0a, 0x19, 0x0c, 0x07, 0x1b, 0x07,
+  0x07, 0x20, 0x0a, 0x07, 0x1d, 0x0a, 0x0b, 0x1b, 0x0b, 0x0c, 0x1b, 0x0c,
+  0x06, 0x1c, 0x0a, 0x05, 0x1d, 0x09, 0x05, 0x1f, 0x09, 0x05, 0x1e, 0x0a,
+  0x06, 0x1e, 0x0a, 0x09, 0x1c, 0x0b, 0x0a, 0x1c, 0x0b, 0x0a, 0x1d, 0x0a,
+  0x0a, 0x1e, 0x0b, 0x0a, 0x1f, 0x0b, 0x09, 0x1e, 0x0b, 0x09, 0x1e, 0x0b,
+  0x0b, 0x1f, 0x0d, 0x0b, 0x1f, 0x0d, 0x0b, 0x1f, 0x0c, 0x0b, 0x1f, 0x0c,
+  0x0a, 0x1f, 0x0c, 0x0c, 0x21, 0x0d, 0x0c, 0x21, 0x0d, 0x0c, 0x21, 0x0d,
+  0x0c, 0x21, 0x0d, 0x0c, 0x21, 0x0d, 0x0c, 0x21, 0x0d, 0x0c, 0x20, 0x0e,
+  0x0c, 0x20, 0x0e, 0x0c, 0x21, 0x0e, 0x0c, 0x21, 0x0e, 0x0c, 0x21, 0x0e,
+  0x0c, 0x21, 0x0e, 0x0c, 0x21, 0x0e, 0x0c, 0x21, 0x0e, 0x0c, 0x21, 0x0e,
+  0x0c, 0x21, 0x0e, 0x0c, 0x21, 0x0e, 0x0c, 0x21, 0x0e, 0x0c, 0x21, 0x0e,
+  0x0c, 0x21, 0x0e, 0x0c, 0x21, 0x0e, 0x0c, 0x21, 0x0e, 0x0c, 0x21, 0x0e,
+  0x0b, 0x21, 0x0e, 0x0d, 0x21, 0x0e, 0x0c, 0x20, 0x0e, 0x0c, 0x20, 0x0c,
+  0x0c, 0x21, 0x0d, 0x0b, 0x1f, 0x0d, 0x0d, 0x1e, 0x0e, 0x10, 0x1d, 0x0f,
+  0x11, 0x1d, 0x0e, 0x0e, 0x20, 0x0c, 0x09, 0x1d, 0x06, 0x09, 0x1d, 0x08,
+  0x0a, 0x15, 0x07, 0x13, 0x11, 0x0e, 0x15, 0x0e, 0x11, 0x10, 0x0c, 0x0f,
+  0x0d, 0x0d, 0x0e, 0x0e, 0x0e, 0x0d, 0x0c, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d,
+  0x0c, 0x0d, 0x0d, 0x0c, 0x0d, 0x0d, 0x0d, 0x0e, 0x0d, 0x0d, 0x0e, 0x0d,
+  0x0c, 0x0c, 0x0d, 0x0c, 0x0c, 0x0d, 0x0b, 0x09, 0x09, 0x0d, 0x0d, 0x0c,
+  0x0d, 0x0d, 0x0c, 0x10, 0x0f, 0x0e, 0x0b, 0x0a, 0x09, 0x0f, 0x0d, 0x0d,
+  0x12, 0x11, 0x10, 0x11, 0x10, 0x0f, 0x06, 0x06, 0x05, 0x01, 0x01, 0x01,
+  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01,
+  0x01, 0x01, 0x01, 0x01, 0x01, 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,
+  0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
+  0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x0b, 0x0b, 0x0a,
+  0x0b, 0x0c, 0x0c, 0x0b, 0x0d, 0x0b, 0x07, 0x10, 0x09, 0x06, 0x1e, 0x0b,
+  0x02, 0x1f, 0x05, 0x02, 0x21, 0x07, 0x03, 0x20, 0x09, 0x08, 0x1e, 0x09,
+  0x07, 0x1c, 0x09, 0x04, 0x1e, 0x09, 0x02, 0x1f, 0x09, 0x02, 0x21, 0x08,
+  0x02, 0x20, 0x09, 0x03, 0x20, 0x09, 0x06, 0x1e, 0x09, 0x07, 0x1e, 0x09,
+  0x05, 0x1f, 0x09, 0x06, 0x20, 0x0a, 0x07, 0x1f, 0x09, 0x07, 0x1f, 0x09,
+  0x07, 0x1f, 0x09, 0x08, 0x1f, 0x0a, 0x08, 0x1f, 0x0a, 0x08, 0x1f, 0x0a,
+  0x08, 0x1f, 0x0a, 0x08, 0x1f, 0x0a, 0x09, 0x20, 0x0a, 0x09, 0x20, 0x0a,
+  0x09, 0x20, 0x0a, 0x09, 0x20, 0x0a, 0x09, 0x20, 0x0a, 0x09, 0x20, 0x0b,
+  0x09, 0x20, 0x0b, 0x09, 0x20, 0x0b, 0x09, 0x20, 0x0b, 0x09, 0x20, 0x0b,
+  0x09, 0x20, 0x0b, 0x09, 0x20, 0x0b, 0x09, 0x20, 0x0b, 0x09, 0x20, 0x0b,
+  0x09, 0x20, 0x0b, 0x09, 0x20, 0x0b, 0x09, 0x20, 0x0b, 0x09, 0x20, 0x0b,
+  0x09, 0x20, 0x0b, 0x09, 0x20, 0x0b, 0x09, 0x20, 0x0b, 0x09, 0x20, 0x0b,
+  0x09, 0x20, 0x0b, 0x09, 0x20, 0x0b, 0x0c, 0x20, 0x0b, 0x0d, 0x20, 0x0b,
+  0x0b, 0x20, 0x09, 0x0b, 0x20, 0x09, 0x0a, 0x1e, 0x0b, 0x0b, 0x1d, 0x0c,
+  0x0e, 0x1c, 0x0c, 0x0e, 0x1c, 0x0b, 0x0c, 0x1e, 0x0a, 0x09, 0x1e, 0x08,
+  0x08, 0x1c, 0x09, 0x06, 0x11, 0x05, 0x0c, 0x0b, 0x09, 0x0e, 0x0a, 0x0b,
+  0x09, 0x08, 0x09, 0x07, 0x07, 0x08, 0x08, 0x09, 0x07, 0x07, 0x08, 0x08,
+  0x07, 0x08, 0x08, 0x07, 0x08, 0x08, 0x07, 0x08, 0x08, 0x07, 0x08, 0x08,
+  0x08, 0x08, 0x08, 0x07, 0x07, 0x08, 0x07, 0x07, 0x07, 0x05, 0x03, 0x03,
+  0x08, 0x07, 0x06, 0x09, 0x09, 0x07, 0x0c, 0x0b, 0x0a, 0x08, 0x06, 0x05,
+  0x09, 0x07, 0x07, 0x0a, 0x09, 0x08, 0x08, 0x07, 0x06, 0x03, 0x03, 0x02,
+  0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03,
+  0x01, 0x01, 0x01, 0x01, 0x01, 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, 0x01, 0x00, 0x00, 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, 0x01, 0x00, 0x00, 0x01, 0x00, 0x02, 0x04, 0x02, 0x02, 0x03, 0x02,
+  0x09, 0x09, 0x09, 0x07, 0x08, 0x07, 0x06, 0x11, 0x07, 0x08, 0x21, 0x0c,
+  0x08, 0x31, 0x0e, 0x03, 0x31, 0x09, 0x02, 0x31, 0x08, 0x06, 0x31, 0x0b,
+  0x0a, 0x2f, 0x0c, 0x08, 0x2c, 0x0b, 0x07, 0x2f, 0x0c, 0x05, 0x30, 0x0c,
+  0x04, 0x32, 0x0b, 0x04, 0x31, 0x0c, 0x05, 0x31, 0x0c, 0x08, 0x2f, 0x0c,
+  0x09, 0x2f, 0x0c, 0x07, 0x30, 0x0c, 0x08, 0x30, 0x0c, 0x09, 0x2e, 0x0b,
+  0x0a, 0x2e, 0x0b, 0x0a, 0x2e, 0x0b, 0x0a, 0x2f, 0x0c, 0x0a, 0x2f, 0x0c,
+  0x0a, 0x2f, 0x0c, 0x0a, 0x2f, 0x0c, 0x0a, 0x2f, 0x0c, 0x0b, 0x2e, 0x0c,
+  0x0b, 0x2e, 0x0c, 0x0b, 0x2e, 0x0c, 0x0b, 0x2e, 0x0c, 0x0b, 0x2e, 0x0c,
+  0x0b, 0x30, 0x0d, 0x0b, 0x2f, 0x0d, 0x0b, 0x2f, 0x0d, 0x0b, 0x2e, 0x0d,
+  0x0b, 0x2e, 0x0d, 0x0b, 0x2e, 0x0d, 0x0b, 0x2e, 0x0d, 0x0b, 0x2e, 0x0d,
+  0x0b, 0x2e, 0x0d, 0x0b, 0x2e, 0x0d, 0x0b, 0x2e, 0x0d, 0x0b, 0x2e, 0x0d,
+  0x0b, 0x2e, 0x0d, 0x0b, 0x2e, 0x0d, 0x0b, 0x2e, 0x0d, 0x0b, 0x2e, 0x0d,
+  0x0b, 0x2e, 0x0d, 0x0b, 0x2e, 0x0d, 0x0c, 0x2f, 0x0d, 0x0f, 0x2e, 0x0d,
+  0x10, 0x2e, 0x0d, 0x0e, 0x30, 0x0b, 0x0e, 0x30, 0x0b, 0x0c, 0x2d, 0x0d,
+  0x0d, 0x2b, 0x0f, 0x10, 0x2a, 0x0e, 0x0f, 0x2a, 0x0e, 0x0d, 0x2b, 0x0c,
+  0x0e, 0x2d, 0x0e, 0x0b, 0x28, 0x0e, 0x04, 0x16, 0x08, 0x06, 0x09, 0x06,
+  0x07, 0x08, 0x07, 0x04, 0x07, 0x05, 0x03, 0x04, 0x04, 0x04, 0x05, 0x03,
+  0x03, 0x04, 0x04, 0x03, 0x04, 0x04, 0x03, 0x04, 0x04, 0x03, 0x04, 0x04,
+  0x03, 0x04, 0x04, 0x04, 0x04, 0x04, 0x03, 0x03, 0x04, 0x04, 0x03, 0x03,
+  0x03, 0x01, 0x01, 0x04, 0x04, 0x03, 0x04, 0x05, 0x04, 0x08, 0x08, 0x07,
+  0x07, 0x05, 0x04, 0x07, 0x05, 0x04, 0x09, 0x07, 0x06, 0x06, 0x04, 0x03,
+  0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+  0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 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, 0x01,
+  0x00, 0x00, 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, 0x01, 0x00, 0x01, 0x01, 0x01, 0x03, 0x05, 0x03,
+  0x02, 0x03, 0x02, 0x08, 0x07, 0x08, 0x03, 0x06, 0x03, 0x04, 0x15, 0x04,
+  0x0b, 0x31, 0x10, 0x0b, 0x41, 0x11, 0x05, 0x42, 0x0c, 0x03, 0x3f, 0x0a,
+  0x09, 0x40, 0x0e, 0x0d, 0x3e, 0x0f, 0x0c, 0x3a, 0x0f, 0x0b, 0x3d, 0x10,
+  0x09, 0x3e, 0x10, 0x08, 0x40, 0x0f, 0x08, 0x40, 0x10, 0x09, 0x3f, 0x10,
+  0x0a, 0x3d, 0x0f, 0x0b, 0x3d, 0x0f, 0x0a, 0x3e, 0x10, 0x0a, 0x3f, 0x0e,
+  0x0c, 0x3c, 0x0e, 0x0d, 0x3c, 0x0e, 0x0d, 0x3c, 0x0e, 0x0d, 0x3c, 0x0e,
+  0x0d, 0x3c, 0x0e, 0x0d, 0x3c, 0x0e, 0x0d, 0x3c, 0x0e, 0x0d, 0x3c, 0x0e,
+  0x0d, 0x3c, 0x0e, 0x0d, 0x3c, 0x0e, 0x0d, 0x3c, 0x0e, 0x0d, 0x3c, 0x0e,
+  0x0d, 0x3c, 0x0e, 0x0d, 0x3d, 0x0f, 0x0d, 0x3d, 0x0f, 0x0d, 0x3d, 0x0f,
+  0x0d, 0x3c, 0x0f, 0x0d, 0x3c, 0x0f, 0x0d, 0x3c, 0x0f, 0x0d, 0x3c, 0x0f,
+  0x0d, 0x3c, 0x0f, 0x0d, 0x3c, 0x0f, 0x0d, 0x3c, 0x0f, 0x0d, 0x3c, 0x0f,
+  0x0d, 0x3c, 0x0f, 0x0d, 0x3c, 0x0f, 0x0d, 0x3c, 0x0f, 0x0d, 0x3c, 0x0f,
+  0x0d, 0x3c, 0x0f, 0x0d, 0x3c, 0x0f, 0x0d, 0x3c, 0x0f, 0x0f, 0x3c, 0x0f,
+  0x12, 0x3a, 0x10, 0x14, 0x3b, 0x0f, 0x12, 0x3e, 0x0c, 0x11, 0x3e, 0x0d,
+  0x0e, 0x3c, 0x0f, 0x0f, 0x38, 0x11, 0x11, 0x37, 0x10, 0x11, 0x37, 0x10,
+  0x0e, 0x37, 0x0e, 0x11, 0x3b, 0x13, 0x0e, 0x33, 0x13, 0x04, 0x1b, 0x0a,
+  0x02, 0x08, 0x03, 0x03, 0x07, 0x05, 0x02, 0x07, 0x03, 0x02, 0x03, 0x02,
+  0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+  0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+  0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03,
+  0x08, 0x05, 0x05, 0x08, 0x05, 0x05, 0x06, 0x04, 0x03, 0x08, 0x06, 0x05,
+  0x05, 0x03, 0x03, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x01, 0x01, 0x01, 0x04, 0x04, 0x04, 0x01, 0x01, 0x01, 0x01, 0x01, 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, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+  0x03, 0x04, 0x03, 0x05, 0x05, 0x05, 0x0c, 0x0c, 0x0c, 0x07, 0x0b, 0x07,
+  0x07, 0x19, 0x07, 0x12, 0x39, 0x16, 0x0e, 0x45, 0x13, 0x0b, 0x48, 0x10,
+  0x0a, 0x46, 0x0d, 0x0f, 0x45, 0x10, 0x13, 0x43, 0x12, 0x14, 0x41, 0x13,
+  0x12, 0x43, 0x13, 0x10, 0x43, 0x13, 0x0e, 0x45, 0x12, 0x0f, 0x45, 0x13,
+  0x0f, 0x44, 0x13, 0x0f, 0x42, 0x12, 0x10, 0x42, 0x12, 0x0f, 0x44, 0x12,
+  0x0f, 0x45, 0x11, 0x10, 0x43, 0x11, 0x10, 0x43, 0x12, 0x10, 0x43, 0x12,
+  0x10, 0x43, 0x12, 0x10, 0x43, 0x12, 0x10, 0x42, 0x11, 0x10, 0x43, 0x11,
+  0x10, 0x42, 0x11, 0x10, 0x43, 0x12, 0x10, 0x43, 0x12, 0x10, 0x43, 0x12,
+  0x10, 0x43, 0x12, 0x10, 0x43, 0x12, 0x10, 0x44, 0x12, 0x10, 0x44, 0x12,
+  0x10, 0x44, 0x12, 0x11, 0x43, 0x12, 0x11, 0x43, 0x12, 0x11, 0x43, 0x12,
+  0x11, 0x43, 0x12, 0x11, 0x43, 0x12, 0x11, 0x43, 0x12, 0x11, 0x43, 0x12,
+  0x11, 0x43, 0x12, 0x11, 0x43, 0x13, 0x11, 0x43, 0x13, 0x11, 0x43, 0x12,
+  0x11, 0x43, 0x12, 0x11, 0x43, 0x12, 0x11, 0x43, 0x12, 0x11, 0x43, 0x12,
+  0x12, 0x43, 0x13, 0x16, 0x41, 0x14, 0x16, 0x42, 0x13, 0x14, 0x45, 0x10,
+  0x11, 0x46, 0x10, 0x0e, 0x45, 0x12, 0x0e, 0x42, 0x14, 0x11, 0x41, 0x13,
+  0x11, 0x41, 0x12, 0x0e, 0x41, 0x10, 0x12, 0x44, 0x15, 0x10, 0x3b, 0x16,
+  0x09, 0x25, 0x0e, 0x07, 0x0f, 0x06, 0x08, 0x0c, 0x07, 0x06, 0x0b, 0x06,
+  0x06, 0x07, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+  0x07, 0x06, 0x06, 0x07, 0x06, 0x06, 0x07, 0x06, 0x06, 0x07, 0x06, 0x06,
+  0x07, 0x06, 0x06, 0x07, 0x06, 0x06, 0x08, 0x07, 0x07, 0x07, 0x05, 0x06,
+  0x08, 0x06, 0x07, 0x0d, 0x0a, 0x0a, 0x0e, 0x0b, 0x0b, 0x0b, 0x08, 0x07,
+  0x0d, 0x0b, 0x0a, 0x0b, 0x08, 0x09, 0x05, 0x05, 0x05, 0x01, 0x01, 0x01,
+  0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01,
+  0x02, 0x02, 0x02, 0x00, 0x00, 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, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01,
+  0x00, 0x01, 0x01, 0x02, 0x03, 0x02, 0x06, 0x07, 0x06, 0x10, 0x10, 0x10,
+  0x0a, 0x10, 0x0b, 0x0a, 0x1c, 0x09, 0x18, 0x3f, 0x1a, 0x11, 0x47, 0x14,
+  0x0f, 0x4b, 0x11, 0x0f, 0x4a, 0x10, 0x13, 0x48, 0x12, 0x18, 0x45, 0x14,
+  0x1a, 0x44, 0x16, 0x17, 0x46, 0x14, 0x15, 0x46, 0x14, 0x13, 0x48, 0x13,
+  0x14, 0x48, 0x14, 0x14, 0x47, 0x14, 0x14, 0x45, 0x14, 0x15, 0x45, 0x14,
+  0x13, 0x46, 0x14, 0x12, 0x46, 0x13, 0x12, 0x46, 0x14, 0x12, 0x46, 0x15,
+  0x12, 0x46, 0x14, 0x12, 0x46, 0x14, 0x12, 0x46, 0x15, 0x12, 0x45, 0x14,
+  0x12, 0x46, 0x14, 0x12, 0x45, 0x14, 0x13, 0x46, 0x15, 0x13, 0x46, 0x14,
+  0x13, 0x46, 0x14, 0x13, 0x46, 0x14, 0x13, 0x46, 0x14, 0x13, 0x47, 0x15,
+  0x13, 0x47, 0x15, 0x13, 0x47, 0x15, 0x14, 0x46, 0x15, 0x14, 0x46, 0x15,
+  0x14, 0x46, 0x15, 0x14, 0x46, 0x15, 0x14, 0x46, 0x15, 0x14, 0x46, 0x15,
+  0x14, 0x46, 0x15, 0x14, 0x46, 0x15, 0x14, 0x47, 0x16, 0x14, 0x47, 0x16,
+  0x14, 0x46, 0x15, 0x14, 0x46, 0x15, 0x14, 0x46, 0x15, 0x14, 0x46, 0x15,
+  0x13, 0x46, 0x15, 0x15, 0x46, 0x15, 0x18, 0x44, 0x17, 0x18, 0x45, 0x16,
+  0x15, 0x49, 0x12, 0x12, 0x4b, 0x12, 0x0f, 0x4a, 0x14, 0x0e, 0x47, 0x15,
+  0x11, 0x47, 0x14, 0x12, 0x47, 0x13, 0x0e, 0x47, 0x12, 0x12, 0x49, 0x15,
+  0x12, 0x40, 0x17, 0x0e, 0x2c, 0x11, 0x0b, 0x14, 0x09, 0x0d, 0x0f, 0x0a,
+  0x0b, 0x0e, 0x09, 0x0a, 0x0b, 0x09, 0x0a, 0x0a, 0x09, 0x0b, 0x0a, 0x0b,
+  0x0b, 0x0a, 0x0a, 0x0c, 0x0a, 0x0a, 0x0c, 0x0a, 0x0a, 0x0c, 0x0a, 0x0a,
+  0x0c, 0x0a, 0x0a, 0x0b, 0x0a, 0x0a, 0x0b, 0x0a, 0x0a, 0x0c, 0x0b, 0x0c,
+  0x0a, 0x0a, 0x0a, 0x0d, 0x0a, 0x0b, 0x10, 0x0d, 0x0d, 0x13, 0x10, 0x10,
+  0x0f, 0x0b, 0x0c, 0x12, 0x0e, 0x0f, 0x10, 0x0d, 0x0e, 0x08, 0x08, 0x08,
+  0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+  0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01,
+  0x01, 0x01, 0x02, 0x00, 0x00, 0x01, 0x02, 0x02, 0x02, 0x0a, 0x0a, 0x09,
+  0x15, 0x16, 0x15, 0x10, 0x16, 0x0f, 0x0e, 0x20, 0x0d, 0x1f, 0x45, 0x1f,
+  0x15, 0x48, 0x15, 0x15, 0x4e, 0x14, 0x16, 0x4d, 0x13, 0x19, 0x4b, 0x14,
+  0x1e, 0x48, 0x16, 0x22, 0x49, 0x1a, 0x1e, 0x48, 0x18, 0x1c, 0x48, 0x17,
+  0x1a, 0x4a, 0x16, 0x1b, 0x4a, 0x17, 0x1b, 0x49, 0x17, 0x1a, 0x47, 0x17,
+  0x1b, 0x47, 0x17, 0x19, 0x49, 0x16, 0x18, 0x49, 0x16, 0x16, 0x4a, 0x17,
+  0x15, 0x4a, 0x18, 0x15, 0x4a, 0x18, 0x15, 0x4a, 0x18, 0x15, 0x4a, 0x18,
+  0x15, 0x48, 0x17, 0x15, 0x49, 0x17, 0x15, 0x49, 0x17, 0x16, 0x4b, 0x18,
+  0x16, 0x4b, 0x18, 0x16, 0x4b, 0x18, 0x16, 0x4b, 0x18, 0x16, 0x4b, 0x18,
+  0x16, 0x4b, 0x18, 0x16, 0x4b, 0x18, 0x16, 0x4b, 0x18, 0x18, 0x4b, 0x18,
+  0x18, 0x4b, 0x18, 0x18, 0x4b, 0x18, 0x18, 0x4b, 0x18, 0x18, 0x4b, 0x18,
+  0x18, 0x4b, 0x18, 0x18, 0x4b, 0x18, 0x18, 0x4b, 0x18, 0x18, 0x4b, 0x19,
+  0x18, 0x4b, 0x19, 0x18, 0x4b, 0x18, 0x18, 0x4b, 0x18, 0x18, 0x4b, 0x18,
+  0x18, 0x4b, 0x18, 0x17, 0x4b, 0x18, 0x19, 0x4a, 0x19, 0x1b, 0x49, 0x1b,
+  0x1a, 0x4a, 0x1a, 0x17, 0x4d, 0x16, 0x13, 0x4f, 0x15, 0x10, 0x4f, 0x17,
+  0x10, 0x4e, 0x17, 0x12, 0x4e, 0x17, 0x13, 0x4e, 0x16, 0x10, 0x4e, 0x13,
+  0x14, 0x4f, 0x16, 0x14, 0x46, 0x19, 0x14, 0x34, 0x15, 0x10, 0x1a, 0x0c,
+  0x13, 0x14, 0x0d, 0x11, 0x12, 0x0d, 0x0f, 0x10, 0x0e, 0x0f, 0x0f, 0x0e,
+  0x10, 0x0f, 0x10, 0x10, 0x0f, 0x0f, 0x12, 0x0f, 0x0f, 0x12, 0x0f, 0x0f,
+  0x12, 0x0f, 0x0f, 0x12, 0x0f, 0x0f, 0x11, 0x0f, 0x0f, 0x11, 0x0f, 0x0f,
+  0x12, 0x11, 0x11, 0x10, 0x0e, 0x0f, 0x13, 0x0f, 0x10, 0x15, 0x12, 0x13,
+  0x19, 0x16, 0x16, 0x13, 0x0f, 0x10, 0x17, 0x14, 0x15, 0x16, 0x14, 0x14,
+  0x0c, 0x0c, 0x0c, 0x04, 0x04, 0x04, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+  0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+  0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x03, 0x03, 0x03,
+  0x0e, 0x0d, 0x0d, 0x19, 0x19, 0x18, 0x12, 0x1a, 0x12, 0x0f, 0x23, 0x0d,
+  0x21, 0x45, 0x1e, 0x1a, 0x47, 0x17, 0x1a, 0x49, 0x16, 0x1c, 0x4a, 0x16,
+  0x1c, 0x48, 0x16, 0x21, 0x47, 0x18, 0x23, 0x47, 0x19, 0x20, 0x48, 0x18,
+  0x1f, 0x48, 0x18, 0x1e, 0x49, 0x18, 0x1f, 0x48, 0x18, 0x1f, 0x48, 0x18,
+  0x1e, 0x47, 0x18, 0x1e, 0x47, 0x18, 0x1d, 0x47, 0x18, 0x1c, 0x47, 0x18,
+  0x1b, 0x48, 0x18, 0x1a, 0x48, 0x19, 0x1a, 0x48, 0x19, 0x1a, 0x48, 0x19,
+  0x1a, 0x48, 0x19, 0x1a, 0x47, 0x18, 0x1a, 0x48, 0x18, 0x1a, 0x47, 0x18,
+  0x1b, 0x49, 0x19, 0x1b, 0x49, 0x19, 0x1b, 0x49, 0x19, 0x1b, 0x49, 0x19,
+  0x1b, 0x49, 0x19, 0x1b, 0x49, 0x19, 0x1b, 0x49, 0x19, 0x1b, 0x49, 0x19,
+  0x1c, 0x49, 0x19, 0x1c, 0x49, 0x19, 0x1c, 0x49, 0x19, 0x1c, 0x49, 0x19,
+  0x1c, 0x49, 0x19, 0x1c, 0x49, 0x19, 0x1c, 0x49, 0x19, 0x1c, 0x49, 0x19,
+  0x1c, 0x49, 0x1a, 0x1c, 0x49, 0x1a, 0x1c, 0x49, 0x19, 0x1c, 0x49, 0x19,
+  0x1c, 0x49, 0x19, 0x1c, 0x49, 0x19, 0x1c, 0x49, 0x19, 0x1d, 0x48, 0x19,
+  0x1e, 0x48, 0x1b, 0x1e, 0x48, 0x1b, 0x1c, 0x4a, 0x19, 0x18, 0x4b, 0x17,
+  0x17, 0x4c, 0x18, 0x17, 0x4c, 0x17, 0x18, 0x4c, 0x18, 0x18, 0x4b, 0x18,
+  0x17, 0x4b, 0x16, 0x1a, 0x4b, 0x18, 0x1a, 0x45, 0x1a, 0x17, 0x35, 0x15,
+  0x10, 0x1b, 0x0c, 0x12, 0x15, 0x0e, 0x11, 0x12, 0x0e, 0x11, 0x11, 0x0f,
+  0x10, 0x10, 0x0f, 0x11, 0x10, 0x10, 0x11, 0x10, 0x10, 0x12, 0x10, 0x10,
+  0x12, 0x10, 0x10, 0x12, 0x10, 0x10, 0x12, 0x10, 0x10, 0x12, 0x10, 0x10,
+  0x12, 0x10, 0x10, 0x12, 0x11, 0x11, 0x11, 0x10, 0x10, 0x14, 0x10, 0x11,
+  0x14, 0x11, 0x12, 0x1a, 0x18, 0x17, 0x14, 0x11, 0x11, 0x18, 0x16, 0x16,
+  0x1a, 0x18, 0x18, 0x0f, 0x0e, 0x0e, 0x04, 0x04, 0x04, 0x01, 0x01, 0x01,
+  0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03,
+  0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01,
+  0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x01, 0x01, 0x02, 0x00, 0x00,
+  0x07, 0x04, 0x04, 0x13, 0x12, 0x11, 0x1c, 0x1d, 0x1a, 0x16, 0x1d, 0x13,
+  0x10, 0x27, 0x0d, 0x21, 0x45, 0x1c, 0x20, 0x45, 0x19, 0x1e, 0x43, 0x17,
+  0x20, 0x47, 0x19, 0x1f, 0x44, 0x18, 0x21, 0x46, 0x19, 0x22, 0x45, 0x18,
+  0x22, 0x46, 0x19, 0x22, 0x46, 0x19, 0x21, 0x45, 0x1a, 0x21, 0x45, 0x19,
+  0x21, 0x45, 0x19, 0x21, 0x45, 0x19, 0x21, 0x45, 0x19, 0x21, 0x44, 0x1b,
+  0x20, 0x44, 0x1b, 0x20, 0x45, 0x19, 0x20, 0x45, 0x1a, 0x20, 0x45, 0x1a,
+  0x20, 0x45, 0x1a, 0x20, 0x45, 0x1a, 0x20, 0x45, 0x19, 0x20, 0x46, 0x19,
+  0x20, 0x45, 0x19, 0x20, 0x45, 0x1a, 0x20, 0x45, 0x1a, 0x20, 0x45, 0x1a,
+  0x20, 0x45, 0x1a, 0x20, 0x45, 0x1a, 0x20, 0x45, 0x1a, 0x20, 0x45, 0x1a,
+  0x20, 0x45, 0x1a, 0x20, 0x45, 0x1a, 0x20, 0x45, 0x1a, 0x20, 0x45, 0x1a,
+  0x20, 0x45, 0x1a, 0x20, 0x45, 0x1a, 0x20, 0x45, 0x1a, 0x20, 0x45, 0x1a,
+  0x20, 0x45, 0x1a, 0x20, 0x46, 0x1a, 0x20, 0x46, 0x1a, 0x20, 0x45, 0x1a,
+  0x20, 0x45, 0x1a, 0x20, 0x45, 0x1a, 0x20, 0x45, 0x1a, 0x20, 0x45, 0x1a,
+  0x21, 0x45, 0x1a, 0x21, 0x46, 0x19, 0x21, 0x46, 0x1a, 0x20, 0x45, 0x1b,
+  0x1f, 0x45, 0x1b, 0x21, 0x47, 0x19, 0x21, 0x47, 0x18, 0x1f, 0x47, 0x19,
+  0x1f, 0x46, 0x1a, 0x1f, 0x46, 0x19, 0x21, 0x46, 0x1a, 0x21, 0x44, 0x1b,
+  0x1b, 0x33, 0x16, 0x0f, 0x1a, 0x0d, 0x0f, 0x14, 0x0f, 0x0f, 0x12, 0x0f,
+  0x11, 0x11, 0x10, 0x10, 0x11, 0x0f, 0x11, 0x10, 0x10, 0x11, 0x10, 0x0f,
+  0x12, 0x10, 0x0f, 0x12, 0x10, 0x0f, 0x12, 0x10, 0x0f, 0x12, 0x10, 0x0f,
+  0x11, 0x10, 0x0f, 0x11, 0x10, 0x0f, 0x12, 0x11, 0x10, 0x12, 0x10, 0x10,
+  0x13, 0x11, 0x11, 0x12, 0x10, 0x10, 0x1a, 0x18, 0x18, 0x14, 0x13, 0x12,
+  0x18, 0x17, 0x16, 0x1d, 0x1c, 0x1b, 0x10, 0x10, 0x10, 0x04, 0x04, 0x04,
+  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x02, 0x02, 0x02, 0x00, 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, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+  0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
+  0x02, 0x00, 0x00, 0x08, 0x05, 0x04, 0x15, 0x14, 0x12, 0x1d, 0x1e, 0x1a,
+  0x16, 0x1e, 0x12, 0x11, 0x29, 0x0c, 0x21, 0x43, 0x1a, 0x23, 0x43, 0x1a,
+  0x20, 0x3f, 0x18, 0x22, 0x43, 0x1a, 0x20, 0x41, 0x18, 0x22, 0x44, 0x19,
+  0x21, 0x43, 0x18, 0x22, 0x44, 0x18, 0x22, 0x44, 0x18, 0x22, 0x42, 0x1a,
+  0x22, 0x42, 0x19, 0x22, 0x42, 0x19, 0x23, 0x43, 0x19, 0x23, 0x43, 0x19,
+  0x23, 0x41, 0x1b, 0x23, 0x41, 0x1b, 0x22, 0x42, 0x19, 0x22, 0x42, 0x19,
+  0x22, 0x42, 0x19, 0x22, 0x42, 0x19, 0x22, 0x42, 0x19, 0x22, 0x43, 0x19,
+  0x22, 0x43, 0x19, 0x22, 0x43, 0x19, 0x22, 0x42, 0x19, 0x22, 0x42, 0x19,
+  0x22, 0x42, 0x19, 0x22, 0x42, 0x19, 0x22, 0x42, 0x19, 0x22, 0x42, 0x19,
+  0x22, 0x42, 0x19, 0x22, 0x42, 0x19, 0x23, 0x42, 0x19, 0x23, 0x42, 0x19,
+  0x23, 0x42, 0x19, 0x23, 0x42, 0x19, 0x23, 0x42, 0x19, 0x23, 0x42, 0x19,
+  0x23, 0x42, 0x19, 0x23, 0x42, 0x19, 0x23, 0x42, 0x19, 0x23, 0x42, 0x19,
+  0x23, 0x42, 0x19, 0x23, 0x42, 0x19, 0x23, 0x42, 0x19, 0x23, 0x42, 0x19,
+  0x23, 0x42, 0x19, 0x23, 0x42, 0x19, 0x22, 0x44, 0x18, 0x22, 0x43, 0x19,
+  0x23, 0x40, 0x1c, 0x23, 0x40, 0x1b, 0x25, 0x42, 0x18, 0x25, 0x43, 0x17,
+  0x23, 0x43, 0x18, 0x23, 0x42, 0x1a, 0x24, 0x43, 0x1a, 0x25, 0x42, 0x1b,
+  0x24, 0x41, 0x1a, 0x1c, 0x32, 0x15, 0x0e, 0x1a, 0x0d, 0x0d, 0x14, 0x0f,
+  0x0e, 0x11, 0x0f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x0f, 0x11, 0x0f, 0x0f,
+  0x11, 0x0f, 0x0f, 0x11, 0x0f, 0x0f, 0x11, 0x0f, 0x0f, 0x11, 0x0f, 0x0f,
+  0x11, 0x0f, 0x0f, 0x11, 0x0f, 0x0f, 0x11, 0x0f, 0x0f, 0x11, 0x0f, 0x0e,
+  0x11, 0x0f, 0x0e, 0x11, 0x10, 0x10, 0x10, 0x0f, 0x0f, 0x1a, 0x19, 0x18,
+  0x14, 0x14, 0x12, 0x16, 0x15, 0x14, 0x1c, 0x1b, 0x1a, 0x10, 0x10, 0x10,
+  0x05, 0x05, 0x05, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x01, 0x01, 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, 0x01, 0x00, 0x00, 0x01, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x07, 0x04, 0x03, 0x14, 0x12, 0x11,
+  0x1b, 0x1c, 0x18, 0x13, 0x1b, 0x10, 0x11, 0x27, 0x0d, 0x20, 0x42, 0x1a,
+  0x21, 0x42, 0x19, 0x1e, 0x3f, 0x17, 0x21, 0x42, 0x19, 0x1f, 0x3f, 0x17,
+  0x21, 0x43, 0x18, 0x20, 0x42, 0x17, 0x20, 0x42, 0x17, 0x20, 0x43, 0x17,
+  0x20, 0x41, 0x19, 0x20, 0x41, 0x18, 0x21, 0x41, 0x18, 0x22, 0x41, 0x18,
+  0x22, 0x41, 0x18, 0x22, 0x40, 0x1a, 0x22, 0x40, 0x1a, 0x20, 0x41, 0x18,
+  0x20, 0x41, 0x18, 0x20, 0x41, 0x18, 0x20, 0x41, 0x18, 0x20, 0x41, 0x18,
+  0x20, 0x41, 0x18, 0x20, 0x41, 0x18, 0x20, 0x41, 0x18, 0x20, 0x41, 0x18,
+  0x20, 0x41, 0x18, 0x20, 0x41, 0x18, 0x20, 0x41, 0x18, 0x20, 0x41, 0x18,
+  0x20, 0x41, 0x18, 0x20, 0x41, 0x18, 0x20, 0x41, 0x18, 0x22, 0x41, 0x18,
+  0x22, 0x41, 0x18, 0x22, 0x41, 0x18, 0x22, 0x41, 0x18, 0x22, 0x41, 0x18,
+  0x22, 0x41, 0x18, 0x22, 0x41, 0x18, 0x22, 0x41, 0x18, 0x22, 0x41, 0x18,
+  0x22, 0x41, 0x18, 0x22, 0x41, 0x18, 0x22, 0x41, 0x18, 0x22, 0x41, 0x18,
+  0x22, 0x41, 0x18, 0x22, 0x41, 0x18, 0x22, 0x41, 0x18, 0x20, 0x43, 0x17,
+  0x20, 0x42, 0x18, 0x22, 0x3f, 0x1b, 0x22, 0x3e, 0x1a, 0x23, 0x41, 0x17,
+  0x23, 0x42, 0x16, 0x22, 0x41, 0x17, 0x22, 0x41, 0x18, 0x23, 0x42, 0x19,
+  0x24, 0x41, 0x1a, 0x23, 0x3f, 0x19, 0x1b, 0x31, 0x14, 0x0e, 0x19, 0x0c,
+  0x0e, 0x13, 0x0e, 0x0e, 0x10, 0x0e, 0x10, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e,
+  0x10, 0x0e, 0x0e, 0x10, 0x0e, 0x0e, 0x10, 0x0e, 0x0e, 0x10, 0x0e, 0x0e,
+  0x10, 0x0e, 0x0e, 0x10, 0x0e, 0x0e, 0x10, 0x0e, 0x0e, 0x10, 0x0e, 0x0e,
+  0x10, 0x0e, 0x0e, 0x10, 0x0e, 0x0e, 0x11, 0x10, 0x0f, 0x11, 0x0f, 0x0f,
+  0x1a, 0x18, 0x18, 0x14, 0x12, 0x12, 0x14, 0x13, 0x12, 0x17, 0x16, 0x16,
+  0x0f, 0x0f, 0x0e, 0x04, 0x04, 0x04, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 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, 0x01, 0x00,
+  0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x06, 0x03, 0x03,
+  0x12, 0x10, 0x10, 0x18, 0x19, 0x15, 0x11, 0x19, 0x0d, 0x11, 0x27, 0x0c,
+  0x20, 0x41, 0x19, 0x1f, 0x41, 0x18, 0x1c, 0x3e, 0x16, 0x20, 0x40, 0x18,
+  0x1e, 0x3e, 0x16, 0x20, 0x42, 0x17, 0x1e, 0x41, 0x16, 0x1e, 0x40, 0x15,
+  0x1e, 0x41, 0x15, 0x1e, 0x3f, 0x17, 0x1e, 0x3f, 0x16, 0x1f, 0x3f, 0x16,
+  0x21, 0x3f, 0x16, 0x21, 0x3f, 0x16, 0x21, 0x3e, 0x18, 0x21, 0x3e, 0x18,
+  0x1e, 0x3f, 0x16, 0x1e, 0x3f, 0x16, 0x1e, 0x3f, 0x16, 0x1e, 0x3f, 0x16,
+  0x1e, 0x3f, 0x16, 0x1e, 0x3f, 0x16, 0x1e, 0x3f, 0x16, 0x1e, 0x3f, 0x16,
+  0x1e, 0x3f, 0x16, 0x1e, 0x3f, 0x16, 0x1e, 0x3f, 0x16, 0x1e, 0x3f, 0x16,
+  0x1e, 0x3f, 0x16, 0x1e, 0x3f, 0x16, 0x1e, 0x3f, 0x16, 0x1e, 0x3f, 0x16,
+  0x21, 0x3f, 0x16, 0x21, 0x3f, 0x16, 0x21, 0x3f, 0x16, 0x21, 0x3f, 0x16,
+  0x21, 0x3f, 0x16, 0x21, 0x3f, 0x16, 0x21, 0x3f, 0x16, 0x21, 0x3f, 0x16,
+  0x21, 0x3f, 0x16, 0x21, 0x3f, 0x16, 0x21, 0x3f, 0x16, 0x21, 0x3f, 0x16,
+  0x21, 0x3f, 0x16, 0x21, 0x3f, 0x16, 0x21, 0x3f, 0x16, 0x21, 0x3f, 0x17,
+  0x1e, 0x41, 0x15, 0x1e, 0x40, 0x16, 0x21, 0x3d, 0x19, 0x21, 0x3d, 0x19,
+  0x20, 0x3f, 0x15, 0x20, 0x40, 0x14, 0x21, 0x3f, 0x15, 0x21, 0x3f, 0x16,
+  0x22, 0x40, 0x18, 0x23, 0x3f, 0x18, 0x22, 0x3e, 0x17, 0x1a, 0x30, 0x13,
+  0x0e, 0x18, 0x0b, 0x0e, 0x12, 0x0d, 0x0e, 0x0e, 0x0e, 0x0f, 0x0d, 0x0d,
+  0x0f, 0x0d, 0x0e, 0x0f, 0x0d, 0x0e, 0x0f, 0x0d, 0x0e, 0x0f, 0x0d, 0x0e,
+  0x0f, 0x0d, 0x0e, 0x0f, 0x0d, 0x0e, 0x0f, 0x0d, 0x0e, 0x0f, 0x0d, 0x0e,
+  0x0f, 0x0d, 0x0e, 0x0f, 0x0d, 0x0e, 0x0f, 0x0d, 0x0d, 0x10, 0x0f, 0x0e,
+  0x10, 0x0f, 0x0f, 0x1a, 0x18, 0x18, 0x13, 0x12, 0x11, 0x11, 0x10, 0x0f,
+  0x12, 0x12, 0x11, 0x0d, 0x0d, 0x0d, 0x04, 0x04, 0x04, 0x01, 0x01, 0x01,
+  0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 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, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00,
+  0x06, 0x05, 0x03, 0x11, 0x10, 0x0f, 0x17, 0x17, 0x14, 0x11, 0x19, 0x0d,
+  0x11, 0x26, 0x0c, 0x1f, 0x40, 0x18, 0x1e, 0x40, 0x17, 0x1c, 0x3d, 0x15,
+  0x1f, 0x3f, 0x17, 0x1d, 0x3e, 0x15, 0x1f, 0x41, 0x16, 0x1e, 0x3f, 0x15,
+  0x1e, 0x3f, 0x15, 0x1e, 0x40, 0x15, 0x1e, 0x3f, 0x16, 0x1e, 0x3f, 0x16,
+  0x1f, 0x3f, 0x16, 0x20, 0x3f, 0x16, 0x20, 0x3f, 0x16, 0x20, 0x3e, 0x17,
+  0x20, 0x3e, 0x17, 0x1e, 0x3f, 0x16, 0x1e, 0x3f, 0x16, 0x1e, 0x3f, 0x16,
+  0x1e, 0x3f, 0x16, 0x1e, 0x3f, 0x16, 0x1e, 0x3f, 0x16, 0x1e, 0x3f, 0x16,
+  0x1e, 0x3f, 0x16, 0x1e, 0x3f, 0x16, 0x1e, 0x3f, 0x16, 0x1e, 0x3f, 0x16,
+  0x1e, 0x3f, 0x16, 0x1e, 0x3f, 0x16, 0x1e, 0x3f, 0x16, 0x1e, 0x3f, 0x16,
+  0x1e, 0x3f, 0x16, 0x20, 0x3f, 0x16, 0x20, 0x3f, 0x16, 0x20, 0x3f, 0x16,
+  0x20, 0x3f, 0x16, 0x20, 0x3f, 0x16, 0x20, 0x3f, 0x16, 0x20, 0x3f, 0x16,
+  0x20, 0x3f, 0x16, 0x20, 0x3f, 0x16, 0x20, 0x3f, 0x16, 0x20, 0x3f, 0x16,
+  0x20, 0x3f, 0x16, 0x20, 0x3f, 0x16, 0x20, 0x3f, 0x16, 0x20, 0x3f, 0x16,
+  0x20, 0x3f, 0x16, 0x1e, 0x40, 0x15, 0x1e, 0x3f, 0x16, 0x20, 0x3c, 0x18,
+  0x20, 0x3c, 0x18, 0x20, 0x3f, 0x15, 0x20, 0x40, 0x14, 0x20, 0x3f, 0x15,
+  0x20, 0x3f, 0x16, 0x21, 0x40, 0x17, 0x22, 0x3f, 0x17, 0x22, 0x3d, 0x17,
+  0x1a, 0x2f, 0x13, 0x0e, 0x18, 0x0b, 0x0d, 0x12, 0x0c, 0x0d, 0x0e, 0x0c,
+  0x0f, 0x0d, 0x0d, 0x0e, 0x0d, 0x0d, 0x0e, 0x0d, 0x0d, 0x0e, 0x0d, 0x0d,
+  0x0e, 0x0d, 0x0d, 0x0e, 0x0d, 0x0d, 0x0e, 0x0d, 0x0d, 0x0e, 0x0d, 0x0d,
+  0x0e, 0x0d, 0x0d, 0x0e, 0x0d, 0x0d, 0x0e, 0x0d, 0x0d, 0x0e, 0x0d, 0x0c,
+  0x0f, 0x0e, 0x0d, 0x10, 0x0f, 0x0e, 0x18, 0x17, 0x17, 0x12, 0x11, 0x10,
+  0x0f, 0x0e, 0x0d, 0x0f, 0x0f, 0x0f, 0x0c, 0x0c, 0x0c, 0x03, 0x03, 0x03,
+  0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x01, 0x01, 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, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+  0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+  0x01, 0x01, 0x00, 0x06, 0x06, 0x04, 0x11, 0x11, 0x0f, 0x17, 0x17, 0x14,
+  0x10, 0x18, 0x0c, 0x12, 0x27, 0x0c, 0x1f, 0x3e, 0x17, 0x1d, 0x3f, 0x16,
+  0x1b, 0x3d, 0x14, 0x1f, 0x3f, 0x17, 0x1d, 0x3d, 0x15, 0x1f, 0x40, 0x15,
+  0x1d, 0x3f, 0x14, 0x1d, 0x3f, 0x14, 0x1d, 0x3f, 0x14, 0x1d, 0x3e, 0x16,
+  0x1d, 0x3e, 0x15, 0x1e, 0x3e, 0x15, 0x20, 0x3e, 0x15, 0x20, 0x3e, 0x15,
+  0x20, 0x3d, 0x17, 0x20, 0x3d, 0x17, 0x1d, 0x3e, 0x15, 0x1d, 0x3e, 0x15,
+  0x1d, 0x3e, 0x15, 0x1d, 0x3e, 0x15, 0x1d, 0x3e, 0x15, 0x1d, 0x3e, 0x15,
+  0x1d, 0x3e, 0x15, 0x1d, 0x3e, 0x15, 0x1d, 0x3e, 0x15, 0x1d, 0x3e, 0x15,
+  0x1d, 0x3e, 0x15, 0x1d, 0x3e, 0x15, 0x1d, 0x3e, 0x15, 0x1d, 0x3e, 0x15,
+  0x1d, 0x3e, 0x15, 0x1d, 0x3e, 0x15, 0x1f, 0x3e, 0x15, 0x1f, 0x3e, 0x15,
+  0x1f, 0x3e, 0x15, 0x1f, 0x3e, 0x15, 0x1f, 0x3e, 0x15, 0x1f, 0x3e, 0x15,
+  0x1f, 0x3e, 0x15, 0x1f, 0x3e, 0x15, 0x1f, 0x3e, 0x15, 0x1f, 0x3e, 0x15,
+  0x1f, 0x3e, 0x15, 0x1f, 0x3e, 0x15, 0x1f, 0x3e, 0x15, 0x1f, 0x3e, 0x15,
+  0x1f, 0x3e, 0x15, 0x1f, 0x3e, 0x16, 0x1d, 0x3f, 0x14, 0x1d, 0x3e, 0x15,
+  0x20, 0x3c, 0x18, 0x20, 0x3b, 0x17, 0x1f, 0x3e, 0x15, 0x1f, 0x3f, 0x14,
+  0x1f, 0x3e, 0x14, 0x1f, 0x3e, 0x15, 0x20, 0x3f, 0x17, 0x21, 0x3e, 0x16,
+  0x22, 0x3d, 0x17, 0x1b, 0x30, 0x12, 0x0d, 0x19, 0x0a, 0x0c, 0x12, 0x0c,
+  0x0c, 0x0e, 0x0b, 0x0e, 0x0c, 0x0c, 0x0e, 0x0e, 0x0d, 0x0e, 0x0e, 0x0d,
+  0x0e, 0x0e, 0x0d, 0x0e, 0x0e, 0x0d, 0x0e, 0x0e, 0x0d, 0x0e, 0x0e, 0x0d,
+  0x0e, 0x0e, 0x0d, 0x0e, 0x0e, 0x0d, 0x0e, 0x0e, 0x0d, 0x0e, 0x0e, 0x0d,
+  0x0d, 0x0d, 0x0c, 0x0e, 0x0e, 0x0d, 0x0f, 0x10, 0x0e, 0x17, 0x17, 0x16,
+  0x11, 0x11, 0x10, 0x0d, 0x0d, 0x0c, 0x0e, 0x0e, 0x0c, 0x0b, 0x0b, 0x0b,
+  0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x01, 0x01, 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, 0x01, 0x00, 0x00, 0x01, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x06, 0x08, 0x05, 0x10, 0x11, 0x0f,
+  0x16, 0x15, 0x12, 0x10, 0x18, 0x0c, 0x12, 0x26, 0x0d, 0x1e, 0x3d, 0x17,
+  0x1c, 0x3e, 0x15, 0x1b, 0x3c, 0x13, 0x1e, 0x3e, 0x15, 0x1c, 0x3c, 0x14,
+  0x1e, 0x3e, 0x14, 0x1d, 0x3e, 0x13, 0x1d, 0x3e, 0x14, 0x1d, 0x3e, 0x14,
+  0x1d, 0x3e, 0x15, 0x1d, 0x3e, 0x15, 0x1e, 0x3e, 0x15, 0x1f, 0x3e, 0x15,
+  0x1f, 0x3e, 0x15, 0x1f, 0x3d, 0x16, 0x1f, 0x3d, 0x16, 0x1d, 0x3e, 0x15,
+  0x1d, 0x3e, 0x15, 0x1d, 0x3e, 0x15, 0x1d, 0x3e, 0x15, 0x1d, 0x3e, 0x15,
+  0x1d, 0x3e, 0x15, 0x1d, 0x3e, 0x15, 0x1d, 0x3e, 0x15, 0x1d, 0x3e, 0x15,
+  0x1d, 0x3e, 0x15, 0x1d, 0x3e, 0x15, 0x1d, 0x3e, 0x15, 0x1d, 0x3e, 0x15,
+  0x1d, 0x3e, 0x15, 0x1d, 0x3e, 0x15, 0x1d, 0x3e, 0x15, 0x1d, 0x3e, 0x15,
+  0x1d, 0x3e, 0x15, 0x1d, 0x3e, 0x15, 0x1d, 0x3e, 0x15, 0x1d, 0x3e, 0x15,
+  0x1d, 0x3e, 0x15, 0x1d, 0x3e, 0x15, 0x1d, 0x3e, 0x15, 0x1d, 0x3e, 0x15,
+  0x1d, 0x3e, 0x15, 0x1d, 0x3e, 0x15, 0x1d, 0x3e, 0x15, 0x1d, 0x3e, 0x15,
+  0x1d, 0x3e, 0x15, 0x1d, 0x3e, 0x15, 0x1d, 0x3e, 0x15, 0x1d, 0x3e, 0x14,
+  0x1d, 0x3e, 0x15, 0x1f, 0x3b, 0x17, 0x1f, 0x3b, 0x16, 0x1f, 0x3d, 0x14,
+  0x1f, 0x3e, 0x14, 0x1d, 0x3e, 0x14, 0x1d, 0x3e, 0x15, 0x1e, 0x3e, 0x16,
+  0x1f, 0x3e, 0x15, 0x21, 0x3c, 0x17, 0x1b, 0x30, 0x12, 0x0d, 0x19, 0x0a,
+  0x0c, 0x11, 0x0b, 0x0c, 0x0d, 0x0a, 0x0d, 0x0c, 0x0c, 0x0d, 0x0e, 0x0c,
+  0x0d, 0x0e, 0x0c, 0x0d, 0x0e, 0x0c, 0x0d, 0x0e, 0x0c, 0x0d, 0x0e, 0x0c,
+  0x0d, 0x0e, 0x0c, 0x0d, 0x0e, 0x0c, 0x0d, 0x0e, 0x0c, 0x0d, 0x0e, 0x0c,
+  0x0d, 0x0e, 0x0c, 0x0c, 0x0c, 0x0b, 0x0d, 0x0d, 0x0c, 0x0e, 0x0f, 0x0d,
+  0x15, 0x17, 0x15, 0x0f, 0x10, 0x0f, 0x0b, 0x0b, 0x0a, 0x0b, 0x0b, 0x0a,
+  0x0b, 0x0b, 0x0a, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 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, 0x01, 0x00,
+  0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x06, 0x07, 0x05,
+  0x0f, 0x10, 0x0e, 0x14, 0x13, 0x10, 0x0f, 0x16, 0x0b, 0x11, 0x26, 0x0c,
+  0x1b, 0x3a, 0x15, 0x1a, 0x3b, 0x14, 0x19, 0x3a, 0x12, 0x1c, 0x3d, 0x14,
+  0x1a, 0x3b, 0x13, 0x1b, 0x3c, 0x13, 0x1a, 0x3b, 0x12, 0x1b, 0x3c, 0x13,
+  0x1b, 0x3c, 0x13, 0x1b, 0x3c, 0x14, 0x1b, 0x3c, 0x13, 0x1b, 0x3c, 0x13,
+  0x1c, 0x3b, 0x14, 0x1c, 0x3b, 0x14, 0x1c, 0x3b, 0x15, 0x1c, 0x3b, 0x15,
+  0x1b, 0x3c, 0x14, 0x1b, 0x3c, 0x14, 0x1b, 0x3c, 0x14, 0x1b, 0x3c, 0x14,
+  0x1b, 0x3c, 0x14, 0x1b, 0x3c, 0x14, 0x1b, 0x3c, 0x14, 0x1b, 0x3c, 0x14,
+  0x1b, 0x3c, 0x14, 0x1b, 0x3c, 0x14, 0x1b, 0x3c, 0x14, 0x1b, 0x3c, 0x14,
+  0x1b, 0x3c, 0x14, 0x1b, 0x3c, 0x14, 0x1b, 0x3c, 0x14, 0x1b, 0x3c, 0x14,
+  0x1b, 0x3c, 0x14, 0x1b, 0x3c, 0x14, 0x1b, 0x3c, 0x14, 0x1b, 0x3c, 0x14,
+  0x1b, 0x3c, 0x14, 0x1b, 0x3c, 0x14, 0x1b, 0x3c, 0x14, 0x1b, 0x3c, 0x14,
+  0x1b, 0x3c, 0x14, 0x1b, 0x3c, 0x14, 0x1b, 0x3c, 0x14, 0x1b, 0x3c, 0x14,
+  0x1b, 0x3c, 0x14, 0x1b, 0x3c, 0x14, 0x1b, 0x3c, 0x14, 0x1b, 0x3c, 0x14,
+  0x1b, 0x3c, 0x13, 0x1b, 0x3c, 0x14, 0x1c, 0x39, 0x16, 0x1c, 0x39, 0x15,
+  0x1c, 0x3c, 0x13, 0x1c, 0x3c, 0x12, 0x1b, 0x3c, 0x13, 0x1b, 0x3c, 0x14,
+  0x1b, 0x3c, 0x15, 0x1c, 0x3b, 0x14, 0x1f, 0x3a, 0x16, 0x19, 0x2f, 0x12,
+  0x0d, 0x18, 0x0a, 0x0c, 0x11, 0x0a, 0x0c, 0x0d, 0x0a, 0x0d, 0x0c, 0x0b,
+  0x0c, 0x0d, 0x0b, 0x0c, 0x0d, 0x0b, 0x0c, 0x0d, 0x0b, 0x0c, 0x0d, 0x0b,
+  0x0c, 0x0d, 0x0b, 0x0c, 0x0d, 0x0b, 0x0c, 0x0d, 0x0b, 0x0c, 0x0d, 0x0b,
+  0x0c, 0x0d, 0x0b, 0x0d, 0x0d, 0x0c, 0x0c, 0x0c, 0x0b, 0x0c, 0x0c, 0x0b,
+  0x0c, 0x0d, 0x0b, 0x13, 0x14, 0x12, 0x0e, 0x0e, 0x0d, 0x0b, 0x0b, 0x0a,
+  0x0a, 0x0a, 0x09, 0x0a, 0x0a, 0x0a, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00,
+  0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 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, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+  0x07, 0x08, 0x05, 0x0e, 0x0e, 0x0c, 0x11, 0x11, 0x0e, 0x0d, 0x14, 0x0a,
+  0x0f, 0x26, 0x0c, 0x17, 0x38, 0x13, 0x17, 0x38, 0x12, 0x17, 0x38, 0x11,
+  0x18, 0x3b, 0x12, 0x18, 0x3a, 0x12, 0x19, 0x3a, 0x12, 0x18, 0x39, 0x11,
+  0x19, 0x3a, 0x12, 0x19, 0x3a, 0x12, 0x19, 0x3a, 0x12, 0x19, 0x3a, 0x11,
+  0x19, 0x3a, 0x12, 0x1a, 0x38, 0x13, 0x1a, 0x38, 0x13, 0x1a, 0x39, 0x13,
+  0x1a, 0x39, 0x13, 0x19, 0x3a, 0x13, 0x19, 0x3a, 0x13, 0x19, 0x3a, 0x13,
+  0x19, 0x3a, 0x13, 0x19, 0x3a, 0x13, 0x19, 0x3a, 0x13, 0x19, 0x3a, 0x13,
+  0x19, 0x3a, 0x13, 0x19, 0x3a, 0x13, 0x19, 0x3a, 0x13, 0x19, 0x3a, 0x13,
+  0x19, 0x3a, 0x13, 0x19, 0x3a, 0x13, 0x19, 0x3a, 0x13, 0x19, 0x3a, 0x13,
+  0x19, 0x3a, 0x13, 0x19, 0x3a, 0x13, 0x19, 0x3a, 0x13, 0x19, 0x3a, 0x13,
+  0x19, 0x3a, 0x13, 0x19, 0x3a, 0x13, 0x19, 0x3a, 0x13, 0x19, 0x3a, 0x13,
+  0x19, 0x3a, 0x13, 0x19, 0x3a, 0x13, 0x19, 0x3a, 0x13, 0x19, 0x3a, 0x13,
+  0x19, 0x3a, 0x13, 0x19, 0x3a, 0x13, 0x19, 0x3a, 0x13, 0x19, 0x3a, 0x13,
+  0x19, 0x3a, 0x13, 0x19, 0x3a, 0x11, 0x19, 0x3a, 0x13, 0x1a, 0x37, 0x15,
+  0x1a, 0x37, 0x14, 0x1a, 0x3a, 0x11, 0x1a, 0x3a, 0x10, 0x19, 0x3a, 0x12,
+  0x19, 0x3a, 0x13, 0x19, 0x3a, 0x13, 0x1a, 0x39, 0x13, 0x1c, 0x38, 0x14,
+  0x17, 0x2e, 0x11, 0x0c, 0x17, 0x09, 0x0b, 0x10, 0x0a, 0x0b, 0x0c, 0x0a,
+  0x0c, 0x0c, 0x0b, 0x0b, 0x0b, 0x0b, 0x0a, 0x0c, 0x0b, 0x0a, 0x0c, 0x0b,
+  0x0a, 0x0c, 0x0b, 0x0a, 0x0c, 0x0b, 0x0a, 0x0c, 0x0b, 0x0a, 0x0c, 0x0b,
+  0x0a, 0x0c, 0x0b, 0x0a, 0x0b, 0x0a, 0x0b, 0x0c, 0x0b, 0x0a, 0x0b, 0x0a,
+  0x0a, 0x0b, 0x09, 0x0a, 0x0b, 0x09, 0x10, 0x11, 0x10, 0x0c, 0x0e, 0x0b,
+  0x0a, 0x0a, 0x09, 0x09, 0x0a, 0x08, 0x09, 0x09, 0x09, 0x02, 0x02, 0x02,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+  0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+  0x01, 0x01, 0x01, 0x06, 0x07, 0x05, 0x0c, 0x0c, 0x0a, 0x0d, 0x0e, 0x0b,
+  0x0a, 0x12, 0x08, 0x0c, 0x24, 0x0a, 0x12, 0x34, 0x10, 0x12, 0x34, 0x0f,
+  0x12, 0x35, 0x0f, 0x14, 0x38, 0x10, 0x14, 0x37, 0x10, 0x14, 0x37, 0x10,
+  0x14, 0x36, 0x10, 0x15, 0x37, 0x10, 0x15, 0x37, 0x10, 0x15, 0x36, 0x10,
+  0x15, 0x36, 0x0f, 0x15, 0x36, 0x10, 0x15, 0x35, 0x11, 0x15, 0x35, 0x11,
+  0x15, 0x35, 0x11, 0x15, 0x35, 0x11, 0x15, 0x36, 0x11, 0x15, 0x36, 0x11,
+  0x15, 0x36, 0x11, 0x15, 0x36, 0x11, 0x15, 0x36, 0x11, 0x15, 0x36, 0x11,
+  0x15, 0x36, 0x11, 0x15, 0x36, 0x11, 0x15, 0x36, 0x11, 0x15, 0x36, 0x11,
+  0x15, 0x36, 0x11, 0x15, 0x36, 0x11, 0x15, 0x36, 0x11, 0x15, 0x36, 0x11,
+  0x15, 0x36, 0x11, 0x15, 0x36, 0x11, 0x14, 0x36, 0x11, 0x14, 0x36, 0x11,
+  0x14, 0x36, 0x11, 0x14, 0x36, 0x11, 0x14, 0x36, 0x11, 0x14, 0x36, 0x11,
+  0x14, 0x36, 0x11, 0x14, 0x36, 0x11, 0x14, 0x36, 0x11, 0x14, 0x36, 0x11,
+  0x14, 0x36, 0x11, 0x14, 0x36, 0x11, 0x14, 0x36, 0x11, 0x14, 0x36, 0x11,
+  0x14, 0x36, 0x11, 0x14, 0x36, 0x11, 0x15, 0x37, 0x0f, 0x15, 0x36, 0x11,
+  0x15, 0x34, 0x13, 0x15, 0x34, 0x12, 0x15, 0x36, 0x0f, 0x15, 0x37, 0x0e,
+  0x14, 0x37, 0x10, 0x14, 0x36, 0x11, 0x14, 0x36, 0x11, 0x15, 0x35, 0x11,
+  0x17, 0x35, 0x12, 0x14, 0x2c, 0x0f, 0x0a, 0x16, 0x08, 0x09, 0x10, 0x08,
+  0x09, 0x0c, 0x08, 0x0a, 0x0c, 0x09, 0x09, 0x0a, 0x09, 0x09, 0x0a, 0x0a,
+  0x09, 0x0a, 0x09, 0x09, 0x0a, 0x09, 0x09, 0x0a, 0x09, 0x09, 0x0a, 0x09,
+  0x09, 0x0a, 0x09, 0x09, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x0a, 0x0a, 0x0a,
+  0x09, 0x09, 0x09, 0x08, 0x08, 0x08, 0x07, 0x08, 0x06, 0x0c, 0x0e, 0x0c,
+  0x09, 0x0b, 0x09, 0x08, 0x08, 0x08, 0x07, 0x07, 0x06, 0x07, 0x07, 0x07,
+  0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x00, 0x01, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+  0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x04, 0x05, 0x03, 0x09, 0x09, 0x07,
+  0x0a, 0x0b, 0x07, 0x06, 0x0f, 0x05, 0x0a, 0x22, 0x09, 0x0e, 0x2f, 0x0e,
+  0x0e, 0x30, 0x0d, 0x0e, 0x31, 0x0d, 0x10, 0x34, 0x0e, 0x10, 0x33, 0x0e,
+  0x10, 0x33, 0x0e, 0x10, 0x33, 0x0e, 0x11, 0x33, 0x0e, 0x11, 0x33, 0x0e,
+  0x11, 0x33, 0x0e, 0x11, 0x33, 0x0e, 0x11, 0x33, 0x0f, 0x11, 0x33, 0x10,
+  0x11, 0x33, 0x0f, 0x11, 0x32, 0x0f, 0x11, 0x32, 0x0f, 0x11, 0x34, 0x10,
+  0x11, 0x33, 0x10, 0x11, 0x33, 0x10, 0x11, 0x33, 0x10, 0x11, 0x33, 0x10,
+  0x11, 0x33, 0x10, 0x11, 0x33, 0x10, 0x11, 0x33, 0x10, 0x11, 0x33, 0x10,
+  0x11, 0x33, 0x10, 0x11, 0x33, 0x10, 0x11, 0x33, 0x10, 0x11, 0x33, 0x10,
+  0x11, 0x33, 0x10, 0x11, 0x33, 0x10, 0x11, 0x33, 0x10, 0x10, 0x33, 0x10,
+  0x10, 0x33, 0x10, 0x10, 0x33, 0x10, 0x10, 0x33, 0x10, 0x10, 0x33, 0x10,
+  0x10, 0x33, 0x10, 0x10, 0x33, 0x10, 0x10, 0x33, 0x10, 0x10, 0x33, 0x10,
+  0x10, 0x33, 0x10, 0x10, 0x33, 0x10, 0x10, 0x33, 0x10, 0x10, 0x33, 0x10,
+  0x10, 0x33, 0x10, 0x10, 0x33, 0x10, 0x10, 0x33, 0x10, 0x11, 0x33, 0x0e,
+  0x11, 0x33, 0x10, 0x11, 0x31, 0x10, 0x11, 0x31, 0x10, 0x11, 0x33, 0x0e,
+  0x11, 0x33, 0x0d, 0x10, 0x33, 0x0f, 0x10, 0x32, 0x10, 0x0f, 0x32, 0x0e,
+  0x11, 0x32, 0x0e, 0x13, 0x33, 0x10, 0x11, 0x29, 0x0d, 0x06, 0x15, 0x06,
+  0x05, 0x0f, 0x07, 0x05, 0x0b, 0x05, 0x08, 0x0b, 0x08, 0x07, 0x09, 0x08,
+  0x08, 0x09, 0x09, 0x08, 0x09, 0x08, 0x08, 0x09, 0x08, 0x08, 0x09, 0x08,
+  0x08, 0x09, 0x08, 0x08, 0x09, 0x08, 0x08, 0x09, 0x08, 0x08, 0x08, 0x08,
+  0x09, 0x09, 0x09, 0x07, 0x07, 0x07, 0x06, 0x06, 0x05, 0x05, 0x05, 0x04,
+  0x0a, 0x0a, 0x09, 0x07, 0x07, 0x06, 0x06, 0x06, 0x05, 0x05, 0x04, 0x04,
+  0x05, 0x05, 0x05, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x01, 0x01, 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, 0x01, 0x00,
+  0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+  0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x04, 0x02,
+  0x07, 0x07, 0x05, 0x07, 0x08, 0x04, 0x04, 0x0c, 0x03, 0x08, 0x1e, 0x08,
+  0x09, 0x2b, 0x0b, 0x09, 0x2c, 0x0a, 0x09, 0x2d, 0x0a, 0x0c, 0x30, 0x0c,
+  0x0c, 0x30, 0x0c, 0x0c, 0x30, 0x0c, 0x0c, 0x30, 0x0c, 0x0d, 0x30, 0x0c,
+  0x0d, 0x30, 0x0c, 0x0d, 0x30, 0x0c, 0x0d, 0x30, 0x0c, 0x0d, 0x30, 0x0d,
+  0x0d, 0x31, 0x0e, 0x0d, 0x31, 0x0d, 0x0d, 0x2f, 0x0d, 0x0d, 0x2f, 0x0d,
+  0x0d, 0x31, 0x0e, 0x0d, 0x30, 0x0e, 0x0d, 0x30, 0x0e, 0x0d, 0x30, 0x0e,
+  0x0d, 0x30, 0x0e, 0x0d, 0x30, 0x0e, 0x0d, 0x30, 0x0e, 0x0d, 0x30, 0x0e,
+  0x0d, 0x30, 0x0e, 0x0d, 0x30, 0x0e, 0x0d, 0x30, 0x0e, 0x0d, 0x30, 0x0e,
+  0x0d, 0x30, 0x0e, 0x0d, 0x30, 0x0e, 0x0d, 0x30, 0x0e, 0x0d, 0x30, 0x0e,
+  0x0c, 0x30, 0x0e, 0x0c, 0x30, 0x0e, 0x0c, 0x30, 0x0e, 0x0c, 0x30, 0x0e,
+  0x0c, 0x30, 0x0e, 0x0c, 0x30, 0x0e, 0x0c, 0x30, 0x0e, 0x0c, 0x30, 0x0e,
+  0x0c, 0x30, 0x0e, 0x0c, 0x30, 0x0e, 0x0c, 0x30, 0x0e, 0x0c, 0x30, 0x0e,
+  0x0c, 0x30, 0x0e, 0x0c, 0x30, 0x0e, 0x0c, 0x30, 0x0e, 0x0c, 0x30, 0x0e,
+  0x0d, 0x30, 0x0c, 0x0d, 0x30, 0x0e, 0x0d, 0x2e, 0x0e, 0x0d, 0x2e, 0x0e,
+  0x0d, 0x30, 0x0c, 0x0d, 0x30, 0x0c, 0x0c, 0x30, 0x0e, 0x0c, 0x2f, 0x0e,
+  0x0b, 0x2f, 0x0c, 0x0d, 0x2f, 0x0c, 0x10, 0x30, 0x0e, 0x0e, 0x27, 0x0b,
+  0x04, 0x14, 0x03, 0x02, 0x0d, 0x05, 0x02, 0x0a, 0x04, 0x06, 0x0a, 0x07,
+  0x06, 0x09, 0x07, 0x07, 0x07, 0x08, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
+  0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
+  0x07, 0x07, 0x07, 0x08, 0x08, 0x08, 0x05, 0x05, 0x05, 0x04, 0x04, 0x03,
+  0x03, 0x03, 0x02, 0x07, 0x07, 0x07, 0x04, 0x04, 0x04, 0x03, 0x03, 0x03,
+  0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x01, 0x01, 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,
+  0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01,
+  0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
+  0x03, 0x04, 0x02, 0x06, 0x06, 0x04, 0x05, 0x07, 0x02, 0x02, 0x0c, 0x01,
+  0x06, 0x1e, 0x06, 0x06, 0x28, 0x09, 0x06, 0x29, 0x08, 0x07, 0x2b, 0x09,
+  0x0a, 0x2e, 0x0b, 0x0b, 0x2e, 0x0b, 0x0a, 0x2e, 0x0b, 0x0b, 0x2e, 0x0b,
+  0x0c, 0x2e, 0x0b, 0x0c, 0x2e, 0x0b, 0x0c, 0x2e, 0x0b, 0x0c, 0x2e, 0x0b,
+  0x0c, 0x2e, 0x0c, 0x0c, 0x2e, 0x0d, 0x0c, 0x2e, 0x0c, 0x0c, 0x2e, 0x0c,
+  0x0c, 0x2e, 0x0c, 0x0c, 0x2e, 0x0c, 0x0c, 0x2e, 0x0c, 0x0c, 0x2e, 0x0c,
+  0x0c, 0x2e, 0x0c, 0x0c, 0x2e, 0x0c, 0x0c, 0x2e, 0x0c, 0x0c, 0x2e, 0x0c,
+  0x0c, 0x2e, 0x0c, 0x0c, 0x2e, 0x0c, 0x0c, 0x2e, 0x0c, 0x0c, 0x2e, 0x0c,
+  0x0c, 0x2e, 0x0c, 0x0c, 0x2e, 0x0c, 0x0c, 0x2e, 0x0c, 0x0c, 0x2e, 0x0c,
+  0x0c, 0x2e, 0x0c, 0x0b, 0x2e, 0x0c, 0x0b, 0x2e, 0x0c, 0x0b, 0x2e, 0x0c,
+  0x0b, 0x2e, 0x0c, 0x0b, 0x2e, 0x0c, 0x0b, 0x2e, 0x0c, 0x0b, 0x2e, 0x0c,
+  0x0b, 0x2e, 0x0c, 0x0b, 0x2e, 0x0c, 0x0b, 0x2e, 0x0c, 0x0b, 0x2e, 0x0c,
+  0x0b, 0x2e, 0x0c, 0x0b, 0x2e, 0x0c, 0x0b, 0x2e, 0x0c, 0x0b, 0x2e, 0x0c,
+  0x0b, 0x2e, 0x0c, 0x0c, 0x2f, 0x0b, 0x0c, 0x2e, 0x0c, 0x0c, 0x2c, 0x0d,
+  0x0c, 0x2c, 0x0d, 0x0b, 0x2e, 0x0b, 0x0c, 0x2e, 0x0a, 0x0a, 0x2e, 0x0c,
+  0x0a, 0x2e, 0x0d, 0x09, 0x2d, 0x0b, 0x0b, 0x2d, 0x0b, 0x0e, 0x2d, 0x0d,
+  0x0d, 0x25, 0x0b, 0x03, 0x13, 0x03, 0x01, 0x0d, 0x06, 0x01, 0x0a, 0x03,
+  0x05, 0x0a, 0x07, 0x05, 0x08, 0x06, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
+  0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
+  0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x04, 0x04, 0x04,
+  0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x04, 0x04, 0x04, 0x03, 0x02, 0x03,
+  0x02, 0x02, 0x03, 0x01, 0x01, 0x02, 0x03, 0x02, 0x03, 0x02, 0x02, 0x02,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 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, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+  0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+  0x01, 0x01, 0x00, 0x04, 0x04, 0x03, 0x04, 0x06, 0x03, 0x02, 0x06, 0x01,
+  0x01, 0x0d, 0x01, 0x04, 0x1e, 0x06, 0x03, 0x26, 0x06, 0x03, 0x27, 0x06,
+  0x04, 0x29, 0x07, 0x08, 0x2c, 0x0a, 0x0a, 0x2c, 0x0a, 0x08, 0x2c, 0x0a,
+  0x09, 0x2c, 0x0a, 0x0a, 0x2c, 0x0a, 0x0a, 0x2c, 0x0a, 0x0a, 0x2c, 0x0a,
+  0x0a, 0x2c, 0x0a, 0x0a, 0x2c, 0x0a, 0x0a, 0x2c, 0x0b, 0x0a, 0x2c, 0x0b,
+  0x0a, 0x2c, 0x0b, 0x0a, 0x2c, 0x0b, 0x0a, 0x2c, 0x0a, 0x0a, 0x2c, 0x0a,
+  0x0a, 0x2c, 0x0a, 0x0a, 0x2c, 0x0a, 0x0a, 0x2c, 0x0a, 0x0a, 0x2c, 0x0a,
+  0x0a, 0x2c, 0x0a, 0x0a, 0x2c, 0x0a, 0x0a, 0x2c, 0x0a, 0x0a, 0x2c, 0x0a,
+  0x0a, 0x2c, 0x0a, 0x0a, 0x2c, 0x0a, 0x0a, 0x2c, 0x0a, 0x0a, 0x2c, 0x0a,
+  0x0a, 0x2c, 0x0a, 0x0a, 0x2c, 0x0a, 0x09, 0x2c, 0x0a, 0x09, 0x2c, 0x0a,
+  0x09, 0x2c, 0x0a, 0x09, 0x2c, 0x0a, 0x09, 0x2c, 0x0a, 0x09, 0x2c, 0x0a,
+  0x09, 0x2c, 0x0a, 0x09, 0x2c, 0x0a, 0x09, 0x2c, 0x0a, 0x09, 0x2c, 0x0a,
+  0x09, 0x2c, 0x0a, 0x09, 0x2c, 0x0a, 0x09, 0x2c, 0x0a, 0x09, 0x2c, 0x0a,
+  0x09, 0x2c, 0x0a, 0x09, 0x2c, 0x0a, 0x0a, 0x2d, 0x09, 0x0a, 0x2c, 0x0a,
+  0x0a, 0x2a, 0x0d, 0x0a, 0x2a, 0x0d, 0x09, 0x2c, 0x0a, 0x0a, 0x2c, 0x0a,
+  0x08, 0x2c, 0x0a, 0x08, 0x2c, 0x0b, 0x08, 0x2b, 0x0a, 0x09, 0x2b, 0x0a,
+  0x0c, 0x2b, 0x0c, 0x0b, 0x24, 0x0c, 0x02, 0x12, 0x04, 0x01, 0x0d, 0x06,
+  0x01, 0x09, 0x03, 0x05, 0x09, 0x06, 0x05, 0x07, 0x07, 0x07, 0x06, 0x07,
+  0x07, 0x06, 0x06, 0x07, 0x06, 0x06, 0x07, 0x06, 0x06, 0x07, 0x06, 0x06,
+  0x07, 0x06, 0x06, 0x07, 0x06, 0x06, 0x07, 0x07, 0x07, 0x07, 0x06, 0x06,
+  0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+  0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+  0x01, 0x01, 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, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00,
+  0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+  0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x03, 0x06, 0x03, 0x03, 0x06, 0x03,
+  0x01, 0x05, 0x01, 0x01, 0x0d, 0x02, 0x04, 0x1d, 0x06, 0x01, 0x23, 0x05,
+  0x01, 0x24, 0x05, 0x02, 0x26, 0x06, 0x06, 0x29, 0x09, 0x08, 0x2a, 0x09,
+  0x07, 0x29, 0x09, 0x08, 0x29, 0x09, 0x09, 0x29, 0x09, 0x09, 0x29, 0x09,
+  0x09, 0x29, 0x09, 0x09, 0x29, 0x09, 0x09, 0x29, 0x09, 0x09, 0x29, 0x0a,
+  0x09, 0x29, 0x0a, 0x09, 0x2a, 0x0a, 0x09, 0x2a, 0x0a, 0x09, 0x29, 0x09,
+  0x09, 0x29, 0x09, 0x09, 0x29, 0x09, 0x09, 0x29, 0x09, 0x09, 0x29, 0x09,
+  0x09, 0x29, 0x09, 0x09, 0x29, 0x09, 0x09, 0x29, 0x09, 0x09, 0x29, 0x09,
+  0x09, 0x29, 0x09, 0x09, 0x29, 0x09, 0x09, 0x29, 0x09, 0x09, 0x29, 0x09,
+  0x09, 0x29, 0x09, 0x09, 0x29, 0x09, 0x09, 0x29, 0x09, 0x07, 0x29, 0x09,
+  0x07, 0x29, 0x09, 0x07, 0x29, 0x09, 0x07, 0x29, 0x09, 0x07, 0x29, 0x09,
+  0x07, 0x29, 0x09, 0x07, 0x29, 0x09, 0x07, 0x29, 0x09, 0x07, 0x29, 0x09,
+  0x07, 0x29, 0x09, 0x07, 0x29, 0x09, 0x07, 0x29, 0x09, 0x07, 0x29, 0x09,
+  0x07, 0x29, 0x09, 0x07, 0x29, 0x09, 0x07, 0x29, 0x09, 0x09, 0x2a, 0x08,
+  0x09, 0x29, 0x09, 0x09, 0x28, 0x0b, 0x09, 0x28, 0x0c, 0x07, 0x29, 0x0a,
+  0x07, 0x29, 0x09, 0x05, 0x29, 0x09, 0x05, 0x2a, 0x0a, 0x07, 0x29, 0x09,
+  0x07, 0x28, 0x09, 0x0b, 0x29, 0x0b, 0x0b, 0x22, 0x0b, 0x02, 0x11, 0x04,
+  0x01, 0x0c, 0x07, 0x02, 0x09, 0x04, 0x05, 0x08, 0x07, 0x04, 0x06, 0x07,
+  0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+  0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x07, 0x07,
+  0x06, 0x06, 0x06, 0x04, 0x04, 0x04, 0x04, 0x05, 0x05, 0x02, 0x03, 0x03,
+  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x01, 0x01, 0x01, 0x01, 0x01, 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, 0x02, 0x00, 0x00,
+  0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+  0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x03, 0x06, 0x05,
+  0x03, 0x06, 0x03, 0x01, 0x06, 0x01, 0x02, 0x0e, 0x03, 0x04, 0x1c, 0x08,
+  0x01, 0x21, 0x04, 0x00, 0x23, 0x04, 0x01, 0x25, 0x06, 0x05, 0x28, 0x08,
+  0x07, 0x29, 0x0a, 0x08, 0x28, 0x09, 0x09, 0x28, 0x09, 0x08, 0x28, 0x09,
+  0x08, 0x28, 0x09, 0x08, 0x28, 0x09, 0x08, 0x28, 0x09, 0x08, 0x28, 0x09,
+  0x08, 0x28, 0x0a, 0x08, 0x28, 0x0a, 0x0a, 0x27, 0x0a, 0x0a, 0x27, 0x0a,
+  0x08, 0x28, 0x0a, 0x08, 0x28, 0x0a, 0x08, 0x28, 0x0a, 0x08, 0x28, 0x0a,
+  0x08, 0x28, 0x0a, 0x08, 0x28, 0x0a, 0x08, 0x28, 0x0a, 0x08, 0x28, 0x0a,
+  0x08, 0x28, 0x0a, 0x08, 0x28, 0x0a, 0x08, 0x28, 0x0a, 0x08, 0x28, 0x0a,
+  0x08, 0x28, 0x0a, 0x08, 0x28, 0x0a, 0x08, 0x28, 0x0a, 0x08, 0x28, 0x0a,
+  0x06, 0x28, 0x0a, 0x06, 0x28, 0x0a, 0x06, 0x28, 0x0a, 0x06, 0x28, 0x0a,
+  0x06, 0x28, 0x0a, 0x06, 0x28, 0x0a, 0x06, 0x28, 0x0a, 0x06, 0x28, 0x0a,
+  0x06, 0x28, 0x0a, 0x06, 0x28, 0x0a, 0x06, 0x28, 0x0a, 0x06, 0x28, 0x0a,
+  0x06, 0x28, 0x0a, 0x06, 0x28, 0x0a, 0x06, 0x28, 0x0a, 0x06, 0x28, 0x09,
+  0x08, 0x28, 0x08, 0x08, 0x28, 0x09, 0x08, 0x27, 0x0a, 0x08, 0x27, 0x0b,
+  0x06, 0x28, 0x09, 0x06, 0x28, 0x09, 0x04, 0x28, 0x0a, 0x04, 0x29, 0x0a,
+  0x06, 0x28, 0x0a, 0x07, 0x27, 0x09, 0x0c, 0x28, 0x0b, 0x0c, 0x22, 0x0b,
+  0x03, 0x11, 0x03, 0x02, 0x0b, 0x07, 0x03, 0x08, 0x06, 0x07, 0x08, 0x08,
+  0x04, 0x07, 0x07, 0x05, 0x07, 0x07, 0x05, 0x07, 0x07, 0x05, 0x07, 0x07,
+  0x05, 0x07, 0x07, 0x05, 0x07, 0x07, 0x05, 0x07, 0x07, 0x05, 0x07, 0x07,
+  0x05, 0x07, 0x07, 0x05, 0x06, 0x06, 0x03, 0x05, 0x05, 0x03, 0x05, 0x05,
+  0x02, 0x04, 0x04, 0x00, 0x02, 0x02, 0x01, 0x03, 0x03, 0x00, 0x02, 0x02,
+  0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01,
+  0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+  0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01,
+  0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+  0x03, 0x07, 0x05, 0x03, 0x07, 0x04, 0x01, 0x07, 0x01, 0x03, 0x0f, 0x04,
+  0x05, 0x1c, 0x09, 0x01, 0x1f, 0x04, 0x00, 0x22, 0x03, 0x01, 0x23, 0x06,
+  0x04, 0x26, 0x07, 0x06, 0x28, 0x09, 0x08, 0x26, 0x09, 0x09, 0x27, 0x09,
+  0x07, 0x27, 0x09, 0x07, 0x27, 0x09, 0x07, 0x27, 0x09, 0x07, 0x27, 0x09,
+  0x07, 0x27, 0x09, 0x07, 0x27, 0x0a, 0x07, 0x27, 0x0a, 0x0a, 0x25, 0x0a,
+  0x0a, 0x25, 0x0a, 0x07, 0x27, 0x0a, 0x07, 0x27, 0x0a, 0x07, 0x27, 0x0a,
+  0x07, 0x27, 0x0a, 0x07, 0x27, 0x0a, 0x07, 0x27, 0x0a, 0x07, 0x27, 0x0a,
+  0x07, 0x27, 0x0a, 0x07, 0x27, 0x0a, 0x07, 0x27, 0x0a, 0x07, 0x27, 0x0a,
+  0x07, 0x27, 0x0a, 0x07, 0x27, 0x0a, 0x07, 0x27, 0x0a, 0x07, 0x27, 0x0a,
+  0x07, 0x27, 0x0a, 0x05, 0x27, 0x0a, 0x05, 0x27, 0x0a, 0x05, 0x27, 0x0a,
+  0x05, 0x27, 0x0a, 0x05, 0x27, 0x0a, 0x05, 0x27, 0x0a, 0x05, 0x27, 0x0a,
+  0x05, 0x27, 0x0a, 0x05, 0x27, 0x0a, 0x05, 0x27, 0x0a, 0x05, 0x27, 0x0a,
+  0x05, 0x27, 0x0a, 0x05, 0x27, 0x0a, 0x05, 0x27, 0x0a, 0x05, 0x27, 0x0a,
+  0x05, 0x27, 0x09, 0x07, 0x26, 0x08, 0x07, 0x27, 0x09, 0x07, 0x25, 0x09,
+  0x07, 0x25, 0x0a, 0x05, 0x27, 0x09, 0x05, 0x27, 0x09, 0x03, 0x27, 0x0a,
+  0x04, 0x27, 0x09, 0x06, 0x27, 0x0a, 0x07, 0x26, 0x09, 0x0c, 0x27, 0x0b,
+  0x0d, 0x22, 0x0b, 0x03, 0x10, 0x03, 0x03, 0x0b, 0x07, 0x04, 0x08, 0x06,
+  0x08, 0x08, 0x09, 0x04, 0x07, 0x07, 0x03, 0x07, 0x07, 0x03, 0x07, 0x07,
+  0x03, 0x07, 0x07, 0x03, 0x07, 0x07, 0x03, 0x07, 0x07, 0x03, 0x07, 0x07,
+  0x03, 0x07, 0x07, 0x03, 0x07, 0x07, 0x04, 0x07, 0x07, 0x02, 0x06, 0x06,
+  0x03, 0x06, 0x06, 0x03, 0x05, 0x05, 0x01, 0x02, 0x02, 0x01, 0x03, 0x03,
+  0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03,
+  0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+  0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00,
+  0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01,
+  0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+  0x01, 0x01, 0x01, 0x03, 0x07, 0x05, 0x02, 0x05, 0x03, 0x01, 0x05, 0x01,
+  0x03, 0x0e, 0x03, 0x07, 0x1c, 0x09, 0x01, 0x1f, 0x04, 0x00, 0x21, 0x02,
+  0x01, 0x22, 0x05, 0x04, 0x25, 0x06, 0x07, 0x27, 0x09, 0x08, 0x25, 0x08,
+  0x09, 0x26, 0x08, 0x08, 0x26, 0x08, 0x08, 0x26, 0x08, 0x08, 0x26, 0x08,
+  0x08, 0x26, 0x08, 0x08, 0x26, 0x09, 0x08, 0x26, 0x0a, 0x08, 0x26, 0x0a,
+  0x0a, 0x24, 0x0a, 0x0a, 0x24, 0x0a, 0x08, 0x26, 0x0a, 0x08, 0x26, 0x0a,
+  0x08, 0x26, 0x0a, 0x08, 0x26, 0x0a, 0x08, 0x26, 0x0a, 0x08, 0x26, 0x0a,
+  0x08, 0x26, 0x0a, 0x08, 0x26, 0x0a, 0x08, 0x25, 0x0a, 0x08, 0x25, 0x0a,
+  0x08, 0x25, 0x0a, 0x08, 0x25, 0x0a, 0x08, 0x25, 0x0a, 0x08, 0x25, 0x0a,
+  0x08, 0x25, 0x0a, 0x08, 0x25, 0x0a, 0x06, 0x25, 0x0a, 0x06, 0x25, 0x0a,
+  0x06, 0x25, 0x0a, 0x06, 0x25, 0x0a, 0x06, 0x25, 0x0a, 0x06, 0x25, 0x0a,
+  0x06, 0x25, 0x0a, 0x06, 0x25, 0x0a, 0x06, 0x25, 0x0a, 0x06, 0x25, 0x0a,
+  0x06, 0x25, 0x0a, 0x06, 0x25, 0x0a, 0x06, 0x25, 0x0a, 0x06, 0x25, 0x0a,
+  0x06, 0x25, 0x0a, 0x06, 0x25, 0x08, 0x08, 0x25, 0x07, 0x08, 0x25, 0x08,
+  0x08, 0x24, 0x09, 0x08, 0x24, 0x0a, 0x06, 0x25, 0x08, 0x05, 0x25, 0x08,
+  0x03, 0x25, 0x0a, 0x04, 0x25, 0x09, 0x06, 0x26, 0x09, 0x07, 0x25, 0x08,
+  0x0c, 0x26, 0x0b, 0x0d, 0x20, 0x0b, 0x03, 0x0f, 0x03, 0x03, 0x0a, 0x07,
+  0x05, 0x06, 0x06, 0x08, 0x07, 0x08, 0x04, 0x06, 0x06, 0x02, 0x06, 0x06,
+  0x02, 0x06, 0x06, 0x02, 0x06, 0x06, 0x02, 0x06, 0x06, 0x02, 0x06, 0x06,
+  0x02, 0x06, 0x06, 0x02, 0x06, 0x06, 0x02, 0x06, 0x06, 0x03, 0x07, 0x07,
+  0x02, 0x05, 0x05, 0x02, 0x05, 0x05, 0x02, 0x05, 0x05, 0x01, 0x02, 0x02,
+  0x02, 0x04, 0x04, 0x01, 0x03, 0x03, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+  0x04, 0x04, 0x04, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+  0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00,
+  0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00,
+  0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+  0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x03, 0x06, 0x04, 0x01, 0x04, 0x02,
+  0x00, 0x04, 0x00, 0x02, 0x0e, 0x03, 0x07, 0x1c, 0x09, 0x02, 0x1e, 0x03,
+  0x00, 0x20, 0x02, 0x01, 0x21, 0x04, 0x05, 0x24, 0x06, 0x07, 0x26, 0x09,
+  0x08, 0x24, 0x07, 0x09, 0x25, 0x07, 0x08, 0x25, 0x07, 0x08, 0x25, 0x07,
+  0x08, 0x25, 0x07, 0x08, 0x25, 0x07, 0x08, 0x25, 0x08, 0x08, 0x25, 0x09,
+  0x08, 0x25, 0x09, 0x09, 0x24, 0x09, 0x09, 0x24, 0x09, 0x08, 0x25, 0x09,
+  0x08, 0x25, 0x09, 0x08, 0x25, 0x09, 0x08, 0x25, 0x09, 0x08, 0x25, 0x09,
+  0x08, 0x25, 0x09, 0x08, 0x25, 0x09, 0x08, 0x25, 0x09, 0x08, 0x24, 0x09,
+  0x08, 0x24, 0x09, 0x08, 0x24, 0x09, 0x08, 0x24, 0x09, 0x08, 0x24, 0x09,
+  0x08, 0x24, 0x09, 0x08, 0x24, 0x09, 0x08, 0x24, 0x09, 0x06, 0x24, 0x09,
+  0x06, 0x24, 0x09, 0x06, 0x24, 0x09, 0x06, 0x24, 0x09, 0x06, 0x24, 0x09,
+  0x06, 0x24, 0x09, 0x06, 0x24, 0x09, 0x06, 0x24, 0x09, 0x06, 0x24, 0x09,
+  0x06, 0x24, 0x09, 0x06, 0x24, 0x09, 0x06, 0x24, 0x09, 0x06, 0x24, 0x09,
+  0x06, 0x24, 0x09, 0x06, 0x24, 0x09, 0x06, 0x24, 0x07, 0x08, 0x25, 0x06,
+  0x08, 0x24, 0x07, 0x08, 0x24, 0x0a, 0x08, 0x23, 0x0a, 0x06, 0x24, 0x07,
+  0x06, 0x24, 0x07, 0x03, 0x24, 0x09, 0x04, 0x24, 0x0a, 0x07, 0x25, 0x09,
+  0x08, 0x24, 0x08, 0x0c, 0x26, 0x0a, 0x0d, 0x1f, 0x0a, 0x03, 0x0f, 0x03,
+  0x04, 0x0a, 0x07, 0x06, 0x06, 0x05, 0x08, 0x07, 0x07, 0x04, 0x05, 0x05,
+  0x02, 0x05, 0x05, 0x02, 0x05, 0x05, 0x02, 0x05, 0x05, 0x02, 0x05, 0x05,
+  0x02, 0x05, 0x05, 0x02, 0x05, 0x05, 0x02, 0x05, 0x05, 0x02, 0x05, 0x05,
+  0x03, 0x06, 0x06, 0x01, 0x04, 0x04, 0x01, 0x04, 0x04, 0x01, 0x04, 0x04,
+  0x01, 0x02, 0x02, 0x02, 0x05, 0x05, 0x01, 0x04, 0x04, 0x00, 0x01, 0x01,
+  0x01, 0x01, 0x01, 0x05, 0x05, 0x05, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
+  0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00,
+  0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+  0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x03, 0x06, 0x03,
+  0x01, 0x03, 0x01, 0x00, 0x02, 0x00, 0x02, 0x0d, 0x02, 0x08, 0x1c, 0x08,
+  0x02, 0x1d, 0x02, 0x00, 0x1f, 0x01, 0x02, 0x20, 0x03, 0x06, 0x23, 0x05,
+  0x08, 0x24, 0x08, 0x08, 0x23, 0x06, 0x09, 0x23, 0x06, 0x09, 0x23, 0x06,
+  0x09, 0x23, 0x06, 0x09, 0x23, 0x06, 0x09, 0x23, 0x06, 0x09, 0x23, 0x07,
+  0x09, 0x23, 0x09, 0x09, 0x23, 0x09, 0x09, 0x23, 0x09, 0x09, 0x23, 0x09,
+  0x09, 0x23, 0x09, 0x09, 0x23, 0x09, 0x09, 0x23, 0x09, 0x09, 0x23, 0x09,
+  0x09, 0x23, 0x09, 0x09, 0x23, 0x09, 0x09, 0x23, 0x09, 0x09, 0x23, 0x09,
+  0x09, 0x22, 0x09, 0x09, 0x22, 0x09, 0x09, 0x22, 0x09, 0x09, 0x22, 0x09,
+  0x09, 0x22, 0x09, 0x09, 0x22, 0x09, 0x09, 0x22, 0x09, 0x09, 0x22, 0x09,
+  0x07, 0x22, 0x09, 0x07, 0x22, 0x09, 0x07, 0x22, 0x09, 0x07, 0x22, 0x09,
+  0x07, 0x22, 0x09, 0x07, 0x22, 0x09, 0x07, 0x22, 0x09, 0x07, 0x22, 0x09,
+  0x07, 0x22, 0x09, 0x07, 0x22, 0x09, 0x07, 0x22, 0x09, 0x07, 0x22, 0x09,
+  0x07, 0x22, 0x09, 0x07, 0x22, 0x09, 0x07, 0x22, 0x09, 0x07, 0x22, 0x06,
+  0x09, 0x23, 0x05, 0x09, 0x22, 0x06, 0x09, 0x23, 0x09, 0x09, 0x22, 0x09,
+  0x07, 0x23, 0x07, 0x06, 0x22, 0x06, 0x04, 0x22, 0x09, 0x04, 0x22, 0x0a,
+  0x07, 0x23, 0x09, 0x08, 0x22, 0x07, 0x0c, 0x24, 0x0a, 0x0d, 0x1e, 0x0a,
+  0x03, 0x0e, 0x03, 0x04, 0x09, 0x07, 0x07, 0x05, 0x04, 0x08, 0x06, 0x06,
+  0x04, 0x04, 0x04, 0x01, 0x03, 0x03, 0x01, 0x03, 0x03, 0x01, 0x03, 0x03,
+  0x01, 0x03, 0x03, 0x01, 0x03, 0x03, 0x01, 0x03, 0x03, 0x01, 0x03, 0x03,
+  0x01, 0x03, 0x03, 0x02, 0x05, 0x05, 0x01, 0x03, 0x03, 0x00, 0x02, 0x02,
+  0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x02, 0x05, 0x05, 0x02, 0x04, 0x04,
+  0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x05, 0x05, 0x05, 0x01, 0x01, 0x01,
+  0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+  0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00,
+  0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01,
+  0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
+  0x02, 0x04, 0x02, 0x00, 0x02, 0x00, 0x00, 0x03, 0x00, 0x02, 0x0d, 0x02,
+  0x07, 0x1b, 0x08, 0x02, 0x1c, 0x02, 0x01, 0x1d, 0x01, 0x02, 0x1e, 0x03,
+  0x06, 0x21, 0x05, 0x08, 0x21, 0x07, 0x07, 0x21, 0x06, 0x09, 0x21, 0x07,
+  0x09, 0x21, 0x07, 0x09, 0x21, 0x07, 0x09, 0x21, 0x07, 0x09, 0x21, 0x07,
+  0x09, 0x21, 0x08, 0x09, 0x21, 0x09, 0x09, 0x21, 0x09, 0x09, 0x21, 0x09,
+  0x09, 0x21, 0x09, 0x07, 0x21, 0x08, 0x07, 0x21, 0x08, 0x07, 0x21, 0x08,
+  0x07, 0x21, 0x08, 0x07, 0x21, 0x08, 0x07, 0x21, 0x08, 0x07, 0x21, 0x08,
+  0x07, 0x21, 0x08, 0x08, 0x21, 0x09, 0x08, 0x21, 0x09, 0x08, 0x21, 0x09,
+  0x08, 0x21, 0x09, 0x08, 0x21, 0x09, 0x08, 0x21, 0x09, 0x08, 0x21, 0x09,
+  0x08, 0x21, 0x09, 0x07, 0x21, 0x09, 0x07, 0x21, 0x09, 0x07, 0x21, 0x09,
+  0x07, 0x21, 0x09, 0x07, 0x21, 0x09, 0x07, 0x21, 0x09, 0x07, 0x21, 0x09,
+  0x07, 0x21, 0x09, 0x07, 0x21, 0x09, 0x07, 0x21, 0x09, 0x07, 0x21, 0x09,
+  0x07, 0x21, 0x09, 0x07, 0x21, 0x09, 0x07, 0x21, 0x09, 0x07, 0x21, 0x09,
+  0x07, 0x21, 0x07, 0x09, 0x22, 0x06, 0x09, 0x21, 0x07, 0x09, 0x21, 0x09,
+  0x09, 0x20, 0x09, 0x07, 0x22, 0x06, 0x07, 0x21, 0x06, 0x04, 0x21, 0x08,
+  0x04, 0x21, 0x08, 0x07, 0x22, 0x08, 0x08, 0x21, 0x07, 0x0b, 0x22, 0x0a,
+  0x0c, 0x1c, 0x09, 0x03, 0x0f, 0x03, 0x03, 0x09, 0x05, 0x06, 0x05, 0x03,
+  0x08, 0x06, 0x06, 0x04, 0x04, 0x04, 0x02, 0x03, 0x03, 0x02, 0x03, 0x03,
+  0x02, 0x03, 0x03, 0x02, 0x03, 0x03, 0x02, 0x03, 0x03, 0x02, 0x03, 0x03,
+  0x02, 0x03, 0x03, 0x02, 0x03, 0x03, 0x03, 0x04, 0x04, 0x02, 0x03, 0x03,
+  0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x02, 0x03, 0x03, 0x04, 0x06, 0x06,
+  0x02, 0x03, 0x03, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x04, 0x04, 0x04,
+  0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+  0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00,
+  0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x01,
+  0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+  0x00, 0x01, 0x00, 0x01, 0x03, 0x01, 0x00, 0x02, 0x00, 0x00, 0x03, 0x00,
+  0x02, 0x0c, 0x02, 0x07, 0x1a, 0x08, 0x03, 0x1b, 0x03, 0x02, 0x1b, 0x01,
+  0x03, 0x1c, 0x04, 0x06, 0x1f, 0x06, 0x07, 0x1f, 0x06, 0x07, 0x1f, 0x06,
+  0x08, 0x1f, 0x08, 0x08, 0x1f, 0x08, 0x08, 0x1f, 0x08, 0x08, 0x1f, 0x08,
+  0x08, 0x1f, 0x08, 0x08, 0x1f, 0x08, 0x08, 0x1f, 0x08, 0x08, 0x1f, 0x08,
+  0x08, 0x1f, 0x08, 0x08, 0x1f, 0x08, 0x05, 0x1f, 0x06, 0x05, 0x1f, 0x07,
+  0x05, 0x1f, 0x07, 0x05, 0x1f, 0x07, 0x05, 0x1f, 0x07, 0x05, 0x1f, 0x07,
+  0x05, 0x1f, 0x07, 0x05, 0x1f, 0x06, 0x07, 0x21, 0x08, 0x07, 0x21, 0x08,
+  0x07, 0x21, 0x08, 0x07, 0x21, 0x08, 0x07, 0x21, 0x08, 0x07, 0x21, 0x08,
+  0x07, 0x21, 0x08, 0x07, 0x21, 0x08, 0x06, 0x21, 0x08, 0x06, 0x21, 0x08,
+  0x06, 0x21, 0x08, 0x06, 0x21, 0x08, 0x06, 0x21, 0x08, 0x06, 0x21, 0x08,
+  0x06, 0x21, 0x08, 0x06, 0x21, 0x08, 0x06, 0x21, 0x08, 0x06, 0x21, 0x08,
+  0x06, 0x21, 0x08, 0x06, 0x21, 0x08, 0x06, 0x21, 0x08, 0x06, 0x21, 0x08,
+  0x06, 0x21, 0x08, 0x06, 0x21, 0x08, 0x08, 0x20, 0x07, 0x08, 0x1f, 0x08,
+  0x08, 0x1f, 0x09, 0x08, 0x1f, 0x08, 0x08, 0x21, 0x06, 0x08, 0x21, 0x06,
+  0x05, 0x20, 0x07, 0x05, 0x20, 0x06, 0x07, 0x20, 0x06, 0x07, 0x1f, 0x06,
+  0x0a, 0x20, 0x0b, 0x0a, 0x1b, 0x0a, 0x03, 0x10, 0x04, 0x02, 0x09, 0x03,
+  0x04, 0x07, 0x04, 0x07, 0x06, 0x06, 0x04, 0x04, 0x04, 0x03, 0x04, 0x04,
+  0x03, 0x04, 0x04, 0x03, 0x04, 0x04, 0x03, 0x04, 0x04, 0x03, 0x04, 0x04,
+  0x03, 0x04, 0x04, 0x03, 0x04, 0x04, 0x03, 0x04, 0x04, 0x04, 0x04, 0x04,
+  0x03, 0x04, 0x04, 0x01, 0x02, 0x02, 0x01, 0x02, 0x02, 0x03, 0x03, 0x03,
+  0x05, 0x05, 0x05, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x02, 0x00, 0x01, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x00,
+  0x00, 0x03, 0x00, 0x01, 0x0b, 0x02, 0x06, 0x19, 0x07, 0x02, 0x1a, 0x02,
+  0x02, 0x1a, 0x01, 0x04, 0x1b, 0x04, 0x07, 0x1d, 0x06, 0x07, 0x1d, 0x05,
+  0x06, 0x1d, 0x05, 0x08, 0x1e, 0x07, 0x07, 0x1d, 0x07, 0x07, 0x1d, 0x07,
+  0x07, 0x1d, 0x07, 0x07, 0x1d, 0x07, 0x07, 0x1d, 0x07, 0x07, 0x1d, 0x07,
+  0x07, 0x1d, 0x07, 0x07, 0x1d, 0x07, 0x06, 0x1d, 0x07, 0x03, 0x1d, 0x05,
+  0x02, 0x1d, 0x05, 0x02, 0x1d, 0x05, 0x02, 0x1d, 0x05, 0x02, 0x1d, 0x05,
+  0x02, 0x1d, 0x05, 0x02, 0x1d, 0x05, 0x02, 0x1d, 0x05, 0x05, 0x1f, 0x07,
+  0x05, 0x1f, 0x07, 0x05, 0x1f, 0x07, 0x05, 0x1f, 0x07, 0x05, 0x1f, 0x07,
+  0x05, 0x1f, 0x07, 0x05, 0x1f, 0x07, 0x05, 0x1f, 0x07, 0x05, 0x1f, 0x07,
+  0x05, 0x1f, 0x07, 0x05, 0x1f, 0x07, 0x05, 0x1f, 0x07, 0x05, 0x1f, 0x07,
+  0x05, 0x1f, 0x07, 0x05, 0x1f, 0x07, 0x05, 0x1f, 0x07, 0x05, 0x1f, 0x07,
+  0x05, 0x1f, 0x07, 0x05, 0x1f, 0x07, 0x05, 0x1f, 0x07, 0x05, 0x1f, 0x07,
+  0x05, 0x1f, 0x07, 0x05, 0x1f, 0x07, 0x05, 0x1f, 0x07, 0x07, 0x1d, 0x07,
+  0x07, 0x1d, 0x07, 0x08, 0x1d, 0x07, 0x08, 0x1d, 0x07, 0x07, 0x1f, 0x05,
+  0x07, 0x1f, 0x06, 0x05, 0x1f, 0x05, 0x05, 0x1f, 0x04, 0x05, 0x1f, 0x05,
+  0x06, 0x1e, 0x06, 0x09, 0x1e, 0x0b, 0x09, 0x19, 0x09, 0x04, 0x10, 0x03,
+  0x01, 0x0a, 0x01, 0x02, 0x07, 0x04, 0x06, 0x06, 0x06, 0x04, 0x04, 0x04,
+  0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
+  0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
+  0x04, 0x03, 0x03, 0x04, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+  0x04, 0x04, 0x04, 0x06, 0x05, 0x05, 0x03, 0x02, 0x02, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
+  0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
+  0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00,
+  0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01,
+  0x00, 0x01, 0x00, 0x00, 0x03, 0x00, 0x01, 0x0c, 0x01, 0x06, 0x19, 0x06,
+  0x01, 0x1a, 0x02, 0x01, 0x1a, 0x02, 0x03, 0x1c, 0x03, 0x06, 0x1d, 0x05,
+  0x06, 0x1d, 0x05, 0x06, 0x1d, 0x05, 0x07, 0x1d, 0x06, 0x05, 0x1c, 0x05,
+  0x05, 0x1c, 0x05, 0x05, 0x1c, 0x05, 0x05, 0x1c, 0x05, 0x05, 0x1c, 0x05,
+  0x05, 0x1c, 0x05, 0x05, 0x1c, 0x05, 0x05, 0x1c, 0x05, 0x05, 0x1c, 0x05,
+  0x02, 0x1c, 0x03, 0x01, 0x1c, 0x04, 0x01, 0x1c, 0x04, 0x01, 0x1c, 0x04,
+  0x01, 0x1c, 0x04, 0x01, 0x1c, 0x04, 0x01, 0x1c, 0x04, 0x01, 0x1c, 0x03,
+  0x03, 0x1e, 0x05, 0x03, 0x1e, 0x05, 0x03, 0x1e, 0x05, 0x03, 0x1e, 0x05,
+  0x03, 0x1e, 0x05, 0x03, 0x1e, 0x05, 0x03, 0x1e, 0x05, 0x03, 0x1e, 0x05,
+  0x03, 0x1e, 0x05, 0x03, 0x1e, 0x05, 0x03, 0x1e, 0x05, 0x03, 0x1e, 0x05,
+  0x03, 0x1e, 0x05, 0x03, 0x1e, 0x05, 0x03, 0x1e, 0x05, 0x03, 0x1e, 0x05,
+  0x03, 0x1e, 0x05, 0x03, 0x1e, 0x05, 0x03, 0x1e, 0x05, 0x03, 0x1e, 0x05,
+  0x03, 0x1e, 0x05, 0x03, 0x1e, 0x05, 0x03, 0x1e, 0x05, 0x03, 0x1e, 0x05,
+  0x05, 0x1c, 0x06, 0x05, 0x1c, 0x06, 0x07, 0x1c, 0x06, 0x07, 0x1c, 0x06,
+  0x05, 0x1d, 0x04, 0x05, 0x1d, 0x05, 0x03, 0x1e, 0x04, 0x03, 0x1e, 0x03,
+  0x04, 0x1f, 0x05, 0x06, 0x1d, 0x06, 0x09, 0x1d, 0x0a, 0x09, 0x18, 0x09,
+  0x03, 0x0f, 0x02, 0x00, 0x09, 0x01, 0x02, 0x06, 0x03, 0x05, 0x05, 0x05,
+  0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
+  0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
+  0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01,
+  0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x05, 0x05, 0x05, 0x03, 0x03, 0x03,
+  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x04, 0x04, 0x04, 0x07, 0x07, 0x07,
+  0x06, 0x06, 0x06, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x02, 0x00, 0x01,
+  0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x02, 0x01, 0x00, 0x01, 0x00, 0x00, 0x03, 0x00, 0x01, 0x0c, 0x01,
+  0x05, 0x19, 0x04, 0x01, 0x1a, 0x02, 0x00, 0x1a, 0x02, 0x03, 0x1c, 0x02,
+  0x06, 0x1d, 0x05, 0x06, 0x1d, 0x05, 0x06, 0x1d, 0x05, 0x06, 0x1d, 0x04,
+  0x03, 0x1b, 0x03, 0x03, 0x1b, 0x03, 0x03, 0x1b, 0x03, 0x03, 0x1b, 0x03,
+  0x03, 0x1b, 0x03, 0x03, 0x1b, 0x03, 0x03, 0x1b, 0x03, 0x03, 0x1b, 0x03,
+  0x03, 0x1b, 0x03, 0x01, 0x1b, 0x02, 0x00, 0x1b, 0x02, 0x00, 0x1b, 0x02,
+  0x00, 0x1b, 0x02, 0x00, 0x1b, 0x02, 0x00, 0x1b, 0x02, 0x00, 0x1b, 0x02,
+  0x00, 0x1b, 0x02, 0x01, 0x1d, 0x03, 0x01, 0x1c, 0x03, 0x01, 0x1c, 0x03,
+  0x01, 0x1c, 0x03, 0x01, 0x1c, 0x03, 0x01, 0x1c, 0x03, 0x01, 0x1c, 0x03,
+  0x01, 0x1c, 0x03, 0x01, 0x1c, 0x03, 0x01, 0x1c, 0x03, 0x01, 0x1c, 0x03,
+  0x01, 0x1c, 0x03, 0x01, 0x1c, 0x03, 0x01, 0x1c, 0x03, 0x01, 0x1c, 0x03,
+  0x01, 0x1c, 0x03, 0x01, 0x1c, 0x03, 0x01, 0x1c, 0x03, 0x01, 0x1c, 0x03,
+  0x01, 0x1c, 0x03, 0x01, 0x1c, 0x03, 0x01, 0x1c, 0x03, 0x01, 0x1c, 0x03,
+  0x01, 0x1d, 0x03, 0x03, 0x1b, 0x04, 0x03, 0x1b, 0x04, 0x06, 0x1b, 0x04,
+  0x06, 0x1b, 0x04, 0x03, 0x1b, 0x03, 0x03, 0x1b, 0x04, 0x01, 0x1e, 0x02,
+  0x01, 0x1e, 0x02, 0x02, 0x1e, 0x05, 0x06, 0x1d, 0x06, 0x09, 0x1c, 0x09,
+  0x09, 0x18, 0x09, 0x02, 0x0f, 0x02, 0x00, 0x08, 0x01, 0x02, 0x06, 0x03,
+  0x05, 0x05, 0x05, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
+  0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
+  0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02,
+  0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x05, 0x05, 0x05,
+  0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x07, 0x07, 0x07,
+  0x0a, 0x0a, 0x0a, 0x09, 0x09, 0x09, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01,
+  0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x01, 0x00, 0x00, 0x03, 0x00,
+  0x01, 0x0b, 0x01, 0x05, 0x18, 0x05, 0x01, 0x19, 0x02, 0x00, 0x19, 0x01,
+  0x02, 0x1b, 0x02, 0x05, 0x1c, 0x05, 0x05, 0x1c, 0x05, 0x05, 0x1c, 0x04,
+  0x05, 0x1c, 0x04, 0x03, 0x1a, 0x03, 0x03, 0x1a, 0x03, 0x03, 0x1a, 0x03,
+  0x03, 0x1a, 0x03, 0x03, 0x1a, 0x03, 0x03, 0x1a, 0x03, 0x03, 0x1a, 0x03,
+  0x03, 0x1a, 0x03, 0x03, 0x1a, 0x03, 0x00, 0x1b, 0x02, 0x00, 0x1b, 0x02,
+  0x00, 0x1b, 0x02, 0x00, 0x1b, 0x02, 0x00, 0x1b, 0x02, 0x00, 0x1b, 0x02,
+  0x00, 0x1b, 0x02, 0x00, 0x1b, 0x02, 0x01, 0x1c, 0x03, 0x01, 0x1c, 0x03,
+  0x01, 0x1c, 0x03, 0x01, 0x1c, 0x03, 0x01, 0x1c, 0x03, 0x01, 0x1c, 0x03,
+  0x01, 0x1c, 0x03, 0x01, 0x1c, 0x03, 0x01, 0x1c, 0x03, 0x01, 0x1c, 0x03,
+  0x01, 0x1c, 0x03, 0x01, 0x1c, 0x03, 0x01, 0x1c, 0x03, 0x01, 0x1c, 0x03,
+  0x01, 0x1c, 0x03, 0x01, 0x1c, 0x03, 0x01, 0x1c, 0x03, 0x01, 0x1c, 0x03,
+  0x01, 0x1c, 0x03, 0x01, 0x1c, 0x03, 0x01, 0x1c, 0x03, 0x01, 0x1c, 0x03,
+  0x01, 0x1c, 0x03, 0x01, 0x1c, 0x03, 0x03, 0x1a, 0x04, 0x03, 0x1b, 0x04,
+  0x05, 0x1b, 0x04, 0x05, 0x1b, 0x04, 0x03, 0x1b, 0x03, 0x03, 0x1b, 0x04,
+  0x01, 0x1d, 0x02, 0x01, 0x1d, 0x02, 0x02, 0x1d, 0x05, 0x04, 0x1c, 0x06,
+  0x09, 0x1c, 0x09, 0x09, 0x17, 0x09, 0x02, 0x0f, 0x02, 0x00, 0x08, 0x00,
+  0x02, 0x05, 0x02, 0x05, 0x04, 0x04, 0x03, 0x02, 0x02, 0x02, 0x02, 0x02,
+  0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+  0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03,
+  0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02,
+  0x05, 0x05, 0x05, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02,
+  0x08, 0x08, 0x08, 0x0b, 0x0b, 0x0b, 0x0a, 0x0a, 0x0a, 0x05, 0x05, 0x05,
+  0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x02, 0x00, 0x01, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x01, 0x00,
+  0x00, 0x03, 0x00, 0x01, 0x0b, 0x01, 0x06, 0x17, 0x05, 0x01, 0x19, 0x02,
+  0x00, 0x19, 0x01, 0x02, 0x1b, 0x01, 0x05, 0x1c, 0x04, 0x05, 0x1c, 0x04,
+  0x04, 0x1b, 0x03, 0x04, 0x1c, 0x04, 0x02, 0x1a, 0x02, 0x02, 0x1a, 0x02,
+  0x02, 0x1a, 0x02, 0x02, 0x1a, 0x02, 0x02, 0x1a, 0x02, 0x02, 0x1a, 0x02,
+  0x02, 0x1a, 0x02, 0x02, 0x1a, 0x02, 0x03, 0x1a, 0x02, 0x01, 0x1b, 0x02,
+  0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02,
+  0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02, 0x01, 0x1c, 0x02,
+  0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02,
+  0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02,
+  0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02,
+  0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02,
+  0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02,
+  0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02, 0x01, 0x1c, 0x02, 0x03, 0x1a, 0x05,
+  0x02, 0x1a, 0x05, 0x04, 0x1a, 0x05, 0x04, 0x1a, 0x05, 0x02, 0x1a, 0x03,
+  0x03, 0x1a, 0x03, 0x02, 0x1c, 0x01, 0x02, 0x1c, 0x01, 0x03, 0x1d, 0x04,
+  0x04, 0x1c, 0x05, 0x09, 0x1c, 0x08, 0x09, 0x17, 0x08, 0x02, 0x0e, 0x02,
+  0x00, 0x07, 0x00, 0x01, 0x05, 0x02, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02,
+  0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+  0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01,
+  0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01,
+  0x03, 0x03, 0x03, 0x06, 0x06, 0x06, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01,
+  0x02, 0x02, 0x02, 0x09, 0x09, 0x09, 0x0c, 0x0c, 0x0c, 0x0b, 0x0b, 0x0b,
+  0x07, 0x07, 0x07, 0x01, 0x01, 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, 0x01, 0x00,
+  0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00,
+  0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01,
+  0x00, 0x01, 0x00, 0x00, 0x03, 0x00, 0x01, 0x0b, 0x01, 0x06, 0x17, 0x06,
+  0x01, 0x18, 0x02, 0x00, 0x17, 0x00, 0x01, 0x1a, 0x01, 0x04, 0x1b, 0x04,
+  0x04, 0x1b, 0x04, 0x03, 0x1a, 0x03, 0x03, 0x1a, 0x03, 0x02, 0x19, 0x02,
+  0x02, 0x19, 0x02, 0x02, 0x19, 0x02, 0x02, 0x19, 0x02, 0x02, 0x19, 0x02,
+  0x02, 0x19, 0x02, 0x02, 0x19, 0x02, 0x02, 0x19, 0x02, 0x02, 0x19, 0x02,
+  0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02,
+  0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02,
+  0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02,
+  0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02,
+  0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02,
+  0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02,
+  0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02,
+  0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02,
+  0x03, 0x19, 0x05, 0x02, 0x1a, 0x05, 0x02, 0x1a, 0x05, 0x02, 0x1a, 0x05,
+  0x02, 0x1a, 0x03, 0x03, 0x19, 0x03, 0x02, 0x1b, 0x01, 0x02, 0x1a, 0x01,
+  0x03, 0x1b, 0x04, 0x03, 0x1a, 0x05, 0x09, 0x1b, 0x08, 0x09, 0x16, 0x08,
+  0x02, 0x0e, 0x02, 0x00, 0x07, 0x00, 0x01, 0x04, 0x01, 0x03, 0x03, 0x03,
+  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+  0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02,
+  0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x06, 0x06, 0x06, 0x03, 0x03, 0x03,
+  0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x09, 0x09, 0x09, 0x0d, 0x0d, 0x0d,
+  0x0c, 0x0c, 0x0c, 0x08, 0x08, 0x08, 0x01, 0x01, 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, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x02, 0x00, 0x01,
+  0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x02, 0x01, 0x00, 0x01, 0x00, 0x00, 0x03, 0x00, 0x01, 0x0b, 0x01,
+  0x06, 0x16, 0x05, 0x01, 0x17, 0x02, 0x00, 0x16, 0x00, 0x01, 0x19, 0x01,
+  0x03, 0x1a, 0x03, 0x03, 0x1a, 0x03, 0x02, 0x19, 0x02, 0x03, 0x1a, 0x03,
+  0x03, 0x19, 0x03, 0x03, 0x19, 0x03, 0x03, 0x19, 0x03, 0x03, 0x19, 0x03,
+  0x03, 0x19, 0x03, 0x03, 0x19, 0x03, 0x03, 0x19, 0x03, 0x03, 0x19, 0x03,
+  0x03, 0x19, 0x03, 0x02, 0x1a, 0x03, 0x02, 0x1a, 0x03, 0x02, 0x1a, 0x03,
+  0x02, 0x1a, 0x03, 0x02, 0x1a, 0x03, 0x02, 0x1a, 0x03, 0x02, 0x1a, 0x03,
+  0x02, 0x1a, 0x03, 0x02, 0x1a, 0x02, 0x02, 0x1a, 0x02, 0x02, 0x1a, 0x02,
+  0x02, 0x1a, 0x02, 0x02, 0x1a, 0x02, 0x02, 0x1a, 0x02, 0x02, 0x1a, 0x02,
+  0x02, 0x1a, 0x02, 0x02, 0x1a, 0x02, 0x02, 0x1a, 0x02, 0x02, 0x1a, 0x02,
+  0x02, 0x1a, 0x02, 0x02, 0x1a, 0x02, 0x02, 0x1a, 0x02, 0x02, 0x1a, 0x02,
+  0x02, 0x1a, 0x02, 0x02, 0x1a, 0x02, 0x02, 0x1a, 0x02, 0x02, 0x1a, 0x02,
+  0x02, 0x1a, 0x02, 0x02, 0x1a, 0x02, 0x02, 0x1a, 0x02, 0x02, 0x1a, 0x02,
+  0x02, 0x1a, 0x02, 0x03, 0x19, 0x04, 0x02, 0x19, 0x04, 0x02, 0x19, 0x04,
+  0x02, 0x19, 0x04, 0x02, 0x19, 0x02, 0x03, 0x19, 0x03, 0x01, 0x1a, 0x02,
+  0x01, 0x1a, 0x02, 0x02, 0x1a, 0x04, 0x03, 0x19, 0x04, 0x07, 0x1b, 0x08,
+  0x08, 0x16, 0x08, 0x02, 0x0e, 0x01, 0x00, 0x07, 0x00, 0x01, 0x04, 0x01,
+  0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02,
+  0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x05, 0x05, 0x05,
+  0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x08, 0x08, 0x08,
+  0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x07, 0x07, 0x07, 0x01, 0x01, 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, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01,
+  0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x01, 0x00, 0x00, 0x03, 0x00,
+  0x01, 0x0a, 0x01, 0x06, 0x16, 0x04, 0x01, 0x17, 0x01, 0x00, 0x16, 0x00,
+  0x02, 0x18, 0x01, 0x03, 0x19, 0x03, 0x03, 0x19, 0x03, 0x03, 0x18, 0x02,
+  0x03, 0x18, 0x03, 0x04, 0x19, 0x04, 0x04, 0x19, 0x04, 0x04, 0x19, 0x04,
+  0x04, 0x19, 0x04, 0x04, 0x19, 0x04, 0x04, 0x19, 0x04, 0x04, 0x19, 0x04,
+  0x04, 0x19, 0x04, 0x04, 0x19, 0x04, 0x03, 0x1a, 0x04, 0x03, 0x1a, 0x04,
+  0x03, 0x1a, 0x04, 0x03, 0x1a, 0x04, 0x03, 0x1a, 0x04, 0x03, 0x1a, 0x04,
+  0x03, 0x1a, 0x04, 0x03, 0x1a, 0x04, 0x03, 0x18, 0x02, 0x03, 0x19, 0x03,
+  0x03, 0x19, 0x03, 0x03, 0x19, 0x03, 0x03, 0x19, 0x03, 0x03, 0x19, 0x03,
+  0x03, 0x19, 0x03, 0x03, 0x19, 0x03, 0x03, 0x19, 0x03, 0x03, 0x19, 0x03,
+  0x03, 0x19, 0x03, 0x03, 0x19, 0x03, 0x03, 0x19, 0x03, 0x03, 0x19, 0x03,
+  0x03, 0x19, 0x03, 0x03, 0x19, 0x03, 0x03, 0x19, 0x03, 0x03, 0x19, 0x03,
+  0x03, 0x19, 0x03, 0x03, 0x19, 0x03, 0x03, 0x19, 0x03, 0x03, 0x19, 0x03,
+  0x03, 0x19, 0x03, 0x03, 0x19, 0x03, 0x03, 0x18, 0x03, 0x03, 0x19, 0x03,
+  0x03, 0x19, 0x03, 0x03, 0x19, 0x03, 0x03, 0x19, 0x03, 0x03, 0x18, 0x03,
+  0x01, 0x1a, 0x03, 0x01, 0x19, 0x03, 0x01, 0x1a, 0x03, 0x03, 0x19, 0x04,
+  0x06, 0x19, 0x07, 0x07, 0x15, 0x07, 0x02, 0x0d, 0x01, 0x00, 0x08, 0x00,
+  0x00, 0x04, 0x02, 0x02, 0x03, 0x03, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02,
+  0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+  0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03,
+  0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03,
+  0x04, 0x04, 0x04, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+  0x07, 0x07, 0x07, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x07, 0x07, 0x07,
+  0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x00, 0x01, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x02, 0x00, 0x01, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x01, 0x00,
+  0x00, 0x03, 0x00, 0x01, 0x0a, 0x01, 0x06, 0x14, 0x04, 0x01, 0x15, 0x01,
+  0x00, 0x15, 0x00, 0x02, 0x17, 0x02, 0x03, 0x17, 0x03, 0x02, 0x17, 0x03,
+  0x03, 0x17, 0x03, 0x02, 0x16, 0x03, 0x04, 0x18, 0x05, 0x04, 0x18, 0x05,
+  0x04, 0x18, 0x05, 0x04, 0x18, 0x05, 0x04, 0x18, 0x05, 0x04, 0x18, 0x05,
+  0x04, 0x18, 0x05, 0x04, 0x18, 0x05, 0x04, 0x18, 0x05, 0x04, 0x18, 0x05,
+  0x04, 0x18, 0x05, 0x04, 0x18, 0x05, 0x04, 0x18, 0x05, 0x04, 0x18, 0x05,
+  0x04, 0x18, 0x05, 0x04, 0x18, 0x05, 0x04, 0x18, 0x05, 0x03, 0x16, 0x03,
+  0x03, 0x17, 0x03, 0x03, 0x17, 0x03, 0x03, 0x17, 0x03, 0x03, 0x17, 0x03,
+  0x03, 0x17, 0x03, 0x03, 0x17, 0x03, 0x03, 0x17, 0x03, 0x03, 0x17, 0x03,
+  0x03, 0x17, 0x03, 0x03, 0x17, 0x03, 0x03, 0x17, 0x03, 0x03, 0x17, 0x03,
+  0x03, 0x17, 0x03, 0x03, 0x17, 0x03, 0x03, 0x17, 0x03, 0x03, 0x17, 0x03,
+  0x03, 0x17, 0x03, 0x03, 0x17, 0x03, 0x03, 0x17, 0x03, 0x03, 0x17, 0x03,
+  0x03, 0x17, 0x03, 0x03, 0x17, 0x03, 0x03, 0x17, 0x03, 0x02, 0x17, 0x02,
+  0x02, 0x17, 0x02, 0x03, 0x17, 0x02, 0x03, 0x17, 0x02, 0x03, 0x17, 0x03,
+  0x03, 0x17, 0x03, 0x01, 0x18, 0x03, 0x01, 0x18, 0x03, 0x01, 0x18, 0x02,
+  0x03, 0x17, 0x03, 0x05, 0x18, 0x07, 0x06, 0x15, 0x07, 0x02, 0x0d, 0x01,
+  0x00, 0x08, 0x00, 0x00, 0x04, 0x02, 0x02, 0x02, 0x03, 0x01, 0x01, 0x01,
+  0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+  0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01,
+  0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00,
+  0x01, 0x01, 0x01, 0x05, 0x05, 0x05, 0x08, 0x08, 0x08, 0x09, 0x09, 0x09,
+  0x06, 0x06, 0x06, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+  0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00,
+  0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01,
+  0x00, 0x01, 0x00, 0x00, 0x03, 0x00, 0x01, 0x0a, 0x01, 0x04, 0x13, 0x05,
+  0x01, 0x14, 0x01, 0x00, 0x14, 0x00, 0x02, 0x16, 0x02, 0x03, 0x16, 0x03,
+  0x03, 0x16, 0x03, 0x03, 0x16, 0x03, 0x03, 0x15, 0x03, 0x03, 0x16, 0x04,
+  0x03, 0x16, 0x04, 0x03, 0x16, 0x04, 0x03, 0x16, 0x04, 0x03, 0x16, 0x04,
+  0x03, 0x16, 0x04, 0x03, 0x16, 0x04, 0x03, 0x16, 0x04, 0x03, 0x16, 0x04,
+  0x03, 0x16, 0x04, 0x03, 0x16, 0x04, 0x03, 0x16, 0x04, 0x03, 0x16, 0x04,
+  0x03, 0x16, 0x04, 0x03, 0x16, 0x04, 0x03, 0x16, 0x04, 0x03, 0x16, 0x04,
+  0x02, 0x15, 0x02, 0x02, 0x16, 0x03, 0x02, 0x16, 0x03, 0x02, 0x16, 0x03,
+  0x02, 0x16, 0x03, 0x02, 0x16, 0x03, 0x02, 0x16, 0x03, 0x02, 0x16, 0x03,
+  0x02, 0x16, 0x03, 0x02, 0x16, 0x03, 0x02, 0x16, 0x03, 0x02, 0x16, 0x03,
+  0x02, 0x16, 0x03, 0x02, 0x16, 0x03, 0x02, 0x16, 0x03, 0x02, 0x16, 0x03,
+  0x02, 0x16, 0x03, 0x02, 0x16, 0x03, 0x02, 0x16, 0x03, 0x02, 0x16, 0x03,
+  0x02, 0x16, 0x03, 0x02, 0x16, 0x03, 0x02, 0x16, 0x03, 0x02, 0x16, 0x03,
+  0x01, 0x16, 0x01, 0x01, 0x16, 0x01, 0x02, 0x16, 0x03, 0x02, 0x16, 0x03,
+  0x02, 0x16, 0x03, 0x02, 0x16, 0x03, 0x01, 0x16, 0x02, 0x01, 0x16, 0x02,
+  0x00, 0x17, 0x01, 0x02, 0x16, 0x02, 0x06, 0x17, 0x06, 0x06, 0x14, 0x07,
+  0x01, 0x0c, 0x01, 0x00, 0x07, 0x00, 0x00, 0x04, 0x02, 0x02, 0x03, 0x03,
+  0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+  0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+  0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01,
+  0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x04, 0x04, 0x04, 0x03, 0x03, 0x03,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x05, 0x05, 0x05,
+  0x05, 0x05, 0x05, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 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, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x02, 0x00, 0x01,
+  0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x02, 0x01, 0x00, 0x01, 0x00, 0x00, 0x03, 0x00, 0x01, 0x09, 0x01,
+  0x03, 0x11, 0x06, 0x01, 0x12, 0x01, 0x00, 0x12, 0x00, 0x02, 0x14, 0x03,
+  0x03, 0x14, 0x04, 0x03, 0x14, 0x04, 0x03, 0x14, 0x04, 0x03, 0x14, 0x04,
+  0x02, 0x14, 0x04, 0x02, 0x14, 0x04, 0x02, 0x14, 0x04, 0x02, 0x14, 0x04,
+  0x02, 0x14, 0x04, 0x02, 0x14, 0x04, 0x02, 0x14, 0x04, 0x02, 0x14, 0x04,
+  0x02, 0x14, 0x04, 0x02, 0x14, 0x04, 0x02, 0x14, 0x04, 0x02, 0x14, 0x04,
+  0x02, 0x14, 0x04, 0x02, 0x14, 0x04, 0x02, 0x14, 0x04, 0x02, 0x14, 0x04,
+  0x03, 0x14, 0x04, 0x01, 0x14, 0x02, 0x01, 0x14, 0x03, 0x01, 0x14, 0x03,
+  0x01, 0x14, 0x03, 0x01, 0x14, 0x03, 0x01, 0x14, 0x03, 0x01, 0x14, 0x03,
+  0x01, 0x14, 0x03, 0x01, 0x14, 0x03, 0x01, 0x14, 0x03, 0x01, 0x14, 0x03,
+  0x01, 0x14, 0x03, 0x01, 0x14, 0x03, 0x01, 0x14, 0x03, 0x01, 0x14, 0x03,
+  0x01, 0x14, 0x03, 0x01, 0x14, 0x03, 0x01, 0x14, 0x03, 0x01, 0x14, 0x03,
+  0x01, 0x14, 0x03, 0x01, 0x14, 0x03, 0x01, 0x14, 0x03, 0x01, 0x14, 0x03,
+  0x02, 0x14, 0x03, 0x00, 0x14, 0x01, 0x00, 0x14, 0x01, 0x02, 0x14, 0x03,
+  0x01, 0x14, 0x03, 0x01, 0x14, 0x03, 0x01, 0x14, 0x03, 0x02, 0x14, 0x01,
+  0x02, 0x14, 0x02, 0x00, 0x16, 0x00, 0x02, 0x15, 0x02, 0x05, 0x16, 0x06,
+  0x06, 0x13, 0x07, 0x01, 0x0c, 0x01, 0x00, 0x06, 0x00, 0x00, 0x03, 0x02,
+  0x02, 0x03, 0x03, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+  0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+  0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02,
+  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03,
+  0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 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, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01,
+  0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x01, 0x00, 0x00, 0x03, 0x00,
+  0x01, 0x09, 0x01, 0x03, 0x11, 0x06, 0x01, 0x11, 0x01, 0x00, 0x11, 0x00,
+  0x02, 0x14, 0x02, 0x03, 0x14, 0x04, 0x03, 0x14, 0x04, 0x02, 0x14, 0x03,
+  0x03, 0x14, 0x04, 0x02, 0x14, 0x03, 0x02, 0x14, 0x03, 0x02, 0x14, 0x03,
+  0x02, 0x14, 0x03, 0x02, 0x14, 0x03, 0x02, 0x14, 0x03, 0x02, 0x14, 0x03,
+  0x02, 0x14, 0x03, 0x02, 0x14, 0x03, 0x02, 0x14, 0x03, 0x02, 0x14, 0x03,
+  0x02, 0x14, 0x03, 0x02, 0x14, 0x03, 0x02, 0x14, 0x03, 0x02, 0x14, 0x03,
+  0x02, 0x14, 0x03, 0x03, 0x14, 0x03, 0x02, 0x14, 0x02, 0x02, 0x14, 0x03,
+  0x02, 0x14, 0x03, 0x02, 0x14, 0x03, 0x02, 0x14, 0x03, 0x02, 0x14, 0x03,
+  0x02, 0x14, 0x03, 0x02, 0x14, 0x03, 0x02, 0x14, 0x03, 0x02, 0x14, 0x03,
+  0x02, 0x14, 0x03, 0x02, 0x14, 0x03, 0x02, 0x14, 0x03, 0x02, 0x14, 0x03,
+  0x02, 0x14, 0x03, 0x02, 0x14, 0x03, 0x02, 0x14, 0x03, 0x02, 0x14, 0x03,
+  0x02, 0x14, 0x03, 0x02, 0x14, 0x03, 0x02, 0x14, 0x03, 0x02, 0x14, 0x03,
+  0x02, 0x14, 0x03, 0x02, 0x14, 0x03, 0x00, 0x14, 0x02, 0x00, 0x14, 0x02,
+  0x02, 0x14, 0x03, 0x02, 0x14, 0x03, 0x02, 0x14, 0x03, 0x02, 0x14, 0x03,
+  0x02, 0x14, 0x01, 0x02, 0x14, 0x02, 0x00, 0x15, 0x01, 0x01, 0x14, 0x02,
+  0x05, 0x15, 0x06, 0x06, 0x12, 0x07, 0x01, 0x0b, 0x01, 0x00, 0x06, 0x00,
+  0x00, 0x03, 0x02, 0x02, 0x03, 0x03, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02,
+  0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+  0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01,
+  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+  0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 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, 0x01, 0x00, 0x00, 0x01, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x02, 0x00, 0x01, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x01, 0x00,
+  0x00, 0x03, 0x00, 0x01, 0x09, 0x01, 0x03, 0x11, 0x06, 0x01, 0x11, 0x01,
+  0x00, 0x11, 0x00, 0x02, 0x13, 0x02, 0x03, 0x13, 0x03, 0x03, 0x13, 0x03,
+  0x02, 0x13, 0x02, 0x03, 0x13, 0x03, 0x03, 0x13, 0x03, 0x03, 0x13, 0x03,
+  0x03, 0x13, 0x03, 0x03, 0x13, 0x03, 0x03, 0x13, 0x03, 0x03, 0x13, 0x03,
+  0x03, 0x13, 0x03, 0x03, 0x13, 0x03, 0x03, 0x13, 0x03, 0x03, 0x13, 0x03,
+  0x03, 0x13, 0x03, 0x03, 0x13, 0x03, 0x03, 0x13, 0x03, 0x03, 0x13, 0x03,
+  0x03, 0x13, 0x03, 0x03, 0x13, 0x03, 0x03, 0x13, 0x03, 0x03, 0x13, 0x03,
+  0x03, 0x13, 0x03, 0x03, 0x13, 0x03, 0x03, 0x13, 0x03, 0x03, 0x13, 0x03,
+  0x03, 0x13, 0x03, 0x03, 0x13, 0x03, 0x03, 0x13, 0x03, 0x03, 0x13, 0x03,
+  0x03, 0x13, 0x03, 0x03, 0x13, 0x03, 0x03, 0x13, 0x03, 0x03, 0x13, 0x03,
+  0x03, 0x13, 0x03, 0x03, 0x13, 0x03, 0x03, 0x13, 0x03, 0x03, 0x13, 0x03,
+  0x03, 0x13, 0x03, 0x03, 0x13, 0x03, 0x03, 0x13, 0x03, 0x03, 0x13, 0x03,
+  0x03, 0x13, 0x03, 0x03, 0x13, 0x03, 0x03, 0x13, 0x03, 0x00, 0x13, 0x03,
+  0x00, 0x13, 0x03, 0x03, 0x13, 0x02, 0x03, 0x13, 0x02, 0x03, 0x13, 0x02,
+  0x03, 0x13, 0x03, 0x03, 0x14, 0x02, 0x03, 0x14, 0x02, 0x01, 0x15, 0x02,
+  0x02, 0x14, 0x02, 0x04, 0x14, 0x04, 0x06, 0x12, 0x06, 0x01, 0x0c, 0x01,
+  0x00, 0x06, 0x00, 0x01, 0x04, 0x02, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02,
+  0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+  0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+  0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00,
+  0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+  0x00, 0x00, 0x00, 0x01, 0x01, 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, 0x01, 0x00,
+  0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00,
+  0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01,
+  0x00, 0x01, 0x00, 0x00, 0x03, 0x00, 0x01, 0x09, 0x02, 0x03, 0x10, 0x06,
+  0x01, 0x10, 0x01, 0x00, 0x10, 0x00, 0x02, 0x12, 0x01, 0x03, 0x13, 0x03,
+  0x03, 0x13, 0x03, 0x01, 0x12, 0x02, 0x02, 0x12, 0x03, 0x03, 0x13, 0x02,
+  0x03, 0x13, 0x02, 0x03, 0x13, 0x02, 0x03, 0x13, 0x02, 0x03, 0x13, 0x02,
+  0x03, 0x13, 0x02, 0x03, 0x13, 0x02, 0x03, 0x13, 0x02, 0x03, 0x13, 0x02,
+  0x03, 0x13, 0x02, 0x03, 0x13, 0x02, 0x03, 0x13, 0x02, 0x03, 0x13, 0x02,
+  0x03, 0x13, 0x02, 0x03, 0x13, 0x02, 0x03, 0x13, 0x02, 0x03, 0x13, 0x02,
+  0x03, 0x13, 0x03, 0x03, 0x13, 0x03, 0x03, 0x13, 0x03, 0x03, 0x13, 0x03,
+  0x03, 0x13, 0x03, 0x03, 0x13, 0x03, 0x03, 0x13, 0x03, 0x03, 0x13, 0x03,
+  0x03, 0x13, 0x03, 0x03, 0x13, 0x03, 0x03, 0x13, 0x03, 0x03, 0x13, 0x03,
+  0x03, 0x13, 0x03, 0x03, 0x13, 0x03, 0x03, 0x13, 0x03, 0x03, 0x13, 0x03,
+  0x03, 0x13, 0x03, 0x03, 0x13, 0x03, 0x03, 0x13, 0x03, 0x03, 0x13, 0x03,
+  0x03, 0x13, 0x03, 0x03, 0x13, 0x03, 0x03, 0x13, 0x03, 0x03, 0x13, 0x03,
+  0x00, 0x13, 0x03, 0x00, 0x13, 0x03, 0x03, 0x12, 0x03, 0x03, 0x12, 0x03,
+  0x04, 0x12, 0x03, 0x04, 0x12, 0x03, 0x03, 0x13, 0x02, 0x03, 0x13, 0x02,
+  0x01, 0x13, 0x02, 0x02, 0x12, 0x01, 0x03, 0x13, 0x03, 0x05, 0x11, 0x05,
+  0x01, 0x0c, 0x01, 0x00, 0x05, 0x00, 0x01, 0x04, 0x02, 0x03, 0x03, 0x03,
+  0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+  0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+  0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01,
+  0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 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, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x02, 0x00, 0x01,
+  0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x02, 0x01, 0x00, 0x01, 0x00, 0x00, 0x03, 0x00, 0x01, 0x0a, 0x02,
+  0x03, 0x10, 0x04, 0x01, 0x0f, 0x01, 0x00, 0x0f, 0x00, 0x01, 0x11, 0x02,
+  0x02, 0x12, 0x03, 0x02, 0x12, 0x03, 0x00, 0x11, 0x02, 0x01, 0x11, 0x02,
+  0x02, 0x12, 0x03, 0x02, 0x12, 0x03, 0x02, 0x12, 0x03, 0x02, 0x12, 0x03,
+  0x02, 0x12, 0x03, 0x02, 0x12, 0x03, 0x02, 0x12, 0x03, 0x02, 0x12, 0x03,
+  0x02, 0x12, 0x03, 0x02, 0x12, 0x03, 0x02, 0x12, 0x03, 0x02, 0x12, 0x03,
+  0x02, 0x12, 0x03, 0x02, 0x12, 0x03, 0x02, 0x12, 0x03, 0x02, 0x12, 0x03,
+  0x02, 0x12, 0x03, 0x02, 0x12, 0x03, 0x02, 0x12, 0x03, 0x02, 0x12, 0x03,
+  0x02, 0x12, 0x03, 0x02, 0x12, 0x03, 0x02, 0x12, 0x03, 0x02, 0x12, 0x03,
+  0x02, 0x12, 0x03, 0x02, 0x12, 0x03, 0x02, 0x12, 0x03, 0x02, 0x12, 0x03,
+  0x02, 0x12, 0x03, 0x02, 0x12, 0x03, 0x02, 0x12, 0x03, 0x02, 0x12, 0x03,
+  0x02, 0x12, 0x03, 0x02, 0x12, 0x03, 0x02, 0x12, 0x03, 0x02, 0x12, 0x03,
+  0x02, 0x12, 0x03, 0x02, 0x12, 0x03, 0x02, 0x12, 0x03, 0x02, 0x12, 0x03,
+  0x02, 0x12, 0x03, 0x01, 0x12, 0x03, 0x01, 0x12, 0x03, 0x02, 0x11, 0x03,
+  0x02, 0x11, 0x03, 0x03, 0x11, 0x03, 0x03, 0x11, 0x03, 0x02, 0x12, 0x01,
+  0x02, 0x12, 0x01, 0x00, 0x12, 0x01, 0x01, 0x11, 0x01, 0x03, 0x12, 0x04,
+  0x04, 0x10, 0x05, 0x01, 0x0b, 0x01, 0x00, 0x04, 0x00, 0x00, 0x03, 0x01,
+  0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03,
+  0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 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, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01,
+  0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x01, 0x00, 0x00, 0x03, 0x00,
+  0x01, 0x0a, 0x02, 0x03, 0x0f, 0x03, 0x01, 0x0e, 0x01, 0x00, 0x0e, 0x00,
+  0x01, 0x0f, 0x02, 0x02, 0x11, 0x03, 0x02, 0x11, 0x03, 0x00, 0x0f, 0x02,
+  0x00, 0x0f, 0x01, 0x02, 0x11, 0x03, 0x02, 0x11, 0x03, 0x02, 0x11, 0x03,
+  0x02, 0x11, 0x03, 0x02, 0x11, 0x03, 0x02, 0x11, 0x03, 0x02, 0x11, 0x03,
+  0x02, 0x11, 0x03, 0x02, 0x11, 0x03, 0x02, 0x11, 0x03, 0x02, 0x11, 0x03,
+  0x02, 0x11, 0x03, 0x02, 0x11, 0x03, 0x02, 0x11, 0x03, 0x02, 0x11, 0x03,
+  0x02, 0x11, 0x03, 0x02, 0x11, 0x03, 0x02, 0x11, 0x03, 0x02, 0x11, 0x03,
+  0x02, 0x11, 0x03, 0x02, 0x11, 0x03, 0x02, 0x11, 0x03, 0x02, 0x11, 0x03,
+  0x02, 0x11, 0x03, 0x02, 0x11, 0x03, 0x02, 0x11, 0x03, 0x02, 0x11, 0x03,
+  0x02, 0x11, 0x03, 0x02, 0x11, 0x03, 0x02, 0x11, 0x03, 0x02, 0x11, 0x03,
+  0x02, 0x11, 0x03, 0x02, 0x11, 0x03, 0x02, 0x11, 0x03, 0x02, 0x11, 0x03,
+  0x02, 0x11, 0x03, 0x02, 0x11, 0x03, 0x02, 0x11, 0x03, 0x02, 0x11, 0x03,
+  0x02, 0x11, 0x03, 0x02, 0x11, 0x03, 0x01, 0x11, 0x03, 0x01, 0x11, 0x03,
+  0x02, 0x0f, 0x04, 0x02, 0x0f, 0x04, 0x02, 0x0f, 0x04, 0x02, 0x0f, 0x03,
+  0x02, 0x11, 0x01, 0x02, 0x11, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0x01,
+  0x03, 0x12, 0x03, 0x03, 0x10, 0x03, 0x01, 0x0a, 0x01, 0x00, 0x03, 0x00,
+  0x00, 0x02, 0x01, 0x01, 0x01, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+  0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02,
+  0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+  0x01, 0x01, 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, 0x01, 0x00, 0x00, 0x01, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x02, 0x00, 0x01, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x01, 0x00,
+  0x00, 0x03, 0x00, 0x01, 0x0a, 0x02, 0x03, 0x0e, 0x03, 0x01, 0x0e, 0x01,
+  0x00, 0x0d, 0x00, 0x01, 0x0e, 0x01, 0x02, 0x10, 0x03, 0x01, 0x10, 0x02,
+  0x00, 0x0e, 0x01, 0x00, 0x0f, 0x01, 0x01, 0x10, 0x02, 0x01, 0x10, 0x02,
+  0x01, 0x10, 0x02, 0x01, 0x10, 0x02, 0x01, 0x10, 0x02, 0x01, 0x10, 0x02,
+  0x01, 0x10, 0x02, 0x01, 0x10, 0x02, 0x01, 0x10, 0x02, 0x01, 0x10, 0x02,
+  0x01, 0x10, 0x02, 0x01, 0x10, 0x02, 0x01, 0x10, 0x02, 0x01, 0x10, 0x02,
+  0x01, 0x10, 0x02, 0x01, 0x10, 0x02, 0x01, 0x10, 0x02, 0x01, 0x10, 0x02,
+  0x01, 0x10, 0x02, 0x01, 0x10, 0x02, 0x01, 0x10, 0x02, 0x01, 0x10, 0x02,
+  0x01, 0x10, 0x02, 0x01, 0x10, 0x02, 0x01, 0x10, 0x02, 0x01, 0x10, 0x02,
+  0x01, 0x10, 0x02, 0x01, 0x10, 0x02, 0x01, 0x10, 0x02, 0x01, 0x10, 0x02,
+  0x01, 0x10, 0x02, 0x01, 0x10, 0x02, 0x01, 0x10, 0x02, 0x01, 0x10, 0x02,
+  0x01, 0x10, 0x02, 0x01, 0x10, 0x02, 0x01, 0x10, 0x02, 0x01, 0x10, 0x02,
+  0x01, 0x10, 0x02, 0x01, 0x10, 0x02, 0x01, 0x10, 0x02, 0x01, 0x10, 0x02,
+  0x01, 0x10, 0x02, 0x01, 0x0f, 0x03, 0x01, 0x0f, 0x03, 0x01, 0x0e, 0x03,
+  0x01, 0x0e, 0x03, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x00, 0x10, 0x00,
+  0x00, 0x10, 0x00, 0x03, 0x11, 0x03, 0x04, 0x0f, 0x04, 0x01, 0x0a, 0x01,
+  0x00, 0x03, 0x00, 0x00, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+  0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00,
+  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 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, 0x01, 0x00,
+  0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00,
+  0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01,
+  0x00, 0x02, 0x00, 0x00, 0x03, 0x00, 0x01, 0x0a, 0x02, 0x02, 0x0e, 0x03,
+  0x00, 0x0e, 0x01, 0x00, 0x0d, 0x00, 0x00, 0x0e, 0x01, 0x01, 0x10, 0x03,
+  0x01, 0x10, 0x02, 0x00, 0x0e, 0x01, 0x00, 0x0f, 0x02, 0x01, 0x0f, 0x01,
+  0x01, 0x0f, 0x01, 0x01, 0x0f, 0x01, 0x01, 0x0f, 0x01, 0x01, 0x0f, 0x01,
+  0x01, 0x0f, 0x01, 0x01, 0x0f, 0x01, 0x01, 0x0f, 0x01, 0x01, 0x0f, 0x01,
+  0x01, 0x0f, 0x01, 0x01, 0x0f, 0x01, 0x01, 0x0f, 0x01, 0x01, 0x0f, 0x01,
+  0x01, 0x0f, 0x01, 0x01, 0x0f, 0x01, 0x01, 0x0f, 0x01, 0x01, 0x0f, 0x01,
+  0x01, 0x0f, 0x01, 0x01, 0x0f, 0x01, 0x01, 0x0f, 0x01, 0x01, 0x0f, 0x01,
+  0x01, 0x0f, 0x01, 0x01, 0x0f, 0x01, 0x01, 0x0f, 0x01, 0x01, 0x0f, 0x01,
+  0x01, 0x0f, 0x01, 0x01, 0x0f, 0x01, 0x01, 0x0f, 0x01, 0x01, 0x0f, 0x01,
+  0x01, 0x0f, 0x01, 0x01, 0x0f, 0x01, 0x01, 0x0f, 0x01, 0x01, 0x0f, 0x01,
+  0x01, 0x0f, 0x01, 0x01, 0x0f, 0x01, 0x01, 0x0f, 0x01, 0x01, 0x0f, 0x01,
+  0x01, 0x0f, 0x01, 0x01, 0x0f, 0x01, 0x01, 0x0f, 0x01, 0x01, 0x0f, 0x01,
+  0x00, 0x0f, 0x01, 0x00, 0x0f, 0x01, 0x01, 0x0e, 0x02, 0x01, 0x0e, 0x02,
+  0x01, 0x0e, 0x02, 0x01, 0x0e, 0x02, 0x01, 0x0f, 0x01, 0x01, 0x0f, 0x01,
+  0x00, 0x10, 0x01, 0x00, 0x0f, 0x00, 0x02, 0x11, 0x02, 0x04, 0x0f, 0x04,
+  0x01, 0x0a, 0x01, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x01, 0x02, 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, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x02, 0x00, 0x01,
+  0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x02, 0x01, 0x00, 0x02, 0x00, 0x00, 0x03, 0x00, 0x01, 0x09, 0x02,
+  0x02, 0x0d, 0x03, 0x00, 0x0e, 0x01, 0x00, 0x0c, 0x00, 0x00, 0x0d, 0x00,
+  0x01, 0x0f, 0x02, 0x00, 0x0f, 0x01, 0x00, 0x0e, 0x00, 0x00, 0x0e, 0x01,
+  0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00,
+  0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00,
+  0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00,
+  0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00,
+  0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00,
+  0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00,
+  0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00,
+  0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00,
+  0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00,
+  0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00,
+  0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x0e, 0x00,
+  0x00, 0x0e, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x0d, 0x01,
+  0x00, 0x0d, 0x01, 0x00, 0x0f, 0x01, 0x00, 0x0e, 0x00, 0x02, 0x10, 0x02,
+  0x04, 0x0f, 0x04, 0x01, 0x0a, 0x01, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00,
+  0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 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, 0x01, 0x01, 0x01, 0x01, 0x01,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03,
+  0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01,
+  0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00,
+  0x01, 0x08, 0x02, 0x01, 0x0c, 0x03, 0x00, 0x0e, 0x01, 0x00, 0x0c, 0x01,
+  0x00, 0x0d, 0x01, 0x01, 0x0f, 0x02, 0x00, 0x0e, 0x01, 0x00, 0x0d, 0x01,
+  0x00, 0x0e, 0x01, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00,
+  0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00,
+  0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00,
+  0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00,
+  0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00,
+  0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00,
+  0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00,
+  0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00,
+  0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00,
+  0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00,
+  0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x01, 0x00, 0x0c, 0x01,
+  0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00,
+  0x00, 0x0d, 0x01, 0x00, 0x0d, 0x01, 0x00, 0x0e, 0x01, 0x01, 0x0d, 0x01,
+  0x04, 0x0e, 0x02, 0x04, 0x0d, 0x04, 0x01, 0x08, 0x01, 0x00, 0x02, 0x00,
+  0x00, 0x02, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 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, 0x01, 0x01,
+  0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02,
+  0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 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,
+  0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00,
+  0x01, 0x01, 0x01, 0x01, 0x05, 0x02, 0x01, 0x0c, 0x02, 0x00, 0x0d, 0x02,
+  0x00, 0x0d, 0x02, 0x00, 0x0d, 0x02, 0x00, 0x0d, 0x02, 0x00, 0x0d, 0x02,
+  0x00, 0x0d, 0x02, 0x00, 0x0c, 0x01, 0x00, 0x0c, 0x01, 0x00, 0x0c, 0x01,
+  0x00, 0x0c, 0x01, 0x00, 0x0c, 0x01, 0x00, 0x0c, 0x01, 0x00, 0x0c, 0x01,
+  0x00, 0x0c, 0x01, 0x00, 0x0c, 0x01, 0x00, 0x0c, 0x01, 0x00, 0x0c, 0x01,
+  0x00, 0x0c, 0x01, 0x00, 0x0c, 0x01, 0x00, 0x0c, 0x01, 0x00, 0x0c, 0x01,
+  0x00, 0x0c, 0x01, 0x00, 0x0c, 0x01, 0x00, 0x0c, 0x01, 0x00, 0x0c, 0x01,
+  0x00, 0x0c, 0x01, 0x00, 0x0c, 0x01, 0x00, 0x0c, 0x01, 0x00, 0x0c, 0x01,
+  0x00, 0x0c, 0x01, 0x00, 0x0c, 0x01, 0x00, 0x0c, 0x01, 0x00, 0x0c, 0x01,
+  0x00, 0x0c, 0x01, 0x00, 0x0c, 0x01, 0x00, 0x0c, 0x01, 0x00, 0x0c, 0x01,
+  0x00, 0x0c, 0x01, 0x00, 0x0c, 0x01, 0x00, 0x0c, 0x01, 0x00, 0x0c, 0x01,
+  0x00, 0x0c, 0x01, 0x00, 0x0c, 0x01, 0x00, 0x0c, 0x01, 0x00, 0x0c, 0x01,
+  0x00, 0x0c, 0x01, 0x00, 0x0c, 0x01, 0x00, 0x0c, 0x01, 0x00, 0x0c, 0x02,
+  0x00, 0x0c, 0x02, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x01, 0x00, 0x0d, 0x00,
+  0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0d, 0x00, 0x01, 0x0c, 0x01,
+  0x02, 0x0c, 0x02, 0x05, 0x0d, 0x03, 0x03, 0x0b, 0x04, 0x00, 0x06, 0x01,
+  0x00, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 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, 0x01, 0x01, 0x01,
+  0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+  0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+  0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01,
+  0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x03, 0x02, 0x01, 0x0b, 0x01,
+  0x00, 0x0d, 0x02, 0x00, 0x0d, 0x02, 0x00, 0x0d, 0x02, 0x00, 0x0c, 0x02,
+  0x00, 0x0c, 0x02, 0x00, 0x0d, 0x02, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x01,
+  0x00, 0x0b, 0x01, 0x00, 0x0b, 0x01, 0x00, 0x0b, 0x01, 0x00, 0x0b, 0x01,
+  0x00, 0x0b, 0x01, 0x00, 0x0b, 0x01, 0x00, 0x0b, 0x01, 0x00, 0x0b, 0x01,
+  0x00, 0x0b, 0x01, 0x00, 0x0b, 0x01, 0x00, 0x0b, 0x01, 0x00, 0x0b, 0x01,
+  0x00, 0x0b, 0x01, 0x00, 0x0b, 0x01, 0x00, 0x0b, 0x01, 0x00, 0x0b, 0x01,
+  0x00, 0x0b, 0x01, 0x00, 0x0b, 0x01, 0x00, 0x0b, 0x01, 0x00, 0x0b, 0x01,
+  0x00, 0x0b, 0x01, 0x00, 0x0b, 0x01, 0x00, 0x0b, 0x01, 0x00, 0x0b, 0x01,
+  0x00, 0x0b, 0x01, 0x00, 0x0b, 0x01, 0x00, 0x0b, 0x01, 0x00, 0x0b, 0x01,
+  0x00, 0x0b, 0x01, 0x00, 0x0b, 0x01, 0x00, 0x0b, 0x01, 0x00, 0x0b, 0x01,
+  0x00, 0x0b, 0x01, 0x00, 0x0b, 0x01, 0x00, 0x0b, 0x01, 0x00, 0x0b, 0x01,
+  0x00, 0x0b, 0x01, 0x00, 0x0b, 0x01, 0x00, 0x0b, 0x01, 0x00, 0x0b, 0x01,
+  0x00, 0x0b, 0x02, 0x00, 0x0b, 0x02, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x01,
+  0x00, 0x0d, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0d, 0x00,
+  0x01, 0x0b, 0x01, 0x02, 0x0b, 0x03, 0x05, 0x0c, 0x04, 0x02, 0x09, 0x03,
+  0x00, 0x05, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 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,
+  0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+  0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+  0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x04, 0x02,
+  0x01, 0x0a, 0x01, 0x00, 0x0c, 0x01, 0x01, 0x0c, 0x01, 0x01, 0x0c, 0x01,
+  0x01, 0x0c, 0x01, 0x01, 0x0c, 0x01, 0x00, 0x0c, 0x01, 0x00, 0x0c, 0x00,
+  0x01, 0x0c, 0x01, 0x01, 0x0c, 0x01, 0x01, 0x0c, 0x01, 0x01, 0x0c, 0x01,
+  0x01, 0x0c, 0x01, 0x01, 0x0c, 0x01, 0x01, 0x0c, 0x01, 0x01, 0x0c, 0x01,
+  0x01, 0x0c, 0x01, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00,
+  0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00,
+  0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00,
+  0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00,
+  0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00,
+  0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00,
+  0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00,
+  0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00,
+  0x00, 0x0c, 0x00, 0x01, 0x0c, 0x02, 0x01, 0x0c, 0x02, 0x01, 0x0c, 0x01,
+  0x01, 0x0c, 0x01, 0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00,
+  0x00, 0x0d, 0x00, 0x00, 0x0c, 0x00, 0x01, 0x0c, 0x02, 0x04, 0x0c, 0x03,
+  0x02, 0x0a, 0x03, 0x00, 0x06, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x01, 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, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+  0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+  0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+  0x01, 0x01, 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, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01,
+  0x00, 0x04, 0x02, 0x01, 0x0a, 0x01, 0x00, 0x0c, 0x00, 0x01, 0x0c, 0x01,
+  0x01, 0x0c, 0x01, 0x01, 0x0c, 0x01, 0x01, 0x0c, 0x01, 0x00, 0x0c, 0x00,
+  0x00, 0x0c, 0x00, 0x01, 0x0c, 0x01, 0x01, 0x0c, 0x01, 0x01, 0x0c, 0x01,
+  0x01, 0x0c, 0x01, 0x01, 0x0c, 0x01, 0x01, 0x0c, 0x01, 0x01, 0x0c, 0x01,
+  0x01, 0x0c, 0x01, 0x01, 0x0c, 0x01, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00,
+  0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00,
+  0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00,
+  0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00,
+  0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00,
+  0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00,
+  0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00,
+  0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00,
+  0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x01, 0x0c, 0x02, 0x01, 0x0c, 0x02,
+  0x01, 0x0c, 0x01, 0x01, 0x0c, 0x01, 0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00,
+  0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x0c, 0x00, 0x01, 0x0c, 0x02,
+  0x03, 0x0c, 0x02, 0x02, 0x0a, 0x03, 0x00, 0x06, 0x01, 0x00, 0x01, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x01, 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, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02,
+  0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02,
+  0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+  0x00, 0x00, 0x00, 0x01, 0x01, 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,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+  0x01, 0x00, 0x01, 0x00, 0x04, 0x02, 0x01, 0x0a, 0x01, 0x00, 0x0c, 0x00,
+  0x01, 0x0c, 0x01, 0x01, 0x0c, 0x01, 0x01, 0x0c, 0x01, 0x01, 0x0c, 0x01,
+  0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x01, 0x0c, 0x01, 0x01, 0x0c, 0x01,
+  0x01, 0x0c, 0x01, 0x01, 0x0c, 0x01, 0x01, 0x0c, 0x01, 0x01, 0x0c, 0x01,
+  0x01, 0x0c, 0x01, 0x01, 0x0c, 0x01, 0x01, 0x0c, 0x01, 0x00, 0x0c, 0x00,
+  0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00,
+  0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00,
+  0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00,
+  0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00,
+  0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00,
+  0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00,
+  0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00,
+  0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x01, 0x0b, 0x01,
+  0x01, 0x0b, 0x01, 0x01, 0x0b, 0x01, 0x01, 0x0b, 0x01, 0x00, 0x0c, 0x00,
+  0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0b, 0x00,
+  0x00, 0x0c, 0x01, 0x02, 0x0b, 0x02, 0x01, 0x09, 0x02, 0x00, 0x05, 0x00,
+  0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 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, 0x01, 0x01, 0x01,
+  0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+  0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+  0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+  0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x04, 0x01, 0x01, 0x09, 0x00,
+  0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00,
+  0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00,
+  0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00,
+  0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00,
+  0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00,
+  0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00,
+  0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00,
+  0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00,
+  0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00,
+  0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00,
+  0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00,
+  0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00,
+  0x01, 0x0a, 0x01, 0x01, 0x0a, 0x01, 0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00,
+  0x00, 0x0c, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0c, 0x00,
+  0x00, 0x0a, 0x00, 0x00, 0x0b, 0x01, 0x02, 0x0a, 0x03, 0x01, 0x08, 0x02,
+  0x00, 0x04, 0x00, 0x00, 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, 0x00,
+  0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00,
+  0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01,
+  0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x04, 0x01,
+  0x01, 0x09, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00,
+  0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00,
+  0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00,
+  0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00,
+  0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00,
+  0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00,
+  0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00,
+  0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00,
+  0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00,
+  0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00,
+  0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00,
+  0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00,
+  0x00, 0x0b, 0x00, 0x01, 0x09, 0x00, 0x01, 0x09, 0x00, 0x00, 0x09, 0x00,
+  0x00, 0x09, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00,
+  0x00, 0x0b, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00, 0x01, 0x09, 0x02,
+  0x00, 0x07, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 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, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+  0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00,
+  0x01, 0x01, 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, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+  0x01, 0x04, 0x02, 0x01, 0x09, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00,
+  0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00,
+  0x00, 0x0b, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00,
+  0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00,
+  0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00,
+  0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00,
+  0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00,
+  0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00,
+  0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00,
+  0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00,
+  0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00,
+  0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00,
+  0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x01, 0x09, 0x00, 0x01, 0x09, 0x00,
+  0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00,
+  0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x09, 0x00, 0x00, 0x0a, 0x01,
+  0x01, 0x09, 0x02, 0x00, 0x07, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x01, 0x01, 0x01, 0x01, 0x01,
+  0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02,
+  0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+  0x01, 0x01, 0x01, 0x01, 0x01, 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,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+  0x01, 0x01, 0x02, 0x00, 0x04, 0x02, 0x01, 0x08, 0x01, 0x00, 0x0a, 0x00,
+  0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00,
+  0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00,
+  0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00,
+  0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00, 0x01, 0x0a, 0x00,
+  0x01, 0x0a, 0x00, 0x01, 0x0a, 0x00, 0x01, 0x0a, 0x00, 0x01, 0x0a, 0x00,
+  0x01, 0x0a, 0x00, 0x01, 0x0a, 0x00, 0x01, 0x0a, 0x00, 0x01, 0x0a, 0x00,
+  0x01, 0x0a, 0x00, 0x01, 0x0a, 0x00, 0x01, 0x0a, 0x00, 0x01, 0x0a, 0x00,
+  0x01, 0x0a, 0x00, 0x01, 0x0a, 0x00, 0x01, 0x0a, 0x00, 0x01, 0x0a, 0x00,
+  0x01, 0x0a, 0x00, 0x01, 0x0a, 0x00, 0x01, 0x0a, 0x00, 0x01, 0x0a, 0x00,
+  0x01, 0x0a, 0x00, 0x01, 0x0a, 0x00, 0x01, 0x0a, 0x00, 0x00, 0x0a, 0x00,
+  0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00,
+  0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x08, 0x01,
+  0x00, 0x08, 0x01, 0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00,
+  0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00,
+  0x01, 0x0a, 0x02, 0x02, 0x0a, 0x02, 0x01, 0x07, 0x02, 0x00, 0x03, 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, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
+  0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x01, 0x01, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+  0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x01, 0x04, 0x02, 0x01, 0x08, 0x01,
+  0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00,
+  0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x09, 0x00, 0x01, 0x09, 0x01,
+  0x01, 0x09, 0x01, 0x01, 0x09, 0x01, 0x01, 0x09, 0x01, 0x01, 0x09, 0x01,
+  0x01, 0x09, 0x01, 0x01, 0x09, 0x01, 0x01, 0x09, 0x01, 0x01, 0x09, 0x01,
+  0x01, 0x0a, 0x00, 0x01, 0x0a, 0x00, 0x01, 0x0a, 0x00, 0x01, 0x0a, 0x00,
+  0x01, 0x0a, 0x00, 0x01, 0x0a, 0x00, 0x01, 0x0a, 0x00, 0x01, 0x0a, 0x00,
+  0x01, 0x0a, 0x00, 0x01, 0x0a, 0x00, 0x01, 0x0a, 0x00, 0x01, 0x0a, 0x00,
+  0x01, 0x0a, 0x00, 0x01, 0x0a, 0x00, 0x01, 0x0a, 0x00, 0x01, 0x0a, 0x00,
+  0x01, 0x0a, 0x00, 0x01, 0x0a, 0x00, 0x01, 0x0a, 0x00, 0x01, 0x0a, 0x00,
+  0x01, 0x0a, 0x00, 0x01, 0x0a, 0x00, 0x01, 0x0a, 0x00, 0x01, 0x0a, 0x00,
+  0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00,
+  0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00,
+  0x01, 0x09, 0x01, 0x01, 0x09, 0x01, 0x01, 0x0a, 0x01, 0x01, 0x0a, 0x01,
+  0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01,
+  0x00, 0x0a, 0x00, 0x01, 0x0a, 0x02, 0x02, 0x0a, 0x02, 0x01, 0x07, 0x02,
+  0x00, 0x03, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 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,
+  0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+  0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03,
+  0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x01, 0x01, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x02, 0x02, 0x02, 0x03, 0x01,
+  0x00, 0x07, 0x00, 0x01, 0x09, 0x01, 0x01, 0x09, 0x01, 0x00, 0x09, 0x01,
+  0x00, 0x09, 0x01, 0x01, 0x09, 0x01, 0x01, 0x09, 0x01, 0x00, 0x08, 0x00,
+  0x01, 0x0a, 0x01, 0x01, 0x0a, 0x01, 0x01, 0x0a, 0x01, 0x01, 0x0a, 0x01,
+  0x01, 0x0a, 0x01, 0x01, 0x0a, 0x01, 0x01, 0x0a, 0x01, 0x01, 0x0a, 0x01,
+  0x01, 0x0a, 0x01, 0x00, 0x09, 0x00, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01,
+  0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01,
+  0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01,
+  0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01,
+  0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01,
+  0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01,
+  0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01,
+  0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01,
+  0x00, 0x09, 0x00, 0x01, 0x09, 0x02, 0x01, 0x09, 0x02, 0x01, 0x0a, 0x01,
+  0x01, 0x0a, 0x01, 0x01, 0x0a, 0x01, 0x01, 0x0a, 0x01, 0x01, 0x0a, 0x01,
+  0x01, 0x0a, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x01, 0x09, 0x02,
+  0x00, 0x07, 0x01, 0x00, 0x03, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02,
+  0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02,
+  0x01, 0x01, 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, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03,
+  0x03, 0x03, 0x01, 0x01, 0x06, 0x00, 0x01, 0x09, 0x01, 0x01, 0x09, 0x01,
+  0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x01, 0x09, 0x01, 0x01, 0x09, 0x01,
+  0x00, 0x08, 0x00, 0x02, 0x0a, 0x02, 0x02, 0x0a, 0x02, 0x02, 0x0a, 0x02,
+  0x02, 0x0a, 0x02, 0x02, 0x0a, 0x02, 0x02, 0x0a, 0x02, 0x02, 0x0a, 0x02,
+  0x02, 0x0a, 0x02, 0x02, 0x0a, 0x02, 0x00, 0x08, 0x00, 0x00, 0x09, 0x01,
+  0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01,
+  0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01,
+  0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01,
+  0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01,
+  0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01,
+  0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01,
+  0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01,
+  0x00, 0x09, 0x01, 0x00, 0x08, 0x00, 0x02, 0x0a, 0x02, 0x02, 0x0a, 0x02,
+  0x02, 0x0a, 0x02, 0x02, 0x0a, 0x02, 0x01, 0x0a, 0x02, 0x01, 0x0a, 0x02,
+  0x01, 0x0a, 0x02, 0x01, 0x0a, 0x02, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01,
+  0x01, 0x09, 0x02, 0x00, 0x07, 0x01, 0x00, 0x03, 0x01, 0x00, 0x02, 0x00,
+  0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+  0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01,
+  0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03,
+  0x02, 0x02, 0x02, 0x01, 0x01, 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,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02,
+  0x03, 0x03, 0x03, 0x03, 0x03, 0x02, 0x01, 0x06, 0x00, 0x01, 0x08, 0x01,
+  0x01, 0x08, 0x01, 0x01, 0x09, 0x01, 0x01, 0x09, 0x01, 0x01, 0x08, 0x01,
+  0x01, 0x08, 0x01, 0x01, 0x07, 0x00, 0x02, 0x09, 0x02, 0x02, 0x09, 0x02,
+  0x02, 0x09, 0x02, 0x02, 0x09, 0x02, 0x02, 0x09, 0x02, 0x02, 0x09, 0x02,
+  0x02, 0x09, 0x02, 0x02, 0x09, 0x02, 0x02, 0x09, 0x02, 0x01, 0x08, 0x01,
+  0x01, 0x09, 0x01, 0x01, 0x09, 0x01, 0x01, 0x09, 0x01, 0x01, 0x09, 0x01,
+  0x01, 0x09, 0x01, 0x01, 0x09, 0x01, 0x01, 0x09, 0x01, 0x01, 0x09, 0x01,
+  0x01, 0x09, 0x01, 0x01, 0x09, 0x01, 0x01, 0x09, 0x01, 0x01, 0x09, 0x01,
+  0x01, 0x09, 0x01, 0x01, 0x09, 0x01, 0x01, 0x09, 0x01, 0x01, 0x09, 0x01,
+  0x01, 0x09, 0x01, 0x01, 0x09, 0x01, 0x01, 0x09, 0x01, 0x01, 0x09, 0x01,
+  0x01, 0x09, 0x01, 0x01, 0x09, 0x01, 0x01, 0x09, 0x01, 0x01, 0x09, 0x01,
+  0x01, 0x09, 0x01, 0x01, 0x09, 0x01, 0x01, 0x09, 0x01, 0x01, 0x09, 0x01,
+  0x01, 0x09, 0x01, 0x01, 0x09, 0x01, 0x01, 0x08, 0x01, 0x02, 0x09, 0x02,
+  0x02, 0x09, 0x02, 0x02, 0x09, 0x02, 0x02, 0x09, 0x02, 0x01, 0x09, 0x02,
+  0x01, 0x09, 0x02, 0x01, 0x09, 0x02, 0x01, 0x09, 0x02, 0x00, 0x08, 0x01,
+  0x00, 0x09, 0x01, 0x01, 0x08, 0x02, 0x00, 0x07, 0x01, 0x00, 0x03, 0x01,
+  0x00, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x01, 0x01, 0x01,
+  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+  0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+  0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
+  0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x01, 0x01, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+  0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02, 0x06, 0x01,
+  0x02, 0x07, 0x01, 0x02, 0x07, 0x00, 0x02, 0x08, 0x02, 0x02, 0x08, 0x02,
+  0x02, 0x07, 0x00, 0x02, 0x07, 0x01, 0x02, 0x07, 0x01, 0x03, 0x09, 0x02,
+  0x03, 0x09, 0x02, 0x03, 0x09, 0x02, 0x03, 0x09, 0x02, 0x03, 0x09, 0x02,
+  0x03, 0x09, 0x02, 0x03, 0x09, 0x02, 0x03, 0x09, 0x02, 0x03, 0x09, 0x02,
+  0x02, 0x08, 0x02, 0x02, 0x08, 0x02, 0x02, 0x08, 0x02, 0x02, 0x08, 0x02,
+  0x02, 0x08, 0x02, 0x02, 0x08, 0x02, 0x02, 0x08, 0x02, 0x02, 0x08, 0x02,
+  0x02, 0x08, 0x02, 0x02, 0x08, 0x02, 0x02, 0x08, 0x02, 0x02, 0x08, 0x02,
+  0x02, 0x08, 0x02, 0x02, 0x08, 0x02, 0x02, 0x08, 0x02, 0x02, 0x08, 0x02,
+  0x02, 0x08, 0x02, 0x02, 0x08, 0x02, 0x02, 0x08, 0x02, 0x02, 0x08, 0x02,
+  0x02, 0x08, 0x02, 0x02, 0x08, 0x02, 0x02, 0x08, 0x02, 0x02, 0x08, 0x02,
+  0x02, 0x08, 0x02, 0x02, 0x08, 0x02, 0x02, 0x08, 0x02, 0x02, 0x08, 0x02,
+  0x02, 0x08, 0x02, 0x02, 0x08, 0x02, 0x02, 0x08, 0x02, 0x02, 0x08, 0x02,
+  0x03, 0x09, 0x02, 0x03, 0x09, 0x02, 0x03, 0x09, 0x02, 0x03, 0x09, 0x02,
+  0x01, 0x09, 0x02, 0x01, 0x09, 0x02, 0x01, 0x09, 0x02, 0x01, 0x09, 0x02,
+  0x00, 0x07, 0x01, 0x01, 0x08, 0x02, 0x01, 0x08, 0x03, 0x00, 0x06, 0x02,
+  0x01, 0x04, 0x02, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00,
+  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+  0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02,
+  0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04,
+  0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x01, 0x01, 0x01, 0x01, 0x01, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
+  0x02, 0x06, 0x01, 0x02, 0x06, 0x01, 0x02, 0x06, 0x00, 0x03, 0x08, 0x02,
+  0x03, 0x08, 0x02, 0x02, 0x06, 0x00, 0x02, 0x06, 0x01, 0x02, 0x06, 0x01,
+  0x02, 0x07, 0x02, 0x02, 0x07, 0x02, 0x02, 0x07, 0x02, 0x02, 0x07, 0x02,
+  0x02, 0x07, 0x02, 0x02, 0x07, 0x02, 0x02, 0x07, 0x02, 0x02, 0x07, 0x02,
+  0x02, 0x07, 0x02, 0x02, 0x07, 0x02, 0x02, 0x07, 0x02, 0x02, 0x07, 0x02,
+  0x02, 0x07, 0x02, 0x02, 0x07, 0x02, 0x02, 0x07, 0x02, 0x02, 0x07, 0x02,
+  0x02, 0x07, 0x02, 0x02, 0x07, 0x02, 0x02, 0x07, 0x02, 0x02, 0x07, 0x02,
+  0x02, 0x07, 0x02, 0x02, 0x07, 0x02, 0x02, 0x07, 0x02, 0x02, 0x07, 0x02,
+  0x02, 0x07, 0x02, 0x02, 0x07, 0x02, 0x02, 0x07, 0x02, 0x02, 0x07, 0x02,
+  0x02, 0x07, 0x02, 0x02, 0x07, 0x02, 0x02, 0x07, 0x02, 0x02, 0x07, 0x02,
+  0x02, 0x07, 0x02, 0x03, 0x08, 0x02, 0x03, 0x08, 0x02, 0x03, 0x08, 0x02,
+  0x03, 0x08, 0x02, 0x03, 0x08, 0x02, 0x03, 0x08, 0x02, 0x03, 0x08, 0x02,
+  0x03, 0x08, 0x02, 0x03, 0x07, 0x02, 0x03, 0x07, 0x02, 0x02, 0x08, 0x02,
+  0x02, 0x07, 0x02, 0x00, 0x07, 0x02, 0x01, 0x08, 0x02, 0x01, 0x07, 0x02,
+  0x01, 0x07, 0x02, 0x00, 0x06, 0x01, 0x01, 0x07, 0x02, 0x01, 0x06, 0x03,
+  0x00, 0x05, 0x03, 0x01, 0x04, 0x02, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00,
+  0x00, 0x02, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+  0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03,
+  0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x01, 0x01, 0x01,
+  0x01, 0x01, 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, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x04, 0x03, 0x04,
+  0x03, 0x03, 0x03, 0x01, 0x05, 0x00, 0x01, 0x05, 0x00, 0x02, 0x07, 0x01,
+  0x02, 0x07, 0x01, 0x02, 0x07, 0x01, 0x02, 0x07, 0x01, 0x01, 0x05, 0x00,
+  0x01, 0x05, 0x00, 0x01, 0x06, 0x01, 0x01, 0x06, 0x01, 0x01, 0x06, 0x01,
+  0x01, 0x06, 0x01, 0x01, 0x06, 0x01, 0x01, 0x06, 0x01, 0x01, 0x06, 0x01,
+  0x01, 0x06, 0x01, 0x01, 0x06, 0x01, 0x01, 0x06, 0x01, 0x01, 0x06, 0x01,
+  0x01, 0x06, 0x01, 0x01, 0x06, 0x01, 0x01, 0x06, 0x01, 0x01, 0x06, 0x01,
+  0x01, 0x06, 0x01, 0x01, 0x06, 0x01, 0x01, 0x06, 0x01, 0x01, 0x06, 0x01,
+  0x01, 0x06, 0x01, 0x01, 0x06, 0x01, 0x01, 0x06, 0x01, 0x01, 0x06, 0x01,
+  0x01, 0x06, 0x01, 0x01, 0x06, 0x01, 0x01, 0x06, 0x01, 0x01, 0x06, 0x01,
+  0x01, 0x06, 0x01, 0x01, 0x06, 0x01, 0x01, 0x06, 0x01, 0x01, 0x06, 0x01,
+  0x01, 0x06, 0x01, 0x01, 0x06, 0x01, 0x02, 0x07, 0x01, 0x02, 0x07, 0x01,
+  0x02, 0x07, 0x01, 0x02, 0x07, 0x01, 0x02, 0x07, 0x01, 0x02, 0x07, 0x01,
+  0x02, 0x07, 0x01, 0x02, 0x07, 0x01, 0x03, 0x05, 0x01, 0x03, 0x05, 0x01,
+  0x01, 0x07, 0x01, 0x01, 0x06, 0x01, 0x01, 0x06, 0x01, 0x01, 0x07, 0x01,
+  0x00, 0x05, 0x02, 0x00, 0x05, 0x02, 0x00, 0x04, 0x01, 0x00, 0x05, 0x02,
+  0x01, 0x05, 0x02, 0x01, 0x04, 0x02, 0x00, 0x03, 0x01, 0x00, 0x01, 0x00,
+  0x01, 0x02, 0x00, 0x00, 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,
+  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02,
+  0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
+  0x01, 0x01, 0x01, 0x01, 0x01, 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,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+  0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03,
+  0x04, 0x04, 0x04, 0x03, 0x03, 0x03, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00,
+  0x02, 0x07, 0x01, 0x01, 0x06, 0x00, 0x01, 0x06, 0x00, 0x02, 0x07, 0x01,
+  0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00,
+  0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00,
+  0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00,
+  0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00,
+  0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00,
+  0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00,
+  0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00,
+  0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00,
+  0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x02, 0x07, 0x01,
+  0x01, 0x06, 0x00, 0x01, 0x06, 0x00, 0x01, 0x06, 0x00, 0x01, 0x06, 0x00,
+  0x01, 0x06, 0x00, 0x01, 0x06, 0x00, 0x01, 0x06, 0x01, 0x03, 0x04, 0x00,
+  0x03, 0x03, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x01, 0x05, 0x00,
+  0x01, 0x05, 0x00, 0x00, 0x03, 0x02, 0x00, 0x03, 0x02, 0x00, 0x03, 0x02,
+  0x00, 0x03, 0x02, 0x01, 0x03, 0x01, 0x01, 0x03, 0x02, 0x00, 0x02, 0x00,
+  0x00, 0x01, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 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, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03,
+  0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
+  0x04, 0x04, 0x04, 0x01, 0x01, 0x01, 0x01, 0x01, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x03, 0x03, 0x03, 0x00, 0x05, 0x00,
+  0x00, 0x05, 0x00, 0x02, 0x07, 0x01, 0x01, 0x06, 0x00, 0x01, 0x06, 0x00,
+  0x02, 0x07, 0x01, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00,
+  0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00,
+  0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00,
+  0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00,
+  0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00,
+  0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00,
+  0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00,
+  0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00,
+  0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00,
+  0x02, 0x07, 0x01, 0x01, 0x06, 0x00, 0x01, 0x06, 0x00, 0x01, 0x06, 0x00,
+  0x01, 0x06, 0x00, 0x01, 0x06, 0x00, 0x01, 0x06, 0x00, 0x01, 0x06, 0x01,
+  0x03, 0x04, 0x00, 0x03, 0x03, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00,
+  0x01, 0x05, 0x00, 0x01, 0x05, 0x00, 0x00, 0x03, 0x02, 0x00, 0x03, 0x02,
+  0x00, 0x03, 0x02, 0x00, 0x03, 0x02, 0x01, 0x03, 0x01, 0x01, 0x03, 0x02,
+  0x00, 0x02, 0x00, 0x00, 0x01, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x01, 0x01, 0x01, 0x01, 0x01,
+  0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02,
+  0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04,
+  0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x01, 0x01, 0x01, 0x01, 0x01, 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
+};
+#endif
 #endif
 
 #endif
diff --git a/platform/msm_shared/include/spmi.h b/platform/msm_shared/include/spmi.h
index b594da5..e19cccd 100644
--- a/platform/msm_shared/include/spmi.h
+++ b/platform/msm_shared/include/spmi.h
@@ -152,5 +152,5 @@
 uint8_t pmic_spmi_reg_read(uint32_t addr);
 void pmic_spmi_reg_write(uint32_t addr, uint8_t val);
 void pmic_spmi_reg_mask_write(uint32_t addr, uint8_t mask, uint8_t val);
-
+bool spmi_initialized();
 #endif
diff --git a/platform/msm_shared/spmi.c b/platform/msm_shared/spmi.c
index 5af8eb7..72ec7cb 100644
--- a/platform/msm_shared/spmi.c
+++ b/platform/msm_shared/spmi.c
@@ -46,6 +46,7 @@
 static uint32_t pmic_arb_ver;
 static uint8_t *chnl_tbl;
 static uint32_t max_peripherals;
+static bool spmi_init_done;
 
 static void spmi_lookup_chnl_number()
 {
@@ -90,6 +91,8 @@
 	{
 		spmi_lookup_chnl_number();
 	}
+
+	spmi_init_done = true;
 }
 
 static void write_wdata_from_array(uint8_t *array,
@@ -440,3 +443,8 @@
 {
 	mask_interrupt(EE0_KRAIT_HLOS_SPMI_PERIPH_IRQ);
 }
+
+bool spmi_initialized()
+{
+	return spmi_init_done;
+}
diff --git a/project/msm8996.mk b/project/msm8996.mk
index f61933e..2669b56 100644
--- a/project/msm8996.mk
+++ b/project/msm8996.mk
@@ -39,6 +39,7 @@
 DEFINES += USB_RESET_FROM_CLK=1
 DEFINES += USE_BOOTDEV_CMDLINE=1
 DEFINES += USE_RPMB_FOR_DEVINFO=1
+DEFINES += ENABLE_WBC=1
 
 #Disable thumb mode
 ENABLE_THUMB := false
diff --git a/target/msm8909/init.c b/target/msm8909/init.c
index ec1a568..72506f3 100644
--- a/target/msm8909/init.c
+++ b/target/msm8909/init.c
@@ -61,6 +61,7 @@
 #define PMIC_ARB_CHANNEL_NUM    0
 #define PMIC_ARB_OWNER_ID       0
 #define TLMM_VOL_UP_BTN_GPIO    90
+#define TLMM_VOL_DOWN_BTN_GPIO  91
 
 #if PON_VIB_SUPPORT
 #define VIBRATE_TIME    250
@@ -74,6 +75,7 @@
 #define CE_READ_PIPE_LOCK_GRP   0
 #define CE_WRITE_PIPE_LOCK_GRP  0
 #define CE_ARRAY_SIZE           20
+#define SUB_TYPE_SKUT           0x0A
 
 extern void smem_ptable_init(void);
 extern void smem_add_modem_partitions(struct ptable *flash_ptable);
@@ -222,8 +224,24 @@
 /* Return 1 if vol_down pressed */
 uint32_t target_volume_down()
 {
-	/* Volume down button tied in with PMIC RESIN. */
-	return pm8x41_resin_status();
+	if ((board_hardware_id() == HW_PLATFORM_QRD) &&
+			(board_hardware_subtype() == SUB_TYPE_SKUT)) {
+		uint32_t status = 0;
+
+		gpio_tlmm_config(TLMM_VOL_DOWN_BTN_GPIO, 0, GPIO_INPUT, GPIO_PULL_UP, GPIO_2MA, GPIO_ENABLE);
+
+		/* Wait for the gpio config to take effect - debounce time */
+		thread_sleep(10);
+
+		/* Get status of GPIO */
+		status = gpio_status(TLMM_VOL_DOWN_BTN_GPIO);
+
+		/* Active low signal. */
+		return !status;
+	} else {
+		/* Volume down button tied in with PMIC RESIN. */
+		return pm8x41_resin_status();
+	}
 }
 
 static void target_keystatus()
diff --git a/target/msm8952/init.c b/target/msm8952/init.c
index e1a61c4..41ff356 100644
--- a/target/msm8952/init.c
+++ b/target/msm8952/init.c
@@ -486,6 +486,7 @@
 		switch (board_hardware_id()) {
 		case HW_PLATFORM_MTP:
 		case HW_PLATFORM_SURF:
+		case HW_PLATFORM_RCM:
 		case HW_PLATFORM_QRD:
 			splash_screen = 1;
 			break;
diff --git a/target/msm8952/oem_panel.c b/target/msm8952/oem_panel.c
index 603f990..d2e05f8 100644
--- a/target/msm8952/oem_panel.c
+++ b/target/msm8952/oem_panel.c
@@ -375,6 +375,7 @@
 			panel_id = TRULY_1080P_VIDEO_PANEL;
 		break;
 	case HW_PLATFORM_SURF:
+	case HW_PLATFORM_RCM:
 		if (platform_is_msm8956())
 			panel_id = NT35597_WQXGA_DUALDSI_VIDEO_PANEL;
 		else
diff --git a/target/msm8952/target_display.c b/target/msm8952/target_display.c
index adc5815..8773514 100644
--- a/target/msm8952/target_display.c
+++ b/target/msm8952/target_display.c
@@ -51,6 +51,11 @@
 #include "include/display_resource.h"
 #include "gcdb_display.h"
 
+#define DSC_CMD_PANEL "dsc_cmd_panel"
+#define DSC_VID_PANEL "dsc_vid_panel"
+#define DSC_CMD_PANEL_STRING "1:dsi:0:none:1:qcom,mdss_dsi_nt35597_dsc_wqxga_cmd"
+#define DSC_VID_PANEL_STRING "1:dsi:0:none:1:qcom,mdss_dsi_nt35597_dsc_wqxga_video"
+
 /*---------------------------------------------------------------------------*/
 /* GPIO configuration                                                        */
 /*---------------------------------------------------------------------------*/
@@ -508,7 +513,11 @@
 		qpnp_ibb_enable(true); /*5V boost*/
 		mdelay(50);
 	} else {
-		regulator_disable(ldo_num);
+		/*
+		 * LDO1, LDO2 and LDO6 are shared with other subsystems.
+		 * Do not disable them.
+		 */
+		regulator_disable(REG_LDO17);
 	}
 
 	return NO_ERROR;
@@ -516,7 +525,35 @@
 
 bool target_display_panel_node(char *pbuf, uint16_t buf_size)
 {
-	return gcdb_display_cmdline_arg(pbuf, buf_size);
+	int prefix_string_len = strlen(DISPLAY_CMDLINE_PREFIX);
+	bool ret = true;
+	struct oem_panel_data oem = mdss_dsi_get_oem_data();
+
+	if (!strcmp(oem.panel, DSC_CMD_PANEL)) {
+		if (buf_size < (prefix_string_len +
+			strlen(DSC_CMD_PANEL_STRING))) {
+			dprintf(CRITICAL, "DSC command line argument is greater than buffer size\n");
+			return false;
+		}
+		strlcpy(pbuf, DISPLAY_CMDLINE_PREFIX, buf_size);
+		buf_size -= prefix_string_len;
+		pbuf += prefix_string_len;
+		strlcpy(pbuf, DSC_CMD_PANEL_STRING, buf_size);
+	} else if (!strcmp(oem.panel, DSC_VID_PANEL)) {
+		if (buf_size < (prefix_string_len +
+			strlen(DSC_VID_PANEL_STRING))) {
+			dprintf(CRITICAL, "DSC command line argument is greater than buffer size\n");
+			return false;
+		}
+		strlcpy(pbuf, DISPLAY_CMDLINE_PREFIX, buf_size);
+		buf_size -= prefix_string_len;
+		pbuf += prefix_string_len;
+		strlcpy(pbuf, DSC_VID_PANEL_STRING, buf_size);
+	} else {
+		ret = gcdb_display_cmdline_arg(pbuf, buf_size);
+	}
+
+	return ret;
 }
 
 void target_display_init(const char *panel_name)
@@ -531,6 +568,8 @@
 	if (!strcmp(oem.panel, NO_PANEL_CONFIG)
 		|| !strcmp(oem.panel, SIM_VIDEO_PANEL)
 		|| !strcmp(oem.panel, SIM_CMD_PANEL)
+		|| !strcmp(oem.panel, DSC_CMD_PANEL)
+		|| !strcmp(oem.panel, DSC_VID_PANEL)
 		|| oem.skip) {
 		dprintf(INFO, "Selected panel: %s\nSkip panel configuration\n",
 			oem.panel);
diff --git a/target/msm8996/init.c b/target/msm8996/init.c
index f407eea..488ed47 100644
--- a/target/msm8996/init.c
+++ b/target/msm8996/init.c
@@ -58,6 +58,9 @@
 #include <qusb2_phy.h>
 #include <rpmb.h>
 #include <rpm-glink.h>
+#if ENABLE_WBC
+#include <pm_app_smbchg.h>
+#endif
 
 #define CE_INSTANCE             1
 #define CE_EE                   1
@@ -147,6 +150,10 @@
 		}
 	}
 
+#if ENABLE_WBC
+	pm_appsbl_set_dcin_suspend(1);
+#endif
+
 	/* Tear down glink channels */
 	rpm_glink_uninit();
 
@@ -237,6 +244,18 @@
 
 	spmi_init(PMIC_ARB_CHANNEL_NUM, PMIC_ARB_OWNER_ID);
 
+	/* Initialize Glink */
+	rpm_glink_init();
+
+#if ENABLE_WBC
+	/* Look for battery voltage and make sure we have enough to bootup
+	 * Otherwise initiate battery charging
+	 * Charging should happen as early as possible, any other driver
+	 * initialization before this should consider the power impact
+	 */
+	pm_appsbl_chg_check_weak_battery_status(1);
+#endif
+
 	target_keystatus();
 
 	if (target_use_signed_kernel())
@@ -266,9 +285,6 @@
 		dprintf(CRITICAL, "RPMB init failed\n");
 		ASSERT(0);
 	}
-	/* Initialize Glink */
-	rpm_glink_init();
-
 }
 
 unsigned board_machtype(void)
diff --git a/target/msm8996/rules.mk b/target/msm8996/rules.mk
index 82c6979..d9349f7 100644
--- a/target/msm8996/rules.mk
+++ b/target/msm8996/rules.mk
@@ -27,6 +27,7 @@
 	dev/qpnp_wled \
 	dev/qpnp_led \
 	dev/gcdb/display \
+	dev/pmic/pmi8994 \
 	lib/ptable \
 	lib/libfdt