wifi: add esp8089's code.
authorli bing <libing@rock-chips.com>
Mon, 14 Jul 2014 02:20:32 +0000 (10:20 +0800)
committerli bing <libing@rock-chips.com>
Mon, 14 Jul 2014 02:23:32 +0000 (10:23 +0800)
41 files changed:
drivers/net/wireless/Makefile [changed mode: 0644->0755]
drivers/net/wireless/rockchip_wlan/esp8089/Kconfig
drivers/net/wireless/rockchip_wlan/esp8089/Makefile [new file with mode: 0755]
drivers/net/wireless/rockchip_wlan/esp8089/eagle_fw1.h [new file with mode: 0755]
drivers/net/wireless/rockchip_wlan/esp8089/eagle_fw2.h [new file with mode: 0755]
drivers/net/wireless/rockchip_wlan/esp8089/esp_android.c [new file with mode: 0755]
drivers/net/wireless/rockchip_wlan/esp8089/esp_android.h [new file with mode: 0755]
drivers/net/wireless/rockchip_wlan/esp8089/esp_cfg80211.c [new file with mode: 0755]
drivers/net/wireless/rockchip_wlan/esp8089/esp_conf.h [new file with mode: 0755]
drivers/net/wireless/rockchip_wlan/esp8089/esp_config.mk [new file with mode: 0755]
drivers/net/wireless/rockchip_wlan/esp8089/esp_ctrl.c [new file with mode: 0755]
drivers/net/wireless/rockchip_wlan/esp8089/esp_ctrl.h [new file with mode: 0755]
drivers/net/wireless/rockchip_wlan/esp8089/esp_debug.c [new file with mode: 0755]
drivers/net/wireless/rockchip_wlan/esp8089/esp_debug.h [new file with mode: 0755]
drivers/net/wireless/rockchip_wlan/esp8089/esp_ext.c [new file with mode: 0755]
drivers/net/wireless/rockchip_wlan/esp8089/esp_ext.h [new file with mode: 0755]
drivers/net/wireless/rockchip_wlan/esp8089/esp_init_data.h [new file with mode: 0755]
drivers/net/wireless/rockchip_wlan/esp8089/esp_io.c [new file with mode: 0755]
drivers/net/wireless/rockchip_wlan/esp8089/esp_mac80211.c [new file with mode: 0755]
drivers/net/wireless/rockchip_wlan/esp8089/esp_main.c [new file with mode: 0755]
drivers/net/wireless/rockchip_wlan/esp8089/esp_os.h [new file with mode: 0755]
drivers/net/wireless/rockchip_wlan/esp8089/esp_path.h [new file with mode: 0755]
drivers/net/wireless/rockchip_wlan/esp8089/esp_pm.c [new file with mode: 0755]
drivers/net/wireless/rockchip_wlan/esp8089/esp_pub.h [new file with mode: 0755]
drivers/net/wireless/rockchip_wlan/esp8089/esp_sif.h [new file with mode: 0755]
drivers/net/wireless/rockchip_wlan/esp8089/esp_sip.c [new file with mode: 0755]
drivers/net/wireless/rockchip_wlan/esp8089/esp_sip.h [new file with mode: 0755]
drivers/net/wireless/rockchip_wlan/esp8089/esp_utils.c [new file with mode: 0755]
drivers/net/wireless/rockchip_wlan/esp8089/esp_utils.h [new file with mode: 0755]
drivers/net/wireless/rockchip_wlan/esp8089/esp_version.h [new file with mode: 0755]
drivers/net/wireless/rockchip_wlan/esp8089/esp_wl.h [new file with mode: 0755]
drivers/net/wireless/rockchip_wlan/esp8089/esp_wmac.h [new file with mode: 0755]
drivers/net/wireless/rockchip_wlan/esp8089/init_data.conf [new file with mode: 0755]
drivers/net/wireless/rockchip_wlan/esp8089/rk2.env [new file with mode: 0755]
drivers/net/wireless/rockchip_wlan/esp8089/sdio_sif_esp.c [new file with mode: 0755]
drivers/net/wireless/rockchip_wlan/esp8089/sdio_stub.c [new file with mode: 0755]
drivers/net/wireless/rockchip_wlan/esp8089/sip2_common.h [new file with mode: 0755]
drivers/net/wireless/rockchip_wlan/esp8089/slc_host_register.h [new file with mode: 0755]
drivers/net/wireless/rockchip_wlan/esp8089/spi_sif_esp.c [new file with mode: 0755]
drivers/net/wireless/rockchip_wlan/esp8089/testmode.c [new file with mode: 0755]
drivers/net/wireless/rockchip_wlan/esp8089/testmode.h [new file with mode: 0755]

old mode 100644 (file)
new mode 100755 (executable)
index 721973f..5c63bb6
@@ -13,3 +13,4 @@ obj-$(CONFIG_MT5931_MT6622)    += rockchip_wlan/mt5931/
 obj-$(CONFIG_RTL8723BS)        += rockchip_wlan/rtl8723bs/
 obj-$(CONFIG_MTK_COMBO_WIFI)   += rockchip_wlan/combo_mt66xx/
 obj-$(CONFIG_MTK_MT5931)       += rockchip_wlan/mt5931_kk/
+obj-$(CONFIG_ESP8089)   += rockchip_wlan/esp8089/
\ No newline at end of file
index 620c5cfe719d9116973918badb526f80ca7f7350..f8bdee84eaf6eeb72caea5ae6de145d0ceca1b66 100755 (executable)
@@ -1,5 +1,5 @@
-  config ESP8089
-      depends on WLAN_80211 && MMC
+config ESP8089
+#      depends on WLAN_80211 && MMC
       select WIRELESS_EXT
       select WEXT_PRIV
       select CFG80211
diff --git a/drivers/net/wireless/rockchip_wlan/esp8089/Makefile b/drivers/net/wireless/rockchip_wlan/esp8089/Makefile
new file mode 100755 (executable)
index 0000000..2f04b4e
--- /dev/null
@@ -0,0 +1,21 @@
+DRIVER_NAME := wlan
+include drivers/net/wireless/rockchip_wlan/esp8089/esp_config.mk
+
+EXTRA_CFLAGS += -DDEBUG -DSIP_DEBUG -DFAST_TX_STATUS -DANDROID -DKERNEL_IV_WAR -DRX_SENDUP_SYNC -DDEBUGFS -DHAS_FW -DTEST_MODE -DHAS_INIT_DATA
+
+obj-$(CONFIG_ESP8089) := $(DRIVER_NAME).o
+$(DRIVER_NAME)-y += esp_debug.o
+$(DRIVER_NAME)-y += sdio_sif_esp.o
+$(DRIVER_NAME)-y += spi_sif_esp.o
+$(DRIVER_NAME)-y += esp_io.o
+$(DRIVER_NAME)-y += esp_android.o
+$(DRIVER_NAME)-y += esp_main.o
+$(DRIVER_NAME)-y += esp_sip.o
+$(DRIVER_NAME)-y += esp_ext.o
+$(DRIVER_NAME)-y += esp_ctrl.o
+$(DRIVER_NAME)-y += esp_mac80211.o
+$(DRIVER_NAME)-y += esp_debug.o
+$(DRIVER_NAME)-y += esp_utils.o
+$(DRIVER_NAME)-y += esp_pm.o
+$(DRIVER_NAME)-y += testmode.o
+
diff --git a/drivers/net/wireless/rockchip_wlan/esp8089/eagle_fw1.h b/drivers/net/wireless/rockchip_wlan/esp8089/eagle_fw1.h
new file mode 100755 (executable)
index 0000000..bfebb1e
--- /dev/null
@@ -0,0 +1,2743 @@
+/* 
+ * Copyright (c) Espressif System
+
+ * Apr 13 2013 16:44:24 
+ */ 
+
+
+static u8 eagle_fw1[] =
+{ 
+        0xe9, 0x03, 0x00, 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x00, 0x10, 0x40, 0xd8, 0xa1, 0x00, 0x00, 
+        0x12, 0xc1, 0xf0, 0x09, 0x01, 0x05, 0x35, 0x00, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 
+        0x00, 0x06, 0x00, 0x60, 0x0c, 0x0a, 0x31, 0xfe, 0xff, 0xc0, 0x20, 0x00, 0xa2, 0x63, 0xc1, 0x3c, 
+        0x89, 0xc0, 0x20, 0x00, 0x82, 0x23, 0xc0, 0x90, 0x88, 0x20, 0xc0, 0x20, 0x00, 0x82, 0x63, 0xc0, 
+        0x7c, 0x97, 0x0c, 0x46, 0xc0, 0x20, 0x00, 0x52, 0x23, 0xc0, 0x70, 0x55, 0x10, 0x60, 0x55, 0x20, 
+        0xc0, 0x20, 0x00, 0x52, 0x63, 0xc0, 0x0c, 0x14, 0xc0, 0x20, 0x00, 0x22, 0x23, 0xc0, 0x40, 0x22, 
+        0x20, 0xc0, 0x20, 0x00, 0x22, 0x63, 0xc0, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x12, 0xc1, 0xf0, 0x09, 
+        0x01, 0x05, 0xfb, 0xff, 0x06, 0xff, 0xff, 0x00, 0x00, 0xfe, 0xef, 0x3f, 0x8c, 0x82, 0xfe, 0x3f, 
+        0xcc, 0x24, 0x00, 0x40, 0x12, 0xc1, 0xf0, 0x09, 0x01, 0x41, 0xfb, 0xff, 0xc0, 0x20, 0x00, 0x02, 
+        0x24, 0x97, 0xc0, 0x20, 0x00, 0x42, 0x24, 0x96, 0xdc, 0x50, 0x49, 0x11, 0x09, 0x21, 0x29, 0x31, 
+        0xcc, 0xd4, 0x21, 0xf6, 0xff, 0x01, 0xf6, 0xff, 0xc0, 0x00, 0x00, 0x28, 0x31, 0x08, 0x21, 0x48, 
+        0x11, 0x00, 0x50, 0x75, 0xdc, 0xc5, 0x02, 0x42, 0x04, 0x3c, 0x46, 0x7c, 0xe7, 0x1c, 0x88, 0x40, 
+        0x98, 0x75, 0x00, 0xa8, 0x41, 0xa2, 0x42, 0x03, 0x92, 0x42, 0x05, 0x82, 0x42, 0x00, 0x72, 0x42, 
+        0x01, 0x62, 0x42, 0x02, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0xc0, 0x88, 0xfe, 0x3f, 
+        0x40, 0x4f, 0x00, 0x40, 0x0c, 0xc3, 0x52, 0xa1, 0x00, 0x62, 0xa1, 0x00, 0x0c, 0x17, 0x12, 0xc1, 
+        0xe0, 0x09, 0x61, 0x22, 0xc1, 0x10, 0x29, 0x01, 0x02, 0xc1, 0x14, 0x21, 0xf8, 0xff, 0x09, 0x11, 
+        0x42, 0xc2, 0x10, 0x01, 0xf7, 0xff, 0xc0, 0x00, 0x00, 0x28, 0x41, 0x08, 0x61, 0x12, 0xc1, 0x20, 
+        0x0d, 0xf0, 0x00, 0x00, 0x00, 0x80, 0xfe, 0x3f, 0x28, 0x03, 0x00, 0x60, 0x00, 0x0a, 0x00, 0x60, 
+        0xd0, 0x4c, 0x00, 0x40, 0x04, 0x4d, 0x00, 0x40, 0xc0, 0x5d, 0x00, 0x40, 0xb8, 0x5d, 0x00, 0x40, 
+        0x12, 0xc1, 0xe0, 0xe9, 0x41, 0xf9, 0x51, 0x39, 0x01, 0x09, 0x11, 0xd9, 0x31, 0xc9, 0x21, 0xdd, 
+        0x02, 0x20, 0xc0, 0x75, 0xb6, 0x8c, 0x06, 0x0c, 0x10, 0x0c, 0x1c, 0x46, 0x00, 0x00, 0x0c, 0x00, 
+        0x0c, 0x1f, 0x9c, 0xfc, 0x26, 0x1c, 0x1f, 0xf6, 0x4c, 0x02, 0xf6, 0x2c, 0x0e, 0x22, 0xcc, 0xfc, 
+        0x16, 0x82, 0x14, 0x26, 0x5c, 0x05, 0x32, 0xcc, 0xfa, 0x16, 0xf3, 0x13, 0x0c, 0x04, 0x49, 0x61, 
+        0x0c, 0x02, 0xc6, 0x01, 0x00, 0x0c, 0x10, 0x0c, 0x12, 0x0c, 0x05, 0x59, 0x61, 0xd0, 0xe0, 0x34, 
+        0x00, 0x1e, 0x40, 0x00, 0xff, 0xa1, 0x9c, 0x62, 0x4d, 0x0f, 0x0c, 0x05, 0x00, 0x20, 0xa1, 0x7c, 
+        0xf3, 0x30, 0x30, 0x30, 0x00, 0x33, 0xa1, 0x01, 0xe2, 0xff, 0xc0, 0x00, 0x00, 0x46, 0x03, 0x00, 
+        0x0c, 0x02, 0x0c, 0x03, 0x0c, 0x04, 0x5d, 0x0f, 0x01, 0xde, 0xff, 0xc0, 0x00, 0x00, 0x21, 0x9c, 
+        0xff, 0xd0, 0x09, 0x54, 0xa2, 0xae, 0xcf, 0x2a, 0x00, 0xc0, 0x20, 0x00, 0x92, 0x20, 0x80, 0xa0, 
+        0x99, 0x10, 0xc0, 0x20, 0x00, 0x92, 0x60, 0x80, 0x0c, 0x48, 0xd0, 0x74, 0x24, 0xd0, 0x64, 0x14, 
+        0x80, 0x77, 0x10, 0xe0, 0x77, 0x11, 0x70, 0x66, 0x20, 0xc0, 0x66, 0x11, 0xc0, 0x20, 0x00, 0x52, 
+        0x20, 0x80, 0x60, 0x55, 0x20, 0xc0, 0x20, 0x00, 0x48, 0x61, 0x52, 0x60, 0x80, 0xdc, 0x34, 0x42, 
+        0xaf, 0x7f, 0xc0, 0x20, 0x00, 0x32, 0x20, 0x80, 0x40, 0x33, 0x10, 0xc0, 0x20, 0x00, 0x32, 0x60, 
+        0x80, 0x46, 0x04, 0x00, 0x62, 0xa0, 0x80, 0xc0, 0x20, 0x00, 0x52, 0x20, 0x80, 0x60, 0x55, 0x20, 
+        0xc0, 0x20, 0x00, 0x52, 0x60, 0x80, 0x21, 0xbf, 0xff, 0xb6, 0x2c, 0x44, 0x26, 0x5c, 0x44, 0x41, 
+        0xbe, 0xff, 0xe0, 0x3e, 0x11, 0x4a, 0x33, 0xc0, 0x20, 0x00, 0x42, 0xac, 0x7f, 0x38, 0x03, 0x68, 
+        0x01, 0x40, 0x33, 0x10, 0x42, 0xcc, 0xfe, 0x90, 0x44, 0x11, 0x40, 0x33, 0x20, 0x26, 0x2c, 0x05, 
+        0x52, 0xa4, 0x00, 0x50, 0x33, 0x20, 0x16, 0x96, 0x06, 0x72, 0x12, 0x01, 0x09, 0x71, 0xf0, 0x77, 
+        0x20, 0x72, 0x52, 0x01, 0x2d, 0x0e, 0x01, 0xb3, 0xff, 0xc0, 0x00, 0x00, 0x08, 0x71, 0xc6, 0x02, 
+        0x00, 0x66, 0x5c, 0x08, 0x82, 0x12, 0x03, 0x80, 0x8f, 0x20, 0x82, 0x52, 0x03, 0xa2, 0xaf, 0xbf, 
+        0xc0, 0x20, 0x00, 0x92, 0x20, 0x80, 0xa0, 0x99, 0x10, 0xc0, 0x20, 0x00, 0x92, 0x60, 0x80, 0xdc, 
+        0xac, 0x2d, 0x0e, 0x01, 0xa9, 0xff, 0xc0, 0x00, 0x00, 0xd0, 0x27, 0x14, 0x01, 0xa8, 0xff, 0xc0, 
+        0x00, 0x00, 0x0c, 0x0b, 0xc1, 0xa2, 0xff, 0xc0, 0x20, 0x00, 0xb2, 0x6c, 0x6d, 0xc8, 0x21, 0xd8, 
+        0x31, 0xe8, 0x41, 0xf8, 0x51, 0x08, 0x11, 0x12, 0xc1, 0x20, 0x0d, 0xf0, 0x0c, 0x1e, 0xe9, 0x61, 
+        0x06, 0xaf, 0xff, 0x42, 0x12, 0x00, 0x26, 0x2c, 0x0a, 0x40, 0x4f, 0x20, 0x42, 0x52, 0x00, 0x09, 
+        0x71, 0xc6, 0xe3, 0xff, 0x7c, 0xf5, 0x62, 0x12, 0x03, 0x50, 0x5f, 0x30, 0x40, 0x45, 0x10, 0x60, 
+        0x55, 0x10, 0x52, 0x52, 0x03, 0xc6, 0xf8, 0xff, 0x5c, 0x00, 0x10, 0x40, 0xa0, 0x88, 0xfe, 0x3f, 
+        0xb8, 0x1c, 0x00, 0x40, 0x68, 0x2e, 0x00, 0x40, 0x48, 0x2c, 0x00, 0x40, 0x48, 0x1d, 0x00, 0x40, 
+        0xc4, 0x2c, 0x00, 0x40, 0x12, 0xc1, 0xf0, 0x22, 0x61, 0x00, 0x02, 0x61, 0x01, 0x45, 0xde, 0xff, 
+        0x01, 0xf8, 0xff, 0xc0, 0x00, 0x00, 0x28, 0x01, 0x05, 0x16, 0x03, 0x01, 0xf6, 0xff, 0xc0, 0x00, 
+        0x00, 0x31, 0xf1, 0xff, 0x21, 0xf2, 0xff, 0x0c, 0x04, 0x01, 0xf3, 0xff, 0xc0, 0x00, 0x00, 0x01, 
+        0xf3, 0xff, 0xc0, 0x00, 0x00, 0x45, 0x4f, 0x00, 0x21, 0xed, 0xff, 0x0c, 0xa3, 0x0c, 0x04, 0x01, 
+        0xf0, 0xff, 0xc0, 0x00, 0x00, 0x08, 0x11, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x98, 0x82, 0xfe, 0x3f, 
+        0xa0, 0x82, 0xfe, 0x3f, 0xb0, 0x82, 0xfe, 0x3f, 0xbc, 0x82, 0xfe, 0x3f, 0xc8, 0x82, 0xfe, 0x3f, 
+        0x00, 0x00, 0x06, 0x00, 0x00, 0xde, 0xff, 0x3f, 0x00, 0xe1, 0xff, 0x3f, 0x00, 0x02, 0x00, 0x60, 
+        0xd4, 0x82, 0xfe, 0x3f, 0xc4, 0x56, 0x00, 0x40, 0x12, 0xc1, 0xf0, 0xc2, 0x61, 0x01, 0x02, 0x61, 
+        0x00, 0x45, 0x0a, 0x00, 0x21, 0xf2, 0xff, 0x31, 0xf2, 0xff, 0x01, 0x41, 0xff, 0xc0, 0x00, 0x00, 
+        0x21, 0xf1, 0xff, 0x31, 0xf1, 0xff, 0x41, 0xf1, 0xff, 0x01, 0x3d, 0xff, 0xc0, 0x00, 0x00, 0x45, 
+        0x32, 0x00, 0xc1, 0x62, 0xff, 0xc0, 0x20, 0x00, 0xc2, 0x2c, 0x66, 0x16, 0x2c, 0x02, 0xc0, 0x20, 
+        0xf4, 0x8c, 0xb2, 0x0c, 0x03, 0x85, 0xd8, 0xff, 0x21, 0x5b, 0xff, 0x0c, 0x10, 0x02, 0x42, 0x0a, 
+        0xc0, 0x00, 0xf5, 0x16, 0xa0, 0x00, 0x21, 0xe6, 0xff, 0x0c, 0x13, 0x20, 0x20, 0x20, 0x05, 0xd7, 
+        0xff, 0x01, 0xe8, 0xff, 0xc0, 0x00, 0x00, 0x22, 0xa2, 0x0c, 0x05, 0x41, 0x00, 0xc5, 0x09, 0x00, 
+        0x85, 0x46, 0x00, 0x01, 0xe0, 0xff, 0x21, 0xe1, 0xff, 0x02, 0x20, 0xfe, 0x41, 0xdf, 0xff, 0x66, 
+        0x20, 0x0b, 0x32, 0x14, 0x7e, 0xc0, 0x20, 0x00, 0x32, 0x62, 0x42, 0xc6, 0x02, 0x00, 0x66, 0x30, 
+        0x08, 0x52, 0x14, 0x7e, 0xc0, 0x20, 0x00, 0x52, 0x62, 0x41, 0x21, 0xd9, 0xff, 0x01, 0x20, 0xff, 
+        0xc0, 0x00, 0x00, 0xc8, 0x11, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x38, 0xf3, 0xfe, 0x3f, 
+        0x98, 0x88, 0xfe, 0x3f, 0xe4, 0x82, 0xfe, 0x3f, 0x41, 0xfd, 0xff, 0x12, 0xc1, 0xf0, 0x31, 0xfc, 
+        0xff, 0x09, 0x01, 0x47, 0xb3, 0x0b, 0x0c, 0x06, 0x0d, 0x03, 0x62, 0x40, 0x00, 0x1b, 0x00, 0x47, 
+        0x90, 0xf7, 0x21, 0xf8, 0xff, 0x01, 0x12, 0xff, 0xc0, 0x00, 0x00, 0x08, 0x01, 0x12, 0xc1, 0x10, 
+        0x0d, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3c, 0x05, 0x10, 0x40, 0x00, 0x10, 0x00, 0x00, 
+        0x00, 0x00, 0x04, 0x00, 0xfc, 0x82, 0xfe, 0x3f, 0xf9, 0x84, 0x2e, 0x00, 0xf9, 0x84, 0x2a, 0x00, 
+        0xa8, 0x58, 0x00, 0x40, 0x88, 0x0f, 0x00, 0x40, 0xa8, 0x0f, 0x00, 0x40, 0x12, 0xc1, 0xf0, 0xc9, 
+        0x11, 0x09, 0x01, 0x01, 0xfb, 0xff, 0xc0, 0x00, 0x00, 0x41, 0x98, 0xff, 0x38, 0xc2, 0x39, 0x54, 
+        0xc1, 0x27, 0xff, 0x21, 0xf0, 0xff, 0xc0, 0x20, 0x00, 0x02, 0x2c, 0x57, 0x20, 0x00, 0x20, 0xc0, 
+        0x20, 0x00, 0x0c, 0x12, 0x31, 0xed, 0xff, 0x0c, 0x04, 0x02, 0x6c, 0x57, 0x01, 0xf2, 0xff, 0xc0, 
+        0x00, 0x00, 0x51, 0x1c, 0xff, 0x41, 0xac, 0xff, 0x52, 0x05, 0x0a, 0x01, 0xaa, 0xff, 0x16, 0x25, 
+        0x06, 0x02, 0x20, 0xfe, 0x31, 0xaa, 0xff, 0x66, 0x20, 0x0b, 0x22, 0x14, 0x7e, 0xc0, 0x20, 0x00, 
+        0x22, 0x63, 0x42, 0xc6, 0x02, 0x00, 0x66, 0x30, 0x08, 0x52, 0x14, 0x7e, 0xc0, 0x20, 0x00, 0x52, 
+        0x63, 0x41, 0x71, 0xde, 0xff, 0xc0, 0x20, 0x00, 0xa2, 0x2c, 0x6c, 0x70, 0xaa, 0x20, 0xc0, 0x20, 
+        0x00, 0xa2, 0x6c, 0x6c, 0x91, 0xdb, 0xff, 0xc0, 0x20, 0x00, 0x82, 0x2c, 0x44, 0x90, 0x88, 0x20, 
+        0xc0, 0x20, 0x00, 0x82, 0x6c, 0x44, 0xc0, 0x20, 0x00, 0x62, 0x2c, 0x6d, 0x70, 0x66, 0x20, 0xc0, 
+        0x20, 0x00, 0x62, 0x6c, 0x6d, 0x21, 0xd3, 0xff, 0x01, 0xde, 0xfe, 0xc0, 0x00, 0x00, 0x01, 0xd2, 
+        0xff, 0x86, 0x00, 0x00, 0x01, 0xd2, 0xff, 0xc0, 0x20, 0x00, 0x02, 0x6c, 0x43, 0xc0, 0x20, 0x00, 
+        0xb2, 0x2c, 0x43, 0x0c, 0x22, 0x01, 0xd0, 0xff, 0xc0, 0x00, 0x00, 0xc8, 0x11, 0x08, 0x01, 0x12, 
+        0xc1, 0x10, 0x0d, 0xf0, 0xf9, 0x04, 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x80, 0x00, 0x00, 
+        0xff, 0xff, 0xfe, 0xff, 0x04, 0x83, 0xfe, 0x3f, 0x0c, 0x83, 0xfe, 0x3f, 0x41, 0x82, 0xff, 0x12, 
+        0xc1, 0xe0, 0xc9, 0x11, 0xe9, 0x31, 0xd9, 0x21, 0x09, 0x01, 0xf9, 0x41, 0x01, 0xbd, 0xff, 0xf1, 
+        0xbb, 0xff, 0xd1, 0xee, 0xfe, 0xe1, 0xf3, 0xff, 0xc0, 0x20, 0x00, 0xc2, 0x2d, 0x42, 0x16, 0xec, 
+        0x0d, 0x27, 0x7c, 0x47, 0x32, 0x24, 0xfe, 0x66, 0x23, 0x11, 0x91, 0x77, 0xff, 0x92, 0x19, 0x7e, 
+        0xc0, 0x20, 0x00, 0xa1, 0x76, 0xff, 0x92, 0x6a, 0x42, 0x46, 0x04, 0x00, 0x66, 0x33, 0x0e, 0xa1, 
+        0x72, 0xff, 0xa2, 0x1a, 0x7e, 0xc0, 0x20, 0x00, 0xb1, 0x71, 0xff, 0xa2, 0x6b, 0x41, 0xc0, 0x20, 
+        0x00, 0x22, 0x2d, 0x6c, 0xf0, 0x22, 0x20, 0xc0, 0x20, 0x00, 0x22, 0x6d, 0x6c, 0xc0, 0x20, 0x00, 
+        0xb2, 0x2d, 0x44, 0x00, 0xbb, 0x20, 0xc0, 0x20, 0x00, 0xb2, 0x6d, 0x44, 0x17, 0x7c, 0x1a, 0xc0, 
+        0x20, 0x00, 0x21, 0x46, 0xff, 0x31, 0xdc, 0xff, 0x28, 0x52, 0x32, 0x6d, 0x44, 0x08, 0x52, 0x28, 
+        0x82, 0xc0, 0x00, 0x00, 0x01, 0x9f, 0xff, 0x41, 0x5f, 0xff, 0xf7, 0x6c, 0x24, 0xc0, 0x20, 0x00, 
+        0x51, 0xd7, 0xff, 0x52, 0x6d, 0x44, 0xc0, 0x20, 0x00, 0x32, 0x2d, 0x53, 0x38, 0x23, 0x9c, 0x03, 
+        0x21, 0x3b, 0xff, 0x28, 0x52, 0x08, 0x62, 0x28, 0x82, 0xc0, 0x00, 0x00, 0x01, 0x95, 0xff, 0x41, 
+        0x55, 0xff, 0x07, 0x7c, 0x20, 0xc0, 0x20, 0x00, 0x51, 0xce, 0xff, 0x62, 0x2d, 0x43, 0x50, 0x66, 
+        0x10, 0xc0, 0x20, 0x00, 0x62, 0x6d, 0x43, 0xc0, 0x20, 0x00, 0x32, 0x2d, 0x44, 0x50, 0x33, 0x10, 
+        0xc0, 0x20, 0x00, 0x32, 0x6d, 0x44, 0xe7, 0x8c, 0x02, 0xc6, 0xce, 0xff, 0x37, 0xfc, 0x0e, 0x57, 
+        0xfc, 0x2c, 0xa7, 0xec, 0x3b, 0xc0, 0x20, 0x00, 0x72, 0x2d, 0x44, 0x46, 0xca, 0xff, 0x21, 0xc1, 
+        0xff, 0x31, 0xc1, 0xff, 0x42, 0xa2, 0x4a, 0x01, 0x8e, 0xfe, 0xc0, 0x00, 0x00, 0x06, 0xff, 0xff, 
+        0xc8, 0x11, 0xd8, 0x21, 0xe8, 0x31, 0xf8, 0x41, 0x08, 0x01, 0x12, 0xc1, 0x20, 0x0d, 0xf0, 0x21, 
+        0xb9, 0xff, 0x31, 0xb9, 0xff, 0x42, 0xa2, 0x51, 0x01, 0x86, 0xfe, 0xc0, 0x00, 0x00, 0x06, 0xff, 
+        0xff, 0x21, 0xb4, 0xff, 0x31, 0xb5, 0xff, 0x42, 0xa2, 0x58, 0x01, 0x81, 0xfe, 0xc0, 0x00, 0x00, 
+        0x06, 0xff, 0xff, 0x00, 0x12, 0xc1, 0xf0, 0x09, 0x01, 0x66, 0x92, 0x0c, 0x0c, 0xd2, 0x45, 0x05, 
+        0x00, 0x0c, 0xa2, 0x05, 0x05, 0x00, 0xc6, 0x01, 0x00, 0x0c, 0xd0, 0x07, 0x12, 0x02, 0x45, 0x04, 
+        0x00, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x74, 0x06, 0x10, 0x40, 0x18, 0x83, 0xfe, 0x3f, 
+        0x2c, 0x24, 0x00, 0x40, 0x21, 0xfd, 0xff, 0x12, 0xc1, 0xf0, 0x09, 0x01, 0x01, 0xfd, 0xff, 0xc0, 
+        0x00, 0x00, 0x21, 0xfa, 0xff, 0x01, 0x6e, 0xfe, 0xc0, 0x00, 0x00, 0x08, 0x01, 0x12, 0xc1, 0x10, 
+        0x0d, 0xf0, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x5f, 0x4c, 0x3f, 0x00, 0x40, 
+        0xcc, 0x2e, 0x00, 0x40, 0x12, 0xc1, 0xf0, 0xc9, 0x11, 0xd9, 0x21, 0x09, 0x01, 0xdd, 0x02, 0x01, 
+        0xfb, 0xff, 0xc0, 0x00, 0x00, 0x22, 0x02, 0x40, 0xc1, 0xf7, 0xff, 0x01, 0xf7, 0xff, 0x20, 0xcc, 
+        0xd1, 0x0a, 0xcc, 0xc0, 0x20, 0x00, 0x02, 0x2c, 0x87, 0xd9, 0x31, 0x77, 0x70, 0x19, 0xd1, 0xf3, 
+        0xfe, 0x0c, 0x12, 0x01, 0xf3, 0xff, 0xc0, 0x00, 0x00, 0x48, 0x6d, 0x1b, 0x44, 0x49, 0x6d, 0xc0, 
+        0x20, 0x00, 0x32, 0x2c, 0x87, 0x77, 0xf3, 0xe8, 0xc0, 0x20, 0x00, 0x0c, 0x02, 0x08, 0x01, 0x58, 
+        0x31, 0xd8, 0x21, 0x52, 0x6c, 0x80, 0xc8, 0x11, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0xff, 0x00, 0x12, 0xc1, 0xf0, 0x09, 0x01, 0x01, 0xe4, 0xff, 0xc0, 0x00, 0x00, 0x01, 
+        0xfc, 0xff, 0x72, 0x02, 0x40, 0x51, 0xdf, 0xff, 0x61, 0xe0, 0xff, 0x70, 0x55, 0xd1, 0x6a, 0x55, 
+        0xc0, 0x20, 0x00, 0x22, 0x25, 0x87, 0x27, 0x00, 0x08, 0xc0, 0x20, 0x00, 0x82, 0x25, 0x87, 0x07, 
+        0x88, 0xf6, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0xd0, 0x89, 0xfe, 0x3f, 
+        0x60, 0x8e, 0xfe, 0x3f, 0x80, 0x61, 0x00, 0x00, 0x94, 0x5e, 0x00, 0x40, 0x51, 0xfe, 0xff, 0x0c, 
+        0x07, 0x21, 0xfa, 0xff, 0x12, 0xc1, 0xe0, 0x32, 0xa1, 0x04, 0x6d, 0x03, 0x09, 0x61, 0x48, 0x02, 
+        0x02, 0xc1, 0x14, 0x22, 0xc2, 0x10, 0x32, 0x54, 0x02, 0x41, 0xf5, 0xff, 0x32, 0xc1, 0x10, 0x09, 
+        0x11, 0x39, 0x01, 0x32, 0xa4, 0x80, 0x01, 0x4a, 0xfe, 0xc0, 0x00, 0x00, 0x28, 0x41, 0x38, 0x51, 
+        0x42, 0xa0, 0x60, 0x01, 0xf1, 0xff, 0xc0, 0x00, 0x00, 0x08, 0x61, 0x12, 0xc1, 0x20, 0x0d, 0xf0, 
+        0x4c, 0x08, 0x10, 0x40, 0x4c, 0x54, 0x00, 0x40, 0x8c, 0x60, 0x00, 0x40, 0x12, 0xc1, 0xf0, 0x29, 
+        0x01, 0x09, 0x11, 0x01, 0x1f, 0xff, 0xc0, 0x00, 0x00, 0x01, 0xe4, 0xff, 0x29, 0x00, 0x21, 0xf8, 
+        0xff, 0x01, 0xf8, 0xff, 0xc0, 0x00, 0x00, 0x31, 0xe1, 0xff, 0x38, 0x03, 0x28, 0x01, 0x22, 0x53, 
+        0x03, 0x01, 0xf5, 0xff, 0xc0, 0x00, 0x00, 0x45, 0xf8, 0xff, 0x08, 0x11, 0x12, 0xc1, 0x10, 0x0d, 
+        0xf0, 0x00, 0x00, 0x00, 0x80, 0x51, 0x00, 0x40, 0x08, 0x58, 0x00, 0x40, 0x0c, 0x02, 0x1c, 0x03, 
+        0x12, 0xc1, 0xf0, 0x09, 0x01, 0x01, 0xfb, 0xff, 0xc0, 0x00, 0x00, 0x3d, 0x02, 0x01, 0xfa, 0xff, 
+        0xc0, 0x00, 0x00, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0x0c, 0x02, 0x0c, 0x03, 
+        0x12, 0xc1, 0xf0, 0x09, 0x01, 0x01, 0xf3, 0xff, 0xc0, 0x00, 0x00, 0x3d, 0x02, 0x01, 0xf2, 0xff, 
+        0xc0, 0x00, 0x00, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0x12, 0xc1, 0xf0, 0x22, 
+        0x22, 0x01, 0x02, 0x61, 0x00, 0x02, 0x02, 0x07, 0x32, 0x02, 0x06, 0x80, 0x00, 0x11, 0x30, 0x00, 
+        0x20, 0x32, 0x02, 0x05, 0x80, 0x00, 0x11, 0x30, 0x00, 0x20, 0x32, 0x02, 0x04, 0x80, 0x00, 0x11, 
+        0x30, 0x00, 0x20, 0x66, 0x70, 0x05, 0x22, 0xc2, 0x0c, 0x85, 0xa6, 0xff, 0x08, 0x01, 0x12, 0xc1, 
+        0x10, 0x0d, 0xf0, 0x00, 0x00, 0x0e, 0x00, 0x60, 0x20, 0x53, 0xc0, 0x3b, 0x45, 0x50, 0x45, 0xb3, 
+        0x40, 0x42, 0x21, 0x1b, 0x34, 0xa6, 0x13, 0x17, 0x20, 0x63, 0xa0, 0x31, 0xfa, 0xff, 0xc0, 0x20, 
+        0x00, 0x78, 0x02, 0xc0, 0x20, 0x00, 0x72, 0x63, 0x80, 0x4b, 0x22, 0x4b, 0x33, 0x67, 0x92, 0xed, 
+        0x0d, 0xf0, 0x00, 0x00, 0x20, 0x63, 0xc0, 0x3b, 0x56, 0x60, 0x56, 0xb3, 0x50, 0x52, 0x21, 0x1b, 
+        0x55, 0xa6, 0x15, 0x1a, 0x61, 0xf0, 0xff, 0x31, 0xef, 0xff, 0x60, 0x65, 0xa0, 0xc0, 0x20, 0x00, 
+        0x72, 0x23, 0x80, 0xc0, 0x20, 0x00, 0x79, 0x02, 0x4b, 0x33, 0x4b, 0x22, 0x67, 0x93, 0xed, 0x0d, 
+        0xf0, 0x00, 0x00, 0x00, 0xe0, 0xef, 0xfe, 0x3f, 0x20, 0x73, 0x04, 0x20, 0x61, 0x04, 0x20, 0x50, 
+        0x04, 0x12, 0xc1, 0xe0, 0x09, 0x31, 0xc9, 0x41, 0x6a, 0x55, 0xc1, 0xfa, 0xff, 0x20, 0x62, 0x04, 
+        0x7a, 0x66, 0x20, 0x05, 0x04, 0x20, 0x76, 0x04, 0x7a, 0x00, 0x20, 0x74, 0x04, 0x7a, 0x00, 0x6a, 
+        0x00, 0x5a, 0x00, 0x30, 0x53, 0x24, 0x00, 0x20, 0x74, 0x0c, 0x40, 0xf6, 0x52, 0x01, 0x0d, 0x02, 
+        0x00, 0x20, 0x90, 0x1c, 0xd0, 0x50, 0x22, 0x90, 0x20, 0x20, 0x74, 0x27, 0x30, 0x01, 0x0d, 0x02, 
+        0x0c, 0x42, 0x00, 0x50, 0x74, 0x0c, 0x13, 0x08, 0x0c, 0x40, 0x45, 0xb0, 0x68, 0x14, 0x02, 0x20, 
+        0x2b, 0x48, 0x04, 0x60, 0x79, 0x84, 0x79, 0x11, 0x40, 0x50, 0x84, 0x60, 0x60, 0x84, 0x69, 0x21, 
+        0x59, 0x01, 0x40, 0x49, 0x84, 0xc0, 0x00, 0x00, 0x48, 0x11, 0x08, 0x0c, 0x0c, 0x52, 0x02, 0x20, 
+        0x2b, 0x0c, 0x13, 0xc0, 0x00, 0x00, 0x48, 0x01, 0x08, 0x0c, 0x0c, 0x42, 0x02, 0x20, 0x2b, 0x0c, 
+        0x23, 0xc0, 0x00, 0x00, 0x48, 0x21, 0x08, 0x0c, 0x0c, 0x52, 0x02, 0x20, 0x2b, 0x0c, 0x23, 0xc0, 
+        0x00, 0x00, 0xc8, 0x41, 0x08, 0x31, 0x12, 0xc1, 0x20, 0x0d, 0xf0, 0x00, 0x24, 0x83, 0xfe, 0x3f, 
+        0x7c, 0x83, 0xfe, 0x3f, 0x00, 0x00, 0x80, 0x00, 0x98, 0x83, 0xfe, 0x3f, 0xa4, 0x83, 0xfe, 0x3f, 
+        0x14, 0x1d, 0x00, 0x40, 0xad, 0x05, 0x9d, 0x06, 0x12, 0xc1, 0xb0, 0x29, 0xd1, 0x09, 0x51, 0xf9, 
+        0x91, 0xc9, 0x61, 0x39, 0xf1, 0xe9, 0x81, 0xd9, 0x71, 0x49, 0xa1, 0xd1, 0xca, 0xff, 0x6c, 0xf4, 
+        0xed, 0x07, 0x31, 0x62, 0xfe, 0xc0, 0x20, 0x00, 0x22, 0x23, 0xe4, 0x40, 0x22, 0x10, 0xc0, 0x20, 
+        0x00, 0x1c, 0x24, 0x0c, 0x75, 0x0c, 0x06, 0x0c, 0x07, 0xa9, 0xb1, 0x99, 0xe1, 0x08, 0x0d, 0x22, 
+        0x63, 0xe4, 0x22, 0xa0, 0x77, 0x02, 0x20, 0x27, 0x0c, 0x03, 0xc0, 0x00, 0x00, 0x22, 0xa0, 0x77, 
+        0x0c, 0x03, 0x0c, 0x94, 0x0c, 0x75, 0x08, 0x0d, 0x0c, 0x06, 0x02, 0x20, 0x27, 0x0c, 0x07, 0xc0, 
+        0x00, 0x00, 0x0c, 0x13, 0x0c, 0x52, 0x0c, 0x0c, 0x48, 0xd1, 0xc2, 0x61, 0x13, 0x40, 0x23, 0x93, 
+        0x29, 0xc1, 0x08, 0xc1, 0xf2, 0x21, 0x13, 0x07, 0x2f, 0x02, 0x06, 0xa7, 0x00, 0x16, 0x4f, 0x28, 
+        0x0b, 0x3f, 0x16, 0x43, 0x28, 0x42, 0xcf, 0xfe, 0x16, 0x34, 0x28, 0x52, 0xcf, 0xfd, 0x16, 0xb5, 
+        0x2a, 0x62, 0xcf, 0xfc, 0x16, 0x06, 0x2b, 0x0c, 0x0c, 0x0c, 0x07, 0x72, 0x61, 0x10, 0x32, 0x21, 
+        0x13, 0x0c, 0x82, 0x08, 0x0d, 0x0c, 0x0f, 0x02, 0x20, 0x34, 0x30, 0xf2, 0x83, 0x2d, 0x0f, 0xc0, 
+        0x00, 0x00, 0x42, 0x21, 0x13, 0xf6, 0x24, 0x13, 0x0c, 0x02, 0x3d, 0x0f, 0x42, 0xa1, 0xf4, 0x08, 
+        0x0d, 0x0c, 0xc5, 0x02, 0x20, 0x3a, 0x62, 0xc1, 0x10, 0xc0, 0x00, 0x00, 0x0c, 0x02, 0xd1, 0x9d, 
+        0xff, 0x32, 0xa1, 0x04, 0x08, 0x0d, 0x4d, 0x0c, 0x02, 0x20, 0x15, 0x1c, 0x65, 0xc0, 0x00, 0x00, 
+        0x2d, 0x0c, 0x1c, 0x63, 0x48, 0xb1, 0x05, 0xe6, 0xff, 0xac, 0xde, 0x7d, 0x0c, 0x6d, 0x0f, 0x21, 
+        0xbf, 0xff, 0x0c, 0x03, 0x1c, 0x6a, 0xa9, 0x01, 0x92, 0x01, 0x10, 0x42, 0xa1, 0x04, 0x80, 0x99, 
+        0x01, 0x90, 0x98, 0x31, 0x99, 0x11, 0x82, 0x01, 0x11, 0x52, 0x21, 0x10, 0x80, 0x88, 0x01, 0x80, 
+        0x88, 0x31, 0x89, 0x21, 0x01, 0xbb, 0xff, 0xc0, 0x00, 0x00, 0xd1, 0x8a, 0xff, 0x08, 0x0d, 0x02, 
+        0x20, 0x10, 0x0c, 0x12, 0xc0, 0x00, 0x00, 0x0c, 0x0f, 0x0c, 0x12, 0x38, 0xf1, 0x42, 0x21, 0x10, 
+        0x0c, 0x05, 0x0c, 0x06, 0x69, 0x01, 0x69, 0x11, 0x69, 0x21, 0x08, 0x0d, 0x0c, 0x07, 0x02, 0x20, 
+        0x1a, 0x0c, 0x06, 0xc0, 0x00, 0x00, 0x08, 0x0d, 0x0c, 0x12, 0x08, 0xd0, 0x32, 0xa4, 0x00, 0xc0, 
+        0x00, 0x00, 0xc0, 0x20, 0x00, 0x08, 0x0d, 0xc1, 0x15, 0xfe, 0x08, 0xc0, 0xc2, 0x2c, 0xf9, 0xc0, 
+        0x00, 0x00, 0x8c, 0xde, 0x21, 0xa3, 0xff, 0xc0, 0x38, 0x21, 0x41, 0x88, 0xfe, 0x01, 0xa4, 0xff, 
+        0xc0, 0x00, 0x00, 0x21, 0xa0, 0xff, 0x02, 0x21, 0x10, 0xc7, 0xa2, 0x10, 0x22, 0xc0, 0x18, 0x1b, 
+        0xff, 0xf0, 0xf0, 0x74, 0x20, 0x00, 0x74, 0x02, 0x61, 0x10, 0x66, 0x2f, 0x9b, 0x02, 0x2d, 0x00, 
+        0x02, 0x20, 0x1b, 0x22, 0xa0, 0x01, 0xc0, 0x00, 0x00, 0xc2, 0xa0, 0x00, 0x0c, 0x0f, 0x0c, 0x0d, 
+        0x0c, 0x02, 0x0c, 0x03, 0x32, 0x61, 0x11, 0x22, 0x61, 0x12, 0x0c, 0xe2, 0x38, 0xf1, 0x42, 0x21, 
+        0x10, 0x52, 0xc1, 0x12, 0x68, 0xe1, 0x7d, 0x0e, 0x05, 0x5e, 0x05, 0x9c, 0xbe, 0x21, 0x8e, 0xff, 
+        0x3d, 0x0c, 0x52, 0x01, 0x13, 0x42, 0x01, 0x12, 0x80, 0x55, 0x01, 0x80, 0x44, 0x01, 0x40, 0x48, 
+        0x31, 0x50, 0x58, 0x31, 0x01, 0x8b, 0xff, 0xc0, 0x00, 0x00, 0xbc, 0x0c, 0x22, 0x01, 0x12, 0x01, 
+        0x59, 0xff, 0x80, 0x22, 0x01, 0x08, 0x00, 0x20, 0x28, 0x31, 0x08, 0x00, 0x20, 0x2d, 0xc0, 0xc0, 
+        0x00, 0x00, 0xe6, 0x22, 0x18, 0x22, 0x01, 0x13, 0x01, 0x53, 0xff, 0x80, 0x22, 0x01, 0x08, 0x00, 
+        0x20, 0x28, 0x31, 0x08, 0x00, 0x20, 0x2f, 0xc0, 0xc0, 0x00, 0x00, 0xa6, 0x22, 0x31, 0x32, 0x21, 
+        0x12, 0x22, 0x21, 0x11, 0xd2, 0x01, 0x12, 0xf2, 0x01, 0x13, 0x1b, 0xcc, 0xc0, 0xc0, 0x74, 0x80, 
+        0xff, 0x01, 0x80, 0xdd, 0x01, 0xd0, 0xd8, 0x31, 0xf0, 0xf8, 0x31, 0x2a, 0x2f, 0x3a, 0x3d, 0x32, 
+        0x61, 0x12, 0x22, 0x61, 0x11, 0x26, 0x4c, 0x02, 0x86, 0xdb, 0xff, 0x0c, 0x00, 0x46, 0x00, 0x00, 
+        0x0c, 0x10, 0x6c, 0x13, 0x56, 0x40, 0x09, 0xd2, 0x21, 0x12, 0x02, 0x21, 0x11, 0x2b, 0xdd, 0x2b, 
+        0x00, 0x00, 0x02, 0x21, 0xd0, 0xd2, 0x21, 0x80, 0xdd, 0x01, 0xd0, 0xd8, 0x31, 0x7c, 0x12, 0x80, 
+        0xf0, 0x01, 0xf0, 0xf8, 0x31, 0x0d, 0x02, 0x27, 0x2d, 0x01, 0x0d, 0x0d, 0x0c, 0xf2, 0x7d, 0x02, 
+        0xe6, 0xb0, 0x01, 0x7d, 0x00, 0x0d, 0x03, 0x80, 0xd7, 0x01, 0xd0, 0xd8, 0x31, 0x37, 0x2f, 0x01, 
+        0x0d, 0x0f, 0x1c, 0xff, 0x7d, 0x0f, 0xe6, 0xc0, 0x01, 0x7d, 0x00, 0x80, 0xf7, 0x01, 0x08, 0xd1, 
+        0xf0, 0xf8, 0x31, 0xdc, 0x50, 0x38, 0xa1, 0x70, 0x00, 0x54, 0xd0, 0x20, 0x44, 0xa0, 0x22, 0x11, 
+        0x20, 0x00, 0x20, 0x22, 0x21, 0x13, 0x30, 0x22, 0x90, 0x02, 0x52, 0x00, 0x8c, 0xee, 0x5d, 0x0f, 
+        0x4d, 0x0d, 0x21, 0x52, 0xff, 0x32, 0x21, 0x13, 0x01, 0x52, 0xff, 0xc0, 0x00, 0x00, 0xc0, 0x50, 
+        0x14, 0xd1, 0x20, 0xff, 0x32, 0x21, 0x13, 0x68, 0x1d, 0x1b, 0x43, 0x40, 0x30, 0x74, 0x32, 0x61, 
+        0x13, 0xe0, 0x66, 0x11, 0x60, 0x55, 0x20, 0x59, 0x1d, 0x46, 0x65, 0xff, 0x02, 0x01, 0x13, 0x22, 
+        0x01, 0x12, 0x80, 0x00, 0x01, 0x80, 0x22, 0x01, 0x20, 0x28, 0x31, 0x00, 0x08, 0x31, 0xfa, 0x00, 
+        0xda, 0xd2, 0x1b, 0xdd, 0x1b, 0x00, 0x00, 0x01, 0x21, 0xd0, 0xd1, 0x21, 0x80, 0xdd, 0x01, 0xd0, 
+        0xd8, 0x31, 0xc6, 0xd5, 0xff, 0x0c, 0x0c, 0x86, 0x63, 0xff, 0x4c, 0x0c, 0x46, 0x62, 0xff, 0xc2, 
+        0xa0, 0x60, 0x0c, 0xf2, 0x22, 0x61, 0x10, 0xc6, 0x60, 0xff, 0x1c, 0x05, 0xc0, 0x20, 0x00, 0x41, 
+        0xa3, 0xfd, 0x32, 0x24, 0xe4, 0x50, 0x33, 0x20, 0xc0, 0x20, 0x00, 0x32, 0x64, 0xe4, 0xc8, 0x61, 
+        0xd8, 0x71, 0xe8, 0x81, 0xf8, 0x91, 0x08, 0x51, 0x12, 0xc1, 0x50, 0x0d, 0xf0, 0xc2, 0xa0, 0x70, 
+        0x2c, 0x86, 0x62, 0x61, 0x10, 0x46, 0x55, 0xff, 0xc2, 0xa0, 0x78, 0x4c, 0x17, 0x72, 0x61, 0x10, 
+        0x86, 0x52, 0xff, 0x00, 0xc8, 0x83, 0xfe, 0x3f, 0x10, 0x80, 0xfe, 0x3f, 0x12, 0xc1, 0xc0, 0xc9, 
+        0x21, 0xd9, 0x31, 0xe9, 0x41, 0xf9, 0x51, 0x09, 0x11, 0x59, 0xa1, 0x79, 0x91, 0x29, 0x71, 0x49, 
+        0x81, 0x22, 0xa0, 0x7f, 0x80, 0x43, 0x01, 0x40, 0x48, 0x31, 0x40, 0x32, 0xa3, 0x39, 0x61, 0xe6, 
+        0x13, 0x02, 0x46, 0x40, 0x00, 0x0c, 0x0c, 0x0c, 0x00, 0x0c, 0x0f, 0x58, 0xa1, 0x0b, 0x76, 0xdd, 
+        0x05, 0x7a, 0x55, 0x59, 0xb1, 0x1c, 0x83, 0xa2, 0x0d, 0x00, 0xf0, 0x6c, 0xc0, 0x80, 0xe6, 0x01, 
+        0xe0, 0xe8, 0x31, 0x80, 0xaa, 0x01, 0xa0, 0xa8, 0x31, 0xa7, 0x2e, 0x3e, 0x80, 0x66, 0x01, 0x28, 
+        0xb1, 0x60, 0x68, 0x31, 0x27, 0xad, 0x33, 0xa0, 0x70, 0x74, 0xcc, 0xa7, 0x82, 0x0d, 0x01, 0x80, 
+        0x88, 0x01, 0x80, 0x88, 0x31, 0x87, 0x26, 0x22, 0xd8, 0xa1, 0x1b, 0x00, 0xa0, 0x20, 0x74, 0x2a, 
+        0xff, 0x00, 0x00, 0x74, 0x0a, 0xdd, 0xf0, 0x6c, 0xc0, 0x80, 0xe6, 0x01, 0xa2, 0x0d, 0x00, 0xe0, 
+        0xe8, 0x31, 0x80, 0xaa, 0x01, 0xa0, 0xa8, 0x31, 0xa7, 0xae, 0xc0, 0x09, 0xc1, 0x37, 0x2e, 0x0d, 
+        0x62, 0xce, 0xe8, 0x0c, 0xfe, 0x80, 0x66, 0x01, 0x60, 0x68, 0x31, 0x86, 0x09, 0x00, 0xe0, 0x2e, 
+        0x20, 0x32, 0xa0, 0x06, 0x85, 0x1e, 0x09, 0x0d, 0x02, 0x0c, 0x63, 0x2d, 0x0e, 0x00, 0x10, 0x40, 
+        0x0c, 0x1e, 0x00, 0xee, 0xa1, 0x0b, 0xee, 0xe0, 0xe0, 0xf4, 0xc5, 0x23, 0x09, 0x08, 0xc1, 0x80, 
+        0x62, 0x01, 0x60, 0x68, 0x31, 0xa6, 0x56, 0x04, 0x0c, 0x56, 0x86, 0x00, 0x00, 0x60, 0x60, 0xf4, 
+        0x09, 0xc1, 0x69, 0x01, 0x78, 0x91, 0x98, 0x81, 0x88, 0x71, 0x90, 0x90, 0x90, 0x42, 0x19, 0x00, 
+        0x80, 0x8c, 0x90, 0x40, 0x4e, 0xb0, 0x4a, 0x46, 0x40, 0x40, 0xf4, 0x42, 0x58, 0x00, 0x9c, 0x47, 
+        0x52, 0x19, 0x00, 0x21, 0xc0, 0xff, 0x3d, 0x0c, 0x6d, 0x0e, 0x78, 0x01, 0x01, 0xe9, 0xfe, 0xc0, 
+        0x00, 0x00, 0x08, 0xc1, 0x68, 0x01, 0x0c, 0xfa, 0xa7, 0x9e, 0x0b, 0x66, 0x56, 0x08, 0xb1, 0xba, 
+        0xff, 0xc2, 0x4b, 0x00, 0xc6, 0x03, 0x00, 0xe8, 0x61, 0x1b, 0xcc, 0x80, 0xcc, 0x01, 0xc0, 0xc8, 
+        0x31, 0xe0, 0xec, 0xc0, 0x56, 0xde, 0xf0, 0xc8, 0x21, 0xd8, 0x31, 0xe8, 0x41, 0xf8, 0x51, 0x08, 
+        0x11, 0x12, 0xc1, 0x40, 0x0d, 0xf0, 0x00, 0x00, 0x12, 0xc1, 0xf0, 0xc9, 0x11, 0x09, 0x01, 0xcd, 
+        0x02, 0x1c, 0x70, 0x27, 0x20, 0x1d, 0x1c, 0x12, 0xc7, 0x22, 0x12, 0xe6, 0xac, 0x09, 0x4c, 0x00, 
+        0xe6, 0x6c, 0x13, 0x0c, 0x00, 0x86, 0x03, 0x00, 0x02, 0xa0, 0x60, 0x06, 0x02, 0x00, 0x02, 0xa0, 
+        0x70, 0x86, 0x00, 0x00, 0x02, 0xa0, 0x78, 0x21, 0x9f, 0xfe, 0x00, 0x40, 0xf4, 0x02, 0x22, 0x00, 
+        0x32, 0xa0, 0x01, 0x02, 0x20, 0x2b, 0x22, 0xa0, 0x03, 0xc0, 0x00, 0x00, 0x2d, 0x0c, 0x0c, 0x63, 
+        0x45, 0x17, 0x09, 0x0c, 0x23, 0x0c, 0x65, 0xd0, 0x42, 0x11, 0x01, 0x96, 0xfe, 0x0c, 0x32, 0x08, 
+        0x00, 0x50, 0x44, 0x20, 0x02, 0x20, 0x2b, 0x40, 0x40, 0xf4, 0xc0, 0x00, 0x00, 0xc8, 0x11, 0x08, 
+        0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x60, 0x00, 0x00, 0x03, 0x00, 
+        0xa0, 0x0f, 0x00, 0x00, 0xff, 0xff, 0xfc, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x9e, 0x00, 0x60, 
+        0x9d, 0x04, 0x12, 0xc1, 0xa0, 0xc9, 0xb1, 0x29, 0x71, 0x09, 0xa1, 0xe9, 0xd1, 0x4d, 0x05, 0xf9, 
+        0xe1, 0xd9, 0xc1, 0x0c, 0x4f, 0xd1, 0xf4, 0xff, 0x49, 0x61, 0x92, 0x61, 0x12, 0xed, 0x06, 0x08, 
+        0x02, 0x6d, 0x07, 0x62, 0x61, 0x11, 0x00, 0x00, 0x05, 0x56, 0xd0, 0x1d, 0x41, 0xf0, 0xff, 0xc1, 
+        0x7d, 0xfe, 0x31, 0x16, 0xfd, 0xc0, 0x20, 0x00, 0x22, 0x23, 0xf2, 0x40, 0x22, 0x20, 0xc0, 0x20, 
+        0x00, 0x22, 0x63, 0xf2, 0xc0, 0x20, 0x00, 0x08, 0x0c, 0x22, 0xa1, 0xe0, 0x02, 0x20, 0x28, 0x22, 
+        0x6d, 0x1a, 0xc0, 0x00, 0x00, 0x22, 0xa0, 0x77, 0x0c, 0x03, 0x1c, 0x24, 0x08, 0x0c, 0x0c, 0x75, 
+        0x02, 0x20, 0x25, 0x0c, 0x06, 0xc0, 0x00, 0x00, 0x0c, 0x03, 0x1c, 0x84, 0x0c, 0x55, 0x0c, 0x56, 
+        0x08, 0x0c, 0x29, 0x81, 0x02, 0x20, 0x25, 0x22, 0xa0, 0x77, 0xc0, 0x00, 0x00, 0x0c, 0x03, 0x1c, 
+        0x84, 0x0c, 0x55, 0x0c, 0x56, 0x0c, 0x07, 0x08, 0x0c, 0x29, 0x91, 0x02, 0x20, 0x27, 0x22, 0xa0, 
+        0x77, 0xc0, 0x00, 0x00, 0x22, 0xa0, 0x77, 0x0c, 0x03, 0x1c, 0x24, 0x0c, 0x75, 0x08, 0x0c, 0x0c, 
+        0x06, 0x02, 0x20, 0x27, 0x0c, 0x07, 0xc0, 0x00, 0x00, 0x16, 0xbe, 0x0d, 0x0c, 0x06, 0x0c, 0x0c, 
+        0x22, 0x01, 0x68, 0x29, 0xf1, 0x22, 0x21, 0x11, 0x20, 0x2c, 0x90, 0x22, 0x12, 0x00, 0xf0, 0x9f, 
+        0x20, 0x20, 0x00, 0xe4, 0x20, 0x84, 0x04, 0x20, 0x47, 0x04, 0x20, 0x76, 0x04, 0x20, 0x35, 0x04, 
+        0x20, 0x59, 0x04, 0x20, 0xb8, 0x04, 0x50, 0xbb, 0x80, 0x70, 0x33, 0x80, 0x4a, 0xbb, 0x3a, 0xbb, 
+        0x1c, 0xd3, 0x20, 0x23, 0x04, 0x8a, 0x22, 0x2a, 0xbb, 0xb0, 0xb0, 0x74, 0xb7, 0x3f, 0x01, 0x9d, 
+        0x0b, 0x62, 0x61, 0x13, 0x00, 0xb0, 0x24, 0x90, 0xa0, 0x74, 0x9d, 0x03, 0xa0, 0xaa, 0x90, 0xb0, 
+        0xaa, 0x90, 0xa0, 0xa0, 0xf4, 0xa7, 0x33, 0x01, 0x9d, 0x0a, 0x90, 0x20, 0xf4, 0x22, 0x61, 0x10, 
+        0x00, 0x02, 0x40, 0x60, 0xb0, 0x91, 0x07, 0xeb, 0x5b, 0x00, 0x20, 0xb4, 0xc5, 0x5f, 0x02, 0x21, 
+        0xb4, 0xff, 0x32, 0xc1, 0x10, 0x01, 0x3f, 0xfe, 0x0c, 0xa4, 0x08, 0x00, 0x58, 0xf1, 0x02, 0x20, 
+        0x3b, 0x0c, 0x06, 0xc0, 0x00, 0x00, 0x62, 0x21, 0x13, 0x0c, 0x18, 0x32, 0x21, 0x12, 0x42, 0x91, 
+        0x08, 0x22, 0x91, 0x09, 0x92, 0x21, 0x10, 0x52, 0x91, 0x0a, 0x72, 0x91, 0x0b, 0x50, 0x50, 0x84, 
+        0x70, 0x70, 0x84, 0x00, 0x19, 0x40, 0x20, 0x20, 0x84, 0x40, 0x40, 0x84, 0x30, 0x39, 0xb0, 0x70, 
+        0x44, 0x11, 0x70, 0x22, 0x11, 0x00, 0x88, 0xa1, 0x80, 0x66, 0x20, 0x70, 0x22, 0x20, 0x50, 0x44, 
+        0x20, 0x49, 0x03, 0x29, 0x13, 0x1b, 0xcc, 0xc0, 0xc0, 0x74, 0xc0, 0x4e, 0xc0, 0x56, 0x44, 0xf3, 
+        0xc1, 0x29, 0xfe, 0x08, 0xf1, 0x86, 0x00, 0x00, 0x02, 0x01, 0x68, 0x72, 0x01, 0x64, 0x62, 0x01, 
+        0x60, 0x0c, 0x02, 0x0c, 0x83, 0x48, 0x61, 0x52, 0x21, 0x12, 0x09, 0x01, 0x45, 0x94, 0xff, 0x41, 
+        0x95, 0xff, 0xc0, 0x20, 0x00, 0x31, 0xb9, 0xfc, 0x22, 0x23, 0xf2, 0x40, 0x22, 0x10, 0xc0, 0x20, 
+        0x00, 0x78, 0x91, 0x1c, 0x84, 0x0c, 0x55, 0x0c, 0x56, 0x22, 0x63, 0xf2, 0x08, 0x0c, 0x22, 0xa0, 
+        0x77, 0x02, 0x20, 0x27, 0x0c, 0x03, 0xc0, 0x00, 0x00, 0x78, 0x81, 0x22, 0xa0, 0x77, 0x0c, 0x03, 
+        0x1c, 0x24, 0x08, 0x0c, 0x0c, 0x75, 0x02, 0x20, 0x27, 0x0c, 0x06, 0xc0, 0x00, 0x00, 0x08, 0x0c, 
+        0x02, 0x20, 0x32, 0xc0, 0x00, 0x00, 0x08, 0x0c, 0x02, 0x20, 0x31, 0xc0, 0x00, 0x00, 0x08, 0x0c, 
+        0x02, 0x20, 0x2f, 0xc0, 0x00, 0x00, 0x62, 0x21, 0x11, 0x92, 0x21, 0x12, 0x38, 0x71, 0x51, 0x7e, 
+        0xff, 0x28, 0x03, 0x48, 0x61, 0x50, 0x22, 0x20, 0x29, 0x03, 0x16, 0x5e, 0x0d, 0xa1, 0x7b, 0xff, 
+        0x0c, 0x0c, 0x60, 0x0c, 0x90, 0x02, 0x10, 0x00, 0x1c, 0xd3, 0x00, 0x78, 0x04, 0x00, 0xb4, 0x04, 
+        0x00, 0x83, 0x04, 0xba, 0x88, 0x00, 0xf6, 0x04, 0x00, 0xb5, 0x04, 0xfa, 0xbb, 0x00, 0xf9, 0x04, 
+        0xfa, 0x77, 0x00, 0xf7, 0x04, 0x00, 0x00, 0xe4, 0xfa, 0x77, 0xba, 0x77, 0x0c, 0x4f, 0x2d, 0x0f, 
+        0x8a, 0x77, 0x00, 0x80, 0x24, 0x70, 0x70, 0x74, 0xf6, 0x57, 0x01, 0x2d, 0x07, 0x20, 0x50, 0x74, 
+        0x2d, 0x03, 0x50, 0x75, 0x90, 0x80, 0x77, 0x90, 0x70, 0x70, 0xf4, 0x77, 0x33, 0x01, 0x2d, 0x07, 
+        0x20, 0xb0, 0xf4, 0x90, 0xbb, 0xb0, 0x78, 0x1b, 0xb8, 0x0b, 0x70, 0xf9, 0x84, 0xb0, 0x30, 0x84, 
+        0x70, 0x70, 0x84, 0xb0, 0xb9, 0x84, 0xc0, 0x20, 0x00, 0x80, 0xbb, 0x11, 0xf0, 0x80, 0x01, 0x1c, 
+        0xe2, 0x22, 0x6d, 0x1a, 0xba, 0x88, 0x30, 0xb1, 0x41, 0xa0, 0x2c, 0xa0, 0xba, 0x88, 0xc0, 0x20, 
+        0x00, 0x89, 0x02, 0xc0, 0x20, 0x00, 0x1c, 0xfb, 0xb2, 0x6d, 0x1a, 0xc0, 0x20, 0x00, 0x10, 0x33, 
+        0x01, 0xa0, 0xff, 0x01, 0x89, 0x02, 0x3a, 0xff, 0x40, 0x35, 0x90, 0x32, 0x13, 0x00, 0x30, 0x77, 
+        0x11, 0x30, 0x30, 0xa4, 0x70, 0x33, 0xa0, 0x3a, 0xff, 0xc0, 0x20, 0x00, 0x72, 0xa1, 0xe0, 0x72, 
+        0x6d, 0x1a, 0xc0, 0x20, 0x00, 0xf9, 0x02, 0xc0, 0x20, 0x00, 0x32, 0xa1, 0xe1, 0x32, 0x6d, 0x1a, 
+        0xc0, 0x20, 0x00, 0xf9, 0x02, 0x1b, 0xcc, 0x22, 0x21, 0x14, 0xc0, 0xc0, 0x74, 0xc0, 0x7e, 0xc0, 
+        0x56, 0xe7, 0xf2, 0xc8, 0xb1, 0xd8, 0xc1, 0xe8, 0xd1, 0xf8, 0xe1, 0x08, 0xa1, 0x12, 0xc1, 0x60, 
+        0x0d, 0xf0, 0x00, 0x00, 0x12, 0xc1, 0xc0, 0xd2, 0x61, 0x0c, 0xc2, 0x61, 0x0b, 0x09, 0xa1, 0xcd, 
+        0x02, 0x21, 0x62, 0xfc, 0xc0, 0x20, 0x00, 0x52, 0x22, 0xe3, 0x50, 0x59, 0x21, 0xc0, 0x20, 0x00, 
+        0x42, 0x22, 0xe0, 0x40, 0x49, 0x21, 0x5a, 0x44, 0xc0, 0x20, 0x00, 0x52, 0x22, 0xe2, 0x50, 0x59, 
+        0x21, 0xc0, 0x20, 0x00, 0x02, 0x22, 0xe1, 0x00, 0x09, 0x21, 0x50, 0x00, 0xc0, 0x09, 0x31, 0xc0, 
+        0x20, 0x00, 0x62, 0x22, 0xf7, 0x60, 0x68, 0x21, 0x69, 0x01, 0xc0, 0x20, 0x00, 0x52, 0x22, 0xf8, 
+        0x50, 0x58, 0x21, 0x59, 0x11, 0xc0, 0x20, 0x00, 0x22, 0x22, 0xf9, 0x7c, 0xcd, 0x52, 0xc3, 0xfe, 
+        0x00, 0x0f, 0x31, 0x09, 0x21, 0x00, 0x05, 0x40, 0xd0, 0xd3, 0x90, 0x40, 0x5f, 0x31, 0x20, 0x20, 
+        0xb1, 0x29, 0x0c, 0x3d, 0x05, 0x2d, 0x04, 0x85, 0x2d, 0x08, 0x29, 0x51, 0x39, 0x41, 0x58, 0x21, 
+        0x48, 0x31, 0x3d, 0x05, 0x2d, 0x04, 0x85, 0x2c, 0x08, 0x4d, 0x03, 0x68, 0x51, 0x38, 0x41, 0x2a, 
+        0x26, 0x4a, 0x33, 0x67, 0xb2, 0x01, 0x1b, 0x33, 0x4d, 0x0d, 0xc5, 0xe5, 0x08, 0x29, 0x1c, 0x48, 
+        0x01, 0x68, 0x11, 0x69, 0x71, 0x40, 0x5f, 0x31, 0x60, 0x6f, 0x31, 0x69, 0x61, 0x3d, 0x05, 0x2d, 
+        0x04, 0xc5, 0x29, 0x08, 0x29, 0x91, 0x39, 0x81, 0x58, 0x61, 0x48, 0x71, 0x3d, 0x05, 0x2d, 0x04, 
+        0xc5, 0x28, 0x08, 0x4d, 0x03, 0x88, 0x91, 0x38, 0x81, 0x2a, 0x28, 0x4a, 0x33, 0x87, 0xb2, 0x01, 
+        0x1b, 0x33, 0x4d, 0x0d, 0x05, 0xe2, 0x08, 0x08, 0xa1, 0x29, 0x2c, 0xd8, 0xc1, 0xc8, 0xb1, 0x12, 
+        0xc1, 0x40, 0x0d, 0xf0, 0x37, 0x22, 0x02, 0x27, 0xa4, 0x11, 0x00, 0x15, 0x40, 0x31, 0x91, 0xfd, 
+        0x0c, 0x14, 0x28, 0x23, 0x00, 0x44, 0xa1, 0x40, 0x22, 0x20, 0x29, 0x23, 0x0d, 0xf0, 0x00, 0x00, 
+        0xfd, 0x7f, 0xfd, 0xff, 0x82, 0xae, 0x00, 0x72, 0xa1, 0x42, 0x31, 0xfb, 0xfe, 0xc0, 0x20, 0x00, 
+        0x62, 0x23, 0x59, 0x80, 0x66, 0x10, 0x70, 0x66, 0x20, 0xc0, 0x20, 0x00, 0x62, 0x63, 0x59, 0x51, 
+        0xf8, 0xff, 0x0c, 0x24, 0xc0, 0x20, 0x00, 0x22, 0x23, 0x58, 0x50, 0x22, 0x10, 0x40, 0x22, 0x20, 
+        0xc0, 0x20, 0x00, 0x22, 0x63, 0x58, 0x0d, 0xf0, 0x00, 0x0a, 0xf2, 0x3f, 0x12, 0xc1, 0xe0, 0x09, 
+        0x11, 0x29, 0x01, 0xd9, 0x31, 0xe9, 0x41, 0xc9, 0x21, 0xed, 0x05, 0xc1, 0xeb, 0xfe, 0xd1, 0xfa, 
+        0xff, 0xc0, 0x20, 0x00, 0x02, 0x2c, 0x58, 0x49, 0x51, 0x17, 0xe0, 0x24, 0x2d, 0x03, 0x01, 0xf0, 
+        0xfc, 0xc0, 0x00, 0x00, 0x01, 0x74, 0xfd, 0x08, 0x00, 0x02, 0x20, 0x19, 0x28, 0x01, 0xc0, 0x00, 
+        0x00, 0x08, 0x51, 0xc0, 0x20, 0x00, 0x22, 0x2c, 0x58, 0x17, 0xe2, 0x13, 0x0c, 0x02, 0x06, 0x07, 
+        0x00, 0xc0, 0x20, 0x00, 0x52, 0x2d, 0x80, 0x40, 0x55, 0xc0, 0x57, 0xbe, 0xc3, 0xc6, 0x02, 0x00, 
+        0xc0, 0x20, 0x00, 0x62, 0x2d, 0x80, 0x00, 0x66, 0xc0, 0x67, 0xbe, 0xd6, 0x0c, 0x12, 0xc8, 0x21, 
+        0xd8, 0x31, 0xe8, 0x41, 0x08, 0x11, 0x12, 0xc1, 0x20, 0x0d, 0xf0, 0x00, 0xff, 0xff, 0xff, 0xf7, 
+        0x51, 0xff, 0xff, 0x31, 0xd1, 0xfe, 0xc0, 0x20, 0x00, 0x42, 0x23, 0x42, 0x50, 0x44, 0x10, 0xc0, 
+        0x20, 0x00, 0x42, 0x63, 0x42, 0xc0, 0x20, 0x00, 0x29, 0xb3, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x08, 
+        0xff, 0xff, 0xf7, 0xff, 0x41, 0xc9, 0xfe, 0xc0, 0x20, 0x00, 0x71, 0xfc, 0xff, 0x28, 0xb4, 0xc0, 
+        0x20, 0x00, 0x62, 0x24, 0x42, 0x70, 0x66, 0x20, 0xc0, 0x20, 0x00, 0x62, 0x64, 0x42, 0x51, 0xf8, 
+        0xff, 0xc0, 0x20, 0x00, 0x38, 0xb4, 0x50, 0x33, 0x10, 0xc0, 0x20, 0x00, 0x39, 0xb4, 0x0d, 0xf0, 
+        0x12, 0xc1, 0xf0, 0x02, 0x61, 0x00, 0x01, 0x4b, 0xfd, 0x02, 0x20, 0x00, 0x02, 0x20, 0x11, 0x32, 
+        0xa0, 0x80, 0xc0, 0x00, 0x00, 0xc5, 0x1a, 0x03, 0x22, 0xa0, 0x00, 0x08, 0x01, 0x12, 0xc1, 0x10, 
+        0x0d, 0xf0, 0x00, 0x00, 0xf0, 0xef, 0xfe, 0x3f, 0x0c, 0xf1, 0xfe, 0x3f, 0xec, 0xef, 0xfe, 0x3f, 
+        0x60, 0xf1, 0xfe, 0x3f, 0x12, 0xc1, 0xc0, 0xd2, 0x61, 0x07, 0xf2, 0x61, 0x09, 0xe9, 0x81, 0xc9, 
+        0x61, 0xc1, 0x3c, 0xfd, 0x09, 0x51, 0x08, 0x4c, 0xe2, 0xcc, 0x51, 0x00, 0x02, 0x05, 0x56, 0x20, 
+        0x16, 0x08, 0x0c, 0x02, 0x20, 0x28, 0xc0, 0x00, 0x00, 0x08, 0x0c, 0x02, 0x20, 0x30, 0x0c, 0x12, 
+        0xc0, 0x00, 0x00, 0xd1, 0x39, 0xfe, 0x22, 0x1d, 0x01, 0x20, 0x20, 0xb4, 0xc5, 0x33, 0x02, 0x22, 
+        0x1d, 0x01, 0x32, 0xc1, 0x10, 0x45, 0x52, 0x03, 0x08, 0x0c, 0x08, 0x60, 0x0c, 0x02, 0xc0, 0x00, 
+        0x00, 0xd2, 0x01, 0x12, 0x0c, 0x0c, 0xf1, 0xe7, 0xff, 0xf9, 0xa1, 0x4b, 0xff, 0x9c, 0x6c, 0x26, 
+        0x1c, 0x0f, 0x26, 0x2c, 0x07, 0x66, 0x3c, 0x10, 0x0c, 0xed, 0xc6, 0x02, 0x00, 0x0c, 0xbd, 0x86, 
+        0x01, 0x00, 0x0c, 0x6d, 0x46, 0x00, 0x00, 0x0c, 0x1d, 0xf0, 0x7f, 0x20, 0x62, 0x21, 0x0a, 0x42, 
+        0xa0, 0x64, 0x31, 0xdd, 0xff, 0x80, 0x2d, 0x01, 0x52, 0x93, 0x75, 0x20, 0x28, 0x31, 0x32, 0x03, 
+        0x91, 0x49, 0x01, 0x0c, 0x04, 0x45, 0xf3, 0x02, 0x4c, 0x02, 0x2c, 0x83, 0x0c, 0x24, 0x0c, 0x05, 
+        0xd0, 0x6d, 0x90, 0x6a, 0x6e, 0x45, 0x5e, 0x04, 0x1b, 0xcc, 0xc0, 0xc0, 0x74, 0x66, 0x4c, 0xac, 
+        0x01, 0xd3, 0xff, 0x0c, 0x0f, 0x0c, 0x3d, 0xd9, 0xb1, 0x0a, 0xef, 0x0c, 0xed, 0xc2, 0xa0, 0x00, 
+        0xf6, 0x6c, 0x22, 0xc0, 0x2c, 0x20, 0x32, 0xa0, 0x05, 0x02, 0x0e, 0x48, 0x09, 0xe1, 0x45, 0xb9, 
+        0x08, 0x3d, 0x02, 0x42, 0x0e, 0x57, 0x28, 0xe1, 0x01, 0xc9, 0xff, 0x20, 0x44, 0xc0, 0x40, 0x33, 
+        0x82, 0x3a, 0x22, 0xc6, 0x13, 0x00, 0x52, 0xa0, 0x0a, 0xc7, 0x35, 0x21, 0x32, 0xa0, 0x05, 0x22, 
+        0xcc, 0xfb, 0x42, 0x0e, 0x66, 0x52, 0x0e, 0x57, 0x52, 0x61, 0x0d, 0x50, 0x44, 0xc0, 0x40, 0x22, 
+        0x82, 0xc5, 0xaa, 0x08, 0x68, 0xd1, 0x01, 0xbd, 0xff, 0x6a, 0x22, 0xc6, 0x09, 0x00, 0x22, 0x0e, 
+        0x6f, 0x72, 0xa0, 0x0c, 0xc7, 0x37, 0x1e, 0xc0, 0x8c, 0xa0, 0x32, 0x0e, 0x66, 0x32, 0x61, 0x0c, 
+        0x82, 0xc8, 0xce, 0x30, 0x22, 0xc0, 0x20, 0x28, 0x82, 0x32, 0xa0, 0x16, 0x05, 0xa8, 0x08, 0x98, 
+        0xc1, 0x01, 0xb2, 0xff, 0x9a, 0x22, 0x0b, 0xdd, 0xc0, 0x3c, 0x90, 0x3a, 0x3f, 0x1b, 0xcc, 0xc0, 
+        0xc0, 0x74, 0x3a, 0x30, 0x22, 0x43, 0x48, 0x56, 0x5d, 0xf7, 0xc1, 0xee, 0xfc, 0x0c, 0xed, 0x48, 
+        0xb1, 0x1b, 0xff, 0xf0, 0xf0, 0x74, 0x0a, 0xef, 0x0b, 0x44, 0x49, 0xb1, 0x56, 0xd4, 0xf5, 0x08, 
+        0x0c, 0x02, 0x20, 0x32, 0xc0, 0x00, 0x00, 0x08, 0x0c, 0x02, 0x20, 0x31, 0xc0, 0x00, 0x00, 0x08, 
+        0x0c, 0x02, 0x20, 0x2f, 0xd1, 0xbb, 0xfb, 0xc0, 0x00, 0x00, 0x28, 0x4c, 0xd0, 0x22, 0x20, 0x29, 
+        0x4c, 0x46, 0x07, 0x00, 0x31, 0x9f, 0xff, 0x22, 0x03, 0x18, 0x32, 0x03, 0x18, 0x80, 0x22, 0x01, 
+        0x20, 0x28, 0x31, 0x80, 0x33, 0x01, 0x30, 0x38, 0x31, 0x30, 0x22, 0x90, 0x20, 0x2e, 0x80, 0x05, 
+        0x74, 0x02, 0xc2, 0x21, 0x06, 0xd2, 0x21, 0x07, 0xe8, 0x81, 0xf8, 0x91, 0x08, 0x51, 0x12, 0xc1, 
+        0x40, 0x0d, 0xf0, 0x00, 0x97, 0xf1, 0xfe, 0x3f, 0x32, 0xf0, 0xfe, 0x3f, 0x31, 0xf0, 0xfe, 0x3f, 
+        0x10, 0xf2, 0xfe, 0x3f, 0x79, 0xf1, 0xfe, 0x3f, 0x42, 0xa0, 0x00, 0x51, 0xfb, 0xff, 0x12, 0xc1, 
+        0xd0, 0xd9, 0x81, 0xf9, 0xa1, 0xc9, 0x71, 0x09, 0x61, 0xe9, 0x91, 0x02, 0xa0, 0x64, 0x62, 0xc5, 
+        0xbe, 0x72, 0xc5, 0xc2, 0xed, 0x03, 0xcd, 0x02, 0x31, 0xf3, 0xff, 0x80, 0x22, 0x01, 0x20, 0x28, 
+        0x31, 0x52, 0x95, 0xe2, 0x32, 0x03, 0x06, 0x09, 0x01, 0x05, 0xdd, 0x02, 0x31, 0xf0, 0xff, 0xc0, 
+        0x2c, 0x90, 0x3a, 0x22, 0x85, 0x6d, 0x02, 0x66, 0x6c, 0x02, 0xc5, 0x4e, 0x03, 0x0c, 0x0d, 0x21, 
+        0xec, 0xff, 0xf2, 0xc1, 0x10, 0xf0, 0x3d, 0x80, 0x20, 0x0d, 0x80, 0x02, 0x00, 0x00, 0x02, 0x43, 
+        0x00, 0xd2, 0xcd, 0x01, 0xd0, 0xd0, 0x74, 0x66, 0x6d, 0xea, 0x66, 0x1e, 0x26, 0x0c, 0x0e, 0x0c, 
+        0x0d, 0x22, 0xc1, 0x10, 0x05, 0x60, 0x03, 0xea, 0xe2, 0x1b, 0xdd, 0xd0, 0xd0, 0x74, 0x00, 0xee, 
+        0x11, 0xe0, 0xe0, 0x31, 0x66, 0x4d, 0xe9, 0x2b, 0x0e, 0x5b, 0xee, 0x00, 0xe0, 0xb3, 0xe0, 0xe2, 
+        0x21, 0x46, 0x00, 0x00, 0x0c, 0x0e, 0x0c, 0x1d, 0x7c, 0xfb, 0x1b, 0x4d, 0xfa, 0x3d, 0x22, 0x03, 
+        0x00, 0x40, 0xd0, 0x74, 0xe0, 0x22, 0xc0, 0x22, 0x43, 0x00, 0x66, 0x6d, 0xec, 0xe0, 0x90, 0x74, 
+        0x26, 0x1c, 0x12, 0x66, 0x6c, 0x02, 0xc6, 0x20, 0x00, 0x62, 0xcc, 0xf5, 0x0c, 0x25, 0x0c, 0x32, 
+        0x60, 0x25, 0x83, 0x46, 0x00, 0x00, 0x0c, 0x02, 0xd0, 0xa2, 0x11, 0x61, 0x38, 0xfb, 0x00, 0x1a, 
+        0x40, 0xa2, 0xa0, 0xff, 0x00, 0xaa, 0xa1, 0x00, 0x99, 0xa1, 0xb0, 0xaa, 0x30, 0xc0, 0x20, 0x00, 
+        0x82, 0x26, 0xff, 0xa0, 0x88, 0x10, 0x90, 0x88, 0x20, 0xc0, 0x20, 0x00, 0x71, 0xc2, 0xff, 0x82, 
+        0x66, 0xff, 0x72, 0x07, 0x55, 0x66, 0x17, 0x08, 0xe0, 0xb0, 0xf4, 0xc0, 0x20, 0x00, 0xb2, 0x66, 
+        0xff, 0x32, 0xc1, 0x10, 0x42, 0xa0, 0x06, 0x52, 0xa0, 0x1f, 0x81, 0xba, 0xff, 0x92, 0xa1, 0x38, 
+        0x20, 0x72, 0x90, 0x61, 0x91, 0xfd, 0x22, 0xa0, 0x40, 0x62, 0x16, 0x01, 0x99, 0x01, 0x82, 0x08, 
+        0x61, 0x89, 0x11, 0x81, 0xb8, 0xff, 0xf0, 0x77, 0x11, 0x8a, 0x77, 0x45, 0x56, 0x04, 0xc8, 0x71, 
+        0xd8, 0x81, 0xe8, 0x91, 0xf8, 0xa1, 0x08, 0x61, 0x12, 0xc1, 0x30, 0x0d, 0xf0, 0x0c, 0x12, 0x46, 
+        0xe1, 0xff, 0x00, 0x00, 0x02, 0xf1, 0xfe, 0x3f, 0x4b, 0xf1, 0xfe, 0x3f, 0xc6, 0xf1, 0xfe, 0x3f, 
+        0x20, 0x42, 0xa0, 0x12, 0xc1, 0xc0, 0x09, 0x41, 0x39, 0xd1, 0xc9, 0x51, 0xe9, 0x71, 0xd9, 0x61, 
+        0xf9, 0x81, 0x42, 0xc4, 0xc9, 0x49, 0x31, 0x0c, 0x0f, 0xd1, 0xf6, 0xff, 0x0c, 0x6e, 0xcd, 0x02, 
+        0x32, 0xc2, 0xfa, 0x39, 0x91, 0x0b, 0x22, 0x29, 0xc1, 0xf6, 0x7c, 0x2a, 0x32, 0xa0, 0x05, 0x22, 
+        0x21, 0x0c, 0x42, 0x0d, 0x7d, 0x52, 0x0d, 0x77, 0x52, 0x61, 0x0b, 0x80, 0x44, 0x01, 0x80, 0x55, 
+        0x01, 0x50, 0x58, 0x31, 0x40, 0x48, 0x31, 0x50, 0x44, 0xc0, 0x40, 0x22, 0x82, 0x05, 0x85, 0x08, 
+        0x08, 0xb1, 0x0a, 0x02, 0x86, 0x16, 0x00, 0xf6, 0xac, 0x2a, 0x32, 0xa0, 0x05, 0x22, 0x21, 0x09, 
+        0x42, 0x0d, 0x83, 0x52, 0x0d, 0x7d, 0x52, 0x61, 0x0a, 0x80, 0x44, 0x01, 0x80, 0x55, 0x01, 0x50, 
+        0x58, 0x31, 0x40, 0x48, 0x31, 0x50, 0x44, 0xc0, 0x40, 0x22, 0x82, 0x45, 0x82, 0x08, 0x08, 0xa1, 
+        0x0a, 0x02, 0x06, 0x0b, 0x00, 0x02, 0x0d, 0x89, 0x22, 0xa0, 0x0d, 0x80, 0x00, 0x01, 0x00, 0x08, 
+        0x31, 0xc7, 0x32, 0x1d, 0x32, 0xa0, 0x16, 0x22, 0x21, 0x03, 0x42, 0x0d, 0x83, 0x49, 0x21, 0x80, 
+        0x44, 0x01, 0x40, 0x48, 0x31, 0x40, 0x40, 0xc0, 0x40, 0x22, 0x82, 0x45, 0x7f, 0x08, 0x08, 0x21, 
+        0x0a, 0x02, 0xd2, 0xcd, 0x01, 0x22, 0x21, 0x0d, 0xe2, 0xce, 0xff, 0x2a, 0x2f, 0x02, 0x42, 0x00, 
+        0x1b, 0xff, 0x56, 0x3e, 0xf6, 0xd1, 0xcc, 0xff, 0x32, 0x0d, 0xa0, 0x42, 0x0d, 0xae, 0x26, 0x13, 
+        0x28, 0x26, 0x14, 0x25, 0x0c, 0x05, 0xe2, 0xaf, 0x80, 0x6d, 0x0e, 0xe2, 0x4d, 0x4d, 0x52, 0x4d, 
+        0x4e, 0x21, 0xc6, 0xff, 0x0c, 0xd3, 0x48, 0xd1, 0x05, 0x57, 0x03, 0xc8, 0x51, 0xd8, 0x61, 0xe8, 
+        0x71, 0xf8, 0x81, 0x08, 0x41, 0x12, 0xc1, 0x40, 0x0d, 0xf0, 0x52, 0x0d, 0x97, 0xf2, 0x0d, 0x9b, 
+        0xdc, 0x55, 0xb6, 0x3c, 0x02, 0x86, 0x43, 0x00, 0x01, 0xbb, 0xff, 0x02, 0x00, 0x79, 0x0c, 0x15, 
+        0x80, 0xe0, 0x01, 0xe0, 0xe8, 0x31, 0xc6, 0xef, 0xff, 0xc7, 0x3f, 0x57, 0x01, 0xb6, 0xff, 0xe2, 
+        0x0d, 0x99, 0x00, 0xee, 0x80, 0xe2, 0x0e, 0x77, 0x02, 0x0d, 0x9c, 0x80, 0xee, 0x01, 0xe0, 0xe8, 
+        0x31, 0x66, 0x10, 0x3a, 0x32, 0xa0, 0x05, 0x22, 0x0d, 0x34, 0xc2, 0x0d, 0x2e, 0x80, 0x22, 0x01, 
+        0x80, 0xcc, 0x01, 0xc0, 0xc8, 0x31, 0x20, 0x28, 0x31, 0xc0, 0x22, 0xc0, 0x20, 0x2f, 0x82, 0x05, 
+        0x75, 0x08, 0x2a, 0x3c, 0x80, 0x33, 0x01, 0x28, 0xc1, 0x30, 0x38, 0x31, 0xe0, 0x33, 0xc0, 0x30, 
+        0x22, 0x82, 0x3d, 0x0f, 0x85, 0x73, 0x08, 0x2a, 0xee, 0x80, 0xee, 0x01, 0xe0, 0xe8, 0x31, 0x0c, 
+        0x15, 0x06, 0xd9, 0xff, 0x22, 0x0d, 0x9a, 0x02, 0xa0, 0x0f, 0x20, 0x00, 0xc0, 0x07, 0x2c, 0x48, 
+        0x01, 0x9d, 0xff, 0xe2, 0x0d, 0x98, 0x00, 0xee, 0x80, 0xe2, 0x0e, 0x89, 0x32, 0x0d, 0x9c, 0x80, 
+        0xee, 0x01, 0xe0, 0xe8, 0x31, 0x66, 0x13, 0xd6, 0x02, 0x0d, 0x3a, 0x80, 0x00, 0x01, 0x00, 0x08, 
+        0x31, 0x02, 0x61, 0x01, 0xf6, 0xac, 0x29, 0x22, 0x0d, 0x34, 0x0c, 0x83, 0x80, 0x22, 0x01, 0xf0, 
+        0x33, 0xc0, 0x20, 0x28, 0x31, 0x29, 0x01, 0x20, 0x20, 0xc0, 0x30, 0x22, 0x82, 0x0c, 0x53, 0x05, 
+        0x6e, 0x08, 0x08, 0x01, 0x2a, 0x00, 0x06, 0x0b, 0x00, 0x0c, 0x05, 0xe2, 0xaf, 0x80, 0xc6, 0xc1, 
+        0xff, 0x32, 0xa0, 0x16, 0x21, 0xc7, 0xfe, 0x42, 0xa0, 0x03, 0x22, 0x02, 0x2b, 0xf0, 0x44, 0xc0, 
+        0x80, 0x22, 0x01, 0x20, 0x28, 0x31, 0x00, 0x22, 0xc0, 0x40, 0x22, 0x82, 0x20, 0x22, 0xa0, 0x05, 
+        0x6b, 0x08, 0x08, 0x11, 0x2a, 0x00, 0x0c, 0xe3, 0x80, 0x20, 0x01, 0x20, 0x28, 0x31, 0xc0, 0x33, 
+        0xc0, 0xe0, 0x22, 0xc0, 0x30, 0x22, 0x82, 0x3d, 0x0f, 0x45, 0x69, 0x08, 0x2a, 0xee, 0x80, 0xee, 
+        0x01, 0xe0, 0xe8, 0x31, 0xc6, 0xd5, 0xff, 0xb6, 0x9c, 0x08, 0x01, 0x76, 0xff, 0x02, 0x00, 0x85, 
+        0x86, 0xba, 0xff, 0xe2, 0xaf, 0x80, 0x0c, 0x05, 0x46, 0xab, 0xff, 0x00, 0x00, 0x00, 0x10, 0x00, 
+        0x12, 0xc1, 0xd0, 0xd2, 0x61, 0x06, 0x22, 0x61, 0x09, 0xc9, 0x51, 0x09, 0x41, 0xf9, 0x81, 0xe9, 
+        0x71, 0xe1, 0xec, 0xfb, 0xfd, 0x02, 0x08, 0x4e, 0xc1, 0xf0, 0xfc, 0x00, 0x04, 0x05, 0x56, 0x00, 
+        0x08, 0x08, 0x0e, 0x02, 0x20, 0x28, 0xc0, 0x00, 0x00, 0x08, 0x0e, 0x02, 0x20, 0x30, 0x0c, 0x12, 
+        0xc0, 0x00, 0x00, 0x22, 0x1c, 0x01, 0x20, 0x20, 0xb4, 0x05, 0xe0, 0x01, 0x22, 0x1c, 0x01, 0x3d, 
+        0x01, 0x85, 0xfe, 0x02, 0x08, 0x0e, 0x08, 0x60, 0x0c, 0x02, 0xc0, 0x00, 0x00, 0xd2, 0x01, 0x02, 
+        0x0c, 0x0c, 0x9c, 0x6c, 0x26, 0x1c, 0x0f, 0x26, 0x2c, 0x07, 0x66, 0x3c, 0x10, 0x0c, 0xed, 0xc6, 
+        0x02, 0x00, 0x0c, 0xbd, 0x86, 0x01, 0x00, 0x0c, 0x1d, 0x46, 0x00, 0x00, 0x0c, 0x6d, 0x3d, 0x0f, 
+        0x2d, 0x0d, 0x45, 0xc1, 0xff, 0x1b, 0xcc, 0xc0, 0xc0, 0x74, 0x66, 0x4c, 0xd4, 0x08, 0x0e, 0x02, 
+        0x20, 0x32, 0xc0, 0x00, 0x00, 0x08, 0x0e, 0x02, 0x20, 0x31, 0xc0, 0x00, 0x00, 0x08, 0x0e, 0x02, 
+        0x20, 0x2f, 0xc1, 0xda, 0xff, 0xc0, 0x00, 0x00, 0x28, 0x4e, 0xc0, 0x22, 0x20, 0x29, 0x4e, 0x46, 
+        0x04, 0x00, 0x22, 0x1c, 0x01, 0x10, 0x31, 0x20, 0x05, 0xf8, 0x02, 0x22, 0x1c, 0x01, 0x10, 0x31, 
+        0x20, 0xc5, 0xed, 0x02, 0x0c, 0xe2, 0x8b, 0x31, 0x45, 0xd1, 0xff, 0xc8, 0x51, 0xd8, 0x61, 0xe8, 
+        0x71, 0xf8, 0x81, 0x08, 0x41, 0x12, 0xc1, 0x30, 0x0d, 0xf0, 0x00, 0x00, 0x21, 0x2f, 0xfd, 0xc0, 
+        0x20, 0x00, 0x22, 0x22, 0x59, 0x20, 0x24, 0xb5, 0x1b, 0x22, 0x20, 0x21, 0x41, 0x22, 0xd2, 0xf8, 
+        0x00, 0x22, 0x11, 0x20, 0x20, 0x31, 0x0d, 0xf0, 0x41, 0x28, 0xfd, 0x1b, 0x92, 0x2b, 0x82, 0x90, 
+        0x89, 0xb3, 0x80, 0x81, 0x21, 0x82, 0xd8, 0x02, 0x92, 0xae, 0x00, 0x80, 0x80, 0x84, 0xc0, 0x20, 
+        0x00, 0x72, 0x24, 0x59, 0x90, 0x77, 0x10, 0x80, 0x77, 0x20, 0xc0, 0x20, 0x00, 0x72, 0x64, 0x59, 
+        0x61, 0x20, 0xfe, 0x0c, 0x25, 0xc0, 0x20, 0x00, 0x32, 0x24, 0x58, 0x60, 0x33, 0x10, 0x50, 0x33, 
+        0x20, 0xc0, 0x20, 0x00, 0x32, 0x64, 0x58, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0xff, 0xf1, 0xff, 0xff, 
+        0x28, 0xf3, 0xfe, 0x3f, 0x71, 0xfe, 0xff, 0x12, 0xc1, 0xf0, 0xc9, 0x21, 0x09, 0x11, 0x62, 0xa2, 
+        0x00, 0x41, 0x11, 0xfd, 0x01, 0xfb, 0xff, 0xc0, 0x20, 0x00, 0x52, 0x24, 0x59, 0x70, 0x55, 0x10, 
+        0x60, 0x55, 0x20, 0xc0, 0x20, 0x00, 0x52, 0x64, 0x59, 0x52, 0x10, 0x00, 0xc0, 0x20, 0x00, 0x42, 
+        0x24, 0x58, 0x29, 0x01, 0x17, 0x64, 0x02, 0xb6, 0x95, 0x5f, 0xc1, 0x96, 0xfb, 0x39, 0x31, 0xb6, 
+        0x95, 0x05, 0x02, 0xae, 0xd4, 0x86, 0x05, 0x00, 0x08, 0x0c, 0x08, 0xa0, 0xc0, 0x00, 0x00, 0x38, 
+        0x31, 0x02, 0xae, 0xd4, 0x27, 0x20, 0x01, 0x0d, 0x02, 0x00, 0x00, 0x11, 0x00, 0x00, 0x31, 0x22, 
+        0x9c, 0xcb, 0x27, 0x20, 0x42, 0x20, 0x42, 0x90, 0x4a, 0x00, 0x42, 0xc0, 0xfe, 0x1b, 0x00, 0x40, 
+        0x04, 0xb3, 0x00, 0x02, 0x21, 0x00, 0x20, 0x11, 0x20, 0x20, 0x31, 0x22, 0x5c, 0xcb, 0x8c, 0x63, 
+        0x08, 0x0c, 0x02, 0x20, 0x16, 0xc0, 0x00, 0x00, 0x08, 0x0c, 0x02, 0x20, 0x19, 0x28, 0x01, 0xc0, 
+        0x00, 0x00, 0x01, 0xdb, 0xff, 0x0c, 0x02, 0x46, 0x00, 0x00, 0x1b, 0x25, 0xc8, 0x21, 0x22, 0x50, 
+        0x00, 0x08, 0x11, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x0a, 0x02, 0x1b, 0x40, 0x2b, 0x00, 0x40, 0x04, 
+        0xb3, 0x00, 0x01, 0x21, 0x46, 0xef, 0xff, 0x00, 0x18, 0xf2, 0xfe, 0x3f, 0xff, 0xff, 0xff, 0xbf, 
+        0x00, 0x00, 0x20, 0x00, 0x12, 0xc1, 0xc0, 0xc9, 0x61, 0xd9, 0x71, 0xe9, 0x81, 0xf9, 0x91, 0x09, 
+        0x51, 0x92, 0x21, 0x10, 0x39, 0xe1, 0x38, 0x09, 0x01, 0x6f, 0xfb, 0x30, 0x35, 0x05, 0x56, 0x83, 
+        0x16, 0x81, 0xf5, 0xff, 0xe2, 0xae, 0xac, 0x0c, 0x0b, 0xb9, 0xa1, 0xc8, 0xa1, 0x1b, 0xdc, 0x80, 
+        0xfc, 0x90, 0xe2, 0x5f, 0x00, 0xd0, 0xc0, 0x74, 0xc9, 0xa1, 0x66, 0x4c, 0xed, 0xb2, 0xaf, 0xd8, 
+        0xa2, 0xae, 0x7c, 0x69, 0x01, 0x60, 0xab, 0x93, 0xa2, 0x50, 0xcb, 0x7c, 0xed, 0xa1, 0xd2, 0xfc, 
+        0xc0, 0x20, 0x00, 0x78, 0xba, 0x79, 0x21, 0xc0, 0x20, 0x00, 0x32, 0x2a, 0xc8, 0x39, 0x31, 0xc0, 
+        0x20, 0x00, 0xf2, 0x2a, 0xd0, 0xf9, 0x41, 0xc0, 0x20, 0x00, 0xc8, 0xba, 0xd0, 0xcc, 0x10, 0xc0, 
+        0x20, 0x00, 0xc9, 0xba, 0xb1, 0xe2, 0xff, 0xc0, 0x20, 0x00, 0x72, 0x2a, 0xc8, 0xb0, 0x77, 0x10, 
+        0xc0, 0x20, 0x00, 0x72, 0x6a, 0xc8, 0xc1, 0xd4, 0xfd, 0x99, 0x11, 0x29, 0xd1, 0x49, 0xc1, 0x59, 
+        0xb1, 0x0c, 0x03, 0x39, 0xa1, 0xc0, 0x20, 0x00, 0xf2, 0x2c, 0x80, 0x42, 0x21, 0x0a, 0x22, 0xa0, 
+        0x0e, 0x40, 0x34, 0xa0, 0x42, 0xc4, 0xfd, 0x32, 0xc3, 0x01, 0x40, 0x23, 0x93, 0x80, 0x22, 0x01, 
+        0x20, 0x28, 0x31, 0x05, 0x9b, 0x02, 0x48, 0xe1, 0x01, 0xd0, 0xff, 0xbc, 0xa4, 0xd8, 0xa1, 0x0c, 
+        0x0c, 0x00, 0xdd, 0x90, 0x4d, 0x0f, 0x28, 0xd1, 0x38, 0xc1, 0x58, 0xb1, 0xc5, 0x70, 0xff, 0xec, 
+        0x32, 0x01, 0x40, 0xfb, 0x08, 0x00, 0x08, 0xa0, 0xc0, 0x00, 0x00, 0x02, 0x9d, 0x00, 0x07, 0xa2, 
+        0x04, 0x0d, 0x02, 0x22, 0x5d, 0x00, 0x28, 0xe1, 0x1b, 0xcc, 0xc0, 0xc0, 0x74, 0x07, 0xae, 0x02, 
+        0xe2, 0x5d, 0x00, 0xc7, 0x92, 0xcd, 0xc1, 0xb8, 0xfd, 0xc0, 0x20, 0x00, 0x21, 0xa7, 0xfc, 0x08, 
+        0xd2, 0x7c, 0xe3, 0x30, 0x00, 0x10, 0xc0, 0x20, 0x00, 0xd8, 0xa1, 0x09, 0xd2, 0x1b, 0xfd, 0xf0, 
+        0xd0, 0x74, 0xd9, 0xa1, 0x26, 0x4d, 0x02, 0x86, 0xde, 0xff, 0xc0, 0x20, 0x00, 0x61, 0x9e, 0xfc, 
+        0x88, 0x21, 0x89, 0xb6, 0xc0, 0x20, 0x00, 0x78, 0x31, 0x72, 0x66, 0xc8, 0xc0, 0x20, 0x00, 0x58, 
+        0x41, 0x48, 0x01, 0x52, 0x66, 0xd0, 0xbc, 0x84, 0x31, 0xb0, 0xff, 0xc1, 0x26, 0xfb, 0x0c, 0x09, 
+        0x22, 0x9c, 0xcb, 0x99, 0xa1, 0x00, 0xa2, 0x11, 0xa0, 0xa0, 0x31, 0x08, 0xa1, 0x48, 0xa1, 0x30, 
+        0x00, 0x90, 0x1b, 0x54, 0x50, 0x40, 0x74, 0x02, 0x90, 0x00, 0x49, 0xa1, 0xa7, 0xa0, 0x04, 0x2d, 
+        0x00, 0x02, 0x5c, 0xcb, 0x00, 0xa2, 0x11, 0x66, 0x44, 0xdd, 0x08, 0x0c, 0x02, 0x20, 0x16, 0xc0, 
+        0x00, 0x00, 0x21, 0x18, 0xfb, 0x22, 0x92, 0xcb, 0xe7, 0xa2, 0x19, 0x48, 0x11, 0x51, 0xa0, 0xff, 
+        0x38, 0x04, 0x50, 0x33, 0x20, 0x39, 0x04, 0x86, 0x02, 0x00, 0x68, 0x00, 0x62, 0x26, 0x16, 0x22, 
+        0x90, 0xcb, 0xc0, 0x06, 0x00, 0xc8, 0x61, 0xd8, 0x71, 0xe8, 0x81, 0xf8, 0x91, 0x08, 0x51, 0x12, 
+        0xc1, 0x40, 0x0d, 0xf0, 0x4a, 0xf1, 0xfe, 0x3f, 0x12, 0xc1, 0xf0, 0xc2, 0x61, 0x03, 0x10, 0x31, 
+        0x20, 0x20, 0xc2, 0x20, 0x21, 0xfc, 0xff, 0x09, 0x21, 0x22, 0x02, 0x2e, 0x05, 0xa2, 0xff, 0x01, 
+        0xf9, 0xff, 0x0c, 0x02, 0x5d, 0x01, 0x1b, 0x62, 0x5a, 0x42, 0x32, 0x04, 0x00, 0x60, 0x20, 0x74, 
+        0xca, 0x33, 0x32, 0x44, 0x00, 0x66, 0x62, 0xed, 0x21, 0x81, 0xfe, 0x0c, 0xd3, 0x4d, 0x01, 0x62, 
+        0x00, 0x4e, 0x52, 0x00, 0x4f, 0x80, 0x66, 0x01, 0x60, 0x68, 0x31, 0x05, 0x05, 0x03, 0xc8, 0x31, 
+        0x08, 0x21, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x94, 0x83, 0xfe, 0x3f, 0x7d, 0x02, 0x12, 0xc1, 
+        0xe0, 0x39, 0x01, 0x21, 0xfd, 0xff, 0x09, 0x11, 0xc9, 0x21, 0xd9, 0x31, 0xcd, 0x05, 0xdd, 0x04, 
+        0x79, 0x41, 0x01, 0x1f, 0xfb, 0xc0, 0x00, 0x00, 0x08, 0x41, 0xc0, 0x20, 0x00, 0x28, 0x0d, 0xc7, 
+        0x92, 0xf7, 0x2d, 0x00, 0x01, 0x67, 0xfa, 0xc0, 0x00, 0x00, 0x01, 0xea, 0xfa, 0x08, 0x00, 0x28, 
+        0x01, 0x02, 0x20, 0x19, 0x20, 0x20, 0x74, 0xc0, 0x00, 0x00, 0xc8, 0x21, 0xd8, 0x31, 0x08, 0x11, 
+        0x12, 0xc1, 0x20, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x90, 0x80, 0xfe, 0x3f, 0x32, 0xf1, 0xfe, 0x3f, 
+        0xff, 0x03, 0xfc, 0xff, 0x42, 0xa0, 0x00, 0x12, 0xc1, 0xe0, 0xe2, 0x61, 0x05, 0xd2, 0x61, 0x04, 
+        0x09, 0x21, 0xc9, 0x31, 0x01, 0xfa, 0xff, 0xcd, 0x02, 0xdd, 0x03, 0x0c, 0x22, 0x31, 0xf6, 0xff, 
+        0xe2, 0x00, 0x7d, 0x3a, 0x44, 0x80, 0xee, 0x01, 0x3a, 0x22, 0x42, 0x14, 0x00, 0x42, 0x51, 0x00, 
+        0x22, 0x02, 0x00, 0xe0, 0xe8, 0x31, 0x22, 0x41, 0x02, 0x0c, 0xd2, 0xe6, 0x7c, 0x20, 0x0c, 0x53, 
+        0x4d, 0x00, 0x42, 0x04, 0x7c, 0x0b, 0x2c, 0x80, 0x44, 0x01, 0x40, 0x48, 0x31, 0x49, 0x11, 0x40, 
+        0x4e, 0xc0, 0x40, 0x22, 0x82, 0x85, 0x1d, 0x08, 0xe8, 0x11, 0x2a, 0xee, 0x06, 0x08, 0x00, 0x32, 
+        0x00, 0x7e, 0x80, 0x33, 0x01, 0x30, 0x38, 0x31, 0xe0, 0x33, 0xc0, 0xc7, 0xa2, 0x02, 0x46, 0x42, 
+        0x00, 0x22, 0xcc, 0xfa, 0x20, 0x23, 0x82, 0x32, 0xa0, 0x05, 0x45, 0x1b, 0x08, 0x20, 0xee, 0x80, 
+        0x66, 0x1d, 0x0b, 0xd2, 0xaf, 0xfa, 0xd2, 0x41, 0x00, 0xd2, 0x41, 0x02, 0xc6, 0x08, 0x00, 0x32, 
+        0xcd, 0xfe, 0x56, 0x93, 0x0b, 0x01, 0xd9, 0xff, 0x32, 0x00, 0x7f, 0x32, 0x41, 0x00, 0x22, 0x00, 
+        0x80, 0x22, 0x41, 0x01, 0x02, 0x00, 0x81, 0x02, 0x41, 0x02, 0xd2, 0x01, 0x01, 0x80, 0xdd, 0x01, 
+        0xd0, 0xd8, 0x31, 0xe6, 0x7c, 0x2c, 0x32, 0x01, 0x00, 0x22, 0xcc, 0xff, 0x80, 0x33, 0x01, 0x30, 
+        0x38, 0x31, 0x80, 0x33, 0x01, 0x30, 0x38, 0x31, 0x30, 0x3d, 0xc0, 0x30, 0x22, 0x82, 0x32, 0xa0, 
+        0x05, 0xc5, 0x15, 0x08, 0x02, 0x01, 0x00, 0x80, 0x00, 0x01, 0x00, 0x08, 0x31, 0x20, 0x00, 0x80, 
+        0x06, 0x08, 0x00, 0x02, 0x01, 0x02, 0x22, 0xa0, 0x0d, 0x80, 0x00, 0x01, 0x00, 0x08, 0x31, 0xd0, 
+        0x00, 0xc0, 0xc7, 0x22, 0x74, 0x32, 0xa0, 0x05, 0x22, 0xcc, 0xfa, 0x20, 0x20, 0x82, 0x05, 0x13, 
+        0x08, 0xd0, 0x02, 0x80, 0xa1, 0xbf, 0xff, 0x0a, 0x9e, 0x41, 0x0f, 0xfc, 0x90, 0x90, 0x74, 0x60, 
+        0x99, 0x11, 0xc0, 0x20, 0x00, 0x82, 0x24, 0xda, 0xa0, 0x88, 0x10, 0x90, 0x88, 0x20, 0xc0, 0x20, 
+        0x00, 0x82, 0x64, 0xda, 0x0c, 0x17, 0xc0, 0x20, 0x00, 0x68, 0xd4, 0x70, 0x66, 0x20, 0xc0, 0x20, 
+        0x00, 0x69, 0xd4, 0x7c, 0xe5, 0xc0, 0x20, 0x00, 0x38, 0xd4, 0x50, 0x33, 0x10, 0xc0, 0x20, 0x00, 
+        0x39, 0xd4, 0xc8, 0x31, 0xd8, 0x41, 0xe8, 0x51, 0x08, 0x21, 0x12, 0xc1, 0x20, 0x0d, 0xf0, 0xa2, 
+        0xcd, 0xfd, 0x56, 0x4a, 0xf5, 0x01, 0xa9, 0xff, 0x32, 0x00, 0x82, 0x32, 0x41, 0x00, 0x22, 0x00, 
+        0x83, 0x22, 0x41, 0x01, 0x02, 0x00, 0x84, 0x06, 0xcf, 0xff, 0x0c, 0x53, 0x22, 0xcc, 0xfe, 0x20, 
+        0x20, 0x82, 0xc5, 0x0b, 0x08, 0x06, 0xe2, 0xff, 0x00, 0x00, 0x00, 0x22, 0xcc, 0xfe, 0x20, 0x23, 
+        0x82, 0x0c, 0x53, 0xc5, 0x0a, 0x08, 0xc6, 0xbc, 0xff, 0x00, 0x00, 0x00, 0x12, 0xc1, 0xf0, 0x02, 
+        0x61, 0x03, 0x01, 0x7c, 0xfa, 0x02, 0x20, 0x04, 0x29, 0x21, 0x27, 0x70, 0x0f, 0x31, 0x79, 0xfa, 
+        0x20, 0x22, 0x90, 0x32, 0xc3, 0x51, 0x3a, 0x22, 0x45, 0xdb, 0x01, 0x28, 0x21, 0x41, 0xf6, 0xfc, 
+        0xc0, 0x20, 0x00, 0x42, 0x24, 0x9c, 0x17, 0x64, 0x22, 0x20, 0x20, 0x74, 0x3d, 0x01, 0x05, 0x7d, 
+        0xff, 0x0c, 0x02, 0x85, 0x5a, 0x00, 0x21, 0x6f, 0xfa, 0x08, 0x02, 0x02, 0x20, 0x16, 0x22, 0x92, 
+        0xcb, 0xc0, 0x00, 0x00, 0x1c, 0xe2, 0x01, 0xe6, 0xf9, 0xc0, 0x00, 0x00, 0x08, 0x31, 0x12, 0xc1, 
+        0x10, 0x0d, 0xf0, 0x00, 0x3e, 0xf1, 0xfe, 0x3f, 0x94, 0x80, 0xfe, 0x3f, 0xc0, 0x5d, 0x00, 0x00, 
+        0x00, 0x00, 0x24, 0x40, 0x99, 0x99, 0x49, 0x40, 0x9a, 0x99, 0x99, 0x99, 0x99, 0x99, 0xe9, 0x40, 
+        0x00, 0x96, 0x00, 0x60, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x12, 0xc1, 0xb0, 0xd9, 
+        0xc1, 0xf9, 0xe1, 0x29, 0x71, 0xc9, 0xb1, 0xe9, 0xd1, 0xe1, 0xf2, 0xff, 0x09, 0xa1, 0x02, 0x0e, 
+        0x5f, 0xcd, 0x03, 0xcc, 0x30, 0x2c, 0x8d, 0xc6, 0x04, 0x00, 0x66, 0x10, 0x04, 0x1c, 0xad, 0xc6, 
+        0x02, 0x00, 0x32, 0xc0, 0xfe, 0x22, 0xa0, 0x18, 0xd2, 0xa0, 0x28, 0x30, 0xd2, 0x83, 0x2d, 0x0c, 
+        0x3d, 0x0d, 0x45, 0x05, 0x08, 0xe6, 0x92, 0x17, 0x2d, 0x0c, 0x3d, 0x0d, 0x05, 0xfe, 0x07, 0x20, 
+        0x0d, 0x82, 0xc0, 0x00, 0xc0, 0x00, 0x00, 0xa0, 0xf0, 0x20, 0x11, 0x29, 0x61, 0xc6, 0x08, 0x00, 
+        0x20, 0x4d, 0xc0, 0xe6, 0x94, 0x17, 0xc0, 0x2c, 0x20, 0xd0, 0x3d, 0x20, 0x05, 0xfc, 0x07, 0x02, 
+        0xc2, 0x01, 0x00, 0x0d, 0x82, 0xc0, 0x00, 0xc0, 0x00, 0x00, 0xa0, 0x46, 0xf6, 0xff, 0x22, 0xa0, 
+        0x00, 0x22, 0x61, 0x06, 0x32, 0x0e, 0x7b, 0x22, 0x0e, 0x9e, 0x16, 0x83, 0x06, 0x32, 0x61, 0x05, 
+        0xf2, 0x0e, 0x7a, 0x80, 0x22, 0x11, 0x2a, 0xff, 0x16, 0xaf, 0x05, 0x2d, 0x03, 0x7c, 0x6d, 0xc0, 
+        0xdd, 0x82, 0xc0, 0x22, 0xc1, 0x30, 0x33, 0xa0, 0xf0, 0x33, 0x11, 0x29, 0xf1, 0x32, 0x61, 0x12, 
+        0x3d, 0x0f, 0x45, 0xfe, 0x07, 0x02, 0x21, 0x12, 0x48, 0xf1, 0x07, 0x22, 0x02, 0x06, 0x4a, 0x00, 
+        0x2d, 0x04, 0x3d, 0x0f, 0x85, 0xf6, 0x07, 0x85, 0x0b, 0x08, 0x29, 0x21, 0x2d, 0x0f, 0x05, 0x0b, 
+        0x08, 0xfd, 0x02, 0x28, 0x51, 0x05, 0x0a, 0x08, 0x3d, 0x02, 0x2d, 0x0f, 0x05, 0xde, 0x06, 0x3d, 
+        0x02, 0x28, 0x21, 0x85, 0xc7, 0x06, 0xf1, 0xc0, 0xff, 0x38, 0x0f, 0x05, 0xc7, 0x06, 0xc5, 0xe8, 
+        0x06, 0x2a, 0xfd, 0x06, 0x02, 0x00, 0xf2, 0xa0, 0x00, 0xd2, 0xaf, 0xf6, 0xc0, 0xdd, 0x82, 0x02, 
+        0x0e, 0x9a, 0xf2, 0x61, 0x13, 0x16, 0x70, 0x06, 0x02, 0x61, 0x04, 0x22, 0x0e, 0x9f, 0xf2, 0x0e, 
+        0x99, 0x80, 0x22, 0x11, 0x2a, 0xff, 0x16, 0x6f, 0x05, 0x3d, 0x0f, 0xc0, 0x20, 0xc1, 0x22, 0x61, 
+        0x10, 0x00, 0xc0, 0xa0, 0xf0, 0xcc, 0x11, 0x05, 0xf7, 0x07, 0x02, 0x21, 0x10, 0xc7, 0x22, 0x02, 
+        0x86, 0x3d, 0x00, 0x3d, 0x0f, 0x2d, 0x00, 0x85, 0xef, 0x07, 0x45, 0x04, 0x08, 0x29, 0x31, 0xc8, 
+        0x41, 0x2d, 0x0f, 0xc5, 0x03, 0x08, 0xfd, 0x02, 0x2d, 0x0c, 0xc5, 0x02, 0x08, 0x3d, 0x02, 0xc8, 
+        0x31, 0x2d, 0x0f, 0xc5, 0xd6, 0x06, 0x3d, 0x02, 0x2d, 0x0c, 0x05, 0xc0, 0x06, 0x31, 0xa2, 0xff, 
+        0x38, 0x03, 0x85, 0xbf, 0x06, 0x45, 0xe1, 0x06, 0xf2, 0x21, 0x13, 0x2a, 0x3d, 0x06, 0x01, 0x00, 
+        0xf2, 0x21, 0x13, 0x0c, 0x03, 0x32, 0x61, 0x11, 0x21, 0x9d, 0xff, 0xc2, 0x1e, 0x50, 0x01, 0x01, 
+        0xfa, 0xca, 0xcd, 0x08, 0x00, 0x2a, 0xcc, 0x08, 0x00, 0x2d, 0x0c, 0xc0, 0x00, 0x00, 0x01, 0x97, 
+        0xff, 0x41, 0xfc, 0xf9, 0x0c, 0x03, 0x52, 0xa0, 0x64, 0x57, 0x22, 0x01, 0xcd, 0x03, 0x68, 0x04, 
+        0x22, 0x1e, 0x51, 0x68, 0x06, 0x2a, 0xdd, 0x0a, 0xdd, 0x2d, 0x0d, 0xc0, 0x06, 0x00, 0x32, 0x21, 
+        0x11, 0x01, 0xf4, 0xf9, 0x48, 0x71, 0x72, 0x10, 0xed, 0x0b, 0x44, 0x00, 0x04, 0x40, 0x70, 0x70, 
+        0xb1, 0x07, 0x67, 0x02, 0x56, 0x4f, 0x11, 0x52, 0x10, 0xfd, 0x00, 0x04, 0x40, 0x50, 0x50, 0xb1, 
+        0x07, 0x65, 0x02, 0x56, 0x73, 0x11, 0x56, 0xfc, 0x08, 0x62, 0xa0, 0x64, 0x67, 0x22, 0x01, 0x0c, 
+        0x0d, 0xc8, 0x61, 0xd0, 0xcd, 0x93, 0xc6, 0x1f, 0x00, 0x20, 0x7f, 0xc0, 0x07, 0x27, 0x02, 0x86, 
+        0x3b, 0x00, 0x2d, 0x04, 0x3d, 0x0f, 0x85, 0xe3, 0x07, 0x1b, 0x22, 0x45, 0xf8, 0x07, 0x29, 0x01, 
+        0x2d, 0x0f, 0xc5, 0xf7, 0x07, 0x29, 0x11, 0x28, 0x51, 0xc5, 0xf6, 0x07, 0x3d, 0x02, 0xf8, 0x01, 
+        0x28, 0x11, 0xc5, 0xca, 0x06, 0x3d, 0x02, 0x2d, 0x0f, 0x05, 0xb4, 0x06, 0x31, 0x73, 0xff, 0x38, 
+        0x03, 0x85, 0xb3, 0x06, 0x45, 0xd5, 0x06, 0x86, 0xb1, 0xff, 0x20, 0x4f, 0xc0, 0xc7, 0x24, 0x02, 
+        0x86, 0x2c, 0x00, 0x3d, 0x0f, 0x2d, 0x00, 0x85, 0xdf, 0x07, 0x1b, 0x22, 0x05, 0xf4, 0x07, 0xcd, 
+        0x02, 0x2d, 0x0f, 0xc5, 0xf3, 0x07, 0xfd, 0x02, 0x28, 0x41, 0xc5, 0xf2, 0x07, 0x3d, 0x02, 0x2d, 
+        0x0f, 0xc5, 0xc6, 0x06, 0x3d, 0x02, 0x2d, 0x0c, 0x05, 0xb0, 0x06, 0x31, 0x63, 0xff, 0x38, 0x03, 
+        0x85, 0xaf, 0x06, 0x85, 0xd1, 0x06, 0x86, 0xbf, 0xff, 0xe1, 0x61, 0xff, 0xd2, 0xa0, 0x00, 0x2d, 
+        0x0c, 0x05, 0xf5, 0x07, 0x29, 0x91, 0x39, 0x81, 0x51, 0x5f, 0xff, 0x41, 0x5f, 0xff, 0x05, 0xe7, 
+        0x06, 0x5d, 0x0e, 0x4d, 0x0d, 0xc5, 0x10, 0x07, 0xc5, 0x22, 0x07, 0x38, 0x81, 0x51, 0x5b, 0xff, 
+        0xfd, 0x02, 0x41, 0x59, 0xff, 0x28, 0x91, 0x85, 0xe5, 0x06, 0x4d, 0x0d, 0x5d, 0x0e, 0x45, 0x0f, 
+        0x07, 0xd1, 0x57, 0xff, 0x05, 0x21, 0x07, 0x71, 0x58, 0xff, 0x51, 0x56, 0xff, 0xf0, 0x60, 0x94, 
+        0x50, 0x52, 0x10, 0xc0, 0x66, 0x01, 0x2d, 0x0c, 0xc0, 0x20, 0x00, 0x42, 0x2d, 0xa8, 0x70, 0x44, 
+        0x10, 0x60, 0x44, 0x20, 0x50, 0x44, 0x20, 0xc0, 0x20, 0x00, 0xc8, 0xb1, 0xe8, 0xd1, 0x42, 0x6d, 
+        0xa8, 0xf8, 0xe1, 0xd8, 0xc1, 0x08, 0xa1, 0x12, 0xc1, 0x50, 0x0d, 0xf0, 0xcd, 0x0f, 0xc6, 0xe1, 
+        0xff, 0x0c, 0x0f, 0x06, 0x86, 0xff, 0xf2, 0x21, 0x13, 0x0c, 0x03, 0x86, 0xa1, 0xff, 0xcd, 0x03, 
+        0x46, 0xdd, 0xff, 0x00, 0x12, 0xc1, 0xf0, 0xc9, 0x21, 0x09, 0x11, 0xcc, 0x52, 0x0c, 0x00, 0x0c, 
+        0x0c, 0x86, 0x10, 0x00, 0xe6, 0x12, 0x02, 0xc6, 0x70, 0x00, 0x32, 0xa0, 0x64, 0xb0, 0xc2, 0x11, 
+        0xc0, 0x2c, 0x20, 0xc5, 0xd1, 0x07, 0x0d, 0x02, 0x0c, 0xa3, 0x2d, 0x0c, 0x80, 0xc0, 0x01, 0xc0, 
+        0xc8, 0x31, 0xc5, 0xd0, 0x07, 0x0c, 0xa3, 0x05, 0xd7, 0x07, 0xa6, 0x22, 0x02, 0x06, 0x73, 0x00, 
+        0x0c, 0x10, 0x46, 0x04, 0x00, 0xc2, 0x01, 0x01, 0x02, 0x01, 0x00, 0x80, 0xcc, 0x01, 0x80, 0x00, 
+        0x01, 0x00, 0x08, 0x31, 0xc0, 0xc8, 0x31, 0xe6, 0x1c, 0x05, 0x00, 0x41, 0x21, 0xc6, 0x01, 0x00, 
+        0x0b, 0x2c, 0x00, 0x12, 0x40, 0x00, 0x40, 0xa1, 0x21, 0x2a, 0xff, 0xc0, 0x20, 0x00, 0x42, 0x62, 
+        0xb5, 0x62, 0xcc, 0x1e, 0x0c, 0x05, 0x00, 0x16, 0x40, 0x00, 0x30, 0xa1, 0xc0, 0x35, 0xb3, 0xc0, 
+        0x20, 0x00, 0x32, 0x62, 0xa7, 0xe6, 0x1c, 0x05, 0x00, 0x41, 0x21, 0xc6, 0x01, 0x00, 0x0b, 0x7c, 
+        0x00, 0x17, 0x40, 0x00, 0x40, 0xa1, 0xc0, 0x20, 0x00, 0x0c, 0x06, 0x42, 0x62, 0xec, 0xa2, 0xcc, 
+        0x1e, 0x0c, 0x09, 0x00, 0x1a, 0x40, 0x00, 0x80, 0xa1, 0xc0, 0x89, 0xb3, 0xc0, 0x20, 0x00, 0x82, 
+        0x62, 0xa1, 0x26, 0x10, 0x14, 0x66, 0x20, 0x04, 0x0c, 0x85, 0x86, 0x03, 0x00, 0x32, 0xc0, 0xfd, 
+        0x0c, 0xab, 0x5d, 0x06, 0x30, 0x5b, 0x83, 0x46, 0x00, 0x00, 0x0c, 0x25, 0xa6, 0xbc, 0x0d, 0x6c, 
+        0x04, 0x40, 0x4c, 0x90, 0x00, 0x14, 0x40, 0x00, 0x45, 0xa1, 0x46, 0x00, 0x00, 0x0c, 0x04, 0xc0, 
+        0x20, 0x00, 0x42, 0x62, 0xa3, 0x7c, 0x0b, 0xa6, 0x1c, 0x10, 0xe6, 0xbc, 0x0d, 0x7c, 0xe7, 0x70, 
+        0x7c, 0x90, 0x00, 0x17, 0x40, 0x00, 0x75, 0xa1, 0xc6, 0x01, 0x00, 0x0c, 0x08, 0x50, 0x72, 0x21, 
+        0xc0, 0x78, 0x93, 0xc0, 0x20, 0x00, 0x6c, 0x1a, 0x72, 0x62, 0xa2, 0x81, 0xd3, 0xfa, 0xc7, 0xab, 
+        0x10, 0xd6, 0xdc, 0x00, 0x1c, 0xe9, 0x90, 0x9c, 0x90, 0x00, 0x19, 0x40, 0x00, 0x75, 0xa1, 0x46, 
+        0x00, 0x00, 0x0c, 0x07, 0x7c, 0x19, 0xc0, 0x20, 0x00, 0x72, 0x68, 0xc3, 0xc7, 0xaa, 0x10, 0x97, 
+        0xac, 0x0d, 0x3c, 0xc3, 0x30, 0x3c, 0x90, 0x00, 0x13, 0x40, 0x00, 0x45, 0xa1, 0x46, 0x00, 0x00, 
+        0x0c, 0x04, 0xc0, 0x20, 0x00, 0x42, 0x68, 0xc2, 0x26, 0x10, 0x14, 0x66, 0x20, 0x04, 0x0c, 0x40, 
+        0x86, 0x03, 0x00, 0x52, 0xc0, 0xfd, 0x0c, 0x54, 0x50, 0x64, 0x83, 0x0d, 0x06, 0x46, 0x00, 0x00, 
+        0x0c, 0x10, 0xa6, 0xbc, 0x0d, 0x6c, 0x06, 0x60, 0x6c, 0x90, 0x00, 0x16, 0x40, 0x00, 0x40, 0xa1, 
+        0x46, 0x00, 0x00, 0x0c, 0x04, 0xc0, 0x20, 0x00, 0x42, 0x62, 0xef, 0xa6, 0x1c, 0x10, 0xe6, 0xbc, 
+        0x0d, 0x7c, 0xe7, 0x70, 0x7c, 0x90, 0x00, 0x17, 0x40, 0x00, 0x50, 0xa1, 0xc6, 0x01, 0x00, 0x0c, 
+        0x08, 0x00, 0x52, 0x21, 0xc0, 0x58, 0x93, 0xc0, 0x20, 0x00, 0x52, 0x62, 0xee, 0xc7, 0xab, 0x10, 
+        0xd6, 0xdc, 0x00, 0x1c, 0xeb, 0xb0, 0xbc, 0x90, 0x00, 0x1b, 0x40, 0x00, 0x50, 0xa1, 0x46, 0x00, 
+        0x00, 0x0c, 0x05, 0xc0, 0x20, 0x00, 0x52, 0x62, 0xeb, 0xc7, 0xaa, 0x10, 0x97, 0xac, 0x0d, 0x3c, 
+        0xc3, 0x30, 0x3c, 0x90, 0x00, 0x13, 0x40, 0x00, 0x00, 0xa1, 0x46, 0x00, 0x00, 0x0c, 0x00, 0xc0, 
+        0x20, 0x00, 0xc8, 0x21, 0x02, 0x62, 0xea, 0x08, 0x11, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0xd6, 0x32, 
+        0xe6, 0x32, 0xa0, 0x64, 0xb0, 0xc2, 0x11, 0xc0, 0x2c, 0x20, 0x45, 0xb5, 0x07, 0x0d, 0x02, 0x0c, 
+        0xa3, 0x2d, 0x0c, 0x0b, 0xc0, 0x80, 0xcc, 0x01, 0xc0, 0xc8, 0x31, 0x45, 0xb4, 0x07, 0x0c, 0xa3, 
+        0x45, 0xba, 0x07, 0x7c, 0x83, 0x37, 0xa2, 0x11, 0x0c, 0x10, 0x46, 0x92, 0xff, 0x0c, 0x30, 0xe6, 
+        0x82, 0x02, 0x46, 0x90, 0xff, 0x0c, 0x20, 0x06, 0x8f, 0xff, 0x0c, 0x30, 0x7c, 0xe4, 0x47, 0xa2, 
+        0x02, 0x86, 0x8c, 0xff, 0x0c, 0x20, 0x46, 0x8b, 0xff, 0x00, 0x00, 0x00, 0xf8, 0xf0, 0xfe, 0x3f, 
+        0x12, 0xc1, 0xf0, 0x09, 0x01, 0x01, 0xb1, 0xf7, 0xdc, 0x22, 0x1c, 0x04, 0xc0, 0x20, 0x00, 0x32, 
+        0x20, 0xe4, 0x40, 0x33, 0x20, 0xc0, 0x20, 0x00, 0x32, 0x60, 0xe4, 0x06, 0x04, 0x00, 0x6c, 0xf6, 
+        0xc0, 0x20, 0x00, 0x52, 0x20, 0xe4, 0x60, 0x55, 0x10, 0xc0, 0x20, 0x00, 0x52, 0x60, 0xe4, 0x41, 
+        0xf3, 0xff, 0x80, 0x32, 0x01, 0x22, 0x04, 0x80, 0x30, 0x38, 0x31, 0x80, 0x22, 0x01, 0x20, 0x28, 
+        0x31, 0x05, 0x8a, 0xff, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x12, 0xc1, 0xf0, 0xc2, 
+        0x61, 0x01, 0x02, 0x61, 0x00, 0x20, 0xc2, 0x20, 0x45, 0x3b, 0x01, 0x2d, 0x0c, 0x05, 0xfa, 0xff, 
+        0xc8, 0x11, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x10, 0xff, 0xff, 0x7f, 0x80, 0x81, 0xbc, 0x14, 0x09, 0x98, 0x41, 0xc6, 0x5a, 
+        0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x00, 0xfc, 0x00, 0x00, 0x90, 0x01, 0xff, 0xff, 0xff, 0xfb, 
+        0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x18, 0xff, 0xff, 0xff, 0x80, 0xff, 0x0f, 0xf0, 0xff, 
+        0x00, 0x20, 0x02, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xa6, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 
+        0x54, 0x58, 0x38, 0x00, 0x00, 0xff, 0x0f, 0xf0, 0xe6, 0x00, 0x20, 0x0b, 0x3f, 0xf0, 0xff, 0xdf, 
+        0x40, 0x0c, 0x00, 0x20, 0xff, 0xff, 0x80, 0xff, 0x00, 0x00, 0x13, 0x00, 0x3f, 0xf0, 0xff, 0xff, 
+        0x80, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x24, 0x01, 0xfe, 0x03, 0xff, 0xff, 0xff, 0x0f, 
+        0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, 0x04, 0xff, 0xff, 0x0b, 0xff, 0x00, 0x00, 0x24, 0x00, 
+        0xff, 0xff, 0xbf, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x83, 0x00, 0x80, 0x00, 0xff, 0xf7, 0xff, 0xff, 
+        0x20, 0xf2, 0xfe, 0x3f, 0x40, 0x80, 0xfe, 0x3f, 0x9f, 0xf1, 0xfe, 0x3f, 0x74, 0xf0, 0xfe, 0x3f, 
+        0x64, 0xf1, 0xfe, 0x3f, 0x61, 0xd6, 0xff, 0xb1, 0xd6, 0xff, 0x41, 0xd7, 0xf9, 0x51, 0x52, 0xfb, 
+        0x12, 0xc1, 0xe0, 0xc9, 0x51, 0x09, 0x41, 0xd9, 0x61, 0x82, 0xaf, 0x80, 0x21, 0x3f, 0xfa, 0xd1, 
+        0x6c, 0xfe, 0xc0, 0x20, 0x00, 0x32, 0x22, 0x58, 0x60, 0x33, 0x20, 0xc0, 0x20, 0x00, 0x32, 0x62, 
+        0x58, 0xc0, 0x20, 0x00, 0x02, 0x22, 0x43, 0xb0, 0x00, 0x20, 0xc0, 0x20, 0x00, 0x02, 0x62, 0x43, 
+        0xc1, 0xc9, 0xff, 0xc0, 0x20, 0x00, 0xa2, 0x22, 0xd0, 0xc0, 0xaa, 0x10, 0xb0, 0xaa, 0x20, 0xc0, 
+        0x20, 0x00, 0xa2, 0x62, 0xd0, 0x91, 0xc4, 0xff, 0xc0, 0x20, 0x00, 0x92, 0x62, 0x5b, 0x71, 0xc3, 
+        0xff, 0xc0, 0x20, 0x00, 0x72, 0x62, 0x5a, 0x61, 0xc2, 0xff, 0xc0, 0x20, 0x00, 0x32, 0x22, 0x54, 
+        0x60, 0x33, 0x20, 0xc0, 0x20, 0x00, 0x32, 0x62, 0x54, 0xc0, 0x20, 0x00, 0xc2, 0xa1, 0x90, 0x02, 
+        0x22, 0xc6, 0xc0, 0x20, 0x00, 0xc2, 0x62, 0xc6, 0xb1, 0xbb, 0xff, 0xa1, 0xbb, 0xff, 0xc0, 0x20, 
+        0x00, 0x92, 0x2d, 0xbb, 0xb0, 0x99, 0x10, 0xa0, 0x99, 0x20, 0xc0, 0x20, 0x00, 0x92, 0x6d, 0xbb, 
+        0x71, 0xb7, 0xff, 0xc0, 0x20, 0x00, 0x62, 0x2d, 0xe2, 0x70, 0x66, 0x10, 0xc0, 0x20, 0x00, 0x62, 
+        0x6d, 0xe2, 0x42, 0x04, 0x00, 0xc0, 0x20, 0x00, 0x32, 0x22, 0x52, 0x80, 0x33, 0x10, 0x40, 0x33, 
+        0x20, 0xc0, 0x20, 0x00, 0x32, 0x62, 0x52, 0x01, 0xae, 0xff, 0xc1, 0xae, 0xff, 0xc0, 0x20, 0x00, 
+        0xb2, 0x22, 0x4a, 0x00, 0xbb, 0x10, 0xc0, 0xbb, 0x20, 0xc0, 0x20, 0x00, 0xb2, 0x62, 0x4a, 0xa1, 
+        0xaa, 0xff, 0xc0, 0x20, 0x00, 0x98, 0xd2, 0xa0, 0x99, 0x10, 0xc0, 0x20, 0x00, 0x99, 0xd2, 0x2c, 
+        0x67, 0xc0, 0x20, 0x00, 0x62, 0x22, 0x51, 0x80, 0x66, 0x10, 0x70, 0x66, 0x20, 0xc0, 0x20, 0x00, 
+        0x62, 0x62, 0x51, 0x42, 0xaf, 0xc0, 0x1c, 0x13, 0xc0, 0x20, 0x00, 0x02, 0x22, 0xdc, 0x40, 0x00, 
+        0x10, 0x30, 0x00, 0x20, 0xc0, 0x20, 0x00, 0x02, 0x62, 0xdc, 0xc1, 0x2f, 0xfe, 0xc0, 0x20, 0x00, 
+        0xb2, 0x2d, 0xa8, 0xc0, 0xbb, 0x20, 0xc0, 0x20, 0x00, 0xb2, 0x6d, 0xa8, 0xa1, 0x98, 0xff, 0x91, 
+        0x98, 0xff, 0xc0, 0x20, 0x00, 0x82, 0x22, 0x59, 0xa0, 0x88, 0x10, 0x90, 0x88, 0x20, 0xc0, 0x20, 
+        0x00, 0x82, 0x62, 0x59, 0x71, 0x94, 0xff, 0x61, 0x94, 0xff, 0xc0, 0x20, 0x00, 0x42, 0x22, 0x59, 
+        0x70, 0x44, 0x10, 0x60, 0x44, 0x20, 0xc0, 0x20, 0x00, 0x42, 0x62, 0x59, 0x31, 0x90, 0xff, 0x01, 
+        0x90, 0xff, 0xc0, 0x20, 0x00, 0xc2, 0x22, 0x57, 0x30, 0xcc, 0x10, 0x00, 0xcc, 0x20, 0xc0, 0x20, 
+        0x00, 0xc2, 0x62, 0x57, 0xb1, 0x8c, 0xff, 0xa1, 0x8c, 0xff, 0xc0, 0x20, 0x00, 0x92, 0x22, 0x54, 
+        0xb0, 0x99, 0x10, 0xa0, 0x99, 0x20, 0xc0, 0x20, 0x00, 0x92, 0x62, 0x54, 0xc0, 0x20, 0x00, 0x72, 
+        0xa0, 0x80, 0x82, 0x22, 0xc6, 0xc0, 0x20, 0x00, 0x72, 0x62, 0xc6, 0x0c, 0x46, 0xc0, 0x20, 0x00, 
+        0x42, 0x22, 0xc4, 0x60, 0x44, 0x20, 0xc0, 0x20, 0x00, 0x42, 0x62, 0xc4, 0x31, 0x80, 0xff, 0x01, 
+        0x80, 0xff, 0xc0, 0x20, 0x00, 0xc2, 0x22, 0xdc, 0x30, 0xcc, 0x10, 0x00, 0xcc, 0x20, 0xc0, 0x20, 
+        0x00, 0xc2, 0x62, 0xdc, 0xb1, 0x7c, 0xff, 0xa1, 0x7c, 0xff, 0xc0, 0x20, 0x00, 0x92, 0x22, 0xc9, 
+        0xb0, 0x99, 0x10, 0xa0, 0x99, 0x20, 0xc0, 0x20, 0x00, 0x92, 0x62, 0xc9, 0x81, 0x78, 0xff, 0x71, 
+        0x78, 0xff, 0xc0, 0x20, 0x00, 0x62, 0x22, 0x56, 0x80, 0x66, 0x10, 0x70, 0x66, 0x20, 0xc0, 0x20, 
+        0x00, 0x62, 0x62, 0x56, 0x41, 0x74, 0xff, 0x31, 0x74, 0xff, 0xc0, 0x20, 0x00, 0x02, 0x22, 0xd3, 
+        0x40, 0x00, 0x10, 0x30, 0x00, 0x20, 0xc0, 0x20, 0x00, 0x02, 0x62, 0xd3, 0xc1, 0x70, 0xff, 0xb1, 
+        0x70, 0xff, 0xc0, 0x20, 0x00, 0xa2, 0x22, 0xc8, 0xc0, 0xaa, 0x10, 0xb0, 0xaa, 0x20, 0xc0, 0x20, 
+        0x00, 0xa2, 0x62, 0xc8, 0x91, 0x6c, 0xff, 0xc0, 0x20, 0x00, 0x82, 0x2d, 0xe2, 0x90, 0x88, 0x20, 
+        0xc0, 0x20, 0x00, 0x82, 0x6d, 0xe2, 0x71, 0x68, 0xff, 0x61, 0x68, 0xff, 0xc0, 0x20, 0x00, 0x42, 
+        0x25, 0x9c, 0x70, 0x44, 0x10, 0x60, 0x44, 0x20, 0xc0, 0x20, 0x00, 0x42, 0x65, 0x9c, 0x31, 0x64, 
+        0xff, 0xc0, 0x20, 0x00, 0x02, 0x22, 0xd1, 0x30, 0x00, 0x10, 0xc0, 0x20, 0x00, 0x02, 0x62, 0xd1, 
+        0x0c, 0x02, 0xc5, 0xc8, 0xff, 0xc1, 0x3b, 0xf8, 0x08, 0x0c, 0x08, 0x30, 0x0c, 0x02, 0xc0, 0x00, 
+        0x00, 0xb2, 0xaf, 0xcf, 0x2c, 0x0a, 0x31, 0xd1, 0xf6, 0x61, 0x17, 0xf6, 0x21, 0x5a, 0xff, 0xc0, 
+        0x20, 0x00, 0x92, 0x2d, 0x8e, 0xb0, 0x99, 0x10, 0xa0, 0x99, 0x20, 0xc0, 0x20, 0x00, 0x92, 0x6d, 
+        0x8e, 0xc0, 0x20, 0x00, 0xa1, 0xa1, 0xf9, 0x71, 0x54, 0xff, 0x82, 0x2a, 0x92, 0xc0, 0x20, 0x00, 
+        0x72, 0x6a, 0x92, 0x0c, 0x65, 0xc0, 0x20, 0x00, 0x42, 0x2a, 0x93, 0x50, 0x44, 0x20, 0xc0, 0x20, 
+        0x00, 0x42, 0x6a, 0x93, 0xc0, 0x20, 0x00, 0x22, 0x6a, 0xc7, 0xc0, 0x20, 0x00, 0x02, 0x2a, 0xc7, 
+        0x20, 0x00, 0x20, 0xc0, 0x20, 0x00, 0x02, 0x6a, 0xc7, 0xb1, 0x48, 0xff, 0xc0, 0x20, 0x00, 0x98, 
+        0xaa, 0xb0, 0x99, 0x10, 0xc0, 0x20, 0x00, 0x99, 0xaa, 0x7c, 0x98, 0x0c, 0x27, 0xc0, 0x20, 0x00, 
+        0x52, 0x26, 0x89, 0x80, 0x55, 0x10, 0x70, 0x55, 0x20, 0xc0, 0x20, 0x00, 0x52, 0x66, 0x89, 0x7c, 
+        0xe4, 0xc0, 0x20, 0x00, 0x22, 0x23, 0xf0, 0x40, 0x22, 0x10, 0xc0, 0x20, 0x00, 0x08, 0x0c, 0x02, 
+        0x20, 0x28, 0x22, 0x63, 0xf0, 0xc0, 0x00, 0x00, 0x0c, 0x12, 0x08, 0x0c, 0x0c, 0x13, 0x02, 0x20, 
+        0x2b, 0x0c, 0xc4, 0xc0, 0x00, 0x00, 0x0c, 0x22, 0x08, 0x0c, 0x0c, 0x13, 0x02, 0x20, 0x2b, 0x42, 
+        0xa1, 0x84, 0xc0, 0x00, 0x00, 0x0c, 0x32, 0x08, 0x0c, 0x0c, 0x23, 0x02, 0x20, 0x2b, 0x0c, 0x64, 
+        0xc0, 0x00, 0x00, 0x08, 0x0c, 0x02, 0x20, 0x2f, 0xc0, 0x00, 0x00, 0x28, 0x4c, 0x01, 0x2c, 0xff, 
+        0x07, 0xf2, 0x14, 0x32, 0xa0, 0x7f, 0x41, 0x2b, 0xff, 0x51, 0x2b, 0xff, 0x1c, 0x06, 0x0c, 0x07, 
+        0x2d, 0x00, 0x85, 0x41, 0xfe, 0x01, 0x26, 0xff, 0x21, 0xbb, 0xfa, 0x41, 0x28, 0xff, 0x51, 0x28, 
+        0xff, 0x32, 0x2c, 0x24, 0x61, 0x01, 0xf9, 0x0c, 0x07, 0x62, 0x06, 0x00, 0x79, 0x01, 0x79, 0x11, 
+        0x79, 0x21, 0x1b, 0x66, 0x60, 0x60, 0x74, 0x7d, 0x00, 0x45, 0x5b, 0xfe, 0x22, 0xa0, 0x77, 0x0c, 
+        0x03, 0x1c, 0x24, 0x0c, 0x75, 0x08, 0x0c, 0x0c, 0x06, 0x02, 0x20, 0x27, 0x72, 0xa0, 0xe8, 0xc0, 
+        0x00, 0x00, 0x0c, 0x13, 0xc0, 0x20, 0x00, 0x22, 0x2d, 0x98, 0x30, 0x22, 0x20, 0xc0, 0x20, 0x00, 
+        0x22, 0x6d, 0x98, 0xc8, 0x51, 0xd8, 0x61, 0x08, 0x41, 0x12, 0xc1, 0x20, 0x0d, 0xf0, 0x00, 0x00, 
+        0xff, 0xff, 0x1f, 0xf0, 0x00, 0x00, 0x80, 0x01, 0xff, 0xff, 0xff, 0x1f, 0xff, 0x3f, 0xe0, 0xff, 
+        0x00, 0x40, 0x1f, 0x00, 0xff, 0xff, 0x00, 0xff, 0x00, 0x00, 0xab, 0x00, 0xff, 0x00, 0xff, 0xff, 
+        0xb1, 0xf8, 0xff, 0xa1, 0xf8, 0xff, 0x31, 0x79, 0xf6, 0xc0, 0x20, 0x00, 0x22, 0x23, 0xe6, 0xb0, 
+        0x22, 0x10, 0xa0, 0x22, 0x20, 0xc0, 0x20, 0x00, 0x22, 0x63, 0xe6, 0xc0, 0x20, 0x00, 0x92, 0x23, 
+        0xe7, 0xb0, 0x99, 0x10, 0xa0, 0x99, 0x20, 0xc0, 0x20, 0x00, 0x92, 0x63, 0xe7, 0x81, 0xee, 0xff, 
+        0x71, 0x76, 0xfd, 0xc0, 0x20, 0x00, 0x62, 0x23, 0xe5, 0x80, 0x66, 0x10, 0x70, 0x66, 0x20, 0xc0, 
+        0x20, 0x00, 0x62, 0x63, 0xe5, 0x51, 0xe9, 0xff, 0x41, 0xea, 0xff, 0xc0, 0x20, 0x00, 0x22, 0x23, 
+        0xe6, 0x50, 0x22, 0x10, 0x40, 0x22, 0x20, 0xc0, 0x20, 0x00, 0x22, 0x63, 0xe6, 0xb1, 0xe5, 0xff, 
+        0xa1, 0xe6, 0xff, 0xc0, 0x20, 0x00, 0x92, 0x23, 0xe8, 0xb0, 0x99, 0x10, 0xa0, 0x99, 0x20, 0xc0, 
+        0x20, 0x00, 0x92, 0x63, 0xe8, 0x81, 0xe1, 0xff, 0x72, 0xa1, 0x00, 0xc0, 0x20, 0x00, 0x62, 0x23, 
+        0xf2, 0x80, 0x66, 0x10, 0x70, 0x66, 0x20, 0xc0, 0x20, 0x00, 0x62, 0x63, 0xf2, 0x52, 0xaf, 0x80, 
+        0x4c, 0x74, 0xc0, 0x20, 0x00, 0x22, 0x23, 0xe6, 0x50, 0x22, 0x10, 0x40, 0x22, 0x20, 0xc0, 0x20, 
+        0x00, 0x22, 0x63, 0xe6, 0x0d, 0xf0, 0x00, 0x00, 0x53, 0xf1, 0xfe, 0x3f, 0xff, 0x0f, 0xff, 0xff, 
+        0x00, 0x20, 0x00, 0x00, 0x42, 0xaf, 0xbc, 0x12, 0xc1, 0xf0, 0xc9, 0x11, 0xc1, 0xfb, 0xff, 0x09, 
+        0x01, 0x22, 0x0c, 0x82, 0x01, 0x7b, 0xf5, 0x66, 0x22, 0x13, 0x4c, 0x15, 0xc0, 0x20, 0x00, 0x32, 
+        0x20, 0x68, 0x40, 0x33, 0x10, 0x50, 0x33, 0x20, 0xc0, 0x20, 0x00, 0x32, 0x60, 0x68, 0x32, 0x0c, 
+        0x83, 0x26, 0x13, 0x02, 0x66, 0x33, 0x27, 0x0c, 0x18, 0xc0, 0x20, 0x00, 0x72, 0x20, 0x68, 0x40, 
+        0x77, 0x10, 0x80, 0x77, 0x20, 0xc0, 0x20, 0x00, 0x72, 0x60, 0x68, 0x7c, 0xe6, 0xc0, 0x20, 0x00, 
+        0x52, 0x20, 0x5d, 0x60, 0x55, 0x10, 0xc0, 0x20, 0x00, 0x52, 0x60, 0x5d, 0x32, 0x0c, 0x83, 0x42, 
+        0xae, 0xff, 0x26, 0x23, 0x02, 0x66, 0x33, 0x28, 0xc0, 0x20, 0x00, 0x91, 0x65, 0xf5, 0x82, 0x29, 
+        0x8d, 0xa2, 0xae, 0xff, 0xa0, 0x88, 0x10, 0xc0, 0x20, 0x00, 0x82, 0x69, 0x8d, 0x0c, 0x02, 0x0c, 
+        0x03, 0x0c, 0x04, 0x0c, 0x15, 0x01, 0x9e, 0xf5, 0xc0, 0x00, 0x00, 0x01, 0x5d, 0xf5, 0x42, 0xae, 
+        0xff, 0x32, 0x0c, 0x7c, 0x26, 0x13, 0x11, 0xc0, 0x20, 0x00, 0xb2, 0x20, 0x8d, 0x40, 0xbb, 0x10, 
+        0xc0, 0x20, 0x00, 0xb2, 0x60, 0x8d, 0x32, 0x0c, 0x7c, 0x66, 0x23, 0x11, 0x32, 0xa1, 0x00, 0xc0, 
+        0x20, 0x00, 0x22, 0x20, 0x85, 0x30, 0x22, 0x20, 0xc0, 0x20, 0x00, 0x22, 0x60, 0x85, 0x62, 0xae, 
+        0xcf, 0x32, 0x0c, 0x81, 0x3c, 0x05, 0x66, 0x13, 0x14, 0xc0, 0x20, 0x00, 0x42, 0x20, 0x86, 0x60, 
+        0x44, 0x10, 0x50, 0x44, 0x20, 0xc0, 0x20, 0x00, 0x42, 0x60, 0x86, 0x46, 0x0d, 0x00, 0x66, 0x23, 
+        0x11, 0xc0, 0x20, 0x00, 0x72, 0x20, 0x8e, 0x40, 0x77, 0x10, 0xc0, 0x20, 0x00, 0x72, 0x60, 0x8e, 
+        0x06, 0x08, 0x00, 0xc0, 0x20, 0x00, 0x92, 0x20, 0x86, 0x60, 0x99, 0x10, 0x50, 0x99, 0x20, 0xc0, 
+        0x20, 0x00, 0x92, 0x60, 0x86, 0xc0, 0x20, 0x00, 0x82, 0x20, 0x8e, 0x40, 0x88, 0x10, 0xc0, 0x20, 
+        0x00, 0x82, 0x60, 0x8e, 0xa2, 0x0c, 0x7e, 0x66, 0x1a, 0x64, 0xc0, 0x20, 0x00, 0x32, 0x20, 0x86, 
+        0x60, 0x33, 0x10, 0x50, 0x33, 0x20, 0xc0, 0x20, 0x00, 0x32, 0x60, 0x86, 0xc0, 0x20, 0x00, 0x22, 
+        0x20, 0x85, 0x60, 0x22, 0x10, 0x50, 0x22, 0x20, 0xc0, 0x20, 0x00, 0x22, 0x60, 0x85, 0xb2, 0x0c, 
+        0x7f, 0x66, 0x1b, 0x1e, 0x0c, 0x22, 0x0c, 0x03, 0x0c, 0x24, 0x0c, 0x05, 0x01, 0x6d, 0xf5, 0xc0, 
+        0x00, 0x00, 0x0c, 0x02, 0x0c, 0x83, 0x0c, 0x84, 0x0c, 0x05, 0x01, 0x69, 0xf5, 0xc0, 0x00, 0x00, 
+        0xc6, 0x06, 0x00, 0x0c, 0x02, 0x0c, 0x23, 0x0c, 0x24, 0x0c, 0x05, 0x01, 0x65, 0xf5, 0xc0, 0x00, 
+        0x00, 0x0c, 0x82, 0x0c, 0x03, 0x0c, 0x84, 0x0c, 0x05, 0x01, 0x61, 0xf5, 0xc0, 0x00, 0x00, 0x41, 
+        0x5f, 0xf5, 0x02, 0x0c, 0x7d, 0x31, 0x9d, 0xff, 0x66, 0x10, 0x15, 0x61, 0x28, 0xf6, 0xc0, 0x20, 
+        0x00, 0x58, 0x14, 0x30, 0x55, 0x10, 0x60, 0x55, 0x20, 0xc0, 0x20, 0x00, 0x59, 0x14, 0x46, 0x05, 
+        0x00, 0x66, 0x20, 0x12, 0x71, 0x97, 0xff, 0xc0, 0x20, 0x00, 0x68, 0x14, 0x30, 0x66, 0x10, 0x70, 
+        0x66, 0x20, 0xc0, 0x20, 0x00, 0x69, 0x14, 0xc8, 0x11, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 
+        0x80, 0x3f, 0xe0, 0x0f, 0xff, 0xff, 0xcf, 0xff, 0x12, 0xc1, 0xf0, 0x09, 0x01, 0x01, 0x71, 0xfa, 
+        0x22, 0x00, 0x80, 0x56, 0x62, 0x08, 0x01, 0x3f, 0xf7, 0x22, 0xa0, 0x66, 0x08, 0x00, 0x0c, 0x33, 
+        0x02, 0x20, 0x24, 0x0c, 0x14, 0xc0, 0x00, 0x00, 0x31, 0x3b, 0xf7, 0x22, 0x63, 0x87, 0x21, 0xd3, 
+        0xf5, 0xc0, 0x20, 0x00, 0x52, 0x22, 0xe5, 0x52, 0x63, 0x88, 0xc0, 0x20, 0x00, 0x42, 0x22, 0xe6, 
+        0x42, 0x63, 0x89, 0xc0, 0x20, 0x00, 0x0c, 0x14, 0x0c, 0x55, 0x0c, 0x06, 0x3c, 0xc7, 0x22, 0x22, 
+        0xe7, 0x22, 0x63, 0x8a, 0x08, 0x03, 0x22, 0xa0, 0x66, 0x02, 0x20, 0x27, 0x0c, 0x33, 0xc0, 0x00, 
+        0x00, 0x01, 0x5c, 0xfa, 0x21, 0xe7, 0xff, 0xc0, 0x20, 0x00, 0x71, 0xc4, 0xf5, 0xb2, 0x27, 0xe7, 
+        0x20, 0xbb, 0x20, 0xc0, 0x20, 0x00, 0xb2, 0x67, 0xe7, 0xa1, 0x44, 0xfe, 0xc0, 0x20, 0x00, 0x92, 
+        0x27, 0xe6, 0xa0, 0x99, 0x20, 0xc0, 0x20, 0x00, 0x92, 0x67, 0xe6, 0x81, 0xde, 0xff, 0xc0, 0x20, 
+        0x00, 0x62, 0x27, 0xe5, 0x80, 0x66, 0x10, 0xc0, 0x20, 0x00, 0x62, 0x67, 0xe5, 0x0c, 0x13, 0x32, 
+        0x40, 0x80, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x7c, 0xf1, 0xfe, 0x3f, 
+        0x12, 0xc1, 0xf0, 0x09, 0x01, 0x01, 0xfd, 0xff, 0x22, 0x00, 0x7d, 0x66, 0x12, 0x38, 0x22, 0xa0, 
+        0x66, 0x0c, 0x33, 0x01, 0x14, 0xf7, 0x0c, 0x14, 0x08, 0x00, 0x51, 0xf8, 0xff, 0x02, 0x20, 0x26, 
+        0x52, 0x05, 0x80, 0xc0, 0x00, 0x00, 0x01, 0xf5, 0xff, 0x31, 0xa8, 0xf5, 0x52, 0x20, 0x21, 0xc0, 
+        0x20, 0x00, 0x52, 0x63, 0xe5, 0x42, 0x20, 0x22, 0xc0, 0x20, 0x00, 0x42, 0x63, 0xe6, 0x22, 0x20, 
+        0x23, 0xc0, 0x20, 0x00, 0x22, 0x63, 0xe7, 0x0c, 0x06, 0x62, 0x40, 0x7d, 0x08, 0x01, 0x12, 0xc1, 
+        0x10, 0x0d, 0xf0, 0x00, 0x12, 0xc1, 0xf0, 0x09, 0x01, 0x66, 0x12, 0x05, 0x85, 0xef, 0xff, 0x86, 
+        0x00, 0x00, 0xc5, 0xf9, 0xff, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0x40, 0x00, 
+        0x6c, 0xf0, 0xfe, 0x3f, 0x10, 0xf1, 0xfe, 0x3f, 0x00, 0x78, 0x00, 0x00, 0x12, 0xc1, 0xe0, 0xc2, 
+        0x61, 0x05, 0x09, 0x41, 0xd9, 0x61, 0x21, 0xd8, 0xf4, 0xd1, 0xf6, 0xf6, 0xc0, 0x20, 0x00, 0x42, 
+        0x22, 0x97, 0xc0, 0x20, 0x00, 0x32, 0x22, 0x96, 0xc0, 0x20, 0x00, 0x10, 0x48, 0x40, 0x0c, 0x13, 
+        0x0c, 0x74, 0x0c, 0x35, 0x0c, 0x26, 0x0c, 0x07, 0x08, 0x0d, 0x22, 0x22, 0x97, 0x02, 0x20, 0x27, 
+        0x22, 0xa0, 0x61, 0xc0, 0x00, 0x00, 0x85, 0xc2, 0xff, 0x22, 0xa0, 0x77, 0x0c, 0x03, 0x1c, 0x04, 
+        0x0c, 0x05, 0x08, 0x0d, 0x0c, 0x06, 0x02, 0x20, 0x27, 0x0c, 0x17, 0xc0, 0x00, 0x00, 0x05, 0x6b, 
+        0x02, 0xc1, 0xa0, 0xf9, 0x2d, 0x0c, 0x32, 0xcc, 0x3c, 0x45, 0xaa, 0x01, 0x28, 0x4d, 0x67, 0xf2, 
+        0x0e, 0x0c, 0x02, 0x45, 0xee, 0x00, 0x51, 0xe1, 0xff, 0x48, 0x4d, 0x50, 0x44, 0x20, 0x49, 0x4d, 
+        0x05, 0x67, 0xfe, 0x22, 0xa0, 0x01, 0x85, 0xba, 0xfe, 0xc0, 0x2c, 0x20, 0x31, 0xdd, 0xff, 0x4c, 
+        0x05, 0x0c, 0x07, 0x0c, 0x06, 0x0c, 0x19, 0x0c, 0x0a, 0x41, 0xdb, 0xf7, 0x81, 0xda, 0xff, 0x42, 
+        0x14, 0x01, 0x82, 0x08, 0x80, 0xa9, 0x01, 0x99, 0x11, 0x80, 0x88, 0x01, 0x80, 0x88, 0x31, 0x82, 
+        0xc8, 0x1f, 0x80, 0x88, 0x01, 0x80, 0x88, 0x31, 0x80, 0x68, 0xb3, 0x60, 0x60, 0x74, 0x05, 0x39, 
+        0x02, 0x0c, 0x62, 0x05, 0x7c, 0x01, 0xc5, 0x7d, 0xff, 0x0c, 0x27, 0x61, 0x4b, 0xf9, 0xc0, 0x20, 
+        0x00, 0x52, 0x26, 0x9c, 0x70, 0x55, 0x20, 0xc0, 0x20, 0x00, 0x52, 0x66, 0x9c, 0x3c, 0x22, 0x01, 
+        0x40, 0xf6, 0xc0, 0x00, 0x00, 0x08, 0x0d, 0x02, 0x20, 0x16, 0x22, 0xae, 0x7c, 0xc0, 0x00, 0x00, 
+        0x72, 0xac, 0x00, 0x62, 0xa0, 0xc9, 0x31, 0x30, 0xf8, 0xc0, 0x20, 0x00, 0x58, 0xd3, 0x70, 0x55, 
+        0x10, 0x60, 0x55, 0x20, 0xc0, 0x20, 0x00, 0x59, 0xd3, 0x7c, 0xe4, 0xc0, 0x20, 0x00, 0x28, 0xd3, 
+        0x40, 0x22, 0x10, 0xc0, 0x20, 0x00, 0x29, 0xd3, 0x3c, 0x22, 0x01, 0x31, 0xf6, 0xc0, 0x00, 0x00, 
+        0xc9, 0x01, 0x0c, 0x12, 0x0c, 0x73, 0x0c, 0x54, 0x51, 0xb8, 0xff, 0x0c, 0x16, 0x0c, 0x07, 0x45, 
+        0xcf, 0xfe, 0x0c, 0x02, 0xc8, 0x51, 0xd8, 0x61, 0x08, 0x41, 0x12, 0xc1, 0x20, 0x0d, 0xf0, 0x00, 
+        0x9c, 0xf1, 0xfe, 0x3f, 0x6d, 0x02, 0xfb, 0x72, 0x91, 0xfe, 0xff, 0x42, 0x02, 0x00, 0x5d, 0x09, 
+        0x42, 0x49, 0x00, 0x32, 0x02, 0x01, 0x82, 0xc9, 0xc0, 0x30, 0x31, 0x04, 0x32, 0x49, 0x02, 0xa2, 
+        0x06, 0x02, 0xa2, 0x45, 0x03, 0x1b, 0x66, 0x1b, 0x55, 0x77, 0x96, 0xf2, 0x5d, 0x09, 0x6d, 0x02, 
+        0x3b, 0x72, 0x32, 0x06, 0x11, 0x1b, 0x55, 0x1b, 0x66, 0x32, 0x45, 0x11, 0x42, 0x06, 0x13, 0x80, 
+        0xb3, 0x01, 0x4a, 0x33, 0x32, 0x45, 0x14, 0x32, 0x06, 0x16, 0xb0, 0xb8, 0x31, 0x3a, 0xbb, 0xb2, 
+        0x45, 0x17, 0x77, 0x96, 0xdc, 0x6d, 0x02, 0x5d, 0x09, 0x4b, 0x72, 0x42, 0x02, 0x1a, 0x42, 0x48, 
+        0x5c, 0x32, 0x02, 0x1b, 0x32, 0x48, 0x5d, 0xb2, 0x02, 0x1c, 0xa2, 0x02, 0x1d, 0xb0, 0xb0, 0x54, 
+        0x80, 0xbb, 0x11, 0xb0, 0xaa, 0x20, 0xa2, 0x58, 0x2f, 0xa2, 0x06, 0x1e, 0xa2, 0x45, 0x20, 0x1b, 
+        0x66, 0x1b, 0x55, 0x77, 0x96, 0xf2, 0x5d, 0x09, 0x6d, 0x02, 0x6b, 0x72, 0xb2, 0x06, 0x22, 0xb2, 
+        0x45, 0x24, 0x1b, 0x66, 0x1b, 0x55, 0x77, 0x96, 0xf2, 0x5d, 0x09, 0x6d, 0x02, 0x8b, 0x72, 0x32, 
+        0x06, 0x28, 0x32, 0x45, 0x2a, 0x1b, 0x66, 0x1b, 0x55, 0x77, 0x96, 0xf2, 0x0c, 0x55, 0x32, 0x02, 
+        0x30, 0x32, 0x48, 0x41, 0xb2, 0x02, 0x31, 0xb2, 0x48, 0x73, 0xa2, 0x02, 0x32, 0xa2, 0x48, 0x74, 
+        0x92, 0x02, 0x33, 0x92, 0x48, 0x75, 0x72, 0x02, 0x34, 0x72, 0x48, 0x76, 0x62, 0x02, 0x35, 0x62, 
+        0x48, 0x77, 0x42, 0x02, 0x36, 0x42, 0x48, 0x78, 0x32, 0x02, 0x37, 0x32, 0x48, 0x79, 0xb2, 0x02, 
+        0x38, 0xb2, 0x48, 0x7a, 0xa2, 0x02, 0x40, 0xa2, 0x48, 0x7b, 0x92, 0x02, 0x41, 0x92, 0x48, 0x7c, 
+        0x72, 0x02, 0x42, 0x62, 0x02, 0x43, 0x70, 0x70, 0x54, 0x80, 0x77, 0x11, 0x70, 0x66, 0x20, 0x62, 
+        0x58, 0x3f, 0x42, 0x02, 0x44, 0x42, 0x48, 0x80, 0x32, 0x02, 0x45, 0x32, 0x48, 0x81, 0xb2, 0x02, 
+        0x47, 0xa2, 0x02, 0x46, 0x80, 0xbb, 0x01, 0x80, 0xaa, 0x01, 0xa0, 0xa8, 0x31, 0xb0, 0xb8, 0x31, 
+        0x80, 0xbb, 0x11, 0xb0, 0xaa, 0x20, 0xa2, 0x58, 0x41, 0x92, 0x02, 0x49, 0x72, 0x02, 0x48, 0x80, 
+        0x99, 0x01, 0x80, 0x77, 0x01, 0x70, 0x78, 0x31, 0x90, 0x98, 0x31, 0x80, 0x99, 0x11, 0x90, 0x77, 
+        0x20, 0x72, 0x58, 0x42, 0x62, 0x02, 0x4a, 0x62, 0x48, 0x86, 0x42, 0x02, 0x4b, 0x6d, 0x05, 0x40, 
+        0x40, 0x34, 0x42, 0x48, 0x88, 0xf6, 0x64, 0x01, 0x6d, 0x04, 0x62, 0x48, 0x88, 0x92, 0x02, 0x4b, 
+        0x90, 0x94, 0x24, 0x92, 0x48, 0x8a, 0x72, 0x02, 0x4b, 0x70, 0x77, 0x04, 0x72, 0x48, 0x8c, 0x62, 
+        0x02, 0x4c, 0x60, 0x60, 0x34, 0x62, 0x48, 0x87, 0x67, 0x35, 0x01, 0x5d, 0x06, 0x52, 0x48, 0x87, 
+        0xa2, 0x02, 0x4c, 0xa0, 0xa4, 0x24, 0xa2, 0x48, 0x89, 0x92, 0x02, 0x4c, 0x90, 0x97, 0x04, 0x92, 
+        0x48, 0x8b, 0x72, 0x02, 0x4d, 0x70, 0x70, 0x34, 0x72, 0x48, 0x8e, 0x62, 0x02, 0x4d, 0x60, 0x64, 
+        0x34, 0x62, 0x48, 0x8d, 0x42, 0x02, 0x4e, 0x42, 0x48, 0x8f, 0x32, 0x02, 0x4f, 0x32, 0x48, 0x90, 
+        0xb2, 0x02, 0x50, 0xb2, 0x48, 0x91, 0xa2, 0x02, 0x51, 0xa2, 0x48, 0x92, 0x92, 0x02, 0x52, 0x92, 
+        0x48, 0x93, 0x72, 0x02, 0x53, 0x72, 0x48, 0x94, 0x62, 0x02, 0x54, 0x62, 0x48, 0x95, 0x42, 0x02, 
+        0x55, 0x42, 0x48, 0x96, 0x32, 0x02, 0x56, 0x32, 0x48, 0x97, 0xb2, 0x02, 0x57, 0xb2, 0x48, 0x98, 
+        0xa2, 0x02, 0x58, 0xa2, 0x48, 0x99, 0x0c, 0x02, 0x0d, 0xf0, 0x00, 0x00, 0x1d, 0xf1, 0xfe, 0x3f, 
+        0x08, 0x6b, 0x00, 0x40, 0x14, 0x3a, 0x00, 0x40, 0xa4, 0x38, 0x00, 0x40, 0xd8, 0x39, 0x00, 0x40, 
+        0x12, 0xc1, 0xf0, 0x09, 0x11, 0x01, 0xf9, 0xff, 0x02, 0x00, 0x80, 0x16, 0xa0, 0x09, 0x01, 0xf8, 
+        0xff, 0xc0, 0x00, 0x00, 0x41, 0xf6, 0xff, 0x42, 0x04, 0x80, 0x29, 0x01, 0x66, 0x14, 0x26, 0x22, 
+        0xa0, 0x67, 0x0c, 0x43, 0x08, 0x01, 0x0c, 0x24, 0x02, 0x20, 0x26, 0x52, 0xa0, 0x91, 0xc0, 0x00, 
+        0x00, 0x22, 0xa0, 0x67, 0x0c, 0x43, 0x08, 0x01, 0x0c, 0x14, 0x02, 0x20, 0x26, 0x52, 0xa0, 0x88, 
+        0xc0, 0x00, 0x00, 0x46, 0x05, 0x00, 0x66, 0x24, 0x12, 0x0c, 0x43, 0x0c, 0x24, 0x0c, 0x75, 0x0c, 
+        0x56, 0x0c, 0x27, 0x02, 0x22, 0x27, 0x22, 0xa0, 0x67, 0xc0, 0x00, 0x00, 0x01, 0xb0, 0xf4, 0xc0, 
+        0x20, 0x00, 0x22, 0x20, 0x46, 0x27, 0x72, 0x35, 0xc0, 0x20, 0x00, 0x32, 0x20, 0x46, 0x41, 0xdc, 
+        0xf3, 0x30, 0x3d, 0x25, 0x66, 0x23, 0x26, 0xc0, 0x20, 0x00, 0x42, 0x24, 0x88, 0x87, 0x64, 0x1d, 
+        0x0c, 0x12, 0x01, 0xdc, 0xff, 0xc0, 0x00, 0x00, 0x0c, 0x12, 0x01, 0xdb, 0xff, 0xc0, 0x00, 0x00, 
+        0x0c, 0x12, 0x32, 0xa2, 0xb6, 0x01, 0xd9, 0xff, 0xc0, 0x00, 0x00, 0x86, 0x02, 0x00, 0x0c, 0x02, 
+        0x32, 0xa2, 0xb6, 0x01, 0xd6, 0xff, 0xc0, 0x00, 0x00, 0x08, 0x11, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 
+        0xa0, 0x80, 0xfe, 0x3f, 0xc0, 0x80, 0xfe, 0x3f, 0xe0, 0x80, 0xfe, 0x3f, 0xf0, 0x83, 0xfe, 0x3f, 
+        0x44, 0x84, 0xfe, 0x3f, 0x31, 0xfb, 0xff, 0x1c, 0xc4, 0x22, 0xa0, 0xf0, 0x20, 0x11, 0xc0, 0xc2, 
+        0x61, 0x34, 0xd2, 0x61, 0x35, 0xe2, 0x61, 0x36, 0xf2, 0x61, 0x37, 0x22, 0xc1, 0x50, 0x02, 0x61, 
+        0x33, 0x85, 0xd7, 0x06, 0x22, 0xc1, 0x70, 0x31, 0xf3, 0xff, 0x1c, 0xc4, 0xc5, 0xd6, 0x06, 0x31, 
+        0xf2, 0xff, 0x1c, 0xc4, 0x22, 0xc1, 0x7f, 0x22, 0xc2, 0x11, 0x05, 0xd6, 0x06, 0x0c, 0x02, 0x05, 
+        0xce, 0x04, 0xf1, 0x86, 0xf4, 0xc0, 0x20, 0x00, 0x0c, 0x1c, 0x42, 0x2f, 0xff, 0xd2, 0xd1, 0xff, 
+        0xe2, 0xd1, 0xff, 0xe2, 0xce, 0x70, 0xd2, 0xcd, 0x50, 0x40, 0x30, 0xf5, 0x40, 0x58, 0x75, 0x52, 
+        0x61, 0x32, 0x80, 0x33, 0x01, 0x00, 0x44, 0x11, 0x30, 0x38, 0x31, 0x32, 0x61, 0x31, 0x40, 0x40, 
+        0x31, 0x42, 0x61, 0x30, 0xc0, 0x2c, 0x20, 0xc5, 0xa1, 0x03, 0xc0, 0x20, 0x00, 0xe0, 0x2c, 0x90, 
+        0x02, 0x2f, 0xff, 0x02, 0x52, 0x7f, 0xd0, 0x2c, 0x90, 0x00, 0x00, 0xf5, 0xc2, 0xcc, 0x01, 0xc0, 
+        0xc0, 0x74, 0x02, 0x52, 0x7f, 0x22, 0xa0, 0x0f, 0x27, 0x9c, 0xd8, 0x0c, 0x1c, 0xd1, 0xd5, 0xf5, 
+        0xe1, 0xda, 0xf6, 0x0c, 0xe3, 0x32, 0x61, 0x38, 0x08, 0x0d, 0x02, 0x20, 0x28, 0xc0, 0x00, 0x00, 
+        0x08, 0x0d, 0x02, 0x20, 0x30, 0x0c, 0x12, 0xc0, 0x00, 0x00, 0x22, 0x1e, 0x01, 0x20, 0x20, 0xb4, 
+        0x85, 0x5a, 0x00, 0x22, 0x1e, 0x01, 0x32, 0xc1, 0x7f, 0x32, 0xc3, 0x31, 0xc5, 0x78, 0x01, 0x08, 
+        0x0d, 0x08, 0x60, 0x0c, 0x02, 0xc0, 0x00, 0x00, 0x2d, 0x0c, 0x0c, 0x13, 0x85, 0x3d, 0xfe, 0x32, 
+        0xc1, 0x90, 0x30, 0x3c, 0x90, 0xc0, 0x20, 0x00, 0x08, 0x0d, 0x22, 0x2f, 0xff, 0x02, 0x20, 0x32, 
+        0x22, 0x53, 0x7f, 0xc0, 0x00, 0x00, 0x08, 0x0d, 0x02, 0x20, 0x31, 0xc0, 0x00, 0x00, 0x08, 0x0d, 
+        0x02, 0x20, 0x2f, 0xc0, 0x00, 0x00, 0x22, 0x1e, 0x01, 0x32, 0xc1, 0x7f, 0x32, 0xc3, 0x31, 0xc5, 
+        0x74, 0x01, 0x22, 0x1e, 0x01, 0x32, 0xc1, 0x7f, 0x32, 0xc3, 0x31, 0x45, 0x6a, 0x01, 0x0c, 0xe2, 
+        0x32, 0xc1, 0x7f, 0x32, 0xc3, 0x39, 0x85, 0x4d, 0xfe, 0x42, 0x21, 0x38, 0x1b, 0xcc, 0xc0, 0xc0, 
+        0x74, 0x0b, 0x44, 0x42, 0x61, 0x38, 0x56, 0xe4, 0xf6, 0xf2, 0x91, 0x29, 0xf9, 0x01, 0xe2, 0x91, 
+        0x39, 0xe9, 0x11, 0xd2, 0x91, 0x2a, 0xd9, 0x21, 0xc2, 0x91, 0x3a, 0xc9, 0x31, 0xb2, 0x91, 0x2b, 
+        0xb9, 0x41, 0xa2, 0x91, 0x3b, 0xa9, 0x51, 0x92, 0x91, 0x2c, 0x99, 0x61, 0x82, 0x91, 0x3c, 0x89, 
+        0x71, 0x72, 0x91, 0x2d, 0x79, 0x81, 0x62, 0x91, 0x3d, 0x69, 0x91, 0x52, 0x91, 0x2e, 0x59, 0xa1, 
+        0x42, 0x91, 0x3e, 0x52, 0x21, 0x30, 0x49, 0xb1, 0x42, 0x21, 0x31, 0x32, 0x91, 0x2f, 0x39, 0xc1, 
+        0x22, 0x91, 0x3f, 0x32, 0x21, 0x32, 0x29, 0xd1, 0x21, 0x9d, 0xff, 0x02, 0x91, 0x30, 0x09, 0xe1, 
+        0xf2, 0x91, 0x40, 0xf9, 0xf1, 0xe2, 0x91, 0x31, 0xe2, 0x61, 0x10, 0xd2, 0x91, 0x41, 0xd2, 0x61, 
+        0x11, 0x62, 0x91, 0x28, 0x72, 0x91, 0x38, 0x01, 0xc2, 0xf5, 0xc0, 0x00, 0x00, 0xc2, 0x21, 0x30, 
+        0xd2, 0x21, 0x31, 0xe2, 0x21, 0x32, 0xf2, 0x91, 0x32, 0x62, 0x91, 0x44, 0x69, 0x01, 0x52, 0x91, 
+        0x35, 0x59, 0x11, 0x42, 0x91, 0x45, 0x49, 0x21, 0x32, 0x91, 0x48, 0x39, 0x31, 0x22, 0x91, 0x49, 
+        0x29, 0x41, 0x02, 0x91, 0x4a, 0x09, 0x51, 0xb2, 0x91, 0x4b, 0xb9, 0x61, 0xa2, 0x91, 0x4c, 0xa9, 
+        0x71, 0x92, 0x91, 0x4d, 0x99, 0x81, 0x82, 0x91, 0x4e, 0x89, 0x91, 0x72, 0x91, 0x4f, 0x79, 0xa1, 
+        0x62, 0x91, 0x50, 0x69, 0xb1, 0x52, 0x91, 0x51, 0x59, 0xc1, 0x42, 0x91, 0x52, 0x49, 0xd1, 0x32, 
+        0x91, 0x53, 0x39, 0xe1, 0x22, 0x91, 0x54, 0x3d, 0x0f, 0x29, 0xf1, 0x21, 0x7d, 0xff, 0x02, 0x91, 
+        0x55, 0x02, 0x61, 0x10, 0x42, 0x91, 0x42, 0x52, 0x91, 0x33, 0x62, 0x91, 0x43, 0x72, 0x91, 0x34, 
+        0x01, 0xa4, 0xf5, 0xc0, 0x00, 0x00, 0x22, 0x91, 0x29, 0x29, 0x01, 0x02, 0x91, 0x39, 0x09, 0x11, 
+        0xb2, 0x91, 0x2a, 0xb9, 0x21, 0xa2, 0x91, 0x3a, 0xa9, 0x31, 0x92, 0x91, 0x2b, 0x99, 0x41, 0x82, 
+        0x91, 0x3b, 0x89, 0x51, 0x72, 0x91, 0x2c, 0x79, 0x61, 0x62, 0x91, 0x3c, 0x69, 0x71, 0x52, 0x91, 
+        0x2d, 0x59, 0x81, 0x42, 0x91, 0x3d, 0x5d, 0x0c, 0x49, 0x91, 0x4d, 0x0d, 0x32, 0x91, 0x2e, 0x39, 
+        0xa1, 0x22, 0x91, 0x3e, 0x3d, 0x0e, 0x29, 0xb1, 0x21, 0x65, 0xff, 0x02, 0x91, 0x2f, 0x09, 0xc1, 
+        0xb2, 0x91, 0x3f, 0xb9, 0xd1, 0xa2, 0x91, 0x30, 0xa9, 0xe1, 0x92, 0x91, 0x40, 0x99, 0xf1, 0x82, 
+        0x91, 0x31, 0x82, 0x61, 0x10, 0x72, 0x91, 0x41, 0x72, 0x61, 0x11, 0x62, 0x91, 0x28, 0x72, 0x91, 
+        0x38, 0x01, 0x3b, 0xf3, 0xc0, 0x00, 0x00, 0x52, 0x91, 0x44, 0x59, 0x01, 0x42, 0x91, 0x35, 0x49, 
+        0x11, 0x32, 0x91, 0x45, 0x39, 0x21, 0x22, 0x91, 0x48, 0x29, 0x31, 0x02, 0x91, 0x49, 0x21, 0x54, 
+        0xff, 0x09, 0x41, 0xe2, 0x91, 0x4a, 0xe9, 0x51, 0xd2, 0x91, 0x4b, 0xd9, 0x61, 0xc2, 0x91, 0x4c, 
+        0xc9, 0x71, 0xb2, 0x91, 0x4d, 0xb9, 0x81, 0xa2, 0x91, 0x4e, 0xa9, 0x91, 0x92, 0x91, 0x4f, 0x99, 
+        0xa1, 0x82, 0x91, 0x50, 0x89, 0xb1, 0x72, 0x91, 0x51, 0x79, 0xc1, 0x62, 0x91, 0x52, 0x69, 0xd1, 
+        0x52, 0x91, 0x53, 0x59, 0xe1, 0x42, 0x91, 0x54, 0x49, 0xf1, 0x32, 0x91, 0x55, 0x32, 0x61, 0x10, 
+        0x3d, 0x0f, 0x42, 0x91, 0x42, 0x52, 0x91, 0x33, 0x62, 0x91, 0x43, 0x72, 0x91, 0x34, 0x01, 0x20, 
+        0xf3, 0xc0, 0x00, 0x00, 0xc2, 0x21, 0x34, 0xd2, 0x21, 0x35, 0xe2, 0x21, 0x36, 0xf2, 0x21, 0x37, 
+        0x22, 0xa0, 0xf0, 0x02, 0x21, 0x33, 0x2a, 0x11, 0x0d, 0xf0, 0x00, 0x00, 0x40, 0x3d, 0x10, 0x40, 
+        0x98, 0x5f, 0x10, 0x40, 0xd4, 0x5d, 0x10, 0x40, 0x7c, 0x58, 0x10, 0x40, 0xa8, 0x36, 0x10, 0x40, 
+        0xdc, 0x39, 0x10, 0x40, 0xec, 0x19, 0x10, 0x40, 0x08, 0x1a, 0x10, 0x40, 0xd8, 0x57, 0x10, 0x40, 
+        0xa0, 0x3e, 0x10, 0x40, 0x2a, 0xf3, 0xfe, 0x3f, 0x34, 0xf1, 0xfe, 0x3f, 0x14, 0x80, 0xfe, 0x3f, 
+        0x94, 0xf1, 0xfe, 0x3f, 0x21, 0x43, 0x65, 0x87, 0x78, 0x56, 0x34, 0x12, 0x00, 0x00, 0x00, 0x02, 
+        0xff, 0x1f, 0x00, 0x00, 0xc0, 0x0c, 0xf2, 0x3f, 0xac, 0x84, 0xfe, 0x3f, 0x12, 0xc1, 0xd0, 0xc9, 
+        0x91, 0xe9, 0xb1, 0x09, 0x81, 0x01, 0x1f, 0xf5, 0xd9, 0xa1, 0x38, 0x40, 0xdd, 0x02, 0x97, 0xf3, 
+        0x44, 0x01, 0xeb, 0xfe, 0xc0, 0x00, 0x00, 0x51, 0xee, 0xff, 0x61, 0xec, 0xff, 0x71, 0xea, 0xff, 
+        0x81, 0xe9, 0xff, 0x91, 0xe7, 0xff, 0xa1, 0xe5, 0xff, 0xb1, 0xe3, 0xff, 0xc1, 0xe2, 0xff, 0xe1, 
+        0xe0, 0xff, 0x01, 0x14, 0xf5, 0x31, 0xdd, 0xff, 0x29, 0x00, 0x32, 0x62, 0x1f, 0xe2, 0x62, 0x43, 
+        0xc2, 0x62, 0x12, 0xb2, 0x62, 0x3a, 0xa2, 0x62, 0x28, 0x92, 0x62, 0x22, 0x89, 0xa2, 0x72, 0x62, 
+        0x16, 0x69, 0x92, 0x52, 0x62, 0x36, 0x41, 0xdf, 0xff, 0xc1, 0xdf, 0xff, 0x42, 0x04, 0x00, 0xe2, 
+        0x0c, 0x44, 0xcc, 0xa4, 0x2d, 0x0d, 0xc5, 0x96, 0xff, 0xdd, 0x02, 0x0c, 0xee, 0x06, 0x02, 0x00, 
+        0xd2, 0xa0, 0x00, 0x80, 0xee, 0x01, 0xe0, 0xe8, 0x31, 0x45, 0xb5, 0xff, 0x45, 0x53, 0xff, 0x05, 
+        0x7a, 0xff, 0x21, 0xd6, 0xff, 0xc5, 0x46, 0x05, 0x01, 0xd3, 0xff, 0x02, 0x00, 0x00, 0x66, 0x10, 
+        0x08, 0xe0, 0x2e, 0x20, 0xc5, 0x07, 0x01, 0xc6, 0x07, 0x00, 0x31, 0xd1, 0xff, 0x61, 0xd3, 0xff, 
+        0x71, 0xd1, 0xff, 0x21, 0xb6, 0xf7, 0x81, 0xd0, 0xff, 0x82, 0x62, 0x00, 0x42, 0x22, 0x01, 0x72, 
+        0x62, 0x6a, 0x60, 0x44, 0x20, 0x49, 0x12, 0x05, 0x37, 0xfd, 0x92, 0x0c, 0xb8, 0x0c, 0x0e, 0x66, 
+        0x19, 0x05, 0x05, 0xbd, 0xff, 0xe2, 0x4c, 0xb8, 0xa2, 0x0c, 0xb9, 0x08, 0x81, 0x66, 0x1a, 0x3d, 
+        0xb2, 0x0c, 0xba, 0x66, 0x1b, 0x4c, 0x0c, 0x12, 0x85, 0x79, 0xff, 0x22, 0x0c, 0xbb, 0x85, 0x44, 
+        0x05, 0x0c, 0xa2, 0x0c, 0x03, 0x41, 0xc2, 0xff, 0x51, 0x5a, 0xf6, 0x62, 0xa0, 0xbf, 0x71, 0x58, 
+        0xf6, 0x0c, 0x0d, 0xd9, 0x01, 0xd9, 0x11, 0xd9, 0x21, 0xd9, 0x31, 0xd9, 0x41, 0x05, 0x14, 0x03, 
+        0x01, 0x62, 0xf7, 0xc0, 0x20, 0x00, 0xe2, 0x60, 0xf0, 0x0c, 0x0d, 0x06, 0x11, 0x00, 0xc8, 0x91, 
+        0x31, 0xb1, 0xff, 0x0c, 0x12, 0xe8, 0xb1, 0x22, 0x43, 0x00, 0x2d, 0x0d, 0xd8, 0xa1, 0x12, 0xc1, 
+        0x30, 0x0d, 0xf0, 0x22, 0xa0, 0x00, 0xc5, 0x74, 0xff, 0x22, 0x0c, 0xbb, 0x85, 0x3f, 0x05, 0x22, 
+        0xa0, 0x0a, 0x32, 0xa0, 0x00, 0x0c, 0x06, 0x0c, 0x07, 0x42, 0xa3, 0xfc, 0x0c, 0x05, 0x59, 0x11, 
+        0x59, 0x21, 0x59, 0x31, 0x49, 0x01, 0x59, 0x41, 0x42, 0xa4, 0x00, 0x0c, 0x45, 0x05, 0x0f, 0x03, 
+        0xd2, 0xa7, 0xd0, 0x05, 0x42, 0x05, 0x21, 0xa7, 0xff, 0x0c, 0x03, 0x85, 0x08, 0x03, 0x21, 0xa6, 
+        0xff, 0x32, 0x0c, 0xbb, 0x42, 0x0c, 0xbc, 0x01, 0xaa, 0xf2, 0xc0, 0x00, 0x00, 0x0c, 0xa2, 0x32, 
+        0x0c, 0xbc, 0x0c, 0x14, 0x5d, 0x0d, 0x85, 0x4f, 0x03, 0x06, 0xfc, 0xff, 0x0c, 0x23, 0x12, 0xc1, 
+        0xe0, 0xc9, 0x31, 0xd9, 0x41, 0xd1, 0xbf, 0xf4, 0x09, 0x21, 0x08, 0x0d, 0xcd, 0x02, 0x02, 0x20, 
+        0x2c, 0x0c, 0x32, 0xc0, 0x00, 0x00, 0x0c, 0x13, 0x08, 0x0d, 0x29, 0x01, 0x02, 0x20, 0x2c, 0x0c, 
+        0x22, 0xc0, 0x00, 0x00, 0x0c, 0x13, 0xc0, 0x49, 0x04, 0x08, 0x0d, 0xc0, 0x58, 0x04, 0xc0, 0x66, 
+        0x04, 0x29, 0x11, 0xc0, 0x77, 0x04, 0x0c, 0x32, 0xe0, 0x77, 0x11, 0xd0, 0x66, 0x11, 0xf0, 0x55, 
+        0x11, 0x02, 0x20, 0x2b, 0x50, 0x44, 0x20, 0x70, 0x66, 0x20, 0xc0, 0x53, 0x04, 0xc0, 0x74, 0x04, 
+        0xa0, 0x55, 0x11, 0xb0, 0x77, 0x11, 0x70, 0x55, 0x20, 0xc0, 0x75, 0x04, 0xc0, 0x77, 0x11, 0x70, 
+        0x55, 0x20, 0x60, 0x55, 0x20, 0x50, 0x44, 0x20, 0x40, 0x40, 0xf4, 0xc0, 0x00, 0x00, 0x0c, 0x32, 
+        0x0c, 0x23, 0x08, 0x0d, 0x48, 0x01, 0x52, 0xa1, 0xc7, 0x50, 0x44, 0x10, 0x02, 0x20, 0x2b, 0xc0, 
+        0x50, 0x24, 0xd0, 0x55, 0x11, 0x50, 0x44, 0x20, 0x40, 0x40, 0xf4, 0xc0, 0x00, 0x00, 0x0c, 0x22, 
+        0x0c, 0x13, 0x08, 0x0d, 0x48, 0x11, 0x52, 0xa1, 0x85, 0x50, 0x44, 0x10, 0x02, 0x20, 0x2b, 0xc0, 
+        0x5b, 0x34, 0xd0, 0x55, 0x11, 0x50, 0x44, 0x20, 0xc0, 0x5a, 0x04, 0xf0, 0x55, 0x11, 0x50, 0x44, 
+        0x20, 0x40, 0x40, 0xf4, 0xc0, 0x00, 0x00, 0xc8, 0x31, 0xd8, 0x41, 0x08, 0x21, 0x12, 0xc1, 0x20, 
+        0x0d, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x12, 0xc1, 0xe0, 0xd9, 0x21, 0xe9, 0x31, 0x09, 
+        0x01, 0xc9, 0x11, 0xf9, 0x41, 0x4d, 0x00, 0xf1, 0x0c, 0xf7, 0xc1, 0x24, 0xf3, 0xc0, 0x20, 0x00, 
+        0x22, 0x2c, 0xe5, 0x07, 0xe2, 0x41, 0xc0, 0x20, 0x00, 0x52, 0x2f, 0x9c, 0x17, 0x65, 0x38, 0xd1, 
+        0x85, 0xf4, 0x08, 0x0d, 0x02, 0x20, 0x1d, 0xc0, 0x00, 0x00, 0x0c, 0x52, 0x01, 0xfd, 0xf3, 0xc0, 
+        0x00, 0x00, 0xe2, 0xa1, 0x84, 0x08, 0x0d, 0x0c, 0x22, 0x02, 0x20, 0x2c, 0x0c, 0x13, 0xc0, 0x00, 
+        0x00, 0xe7, 0xc2, 0xf0, 0x08, 0x0d, 0x0c, 0x32, 0x02, 0x20, 0x2c, 0x0c, 0x23, 0xc0, 0x00, 0x00, 
+        0x0c, 0x63, 0x30, 0x22, 0x10, 0x66, 0x62, 0xdc, 0x91, 0x1d, 0xf7, 0x81, 0xe7, 0xf5, 0xc0, 0x20, 
+        0x00, 0x72, 0x28, 0x42, 0x90, 0x77, 0x20, 0xc0, 0x20, 0x00, 0x72, 0x68, 0x42, 0xc0, 0x20, 0x00, 
+        0x52, 0x2c, 0xe5, 0x0c, 0x16, 0x60, 0x55, 0x20, 0xc0, 0x20, 0x00, 0x52, 0x6c, 0xe5, 0xc0, 0x20, 
+        0x00, 0x42, 0x2f, 0x9c, 0x01, 0xdc, 0xff, 0x17, 0x64, 0x11, 0xc0, 0x20, 0x00, 0xa2, 0x2c, 0xe8, 
+        0xe7, 0xfa, 0x08, 0xc0, 0x20, 0x00, 0xb2, 0x2c, 0xe8, 0x07, 0x0b, 0xf6, 0xc8, 0x11, 0xd8, 0x21, 
+        0xe8, 0x31, 0xf8, 0x41, 0x08, 0x01, 0x12, 0xc1, 0x20, 0x0d, 0xf0, 0x00, 0x0c, 0x13, 0x42, 0xa0, 
+        0x81, 0x12, 0xc1, 0xf0, 0xc9, 0x11, 0xd9, 0x21, 0xd1, 0x5f, 0xf4, 0x09, 0x01, 0x08, 0x0d, 0xcd, 
+        0x02, 0x02, 0x20, 0x2b, 0x0c, 0x22, 0xc0, 0x00, 0x00, 0x0c, 0x72, 0x08, 0x0d, 0x0c, 0x13, 0x02, 
+        0x20, 0x2b, 0xc0, 0x45, 0x41, 0xc0, 0x00, 0x00, 0xc0, 0x40, 0x44, 0x08, 0x0d, 0x0c, 0x02, 0x02, 
+        0x20, 0x2b, 0x0c, 0x13, 0xc0, 0x00, 0x00, 0x0c, 0x12, 0x08, 0x0d, 0x0c, 0x13, 0x02, 0x20, 0x2b, 
+        0x42, 0xa0, 0x7f, 0xc0, 0x00, 0x00, 0x0c, 0x62, 0x08, 0x0d, 0x0c, 0x13, 0x02, 0x20, 0x2b, 0x42, 
+        0xa0, 0x7f, 0xc0, 0x00, 0x00, 0xc8, 0x11, 0xd8, 0x21, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 
+        0x00, 0x00, 0xf0, 0x00, 0xe4, 0x84, 0xfe, 0x3f, 0xff, 0xff, 0x0f, 0xff, 0x12, 0xc1, 0xe0, 0x09, 
+        0x11, 0x29, 0x61, 0xe9, 0x41, 0xd9, 0x31, 0xf9, 0x51, 0xc9, 0x21, 0xfd, 0x02, 0xc1, 0x41, 0xf4, 
+        0xdd, 0x04, 0xed, 0x03, 0x41, 0xf7, 0xff, 0x31, 0xd9, 0xf2, 0xc0, 0x20, 0x00, 0x22, 0x23, 0xf2, 
+        0x40, 0x22, 0x20, 0xc0, 0x20, 0x00, 0x08, 0x0c, 0x02, 0x20, 0x37, 0x22, 0x63, 0xf2, 0xc0, 0x00, 
+        0x00, 0x4d, 0x0d, 0x3d, 0x0f, 0x2d, 0x0e, 0x5d, 0x01, 0x85, 0x71, 0x00, 0x08, 0x0c, 0x02, 0x20, 
+        0x38, 0x2d, 0x01, 0xc0, 0x00, 0x00, 0x08, 0x0c, 0x02, 0x20, 0x36, 0xc0, 0x00, 0x00, 0x22, 0xa0, 
+        0x62, 0x0c, 0x13, 0x0c, 0x04, 0x0c, 0x45, 0x08, 0x0c, 0x0c, 0x06, 0x02, 0x20, 0x27, 0x0c, 0x87, 
+        0xc0, 0x00, 0x00, 0x0c, 0x0d, 0xf2, 0xa0, 0x63, 0xe2, 0xa0, 0x64, 0x3c, 0x22, 0x01, 0xa4, 0xf3, 
+        0xc0, 0x00, 0x00, 0x22, 0xa0, 0x62, 0x0c, 0x13, 0x0c, 0x74, 0x08, 0x0c, 0x0c, 0x75, 0x02, 0x20, 
+        0x25, 0x0c, 0x76, 0xc0, 0x00, 0x00, 0xdc, 0x22, 0xf7, 0x9d, 0x08, 0x21, 0xda, 0xff, 0x01, 0x50, 
+        0xf4, 0xc0, 0x00, 0x00, 0x1b, 0xdd, 0xd0, 0xd0, 0x74, 0xe7, 0x9d, 0xce, 0x01, 0xd7, 0xff, 0xc0, 
+        0x20, 0x00, 0xf1, 0xb6, 0xf2, 0xe2, 0x2f, 0xf2, 0x00, 0xee, 0x10, 0xc0, 0x20, 0x00, 0xc8, 0x21, 
+        0xe2, 0x6f, 0xf2, 0xd8, 0x31, 0xe8, 0x41, 0xf8, 0x51, 0x08, 0x11, 0x12, 0xc1, 0x20, 0x0d, 0xf0, 
+        0x32, 0xa0, 0x01, 0x42, 0xa0, 0x05, 0x0c, 0x75, 0x0c, 0x06, 0x12, 0xc1, 0xe0, 0xd9, 0x21, 0xf9, 
+        0x41, 0xc9, 0x11, 0xe9, 0x31, 0xe1, 0x0f, 0xf4, 0x09, 0x01, 0x08, 0x0e, 0xcd, 0x02, 0x02, 0x20, 
+        0x25, 0x22, 0xa0, 0x62, 0xc0, 0x00, 0x00, 0x0c, 0x0d, 0xfd, 0x02, 0x32, 0xae, 0xac, 0x20, 0x22, 
+        0x90, 0x30, 0x22, 0xb0, 0x32, 0xa0, 0xe3, 0x85, 0x6c, 0x06, 0x00, 0x52, 0x11, 0x0c, 0xf4, 0x0d, 
+        0x04, 0x50, 0x50, 0x31, 0x2d, 0x0d, 0x50, 0x25, 0xb3, 0xe6, 0xb2, 0x01, 0x0d, 0x02, 0x32, 0xa0, 
+        0xcf, 0xf0, 0x2f, 0x90, 0xf0, 0x22, 0xf0, 0x22, 0xc2, 0x1d, 0x00, 0xf0, 0x11, 0xf0, 0xf0, 0x31, 
+        0xc5, 0x69, 0x06, 0x98, 0x0e, 0x00, 0x42, 0x11, 0x0c, 0xf3, 0x0d, 0x03, 0x40, 0x40, 0x31, 0x92, 
+        0x29, 0x27, 0x40, 0xd4, 0xb3, 0xe6, 0xbd, 0x01, 0x0d, 0x0d, 0x00, 0xd0, 0x11, 0xd0, 0xd0, 0x31, 
+        0xb6, 0x3c, 0x1c, 0x0c, 0x82, 0xa6, 0x8f, 0x01, 0x7c, 0x82, 0x0c, 0x03, 0x0c, 0x44, 0x0c, 0x35, 
+        0x0c, 0x06, 0x2a, 0x7f, 0x70, 0x70, 0x74, 0x22, 0xa0, 0x64, 0xc0, 0x09, 0x00, 0x06, 0x04, 0x00, 
+        0xf0, 0x70, 0x74, 0x22, 0xa0, 0x64, 0x0c, 0x03, 0x0c, 0x44, 0x0c, 0x35, 0x0c, 0x06, 0xc0, 0x09, 
+        0x00, 0x98, 0x0e, 0x0c, 0x80, 0x92, 0x29, 0x27, 0xb6, 0x2c, 0x1a, 0xa6, 0x8d, 0x01, 0x7c, 0x80, 
+        0x22, 0xa0, 0x64, 0x0c, 0x03, 0x0c, 0x74, 0x0c, 0x35, 0x0c, 0x06, 0x0a, 0x7d, 0x70, 0x70, 0x74, 
+        0xc0, 0x09, 0x00, 0x06, 0x04, 0x00, 0xd0, 0x70, 0x74, 0x22, 0xa0, 0x64, 0x0c, 0x03, 0x0c, 0x74, 
+        0x0c, 0x35, 0x0c, 0x06, 0xc0, 0x09, 0x00, 0x98, 0x0e, 0x92, 0x29, 0x27, 0xac, 0x6c, 0x22, 0xa0, 
+        0x61, 0x0c, 0x13, 0x0c, 0x54, 0x0c, 0x35, 0x0c, 0x26, 0x0c, 0x37, 0xc0, 0x09, 0x00, 0x22, 0xa0, 
+        0x61, 0x0c, 0x13, 0x0c, 0x54, 0x0c, 0x15, 0x08, 0x0e, 0x0c, 0x06, 0x02, 0x20, 0x27, 0x0c, 0x37, 
+        0xc0, 0x00, 0x00, 0x06, 0x09, 0x00, 0x22, 0xa0, 0x61, 0x0c, 0x13, 0x0c, 0x54, 0x0c, 0x35, 0x0c, 
+        0x26, 0x0c, 0x07, 0xc0, 0x09, 0x00, 0x22, 0xa0, 0x61, 0x0c, 0x13, 0x0c, 0x54, 0x0c, 0x15, 0x08, 
+        0x0e, 0x0c, 0x06, 0x02, 0x20, 0x27, 0x0c, 0x07, 0xc0, 0x00, 0x00, 0xc8, 0x11, 0xd8, 0x21, 0xe8, 
+        0x31, 0xf8, 0x41, 0x08, 0x01, 0x12, 0xc1, 0x20, 0x0d, 0xf0, 0x00, 0x00, 0x22, 0xa0, 0x61, 0x12, 
+        0xc1, 0xf0, 0x09, 0x01, 0x01, 0xc0, 0xf3, 0x0c, 0x13, 0x08, 0x00, 0x0c, 0x84, 0x02, 0x20, 0x26, 
+        0x1c, 0x15, 0xc0, 0x00, 0x00, 0x0c, 0x02, 0x85, 0xe9, 0xff, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 
+        0xf0, 0x00, 0x00, 0x00, 0xff, 0xff, 0x7f, 0xff, 0x12, 0xc1, 0xf0, 0x09, 0x01, 0x72, 0xaf, 0xdf, 
+        0x21, 0xbf, 0xf1, 0xc0, 0x20, 0x00, 0x62, 0x22, 0xd4, 0x70, 0x66, 0x10, 0xc0, 0x20, 0x00, 0x62, 
+        0x62, 0xd4, 0x51, 0x3b, 0xf8, 0xc0, 0x20, 0x00, 0x42, 0x22, 0xd7, 0x50, 0x44, 0x20, 0xc0, 0x20, 
+        0x00, 0x42, 0x62, 0xd7, 0x31, 0xf4, 0xff, 0xc0, 0x20, 0x00, 0x02, 0x22, 0xd7, 0x30, 0x00, 0x10, 
+        0xc0, 0x20, 0x00, 0x02, 0x62, 0xd7, 0x22, 0xa0, 0xc8, 0x01, 0x21, 0xf3, 0xc0, 0x00, 0x00, 0x22, 
+        0xa0, 0x6c, 0x0c, 0x23, 0x0c, 0x04, 0x01, 0xa3, 0xf3, 0x0c, 0x65, 0x08, 0x00, 0x0c, 0x66, 0x02, 
+        0x20, 0x27, 0x0c, 0x07, 0xc0, 0x00, 0x00, 0x22, 0xa0, 0x6c, 0x0c, 0x23, 0x0c, 0x04, 0x01, 0x9d, 
+        0xf3, 0x0c, 0x65, 0x08, 0x00, 0x0c, 0x66, 0x02, 0x20, 0x27, 0x0c, 0x17, 0xc0, 0x00, 0x00, 0x2c, 
+        0x04, 0xc0, 0x20, 0x00, 0x31, 0xa2, 0xf1, 0x22, 0x23, 0xd4, 0x40, 0x22, 0x20, 0xc0, 0x20, 0x00, 
+        0x0c, 0x24, 0x0c, 0x75, 0x01, 0x94, 0xf3, 0x0c, 0x06, 0x08, 0x00, 0x22, 0x63, 0xd4, 0x22, 0xa0, 
+        0x6c, 0x02, 0x20, 0x25, 0x0c, 0x23, 0xc0, 0x00, 0x00, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 
+        0xff, 0xff, 0xdf, 0xff, 0x12, 0xc1, 0xe0, 0xc9, 0x11, 0xd9, 0x21, 0xd1, 0x8a, 0xf3, 0x09, 0x01, 
+        0x08, 0x0d, 0xe9, 0x31, 0x02, 0x20, 0x28, 0xf9, 0x41, 0xc0, 0x00, 0x00, 0x08, 0x0d, 0x0c, 0x62, 
+        0x02, 0x20, 0x2c, 0x0c, 0x13, 0xc0, 0x00, 0x00, 0x0c, 0x23, 0x0c, 0x94, 0x0c, 0x25, 0x0c, 0x06, 
+        0x08, 0x0d, 0xfd, 0x02, 0x02, 0x20, 0x25, 0x22, 0xa0, 0x6b, 0xc0, 0x00, 0x00, 0x0c, 0x23, 0x0c, 
+        0x04, 0x0c, 0x55, 0x0c, 0x56, 0x08, 0x0d, 0xcd, 0x02, 0x02, 0x20, 0x25, 0x22, 0xa0, 0x6c, 0xc0, 
+        0x00, 0x00, 0x0c, 0x13, 0xc9, 0x61, 0x08, 0x0d, 0xed, 0x02, 0x0c, 0x24, 0x0c, 0x62, 0x40, 0x4f, 
+        0x20, 0x02, 0x20, 0x2b, 0x40, 0x40, 0xf4, 0xc0, 0x00, 0x00, 0x22, 0xa0, 0x6b, 0x0c, 0x23, 0x0c, 
+        0x94, 0x0c, 0x75, 0x0c, 0x76, 0x08, 0x0d, 0x0c, 0x17, 0x02, 0x20, 0x27, 0xe9, 0x51, 0xc0, 0x00, 
+        0x00, 0x22, 0xa0, 0x6b, 0x0c, 0x23, 0x0c, 0x94, 0x0c, 0x25, 0x08, 0x0d, 0x0c, 0x06, 0x02, 0x20, 
+        0x27, 0x0c, 0x07, 0xc0, 0x00, 0x00, 0x0c, 0x2c, 0x22, 0xa0, 0x6c, 0x0c, 0x23, 0x0c, 0x04, 0x0c, 
+        0x55, 0x08, 0x0d, 0x0c, 0x56, 0x02, 0x20, 0x27, 0x0c, 0x17, 0xc0, 0x00, 0x00, 0x81, 0x8d, 0xf3, 
+        0xe1, 0x6b, 0xf1, 0xc0, 0x20, 0x00, 0x72, 0x2e, 0xd7, 0x80, 0x77, 0x20, 0xc0, 0x20, 0x00, 0x72, 
+        0x6e, 0xd7, 0x61, 0xcf, 0xff, 0xc0, 0x20, 0x00, 0x52, 0x2e, 0xd7, 0x60, 0x55, 0x10, 0xc0, 0x20, 
+        0x00, 0x52, 0x6e, 0xd7, 0x7c, 0xd4, 0xc0, 0x20, 0x00, 0x32, 0x2e, 0xd4, 0x40, 0x33, 0x10, 0xc0, 
+        0x20, 0x00, 0x32, 0x6e, 0xd4, 0xc0, 0x20, 0x00, 0x22, 0x2e, 0xd4, 0xc0, 0x22, 0x20, 0xc0, 0x20, 
+        0x00, 0x22, 0x6e, 0xd4, 0x1c, 0x92, 0x01, 0xca, 0xf2, 0xc0, 0x00, 0x00, 0x0c, 0x00, 0x0c, 0x0c, 
+        0xe0, 0x20, 0xa0, 0xc0, 0x20, 0x00, 0x22, 0x22, 0xe0, 0x1b, 0x00, 0x00, 0x00, 0x74, 0x20, 0x20, 
+        0xb4, 0x20, 0xcc, 0xc0, 0xc2, 0xdc, 0x08, 0xc0, 0xc0, 0xf4, 0x66, 0x80, 0xe2, 0xf0, 0x40, 0xf4, 
+        0x08, 0x0d, 0x0c, 0x62, 0x02, 0x20, 0x2b, 0x0c, 0x13, 0xc0, 0x00, 0x00, 0xf8, 0x61, 0x22, 0xa0, 
+        0x6b, 0x0c, 0x23, 0x0c, 0x94, 0x0c, 0x75, 0x08, 0x0d, 0x0c, 0x76, 0x02, 0x20, 0x27, 0x0c, 0x07, 
+        0xc0, 0x00, 0x00, 0xf0, 0x70, 0x74, 0x22, 0xa0, 0x6b, 0x0c, 0x23, 0x0c, 0x94, 0x0c, 0x25, 0x08, 
+        0x0d, 0x0c, 0x06, 0x02, 0x20, 0x27, 0xe8, 0x51, 0xc0, 0x00, 0x00, 0xe0, 0x70, 0x74, 0x22, 0xa0, 
+        0x6c, 0x0c, 0x23, 0x0c, 0x04, 0x08, 0x0d, 0x0c, 0x55, 0x02, 0x20, 0x27, 0x0c, 0x56, 0xc0, 0x00, 
+        0x00, 0x08, 0x0d, 0x02, 0x20, 0x2f, 0xc0, 0x00, 0x00, 0x08, 0x01, 0xd8, 0x21, 0xe8, 0x31, 0x60, 
+        0x2c, 0x11, 0xf8, 0x41, 0xc8, 0x11, 0x22, 0xd2, 0x08, 0x20, 0x2c, 0xf4, 0x12, 0xc1, 0x20, 0x0d, 
+        0xf0, 0x00, 0x00, 0x00, 0x33, 0x0d, 0x00, 0x00, 0x12, 0xc1, 0xf0, 0xc9, 0x21, 0x29, 0x01, 0x09, 
+        0x11, 0x05, 0xe6, 0xff, 0x01, 0xfc, 0xff, 0x0c, 0x0c, 0x07, 0x32, 0x02, 0x86, 0x0a, 0x00, 0xc1, 
+        0x21, 0xf3, 0x08, 0x0c, 0x08, 0xe0, 0x0c, 0x33, 0xc0, 0x00, 0x00, 0x0c, 0x33, 0x08, 0x0c, 0xcd, 
+        0x02, 0x08, 0xe0, 0x21, 0xf4, 0xff, 0xc0, 0x00, 0x00, 0x20, 0xcc, 0xc0, 0xf0, 0xcc, 0x11, 0x00, 
+        0xcc, 0x11, 0xc0, 0xc0, 0x31, 0x2b, 0xcc, 0xc0, 0xc2, 0x21, 0xc5, 0xd7, 0xff, 0x0c, 0x00, 0x51, 
+        0x44, 0xf6, 0x28, 0x01, 0x41, 0x67, 0xfc, 0xca, 0xc2, 0x00, 0xcc, 0x11, 0xc0, 0xc0, 0x31, 0x2d, 
+        0x0c, 0x5a, 0x60, 0x1b, 0x70, 0x4a, 0x30, 0x32, 0x03, 0x24, 0x70, 0x00, 0x74, 0x3a, 0x3c, 0x32, 
+        0x46, 0x00, 0x66, 0x60, 0xeb, 0xc8, 0x21, 0x08, 0x11, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 
+        0x12, 0xc1, 0xf0, 0x09, 0x01, 0xc9, 0x11, 0xd9, 0x21, 0xcd, 0x02, 0x0c, 0x0d, 0x16, 0x1d, 0x04, 
+        0x26, 0x1d, 0x20, 0x66, 0x2d, 0x56, 0x22, 0xa0, 0x6b, 0x0c, 0x23, 0x0c, 0x24, 0x0c, 0x65, 0x01, 
+        0x01, 0xf3, 0x0c, 0x46, 0x08, 0x00, 0xda, 0x7c, 0x02, 0x20, 0x27, 0x72, 0x07, 0x00, 0xc0, 0x00, 
+        0x00, 0x06, 0x0e, 0x00, 0x22, 0xa0, 0x6b, 0x0c, 0x23, 0x0c, 0x24, 0x0c, 0x35, 0x01, 0xf9, 0xf2, 
+        0x0c, 0x06, 0x08, 0x00, 0xda, 0x7c, 0x02, 0x20, 0x27, 0x72, 0x07, 0x00, 0xc0, 0x00, 0x00, 0x86, 
+        0x06, 0x00, 0x22, 0xa0, 0x6b, 0x0c, 0x23, 0x0c, 0x14, 0x0c, 0x35, 0x01, 0xf2, 0xf2, 0x0c, 0x06, 
+        0x08, 0x00, 0xda, 0x7c, 0x02, 0x20, 0x27, 0x72, 0x07, 0x00, 0xc0, 0x00, 0x00, 0x1b, 0xdd, 0xd0, 
+        0xd0, 0x74, 0x66, 0x3d, 0x97, 0xc8, 0x11, 0xd8, 0x21, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 
+        0x12, 0xc1, 0xe0, 0x09, 0x11, 0x39, 0x01, 0xc9, 0x21, 0xd9, 0x31, 0xe9, 0x41, 0xdd, 0x02, 0xed, 
+        0x04, 0xc1, 0xe4, 0xf2, 0x16, 0x22, 0x0f, 0x22, 0xa0, 0x77, 0x0c, 0x03, 0x1c, 0xc4, 0x0c, 0x05, 
+        0x08, 0x0c, 0x0c, 0x06, 0x02, 0x20, 0x27, 0x0c, 0x07, 0xc0, 0x00, 0x00, 0x22, 0xa0, 0x77, 0x0c, 
+        0x03, 0x1c, 0xa4, 0x0c, 0x45, 0x08, 0x0c, 0x0c, 0x46, 0x02, 0x20, 0x27, 0x0c, 0x07, 0xc0, 0x00, 
+        0x00, 0x22, 0xa0, 0x77, 0x0c, 0x03, 0x1c, 0xa4, 0x0c, 0x45, 0x08, 0x0c, 0x0c, 0x46, 0x02, 0x20, 
+        0x27, 0x0c, 0x17, 0xc0, 0x00, 0x00, 0x22, 0xa0, 0x77, 0x0c, 0x03, 0x1c, 0xa4, 0x0c, 0x55, 0x08, 
+        0x0c, 0x0c, 0x56, 0x02, 0x20, 0x27, 0x0c, 0x07, 0xc0, 0x00, 0x00, 0x22, 0xa0, 0x77, 0x0c, 0x03, 
+        0x1c, 0xa4, 0x0c, 0x55, 0x08, 0x0c, 0x0c, 0x56, 0x02, 0x20, 0x27, 0x0c, 0x17, 0xc0, 0x00, 0x00, 
+        0x22, 0xa0, 0x77, 0x0c, 0x03, 0x0c, 0x04, 0x0c, 0x75, 0x0c, 0x06, 0x08, 0x0c, 0x78, 0x01, 0x02, 
+        0x20, 0x27, 0x70, 0x7c, 0x74, 0xc0, 0x00, 0x00, 0x22, 0xa0, 0x77, 0x0c, 0x03, 0x0c, 0x14, 0x0c, 
+        0x75, 0x0c, 0x06, 0x08, 0x0c, 0x78, 0x01, 0x02, 0x20, 0x27, 0x70, 0x74, 0x74, 0xc0, 0x00, 0x00, 
+        0x22, 0xa0, 0x77, 0x0c, 0x03, 0x0c, 0x24, 0x0c, 0x35, 0x0c, 0x06, 0x08, 0x0c, 0x78, 0x01, 0x02, 
+        0x20, 0x27, 0x70, 0x70, 0x34, 0xc0, 0x00, 0x00, 0x22, 0xa0, 0x77, 0x0c, 0x03, 0x0c, 0x44, 0x0c, 
+        0x75, 0x08, 0x0c, 0x0c, 0x06, 0x02, 0x20, 0x27, 0xe0, 0x70, 0x74, 0xc0, 0x00, 0x00, 0x22, 0xa0, 
+        0x77, 0x0c, 0x03, 0x0c, 0x34, 0x0c, 0x75, 0x08, 0x0c, 0x0c, 0x06, 0x02, 0x20, 0x27, 0xe0, 0x78, 
+        0x74, 0xc0, 0x00, 0x00, 0xe0, 0x70, 0x35, 0x22, 0xa0, 0x77, 0x0c, 0x03, 0x0c, 0x24, 0x08, 0x0c, 
+        0x0c, 0x75, 0x02, 0x20, 0x27, 0x0c, 0x46, 0xc0, 0x00, 0x00, 0x0c, 0xf4, 0x0c, 0x35, 0x0c, 0x36, 
+        0xd0, 0x30, 0x04, 0x0c, 0x12, 0x08, 0x0c, 0x0c, 0x0e, 0x02, 0x20, 0x27, 0x30, 0xe2, 0x83, 0x7d, 
+        0x0e, 0x22, 0xa0, 0x77, 0x0c, 0x03, 0xc0, 0x00, 0x00, 0x7d, 0x0e, 0x22, 0xa0, 0x77, 0x0c, 0x03, 
+        0x1c, 0x84, 0x08, 0x0c, 0x0c, 0x05, 0x02, 0x20, 0x27, 0x0c, 0x06, 0xc0, 0x00, 0x00, 0x7d, 0x0d, 
+        0x22, 0xa0, 0x77, 0x0c, 0x03, 0x1c, 0xc4, 0x08, 0x0c, 0x0c, 0x05, 0x02, 0x20, 0x27, 0x0c, 0x06, 
+        0xc0, 0x00, 0x00, 0xc8, 0x21, 0xd8, 0x31, 0xe8, 0x41, 0x08, 0x11, 0x12, 0xc1, 0x20, 0x0d, 0xf0, 
+        0x22, 0xa0, 0x62, 0x0c, 0x13, 0x0c, 0x04, 0x0c, 0x65, 0x12, 0xc1, 0xf0, 0xc9, 0x11, 0xc1, 0x8d, 
+        0xf2, 0x09, 0x01, 0x08, 0x0c, 0x0c, 0x66, 0x02, 0x20, 0x27, 0x0c, 0x17, 0xc0, 0x00, 0x00, 0x22, 
+        0xa0, 0x62, 0x0c, 0x13, 0x0c, 0x04, 0x0c, 0x55, 0x08, 0x0c, 0x0c, 0x56, 0x02, 0x20, 0x27, 0x0c, 
+        0x07, 0xc0, 0x00, 0x00, 0x22, 0xa0, 0x62, 0x0c, 0x13, 0x0c, 0x04, 0x0c, 0x55, 0x08, 0x0c, 0x0c, 
+        0x56, 0x02, 0x20, 0x27, 0x0c, 0x17, 0xc0, 0x00, 0x00, 0x22, 0xa0, 0x62, 0x0c, 0x13, 0x0c, 0x04, 
+        0x0c, 0x65, 0x08, 0x0c, 0x0c, 0x66, 0x02, 0x20, 0x27, 0x0c, 0x07, 0xc0, 0x00, 0x00, 0xc8, 0x11, 
+        0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x20, 0x42, 0x00, 0x00, 0xc0, 0x41, 
+        0x00, 0x00, 0xd0, 0x41, 0x00, 0x00, 0x80, 0x43, 0x00, 0x00, 0x08, 0x40, 0x00, 0x00, 0x80, 0x44, 
+        0x00, 0x00, 0x00, 0xc2, 0x12, 0xc1, 0xe0, 0xd9, 0x31, 0x09, 0x11, 0xc9, 0x21, 0xe9, 0x41, 0xcd, 
+        0x05, 0xe1, 0xf5, 0xff, 0x8c, 0xd3, 0x26, 0x13, 0x08, 0x66, 0x23, 0x08, 0xe1, 0xf4, 0xff, 0x86, 
+        0x00, 0x00, 0xe1, 0xf3, 0xff, 0xd1, 0xf3, 0xff, 0x60, 0x22, 0x11, 0x20, 0x24, 0x80, 0xe0, 0x22, 
+        0x11, 0x85, 0x1c, 0x06, 0x51, 0xf1, 0xff, 0x0c, 0x04, 0x85, 0x39, 0x05, 0x05, 0x50, 0x05, 0x29, 
+        0x01, 0x31, 0xee, 0xff, 0x2d, 0x0e, 0x45, 0xd5, 0x04, 0x3d, 0x02, 0x28, 0x01, 0x05, 0xeb, 0x04, 
+        0x31, 0xec, 0xff, 0xc5, 0xae, 0x04, 0xed, 0x02, 0x05, 0xfa, 0x04, 0x22, 0x4c, 0x00, 0x20, 0x20, 
+        0x74, 0xc5, 0x15, 0x06, 0x3d, 0x02, 0x2d, 0x0e, 0xc5, 0xbb, 0x04, 0x3d, 0x0d, 0xc5, 0xd2, 0x04, 
+        0xed, 0x02, 0x85, 0xf8, 0x04, 0x22, 0x4c, 0x01, 0x20, 0x20, 0x74, 0x45, 0x14, 0x06, 0x3d, 0x02, 
+        0x2d, 0x0e, 0x45, 0xba, 0x04, 0x3d, 0x0d, 0x45, 0xd1, 0x04, 0x05, 0xf7, 0x04, 0x08, 0x11, 0xd8, 
+        0x31, 0x22, 0x4c, 0x02, 0xe8, 0x41, 0xc8, 0x21, 0x12, 0xc1, 0x20, 0x0d, 0xf0, 0x00, 0x00, 0x00, 
+        0x65, 0x40, 0x10, 0x40, 0xb4, 0x09, 0x00, 0x00, 0xc7, 0x40, 0x10, 0x40, 0x04, 0x85, 0xfe, 0x3f, 
+        0x05, 0x42, 0x10, 0x40, 0x6c, 0x09, 0x00, 0x00, 0xa8, 0x09, 0x00, 0x00, 0xa3, 0x09, 0x00, 0x00, 
+        0x9e, 0x09, 0x00, 0x00, 0x99, 0x09, 0x00, 0x00, 0x94, 0x09, 0x00, 0x00, 0x8f, 0x09, 0x00, 0x00, 
+        0x8a, 0x09, 0x00, 0x00, 0x85, 0x09, 0x00, 0x00, 0x80, 0x09, 0x00, 0x00, 0x7b, 0x09, 0x00, 0x00, 
+        0x76, 0x09, 0x00, 0x00, 0x71, 0x09, 0x00, 0x00, 0x12, 0xc1, 0xd0, 0xc9, 0x61, 0x49, 0xa1, 0x69, 
+        0x41, 0x39, 0x31, 0x09, 0x51, 0xe9, 0x81, 0xd9, 0x71, 0xf9, 0x91, 0xdd, 0x02, 0xfd, 0x04, 0x2d, 
+        0x05, 0x29, 0x21, 0xa6, 0x1d, 0x0c, 0x0c, 0xd0, 0xd7, 0x20, 0x07, 0x0b, 0xed, 0xe0, 0xe0, 0x74, 
+        0x46, 0x00, 0x00, 0x0c, 0xde, 0x41, 0xe2, 0xfd, 0xc1, 0x2b, 0xf2, 0x31, 0xc4, 0xf0, 0xc0, 0x20, 
+        0x00, 0x22, 0x23, 0xf2, 0x40, 0x22, 0x20, 0xc0, 0x20, 0x00, 0x08, 0x0c, 0x02, 0x20, 0x37, 0x22, 
+        0x63, 0xf2, 0xc0, 0x00, 0x00, 0x0c, 0xe5, 0x57, 0xbd, 0x34, 0x71, 0xd9, 0xff, 0xd0, 0x6d, 0x90, 
+        0x7a, 0x66, 0xa0, 0x06, 0x00, 0x86, 0x09, 0x00, 0xc6, 0x79, 0x00, 0x06, 0x91, 0x00, 0x46, 0x8e, 
+        0x00, 0x86, 0x8b, 0x00, 0xc6, 0x88, 0x00, 0x06, 0x86, 0x00, 0x46, 0x83, 0x00, 0x86, 0x80, 0x00, 
+        0xc6, 0x7d, 0x00, 0x06, 0x7b, 0x00, 0x46, 0x78, 0x00, 0x86, 0x75, 0x00, 0xc6, 0x72, 0x00, 0x81, 
+        0xcd, 0xff, 0x89, 0x11, 0x56, 0x9f, 0x05, 0x98, 0x31, 0x3c, 0xb0, 0xf6, 0x29, 0x52, 0x0b, 0xa9, 
+        0x56, 0xea, 0x13, 0x42, 0xaf, 0xb7, 0xb2, 0xaf, 0x83, 0xa2, 0xa0, 0x76, 0x5c, 0xe3, 0x5c, 0xd9, 
+        0x5c, 0xc5, 0x5c, 0xb6, 0x0c, 0xee, 0xe7, 0x3d, 0x02, 0x86, 0x83, 0x00, 0x21, 0xc3, 0xff, 0xd0, 
+        0xfd, 0x90, 0x2a, 0xff, 0xa0, 0x0f, 0x00, 0x06, 0x80, 0x00, 0x06, 0x20, 0x00, 0x86, 0x82, 0x00, 
+        0x46, 0xad, 0x00, 0xc6, 0xa9, 0x00, 0x06, 0xa6, 0x00, 0x06, 0x83, 0x00, 0x86, 0xa2, 0x00, 0x46, 
+        0x9e, 0x00, 0x46, 0x9a, 0x00, 0xc6, 0x96, 0x00, 0x86, 0x92, 0x00, 0x06, 0x8f, 0x00, 0x86, 0x8b, 
+        0x00, 0x00, 0x0e, 0x40, 0x38, 0x21, 0xd8, 0x41, 0x38, 0x03, 0xd0, 0xde, 0xa0, 0x30, 0x30, 0x91, 
+        0x07, 0xe3, 0x35, 0x4d, 0x0f, 0x38, 0x31, 0x28, 0x11, 0x5d, 0x01, 0x85, 0xe1, 0xff, 0x00, 0x1e, 
+        0x40, 0x0c, 0x12, 0x08, 0x21, 0x32, 0x01, 0x02, 0x52, 0x01, 0x01, 0x42, 0x01, 0x00, 0x80, 0x55, 
+        0x11, 0x00, 0x44, 0x11, 0x50, 0x44, 0x20, 0x40, 0x33, 0x20, 0x39, 0x0d, 0xf8, 0x00, 0x00, 0x22, 
+        0xa1, 0x20, 0xff, 0x20, 0xf9, 0x00, 0x06, 0x08, 0x00, 0x78, 0x0d, 0x70, 0x70, 0xf5, 0x72, 0x41, 
+        0x00, 0x68, 0x0d, 0x60, 0x68, 0x41, 0x62, 0x41, 0x01, 0x08, 0x0d, 0x06, 0x02, 0x00, 0x62, 0x41, 
+        0x00, 0x32, 0xaf, 0xb1, 0x32, 0x41, 0x01, 0x02, 0x41, 0x02, 0x08, 0x0c, 0x02, 0x20, 0x38, 0x2d, 
+        0x01, 0xc0, 0x00, 0x00, 0x08, 0x0c, 0x02, 0x20, 0x36, 0xc0, 0x00, 0x00, 0x22, 0xa0, 0x62, 0x0c, 
+        0x13, 0x0c, 0x04, 0x0c, 0x45, 0x08, 0x0c, 0x0c, 0x06, 0x02, 0x20, 0x27, 0x0c, 0x87, 0xc0, 0x00, 
+        0x00, 0x0c, 0x0d, 0xf2, 0xa0, 0x63, 0xe2, 0xa0, 0x64, 0x1c, 0x42, 0x01, 0x51, 0xf1, 0xc0, 0x00, 
+        0x00, 0x22, 0xa0, 0x62, 0x0c, 0x13, 0x0c, 0x74, 0x08, 0x0c, 0x0c, 0x75, 0x02, 0x20, 0x25, 0x0c, 
+        0x76, 0xc0, 0x00, 0x00, 0xdc, 0x22, 0xf7, 0x9d, 0x08, 0x21, 0x88, 0xff, 0x01, 0xfd, 0xf1, 0xc0, 
+        0x00, 0x00, 0x1b, 0xdd, 0xd0, 0xd0, 0x74, 0xe7, 0x9d, 0xce, 0x08, 0x11, 0x31, 0x83, 0xfd, 0xc0, 
+        0x20, 0x00, 0x21, 0x62, 0xf0, 0xf2, 0x22, 0xf2, 0x30, 0xff, 0x10, 0xc0, 0x20, 0x00, 0xc8, 0x61, 
+        0xd8, 0x71, 0xf2, 0x62, 0xf2, 0xe8, 0x81, 0xf8, 0x91, 0x2d, 0x00, 0x08, 0x51, 0x12, 0xc1, 0x30, 
+        0x0d, 0xf0, 0x3c, 0x04, 0x3c, 0x2e, 0x32, 0xa0, 0x66, 0xb2, 0xaf, 0x91, 0x52, 0xaf, 0xbb, 0x6c, 
+        0x69, 0x1c, 0x16, 0x3c, 0x1a, 0x0c, 0xe7, 0x77, 0xbd, 0x34, 0xf1, 0x75, 0xff, 0xd0, 0x8d, 0x90, 
+        0xfa, 0x88, 0xa0, 0x08, 0x00, 0x86, 0x09, 0x00, 0x06, 0x0f, 0x00, 0xc6, 0x09, 0x00, 0xc6, 0x3c, 
+        0x00, 0x06, 0x3d, 0x00, 0x46, 0x40, 0x00, 0x46, 0x08, 0x00, 0x46, 0x27, 0x00, 0x86, 0x27, 0x00, 
+        0x86, 0x3b, 0x00, 0x06, 0x27, 0x00, 0x46, 0x33, 0x00, 0x86, 0x33, 0x00, 0x86, 0x05, 0x00, 0x4d, 
+        0x0e, 0x62, 0xaf, 0xcc, 0xbd, 0x06, 0x5d, 0x06, 0x0d, 0x0b, 0xad, 0x04, 0x3d, 0x05, 0x4d, 0x0a, 
+        0x02, 0x41, 0x01, 0x06, 0x01, 0x00, 0x4d, 0x0e, 0x32, 0x41, 0x01, 0x0d, 0x03, 0x42, 0x41, 0x00, 
+        0xc6, 0xc0, 0xff, 0x01, 0x60, 0xff, 0x09, 0x11, 0x06, 0x8e, 0xff, 0x21, 0x5f, 0xff, 0x29, 0x11, 
+        0x06, 0x8c, 0xff, 0x31, 0x5e, 0xff, 0x39, 0x11, 0x06, 0x8a, 0xff, 0x41, 0x5d, 0xff, 0x49, 0x11, 
+        0x06, 0x88, 0xff, 0x51, 0x5c, 0xff, 0x59, 0x11, 0x06, 0x86, 0xff, 0x61, 0x5b, 0xff, 0x69, 0x11, 
+        0x06, 0x84, 0xff, 0x71, 0x5a, 0xff, 0x79, 0x11, 0x06, 0x82, 0xff, 0x81, 0x59, 0xff, 0x89, 0x11, 
+        0x06, 0x80, 0xff, 0x91, 0x58, 0xff, 0x99, 0x11, 0x06, 0x7e, 0xff, 0xa1, 0x57, 0xff, 0xa9, 0x11, 
+        0x06, 0x7c, 0xff, 0xb1, 0x56, 0xff, 0xb9, 0x11, 0x06, 0x7a, 0xff, 0x01, 0x55, 0xff, 0x09, 0x11, 
+        0x06, 0x78, 0xff, 0x21, 0x54, 0xff, 0x29, 0x11, 0x06, 0x76, 0xff, 0x6d, 0x03, 0xbd, 0x06, 0x3d, 
+        0x06, 0x9d, 0x0b, 0x4d, 0x0a, 0x92, 0x41, 0x01, 0xc6, 0xdf, 0xff, 0x0d, 0x0a, 0x32, 0xa0, 0x62, 
+        0x5c, 0xf4, 0x42, 0x41, 0x00, 0x32, 0x41, 0x01, 0xc6, 0x9e, 0xff, 0x62, 0x41, 0x00, 0x02, 0xaf, 
+        0xdf, 0x7c, 0x25, 0x52, 0x41, 0x01, 0x46, 0x9b, 0xff, 0x52, 0x41, 0x00, 0x02, 0xa0, 0x6f, 0x7c, 
+        0x96, 0x62, 0x41, 0x01, 0xc6, 0x97, 0xff, 0x5d, 0x06, 0x0d, 0x05, 0x3d, 0x05, 0x4d, 0x0e, 0x02, 
+        0x41, 0x01, 0x46, 0xd1, 0xff, 0x3d, 0x05, 0x9d, 0x03, 0x5d, 0x03, 0x0d, 0x09, 0xad, 0x04, 0x46, 
+        0xca, 0xff, 0x3d, 0x05, 0x9d, 0x03, 0x46, 0xea, 0xff, 0x5d, 0x06, 0x0d, 0x05, 0xc6, 0xc6, 0xff, 
+        0x32, 0x41, 0x00, 0x6c, 0xc0, 0x32, 0xaf, 0xc4, 0x06, 0x8a, 0xff, 0x32, 0x41, 0x00, 0xb2, 0x41, 
+        0x01, 0x4c, 0x80, 0x06, 0x88, 0xff, 0x32, 0x41, 0x00, 0x02, 0xaf, 0xa4, 0x4c, 0x17, 0x72, 0x41, 
+        0x01, 0x86, 0x84, 0xff, 0x0c, 0x00, 0x02, 0x41, 0x01, 0x32, 0x41, 0x00, 0xc6, 0x81, 0xff, 0x0d, 
+        0x06, 0x3d, 0x09, 0x82, 0xaf, 0xbe, 0x82, 0x41, 0x01, 0x06, 0xfb, 0xff, 0x92, 0x41, 0x00, 0x02, 
+        0xa0, 0x7c, 0x02, 0x41, 0x01, 0x0d, 0x04, 0x06, 0x7b, 0xff, 0x92, 0x41, 0x00, 0x1c, 0x34, 0xc6, 
+        0xfb, 0xff, 0x52, 0x41, 0x00, 0x42, 0x41, 0x01, 0x02, 0xaf, 0xcb, 0x06, 0x76, 0xff, 0x52, 0x41, 
+        0x00, 0xa2, 0x41, 0x01, 0x2c, 0x70, 0x46, 0x73, 0xff, 0x0d, 0x0b, 0x52, 0x41, 0x00, 0x3c, 0x49, 
+        0x92, 0x41, 0x01, 0x06, 0x70, 0xff, 0x00, 0x00, 0x6c, 0xf1, 0xfe, 0x3f, 0xe5, 0x43, 0x10, 0x40, 
+        0x60, 0x09, 0x00, 0x00, 0x08, 0x52, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x81, 0xfb, 0xff, 0x9d, 
+        0x04, 0x12, 0xc1, 0xe0, 0xc9, 0x11, 0xe9, 0x31, 0xf9, 0x41, 0x09, 0x01, 0xd9, 0x21, 0x4d, 0x05, 
+        0xdd, 0x02, 0x22, 0x48, 0x0c, 0x5d, 0x06, 0x99, 0x51, 0x6d, 0x07, 0x72, 0x11, 0x10, 0x85, 0xc3, 
+        0xff, 0xfd, 0x02, 0x08, 0x51, 0x0c, 0xe9, 0x97, 0xbd, 0x34, 0xb1, 0xf0, 0xff, 0xd0, 0xad, 0x90, 
+        0xba, 0xaa, 0xa0, 0x0a, 0x00, 0x86, 0x09, 0x00, 0x86, 0x2a, 0x00, 0xc6, 0x44, 0x00, 0xc6, 0x41, 
+        0x00, 0xc6, 0x3e, 0x00, 0xc6, 0x3b, 0x00, 0xc6, 0x38, 0x00, 0xc6, 0x35, 0x00, 0xc6, 0x32, 0x00, 
+        0xc6, 0x2f, 0x00, 0xc6, 0x2c, 0x00, 0xc6, 0x29, 0x00, 0xc6, 0x26, 0x00, 0xc6, 0x23, 0x00, 0xc2, 
+        0xa0, 0x6a, 0xe2, 0xa1, 0x08, 0xbc, 0xf0, 0x01, 0x33, 0xf1, 0x21, 0xb3, 0xf3, 0xc0, 0x20, 0x00, 
+        0x22, 0x22, 0x9c, 0x17, 0xe2, 0x16, 0x22, 0xa0, 0x67, 0x01, 0x2e, 0xf1, 0x0c, 0x43, 0x08, 0x00, 
+        0x0c, 0x74, 0x02, 0x20, 0x26, 0x0c, 0x45, 0xc0, 0x00, 0x00, 0x01, 0x2a, 0xf1, 0xe0, 0x3f, 0x82, 
+        0x0c, 0x12, 0x08, 0x00, 0x41, 0xd7, 0xff, 0x02, 0x20, 0x1f, 0x40, 0x4e, 0xc1, 0xc0, 0x00, 0x00, 
+        0x0c, 0x52, 0x01, 0x9f, 0xf0, 0xc0, 0x00, 0x00, 0xf0, 0x3f, 0x20, 0xd0, 0x2d, 0x20, 0x71, 0xd2, 
+        0xff, 0x81, 0xd0, 0xff, 0x61, 0x91, 0xf2, 0x8a, 0x8c, 0xf0, 0x88, 0x01, 0xc0, 0x20, 0x00, 0x52, 
+        0x26, 0x45, 0x50, 0x50, 0xc4, 0x80, 0x55, 0x20, 0x70, 0x55, 0x20, 0xc0, 0x20, 0x00, 0x52, 0x66, 
+        0x45, 0x85, 0xae, 0xfd, 0xc5, 0xdc, 0xfd, 0xc8, 0x11, 0xd8, 0x21, 0xe8, 0x31, 0xf8, 0x41, 0x08, 
+        0x01, 0x12, 0xc1, 0x20, 0x0d, 0xf0, 0xc2, 0xa2, 0xe1, 0xe2, 0xa1, 0x09, 0x46, 0xdd, 0xff, 0xc2, 
+        0xa0, 0xd1, 0xe2, 0xa1, 0x08, 0x06, 0xdb, 0xff, 0xc2, 0xa0, 0xfc, 0xe2, 0xa1, 0x08, 0xc6, 0xd8, 
+        0xff, 0xc2, 0xa1, 0x27, 0xe2, 0xa1, 0x02, 0x86, 0xd6, 0xff, 0xc2, 0xa1, 0x53, 0xe2, 0xa1, 0x01, 
+        0x46, 0xd4, 0xff, 0xc2, 0xa1, 0x7e, 0xe2, 0xa1, 0x08, 0x06, 0xd2, 0xff, 0xc2, 0xa1, 0xaa, 0xe2, 
+        0xa1, 0x1b, 0xc6, 0xcf, 0xff, 0xc2, 0xa1, 0xd6, 0xe2, 0xa0, 0xff, 0x86, 0xcd, 0xff, 0xc2, 0xa2, 
+        0x02, 0xe2, 0xa1, 0x0d, 0x46, 0xcb, 0xff, 0xc2, 0xa2, 0x2e, 0xe2, 0xa1, 0x09, 0x06, 0xc9, 0xff, 
+        0xc2, 0xa2, 0x5a, 0xe2, 0xa1, 0x09, 0xc6, 0xc6, 0xff, 0xc2, 0xa2, 0x87, 0xe2, 0xa1, 0x08, 0x86, 
+        0xc4, 0xff, 0xe2, 0xa1, 0x05, 0xc2, 0xa2, 0xb4, 0x46, 0xc2, 0xff, 0x00, 0x24, 0x85, 0xfe, 0x3f, 
+        0x42, 0xc2, 0xff, 0x12, 0xc1, 0xe0, 0x02, 0x61, 0x04, 0xd2, 0x61, 0x06, 0x00, 0x14, 0x40, 0xc9, 
+        0x51, 0x7c, 0xf4, 0xcd, 0x02, 0xdd, 0x03, 0x21, 0xad, 0xf3, 0x0c, 0x13, 0x00, 0x33, 0xa1, 0x40, 
+        0x33, 0x30, 0x08, 0x12, 0x4d, 0x0d, 0x30, 0x00, 0x10, 0x09, 0x12, 0x3d, 0x0c, 0x21, 0xf3, 0xff, 
+        0x01, 0x18, 0xf1, 0xc0, 0x00, 0x00, 0x5d, 0x0d, 0x2d, 0x0c, 0x0c, 0x04, 0x61, 0xa2, 0xf3, 0x31, 
+        0x38, 0xfa, 0x72, 0xa0, 0x64, 0x32, 0x03, 0x01, 0x79, 0x01, 0x4b, 0x76, 0xc5, 0xe4, 0xff, 0x2d, 
+        0x0c, 0x85, 0x98, 0xfd, 0xc8, 0x51, 0xd8, 0x61, 0x08, 0x41, 0x12, 0xc1, 0x20, 0x0d, 0xf0, 0x00, 
+        0xf6, 0xf1, 0xfe, 0x3f, 0x12, 0xc1, 0xe0, 0xc2, 0x61, 0x06, 0x09, 0x51, 0xcd, 0x02, 0x45, 0xe0, 
+        0xfc, 0x0c, 0x04, 0x02, 0xa0, 0x64, 0x31, 0x2a, 0xfa, 0x51, 0xf9, 0xff, 0x29, 0x41, 0x61, 0x91, 
+        0xf3, 0x2d, 0x0c, 0x4b, 0x76, 0x52, 0x95, 0x00, 0x32, 0x03, 0x01, 0x09, 0x01, 0xc5, 0xe0, 0xff, 
+        0x2d, 0x0c, 0x85, 0x94, 0xfd, 0x28, 0x41, 0x85, 0xdb, 0xfc, 0xc8, 0x61, 0x08, 0x51, 0x12, 0xc1, 
+        0x20, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x30, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x1c, 
+        0xff, 0xff, 0xff, 0xcf, 0x00, 0x00, 0x00, 0x0c, 0x61, 0x65, 0xf3, 0x12, 0xc1, 0xf0, 0x09, 0x11, 
+        0x29, 0x01, 0xc9, 0x21, 0xd9, 0x31, 0x51, 0x5d, 0xef, 0xd1, 0x8d, 0xee, 0xc1, 0xc2, 0xf0, 0xc0, 
+        0x20, 0x00, 0x42, 0x25, 0xfa, 0x60, 0x44, 0x10, 0xc0, 0x20, 0x00, 0x42, 0x65, 0xfa, 0x31, 0x97, 
+        0xfb, 0xc0, 0x20, 0x00, 0x22, 0x2d, 0x44, 0x30, 0x22, 0x20, 0xc0, 0x20, 0x00, 0x0c, 0x23, 0x0c, 
+        0x04, 0x2c, 0x75, 0x08, 0x0c, 0x22, 0x6d, 0x44, 0x02, 0x20, 0x26, 0x22, 0xa0, 0x6a, 0xc0, 0x00, 
+        0x00, 0x08, 0x0c, 0x02, 0x20, 0x35, 0xc0, 0x00, 0x00, 0x21, 0xe6, 0xff, 0x31, 0x33, 0xf3, 0xc0, 
+        0x20, 0x00, 0x02, 0x2d, 0x44, 0x20, 0x00, 0x20, 0xc0, 0x20, 0x00, 0x02, 0x6d, 0x44, 0xb1, 0xe2, 
+        0xff, 0xa1, 0xe2, 0xff, 0xc0, 0x20, 0x00, 0x61, 0x45, 0xef, 0x92, 0x26, 0xe8, 0xb0, 0x99, 0x10, 
+        0xa0, 0x99, 0x20, 0xc0, 0x20, 0x00, 0x92, 0x66, 0xe8, 0x81, 0xdd, 0xff, 0x71, 0xa9, 0xf7, 0xc0, 
+        0x20, 0x00, 0x52, 0x26, 0xe6, 0x80, 0x55, 0x10, 0x70, 0x55, 0x20, 0xc0, 0x20, 0x00, 0x52, 0x66, 
+        0xe6, 0x7c, 0xd4, 0xc0, 0x20, 0x00, 0x22, 0x23, 0x9c, 0x40, 0x22, 0x10, 0xc0, 0x20, 0x00, 0x22, 
+        0x63, 0x9c, 0x0c, 0x22, 0x01, 0x17, 0xf0, 0xc0, 0x00, 0x00, 0x08, 0x0c, 0x02, 0x20, 0x28, 0xc0, 
+        0x00, 0x00, 0x0c, 0x22, 0x08, 0x0c, 0x0c, 0x13, 0x02, 0x20, 0x2b, 0x42, 0xa0, 0x81, 0xc0, 0x00, 
+        0x00, 0x31, 0xcc, 0xff, 0xc0, 0x20, 0x00, 0x22, 0x2d, 0x44, 0x30, 0x22, 0x20, 0xc0, 0x20, 0x00, 
+        0x08, 0x0c, 0x02, 0x20, 0x32, 0x22, 0x6d, 0x44, 0xc0, 0x00, 0x00, 0x22, 0xa0, 0x6a, 0x0c, 0x23, 
+        0x08, 0x0c, 0x0c, 0x04, 0x02, 0x20, 0x26, 0x2c, 0x45, 0xc0, 0x00, 0x00, 0x08, 0x0c, 0x02, 0x20, 
+        0x31, 0xc0, 0x00, 0x00, 0x22, 0xa0, 0x6a, 0x0c, 0x23, 0x08, 0x0c, 0x0c, 0x04, 0x02, 0x20, 0x26, 
+        0x2c, 0x55, 0xc0, 0x00, 0x00, 0x08, 0x0c, 0x02, 0x20, 0x2f, 0xd8, 0x01, 0xc0, 0x00, 0x00, 0x62, 
+        0xa9, 0xff, 0x31, 0x8a, 0xee, 0xc0, 0x20, 0x00, 0x52, 0x23, 0xd0, 0x60, 0x55, 0x10, 0xc0, 0x20, 
+        0x00, 0x52, 0x63, 0xd0, 0x7c, 0x34, 0xc0, 0x20, 0x00, 0x22, 0x23, 0xd0, 0x40, 0x22, 0x10, 0xc0, 
+        0x20, 0x00, 0x22, 0x63, 0xd0, 0x2d, 0x0d, 0xc5, 0xe6, 0xff, 0x08, 0x0c, 0x02, 0x20, 0x23, 0xc0, 
+        0x00, 0x00, 0x22, 0xa0, 0x6b, 0x0c, 0x23, 0x08, 0x0c, 0x0c, 0x14, 0x02, 0x20, 0x26, 0x4c, 0x85, 
+        0xc0, 0x00, 0x00, 0x08, 0x0c, 0x02, 0x20, 0x22, 0xc0, 0x00, 0x00, 0x22, 0xa0, 0x6c, 0x0c, 0x23, 
+        0x0c, 0x04, 0x0c, 0x05, 0x08, 0x0c, 0x0c, 0x06, 0x02, 0x20, 0x27, 0x0c, 0x17, 0xc0, 0x00, 0x00, 
+        0x22, 0xa0, 0x6c, 0x0c, 0x23, 0x0c, 0x04, 0x0c, 0x25, 0x08, 0x0c, 0x0c, 0x26, 0x02, 0x20, 0x27, 
+        0x0c, 0x17, 0xc0, 0x00, 0x00, 0x08, 0x0c, 0x02, 0x20, 0x13, 0xc0, 0x00, 0x00, 0x22, 0xa0, 0x77, 
+        0x0c, 0x03, 0x1c, 0xa4, 0x0c, 0x45, 0x08, 0x0c, 0x0c, 0x46, 0x02, 0x20, 0x27, 0x0c, 0x07, 0xc0, 
+        0x00, 0x00, 0x22, 0xa0, 0x77, 0x0c, 0x03, 0x1c, 0xa4, 0x0c, 0x55, 0x08, 0x0c, 0x0c, 0x56, 0x02, 
+        0x20, 0x27, 0x0c, 0x07, 0xc0, 0x00, 0x00, 0x22, 0xa0, 0x77, 0x0c, 0x03, 0x1c, 0xa4, 0x0c, 0x45, 
+        0x08, 0x0c, 0x0c, 0x46, 0x02, 0x20, 0x27, 0x0c, 0x17, 0xc0, 0x00, 0x00, 0x22, 0xa0, 0x77, 0x0c, 
+        0x03, 0x1c, 0xa4, 0x0c, 0x55, 0x08, 0x0c, 0x0c, 0x56, 0x02, 0x20, 0x27, 0x0c, 0x17, 0xc0, 0x00, 
+        0x00, 0x0c, 0x02, 0xc8, 0x21, 0xd8, 0x31, 0x08, 0x11, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 
+        0x26, 0x42, 0x14, 0x26, 0xb2, 0x09, 0x1c, 0x23, 0x37, 0x12, 0x10, 0x1c, 0x44, 0x47, 0x12, 0x03, 
+        0x0c, 0x12, 0x0d, 0xf0, 0x0c, 0x32, 0x0d, 0xf0, 0x0c, 0x02, 0x0d, 0xf0, 0x0c, 0x22, 0x0d, 0xf0, 
+        0x8c, 0xf2, 0x26, 0x12, 0x05, 0x26, 0x22, 0x0e, 0x26, 0x32, 0x03, 0x1c, 0x02, 0x0d, 0xf0, 0x1c, 
+        0x42, 0x0d, 0xf0, 0x0c, 0x42, 0x0d, 0xf0, 0x1c, 0x22, 0x0d, 0xf0, 0x00, 0x12, 0x80, 0xfe, 0x3f, 
+        0x12, 0xc1, 0xe0, 0x09, 0x21, 0xd9, 0x41, 0xe9, 0x51, 0xc9, 0x31, 0xed, 0x03, 0xcd, 0x02, 0xd1, 
+        0x35, 0xf0, 0x21, 0xfa, 0xff, 0x08, 0x0d, 0x22, 0x12, 0x00, 0x02, 0x20, 0x29, 0x20, 0x20, 0x44, 
+        0xc0, 0x00, 0x00, 0x0c, 0x12, 0x08, 0x0d, 0x0c, 0x13, 0x02, 0x20, 0x2b, 0x1c, 0xf4, 0xc0, 0x00, 
+        0x00, 0x28, 0x0c, 0xc9, 0x11, 0x37, 0xf2, 0x4b, 0x0c, 0x0c, 0x2d, 0x0c, 0x05, 0xfa, 0xff, 0x42, 
+        0xa1, 0xf4, 0x0c, 0xc5, 0x6d, 0x01, 0x08, 0x0d, 0x3d, 0x02, 0x02, 0x20, 0x3a, 0x0c, 0x02, 0xc0, 
+        0x00, 0x00, 0x02, 0x01, 0x00, 0x22, 0x01, 0x01, 0x80, 0x00, 0x01, 0x80, 0x22, 0x01, 0x20, 0x28, 
+        0x31, 0x00, 0x08, 0x31, 0x80, 0x22, 0x11, 0x20, 0x00, 0x20, 0xe0, 0x2c, 0x90, 0x02, 0x52, 0x00, 
+        0x1b, 0xcc, 0xc0, 0xc0, 0x74, 0x66, 0x4c, 0xc1, 0x48, 0x11, 0x51, 0xee, 0xee, 0x38, 0x04, 0x50, 
+        0x33, 0x20, 0x39, 0x04, 0x21, 0xde, 0xff, 0x3d, 0x01, 0x22, 0x12, 0x00, 0xc5, 0x0b, 0x00, 0x08, 
+        0x0d, 0x02, 0x20, 0x2a, 0xc0, 0x00, 0x00, 0xc8, 0x31, 0xd8, 0x41, 0xe8, 0x51, 0x08, 0x21, 0x12, 
+        0xc1, 0x20, 0x0d, 0xf0, 0xff, 0x00, 0xf0, 0xff, 0xff, 0x3f, 0x00, 0xf0, 0x00, 0xc0, 0xff, 0xff, 
+        0x80, 0x92, 0x11, 0x81, 0xfc, 0xff, 0x71, 0xa5, 0xee, 0xb1, 0xfb, 0xff, 0xa1, 0xfc, 0xff, 0x12, 
+        0xc1, 0xf0, 0xc9, 0x11, 0xe9, 0x31, 0x09, 0x01, 0xd9, 0x21, 0x0c, 0x00, 0x1c, 0x8d, 0x70, 0x50, 
+        0xa0, 0xc0, 0x20, 0x00, 0x42, 0x25, 0xc1, 0x80, 0x44, 0x10, 0x90, 0x44, 0x20, 0xc0, 0x20, 0x00, 
+        0x42, 0x65, 0xc1, 0x00, 0x21, 0x41, 0x70, 0x22, 0xa0, 0x62, 0x03, 0x01, 0x52, 0x03, 0x00, 0x80, 
+        0x66, 0x01, 0x80, 0x55, 0x01, 0x50, 0x58, 0x31, 0x60, 0x68, 0x31, 0x07, 0x60, 0x1d, 0x20, 0xe5, 
+        0x11, 0xb0, 0x46, 0x01, 0xc0, 0x20, 0x00, 0xc2, 0x22, 0x81, 0xb0, 0xcc, 0x10, 0x40, 0xcc, 0x20, 
+        0xe0, 0xcc, 0x20, 0xc0, 0x20, 0x00, 0xc2, 0x62, 0x81, 0xc6, 0x05, 0x00, 0x90, 0x46, 0x11, 0xc0, 
+        0x20, 0x00, 0xe2, 0x22, 0x81, 0xa0, 0xee, 0x10, 0x40, 0xee, 0x20, 0x50, 0xee, 0x20, 0xc0, 0x20, 
+        0x00, 0xe2, 0x62, 0x81, 0x1b, 0x00, 0x00, 0x00, 0x74, 0xd7, 0x90, 0x91, 0xc8, 0x11, 0xd8, 0x21, 
+        0xe8, 0x31, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x20, 0x20, 0x44, 0x12, 
+        0xc1, 0xf0, 0xc9, 0x11, 0x09, 0x01, 0xcd, 0x03, 0x45, 0xe6, 0xff, 0x0c, 0x23, 0x01, 0xe1, 0xef, 
+        0x5d, 0x02, 0x61, 0x9e, 0xf2, 0x0c, 0x02, 0x60, 0x55, 0x90, 0x62, 0x15, 0x20, 0x62, 0x4c, 0x00, 
+        0x42, 0x0c, 0x00, 0x52, 0x15, 0x20, 0x80, 0x44, 0x01, 0x50, 0x58, 0x41, 0x52, 0x4c, 0x01, 0x08, 
+        0x00, 0x40, 0x48, 0x31, 0x02, 0x20, 0x2b, 0x40, 0x40, 0xf4, 0xc0, 0x00, 0x00, 0x0c, 0x12, 0x0c, 
+        0x23, 0x42, 0x0c, 0x01, 0x01, 0xd4, 0xef, 0x80, 0x44, 0x01, 0x08, 0x00, 0x40, 0x48, 0x31, 0x02, 
+        0x20, 0x2b, 0x40, 0x40, 0xf4, 0xc0, 0x00, 0x00, 0xc8, 0x11, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 
+        0xf0, 0x00, 0x00, 0x00, 0xe4, 0x0b, 0x00, 0x00, 0xe4, 0x09, 0x00, 0x00, 0xf2, 0x0f, 0x00, 0x00, 
+        0xf4, 0x0f, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0xf0, 0x0d, 0x00, 0x00, 0x47, 0xa2, 0x3c, 0x31, 
+        0xf9, 0xff, 0x20, 0x24, 0xc0, 0x4b, 0x22, 0x20, 0x22, 0x21, 0x80, 0x22, 0x01, 0x20, 0x28, 0x31, 
+        0x26, 0x12, 0x55, 0x26, 0x22, 0x52, 0x31, 0xf4, 0xff, 0x26, 0x32, 0x47, 0x26, 0x42, 0x44, 0x32, 
+        0xa7, 0xe4, 0x26, 0x52, 0x3e, 0x26, 0x62, 0x3b, 0x32, 0xa5, 0xe4, 0x26, 0x72, 0x4b, 0x26, 0x82, 
+        0x48, 0x0c, 0x94, 0x47, 0x12, 0x48, 0x22, 0xa3, 0xe4, 0x86, 0x08, 0x00, 0x37, 0xa4, 0x22, 0x40, 
+        0x33, 0xc0, 0x4b, 0x33, 0x30, 0x32, 0x21, 0x80, 0x33, 0x01, 0x30, 0x38, 0x31, 0x26, 0x13, 0x23, 
+        0x26, 0x23, 0x1a, 0x21, 0xe6, 0xff, 0x26, 0x33, 0x05, 0x26, 0x43, 0x02, 0x21, 0xe5, 0xff, 0x22, 
+        0x55, 0x00, 0x0d, 0xf0, 0x2d, 0x03, 0x46, 0xfd, 0xff, 0x2d, 0x03, 0x06, 0xfc, 0xff, 0x21, 0xe1, 
+        0xff, 0x86, 0xfa, 0xff, 0x21, 0xe1, 0xff, 0x06, 0xf9, 0xff, 0x2d, 0x03, 0xc6, 0xf7, 0xff, 0x2d, 
+        0x03, 0x86, 0xf6, 0xff, 0x12, 0xc1, 0xe0, 0x29, 0x41, 0x09, 0x71, 0x2d, 0x01, 0x45, 0xd1, 0x00, 
+        0x0c, 0x33, 0x22, 0x11, 0x03, 0x92, 0x11, 0x05, 0x42, 0x11, 0x04, 0x82, 0x11, 0x07, 0x52, 0x11, 
+        0x06, 0x72, 0x11, 0x02, 0x01, 0x9c, 0xef, 0x62, 0x11, 0x01, 0x08, 0x00, 0x7a, 0x66, 0x8a, 0x55, 
+        0x9a, 0x44, 0x08, 0xe0, 0x40, 0x44, 0x90, 0x50, 0x55, 0x90, 0x6a, 0x22, 0x50, 0x22, 0xd0, 0x50, 
+        0x44, 0xc0, 0x00, 0x44, 0x11, 0x00, 0x22, 0x11, 0x20, 0x20, 0x31, 0x40, 0x40, 0x31, 0x49, 0x51, 
+        0xc0, 0x00, 0x00, 0x01, 0x90, 0xef, 0x0c, 0x33, 0x08, 0x00, 0x29, 0x61, 0x08, 0xe0, 0x28, 0x51, 
+        0xc0, 0x00, 0x00, 0x38, 0x61, 0x08, 0x71, 0x20, 0x33, 0xc0, 0x28, 0x41, 0x12, 0xc1, 0x20, 0x3a, 
+        0x22, 0x00, 0x22, 0x11, 0x20, 0x20, 0x31, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0xf0, 0x0b, 0x00, 0x00, 
+        0x15, 0xf2, 0xfe, 0x3f, 0xf8, 0xf1, 0xfe, 0x3f, 0x0c, 0x13, 0x5c, 0xf4, 0x21, 0xfc, 0xff, 0x12, 
+        0xc1, 0xe0, 0xc9, 0x61, 0x09, 0x51, 0xc1, 0x45, 0xff, 0x01, 0x7e, 0xef, 0x22, 0x5c, 0x00, 0x08, 
+        0x00, 0x22, 0x5c, 0x00, 0x02, 0x20, 0x2b, 0x0c, 0x72, 0xc0, 0x00, 0x00, 0x0c, 0x02, 0x01, 0x79, 
+        0xef, 0x0c, 0x13, 0x08, 0x00, 0x42, 0x1c, 0x00, 0x02, 0x20, 0x2b, 0x40, 0x40, 0x44, 0xc0, 0x00, 
+        0x00, 0x22, 0x1c, 0x00, 0x32, 0xc1, 0x10, 0x45, 0xe3, 0xff, 0x4c, 0x02, 0x31, 0xed, 0xff, 0x0c, 
+        0x14, 0x1c, 0xf5, 0x72, 0xc1, 0x12, 0x81, 0xeb, 0xff, 0x62, 0x1c, 0x00, 0x92, 0xa1, 0x38, 0x60, 
+        0x60, 0x44, 0x99, 0x01, 0x82, 0x08, 0x00, 0x89, 0x11, 0x45, 0x0f, 0x01, 0x0c, 0x15, 0x0c, 0x10, 
+        0x42, 0x01, 0x12, 0x2c, 0x06, 0x80, 0x44, 0x01, 0x40, 0x48, 0x31, 0xa6, 0xa4, 0x01, 0x0c, 0x05, 
+        0x47, 0x26, 0x01, 0x0c, 0x00, 0x50, 0x70, 0x20, 0xbc, 0x17, 0x2c, 0x02, 0x0c, 0xc3, 0x5d, 0x0c, 
+        0x85, 0xe6, 0xff, 0x0c, 0x72, 0x01, 0x5f, 0xef, 0x0c, 0x13, 0x08, 0x00, 0x42, 0x1c, 0x00, 0x02, 
+        0x20, 0x2b, 0x40, 0x45, 0x41, 0xc0, 0x00, 0x00, 0x0c, 0x02, 0x01, 0x5a, 0xef, 0x0c, 0x13, 0x08, 
+        0x00, 0x42, 0x1c, 0x00, 0x02, 0x20, 0x2b, 0x40, 0x40, 0x44, 0xc0, 0x00, 0x00, 0x22, 0x1c, 0x00, 
+        0x32, 0xc1, 0x10, 0x85, 0xdb, 0xff, 0x22, 0x1c, 0x00, 0x32, 0xc1, 0x10, 0x05, 0xd1, 0xff, 0xc8, 
+        0x61, 0x08, 0x51, 0x12, 0xc1, 0x20, 0x0d, 0xf0, 0x0c, 0x05, 0x0c, 0x06, 0x0c, 0x07, 0x20, 0x40, 
+        0x74, 0x0c, 0x03, 0x12, 0xc1, 0xe0, 0xc9, 0x51, 0xd9, 0x61, 0x09, 0x41, 0xe9, 0x71, 0x39, 0x21, 
+        0x39, 0x11, 0xe1, 0x48, 0xef, 0x39, 0x01, 0x08, 0x0e, 0x0c, 0x12, 0x02, 0x20, 0x1a, 0x4c, 0x03, 
+        0xc0, 0x00, 0x00, 0x0c, 0x0d, 0x0c, 0x0c, 0x08, 0x0e, 0x08, 0xb0, 0x22, 0xa1, 0x38, 0xc0, 0x00, 
+        0x00, 0x1b, 0xdd, 0xca, 0xc2, 0x00, 0xcc, 0x11, 0xc0, 0xc0, 0x31, 0x66, 0x4d, 0xe8, 0x08, 0x0e, 
+        0x02, 0x20, 0x1b, 0x0c, 0x12, 0xc0, 0x00, 0x00, 0x08, 0x41, 0xd8, 0x61, 0x4b, 0x3c, 0xbb, 0x2c, 
+        0xe8, 0x71, 0xc8, 0x51, 0x30, 0x23, 0xb3, 0x20, 0x23, 0x21, 0x12, 0xc1, 0x20, 0x00, 0x22, 0x11, 
+        0x20, 0x20, 0x31, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x0c, 0x14, 0x1c, 0xf5, 0x82, 0xa1, 0x38, 0x61, 
+        0xf7, 0xfe, 0x12, 0xc1, 0xc0, 0xc9, 0x61, 0xe9, 0x81, 0xf9, 0x91, 0x72, 0xc1, 0x10, 0x09, 0x51, 
+        0xd9, 0x71, 0x01, 0xa8, 0xff, 0xdd, 0x02, 0x62, 0x16, 0x00, 0x4c, 0x02, 0x3d, 0x0d, 0x89, 0x01, 
+        0x60, 0x60, 0x44, 0x02, 0x00, 0x00, 0x09, 0x11, 0x45, 0xfe, 0x00, 0x0c, 0x0c, 0x0c, 0x00, 0xe2, 
+        0xa0, 0x6f, 0x7c, 0x97, 0x52, 0x0d, 0x05, 0x32, 0x0d, 0x00, 0x42, 0x01, 0x10, 0x0c, 0x09, 0x99, 
+        0xb1, 0x80, 0x44, 0x01, 0x40, 0x48, 0x31, 0x50, 0x33, 0xc0, 0x00, 0x33, 0x11, 0x42, 0xc4, 0x1f, 
+        0x42, 0x41, 0x10, 0x30, 0x30, 0x31, 0x70, 0x73, 0x90, 0x79, 0xa1, 0x42, 0x01, 0x10, 0x2d, 0x0e, 
+        0x80, 0x44, 0x01, 0x40, 0x48, 0x31, 0x0a, 0x04, 0x02, 0x41, 0x10, 0x0a, 0xd3, 0x80, 0x00, 0x01, 
+        0x00, 0x08, 0x31, 0x07, 0x2e, 0x01, 0x2d, 0x00, 0x22, 0x41, 0x10, 0x39, 0xe1, 0x85, 0xf0, 0xff, 
+        0x80, 0x5d, 0x01, 0xfd, 0x02, 0x0c, 0x1d, 0x50, 0x58, 0x31, 0x59, 0xd1, 0x57, 0x2e, 0x01, 0x0c, 
+        0x0d, 0x28, 0xd1, 0xd0, 0x2e, 0x93, 0x05, 0xef, 0xff, 0x78, 0xa1, 0x38, 0xc1, 0x20, 0x6f, 0xc0, 
+        0x00, 0x06, 0x11, 0x00, 0x00, 0x31, 0xc0, 0x32, 0x83, 0x39, 0xc1, 0x77, 0x20, 0x05, 0x42, 0xa0, 
+        0xa8, 0xf7, 0xa4, 0x51, 0x8c, 0xec, 0x58, 0xb1, 0x2c, 0xc7, 0x07, 0x25, 0x08, 0x77, 0x20, 0x05, 
+        0x82, 0xa0, 0xa8, 0xf7, 0xa8, 0x3f, 0x38, 0xe1, 0x5c, 0x09, 0x97, 0x22, 0x38, 0xa8, 0xd1, 0x0c, 
+        0x2b, 0xd0, 0xae, 0x93, 0xe7, 0x1a, 0x2e, 0x2b, 0x70, 0x1b, 0x80, 0x1b, 0xcc, 0x00, 0xd6, 0x11, 
+        0xd0, 0xd0, 0x31, 0xc0, 0xc0, 0x74, 0x0d, 0x0b, 0x92, 0xcc, 0xf6, 0x80, 0x78, 0xb3, 0x70, 0x71, 
+        0x21, 0x70, 0x73, 0xc0, 0x0b, 0x77, 0x80, 0x77, 0x01, 0x70, 0x78, 0x31, 0xa6, 0x27, 0x01, 0x0d, 
+        0x07, 0xd9, 0xb1, 0x56, 0x49, 0xf5, 0x08, 0x51, 0xc8, 0x61, 0xd8, 0x71, 0xe8, 0x81, 0x38, 0xc1, 
+        0xf8, 0x91, 0x20, 0x23, 0xc0, 0x1b, 0x32, 0x2b, 0x22, 0x30, 0x23, 0xb3, 0x12, 0xc1, 0x40, 0x20, 
+        0x21, 0x21, 0x00, 0x22, 0x11, 0x20, 0x20, 0x31, 0x0d, 0xf0, 0x00, 0x00, 0xad, 0x06, 0xbd, 0x05, 
+        0x9d, 0x03, 0x82, 0xaf, 0x79, 0x12, 0xc1, 0xd0, 0xf9, 0x81, 0x09, 0x41, 0xd9, 0x61, 0xc9, 0x51, 
+        0xe9, 0x71, 0xcd, 0x02, 0xed, 0x04, 0xd2, 0xd1, 0xff, 0x0c, 0x04, 0xd2, 0xcd, 0x7d, 0xda, 0x24, 
+        0x16, 0x34, 0x05, 0x26, 0x14, 0x4a, 0x26, 0x24, 0x41, 0x26, 0x34, 0x38, 0x26, 0x44, 0x24, 0x26, 
+        0x54, 0x1b, 0x26, 0x64, 0x12, 0x26, 0x74, 0x09, 0x4a, 0x0c, 0x8a, 0x00, 0x02, 0x00, 0x7f, 0x06, 
+        0x05, 0x00, 0x02, 0x0c, 0x00, 0x86, 0x03, 0x00, 0x02, 0x0c, 0x02, 0x06, 0x02, 0x00, 0x02, 0x0c, 
+        0x04, 0x86, 0x00, 0x00, 0x02, 0x0c, 0x06, 0x02, 0x42, 0x83, 0x1b, 0x44, 0x40, 0x40, 0x74, 0x66, 
+        0xb4, 0xbb, 0xc6, 0x05, 0x00, 0x02, 0x0c, 0x00, 0xc6, 0xfa, 0xff, 0x02, 0x0c, 0x01, 0x46, 0xf9, 
+        0xff, 0x02, 0x0c, 0x03, 0xc6, 0xf7, 0xff, 0x02, 0x0c, 0x05, 0x46, 0xf6, 0xff, 0x22, 0xa0, 0x77, 
+        0x0c, 0x03, 0x0c, 0x94, 0x0c, 0x75, 0x0c, 0x06, 0x0c, 0x07, 0x01, 0xc2, 0xee, 0x99, 0x91, 0x08, 
+        0x00, 0xa9, 0xa1, 0x02, 0x20, 0x27, 0xb9, 0xb1, 0xc0, 0x00, 0x00, 0x28, 0xa1, 0x38, 0x91, 0x0c, 
+        0x04, 0x1c, 0x8b, 0x61, 0x56, 0xed, 0xa2, 0xaf, 0x00, 0x08, 0xb1, 0xf1, 0x67, 0xfd, 0x8c, 0xa0, 
+        0x26, 0x24, 0x25, 0x26, 0x34, 0x22, 0x26, 0x64, 0x1f, 0x26, 0x74, 0x1c, 0x0c, 0x05, 0x60, 0x84, 
+        0xa0, 0xf6, 0x84, 0x2e, 0x80, 0x75, 0x01, 0x52, 0x0c, 0x00, 0x70, 0x78, 0x31, 0x7a, 0x55, 0x5a, 
+        0x5e, 0x52, 0x05, 0x00, 0x3a, 0x55, 0x86, 0x0b, 0x00, 0x51, 0x01, 0xf8, 0x92, 0x0f, 0x0c, 0x82, 
+        0x05, 0x4e, 0x80, 0x99, 0x01, 0x52, 0x05, 0x4d, 0x90, 0x98, 0x31, 0xe6, 0x79, 0xcf, 0x5d, 0x08, 
+        0x86, 0xf2, 0xff, 0xda, 0x54, 0x52, 0x05, 0x7b, 0xea, 0x55, 0x52, 0x05, 0x00, 0x80, 0x55, 0x01, 
+        0x50, 0x58, 0x31, 0x27, 0xa5, 0x01, 0x5d, 0x02, 0x50, 0x90, 0x60, 0x90, 0x90, 0x74, 0xc0, 0x20, 
+        0x00, 0x72, 0x28, 0xc1, 0xa0, 0x77, 0x10, 0x90, 0x77, 0x20, 0xc0, 0x20, 0x00, 0x72, 0x68, 0xc1, 
+        0x1b, 0x44, 0x40, 0x40, 0x74, 0xb7, 0x94, 0x85, 0xc8, 0x51, 0xd8, 0x61, 0xe8, 0x71, 0xf8, 0x81, 
+        0x08, 0x41, 0x12, 0xc1, 0x30, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x00, 0xf0, 
+        0xff, 0xff, 0xff, 0xf0, 0x91, 0xfe, 0xff, 0x60, 0x82, 0x01, 0x12, 0xc1, 0xf0, 0x72, 0xa1, 0x00, 
+        0x30, 0x77, 0xc0, 0x69, 0x11, 0x59, 0x01, 0xc9, 0x31, 0x09, 0x21, 0xcd, 0x02, 0x01, 0x8d, 0xee, 
+        0x51, 0x27, 0xed, 0x61, 0xf5, 0xff, 0x70, 0x70, 0x74, 0x60, 0x77, 0x11, 0x60, 0x64, 0x20, 0xc0, 
+        0x20, 0x00, 0x22, 0x25, 0xee, 0x90, 0x22, 0x10, 0x80, 0x22, 0x20, 0x70, 0x22, 0x20, 0x60, 0x22, 
+        0x20, 0xc0, 0x20, 0x00, 0x0c, 0xa3, 0x08, 0x00, 0x22, 0x65, 0xee, 0x02, 0x20, 0x1c, 0x0c, 0x42, 
+        0xc0, 0x00, 0x00, 0xd0, 0x5c, 0x11, 0xc0, 0x70, 0x04, 0x0c, 0x16, 0x88, 0x01, 0x0c, 0x04, 0x22, 
+        0x58, 0x00, 0x70, 0x46, 0x83, 0x50, 0x44, 0x20, 0x80, 0x44, 0x01, 0x51, 0xe5, 0xff, 0xc0, 0x20, 
+        0x00, 0x31, 0x12, 0xed, 0x22, 0x23, 0xee, 0x50, 0x22, 0x10, 0x40, 0x22, 0x20, 0xc0, 0x20, 0x00, 
+        0x01, 0x75, 0xee, 0x08, 0x00, 0x22, 0x63, 0xee, 0x0c, 0x42, 0x02, 0x20, 0x1c, 0x0c, 0xa3, 0xc0, 
+        0x00, 0x00, 0x08, 0x21, 0x98, 0x11, 0xc8, 0x31, 0x22, 0x59, 0x00, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 
+        0xe8, 0xef, 0xfe, 0x3f, 0x44, 0x85, 0xfe, 0x3f, 0x9d, 0x03, 0x0c, 0x0b, 0x12, 0xc1, 0xb0, 0x69, 
+        0x91, 0x52, 0x61, 0x10, 0xf9, 0x61, 0x29, 0xc1, 0x09, 0x21, 0xc9, 0x31, 0xd9, 0x41, 0xe9, 0x51, 
+        0xdd, 0x04, 0x0c, 0x0e, 0x0c, 0x0c, 0xb9, 0xe1, 0x99, 0x11, 0x0c, 0x00, 0x0c, 0x02, 0xf2, 0x21, 
+        0x10, 0x38, 0xc1, 0x29, 0xf1, 0x09, 0xd1, 0x0c, 0x72, 0x0c, 0x30, 0x32, 0xc3, 0xf4, 0x70, 0x02, 
+        0x93, 0x30, 0x30, 0x74, 0x39, 0xb1, 0x09, 0xa1, 0xf6, 0x3c, 0x45, 0x4d, 0x0f, 0x01, 0x59, 0xee, 
+        0x32, 0xa0, 0x80, 0xe0, 0x2e, 0xd1, 0x3a, 0x22, 0x08, 0x00, 0x38, 0xf1, 0x20, 0x28, 0x21, 0x29, 
+        0x81, 0x02, 0x20, 0x42, 0x3a, 0x22, 0x0c, 0x13, 0x80, 0x22, 0x01, 0x20, 0x28, 0x31, 0xc0, 0x00, 
+        0x00, 0x4d, 0x0f, 0x38, 0x81, 0x01, 0x4f, 0xee, 0x30, 0x32, 0xc0, 0x08, 0x00, 0x2d, 0x0e, 0x80, 
+        0x33, 0x01, 0x30, 0x38, 0x31, 0x39, 0xf1, 0x02, 0x20, 0x42, 0x0c, 0x03, 0xc0, 0x00, 0x00, 0xed, 
+        0x02, 0x22, 0xa0, 0x01, 0x32, 0x21, 0x0b, 0x48, 0x11, 0x5d, 0x01, 0x2b, 0x61, 0x45, 0xec, 0xff, 
+        0x72, 0x91, 0x01, 0x52, 0x91, 0x00, 0x0d, 0x07, 0x77, 0xa5, 0x01, 0x0d, 0x05, 0x0c, 0x14, 0x00, 
+        0x30, 0x11, 0x50, 0x27, 0xc0, 0x50, 0x22, 0x11, 0x30, 0x30, 0x31, 0x00, 0x34, 0x83, 0x05, 0xfa, 
+        0x04, 0x02, 0xc2, 0x10, 0x00, 0x05, 0x21, 0x02, 0x4d, 0x00, 0x8c, 0x9f, 0x28, 0xf1, 0xd6, 0x52, 
+        0x00, 0x00, 0x30, 0x60, 0x32, 0x4d, 0x00, 0x0c, 0x02, 0x38, 0xc1, 0x48, 0x11, 0x5d, 0x01, 0x2b, 
+        0x61, 0x05, 0xe8, 0xff, 0x22, 0x91, 0x00, 0x42, 0x91, 0x01, 0x2a, 0x34, 0x40, 0x22, 0xc0, 0x40, 
+        0x22, 0x11, 0xc5, 0xf6, 0x04, 0x52, 0xc2, 0x10, 0x50, 0x55, 0x21, 0x52, 0x4d, 0x01, 0x8c, 0x7f, 
+        0xd6, 0x5e, 0x00, 0x50, 0x50, 0x60, 0x52, 0x4d, 0x01, 0x02, 0x0d, 0x00, 0x28, 0xf1, 0x80, 0x00, 
+        0x01, 0x00, 0x08, 0x31, 0xf6, 0x3c, 0x16, 0x50, 0xee, 0xc0, 0x00, 0x32, 0xc0, 0x80, 0x33, 0x01, 
+        0x80, 0xee, 0x01, 0xe0, 0xe8, 0x31, 0x30, 0x28, 0x31, 0x29, 0xf1, 0x46, 0x1a, 0x00, 0x28, 0xd1, 
+        0x48, 0xe1, 0x2a, 0x35, 0x4a, 0x60, 0x80, 0x66, 0x01, 0x80, 0x33, 0x01, 0x30, 0x28, 0x31, 0x60, 
+        0x48, 0x31, 0x49, 0xe1, 0x29, 0xd1, 0x66, 0x6c, 0x4e, 0x38, 0xf1, 0x28, 0xe1, 0x01, 0x19, 0xee, 
+        0x2b, 0x22, 0x08, 0x00, 0x20, 0x22, 0x21, 0x20, 0x43, 0xc0, 0x80, 0x44, 0x01, 0x40, 0x38, 0x31, 
+        0x39, 0xf1, 0x38, 0xd1, 0x08, 0x00, 0x2b, 0x33, 0x30, 0x32, 0x21, 0x39, 0x71, 0x30, 0xee, 0xc0, 
+        0x80, 0xee, 0x01, 0xe0, 0xe8, 0x31, 0xc0, 0x00, 0x00, 0xe6, 0x52, 0x0e, 0x01, 0x0e, 0xee, 0x08, 
+        0x00, 0x08, 0x00, 0x28, 0x71, 0xc0, 0x00, 0x00, 0xa6, 0x52, 0x0c, 0x31, 0x9d, 0xff, 0x41, 0x54, 
+        0xf6, 0x28, 0x03, 0x40, 0x22, 0x20, 0x29, 0x03, 0x58, 0x91, 0x9c, 0x95, 0x21, 0x9a, 0xff, 0x42, 
+        0x0d, 0x01, 0x32, 0x0d, 0x00, 0x80, 0x44, 0x01, 0x80, 0x33, 0x01, 0x30, 0x38, 0x31, 0x40, 0x48, 
+        0x31, 0x01, 0xe3, 0xeb, 0xc0, 0x00, 0x00, 0x58, 0xa1, 0x1b, 0xcc, 0xc0, 0xc0, 0x74, 0xc0, 0x55, 
+        0xc0, 0x56, 0x35, 0xe8, 0x0c, 0x13, 0x4d, 0x0f, 0x01, 0xfb, 0xed, 0x28, 0xf1, 0x08, 0x00, 0x80, 
+        0x22, 0x01, 0x02, 0x20, 0x42, 0x20, 0x28, 0x31, 0xc0, 0x00, 0x00, 0x4d, 0x0f, 0x01, 0xf5, 0xed, 
+        0x0c, 0x03, 0x08, 0x00, 0x80, 0x2e, 0x01, 0x02, 0x20, 0x42, 0x20, 0x28, 0x31, 0xc0, 0x00, 0x00, 
+        0x08, 0x21, 0xc8, 0x31, 0xf8, 0x61, 0xe2, 0x4d, 0x01, 0x28, 0xf1, 0x22, 0x4d, 0x00, 0xe8, 0x51, 
+        0xd8, 0x41, 0x12, 0xc1, 0x50, 0x0d, 0xf0, 0x00, 0x50, 0x85, 0xfe, 0x3f, 0xff, 0xff, 0x00, 0xe0, 
+        0x30, 0x93, 0x20, 0x12, 0xc1, 0xc0, 0xc2, 0x61, 0x0a, 0xf2, 0x61, 0x0d, 0x59, 0xf1, 0x69, 0x41, 
+        0x49, 0x31, 0x79, 0x11, 0x09, 0x91, 0xd9, 0xb1, 0xe9, 0xc1, 0xdd, 0x02, 0xe1, 0x81, 0xf3, 0x08, 
+        0x02, 0x99, 0x21, 0x00, 0x01, 0x05, 0x56, 0x60, 0x1c, 0xf8, 0xf1, 0x22, 0xa0, 0x77, 0x0c, 0x03, 
+        0xc1, 0xdd, 0xed, 0x1c, 0x04, 0x08, 0x0c, 0x0c, 0x05, 0x02, 0x20, 0x25, 0x0c, 0x06, 0xc0, 0x00, 
+        0x00, 0x0c, 0x03, 0x0c, 0xf4, 0x0c, 0x65, 0x0c, 0x66, 0x08, 0x0c, 0x29, 0x61, 0x02, 0x20, 0x25, 
+        0x22, 0xa0, 0x77, 0xc0, 0x00, 0x00, 0x0c, 0x03, 0x0c, 0x94, 0x0c, 0x75, 0x0c, 0x06, 0x08, 0x0c, 
+        0x29, 0x71, 0x02, 0x20, 0x25, 0x22, 0xa0, 0x77, 0xc0, 0x00, 0x00, 0x08, 0x0c, 0x02, 0x20, 0x28, 
+        0x29, 0x81, 0xc0, 0x00, 0x00, 0x08, 0x0c, 0x02, 0x20, 0x30, 0x0c, 0x12, 0xc0, 0x00, 0x00, 0x28, 
+        0x31, 0x20, 0x20, 0xb4, 0x45, 0x59, 0xfe, 0x28, 0x31, 0x3d, 0x01, 0x05, 0x78, 0xff, 0x08, 0x0c, 
+        0x08, 0x60, 0x0c, 0x02, 0xc0, 0x00, 0x00, 0x08, 0x0c, 0x08, 0xf0, 0x0c, 0x12, 0xc0, 0x00, 0x00, 
+        0x22, 0xa0, 0x77, 0x0c, 0x03, 0x0c, 0x94, 0x0c, 0x75, 0x08, 0x0c, 0x0c, 0x06, 0x02, 0x20, 0x27, 
+        0x0c, 0x07, 0xc0, 0x00, 0x00, 0x22, 0xa0, 0x77, 0x0c, 0x03, 0x1c, 0x04, 0x0c, 0x25, 0x08, 0x0c, 
+        0x0c, 0x26, 0x02, 0x20, 0x27, 0x0c, 0x17, 0xc0, 0x00, 0x00, 0x28, 0x41, 0x72, 0x01, 0x44, 0x3d, 
+        0x0f, 0x2b, 0x41, 0xf2, 0x01, 0x40, 0x58, 0x11, 0x6d, 0x0f, 0xc5, 0xd1, 0xff, 0x08, 0x0c, 0x02, 
+        0x20, 0x1b, 0x0c, 0x12, 0xc0, 0x00, 0x00, 0x22, 0xa0, 0x77, 0x0c, 0x03, 0x1c, 0x04, 0x0c, 0x05, 
+        0x0c, 0x06, 0x08, 0x0c, 0x78, 0x61, 0x02, 0x20, 0x27, 0x79, 0x51, 0xc0, 0x00, 0x00, 0x78, 0x71, 
+        0x22, 0xa0, 0x77, 0x0c, 0x03, 0x0c, 0xf4, 0x08, 0x0c, 0x0c, 0x65, 0x02, 0x20, 0x27, 0x0c, 0x66, 
+        0xc0, 0x00, 0x00, 0x78, 0x81, 0x22, 0xa0, 0x77, 0x0c, 0x03, 0x0c, 0x94, 0x08, 0x0c, 0x0c, 0x75, 
+        0x02, 0x20, 0x27, 0x0c, 0x06, 0xc0, 0x00, 0x00, 0x22, 0xa0, 0x77, 0x0c, 0x03, 0x1c, 0x04, 0x0c, 
+        0x25, 0x08, 0x0c, 0x0c, 0x26, 0x02, 0x20, 0x27, 0x0c, 0x07, 0xc0, 0x00, 0x00, 0x58, 0x11, 0x2c, 
+        0x03, 0x21, 0x09, 0xef, 0xc0, 0x20, 0x00, 0x08, 0xa2, 0x30, 0x00, 0x20, 0xc0, 0x20, 0x00, 0x09, 
+        0xa2, 0x0c, 0x2a, 0x7c, 0x0b, 0xc0, 0x20, 0x00, 0x92, 0x2e, 0x8f, 0xb0, 0x99, 0x10, 0xa0, 0x99, 
+        0x20, 0xc0, 0x20, 0x00, 0x92, 0x6e, 0x8f, 0x0c, 0x17, 0x82, 0xae, 0x0e, 0xc0, 0x20, 0x00, 0x62, 
+        0x2e, 0x99, 0x80, 0x66, 0x10, 0x70, 0x66, 0x20, 0xc0, 0x20, 0x00, 0x0c, 0xf2, 0x62, 0x6e, 0x99, 
+        0x42, 0x01, 0x02, 0x7c, 0x10, 0x80, 0x44, 0x01, 0x40, 0x48, 0x31, 0x07, 0x24, 0x01, 0x0d, 0x04, 
+        0x42, 0x01, 0x03, 0x07, 0x22, 0x01, 0x2d, 0x00, 0x6c, 0x10, 0x22, 0x41, 0x02, 0x80, 0x44, 0x01, 
+        0x80, 0x32, 0x01, 0x30, 0x38, 0x31, 0x40, 0x48, 0x31, 0x1c, 0xf2, 0x07, 0x24, 0x01, 0x0d, 0x04, 
+        0x07, 0x22, 0x01, 0x2d, 0x00, 0x22, 0x41, 0x03, 0x80, 0x42, 0x01, 0x40, 0x48, 0x31, 0x8c, 0xe5, 
+        0x58, 0x51, 0x8c, 0xa5, 0x30, 0x30, 0x60, 0x32, 0x41, 0x02, 0x80, 0x33, 0x01, 0x30, 0x38, 0x31, 
+        0x8c, 0xdf, 0x21, 0x89, 0xff, 0x01, 0x56, 0xeb, 0xc0, 0x00, 0x00, 0x42, 0x01, 0x03, 0x32, 0x01, 
+        0x02, 0x80, 0xf3, 0x01, 0xf0, 0xf8, 0x31, 0x77, 0x63, 0x44, 0xf2, 0xc3, 0x20, 0x86, 0x0f, 0x00, 
+        0xc2, 0x13, 0x00, 0xc0, 0xf8, 0x41, 0x80, 0xcc, 0x01, 0xc0, 0xc8, 0x31, 0x80, 0x0f, 0x01, 0x21, 
+        0xdb, 0xee, 0xe0, 0xfc, 0x01, 0x20, 0xff, 0x20, 0x21, 0x7d, 0xff, 0xc0, 0x20, 0x00, 0xd2, 0x2e, 
+        0x98, 0x20, 0xdd, 0x10, 0x00, 0xdd, 0x20, 0xf0, 0xdd, 0x20, 0xc0, 0x20, 0x00, 0xc8, 0xa1, 0xd2, 
+        0x6e, 0x98, 0xf8, 0xd1, 0xd8, 0xb1, 0xe8, 0xc1, 0x08, 0x91, 0x12, 0xc1, 0x40, 0x0d, 0xf0, 0x80, 
+        0x04, 0x01, 0x00, 0x08, 0x31, 0x77, 0x64, 0x07, 0x22, 0xc4, 0x40, 0x29, 0xe1, 0x46, 0x00, 0x00, 
+        0x09, 0xe1, 0x08, 0x0c, 0xc8, 0xe1, 0x02, 0x20, 0x2a, 0x80, 0xcc, 0x01, 0xc0, 0xc8, 0x31, 0xc0, 
+        0x00, 0x00, 0x21, 0x65, 0xec, 0x08, 0x0d, 0x38, 0xe1, 0x80, 0x4f, 0x11, 0x80, 0x33, 0x01, 0x30, 
+        0x38, 0x31, 0x40, 0x33, 0x20, 0x48, 0x21, 0x20, 0x00, 0x20, 0x32, 0x54, 0x00, 0x09, 0x0d, 0x46, 
+        0xe2, 0xff, 0x00, 0x00, 0x2b, 0x64, 0x82, 0x93, 0x00, 0x00, 0x04, 0x40, 0x80, 0x90, 0xb1, 0x90, 
+        0x88, 0xc0, 0x00, 0x16, 0x40, 0x8a, 0x82, 0x00, 0x25, 0xa1, 0x00, 0x88, 0x11, 0x80, 0x80, 0x31, 
+        0x82, 0x53, 0x00, 0x27, 0x28, 0x11, 0x20, 0x48, 0xc0, 0x80, 0x25, 0x01, 0x20, 0x28, 0x31, 0x42, 
+        0x53, 0x00, 0x0d, 0xf0, 0x0c, 0x02, 0x0d, 0xf0, 0x20, 0x40, 0x60, 0x87, 0x24, 0xf5, 0x2a, 0x48, 
+        0x50, 0x20, 0x60, 0x80, 0x22, 0x01, 0x20, 0x28, 0x31, 0x86, 0xf8, 0xff, 0x00, 0x00, 0x00, 0x01, 
+        0xa1, 0xf7, 0xef, 0x12, 0xc1, 0xf0, 0xd9, 0x21, 0xe9, 0x31, 0xc9, 0x11, 0x09, 0x01, 0xc1, 0x35, 
+        0xed, 0x08, 0x1a, 0xe1, 0xe1, 0xfb, 0x77, 0xf0, 0x35, 0x22, 0xa0, 0x6a, 0x0c, 0x23, 0x0c, 0x04, 
+        0x0c, 0x55, 0x08, 0x0c, 0x0c, 0x46, 0x02, 0x20, 0x27, 0x0c, 0x07, 0xc0, 0x00, 0x00, 0x91, 0x80, 
+        0xf6, 0xa8, 0x0c, 0x22, 0x09, 0x01, 0xa2, 0x2a, 0x27, 0x16, 0xd2, 0x04, 0x22, 0xa0, 0x6a, 0x0c, 
+        0x23, 0x0c, 0x44, 0x0c, 0x75, 0x0c, 0x46, 0x0c, 0x17, 0xc0, 0x0a, 0x00, 0x86, 0x12, 0x00, 0xd2, 
+        0x0e, 0x02, 0x22, 0xa0, 0x61, 0x0c, 0x13, 0x0c, 0x24, 0x0c, 0x45, 0x08, 0x0c, 0x0c, 0x06, 0x02, 
+        0x20, 0x27, 0x7d, 0x0d, 0xc0, 0x00, 0x00, 0x72, 0x0e, 0x03, 0x22, 0xa0, 0x66, 0x0c, 0x33, 0x0c, 
+        0x14, 0x08, 0x0c, 0x0c, 0x55, 0x02, 0x20, 0x27, 0x0c, 0x06, 0xc0, 0x00, 0x00, 0xc8, 0x11, 0xd8, 
+        0x21, 0xe8, 0x31, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x22, 0xa0, 0x6a, 0x0c, 0x23, 0x0c, 
+        0x44, 0x0c, 0x75, 0x0c, 0x46, 0x0c, 0x27, 0xc0, 0x0a, 0x00, 0x22, 0xa0, 0x68, 0x0c, 0x33, 0x0c, 
+        0x14, 0x0c, 0x05, 0x08, 0x0c, 0x0c, 0x06, 0x02, 0x20, 0x27, 0x0c, 0x17, 0xc0, 0x00, 0x00, 0x22, 
+        0xa0, 0x6a, 0x0c, 0x23, 0x0c, 0x64, 0x0c, 0x45, 0x08, 0x0c, 0x0c, 0x06, 0x02, 0x20, 0x27, 0x0c, 
+        0x87, 0xc0, 0x00, 0x00, 0x22, 0xa0, 0x6a, 0x0c, 0x23, 0x0c, 0x44, 0x0c, 0x05, 0x08, 0x0c, 0x0c, 
+        0x06, 0x02, 0x20, 0x27, 0x0c, 0x17, 0xc0, 0x00, 0x00, 0x22, 0xa0, 0x6a, 0x0c, 0x23, 0x0c, 0x34, 
+        0x0c, 0x65, 0x08, 0x0c, 0x0c, 0x66, 0x02, 0x20, 0x27, 0x0c, 0x17, 0xc0, 0x00, 0x00, 0x22, 0xa0, 
+        0x6a, 0x0c, 0x23, 0x0c, 0x44, 0x0c, 0x35, 0x08, 0x0c, 0x0c, 0x36, 0x02, 0x20, 0x27, 0x0c, 0x07, 
+        0xc0, 0x00, 0x00, 0x22, 0xa0, 0x6a, 0x0c, 0x23, 0x0c, 0x44, 0x0c, 0x35, 0x08, 0x0c, 0x0c, 0x36, 
+        0x02, 0x20, 0x27, 0x0c, 0x17, 0xc0, 0x00, 0x00, 0x22, 0xa0, 0x64, 0x01, 0x6d, 0xec, 0xc0, 0x00, 
+        0x00, 0x22, 0xa0, 0x6a, 0x0c, 0x23, 0x0c, 0x54, 0x08, 0x0c, 0x0c, 0x55, 0x02, 0x20, 0x25, 0x0c, 
+        0x06, 0xc0, 0x00, 0x00, 0x0c, 0x33, 0x0c, 0x14, 0x0c, 0x05, 0x0c, 0x06, 0x0c, 0x07, 0x08, 0x0c, 
+        0xdd, 0x02, 0x02, 0x20, 0x27, 0x22, 0xa0, 0x68, 0xc0, 0x00, 0x00, 0x01, 0x39, 0xf6, 0x41, 0x78, 
+        0xfe, 0x62, 0x00, 0x01, 0xb6, 0x3d, 0x04, 0x3c, 0xc2, 0xd7, 0xb2, 0x09, 0x51, 0xa8, 0xff, 0x38, 
+        0x04, 0x50, 0x33, 0x20, 0x39, 0x04, 0x16, 0xa6, 0x03, 0x32, 0xa0, 0x1e, 0xc0, 0x2d, 0x11, 0x22, 
+        0xc2, 0xd9, 0xc5, 0xa1, 0x04, 0xd0, 0x3d, 0xf0, 0x20, 0xd0, 0x74, 0xd2, 0x4e, 0x02, 0xe0, 0x23, 
+        0x11, 0x20, 0x20, 0xf4, 0x0c, 0x93, 0xc5, 0xab, 0x04, 0x71, 0x02, 0xed, 0x61, 0x94, 0xef, 0x20, 
+        0x40, 0x74, 0x2b, 0x44, 0x58, 0x16, 0x40, 0x42, 0x21, 0x42, 0x4e, 0x03, 0x70, 0x55, 0x20, 0x59, 
+        0x16, 0x46, 0xab, 0xff, 0x1c, 0x43, 0xd0, 0x2d, 0xa0, 0xd0, 0x22, 0x90, 0x22, 0xc2, 0xf2, 0x05, 
+        0x9e, 0x04, 0xc6, 0xef, 0xff, 0x00, 0x00, 0x00, 0x70, 0x85, 0xfe, 0x3f, 0x78, 0x85, 0xfe, 0x3f, 
+        0x12, 0xc1, 0xc0, 0xc9, 0x71, 0xe9, 0x91, 0x69, 0x51, 0x79, 0xd1, 0x49, 0xc1, 0x59, 0x41, 0x09, 
+        0x61, 0x29, 0xb1, 0xd9, 0x81, 0xf9, 0xa1, 0xdd, 0x03, 0xfd, 0x07, 0x22, 0xa1, 0x38, 0x45, 0x47, 
+        0xff, 0xcd, 0x02, 0xb2, 0xaf, 0x7a, 0xe2, 0x01, 0x40, 0xac, 0x7f, 0xb6, 0x8e, 0x09, 0xea, 0x0d, 
+        0xba, 0x00, 0x02, 0x00, 0x7f, 0x46, 0x00, 0x00, 0x0c, 0x00, 0x21, 0xef, 0xff, 0x58, 0xb1, 0x3d, 
+        0x0e, 0x5a, 0x50, 0x52, 0x05, 0x00, 0x4d, 0x0c, 0xe0, 0x55, 0x11, 0x01, 0x99, 0xea, 0xc0, 0x00, 
+        0x00, 0xb2, 0xaf, 0x7a, 0xb6, 0x8e, 0x09, 0xea, 0x0d, 0xba, 0x00, 0x02, 0x00, 0x7f, 0x46, 0x00, 
+        0x00, 0x0c, 0x00, 0x38, 0x41, 0x28, 0xb1, 0x0c, 0x44, 0x2a, 0x20, 0x22, 0x02, 0x00, 0x0c, 0x15, 
+        0xe0, 0x22, 0x11, 0x20, 0x2c, 0xc0, 0x00, 0x22, 0x11, 0x20, 0x20, 0x31, 0x29, 0x21, 0x45, 0xd7, 
+        0xff, 0xcd, 0x02, 0xd9, 0x31, 0x9c, 0x2f, 0x38, 0x21, 0x21, 0xdb, 0xff, 0x48, 0x41, 0x5d, 0x0c, 
+        0x42, 0x94, 0x00, 0x01, 0x87, 0xea, 0xc0, 0x00, 0x00, 0xd9, 0x31, 0x58, 0x51, 0xd1, 0x3b, 0xeb, 
+        0x16, 0x75, 0x04, 0x16, 0x4c, 0x04, 0x6d, 0x01, 0x0c, 0x04, 0x08, 0xc1, 0xd0, 0xa4, 0xa0, 0x6a, 
+        0xb4, 0xc0, 0x20, 0x00, 0x1b, 0x94, 0x4a, 0x80, 0xa2, 0x2a, 0xd3, 0xa2, 0x4b, 0x00, 0xc0, 0xaa, 
+        0xc0, 0xa2, 0x4b, 0x00, 0x72, 0x08, 0x00, 0x90, 0x40, 0x74, 0xc0, 0x77, 0xc0, 0x72, 0x48, 0x00, 
+        0x66, 0x64, 0xd8, 0x28, 0x31, 0x0c, 0xd3, 0x51, 0x40, 0xfb, 0x4d, 0x01, 0x62, 0x05, 0x2c, 0x52, 
+        0x05, 0x2d, 0x80, 0x66, 0x01, 0x60, 0x68, 0x31, 0x05, 0x6a, 0xff, 0x9c, 0x3f, 0xd0, 0x3e, 0xa0, 
+        0x21, 0xc3, 0xff, 0xc0, 0x20, 0x00, 0x32, 0x23, 0xc1, 0x30, 0x30, 0x74, 0x01, 0x6d, 0xea, 0xc0, 
+        0x00, 0x00, 0xc8, 0x71, 0xd8, 0x81, 0xe8, 0x91, 0xf8, 0xa1, 0x08, 0x61, 0x12, 0xc1, 0x40, 0x0d, 
+        0xf0, 0x00, 0x00, 0x00, 0x12, 0xc1, 0xe0, 0x09, 0x41, 0x51, 0x8c, 0xea, 0xc0, 0x20, 0x00, 0x02, 
+        0x25, 0xd8, 0x00, 0x08, 0x45, 0xc0, 0x20, 0x00, 0x52, 0x25, 0xd4, 0xf7, 0xf5, 0x7c, 0x09, 0x01, 
+        0x7d, 0x04, 0x5d, 0x02, 0x6d, 0x03, 0x21, 0xaa, 0xef, 0x31, 0xfc, 0xef, 0x41, 0xaa, 0xef, 0x05, 
+        0xec, 0xff, 0x61, 0xeb, 0xf8, 0x7c, 0xea, 0xc0, 0x20, 0x00, 0x71, 0x80, 0xea, 0x52, 0x27, 0xd7, 
+        0x60, 0x55, 0x10, 0xc0, 0x20, 0x00, 0x52, 0x67, 0xd7, 0x41, 0xba, 0xf8, 0xc0, 0x20, 0x00, 0x32, 
+        0x27, 0xd7, 0x40, 0x33, 0x10, 0xc0, 0x20, 0x00, 0x32, 0x67, 0xd7, 0xc0, 0x20, 0x00, 0x22, 0x27, 
+        0xd4, 0xa0, 0x22, 0x10, 0xc0, 0x20, 0x00, 0x22, 0x67, 0xd4, 0x0c, 0x20, 0xc0, 0x20, 0x00, 0xb2, 
+        0x27, 0xd8, 0x00, 0xbb, 0x20, 0xc0, 0x20, 0x00, 0xb2, 0x67, 0xd8, 0xc0, 0x20, 0x00, 0x92, 0x27, 
+        0xd8, 0xa0, 0x99, 0x10, 0xc0, 0x20, 0x00, 0x92, 0x67, 0xd8, 0xc0, 0x20, 0x00, 0x62, 0x27, 0xd8, 
+        0x0c, 0x18, 0x80, 0x66, 0x20, 0xc0, 0x20, 0x00, 0x62, 0x67, 0xd8, 0x08, 0x41, 0x12, 0xc1, 0x20, 
+        0x0d, 0xf0, 0x00, 0x00, 0x91, 0x66, 0xea, 0x81, 0xd3, 0xeb, 0x0c, 0x0b, 0x12, 0xc1, 0xf0, 0xc9, 
+        0x11, 0x09, 0x01, 0xd9, 0x21, 0x0c, 0x00, 0xd2, 0xa0, 0xff, 0x7c, 0xfc, 0x90, 0x60, 0xa0, 0x20, 
+        0x70, 0x90, 0x5d, 0x0d, 0xad, 0x0b, 0xc0, 0x20, 0x00, 0x32, 0xa1, 0x17, 0x62, 0x26, 0xe0, 0x1b, 
+        0x00, 0x00, 0x00, 0x74, 0xc0, 0x66, 0x30, 0x60, 0x40, 0x74, 0x42, 0xc4, 0xeb, 0x60, 0x60, 0xa4, 
+        0x62, 0x57, 0x00, 0x40, 0xa4, 0xb3, 0x30, 0xaa, 0x82, 0x80, 0x36, 0x10, 0xa0, 0xa8, 0x21, 0xa7, 
+        0x2d, 0x01, 0x5d, 0x0a, 0x3a, 0x35, 0x32, 0x57, 0x00, 0x66, 0x80, 0xbf, 0xc8, 0x11, 0xd8, 0x21, 
+        0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x12, 0xc1, 0xe0, 0x09, 0x61, 0x39, 0x41, 0x29, 
+        0x51, 0x7c, 0xd5, 0x21, 0x4a, 0xea, 0xc0, 0x20, 0x00, 0x42, 0x22, 0xd4, 0x50, 0x44, 0x10, 0xc0, 
+        0x20, 0x00, 0x42, 0x62, 0xd4, 0x0c, 0x23, 0xc0, 0x20, 0x00, 0x02, 0x22, 0xd4, 0x30, 0x00, 0x20, 
+        0xc0, 0x20, 0x00, 0x02, 0x62, 0xd4, 0x1c, 0x92, 0x01, 0xb2, 0xeb, 0xc0, 0x00, 0x00, 0x2d, 0x01, 
+        0x05, 0xf6, 0xff, 0x28, 0x51, 0x02, 0x11, 0x03, 0x42, 0x11, 0x02, 0x32, 0x11, 0x01, 0x92, 0x11, 
+        0x07, 0x72, 0x11, 0x05, 0x62, 0x11, 0x04, 0x82, 0x11, 0x06, 0x7a, 0x66, 0x9a, 0x88, 0x4a, 0x33, 
+        0x3a, 0x00, 0x80, 0x88, 0x90, 0x60, 0x66, 0x90, 0x60, 0x60, 0xf4, 0x80, 0x70, 0xf4, 0xf0, 0x90, 
+        0x11, 0x90, 0x90, 0xf4, 0x77, 0x39, 0x05, 0x80, 0x80, 0xd0, 0x46, 0x00, 0x00, 0x0c, 0x08, 0x82, 
+        0x52, 0x00, 0x08, 0x41, 0x77, 0x36, 0x05, 0x70, 0x26, 0xc0, 0x46, 0x00, 0x00, 0x0c, 0x02, 0x22, 
+        0x50, 0x00, 0x08, 0x61, 0x12, 0xc1, 0x20, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0xf1, 0x3c, 0x11, 0x01, 
+        0xf3, 0x3c, 0x11, 0x01, 0xf0, 0x3c, 0x11, 0x01, 0xff, 0xff, 0x03, 0x00, 0x8d, 0x04, 0x12, 0xc1, 
+        0xc0, 0xd9, 0x51, 0xe9, 0x61, 0xf9, 0x71, 0x59, 0xc1, 0x69, 0x21, 0x30, 0x40, 0xf4, 0x09, 0x31, 
+        0x29, 0x11, 0xc9, 0x41, 0xc1, 0x14, 0xec, 0x0c, 0x02, 0x08, 0x0c, 0x0c, 0x13, 0x02, 0x20, 0x2b, 
+        0x89, 0x91, 0xc0, 0x00, 0x00, 0x28, 0xc1, 0xf1, 0x19, 0xea, 0x16, 0x22, 0x10, 0x4c, 0x0c, 0x4c, 
+        0x0d, 0x1c, 0xce, 0x0c, 0x08, 0x0c, 0x09, 0x0c, 0x0a, 0xb2, 0xc2, 0xfc, 0xb9, 0x81, 0xa9, 0x01, 
+        0x99, 0xa1, 0x89, 0xb1, 0x01, 0x08, 0xec, 0x0c, 0x12, 0x08, 0x00, 0x0c, 0x23, 0x02, 0x20, 0x2b, 
+        0xd0, 0x40, 0xf4, 0xc0, 0x00, 0x00, 0x01, 0x03, 0xec, 0x0c, 0x02, 0x08, 0x00, 0x0c, 0x23, 0x02, 
+        0x20, 0x2b, 0xc0, 0x40, 0xf4, 0xc0, 0x00, 0x00, 0xc0, 0x20, 0x00, 0x31, 0xe0, 0xff, 0x32, 0x6f, 
+        0xd3, 0xc0, 0x20, 0x00, 0x21, 0xdf, 0xff, 0x22, 0x6f, 0xd3, 0x28, 0x91, 0x01, 0x75, 0xeb, 0xc0, 
+        0x00, 0x00, 0x08, 0x01, 0x92, 0xa0, 0x7f, 0xc0, 0x20, 0x00, 0x42, 0x2f, 0xd3, 0x0c, 0x15, 0x40, 
+        0x4f, 0x05, 0x50, 0x44, 0x30, 0xc0, 0x20, 0x00, 0x31, 0x63, 0xf7, 0x62, 0x2f, 0xd3, 0x0c, 0x0b, 
+        0x30, 0x66, 0x10, 0x60, 0xb5, 0x83, 0x9c, 0x24, 0xad, 0x09, 0xca, 0xce, 0x00, 0xcc, 0x11, 0xc0, 
+        0xc0, 0x31, 0xc7, 0x29, 0x01, 0xad, 0x0c, 0xcd, 0x0a, 0x46, 0x03, 0x00, 0xe0, 0x2c, 0xc0, 0x0c, 
+        0x0c, 0x00, 0x22, 0x11, 0x20, 0x20, 0x31, 0x20, 0xc2, 0xb3, 0x52, 0xce, 0xfe, 0x9c, 0x2b, 0x3d, 
+        0x09, 0xda, 0xde, 0x00, 0xdd, 0x11, 0xd0, 0xd0, 0x31, 0xd7, 0x29, 0x01, 0x3d, 0x0d, 0xdd, 0x03, 
+        0x46, 0x03, 0x00, 0xe0, 0x2d, 0xc0, 0x0c, 0x0d, 0x00, 0x22, 0x11, 0x20, 0x20, 0x31, 0x20, 0xd2, 
+        0xb3, 0xe0, 0x41, 0x21, 0x38, 0x81, 0x0c, 0x1e, 0x1b, 0x44, 0x80, 0x44, 0x01, 0x40, 0x48, 0x31, 
+        0x50, 0xe4, 0x93, 0x37, 0x20, 0x17, 0x58, 0xa1, 0x78, 0xb1, 0xda, 0x65, 0xca, 0x87, 0x00, 0x88, 
+        0x11, 0x00, 0x66, 0x11, 0x60, 0x50, 0x31, 0x80, 0x70, 0x31, 0x79, 0xb1, 0x59, 0xa1, 0x78, 0xc1, 
+        0x1b, 0x00, 0x00, 0x00, 0x74, 0x09, 0x01, 0x00, 0x77, 0xc0, 0x56, 0x67, 0xf1, 0xc6, 0x01, 0x00, 
+        0x0c, 0x02, 0x0c, 0x03, 0x39, 0xa1, 0x29, 0xb1, 0x0c, 0x12, 0x0c, 0x23, 0xe8, 0xa1, 0xc1, 0xc9, 
+        0xeb, 0x2b, 0xee, 0x08, 0x0c, 0xe0, 0x42, 0xf4, 0x02, 0x20, 0x2b, 0xe0, 0xe2, 0x21, 0xc0, 0x00, 
+        0x00, 0x0c, 0x02, 0x0c, 0x23, 0xd8, 0xb1, 0x08, 0x0c, 0x2b, 0xdd, 0xd0, 0x42, 0xf4, 0x02, 0x20, 
+        0x2b, 0xd0, 0xd2, 0x21, 0xc0, 0x00, 0x00, 0x0c, 0x12, 0x08, 0x0c, 0x0c, 0x13, 0x02, 0x20, 0x2b, 
+        0x42, 0xa0, 0x7f, 0xc0, 0x00, 0x00, 0x41, 0x9f, 0xff, 0xc0, 0x20, 0x00, 0x28, 0x11, 0x38, 0x21, 
+        0x42, 0x6f, 0xd3, 0xd2, 0x43, 0x00, 0xe2, 0x43, 0x01, 0x9c, 0xf2, 0xe0, 0x7d, 0x01, 0x91, 0x9a, 
+        0xff, 0x70, 0x8e, 0x01, 0x61, 0x53, 0xf1, 0xc0, 0x20, 0x00, 0x52, 0x26, 0x99, 0x90, 0x55, 0x10, 
+        0x80, 0x55, 0x20, 0x70, 0x55, 0x20, 0xc0, 0x20, 0x00, 0x52, 0x66, 0x99, 0xc8, 0x41, 0xd8, 0x51, 
+        0xe8, 0x61, 0xf8, 0x71, 0x08, 0x31, 0x12, 0xc1, 0x40, 0x0d, 0xf0, 0x00, 0x0c, 0x04, 0x8b, 0x52, 
+        0x22, 0xa0, 0x7f, 0x30, 0x55, 0xe0, 0x00, 0x55, 0x11, 0x50, 0x50, 0x31, 0x50, 0x45, 0xb3, 0x00, 
+        0x44, 0x11, 0x40, 0x30, 0x31, 0xe6, 0xe3, 0x01, 0x2d, 0x03, 0x80, 0x22, 0x01, 0x20, 0x28, 0x31, 
+        0x0d, 0xf0, 0x00, 0x00, 0x80, 0x85, 0xfe, 0x3f, 0x9c, 0x85, 0xfe, 0x3f, 0x0c, 0x07, 0x12, 0xc1, 
+        0xb0, 0xe9, 0x81, 0xf9, 0x91, 0xd9, 0x71, 0x09, 0x51, 0xc9, 0x61, 0x69, 0xa1, 0x49, 0xe1, 0x52, 
+        0x61, 0x10, 0x0c, 0x94, 0x0c, 0x75, 0x0c, 0x06, 0xcd, 0x03, 0x01, 0x96, 0xeb, 0xdd, 0x02, 0x08, 
+        0x00, 0x22, 0xa0, 0x77, 0x02, 0x20, 0x27, 0x0c, 0x03, 0xc0, 0x00, 0x00, 0x4d, 0x0c, 0x3d, 0x0d, 
+        0x0c, 0x05, 0x0c, 0x06, 0x01, 0x90, 0xeb, 0x0c, 0x02, 0x29, 0x01, 0x29, 0x11, 0x29, 0x21, 0x08, 
+        0x00, 0x0c, 0x07, 0x02, 0x20, 0x1a, 0x0c, 0x12, 0xc0, 0x00, 0x00, 0x0c, 0x0c, 0x0c, 0x33, 0x52, 
+        0x01, 0x10, 0x59, 0xb1, 0x39, 0xc1, 0x0c, 0x0d, 0x0c, 0x0f, 0x98, 0xa1, 0x0c, 0x08, 0x8c, 0x4c, 
+        0x26, 0x1c, 0x09, 0x66, 0x2c, 0x0a, 0x0c, 0x76, 0x69, 0xb1, 0xc6, 0x00, 0x00, 0x0c, 0xf7, 0x79, 
+        0xb1, 0xa8, 0xb1, 0xca, 0x99, 0x99, 0xd1, 0x82, 0x49, 0x00, 0x1b, 0xaa, 0xa9, 0xf1, 0xbc, 0xac, 
+        0x26, 0x1c, 0x1d, 0x66, 0x2c, 0x53, 0x22, 0xa0, 0x6b, 0x0c, 0x23, 0x0c, 0x24, 0x01, 0x79, 0xeb, 
+        0x0c, 0x65, 0x08, 0x00, 0x0c, 0x46, 0x02, 0x20, 0x27, 0x7d, 0x0d, 0xc0, 0x00, 0x00, 0x06, 0x0e, 
+        0x00, 0x22, 0xa0, 0x6b, 0x0c, 0x23, 0x0c, 0x24, 0x01, 0x73, 0xeb, 0x0c, 0x35, 0x08, 0x00, 0x0c, 
+        0x06, 0x02, 0x20, 0x27, 0x7d, 0x0d, 0xc0, 0x00, 0x00, 0x46, 0x07, 0x00, 0x22, 0xa0, 0x6b, 0x0c, 
+        0x23, 0x0c, 0x14, 0x0c, 0x35, 0x0c, 0x06, 0x01, 0x6b, 0xeb, 0x0c, 0x17, 0x08, 0x00, 0x70, 0x7d, 
+        0x90, 0x02, 0x20, 0x27, 0x70, 0x70, 0x74, 0xc0, 0x00, 0x00, 0x01, 0x66, 0xeb, 0x08, 0x00, 0x28, 
+        0xe1, 0x02, 0x20, 0x1c, 0x0c, 0xa3, 0xc0, 0x00, 0x00, 0xed, 0x02, 0x22, 0x21, 0x10, 0x8c, 0xb2, 
+        0x21, 0xc1, 0xff, 0x3d, 0x0d, 0x4d, 0x0e, 0x01, 0x42, 0xe9, 0xc0, 0x00, 0x00, 0xe7, 0xaf, 0x0e, 
+        0xfd, 0x0e, 0x48, 0xd1, 0x0c, 0x13, 0x30, 0x3d, 0x90, 0xc0, 0x3d, 0x93, 0x32, 0x44, 0x00, 0x48, 
+        0xf1, 0x1b, 0xdd, 0xd0, 0xd0, 0x74, 0xd0, 0x44, 0xc0, 0x56, 0x14, 0xf6, 0xe2, 0x21, 0x10, 0x8c, 
+        0xee, 0x21, 0xb5, 0xff, 0x48, 0xd1, 0x3d, 0x0c, 0x42, 0x04, 0x00, 0x01, 0x35, 0xe9, 0xc0, 0x00, 
+        0x00, 0xac, 0x2c, 0x26, 0x1c, 0x65, 0x66, 0x2c, 0x38, 0x22, 0xa0, 0x6b, 0x0c, 0x23, 0x0c, 0x24, 
+        0x0c, 0x65, 0x01, 0x4c, 0xeb, 0x0c, 0x46, 0x08, 0x00, 0x78, 0xd1, 0x02, 0x20, 0x27, 0x72, 0x07, 
+        0x00, 0xc0, 0x00, 0x00, 0x86, 0x06, 0x00, 0x22, 0xa0, 0x6b, 0x0c, 0x23, 0x0c, 0x14, 0x0c, 0x35, 
+        0x01, 0x45, 0xeb, 0x0c, 0x06, 0x08, 0x00, 0x78, 0xd1, 0x02, 0x20, 0x27, 0x72, 0x07, 0x00, 0xc0, 
+        0x00, 0x00, 0x28, 0xc1, 0x1b, 0xcc, 0xc0, 0xc0, 0x74, 0x0b, 0x22, 0x29, 0xc1, 0x56, 0x52, 0xed, 
+        0x01, 0x3d, 0xeb, 0x08, 0x00, 0x02, 0x20, 0x1b, 0x0c, 0x12, 0xc0, 0x00, 0x00, 0xc8, 0x61, 0xd8, 
+        0x71, 0xe8, 0x81, 0xf8, 0x91, 0x08, 0x51, 0x12, 0xc1, 0x50, 0x0d, 0xf0, 0x22, 0xa0, 0x6b, 0x0c, 
+        0x23, 0x0c, 0x24, 0x0c, 0x35, 0x01, 0x33, 0xeb, 0x0c, 0x06, 0x08, 0x00, 0x78, 0xd1, 0x02, 0x20, 
+        0x27, 0x72, 0x07, 0x00, 0xc0, 0x00, 0x00, 0xc6, 0xed, 0xff, 0x00, 0x00, 0xb4, 0x85, 0xfe, 0x3f, 
+        0x12, 0xc1, 0xa0, 0xf9, 0x81, 0x09, 0x41, 0xd9, 0x61, 0xc9, 0x51, 0xe9, 0x71, 0x79, 0xb1, 0x59, 
+        0xe1, 0x39, 0xc1, 0x49, 0xd1, 0x0c, 0x03, 0x0c, 0x94, 0x0c, 0x75, 0x0c, 0x07, 0xed, 0x06, 0xc1, 
+        0x25, 0xeb, 0xdd, 0x02, 0x08, 0x0c, 0x22, 0xa0, 0x77, 0x02, 0x20, 0x27, 0x0c, 0x06, 0xc0, 0x00, 
+        0x00, 0x28, 0xd1, 0x16, 0xb2, 0x14, 0xf2, 0xaf, 0x80, 0x0c, 0x0a, 0xe0, 0x60, 0x24, 0xe0, 0x53, 
+        0x14, 0xd9, 0x91, 0x32, 0x11, 0x30, 0x42, 0x01, 0x64, 0x0c, 0x07, 0x72, 0x61, 0x12, 0x49, 0xa1, 
+        0x32, 0x61, 0x15, 0xd2, 0xa0, 0x7f, 0x50, 0x55, 0x90, 0x0c, 0x0e, 0x60, 0x55, 0x90, 0x50, 0x50, 
+        0x74, 0x59, 0xf1, 0x92, 0x21, 0x12, 0x88, 0xc1, 0xa2, 0x61, 0x13, 0x9a, 0x88, 0x98, 0xe1, 0x82, 
+        0x08, 0x00, 0x82, 0x61, 0x11, 0x90, 0x88, 0xc0, 0x82, 0x61, 0x10, 0x32, 0x21, 0x10, 0x28, 0xf1, 
+        0xe0, 0x33, 0xc0, 0x80, 0x33, 0x01, 0x30, 0x38, 0x31, 0x05, 0xd8, 0xff, 0x0c, 0x00, 0x20, 0x02, 
+        0xb3, 0x80, 0xc0, 0x01, 0xc0, 0xc8, 0x31, 0xc7, 0xad, 0x04, 0x0b, 0xcd, 0x06, 0x01, 0x00, 0xf7, 
+        0xac, 0x01, 0x1b, 0xcf, 0x0c, 0x12, 0x38, 0x91, 0xc0, 0x40, 0x74, 0x0c, 0x05, 0x01, 0x01, 0xeb, 
+        0x0c, 0x06, 0x69, 0x01, 0x69, 0x11, 0x69, 0x21, 0x08, 0x00, 0x0c, 0x07, 0x02, 0x20, 0x1a, 0x0c, 
+        0x06, 0xc0, 0x00, 0x00, 0x01, 0xfc, 0xea, 0x08, 0x00, 0x08, 0xb0, 0x22, 0x21, 0x15, 0xc0, 0x00, 
+        0x00, 0x01, 0xf8, 0xea, 0x08, 0x00, 0x22, 0x61, 0x14, 0x08, 0xb0, 0x22, 0x21, 0x15, 0xc0, 0x00, 
+        0x00, 0x02, 0x21, 0x14, 0x62, 0x21, 0x11, 0x2a, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x31, 0x4b, 
+        0x00, 0x00, 0x03, 0x21, 0x60, 0x60, 0xc0, 0x00, 0x66, 0x11, 0x60, 0x60, 0x31, 0xe6, 0x16, 0x08, 
+        0x80, 0xdc, 0x01, 0xd0, 0xd8, 0x31, 0x46, 0x01, 0x00, 0x80, 0xfc, 0x01, 0xf0, 0xf8, 0x31, 0xac, 
+        0x46, 0x26, 0x06, 0x22, 0x80, 0x2c, 0x01, 0x20, 0x28, 0x31, 0xcc, 0x12, 0x96, 0x76, 0x01, 0x1b, 
+        0x3f, 0x37, 0x1d, 0x12, 0x42, 0x21, 0x13, 0xea, 0xe6, 0x1b, 0x54, 0x50, 0x40, 0x74, 0x42, 0x61, 
+        0x13, 0x42, 0xc4, 0xf6, 0x56, 0x34, 0xf4, 0x78, 0xa1, 0x92, 0x21, 0x12, 0x68, 0xe1, 0x88, 0xb1, 
+        0x60, 0x6c, 0xc0, 0x9a, 0x88, 0x62, 0x48, 0x00, 0x9c, 0x97, 0x42, 0x21, 0x11, 0x21, 0xab, 0xff, 
+        0x32, 0x21, 0x12, 0x80, 0x66, 0x01, 0x80, 0x50, 0x01, 0x50, 0x58, 0x31, 0x60, 0x68, 0x31, 0x01, 
+        0x04, 0xeb, 0xc0, 0x00, 0x00, 0xf2, 0xaf, 0x80, 0xd2, 0xa0, 0x7f, 0x0c, 0x0e, 0x0c, 0x0a, 0x72, 
+        0x21, 0x12, 0x68, 0xd1, 0x1b, 0x87, 0x80, 0x70, 0x74, 0x72, 0x61, 0x12, 0x70, 0x66, 0xc0, 0x56, 
+        0x06, 0xee, 0x01, 0xcc, 0xea, 0x08, 0x00, 0x02, 0x20, 0x1b, 0x0c, 0x12, 0xc0, 0x00, 0x00, 0xc8, 
+        0x51, 0xd8, 0x61, 0xe8, 0x71, 0xf8, 0x81, 0x08, 0x41, 0x12, 0xc1, 0x60, 0x0d, 0xf0, 0x00, 0x00, 
+        0xfc, 0x85, 0xfe, 0x3f, 0x82, 0xc2, 0xfe, 0x12, 0xc1, 0xa0, 0xc2, 0x61, 0x0a, 0xe2, 0x61, 0x0c, 
+        0xf9, 0xd1, 0x09, 0x91, 0x69, 0xe1, 0x52, 0x61, 0x13, 0xd9, 0xb1, 0x89, 0x11, 0xd1, 0x57, 0xe9, 
+        0xc0, 0x20, 0x00, 0x92, 0x2d, 0xe0, 0x00, 0x08, 0x40, 0x90, 0x90, 0xb1, 0xc0, 0x20, 0x00, 0xa2, 
+        0x2d, 0xe3, 0x00, 0x08, 0x40, 0xa0, 0xa0, 0xb1, 0xa0, 0xf9, 0xc0, 0xc0, 0x20, 0x00, 0x62, 0x2d, 
+        0xe2, 0x00, 0x08, 0x40, 0x60, 0x60, 0xb1, 0xc0, 0x20, 0x00, 0x79, 0x01, 0x02, 0x2d, 0xe1, 0x00, 
+        0x08, 0x40, 0xaa, 0x99, 0x2d, 0x09, 0x88, 0xe1, 0x00, 0x00, 0xb1, 0x0a, 0xe6, 0x80, 0x85, 0x30, 
+        0x60, 0x00, 0xc0, 0xcd, 0x00, 0x40, 0x63, 0x30, 0x80, 0x66, 0x30, 0x60, 0x60, 0x74, 0x8c, 0x66, 
+        0xcd, 0x0e, 0x2d, 0x0f, 0xed, 0x00, 0xfd, 0x09, 0x22, 0x61, 0x10, 0xc0, 0xdf, 0x31, 0x4d, 0x02, 
+        0x20, 0x5f, 0x31, 0x59, 0xf1, 0x3d, 0x05, 0x85, 0x6a, 0x03, 0x5d, 0x0d, 0x4d, 0x0c, 0x39, 0x31, 
+        0x29, 0x41, 0x3d, 0x0d, 0x2d, 0x0c, 0x85, 0x69, 0x03, 0x0c, 0x06, 0x0c, 0x10, 0x0c, 0x07, 0x58, 
+        0x31, 0xb8, 0x41, 0x3a, 0x55, 0x2a, 0x4b, 0x40, 0x70, 0x83, 0xb7, 0xb4, 0x01, 0x1b, 0x55, 0xbd, 
+        0x04, 0xad, 0x05, 0x50, 0x60, 0x83, 0x77, 0x06, 0x03, 0xbd, 0x00, 0x0c, 0x0a, 0xf0, 0x4f, 0x20, 
+        0xf2, 0x61, 0x06, 0xe2, 0x61, 0x12, 0x38, 0xf1, 0x22, 0x21, 0x10, 0xa2, 0x61, 0x14, 0xb2, 0x61, 
+        0x15, 0xe0, 0x8f, 0x31, 0xf0, 0x5f, 0x31, 0x59, 0x51, 0x82, 0x61, 0x11, 0x05, 0x65, 0x03, 0xe2, 
+        0x21, 0x15, 0xf2, 0x21, 0x14, 0x52, 0x21, 0x11, 0x42, 0x21, 0x12, 0x39, 0x71, 0x29, 0x81, 0x3d, 
+        0x0d, 0x2d, 0x0c, 0xc5, 0x63, 0x03, 0x08, 0x71, 0x30, 0x00, 0xc0, 0x38, 0x81, 0x20, 0xa3, 0xc0, 
+        0xa7, 0xb3, 0x01, 0x0b, 0x00, 0x70, 0x2a, 0x11, 0xf0, 0x5f, 0x20, 0x4d, 0x0e, 0x10, 0x47, 0x40, 
+        0xa0, 0x30, 0x81, 0x45, 0x65, 0x03, 0x38, 0x01, 0x80, 0x42, 0x01, 0x58, 0xe1, 0x40, 0x48, 0x31, 
+        0x1b, 0x44, 0x40, 0x41, 0x21, 0x40, 0x20, 0x60, 0x50, 0x24, 0x83, 0x58, 0x51, 0x48, 0x61, 0x22, 
+        0x43, 0x00, 0x29, 0x21, 0x3d, 0x0d, 0x2d, 0x0c, 0x45, 0x5f, 0x03, 0x52, 0x21, 0x11, 0x42, 0x21, 
+        0x12, 0xdd, 0x03, 0xcd, 0x02, 0x38, 0xf1, 0x22, 0x21, 0x10, 0x45, 0x5e, 0x03, 0x3a, 0x0d, 0x2a, 
+        0x2c, 0xc7, 0xb2, 0x01, 0x1b, 0x00, 0xe0, 0x4e, 0x20, 0xf0, 0x5f, 0x20, 0xc2, 0x21, 0x00, 0x10, 
+        0x47, 0x40, 0xd2, 0x21, 0x13, 0x20, 0x30, 0x81, 0x70, 0x22, 0x11, 0xc5, 0x5f, 0x03, 0x52, 0x01, 
+        0x60, 0x80, 0x62, 0x01, 0x60, 0x68, 0x31, 0x1b, 0x66, 0x60, 0x61, 0x21, 0x60, 0x00, 0x60, 0xd0, 
+        0x06, 0x83, 0x02, 0x4c, 0x01, 0xac, 0x65, 0x21, 0x9e, 0xff, 0xc0, 0x20, 0x00, 0x31, 0xfb, 0xe8, 
+        0x48, 0x11, 0x80, 0x50, 0x01, 0x50, 0x58, 0x31, 0x00, 0x04, 0x40, 0x32, 0x23, 0xf9, 0x48, 0x21, 
+        0x30, 0x30, 0xb1, 0x80, 0x44, 0x01, 0x40, 0x48, 0x31, 0x01, 0x89, 0xea, 0xc0, 0x00, 0x00, 0xc8, 
+        0xa1, 0xd8, 0xb1, 0xe8, 0xc1, 0xf8, 0xd1, 0x08, 0x91, 0x12, 0xc1, 0x60, 0x0d, 0xf0, 0x00, 0x00, 
+        0x00, 0x40, 0x00, 0x00, 0x2c, 0xf3, 0xfe, 0x3f, 0x9d, 0x03, 0x12, 0xc1, 0xb0, 0x79, 0x71, 0x49, 
+        0x51, 0x62, 0x61, 0x12, 0x52, 0x61, 0x11, 0x09, 0x81, 0x22, 0x61, 0x10, 0xf9, 0xc1, 0xd9, 0xa1, 
+        0xe9, 0xb1, 0xc9, 0x91, 0x0c, 0x0e, 0x0c, 0x0c, 0xd1, 0x4b, 0xea, 0xf2, 0x01, 0x54, 0x99, 0x61, 
+        0x0c, 0x22, 0x02, 0x21, 0x10, 0x22, 0x61, 0x13, 0x52, 0x21, 0x12, 0x62, 0x21, 0x11, 0x62, 0x41, 
+        0x10, 0x52, 0x41, 0x11, 0x0c, 0x12, 0x00, 0x10, 0x40, 0x00, 0x22, 0xa1, 0x02, 0x01, 0x58, 0x09, 
+        0xe1, 0x20, 0x20, 0xf4, 0x29, 0xd1, 0x0c, 0x14, 0x5d, 0x0f, 0x32, 0xa0, 0x80, 0x08, 0x0d, 0xc0, 
+        0x2c, 0xd1, 0x02, 0x20, 0x3e, 0x3a, 0x22, 0x20, 0x28, 0x21, 0x32, 0xc1, 0x10, 0x29, 0xf1, 0x20, 
+        0x2e, 0xc0, 0x80, 0x22, 0x01, 0x20, 0x28, 0x31, 0xc0, 0x00, 0x00, 0x32, 0xc1, 0x11, 0x0c, 0x04, 
+        0x5d, 0x0f, 0x08, 0x0d, 0xed, 0x02, 0x02, 0x20, 0x3e, 0x2d, 0x0c, 0xc0, 0x00, 0x00, 0x38, 0xd1, 
+        0x08, 0x0d, 0xcd, 0x02, 0x08, 0xd0, 0x0c, 0x12, 0xc0, 0x00, 0x00, 0x22, 0x21, 0x10, 0x38, 0x61, 
+        0x52, 0x01, 0x11, 0x82, 0x21, 0x11, 0x62, 0x01, 0x10, 0x0c, 0x19, 0x80, 0x66, 0xc0, 0x82, 0x21, 
+        0x12, 0x60, 0x69, 0x93, 0x62, 0x41, 0x10, 0x80, 0x55, 0xc0, 0x88, 0xe1, 0x50, 0x59, 0x93, 0x52, 
+        0x41, 0x11, 0x89, 0x01, 0x08, 0x0d, 0x48, 0x51, 0x02, 0x20, 0x12, 0x72, 0xc1, 0x12, 0xc0, 0x00, 
+        0x00, 0x28, 0xf1, 0x02, 0x01, 0x12, 0x2a, 0x2e, 0x80, 0xe0, 0x01, 0x02, 0x01, 0x13, 0xe0, 0xe8, 
+        0x31, 0x2a, 0xee, 0x80, 0x00, 0x01, 0x80, 0xee, 0x01, 0xe0, 0xe8, 0x31, 0x00, 0x08, 0x31, 0x00, 
+        0xcc, 0xc0, 0x08, 0x0d, 0x80, 0xcc, 0x01, 0x08, 0xc0, 0xc0, 0xc8, 0x31, 0xc0, 0x00, 0x00, 0x32, 
+        0x21, 0x13, 0x0b, 0x33, 0x32, 0x61, 0x13, 0x56, 0xb3, 0xf4, 0x22, 0x01, 0x12, 0x08, 0x0d, 0x80, 
+        0x22, 0x01, 0x08, 0x00, 0x20, 0x28, 0x31, 0xc0, 0x00, 0x00, 0xe6, 0x52, 0x12, 0x22, 0x01, 0x13, 
+        0x08, 0x0d, 0x80, 0x22, 0x01, 0x08, 0x00, 0x20, 0x28, 0x31, 0xc0, 0x00, 0x00, 0xa6, 0x52, 0x17, 
+        0x71, 0xb4, 0xff, 0x41, 0x9b, 0xfb, 0x61, 0xb3, 0xff, 0x38, 0x04, 0x52, 0x06, 0x00, 0x70, 0x33, 
+        0x20, 0x1b, 0x55, 0x52, 0x46, 0x00, 0x39, 0x04, 0x0c, 0xf2, 0x7c, 0x10, 0x07, 0x2e, 0x01, 0x0d, 
+        0x0e, 0x07, 0x22, 0x01, 0x2d, 0x00, 0x6c, 0x10, 0x80, 0xe2, 0x01, 0xe0, 0xe8, 0x31, 0x1c, 0xf2, 
+        0x07, 0x2c, 0x01, 0x0d, 0x0c, 0x07, 0x22, 0x01, 0x2d, 0x00, 0x32, 0xc1, 0x10, 0x0c, 0x14, 0x5d, 
+        0x0f, 0x80, 0xc2, 0x01, 0x08, 0x0d, 0xc0, 0xc8, 0x31, 0x02, 0x20, 0x3e, 0x2d, 0x0e, 0xc0, 0x00, 
+        0x00, 0x5d, 0x0f, 0x2d, 0x0c, 0x08, 0x0d, 0x32, 0xc1, 0x11, 0x02, 0x20, 0x3e, 0x0c, 0x04, 0xc0, 
+        0x00, 0x00, 0x08, 0x81, 0xd8, 0xa1, 0xf8, 0xc1, 0x38, 0x71, 0x22, 0x21, 0x14, 0xe2, 0x43, 0x00, 
+        0xc2, 0x42, 0x00, 0xe8, 0xb1, 0xc8, 0x91, 0x12, 0xc1, 0x50, 0x0d, 0xf0, 0x9d, 0x05, 0xad, 0x03, 
+        0x12, 0xc1, 0xb0, 0xd9, 0xe1, 0xe9, 0xf1, 0x79, 0x81, 0x0c, 0x03, 0x0c, 0x05, 0xf2, 0x61, 0x10, 
+        0x09, 0xc1, 0xc9, 0xd1, 0x62, 0x61, 0x13, 0x29, 0x51, 0x49, 0x61, 0x22, 0xa0, 0x77, 0x1c, 0x04, 
+        0x0c, 0x06, 0xc1, 0xe0, 0xe9, 0xa2, 0x61, 0x11, 0x08, 0x0c, 0x92, 0x61, 0x12, 0x02, 0x20, 0x25, 
+        0xf2, 0x21, 0x13, 0xc0, 0x00, 0x00, 0x0c, 0x03, 0x0c, 0xf4, 0x0c, 0x65, 0x0c, 0x66, 0x08, 0x0c, 
+        0xed, 0x02, 0x02, 0x20, 0x25, 0x22, 0xa0, 0x77, 0xc0, 0x00, 0x00, 0x0c, 0x03, 0x1c, 0x84, 0x0c, 
+        0x55, 0x0c, 0x56, 0x08, 0x0c, 0xdd, 0x02, 0x02, 0x20, 0x25, 0x22, 0xa0, 0x77, 0xc0, 0x00, 0x00, 
+        0x0c, 0x03, 0x1c, 0x84, 0x0c, 0x35, 0x0c, 0x36, 0x08, 0x0c, 0x29, 0x91, 0x02, 0x20, 0x25, 0x22, 
+        0xa0, 0x77, 0xc0, 0x00, 0x00, 0x0c, 0x03, 0x0c, 0x94, 0x0c, 0x75, 0x0c, 0x06, 0x08, 0x0c, 0x29, 
+        0xa1, 0x02, 0x20, 0x25, 0x22, 0xa0, 0x77, 0xc0, 0x00, 0x00, 0x08, 0x0c, 0x29, 0x71, 0x02, 0x20, 
+        0x10, 0x0c, 0x12, 0xc0, 0x00, 0x00, 0xe2, 0x41, 0x10, 0xd2, 0x41, 0x11, 0x8c, 0xcf, 0x08, 0x0c, 
+        0x22, 0xc1, 0x10, 0x02, 0x20, 0x45, 0x32, 0xc1, 0x11, 0xc0, 0x00, 0x00, 0x22, 0xa0, 0x77, 0x0c, 
+        0x03, 0x1c, 0x04, 0x0c, 0x25, 0x08, 0x0c, 0x0c, 0x26, 0x02, 0x20, 0x27, 0x0c, 0x17, 0xc0, 0x00, 
+        0x00, 0xe9, 0xb1, 0x22, 0xa0, 0x77, 0x0c, 0x03, 0x1c, 0x84, 0x0c, 0x75, 0x08, 0x0c, 0x0c, 0x17, 
+        0x92, 0x01, 0x10, 0x82, 0x01, 0x11, 0xe0, 0x99, 0xc0, 0xd0, 0x88, 0xc0, 0x80, 0x87, 0x93, 0x90, 
+        0x97, 0x93, 0x92, 0x41, 0x10, 0x82, 0x41, 0x11, 0x02, 0x20, 0x27, 0x0c, 0x76, 0xc0, 0x00, 0x00, 
+        0x08, 0x0c, 0xe2, 0x21, 0x11, 0x02, 0x20, 0x14, 0x28, 0x61, 0xc0, 0x00, 0x00, 0x0c, 0x05, 0x0c, 
+        0x06, 0x0c, 0x07, 0x4d, 0x02, 0x0c, 0x03, 0x39, 0x21, 0x39, 0x11, 0x39, 0x01, 0x08, 0x0c, 0x0c, 
+        0x12, 0x02, 0x20, 0x1a, 0x3d, 0x0e, 0xc0, 0x00, 0x00, 0x28, 0x51, 0x78, 0x81, 0x62, 0xc1, 0x13, 
+        0x42, 0x01, 0x11, 0x58, 0x91, 0x32, 0x01, 0x10, 0xed, 0x05, 0xf9, 0x11, 0x69, 0x01, 0x79, 0x21, 
+        0x72, 0xc1, 0x12, 0x08, 0x0c, 0x68, 0xa1, 0x02, 0x20, 0x43, 0xfd, 0x06, 0xc0, 0x00, 0x00, 0x08, 
+        0x0c, 0x02, 0x20, 0x1b, 0x0c, 0x12, 0xc0, 0x00, 0x00, 0x78, 0xb1, 0x22, 0xa0, 0x77, 0x0c, 0x03, 
+        0x1c, 0x04, 0x08, 0x0c, 0x0c, 0x05, 0x02, 0x20, 0x27, 0x0c, 0x06, 0xc0, 0x00, 0x00, 0x7d, 0x0d, 
+        0x22, 0xa0, 0x77, 0x0c, 0x03, 0x0c, 0xf4, 0x08, 0x0c, 0x0c, 0x65, 0x02, 0x20, 0x27, 0x0c, 0x66, 
+        0xc0, 0x00, 0x00, 0x7d, 0x0e, 0x22, 0xa0, 0x77, 0x0c, 0x03, 0x1c, 0x84, 0x08, 0x0c, 0x0c, 0x55, 
+        0x02, 0x20, 0x27, 0x0c, 0x56, 0xc0, 0x00, 0x00, 0x7d, 0x0f, 0x22, 0xa0, 0x77, 0x0c, 0x03, 0x1c, 
+        0x84, 0x0c, 0x35, 0x08, 0x0c, 0x0c, 0x36, 0x02, 0x20, 0x27, 0xd8, 0x71, 0xc0, 0x00, 0x00, 0x7d, 
+        0x0d, 0x22, 0xa0, 0x77, 0x0c, 0x03, 0x0c, 0x94, 0x08, 0x0c, 0x0c, 0x75, 0x02, 0x20, 0x27, 0x0c, 
+        0x06, 0xc0, 0x00, 0x00, 0x22, 0xa0, 0x77, 0x0c, 0x03, 0x1c, 0x84, 0x0c, 0x75, 0x08, 0x0c, 0x0c, 
+        0x76, 0x02, 0x20, 0x27, 0x0c, 0x07, 0xc0, 0x00, 0x00, 0x22, 0xa0, 0x77, 0x0c, 0x03, 0x1c, 0x04, 
+        0x0c, 0x25, 0x08, 0x0c, 0x0c, 0x26, 0x02, 0x20, 0x27, 0x0c, 0x07, 0xc0, 0x00, 0x00, 0x08, 0x0c, 
+        0xd2, 0x21, 0x12, 0x02, 0x20, 0x10, 0x0c, 0x02, 0xc0, 0x00, 0x00, 0x08, 0xc1, 0xc8, 0xd1, 0xe8, 
+        0xf1, 0x32, 0x01, 0x12, 0xf2, 0x21, 0x10, 0x32, 0x4d, 0x00, 0x22, 0x01, 0x13, 0x22, 0x4d, 0x01, 
+        0xd8, 0xe1, 0x12, 0xc1, 0x50, 0x0d, 0xf0, 0x00, 0x0d, 0xf0, 0x00, 0x00, 0x0d, 0xf0, 0x00, 0x00, 
+        0x31, 0x23, 0xec, 0x0c, 0x02, 0x29, 0x13, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x06, 0xf2, 0x3f, 
+        0x0c, 0x02, 0x31, 0xfe, 0xff, 0xc0, 0x20, 0x00, 0x22, 0x63, 0x80, 0xc0, 0x20, 0x00, 0x22, 0x63, 
+        0x83, 0x0d, 0xf0, 0x00, 0xb4, 0x63, 0x10, 0x40, 0xc4, 0x0d, 0xf2, 0x3f, 0xf0, 0x0c, 0xf2, 0x3f, 
+        0x1c, 0x0d, 0xf2, 0x3f, 0x34, 0x0d, 0xf2, 0x3f, 0x4c, 0x0d, 0xf2, 0x3f, 0x64, 0x0d, 0xf2, 0x3f, 
+        0x7c, 0x0d, 0xf2, 0x3f, 0x94, 0x0d, 0xf2, 0x3f, 0xac, 0x0d, 0xf2, 0x3f, 0xc8, 0x0c, 0xf2, 0x3f, 
+        0xdc, 0x0c, 0xf2, 0x3f, 0x1c, 0xc3, 0x37, 0xb2, 0x5e, 0x51, 0xf2, 0xff, 0x20, 0x42, 0x90, 0x5a, 
+        0x44, 0xa0, 0x04, 0x00, 0x06, 0x14, 0x00, 0x86, 0x14, 0x00, 0x06, 0x1f, 0x00, 0x06, 0x1d, 0x00, 
+        0x06, 0x11, 0x00, 0x46, 0x10, 0x00, 0x86, 0x0f, 0x00, 0xc6, 0x0e, 0x00, 0x06, 0x0e, 0x00, 0x46, 
+        0x0d, 0x00, 0x86, 0x0c, 0x00, 0xc6, 0x15, 0x00, 0xc6, 0x13, 0x00, 0xc6, 0x11, 0x00, 0xc6, 0x0f, 
+        0x00, 0xc6, 0x0d, 0x00, 0xc6, 0x0b, 0x00, 0xc6, 0x09, 0x00, 0x86, 0x06, 0x00, 0xc6, 0x05, 0x00, 
+        0x06, 0x05, 0x00, 0x46, 0x0e, 0x00, 0x46, 0x0c, 0x00, 0x46, 0x0a, 0x00, 0x46, 0x08, 0x00, 0x46, 
+        0x06, 0x00, 0x46, 0x04, 0x00, 0x46, 0x02, 0x00, 0x21, 0xdc, 0xff, 0x0d, 0xf0, 0x21, 0xdb, 0xff, 
+        0x0d, 0xf0, 0x21, 0xdb, 0xff, 0x0d, 0xf0, 0x21, 0xdb, 0xff, 0x0d, 0xf0, 0x21, 0xdb, 0xff, 0x0d, 
+        0xf0, 0x21, 0xda, 0xff, 0x0d, 0xf0, 0x21, 0xda, 0xff, 0x0d, 0xf0, 0x21, 0xda, 0xff, 0x0d, 0xf0, 
+        0x21, 0xda, 0xff, 0x0d, 0xf0, 0x21, 0xd9, 0xff, 0x0d, 0xf0, 0x21, 0xd9, 0xff, 0x0d, 0xf0, 0x00, 
+        0x80, 0x64, 0x10, 0x40, 0xc8, 0x0d, 0xf2, 0x3f, 0xf4, 0x0c, 0xf2, 0x3f, 0x20, 0x0d, 0xf2, 0x3f, 
+        0x38, 0x0d, 0xf2, 0x3f, 0x50, 0x0d, 0xf2, 0x3f, 0x68, 0x0d, 0xf2, 0x3f, 0x80, 0x0d, 0xf2, 0x3f, 
+        0x98, 0x0d, 0xf2, 0x3f, 0xb0, 0x0d, 0xf2, 0x3f, 0xcc, 0x0c, 0xf2, 0x3f, 0xe0, 0x0c, 0xf2, 0x3f, 
+        0x1c, 0xc3, 0x37, 0xb2, 0x5e, 0x51, 0xf2, 0xff, 0x20, 0x42, 0x90, 0x5a, 0x44, 0xa0, 0x04, 0x00, 
+        0x06, 0x14, 0x00, 0x86, 0x14, 0x00, 0x06, 0x1f, 0x00, 0x06, 0x1d, 0x00, 0x06, 0x11, 0x00, 0x46, 
+        0x10, 0x00, 0x86, 0x0f, 0x00, 0xc6, 0x0e, 0x00, 0x06, 0x0e, 0x00, 0x46, 0x0d, 0x00, 0x86, 0x0c, 
+        0x00, 0xc6, 0x15, 0x00, 0xc6, 0x13, 0x00, 0xc6, 0x11, 0x00, 0xc6, 0x0f, 0x00, 0xc6, 0x0d, 0x00, 
+        0xc6, 0x0b, 0x00, 0xc6, 0x09, 0x00, 0x86, 0x06, 0x00, 0xc6, 0x05, 0x00, 0x06, 0x05, 0x00, 0x46, 
+        0x0e, 0x00, 0x46, 0x0c, 0x00, 0x46, 0x0a, 0x00, 0x46, 0x08, 0x00, 0x46, 0x06, 0x00, 0x46, 0x04, 
+        0x00, 0x46, 0x02, 0x00, 0x21, 0xdc, 0xff, 0x0d, 0xf0, 0x21, 0xdb, 0xff, 0x0d, 0xf0, 0x21, 0xdb, 
+        0xff, 0x0d, 0xf0, 0x21, 0xdb, 0xff, 0x0d, 0xf0, 0x21, 0xdb, 0xff, 0x0d, 0xf0, 0x21, 0xda, 0xff, 
+        0x0d, 0xf0, 0x21, 0xda, 0xff, 0x0d, 0xf0, 0x21, 0xda, 0xff, 0x0d, 0xf0, 0x21, 0xda, 0xff, 0x0d, 
+        0xf0, 0x21, 0xd9, 0xff, 0x0d, 0xf0, 0x21, 0xd9, 0xff, 0x0d, 0xf0, 0x00, 0x4c, 0x65, 0x10, 0x40, 
+        0xcc, 0x0d, 0xf2, 0x3f, 0xf8, 0x0c, 0xf2, 0x3f, 0x24, 0x0d, 0xf2, 0x3f, 0x3c, 0x0d, 0xf2, 0x3f, 
+        0x54, 0x0d, 0xf2, 0x3f, 0x6c, 0x0d, 0xf2, 0x3f, 0x84, 0x0d, 0xf2, 0x3f, 0x9c, 0x0d, 0xf2, 0x3f, 
+        0xb4, 0x0d, 0xf2, 0x3f, 0xd0, 0x0c, 0xf2, 0x3f, 0xe4, 0x0c, 0xf2, 0x3f, 0x1c, 0xc3, 0x37, 0xb2, 
+        0x5e, 0x51, 0xf2, 0xff, 0x20, 0x42, 0x90, 0x5a, 0x44, 0xa0, 0x04, 0x00, 0x06, 0x14, 0x00, 0x86, 
+        0x14, 0x00, 0x06, 0x1f, 0x00, 0x06, 0x1d, 0x00, 0x06, 0x11, 0x00, 0x46, 0x10, 0x00, 0x86, 0x0f, 
+        0x00, 0xc6, 0x0e, 0x00, 0x06, 0x0e, 0x00, 0x46, 0x0d, 0x00, 0x86, 0x0c, 0x00, 0xc6, 0x15, 0x00, 
+        0xc6, 0x13, 0x00, 0xc6, 0x11, 0x00, 0xc6, 0x0f, 0x00, 0xc6, 0x0d, 0x00, 0xc6, 0x0b, 0x00, 0xc6, 
+        0x09, 0x00, 0x86, 0x06, 0x00, 0xc6, 0x05, 0x00, 0x06, 0x05, 0x00, 0x46, 0x0e, 0x00, 0x46, 0x0c, 
+        0x00, 0x46, 0x0a, 0x00, 0x46, 0x08, 0x00, 0x46, 0x06, 0x00, 0x46, 0x04, 0x00, 0x46, 0x02, 0x00, 
+        0x21, 0xdc, 0xff, 0x0d, 0xf0, 0x21, 0xdb, 0xff, 0x0d, 0xf0, 0x21, 0xdb, 0xff, 0x0d, 0xf0, 0x21, 
+        0xdb, 0xff, 0x0d, 0xf0, 0x21, 0xdb, 0xff, 0x0d, 0xf0, 0x21, 0xda, 0xff, 0x0d, 0xf0, 0x21, 0xda, 
+        0xff, 0x0d, 0xf0, 0x21, 0xda, 0xff, 0x0d, 0xf0, 0x21, 0xda, 0xff, 0x0d, 0xf0, 0x21, 0xd9, 0xff, 
+        0x0d, 0xf0, 0x21, 0xd9, 0xff, 0x0d, 0xf0, 0x00, 0xc0, 0x0d, 0xf2, 0x3f, 0x18, 0x0d, 0xf2, 0x3f, 
+        0xa8, 0x0d, 0xf2, 0x3f, 0x90, 0x0d, 0xf2, 0x3f, 0x78, 0x0d, 0xf2, 0x3f, 0x60, 0x0d, 0xf2, 0x3f, 
+        0x48, 0x0d, 0xf2, 0x3f, 0x30, 0x0d, 0xf2, 0x3f, 0x26, 0x92, 0x1e, 0x0c, 0xb3, 0x37, 0x12, 0x23, 
+        0x26, 0xa2, 0x25, 0x0c, 0xd4, 0x47, 0x12, 0x25, 0x0c, 0xe5, 0x57, 0x12, 0x25, 0x0c, 0xf6, 0x67, 
+        0x12, 0x25, 0x26, 0xb2, 0x27, 0x1c, 0x17, 0x77, 0x12, 0x04, 0x21, 0xef, 0xff, 0x0d, 0xf0, 0x21, 
+        0xef, 0xff, 0x0d, 0xf0, 0x21, 0xef, 0xff, 0x0d, 0xf0, 0x21, 0xee, 0xff, 0x0d, 0xf0, 0x21, 0xee, 
+        0xff, 0x0d, 0xf0, 0x21, 0xee, 0xff, 0x0d, 0xf0, 0x21, 0xee, 0xff, 0x0d, 0xf0, 0x21, 0xed, 0xff, 
+        0x0d, 0xf0, 0x00, 0x00, 0xc0, 0x20, 0x00, 0x39, 0x02, 0x0d, 0xf0, 0x00, 0x00, 0xb9, 0x00, 0x01, 
+        0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x07, 0x00, 0x90, 0x02, 0x00, 0x00, 0x90, 0xfe, 0x3f, 
+        0x04, 0x90, 0xfe, 0x3f, 0x00, 0x94, 0xfe, 0x3f, 0x08, 0x90, 0xfe, 0x3f, 0x10, 0x90, 0xfe, 0x3f, 
+        0x14, 0x90, 0xfe, 0x3f, 0x00, 0x9c, 0xfe, 0x3f, 0x18, 0x90, 0xfe, 0x3f, 0x20, 0x90, 0xfe, 0x3f, 
+        0x24, 0x90, 0xfe, 0x3f, 0x00, 0xa2, 0xfe, 0x3f, 0x28, 0x90, 0xfe, 0x3f, 0x30, 0x90, 0xfe, 0x3f, 
+        0x34, 0x90, 0xfe, 0x3f, 0x00, 0x9d, 0xfe, 0x3f, 0x38, 0x90, 0xfe, 0x3f, 0x10, 0x81, 0xfe, 0x3f, 
+        0x82, 0xa0, 0xf0, 0x80, 0x11, 0xc0, 0xe2, 0x61, 0x33, 0xf2, 0x61, 0x34, 0x22, 0x61, 0x36, 0x32, 
+        0x61, 0x39, 0x72, 0x61, 0x2f, 0x62, 0x61, 0x2e, 0x02, 0x61, 0x30, 0xc2, 0x61, 0x31, 0xd2, 0x61, 
+        0x32, 0xcd, 0x05, 0xdd, 0x04, 0x85, 0xc9, 0xff, 0xe2, 0x21, 0x36, 0xe0, 0xe0, 0x74, 0x2d, 0x0e, 
+        0x05, 0xcd, 0xff, 0xfd, 0x02, 0x2d, 0x0e, 0x85, 0xd9, 0xff, 0x22, 0x61, 0x35, 0xf2, 0x61, 0x2d, 
+        0x2d, 0x0e, 0x85, 0xe5, 0xff, 0xfd, 0x02, 0x2d, 0x0e, 0xc5, 0xf0, 0xff, 0x0c, 0x03, 0xf2, 0x61, 
+        0x2c, 0x05, 0xf5, 0xff, 0x80, 0x5d, 0x11, 0x02, 0x21, 0x39, 0xf2, 0x21, 0x40, 0x42, 0x21, 0x3d, 
+        0x32, 0x21, 0x3e, 0x00, 0x44, 0x11, 0x90, 0x33, 0x01, 0x10, 0xff, 0x01, 0x00, 0x20, 0x34, 0x5a, 
+        0x22, 0x2a, 0xff, 0xf6, 0xb0, 0x1c, 0x22, 0x21, 0x35, 0x3a, 0x34, 0x40, 0x50, 0x11, 0xd0, 0x40, 
+        0xb4, 0x5a, 0x44, 0x4a, 0x33, 0xc5, 0xf1, 0xff, 0x3d, 0x0f, 0x22, 0x21, 0x2c, 0x45, 0xf1, 0xff, 
+        0x06, 0x1d, 0x00, 0x30, 0x74, 0x20, 0x81, 0xc5, 0xff, 0x31, 0xc5, 0xff, 0x80, 0x77, 0x20, 0xc0, 
+        0x20, 0x00, 0x82, 0x21, 0x35, 0x1c, 0x36, 0x79, 0x08, 0xe7, 0xb6, 0x1e, 0x6c, 0xfe, 0x3a, 0x3f, 
+        0x22, 0x21, 0x2c, 0x05, 0xef, 0xff, 0xc0, 0x20, 0x00, 0xa1, 0xe3, 0xea, 0x92, 0x2a, 0xa2, 0xe0, 
+        0x99, 0x10, 0xc0, 0x20, 0x00, 0x92, 0x6a, 0xa2, 0x06, 0x0f, 0x00, 0xa2, 0x21, 0x36, 0xa0, 0xa8, 
+        0x74, 0xec, 0x0a, 0x6c, 0xfe, 0x31, 0xb7, 0xff, 0x22, 0x21, 0x2c, 0x3a, 0x3f, 0x45, 0xec, 0xff, 
+        0xc0, 0x20, 0x00, 0x51, 0xd9, 0xea, 0x42, 0x25, 0xa2, 0xe0, 0x44, 0x10, 0xc0, 0x20, 0x00, 0x42, 
+        0x65, 0xa2, 0x86, 0x04, 0x00, 0x3a, 0x3f, 0x22, 0x21, 0x2c, 0x85, 0xea, 0xff, 0x1c, 0x05, 0xc0, 
+        0x20, 0x00, 0x61, 0xd1, 0xea, 0x52, 0x66, 0xa2, 0xfc, 0x5c, 0x72, 0x21, 0x2e, 0xfc, 0x07, 0x92, 
+        0x21, 0x3c, 0x82, 0x21, 0x2f, 0x92, 0x61, 0x37, 0xec, 0xb8, 0xec, 0x99, 0x41, 0x2f, 0xfc, 0x32, 
+        0x21, 0x3f, 0x22, 0x21, 0x2d, 0x40, 0x33, 0x10, 0x85, 0xe7, 0xff, 0xc2, 0x21, 0x31, 0xd2, 0x21, 
+        0x32, 0xe2, 0x21, 0x33, 0xf2, 0x21, 0x34, 0x22, 0xa0, 0xf0, 0x02, 0x21, 0x30, 0x2a, 0x11, 0x0d, 
+        0xf0, 0x42, 0x21, 0x3c, 0x42, 0x61, 0x37, 0x22, 0x21, 0x2d, 0x31, 0x9b, 0xff, 0x45, 0xe5, 0xff, 
+        0x52, 0x21, 0x37, 0x16, 0x35, 0x11, 0x0c, 0x4e, 0x86, 0x00, 0x00, 0xe2, 0xa0, 0x03, 0x21, 0x97, 
+        0xff, 0x40, 0x4c, 0x11, 0x52, 0xce, 0xff, 0xf1, 0xd8, 0xed, 0x31, 0x3d, 0xef, 0x32, 0x61, 0x38, 
+        0x50, 0x3f, 0x83, 0x40, 0x33, 0x80, 0x3a, 0x3c, 0x85, 0xe2, 0xff, 0x21, 0x91, 0xff, 0x31, 0x91, 
+        0xff, 0x05, 0xe2, 0xff, 0x21, 0x91, 0xff, 0x31, 0x91, 0xff, 0x85, 0xe1, 0xff, 0x21, 0x8f, 0xff, 
+        0x62, 0xce, 0xfe, 0x32, 0x21, 0x2e, 0x42, 0x21, 0x38, 0x40, 0x53, 0x11, 0x60, 0x4f, 0x83, 0x5a, 
+        0x44, 0x4a, 0x33, 0x05, 0xe0, 0xff, 0x21, 0x8a, 0xff, 0x31, 0x8a, 0xff, 0x45, 0xdf, 0xff, 0x21, 
+        0x8a, 0xff, 0x31, 0x8a, 0xff, 0xc5, 0xde, 0xff, 0x21, 0x89, 0xff, 0x62, 0xce, 0xfd, 0x32, 0x21, 
+        0x2f, 0x42, 0x21, 0x38, 0x40, 0x53, 0x11, 0x60, 0x4f, 0x83, 0x5a, 0x44, 0x4a, 0x33, 0x45, 0xdd, 
+        0xff, 0x21, 0x83, 0xff, 0x31, 0x84, 0xff, 0xc5, 0xdc, 0xff, 0x21, 0x83, 0xff, 0x31, 0x83, 0xff, 
+        0x05, 0xdc, 0xff, 0x21, 0x82, 0xff, 0x62, 0xce, 0xfc, 0x32, 0x21, 0x37, 0x42, 0x21, 0x38, 0x40, 
+        0x53, 0x11, 0x60, 0x4f, 0x83, 0x5a, 0x44, 0x4a, 0x33, 0x85, 0xda, 0xff, 0x21, 0x7d, 0xff, 0x31, 
+        0x7d, 0xff, 0x05, 0xda, 0xff, 0x21, 0x7c, 0xff, 0x0c, 0x03, 0x85, 0xd9, 0xff, 0x2d, 0x01, 0x31, 
+        0x7b, 0xff, 0x42, 0xa0, 0xb0, 0x45, 0x5d, 0x03, 0x16, 0xfd, 0xf0, 0x2d, 0x01, 0x0c, 0x00, 0xb1, 
+        0x75, 0xff, 0xa1, 0x70, 0xff, 0x51, 0x6b, 0xff, 0x41, 0x67, 0xff, 0x62, 0x21, 0x2e, 0x72, 0x21, 
+        0x2f, 0x6a, 0x6c, 0x7a, 0x76, 0xc7, 0xb0, 0x09, 0x88, 0x02, 0x82, 0x44, 0x00, 0x1b, 0x44, 0x46, 
+        0x07, 0x00, 0x00, 0x30, 0x74, 0x67, 0xb0, 0x07, 0x32, 0x45, 0x00, 0x1b, 0x55, 0xc6, 0x03, 0x00, 
+        0x77, 0xb0, 0x07, 0x32, 0x4a, 0x00, 0x1b, 0xaa, 0x06, 0x01, 0x00, 0x32, 0x4b, 0x00, 0x1b, 0xbb, 
+        0x4b, 0x22, 0x1b, 0x00, 0x07, 0x9d, 0xcd, 0x06, 0xb0, 0xff, 0x92, 0x21, 0x2f, 0x56, 0xa9, 0xee, 
+        0xb2, 0x21, 0x2e, 0x0c, 0x2a, 0x0c, 0x1e, 0xb0, 0xea, 0x93, 0x06, 0xb8, 0xff, 0x00, 0x00, 0x00, 
+        0x02, 0x00, 0x00, 0x40, 0x20, 0x86, 0xfe, 0x3f, 0x54, 0x86, 0xfe, 0x3f, 0x00, 0xfe, 0xf1, 0x3f, 
+        0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xff, 0xff, 0x70, 0x86, 0xfe, 0x3f, 0xa0, 0x86, 0xfe, 0x3f, 
+        0x12, 0xc1, 0xf0, 0xc2, 0x61, 0x01, 0x02, 0x61, 0x00, 0x20, 0xc2, 0x20, 0x45, 0x08, 0x02, 0x2d, 
+        0x0c, 0x05, 0xa5, 0xff, 0xa1, 0xf3, 0xff, 0x0d, 0x02, 0xc1, 0x63, 0xea, 0x21, 0x35, 0xf1, 0xc0, 
+        0x20, 0x00, 0xa2, 0x6c, 0x82, 0x0c, 0x49, 0xc0, 0x20, 0x00, 0x82, 0x2c, 0x86, 0x90, 0x88, 0x20, 
+        0xc0, 0x20, 0x00, 0x82, 0x6c, 0x86, 0x0c, 0x37, 0xc0, 0x20, 0x00, 0x62, 0x2c, 0x89, 0x70, 0x66, 
+        0x20, 0xc0, 0x20, 0x00, 0x62, 0x6c, 0x89, 0x7c, 0x05, 0xc0, 0x20, 0x00, 0x42, 0x2c, 0x86, 0x50, 
+        0x44, 0x10, 0xc0, 0x20, 0x00, 0x42, 0x6c, 0x86, 0x32, 0x02, 0x59, 0x66, 0x13, 0x45, 0x09, 0x21, 
+        0x32, 0x02, 0x55, 0x42, 0x02, 0x57, 0x52, 0x02, 0x58, 0x80, 0x44, 0x11, 0x50, 0x44, 0x20, 0x52, 
+        0x02, 0x56, 0x80, 0x33, 0x01, 0x00, 0x55, 0x11, 0x50, 0x33, 0x20, 0x40, 0x33, 0x20, 0x9c, 0x43, 
+        0x21, 0xd9, 0xff, 0xc0, 0x20, 0x00, 0x48, 0x03, 0x01, 0xaa, 0xe5, 0xc0, 0x00, 0x00, 0x08, 0x21, 
+        0x21, 0x18, 0xf1, 0x46, 0x03, 0x00, 0x21, 0xd4, 0xff, 0x01, 0xa5, 0xe5, 0xc0, 0x00, 0x00, 0x08, 
+        0x21, 0x21, 0x13, 0xf1, 0x0c, 0x06, 0x0c, 0x23, 0x91, 0xd1, 0xff, 0xc0, 0x20, 0x00, 0x62, 0x69, 
+        0x9b, 0x7c, 0xd5, 0xc0, 0x20, 0x00, 0x42, 0x2c, 0xa2, 0x50, 0x44, 0x10, 0xc0, 0x20, 0x00, 0x42, 
+        0x6c, 0xa2, 0x7c, 0x7b, 0xc0, 0x20, 0x00, 0xa2, 0x2c, 0xa2, 0xb0, 0xaa, 0x10, 0xc0, 0x20, 0x00, 
+        0xa2, 0x6c, 0xa2, 0x6c, 0xf8, 0xc0, 0x20, 0x00, 0x72, 0x2c, 0xa2, 0x80, 0x77, 0x10, 0xc0, 0x20, 
+        0x00, 0x72, 0x6c, 0xa2, 0x61, 0xc3, 0xff, 0xc0, 0x20, 0x00, 0x52, 0x2c, 0xa2, 0x60, 0x55, 0x10, 
+        0xc0, 0x20, 0x00, 0x52, 0x6c, 0xa2, 0x41, 0xdf, 0xf6, 0xc0, 0x20, 0x00, 0xb2, 0x29, 0x80, 0x40, 
+        0xbb, 0x20, 0xc0, 0x20, 0x00, 0xb2, 0x69, 0x80, 0xa1, 0xbb, 0xff, 0xc0, 0x20, 0x00, 0x82, 0x29, 
+        0x9c, 0xa0, 0x88, 0x10, 0xc0, 0x20, 0x00, 0x82, 0x69, 0x9c, 0x71, 0x43, 0xed, 0xc0, 0x20, 0x00, 
+        0x68, 0x00, 0x70, 0x66, 0x20, 0xc0, 0x20, 0x00, 0x69, 0x00, 0xc0, 0x20, 0x00, 0x52, 0x2c, 0x87, 
+        0x17, 0xe5, 0x08, 0xc0, 0x20, 0x00, 0x72, 0x2c, 0x87, 0x37, 0x07, 0xf6, 0x82, 0x02, 0x59, 0x66, 
+        0x18, 0x39, 0x32, 0x02, 0x55, 0x42, 0x02, 0x57, 0x52, 0x02, 0x58, 0x80, 0x44, 0x11, 0x50, 0x44, 
+        0x20, 0x52, 0x02, 0x56, 0x80, 0x33, 0x01, 0x00, 0x55, 0x11, 0x50, 0x33, 0x20, 0x40, 0x33, 0x20, 
+        0x8c, 0xf3, 0x21, 0xa5, 0xff, 0xc0, 0x20, 0x00, 0x48, 0x03, 0x01, 0x71, 0xe5, 0xc0, 0x00, 0x00, 
+        0x06, 0x02, 0x00, 0x21, 0xa2, 0xff, 0x01, 0x6e, 0xe5, 0xc0, 0x00, 0x00, 0xc8, 0x11, 0x08, 0x01, 
+        0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xfc, 0x00, 0xb0, 0x00, 0x00, 
+        0x12, 0xc1, 0xe0, 0xf9, 0x51, 0x59, 0x01, 0x09, 0x11, 0xd9, 0x31, 0xc9, 0x21, 0xe9, 0x41, 0xcd, 
+        0x03, 0xed, 0x04, 0xdd, 0x02, 0x85, 0x98, 0xff, 0xfd, 0x02, 0x2d, 0x0d, 0xc5, 0xa4, 0xff, 0x31, 
+        0xf6, 0xff, 0x01, 0xc6, 0xef, 0xf6, 0xbc, 0x22, 0x40, 0x5c, 0x11, 0xc0, 0x20, 0x00, 0x48, 0x0f, 
+        0x00, 0x44, 0x10, 0x50, 0x44, 0x20, 0xc0, 0x20, 0x00, 0x49, 0x0f, 0xc0, 0x20, 0x00, 0x28, 0x0f, 
+        0x30, 0x22, 0x10, 0xc0, 0x20, 0x00, 0x29, 0x0f, 0x86, 0x0e, 0x00, 0xa1, 0xec, 0xff, 0xc0, 0x20, 
+        0x00, 0x98, 0x0f, 0x00, 0x99, 0x10, 0xa0, 0x99, 0x20, 0xc0, 0x20, 0x00, 0x99, 0x0f, 0x91, 0x33, 
+        0xfa, 0xc0, 0x20, 0x00, 0x88, 0x0f, 0x30, 0x88, 0x10, 0x90, 0x88, 0x20, 0xc0, 0x20, 0x00, 0x89, 
+        0x0f, 0x7c, 0x07, 0xc0, 0x60, 0x34, 0xc0, 0x20, 0x00, 0x58, 0x02, 0x70, 0x55, 0x10, 0x60, 0x55, 
+        0x20, 0xc0, 0x20, 0x00, 0x59, 0x02, 0x9c, 0x7e, 0xf8, 0x01, 0x0c, 0x0c, 0xf0, 0xf0, 0xf4, 0x2d, 
+        0x0d, 0xc5, 0xdd, 0xff, 0x2d, 0x0f, 0x01, 0xda, 0xe6, 0xc0, 0x00, 0x00, 0x1b, 0xcc, 0xe7, 0x9c, 
+        0xed, 0xc8, 0x21, 0xd8, 0x31, 0xe8, 0x41, 0xf8, 0x51, 0x08, 0x11, 0x12, 0xc1, 0x20, 0x0d, 0xf0, 
+        0x00, 0x60, 0x09, 0x00, 0x12, 0xc1, 0xe0, 0xc2, 0x61, 0x01, 0xd2, 0x61, 0x02, 0xe9, 0x31, 0xf9, 
+        0x41, 0x09, 0x01, 0x0c, 0xe0, 0x27, 0x30, 0x04, 0x8c, 0x12, 0xc5, 0xde, 0x01, 0x0c, 0x0c, 0xe1, 
+        0xd2, 0xe9, 0xc0, 0x20, 0x00, 0x0c, 0x72, 0x0c, 0x53, 0x51, 0xf5, 0xff, 0x42, 0x2e, 0x80, 0xc5, 
+        0x73, 0xfa, 0x8c, 0x42, 0x22, 0xac, 0xe0, 0x46, 0x02, 0x00, 0x01, 0x4a, 0xe7, 0x08, 0x00, 0x08, 
+        0xa0, 0xc0, 0x00, 0x00, 0xcc, 0x5c, 0xfd, 0x02, 0xdd, 0x02, 0x06, 0x05, 0x00, 0x27, 0xad, 0x04, 
+        0xdd, 0x02, 0x06, 0x03, 0x00, 0x0d, 0x0f, 0xf7, 0xa2, 0x01, 0x0d, 0x02, 0x00, 0xf0, 0x11, 0xf0, 
+        0xf0, 0x31, 0x1b, 0xcc, 0xc0, 0xc0, 0x74, 0x66, 0x5c, 0xb7, 0xe1, 0x91, 0xf0, 0xe2, 0x0e, 0x50, 
+        0x66, 0x1e, 0x11, 0x00, 0x2d, 0x11, 0xf0, 0x00, 0xf4, 0x20, 0x00, 0x20, 0x21, 0xd4, 0xe5, 0xc0, 
+        0x20, 0x00, 0x02, 0x62, 0xff, 0xc8, 0x11, 0xd8, 0x21, 0xe8, 0x31, 0xf8, 0x41, 0x08, 0x01, 0x12, 
+        0xc1, 0x20, 0x0d, 0xf0, 0x32, 0xa0, 0x0e, 0x12, 0xc1, 0xe0, 0xd2, 0x61, 0x02, 0x02, 0x61, 0x00, 
+        0xf9, 0x41, 0xe9, 0x31, 0xc9, 0x11, 0x0c, 0x1e, 0xc1, 0xb0, 0xe9, 0x0c, 0xff, 0xe7, 0x33, 0x06, 
+        0x8c, 0x3e, 0x2d, 0x0e, 0x05, 0xd5, 0x01, 0x0c, 0x0d, 0xc0, 0x20, 0x00, 0x22, 0xa0, 0x07, 0x32, 
+        0xa0, 0x05, 0x42, 0x2c, 0x80, 0x51, 0xce, 0xff, 0x05, 0x6a, 0xfa, 0x20, 0x40, 0x74, 0x16, 0x54, 
+        0x00, 0x22, 0xac, 0xe0, 0x46, 0x02, 0x00, 0x01, 0x23, 0xe7, 0x08, 0x00, 0x08, 0xa0, 0xc0, 0x00, 
+        0x00, 0x1b, 0xdd, 0xd0, 0xd0, 0x74, 0x66, 0x5d, 0xcf, 0x0c, 0xe3, 0x1b, 0xee, 0xe0, 0xe0, 0x74, 
+        0xf7, 0x9e, 0xb9, 0xc8, 0x11, 0xd8, 0x21, 0xe8, 0x31, 0xf8, 0x41, 0x08, 0x01, 0x12, 0xc1, 0x20, 
+        0x0d, 0xf0, 0x00, 0x00, 0x21, 0xb2, 0xe5, 0xc0, 0x20, 0x00, 0x22, 0x22, 0xff, 0x0d, 0xf0, 0x00, 
+        0x10, 0x82, 0xfe, 0x3f, 0x12, 0xc1, 0xd0, 0xf2, 0x61, 0x08, 0x02, 0x61, 0x04, 0xe9, 0x71, 0xc9, 
+        0x51, 0xd9, 0x61, 0xcd, 0x04, 0xdd, 0x02, 0xed, 0x03, 0x2d, 0x01, 0x31, 0xf9, 0xff, 0x1c, 0x04, 
+        0x85, 0x1d, 0x03, 0xf6, 0x3c, 0x12, 0x2d, 0x0d, 0x3d, 0x0e, 0x0c, 0x34, 0xc0, 0x44, 0xc0, 0x05, 
+        0x3d, 0x03, 0xed, 0x03, 0xdd, 0x02, 0x06, 0x04, 0x00, 0xd0, 0x2d, 0x20, 0xe0, 0x3e, 0x20, 0x42, 
+        0xcc, 0xfd, 0xc5, 0x3e, 0x03, 0x30, 0xe3, 0x20, 0xdd, 0x02, 0x3c, 0xfc, 0x0c, 0x1f, 0xf0, 0x2f, 
+        0x20, 0x32, 0xa0, 0x00, 0x4d, 0x0c, 0x85, 0x3a, 0x03, 0x20, 0x2d, 0x10, 0x30, 0x3e, 0x10, 0x4d, 
+        0x0c, 0xc5, 0x3c, 0x03, 0x0c, 0x17, 0x30, 0x37, 0x93, 0x20, 0x27, 0x93, 0x30, 0x62, 0x20, 0xcc, 
+        0x66, 0x0b, 0xcc, 0xc0, 0xc0, 0x74, 0x66, 0x2c, 0xd4, 0xc2, 0xcc, 0xfd, 0x80, 0xcc, 0x01, 0xc0, 
+        0xc8, 0x31, 0xe6, 0x2c, 0x26, 0x08, 0x41, 0xe8, 0x71, 0xf8, 0x81, 0xb0, 0x4c, 0x11, 0xd0, 0x20, 
+        0x34, 0xc0, 0x3c, 0x11, 0xd8, 0x61, 0x1a, 0x22, 0xc8, 0x51, 0x22, 0x02, 0x00, 0x4a, 0x33, 0x3a, 
+        0x22, 0x00, 0x22, 0x11, 0x20, 0x20, 0x31, 0x12, 0xc1, 0x30, 0x0d, 0xf0, 0xd0, 0x2d, 0x20, 0xe0, 
+        0x3e, 0x20, 0x42, 0xcc, 0xff, 0x85, 0x37, 0x03, 0xdd, 0x02, 0xc6, 0xf1, 0xff, 0x00, 0x00, 0x00, 
+        0xbc, 0x86, 0xfe, 0x3f, 0xe4, 0x86, 0xfe, 0x3f, 0x0c, 0x87, 0xfe, 0x3f, 0x24, 0x87, 0xfe, 0x3f, 
+        0xe4, 0xfb, 0x07, 0x00, 0x30, 0x87, 0xfe, 0x3f, 0x58, 0x87, 0xfe, 0x3f, 0x80, 0x87, 0xfe, 0x3f, 
+        0x52, 0xa0, 0xd0, 0x50, 0x11, 0xc0, 0xd2, 0x61, 0x1b, 0xe2, 0x61, 0x1c, 0x02, 0x61, 0x19, 0x22, 
+        0x61, 0x21, 0x32, 0x61, 0x11, 0x42, 0x61, 0x32, 0xc2, 0x61, 0x1a, 0xf2, 0x61, 0x1d, 0xc1, 0x6f, 
+        0xe5, 0xfd, 0x04, 0x16, 0x54, 0x06, 0x21, 0xee, 0xff, 0xc0, 0x20, 0x00, 0x32, 0x2c, 0xe0, 0xc0, 
+        0x20, 0x00, 0x42, 0x2c, 0xe1, 0xc0, 0x20, 0x00, 0x52, 0x2c, 0xe2, 0xc0, 0x20, 0x00, 0x62, 0x2c, 
+        0xe3, 0x01, 0xfb, 0xe6, 0xc0, 0x00, 0x00, 0x21, 0xe7, 0xff, 0xc0, 0x20, 0x00, 0x32, 0x2c, 0xf3, 
+        0xc0, 0x20, 0x00, 0x42, 0x2c, 0xf4, 0xc0, 0x20, 0x00, 0x52, 0x2c, 0xf5, 0xc0, 0x20, 0x00, 0x62, 
+        0x2c, 0xf6, 0x01, 0xf3, 0xe6, 0xc0, 0x00, 0x00, 0x21, 0xe0, 0xff, 0xc0, 0x20, 0x00, 0x32, 0x2c, 
+        0xf7, 0xc0, 0x20, 0x00, 0x42, 0x2c, 0xf8, 0x01, 0xee, 0xe6, 0xc0, 0x00, 0x00, 0x21, 0xdb, 0xff, 
+        0xc0, 0x20, 0x00, 0x32, 0x2c, 0xf9, 0x01, 0xea, 0xe6, 0xc0, 0x00, 0x00, 0xd1, 0xd9, 0xff, 0x0c, 
+        0x0e, 0xc0, 0x20, 0x00, 0x42, 0x2c, 0xe3, 0xc0, 0x20, 0x00, 0x32, 0x2c, 0xe0, 0x5d, 0x0e, 0x4a, 
+        0x33, 0x10, 0x23, 0x11, 0x4d, 0x0d, 0x30, 0x31, 0x31, 0xc5, 0x71, 0x02, 0x39, 0xf1, 0x22, 0x61, 
+        0x26, 0xc0, 0x20, 0x00, 0x42, 0x2c, 0xe2, 0xc0, 0x20, 0x00, 0x32, 0x2c, 0xe1, 0x5d, 0x0e, 0x40, 
+        0x33, 0xc0, 0x10, 0x23, 0x11, 0x4d, 0x0d, 0x30, 0x31, 0x31, 0xc5, 0x6f, 0x02, 0x32, 0x61, 0x10, 
+        0x29, 0xe1, 0xc0, 0x20, 0x00, 0x42, 0x2c, 0xf6, 0xc0, 0x20, 0x00, 0x32, 0x2c, 0xf3, 0x5d, 0x0e, 
+        0x4a, 0x33, 0x10, 0x23, 0x11, 0x4d, 0x0d, 0x30, 0x31, 0x31, 0xc5, 0x6d, 0x02, 0x32, 0x61, 0x1e, 
+        0x22, 0x61, 0x31, 0xc0, 0x20, 0x00, 0x42, 0x2c, 0xf5, 0xc0, 0x20, 0x00, 0x32, 0x2c, 0xf4, 0x5d, 
+        0x0e, 0x40, 0x33, 0xc0, 0x10, 0x23, 0x11, 0x4d, 0x0d, 0x30, 0x31, 0x31, 0x85, 0x6b, 0x02, 0x08, 
+        0xe1, 0x42, 0x21, 0x31, 0xa2, 0x21, 0x10, 0x58, 0xf1, 0x72, 0x21, 0x26, 0xbd, 0x05, 0x1b, 0x67, 
+        0x77, 0xb6, 0x01, 0x1b, 0xb5, 0x7d, 0x0a, 0x1b, 0x50, 0x07, 0xb5, 0x01, 0x1b, 0x7a, 0xa2, 0x21, 
+        0x1e, 0x1b, 0x04, 0x1b, 0x82, 0x82, 0x61, 0x12, 0x47, 0xb0, 0x01, 0x1b, 0xaa, 0x4d, 0x03, 0x27, 
+        0xb8, 0x01, 0x1b, 0x43, 0x22, 0x21, 0x12, 0x00, 0x41, 0x40, 0x50, 0x57, 0x81, 0x00, 0x3a, 0x81, 
+        0x60, 0x9b, 0x81, 0x92, 0x61, 0x23, 0x32, 0x61, 0x2e, 0x52, 0x61, 0x2c, 0x20, 0x24, 0x81, 0x70, 
+        0x01, 0x21, 0x02, 0x61, 0x2b, 0x22, 0x61, 0x1f, 0xb0, 0x51, 0x21, 0x52, 0x61, 0x22, 0x3d, 0x05, 
+        0xa0, 0xb1, 0x21, 0x2d, 0x09, 0x40, 0xa1, 0x21, 0xb2, 0x61, 0x2d, 0x4d, 0x09, 0xa2, 0x61, 0x20, 
+        0xc5, 0x60, 0x02, 0x22, 0x61, 0x28, 0x32, 0x61, 0x27, 0x52, 0x21, 0x2b, 0x42, 0x21, 0x2c, 0x3d, 
+        0x05, 0x2d, 0x04, 0xc5, 0x5f, 0x02, 0x22, 0x61, 0x2a, 0x32, 0x61, 0x29, 0x52, 0x21, 0x2d, 0x42, 
+        0x21, 0x2e, 0x3d, 0x05, 0x2d, 0x04, 0x85, 0x5e, 0x02, 0x22, 0x61, 0x2f, 0x32, 0x61, 0x30, 0x52, 
+        0x21, 0x20, 0x42, 0x21, 0x1f, 0x3d, 0x05, 0x2d, 0x04, 0x45, 0x5d, 0x02, 0x72, 0x21, 0x2f, 0x62, 
+        0x21, 0x28, 0x02, 0x21, 0x29, 0xa2, 0x21, 0x27, 0xb2, 0x21, 0x30, 0x0a, 0xaa, 0x02, 0x21, 0x2a, 
+        0x3a, 0xbb, 0x0a, 0x06, 0x67, 0xb0, 0x01, 0x1b, 0xaa, 0x2a, 0x67, 0x77, 0xb6, 0x01, 0x1b, 0xbb, 
+        0xba, 0xaa, 0x6a, 0xb0, 0xb9, 0xc1, 0x07, 0xbb, 0x01, 0x1b, 0xaa, 0xa9, 0xd1, 0xac, 0xff, 0x52, 
+        0x21, 0x22, 0x42, 0x21, 0x23, 0x72, 0x21, 0x2b, 0x62, 0x21, 0x2c, 0x02, 0x21, 0x2e, 0x22, 0x21, 
+        0x2d, 0x88, 0xc1, 0x98, 0xd1, 0xa2, 0x21, 0x1f, 0xb2, 0x21, 0x20, 0xb9, 0x31, 0xa9, 0x21, 0x99, 
+        0x51, 0x89, 0x41, 0x29, 0x11, 0x09, 0x01, 0x21, 0x77, 0xff, 0x01, 0x85, 0xe6, 0xc0, 0x00, 0x00, 
+        0xc0, 0x20, 0x00, 0x42, 0x2c, 0xe3, 0xc0, 0x20, 0x00, 0x32, 0x2c, 0xe0, 0x5d, 0x0e, 0x40, 0x33, 
+        0xc0, 0x10, 0x23, 0x11, 0x4d, 0x0d, 0x30, 0x31, 0x31, 0xc5, 0x58, 0x02, 0x39, 0xf1, 0x22, 0x61, 
+        0x26, 0xc0, 0x20, 0x00, 0x42, 0x2c, 0xe2, 0xc0, 0x20, 0x00, 0x32, 0x2c, 0xe1, 0x5d, 0x0e, 0x4a, 
+        0x33, 0x10, 0x23, 0x11, 0x4d, 0x0d, 0x30, 0x31, 0x31, 0xc5, 0x56, 0x02, 0x32, 0x61, 0x10, 0x29, 
+        0xe1, 0xc0, 0x20, 0x00, 0x42, 0x2c, 0xf6, 0xc0, 0x20, 0x00, 0x32, 0x2c, 0xf3, 0x5d, 0x0e, 0x40, 
+        0x33, 0xc0, 0x10, 0x23, 0x11, 0x4d, 0x0d, 0x30, 0x31, 0x31, 0xc5, 0x54, 0x02, 0x32, 0x61, 0x1e, 
+        0x22, 0x61, 0x31, 0x5d, 0x0e, 0xc0, 0x20, 0x00, 0x42, 0x2c, 0xf5, 0xc0, 0x20, 0x00, 0x32, 0x2c, 
+        0xf4, 0x4a, 0x33, 0x10, 0x23, 0x11, 0x4d, 0x0d, 0x30, 0x31, 0x31, 0xc5, 0x52, 0x02, 0x02, 0x21, 
+        0x1e, 0x42, 0x21, 0x10, 0xd2, 0x21, 0x31, 0xa8, 0xe1, 0x58, 0xf1, 0x72, 0x21, 0x26, 0xbd, 0x05, 
+        0x1b, 0x67, 0x77, 0xb6, 0x01, 0x1b, 0xb5, 0x7d, 0x04, 0x1b, 0x5a, 0xa7, 0xb5, 0x01, 0x1b, 0x74, 
+        0xad, 0x00, 0xed, 0x03, 0x1b, 0x4d, 0xd7, 0xb4, 0x01, 0x1b, 0xa0, 0x0d, 0x04, 0x1b, 0xd2, 0x27, 
+        0xbd, 0x01, 0x1b, 0xe3, 0x00, 0x41, 0x40, 0xa0, 0x81, 0x21, 0x70, 0x91, 0x21, 0x92, 0x61, 0x2b, 
+        0x82, 0x61, 0x2d, 0x50, 0x27, 0x81, 0x00, 0x0a, 0x81, 0xd0, 0xde, 0x81, 0x60, 0x4b, 0x81, 0x42, 
+        0x61, 0x23, 0xe0, 0xe1, 0x21, 0x02, 0x61, 0x2e, 0x22, 0x61, 0x2c, 0xb0, 0x51, 0x21, 0x52, 0x61, 
+        0x22, 0x3d, 0x05, 0x2d, 0x04, 0x85, 0x48, 0x02, 0x22, 0x61, 0x28, 0x32, 0x61, 0x27, 0x52, 0x21, 
+        0x2b, 0x42, 0x21, 0x2c, 0x3d, 0x05, 0x2d, 0x04, 0x45, 0x47, 0x02, 0x22, 0x61, 0x2a, 0x32, 0x61, 
+        0x29, 0x52, 0x21, 0x2d, 0x42, 0x21, 0x2e, 0x3d, 0x05, 0x2d, 0x04, 0x45, 0x46, 0x02, 0x5d, 0x0e, 
+        0x4d, 0x0d, 0x32, 0x61, 0x30, 0x22, 0x61, 0x2f, 0x3d, 0x0e, 0x2d, 0x0d, 0x05, 0x45, 0x02, 0xb2, 
+        0x21, 0x2f, 0x72, 0x21, 0x30, 0x68, 0xc1, 0x02, 0x21, 0x29, 0xa2, 0x21, 0x27, 0x42, 0x21, 0x28, 
+        0x0a, 0xaa, 0x02, 0x21, 0x2a, 0x58, 0xd1, 0x0a, 0x04, 0x47, 0xb0, 0x01, 0x1b, 0xaa, 0x3a, 0x77, 
+        0x2a, 0x4b, 0xb7, 0xb4, 0x01, 0x1b, 0x77, 0x7a, 0xba, 0x4a, 0xa0, 0x07, 0xba, 0x01, 0x1b, 0xbb, 
+        0x22, 0x21, 0x21, 0x5a, 0x3b, 0xb9, 0x72, 0xa9, 0x62, 0x6a, 0x2a, 0xa7, 0xb2, 0x01, 0x1b, 0x33, 
+        0x22, 0x61, 0x25, 0x32, 0x61, 0x24, 0xac, 0xaf, 0xe9, 0x31, 0xd9, 0x21, 0x52, 0x21, 0x22, 0x42, 
+        0x21, 0x23, 0x72, 0x21, 0x2b, 0x62, 0x21, 0x2c, 0x21, 0x17, 0xff, 0x82, 0x21, 0x25, 0x9d, 0x03, 
+        0xa2, 0x21, 0x2e, 0xb2, 0x21, 0x2d, 0xb9, 0x11, 0xa9, 0x01, 0x99, 0x51, 0x89, 0x41, 0x01, 0x20, 
+        0xe6, 0xc0, 0x00, 0x00, 0xc0, 0x20, 0x00, 0xd2, 0x2c, 0xf7, 0xd0, 0xd3, 0x21, 0xd0, 0x7f, 0x31, 
+        0xc0, 0x20, 0x00, 0xa2, 0x2c, 0xf8, 0x1b, 0x6d, 0xa0, 0xa3, 0x21, 0xa0, 0x4f, 0x31, 0xd7, 0xb6, 
+        0x01, 0x1b, 0x77, 0x0d, 0x04, 0x1b, 0x5a, 0xa7, 0xb5, 0x01, 0x1b, 0x04, 0x00, 0xd1, 0x21, 0x00, 
+        0x41, 0x40, 0x50, 0xe0, 0x81, 0x60, 0x47, 0x81, 0x42, 0x61, 0x0b, 0x40, 0x24, 0x20, 0x70, 0x51, 
+        0x21, 0x59, 0xa1, 0x3d, 0x05, 0x85, 0x39, 0x02, 0x5d, 0x0d, 0x4d, 0x0e, 0x32, 0x61, 0x13, 0x22, 
+        0x61, 0x14, 0x3d, 0x0d, 0x2d, 0x0e, 0x85, 0x38, 0x02, 0x02, 0x21, 0x13, 0xd9, 0x91, 0x3a, 0x00, 
+        0x32, 0x21, 0x14, 0xe9, 0x81, 0x2a, 0xa3, 0x37, 0xba, 0x01, 0x1b, 0x00, 0xa0, 0xda, 0x20, 0x00, 
+        0xe0, 0x20, 0x16, 0x4f, 0x02, 0x21, 0xf4, 0xfe, 0xc0, 0x20, 0x00, 0x32, 0x2c, 0xf7, 0xc0, 0x20, 
+        0x00, 0x78, 0xa1, 0x58, 0x81, 0x68, 0x91, 0x42, 0x2c, 0xf8, 0xa9, 0x21, 0x09, 0x31, 0x69, 0x11, 
+        0x59, 0x01, 0x68, 0xb1, 0x01, 0xfb, 0xe5, 0xc0, 0x00, 0x00, 0xc0, 0x20, 0x00, 0x32, 0x2c, 0xf9, 
+        0x42, 0x21, 0x11, 0x2d, 0x03, 0x6b, 0x44, 0x30, 0x3f, 0x31, 0x45, 0xec, 0x02, 0x0d, 0x02, 0x4d, 
+        0x03, 0xe0, 0x53, 0xc0, 0xd0, 0x72, 0xc0, 0x77, 0xb2, 0x01, 0x0b, 0x55, 0x32, 0x21, 0x24, 0x62, 
+        0x21, 0x25, 0x30, 0x35, 0xc0, 0x60, 0x67, 0xc0, 0x67, 0xb7, 0x01, 0x0b, 0x33, 0x0c, 0x07, 0x0c, 
+        0x05, 0xe6, 0x13, 0x07, 0xcc, 0x03, 0xcc, 0x26, 0x6d, 0x05, 0x3d, 0x07, 0x62, 0x61, 0x17, 0x32, 
+        0x61, 0x18, 0x42, 0x61, 0x16, 0x02, 0x61, 0x15, 0x9c, 0xff, 0x21, 0xd8, 0xfe, 0xc0, 0x20, 0x00, 
+        0x32, 0x2c, 0xf9, 0x52, 0x21, 0x16, 0x42, 0x21, 0x15, 0x72, 0x21, 0x18, 0x62, 0x21, 0x17, 0x01, 
+        0xe0, 0xe5, 0xc0, 0x00, 0x00, 0x02, 0x21, 0x15, 0x42, 0x21, 0x16, 0xc2, 0x21, 0x17, 0xf2, 0x21, 
+        0x18, 0x22, 0x21, 0x25, 0x82, 0x21, 0x21, 0x32, 0x21, 0x24, 0xe9, 0x58, 0xd9, 0x48, 0x39, 0x38, 
+        0x29, 0x28, 0x49, 0x18, 0x09, 0x08, 0x0c, 0x34, 0x85, 0xa4, 0xff, 0x3d, 0x0f, 0xdd, 0x02, 0x0c, 
+        0x34, 0x2d, 0x0c, 0x05, 0xa4, 0xff, 0x02, 0x21, 0x19, 0xc2, 0x21, 0x1a, 0xe2, 0x21, 0x1c, 0xf2, 
+        0x21, 0x1d, 0x20, 0x2d, 0xc0, 0x32, 0xa0, 0xd0, 0xd2, 0x21, 0x1b, 0x00, 0x22, 0x11, 0x20, 0x20, 
+        0x31, 0x3a, 0x11, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x20, 0x82, 0xfe, 0x3f, 0x08, 0x00, 0x24, 0x00, 
+        0x07, 0x00, 0x24, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x88, 0x13, 0x00, 0x00, 0x22, 0xa0, 0x77, 0x32, 
+        0xa0, 0x00, 0x42, 0xa0, 0x12, 0x52, 0xa0, 0x07, 0x0c, 0x06, 0x12, 0xc1, 0xa0, 0xd9, 0xf1, 0xc9, 
+        0xe1, 0xc1, 0x90, 0xe5, 0x09, 0xd1, 0x08, 0x0c, 0xe2, 0x61, 0x10, 0x02, 0x20, 0x25, 0xf2, 0x61, 
+        0x11, 0xc0, 0x00, 0x00, 0x08, 0x0c, 0x02, 0x20, 0x28, 0x29, 0xc1, 0xc0, 0x00, 0x00, 0x08, 0x0c, 
+        0x02, 0x20, 0x34, 0x0c, 0x02, 0xc0, 0x00, 0x00, 0x0c, 0x72, 0x08, 0x0c, 0x0c, 0x13, 0x02, 0x20, 
+        0x2b, 0x0c, 0xf4, 0xc0, 0x00, 0x00, 0x0c, 0x22, 0x08, 0x0c, 0x0c, 0x13, 0x02, 0x20, 0x2b, 0x42, 
+        0xa1, 0x04, 0xc0, 0x00, 0x00, 0x0c, 0x02, 0x0c, 0x03, 0x42, 0xa1, 0xf4, 0x08, 0x0c, 0x0c, 0xc5, 
+        0x02, 0x20, 0x3a, 0x6d, 0x01, 0xc0, 0x00, 0x00, 0x6c, 0xf3, 0xd1, 0x14, 0xe4, 0xc0, 0x20, 0x00, 
+        0x22, 0x2d, 0xe4, 0x30, 0x22, 0x10, 0xc0, 0x20, 0x00, 0x0c, 0x03, 0x0c, 0x94, 0x0c, 0x75, 0x0c, 
+        0x06, 0x0c, 0x07, 0x08, 0x0c, 0x22, 0x6d, 0xe4, 0x02, 0x20, 0x27, 0x22, 0xa0, 0x77, 0xc0, 0x00, 
+        0x00, 0x22, 0xa0, 0x77, 0x0c, 0x03, 0x1c, 0x24, 0x0c, 0x75, 0x08, 0x0c, 0x0c, 0x06, 0x02, 0x20, 
+        0x27, 0x0c, 0x07, 0xc0, 0x00, 0x00, 0x22, 0xa0, 0x77, 0x0c, 0x03, 0x1c, 0x04, 0x0c, 0x25, 0x08, 
+        0x0c, 0x0c, 0x26, 0x02, 0x20, 0x27, 0x0c, 0x17, 0xc0, 0x00, 0x00, 0x22, 0xa0, 0x77, 0x0c, 0x03, 
+        0x1c, 0x84, 0x0c, 0x75, 0x08, 0x0c, 0x0c, 0x76, 0x02, 0x20, 0x27, 0x0c, 0x17, 0xc0, 0x00, 0x00, 
+        0x0c, 0x0d, 0x0c, 0x6f, 0x0c, 0x0e, 0x0c, 0x0a, 0xb1, 0x89, 0xec, 0xb2, 0x61, 0x12, 0xa2, 0x61, 
+        0x13, 0x61, 0xc1, 0xff, 0x52, 0x21, 0x13, 0x6a, 0x55, 0x52, 0x05, 0x00, 0x42, 0xa1, 0x00, 0x80, 
+        0x55, 0x01, 0x50, 0x58, 0x31, 0x50, 0x44, 0xc0, 0x40, 0x40, 0x74, 0x60, 0x44, 0x11, 0xc0, 0x20, 
+        0x00, 0x31, 0xee, 0xe3, 0x51, 0x70, 0xec, 0x62, 0x23, 0xee, 0x71, 0xb8, 0xff, 0x50, 0x66, 0x10, 
+        0x40, 0x66, 0x20, 0x70, 0x66, 0x20, 0xc0, 0x20, 0x00, 0x62, 0x63, 0xee, 0xc0, 0x20, 0x00, 0x22, 
+        0x23, 0xef, 0x50, 0x22, 0x10, 0x40, 0x22, 0x20, 0x41, 0xb2, 0xff, 0x40, 0x22, 0x20, 0xc0, 0x20, 
+        0x00, 0x4d, 0x0e, 0x08, 0x0c, 0x22, 0x63, 0xef, 0x0c, 0x32, 0x02, 0x20, 0x2b, 0x0c, 0x13, 0xc0, 
+        0x00, 0x00, 0x0c, 0x32, 0x08, 0x0c, 0x0c, 0x23, 0x02, 0x20, 0x2b, 0x4d, 0x0f, 0xc0, 0x00, 0x00, 
+        0x2d, 0x0e, 0x3d, 0x0f, 0x42, 0x21, 0x12, 0x05, 0x50, 0xf9, 0x08, 0x0c, 0x08, 0xf0, 0x0c, 0x12, 
+        0xc0, 0x00, 0x00, 0x08, 0x0c, 0x02, 0x20, 0x10, 0x0c, 0x12, 0xc0, 0x00, 0x00, 0x08, 0x0c, 0x0c, 
+        0x12, 0x08, 0xd0, 0x32, 0xa4, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x20, 0x00, 0x21, 0xd0, 0xe3, 0x08, 
+        0x0c, 0x22, 0x22, 0xf9, 0x08, 0xc0, 0x22, 0x61, 0x14, 0xc0, 0x00, 0x00, 0x31, 0xbd, 0xe9, 0x02, 
+        0x21, 0x14, 0x1b, 0xdd, 0x37, 0x20, 0x08, 0x21, 0x97, 0xff, 0x07, 0xa2, 0x36, 0x37, 0xa0, 0x1f, 
+        0x66, 0x6f, 0x04, 0x1c, 0xef, 0x86, 0x08, 0x00, 0x0c, 0x6f, 0xcc, 0x3e, 0x4c, 0x0e, 0xc6, 0x02, 
+        0x00, 0x42, 0xa0, 0x60, 0x52, 0xce, 0xc0, 0xe0, 0xe0, 0xf4, 0x50, 0xe4, 0x83, 0x86, 0x02, 0x00, 
+        0x62, 0x21, 0x13, 0x1b, 0x76, 0x70, 0x60, 0x74, 0x62, 0x61, 0x13, 0xd0, 0xd0, 0x74, 0x82, 0xcd, 
+        0xfb, 0x56, 0xc8, 0xf0, 0x0c, 0x0e, 0x0c, 0x0d, 0x08, 0x0c, 0x0c, 0x12, 0x08, 0xd0, 0x31, 0xc8, 
+        0xfa, 0xc0, 0x00, 0x00, 0x22, 0xc1, 0x10, 0x0c, 0xe3, 0x0c, 0x04, 0x45, 0x8f, 0xff, 0x08, 0x0c, 
+        0x08, 0xc0, 0xfd, 0x02, 0xc0, 0x00, 0x00, 0x1b, 0xdd, 0xd0, 0xd0, 0x74, 0xe7, 0xaf, 0x01, 0xfd, 
+        0x0e, 0x00, 0xef, 0x11, 0xe0, 0xe0, 0x31, 0x66, 0x4d, 0xcd, 0x32, 0xa0, 0x23, 0x41, 0x7a, 0xff, 
+        0x52, 0xa0, 0x07, 0x22, 0xce, 0x08, 0x20, 0x24, 0x21, 0x00, 0x22, 0x11, 0x20, 0x20, 0x31, 0x45, 
+        0xde, 0xf9, 0xd1, 0xa6, 0xe3, 0x22, 0xa0, 0x77, 0x0c, 0x03, 0x1c, 0x24, 0x0c, 0x75, 0x0c, 0x06, 
+        0x08, 0x0c, 0x78, 0xc1, 0x02, 0x20, 0x27, 0x70, 0x70, 0x74, 0xc0, 0x00, 0x00, 0x1c, 0x04, 0xc0, 
+        0x20, 0x00, 0x22, 0x2d, 0xe4, 0x40, 0x22, 0x20, 0xc0, 0x20, 0x00, 0x0c, 0x03, 0x0c, 0x25, 0x0c, 
+        0x26, 0x0c, 0x07, 0x08, 0x0c, 0x22, 0x6d, 0xe4, 0x02, 0x20, 0x27, 0x22, 0xa0, 0x77, 0xc0, 0x00, 
+        0x00, 0x22, 0xa0, 0x77, 0x0c, 0x03, 0x1c, 0x84, 0x0c, 0x75, 0x08, 0x0c, 0x0c, 0x76, 0x02, 0x20, 
+        0x27, 0x0c, 0x07, 0xc0, 0x00, 0x00, 0x08, 0x0c, 0x02, 0x20, 0x1b, 0x0c, 0x02, 0xc0, 0x00, 0x00, 
+        0x08, 0x0c, 0x02, 0x20, 0x10, 0x0c, 0x02, 0xc0, 0x00, 0x00, 0x08, 0x0c, 0x08, 0xc0, 0xc0, 0x00, 
+        0x00, 0x08, 0x0c, 0x02, 0x20, 0x32, 0xc0, 0x00, 0x00, 0x08, 0x0c, 0x02, 0x20, 0x31, 0xc0, 0x00, 
+        0x00, 0x08, 0x0c, 0x02, 0x20, 0x2f, 0xc0, 0x00, 0x00, 0xc8, 0xe1, 0xd8, 0xf1, 0xe2, 0x21, 0x10, 
+        0xf2, 0x21, 0x11, 0x08, 0xd1, 0x12, 0xc1, 0x60, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x13, 0x40, 0x12, 
+        0xc1, 0xf0, 0x49, 0x01, 0xc9, 0x21, 0x09, 0x11, 0xcd, 0x03, 0x01, 0xe2, 0xe4, 0x0c, 0x13, 0x08, 
+        0x00, 0x00, 0x33, 0xa1, 0x08, 0xd0, 0x30, 0x30, 0xf4, 0xc0, 0x00, 0x00, 0x21, 0x78, 0xe3, 0x6b, 
+        0x5c, 0x0b, 0x6c, 0x0c, 0x14, 0x00, 0x16, 0x40, 0x00, 0x44, 0xa1, 0xc0, 0x20, 0x00, 0x38, 0x01, 
+        0x62, 0x22, 0xf7, 0x00, 0x05, 0x40, 0x4a, 0x66, 0x60, 0x60, 0xb1, 0x62, 0x53, 0x00, 0xc0, 0x20, 
+        0x00, 0x00, 0x05, 0x40, 0x22, 0x22, 0xf8, 0x01, 0xd3, 0xe4, 0x4a, 0x22, 0x08, 0x00, 0x20, 0x20, 
+        0xb1, 0x08, 0xc0, 0x22, 0x53, 0x01, 0xc0, 0x00, 0x00, 0xc8, 0x21, 0x08, 0x11, 0x12, 0xc1, 0x10, 
+        0x0d, 0xf0, 0x00, 0x00, 0x22, 0xa0, 0x77, 0x0c, 0x03, 0x1c, 0x24, 0x0c, 0x75, 0x0c, 0x06, 0x12, 
+        0xc1, 0xb0, 0xc9, 0x41, 0xd9, 0x51, 0xd1, 0xc7, 0xe4, 0x09, 0x31, 0x08, 0x0d, 0xe9, 0x61, 0x02, 
+        0x20, 0x25, 0xf9, 0x71, 0xc0, 0x00, 0x00, 0x0c, 0x03, 0x1c, 0x24, 0x0c, 0x75, 0x0c, 0x06, 0x0c, 
+        0x07, 0x08, 0x0d, 0xed, 0x02, 0x02, 0x20, 0x27, 0x22, 0xa0, 0x77, 0xc0, 0x00, 0x00, 0x6c, 0xf3, 
+        0xc1, 0x57, 0xe3, 0xc0, 0x20, 0x00, 0x22, 0x2c, 0xe4, 0x30, 0x22, 0x10, 0xc0, 0x20, 0x00, 0x08, 
+        0x0d, 0xe2, 0x61, 0x13, 0x02, 0x20, 0x28, 0x22, 0x6c, 0xe4, 0xc0, 0x00, 0x00, 0x0c, 0x22, 0x08, 
+        0x0d, 0x0c, 0x13, 0x02, 0x20, 0x2b, 0x0c, 0x04, 0xc0, 0x00, 0x00, 0x0c, 0x32, 0x08, 0x0d, 0x0c, 
+        0x13, 0x02, 0x20, 0x2b, 0x0c, 0x04, 0xc0, 0x00, 0x00, 0x0c, 0x32, 0x08, 0x0d, 0x0c, 0x23, 0x02, 
+        0x20, 0x2b, 0x0c, 0x64, 0xc0, 0x00, 0x00, 0x08, 0x0d, 0x02, 0x20, 0x10, 0x0c, 0x12, 0xc0, 0x00, 
+        0x00, 0x0c, 0x0c, 0x0c, 0x0f, 0x0c, 0x0e, 0x22, 0xa2, 0x00, 0x0c, 0x15, 0x0c, 0x16, 0x0c, 0x17, 
+        0x0c, 0x18, 0x0c, 0x09, 0x0c, 0x0a, 0xa9, 0x21, 0x99, 0x11, 0x89, 0xc1, 0x79, 0xd1, 0x69, 0xe1, 
+        0x59, 0xf1, 0x22, 0x61, 0x12, 0x0c, 0x42, 0x08, 0x0d, 0x0c, 0x13, 0x02, 0x20, 0x2b, 0x4d, 0x0c, 
+        0xc0, 0x00, 0x00, 0x0c, 0x42, 0x08, 0x0d, 0x0c, 0x23, 0x02, 0x20, 0x2b, 0x4d, 0x0c, 0xc0, 0x00, 
+        0x00, 0x0c, 0x52, 0x08, 0x0d, 0x0c, 0x13, 0x02, 0x20, 0x2b, 0x4d, 0x0c, 0xc0, 0x00, 0x00, 0x0c, 
+        0x52, 0x08, 0x0d, 0x0c, 0x23, 0x02, 0x20, 0x2b, 0x4d, 0x0c, 0xc0, 0x00, 0x00, 0x0c, 0xa2, 0x01, 
+        0x0c, 0xe4, 0xc0, 0x00, 0x00, 0x0c, 0x12, 0x0c, 0x63, 0x4d, 0x01, 0x05, 0xea, 0xff, 0x08, 0x11, 
+        0x48, 0x21, 0x92, 0xaf, 0x00, 0xa2, 0xa0, 0xff, 0x78, 0xe1, 0x28, 0xf1, 0x62, 0x91, 0x00, 0x8c, 
+        0xc2, 0x67, 0xa9, 0x0a, 0x0b, 0x3c, 0x0c, 0x05, 0x59, 0xf1, 0x30, 0x30, 0xf4, 0x39, 0xb1, 0x28, 
+        0xd1, 0x52, 0x91, 0x01, 0x8c, 0xc7, 0x57, 0xa9, 0x0a, 0x0b, 0x8c, 0x0c, 0x0b, 0xb9, 0xe1, 0x80, 
+        0x80, 0xf4, 0x89, 0xa1, 0x88, 0xc1, 0x8c, 0x72, 0xa7, 0x96, 0x05, 0xc9, 0x91, 0x0c, 0x03, 0x39, 
+        0xd1, 0x8c, 0x78, 0xa7, 0x95, 0x05, 0xc9, 0x81, 0x0c, 0x0b, 0xb9, 0xc1, 0x16, 0x7c, 0x04, 0x82, 
+        0x21, 0x10, 0x80, 0x86, 0xc0, 0x00, 0x88, 0x11, 0x80, 0x80, 0x31, 0x7d, 0x08, 0xe7, 0xa8, 0x01, 
+        0x7d, 0x0e, 0xb2, 0x21, 0x11, 0x00, 0xe7, 0x11, 0xe0, 0xe0, 0x31, 0xb0, 0xb5, 0xc0, 0x87, 0xa0, 
+        0x01, 0x8d, 0x00, 0x00, 0x08, 0x11, 0x00, 0x00, 0x31, 0x00, 0x8b, 0x11, 0x80, 0x80, 0x31, 0x7d, 
+        0x08, 0xf7, 0xa8, 0x01, 0x7d, 0x0f, 0x00, 0xf7, 0x11, 0xf0, 0xf0, 0x31, 0x87, 0xa4, 0x01, 0x8d, 
+        0x04, 0x00, 0x48, 0x11, 0x40, 0x40, 0x31, 0x52, 0x61, 0x11, 0x62, 0x61, 0x10, 0x49, 0x21, 0x09, 
+        0x11, 0x72, 0x21, 0x12, 0x1b, 0xcc, 0xc0, 0xc0, 0xf4, 0x0b, 0x77, 0x72, 0x61, 0x12, 0x56, 0x37, 
+        0xf0, 0x08, 0x0d, 0x02, 0x20, 0x10, 0x0c, 0x02, 0xc0, 0x00, 0x00, 0x42, 0x21, 0x13, 0x51, 0xf0, 
+        0xf5, 0x01, 0x33, 0xe3, 0xe6, 0x6e, 0x04, 0x28, 0x11, 0xd6, 0x62, 0x00, 0x38, 0x05, 0x00, 0x33, 
+        0x20, 0x39, 0x05, 0x88, 0xb1, 0xe6, 0x6f, 0x04, 0x68, 0x21, 0xd6, 0x66, 0x00, 0x78, 0x05, 0x00, 
+        0x77, 0x20, 0x79, 0x05, 0x02, 0xa0, 0x6d, 0x87, 0xb0, 0x11, 0x98, 0xa1, 0xa8, 0x91, 0x97, 0xb0, 
+        0x0a, 0x02, 0xa1, 0x90, 0xa7, 0x30, 0x04, 0xb8, 0x81, 0xb7, 0xb0, 0x09, 0xe1, 0x22, 0xe3, 0xc8, 
+        0x05, 0xe0, 0xcc, 0x20, 0xc9, 0x05, 0xc1, 0xe5, 0xe2, 0x22, 0xa0, 0x77, 0x0c, 0x03, 0x0c, 0x75, 
+        0x0c, 0x06, 0x08, 0x0d, 0x40, 0x70, 0x74, 0x02, 0x20, 0x27, 0x1c, 0x24, 0xc0, 0x00, 0x00, 0x1c, 
+        0x03, 0xc0, 0x20, 0x00, 0x22, 0x2c, 0xe4, 0x30, 0x22, 0x20, 0xc0, 0x20, 0x00, 0x08, 0x0d, 0x02, 
+        0x20, 0x2f, 0x22, 0x6c, 0xe4, 0xc0, 0x00, 0x00, 0xc8, 0x41, 0xd8, 0x51, 0xe8, 0x61, 0xf8, 0x71, 
+        0x08, 0x31, 0x12, 0xc1, 0x50, 0x0d, 0xf0, 0x00, 0x30, 0x82, 0xfe, 0x3f, 0x40, 0x82, 0xfe, 0x3f, 
+        0x50, 0x82, 0xfe, 0x3f, 0x31, 0xfd, 0xff, 0x42, 0xa0, 0x0e, 0x22, 0xa0, 0xa0, 0x20, 0x11, 0xc0, 
+        0xd2, 0x61, 0x1e, 0xe2, 0x61, 0x1f, 0xf2, 0x61, 0x20, 0x22, 0xc1, 0x10, 0xc2, 0x61, 0x1d, 0x02, 
+        0x61, 0x1c, 0xc1, 0x30, 0xe4, 0x45, 0x66, 0x02, 0x02, 0x2c, 0x00, 0x02, 0x20, 0x28, 0xc0, 0x00, 
+        0x00, 0xd1, 0xf2, 0xf3, 0x08, 0x0c, 0x22, 0x1d, 0x00, 0x02, 0x20, 0x34, 0x20, 0x20, 0x44, 0xc0, 
+        0x00, 0x00, 0x22, 0x1d, 0x00, 0x32, 0xc1, 0x20, 0x05, 0x10, 0xfd, 0x0c, 0x22, 0x08, 0x0c, 0x0c, 
+        0x13, 0x02, 0x20, 0x2b, 0x0c, 0x04, 0xc0, 0x00, 0x00, 0x08, 0x0c, 0x02, 0x20, 0x31, 0xc0, 0x00, 
+        0x00, 0x08, 0x0c, 0x02, 0x20, 0x10, 0x0c, 0x12, 0xc0, 0x00, 0x00, 0x0c, 0xf7, 0x0c, 0xea, 0x51, 
+        0xe3, 0xff, 0x31, 0xe3, 0xff, 0x0c, 0x00, 0x0c, 0x08, 0x82, 0x61, 0x21, 0xf0, 0xd0, 0x11, 0x30, 
+        0x30, 0x90, 0x5a, 0x50, 0x02, 0x61, 0x22, 0x72, 0x61, 0x25, 0x32, 0x13, 0x00, 0x98, 0x0c, 0x52, 
+        0x05, 0x00, 0x92, 0x29, 0x15, 0xa7, 0x90, 0x09, 0x0c, 0x02, 0x4c, 0x04, 0xc0, 0x09, 0x00, 0x06, 
+        0x02, 0x00, 0x4d, 0x05, 0x0c, 0x02, 0x0c, 0x65, 0xc0, 0x09, 0x00, 0x21, 0x81, 0xe5, 0x32, 0xc1, 
+        0x50, 0x0c, 0xa4, 0x08, 0x0c, 0x0c, 0x05, 0x02, 0x20, 0x3b, 0x0c, 0x06, 0xc0, 0x00, 0x00, 0x0c, 
+        0x12, 0x4c, 0x03, 0x1c, 0x44, 0x0c, 0x05, 0x0c, 0x07, 0xe2, 0xd1, 0xff, 0x0c, 0x06, 0x69, 0x01, 
+        0x69, 0x11, 0x69, 0x21, 0x08, 0x0c, 0xe2, 0xce, 0x30, 0x02, 0x20, 0x1a, 0x0c, 0x06, 0xc0, 0x00, 
+        0x00, 0x0c, 0x0f, 0xea, 0x0d, 0x02, 0x61, 0x23, 0xd2, 0xa0, 0x80, 0xf2, 0x61, 0x24, 0xf2, 0xaf, 
+        0x80, 0x22, 0xa0, 0x77, 0x32, 0xa0, 0x00, 0x42, 0xa0, 0x09, 0x52, 0xa0, 0x07, 0x08, 0x0c, 0x0c, 
+        0x06, 0x02, 0x20, 0x27, 0x7d, 0x0d, 0xc0, 0x00, 0x00, 0x0c, 0x52, 0x01, 0x71, 0xe3, 0xc0, 0x00, 
+        0x00, 0x08, 0x0c, 0x0c, 0x12, 0x08, 0xd0, 0x32, 0xa4, 0x00, 0xc0, 0x00, 0x00, 0x22, 0xc1, 0x60, 
+        0x0c, 0xa3, 0x05, 0x89, 0xf9, 0x08, 0x0c, 0x08, 0xc0, 0xc0, 0x00, 0x00, 0x08, 0x0c, 0x22, 0x21, 
+        0x18, 0x08, 0xe0, 0x0c, 0x03, 0xc0, 0x00, 0x00, 0x0c, 0x03, 0x08, 0x0c, 0xed, 0x02, 0x08, 0xe0, 
+        0x22, 0x21, 0x19, 0xc0, 0x00, 0x00, 0x7c, 0x10, 0x42, 0x21, 0x23, 0x4b, 0x22, 0x4b, 0x3e, 0x30, 
+        0x33, 0x21, 0x20, 0x23, 0x21, 0x22, 0x54, 0x80, 0x00, 0x33, 0x11, 0x30, 0x30, 0x31, 0x00, 0x22, 
+        0x11, 0x20, 0x20, 0x31, 0x30, 0x22, 0xc0, 0x27, 0x20, 0x04, 0x1c, 0xe4, 0x47, 0xa3, 0x1c, 0x3c, 
+        0xc5, 0x57, 0xa3, 0x28, 0xf0, 0x33, 0x11, 0x30, 0x3f, 0xc0, 0x32, 0xc3, 0x78, 0x00, 0xf3, 0x11, 
+        0xf0, 0xf0, 0x31, 0xa6, 0xef, 0x02, 0x46, 0x53, 0x00, 0x30, 0xd0, 0x74, 0x42, 0x21, 0x24, 0x1b, 
+        0x54, 0x50, 0x40, 0x74, 0x42, 0x61, 0x24, 0x42, 0xc4, 0xf8, 0x56, 0x34, 0xf5, 0xd0, 0x7d, 0x20, 
+        0x22, 0xa0, 0x77, 0x32, 0xa0, 0x00, 0x42, 0xa0, 0x09, 0x08, 0x0c, 0x0c, 0x75, 0x02, 0x20, 0x27, 
+        0x0c, 0x06, 0xc0, 0x00, 0x00, 0x0c, 0x52, 0x01, 0x46, 0xe3, 0xc0, 0x00, 0x00, 0x08, 0x0c, 0x0c, 
+        0x12, 0x08, 0xd0, 0x31, 0x9e, 0xe2, 0xc0, 0x00, 0x00, 0x22, 0xc1, 0x60, 0x0c, 0xc3, 0x45, 0x7e, 
+        0xf9, 0x08, 0x0c, 0x08, 0xc0, 0xc0, 0x00, 0x00, 0x08, 0x0c, 0x22, 0x21, 0x19, 0x08, 0xe0, 0x0c, 
+        0x03, 0xc0, 0x00, 0x00, 0x32, 0x21, 0x23, 0x02, 0xcf, 0x50, 0x4b, 0xe2, 0xd2, 0xcf, 0x51, 0x22, 
+        0x21, 0x22, 0xe0, 0xe3, 0x21, 0x00, 0xd0, 0xb3, 0xd0, 0xd1, 0x21, 0xd0, 0x0e, 0xc0, 0x02, 0x53, 
+        0x80, 0xbc, 0x02, 0xf6, 0x42, 0x02, 0xc6, 0x25, 0x00, 0x42, 0xc1, 0x90, 0x22, 0x21, 0x23, 0x32, 
+        0x21, 0x22, 0x22, 0x92, 0x7f, 0x4a, 0x33, 0x32, 0x03, 0x7f, 0x20, 0x20, 0xc0, 0x30, 0x22, 0xc0, 
+        0x08, 0x0c, 0x80, 0x22, 0x01, 0x08, 0x00, 0x20, 0x28, 0x31, 0xc0, 0x00, 0x00, 0xa6, 0x52, 0x70, 
+        0x0c, 0x13, 0x32, 0x61, 0x21, 0x08, 0x0c, 0x08, 0xc0, 0xc0, 0x00, 0x00, 0x08, 0x0c, 0x02, 0x20, 
+        0x1b, 0x0c, 0x12, 0xc0, 0x00, 0x00, 0x0c, 0xea, 0x51, 0x6d, 0xff, 0x31, 0x6d, 0xff, 0x72, 0x21, 
+        0x25, 0x02, 0x21, 0x22, 0x0b, 0x77, 0x1b, 0x20, 0x20, 0x00, 0x74, 0xf0, 0xd0, 0x11, 0x30, 0x30, 
+        0x90, 0x5a, 0x50, 0x56, 0xd7, 0xe1, 0x08, 0x0c, 0x02, 0x20, 0x10, 0x0c, 0x02, 0xc0, 0x00, 0x00, 
+        0x08, 0x0c, 0x02, 0x20, 0x32, 0xc0, 0x00, 0x00, 0x08, 0x0c, 0x02, 0x20, 0x31, 0xc0, 0x00, 0x00, 
+        0x08, 0x0c, 0x02, 0x20, 0x2f, 0xc0, 0x00, 0x00, 0x22, 0x21, 0x21, 0xc2, 0x21, 0x1d, 0xd2, 0x21, 
+        0x1e, 0xe2, 0x21, 0x1f, 0xf2, 0x21, 0x20, 0x32, 0xa0, 0xa0, 0x02, 0x21, 0x1c, 0x3a, 0x11, 0x0d, 
+        0xf0, 0x22, 0x21, 0x22, 0xb6, 0x22, 0x8d, 0xd0, 0x2e, 0xc0, 0x52, 0xc1, 0x90, 0x32, 0x21, 0x22, 
+        0x08, 0x0c, 0x42, 0x21, 0x23, 0x08, 0x00, 0x42, 0x94, 0x7f, 0x5a, 0x33, 0x32, 0x03, 0x7f, 0x40, 
+        0x22, 0xc0, 0x30, 0x22, 0xc0, 0x80, 0x22, 0x01, 0x20, 0x28, 0x31, 0xc0, 0x00, 0x00, 0xa6, 0x72, 
+        0x02, 0xc6, 0xd6, 0xff, 0x46, 0xd7, 0xff, 0xd2, 0xa0, 0x7f, 0xf2, 0xa0, 0x7f, 0x06, 0xaf, 0xff, 
+        0x70, 0x82, 0xfe, 0x3f, 0x41, 0xff, 0xff, 0x32, 0xa0, 0x00, 0x12, 0xc1, 0xd0, 0xd9, 0x71, 0x22, 
+        0xc1, 0x10, 0xf9, 0x91, 0xe9, 0x81, 0xc9, 0x61, 0x09, 0x51, 0x0c, 0x0c, 0x0c, 0x20, 0xe1, 0x35, 
+        0xe6, 0xe9, 0xa1, 0x4a, 0x33, 0x4a, 0x00, 0x02, 0x00, 0x00, 0x4b, 0xfe, 0x32, 0x13, 0x00, 0xe2, 
+        0xce, 0x44, 0x32, 0x52, 0x00, 0x02, 0x42, 0x02, 0x7d, 0x0f, 0x0c, 0x04, 0x68, 0xa1, 0x02, 0xa0, 
+        0x64, 0x31, 0xc3, 0xec, 0x51, 0x93, 0xf2, 0xc0, 0xdc, 0xa0, 0x1b, 0xdd, 0x52, 0x95, 0x00, 0x32, 
+        0x03, 0x01, 0x80, 0x2d, 0x01, 0x20, 0x28, 0x31, 0x09, 0x01, 0x05, 0x87, 0xfc, 0xc0, 0x2c, 0x11, 
+        0xc0, 0x22, 0xc0, 0x2a, 0x2e, 0x85, 0x17, 0xfc, 0xd0, 0x20, 0x74, 0x85, 0xcb, 0xff, 0x42, 0xc1, 
+        0x10, 0x4a, 0x4c, 0x22, 0x44, 0x00, 0x32, 0x01, 0x10, 0x52, 0x01, 0x11, 0x9c, 0x03, 0x8c, 0xe5, 
+        0x62, 0x01, 0x12, 0x8c, 0x96, 0x0c, 0x12, 0x0c, 0x23, 0x0c, 0x24, 0x0c, 0x55, 0x45, 0x72, 0xf9, 
+        0x1b, 0xcc, 0xc0, 0xc0, 0x74, 0x66, 0x3c, 0x9f, 0xc8, 0x61, 0xd8, 0x71, 0xe8, 0x81, 0xf8, 0x91, 
+        0x08, 0x51, 0x12, 0xc1, 0x30, 0x0d, 0xf0, 0x00, 0xf6, 0x93, 0x03, 0x2c, 0x72, 0x0d, 0xf0, 0x0c, 
+        0xc4, 0x37, 0x34, 0x03, 0x2c, 0x42, 0x0d, 0xf0, 0x66, 0x22, 0x03, 0x2c, 0x12, 0x0d, 0xf0, 0x66, 
+        0x32, 0x03, 0x1c, 0xe2, 0x0d, 0xf0, 0x66, 0x42, 0x03, 0x1c, 0xb2, 0x0d, 0xf0, 0xf6, 0x72, 0x06, 
+        0xb6, 0x52, 0x03, 0x1c, 0x82, 0x0d, 0xf0, 0xf6, 0x92, 0x06, 0xb6, 0x72, 0x03, 0x1c, 0x52, 0x0d, 
+        0xf0, 0x0c, 0xd3, 0x27, 0x33, 0x06, 0xb6, 0x92, 0x03, 0x1c, 0x22, 0x0d, 0xf0, 0x1c, 0x66, 0x27, 
+        0x36, 0x06, 0x27, 0xb3, 0x03, 0x0c, 0xf2, 0x0d, 0xf0, 0x2c, 0x93, 0x27, 0x33, 0x06, 0x27, 0xb6, 
+        0x03, 0x0c, 0xc2, 0x0d, 0xf0, 0x5c, 0x86, 0x27, 0x36, 0x06, 0x27, 0xb3, 0x03, 0x0c, 0x92, 0x0d, 
+        0xf0, 0x32, 0xa1, 0x0a, 0x27, 0x33, 0x06, 0x27, 0xb6, 0x03, 0x0c, 0x62, 0x0d, 0xf0, 0x52, 0xa3, 
+        0x20, 0x27, 0x35, 0x06, 0x27, 0xb3, 0x03, 0x0c, 0x32, 0x0d, 0xf0, 0x0c, 0x02, 0x0d, 0xf0, 0x00, 
+        0x00, 0x00, 0x24, 0x10, 0x00, 0x00, 0x00, 0xe0, 0x12, 0xc1, 0xa0, 0xf9, 0xf1, 0x39, 0xa1, 0x49, 
+        0x81, 0x69, 0x91, 0xd9, 0xd1, 0x09, 0xb1, 0xc9, 0xc1, 0xe9, 0xe1, 0xe1, 0x2e, 0xe3, 0xcd, 0x05, 
+        0x08, 0x0e, 0xdd, 0x02, 0x08, 0xf0, 0x0c, 0x12, 0xc0, 0x00, 0x00, 0xf1, 0xf5, 0xff, 0xd2, 0x61, 
+        0x17, 0x01, 0xc2, 0xe1, 0x41, 0xf4, 0xff, 0x0c, 0x03, 0x0c, 0x15, 0x2d, 0x03, 0xc0, 0x20, 0x00, 
+        0xb2, 0x20, 0xf1, 0x40, 0xbb, 0x10, 0x48, 0xa1, 0x40, 0xbb, 0x20, 0xf0, 0xbb, 0x20, 0xc0, 0x20, 
+        0x00, 0x32, 0x61, 0x10, 0x0c, 0x0f, 0x00, 0x1d, 0x40, 0x0c, 0x06, 0x0c, 0x07, 0x0c, 0x08, 0x0c, 
+        0x09, 0xb2, 0x60, 0xf1, 0x39, 0x1c, 0x39, 0x0c, 0x39, 0x3c, 0x39, 0x2c, 0x39, 0x5c, 0x39, 0x4c, 
+        0x39, 0x7c, 0x39, 0x6c, 0x92, 0x61, 0x11, 0x82, 0x61, 0x14, 0x72, 0x61, 0x12, 0x62, 0x61, 0x13, 
+        0x00, 0x45, 0xa1, 0x42, 0x61, 0x16, 0xe6, 0x14, 0x02, 0x06, 0x2b, 0x00, 0xf8, 0x81, 0x0c, 0x0d, 
+        0x00, 0x1f, 0x40, 0x00, 0x65, 0xa1, 0x60, 0x60, 0xf4, 0x62, 0x61, 0x15, 0x08, 0x0e, 0x0c, 0x12, 
+        0x08, 0xd0, 0x32, 0x21, 0x15, 0xc0, 0x00, 0x00, 0x3d, 0x0f, 0x2d, 0x01, 0x0c, 0x04, 0x05, 0x0b, 
+        0xff, 0x48, 0x2c, 0x58, 0x21, 0x38, 0x31, 0x08, 0x1c, 0x28, 0x0c, 0x3a, 0x00, 0x5a, 0x52, 0x27, 
+        0xb5, 0x01, 0x1b, 0x00, 0x38, 0x4c, 0x09, 0x1c, 0x59, 0x0c, 0x08, 0x3c, 0x28, 0x11, 0x58, 0x01, 
+        0x2a, 0x00, 0x5a, 0x54, 0x47, 0xb5, 0x01, 0x1b, 0x00, 0x09, 0x3c, 0x59, 0x2c, 0x08, 0x5c, 0x28, 
+        0x51, 0x58, 0x41, 0x2a, 0x00, 0x5a, 0x53, 0x37, 0xb5, 0x01, 0x1b, 0x00, 0x38, 0x6c, 0x09, 0x5c, 
+        0x59, 0x4c, 0x08, 0x7c, 0x28, 0x71, 0x58, 0x61, 0x2a, 0x00, 0x5a, 0x53, 0x37, 0xb5, 0x01, 0x1b, 
+        0x00, 0x28, 0x0e, 0x09, 0x7c, 0x08, 0xc2, 0x59, 0x6c, 0xc0, 0x00, 0x00, 0x32, 0x21, 0x16, 0x1b, 
+        0xdd, 0xd0, 0xd0, 0x74, 0xd0, 0x33, 0xc0, 0x56, 0x13, 0xf8, 0x38, 0x1c, 0x28, 0x0c, 0xf8, 0x4c, 
+        0x08, 0x6c, 0x48, 0x7c, 0x58, 0x5c, 0x68, 0x2c, 0x78, 0x3c, 0x72, 0x61, 0x10, 0x62, 0x61, 0x11, 
+        0x52, 0x61, 0x14, 0x42, 0x61, 0x12, 0x02, 0x61, 0x13, 0xd2, 0x21, 0x17, 0xd0, 0x4d, 0x20, 0x05, 
+        0x37, 0x02, 0x22, 0x6c, 0x00, 0x32, 0x6c, 0x01, 0x42, 0x21, 0x14, 0x32, 0x21, 0x10, 0x82, 0x21, 
+        0x11, 0x40, 0x33, 0xc0, 0xf0, 0x28, 0xc0, 0x27, 0xb8, 0x01, 0x0b, 0x33, 0xd0, 0x4d, 0x20, 0x05, 
+        0x35, 0x02, 0x4d, 0x0d, 0x29, 0x2c, 0x39, 0x3c, 0x2d, 0x0f, 0x32, 0x21, 0x14, 0x05, 0x34, 0x02, 
+        0x4d, 0x0d, 0x39, 0x5c, 0x29, 0x4c, 0x32, 0x21, 0x12, 0x22, 0x21, 0x13, 0x05, 0x33, 0x02, 0x39, 
+        0x7c, 0x29, 0x6c, 0x0c, 0x34, 0xc5, 0xef, 0xfe, 0x58, 0x0c, 0x48, 0x7c, 0x38, 0x1c, 0xdd, 0x02, 
+        0x28, 0x6c, 0x40, 0x33, 0xc0, 0x20, 0x25, 0xc0, 0x27, 0xb5, 0x01, 0x0b, 0x33, 0xc8, 0x91, 0xf1, 
+        0x67, 0xe1, 0x0c, 0x34, 0xc5, 0xed, 0xfe, 0x20, 0x4d, 0xc0, 0x00, 0x44, 0x11, 0x40, 0x40, 0x31, 
+        0x8b, 0x44, 0x40, 0x44, 0x21, 0x42, 0x5c, 0x00, 0xc0, 0x20, 0x00, 0x31, 0x92, 0xff, 0x22, 0x2f, 
+        0xf1, 0x30, 0x22, 0x10, 0xc0, 0x20, 0x00, 0x08, 0x0e, 0x22, 0x6f, 0xf1, 0x08, 0xf0, 0x0c, 0x02, 
+        0xc0, 0x00, 0x00, 0xc8, 0xc1, 0xd8, 0xd1, 0xe8, 0xe1, 0xf8, 0xf1, 0x08, 0xb1, 0x12, 0xc1, 0x60, 
+        0x0d, 0xf0, 0x00, 0x00, 0xcf, 0x09, 0x00, 0x00, 0xff, 0xff, 0x1f, 0x00, 0xac, 0x87, 0xfe, 0x3f, 
+        0x24, 0x88, 0xfe, 0x3f, 0xcc, 0x87, 0xfe, 0x3f, 0xf4, 0x87, 0xfe, 0x3f, 0x04, 0x88, 0xfe, 0x3f, 
+        0x42, 0xa0, 0x12, 0x52, 0xa0, 0x07, 0x62, 0xa0, 0x00, 0x32, 0xa1, 0x10, 0x30, 0x11, 0xc0, 0xd2, 
+        0x61, 0x35, 0xe2, 0x61, 0x36, 0xf2, 0x61, 0x37, 0x0c, 0x03, 0xc2, 0x61, 0x34, 0xc1, 0xad, 0xe2, 
+        0x02, 0x61, 0x33, 0x08, 0x0c, 0x22, 0x61, 0x3d, 0x02, 0x20, 0x25, 0x22, 0xa0, 0x77, 0xc0, 0x00, 
+        0x00, 0x6c, 0xf4, 0xed, 0x02, 0xd1, 0x41, 0xe1, 0x21, 0xfa, 0xeb, 0xc0, 0x20, 0x00, 0x32, 0x2d, 
+        0xe4, 0x40, 0x33, 0x10, 0xc0, 0x20, 0x00, 0x0c, 0x04, 0x32, 0x6d, 0xe4, 0x52, 0xa0, 0x64, 0x31, 
+        0xe5, 0xff, 0x22, 0x02, 0x01, 0x45, 0x96, 0xfb, 0x22, 0xa0, 0x77, 0x0c, 0x03, 0x1c, 0x24, 0x0c, 
+        0x75, 0x0c, 0x06, 0x08, 0x0c, 0x0c, 0x07, 0x02, 0x20, 0x27, 0xe2, 0x61, 0x41, 0xc0, 0x00, 0x00, 
+        0x22, 0xa0, 0x77, 0x0c, 0x03, 0x1c, 0x04, 0x0c, 0x25, 0x08, 0x0c, 0x0c, 0x26, 0x02, 0x20, 0x27, 
+        0x0c, 0x17, 0xc0, 0x00, 0x00, 0x22, 0xa0, 0x77, 0x0c, 0x03, 0x1c, 0x84, 0x0c, 0x75, 0x08, 0x0c, 
+        0x0c, 0x76, 0x02, 0x20, 0x27, 0x0c, 0x17, 0xc0, 0x00, 0x00, 0x0c, 0x0f, 0x3c, 0x3d, 0xe0, 0x8d, 
+        0x11, 0xc0, 0x20, 0x00, 0xe1, 0xfd, 0xe3, 0x78, 0xde, 0x92, 0xac, 0x00, 0x90, 0x77, 0x10, 0x80, 
+        0x77, 0x20, 0x0c, 0x18, 0x80, 0x77, 0x20, 0xc0, 0x20, 0x00, 0x79, 0xde, 0x0c, 0x52, 0x01, 0x00, 
+        0xe2, 0xc0, 0x00, 0x00, 0x08, 0x0c, 0x0c, 0x12, 0x08, 0xd0, 0x32, 0xa4, 0x00, 0xc0, 0x00, 0x00, 
+        0xc0, 0x20, 0x00, 0x08, 0x0c, 0xe1, 0x19, 0xe1, 0x08, 0xc0, 0xe2, 0x2e, 0xf9, 0xc0, 0x00, 0x00, 
+        0x01, 0xc2, 0xff, 0x1b, 0xff, 0xe7, 0xa0, 0x0e, 0xe2, 0x61, 0x30, 0x21, 0xa6, 0xe2, 0xd2, 0x61, 
+        0x2f, 0xe7, 0xa2, 0x1c, 0xe7, 0x20, 0x13, 0x3b, 0x3d, 0x30, 0xd0, 0x74, 0xf0, 0xf0, 0x74, 0x66, 
+        0x4f, 0x9b, 0xe2, 0x61, 0x30, 0xd2, 0x61, 0x2f, 0x46, 0x01, 0x00, 0x32, 0xcd, 0xfd, 0xc6, 0xf9, 
+        0xff, 0x0c, 0x0d, 0x0c, 0x0f, 0x0c, 0x0e, 0x0c, 0x0c, 0x0c, 0x04, 0x0c, 0x05, 0x0c, 0x06, 0x62, 
+        0x61, 0x40, 0x52, 0x61, 0x3e, 0x42, 0x61, 0x3f, 0x0c, 0x62, 0x0c, 0x94, 0x52, 0xc1, 0x60, 0x32, 
+        0xcd, 0x2f, 0x62, 0xc1, 0x7f, 0x1b, 0x66, 0x00, 0x33, 0x11, 0x30, 0x30, 0x31, 0x85, 0xcc, 0xff, 
+        0x0c, 0x93, 0x0c, 0x00, 0x62, 0x21, 0x18, 0xa2, 0x21, 0x19, 0x42, 0xc1, 0x10, 0x40, 0x7d, 0xb0, 
+        0xa9, 0x17, 0x69, 0x07, 0xe7, 0x3a, 0x07, 0xe7, 0x9a, 0x02, 0x67, 0xbc, 0x01, 0x0c, 0x10, 0x9c, 
+        0xa0, 0xed, 0x0a, 0xcd, 0x06, 0x00, 0xfd, 0x11, 0x02, 0x91, 0x40, 0x22, 0x21, 0x1a, 0x52, 0x21, 
+        0x1b, 0x52, 0x61, 0x3e, 0x22, 0x61, 0x3f, 0x02, 0x61, 0x40, 0xf0, 0xf0, 0x31, 0x1b, 0xdd, 0xd0, 
+        0xd0, 0x74, 0x37, 0x9d, 0xa2, 0x22, 0x21, 0x3f, 0x72, 0x21, 0x3e, 0x0c, 0x00, 0x4d, 0x00, 0xe0, 
+        0x77, 0xc0, 0xc0, 0x62, 0xc0, 0x67, 0xb2, 0x01, 0x0b, 0x77, 0x3d, 0x07, 0x77, 0x20, 0x09, 0x07, 
+        0x97, 0x02, 0x67, 0x34, 0x03, 0x6d, 0x04, 0x3d, 0x00, 0xdd, 0x06, 0x2d, 0x0c, 0x32, 0x61, 0x3c, 
+        0x0c, 0x34, 0x3d, 0x0e, 0xc5, 0xcc, 0xfe, 0x32, 0x21, 0x3c, 0x22, 0x61, 0x39, 0x0c, 0x34, 0x2d, 
+        0x0d, 0x05, 0xcc, 0xfe, 0x82, 0x21, 0x3d, 0x22, 0x61, 0x3a, 0xac, 0x38, 0x6d, 0x0d, 0x72, 0x21, 
+        0x3c, 0x5d, 0x0e, 0x92, 0x21, 0x39, 0x4d, 0x0c, 0x20, 0x99, 0xc0, 0x21, 0x84, 0xff, 0x00, 0x99, 
+        0x11, 0x90, 0x90, 0x31, 0x8b, 0x99, 0x90, 0x94, 0x21, 0x99, 0x01, 0x01, 0x69, 0xe2, 0xc0, 0x00, 
+        0x00, 0xd1, 0x38, 0xe2, 0x08, 0x0d, 0x08, 0x00, 0x22, 0xcf, 0xfc, 0xc0, 0x00, 0x00, 0x4c, 0xe0, 
+        0x00, 0x0f, 0xd1, 0x02, 0x61, 0x28, 0x66, 0x42, 0x19, 0xa6, 0x4f, 0x02, 0x06, 0xd8, 0x00, 0x02, 
+        0xa1, 0x11, 0xd2, 0x21, 0x28, 0x0c, 0x0e, 0xd0, 0xd0, 0xc0, 0x00, 0xdd, 0x11, 0xd0, 0xd0, 0x31, 
+        0x46, 0x0b, 0x00, 0x72, 0x21, 0x3a, 0x62, 0x21, 0x39, 0x1c, 0xe2, 0x70, 0x66, 0xc0, 0x00, 0x56, 
+        0x11, 0x50, 0x50, 0x31, 0x8b, 0x35, 0x30, 0x34, 0x21, 0x37, 0x22, 0x02, 0x46, 0x49, 0x00, 0x82, 
+        0xa1, 0x48, 0x00, 0x08, 0xc0, 0x00, 0xe3, 0x11, 0x00, 0xd0, 0x11, 0xd0, 0xd0, 0x31, 0xe0, 0xe0, 
+        0x31, 0xf2, 0x21, 0x3d, 0x8c, 0x9f, 0x21, 0x66, 0xff, 0x3d, 0x0d, 0x01, 0x4d, 0xe2, 0xc0, 0x00, 
+        0x00, 0x22, 0x21, 0x30, 0x01, 0x61, 0xff, 0x27, 0xa0, 0x02, 0x46, 0xb4, 0x00, 0x02, 0x21, 0x2f, 
+        0x02, 0xc0, 0x14, 0x32, 0xa0, 0x2a, 0x42, 0xa0, 0x36, 0x1c, 0x15, 0x00, 0xc0, 0x74, 0x2d, 0x0c, 
+        0x05, 0x20, 0xf9, 0x31, 0x58, 0xff, 0xc2, 0x61, 0x31, 0x22, 0xa3, 0xe8, 0xd0, 0x22, 0xd1, 0x05, 
+        0xef, 0x01, 0x7c, 0x63, 0x0c, 0xa4, 0x0c, 0x85, 0x80, 0xf2, 0x01, 0xf0, 0xf8, 0x31, 0x2d, 0x0f, 
+        0x05, 0x1e, 0xf9, 0x2d, 0x0e, 0x1c, 0x13, 0x41, 0x74, 0xfc, 0x0c, 0x95, 0x45, 0x1d, 0xf9, 0x22, 
+        0x21, 0x40, 0x32, 0xaf, 0x38, 0x6c, 0x24, 0x0c, 0xa5, 0xc2, 0x21, 0x41, 0x45, 0x1c, 0xf9, 0x7d, 
+        0x0c, 0x22, 0xa0, 0x77, 0x0c, 0x03, 0x01, 0x03, 0xe2, 0x1c, 0x24, 0x08, 0x00, 0x0c, 0x75, 0x02, 
+        0x20, 0x27, 0x0c, 0x06, 0xc0, 0x00, 0x00, 0x22, 0xa0, 0x77, 0x0c, 0x03, 0x1c, 0x04, 0xc1, 0xfd, 
+        0xe1, 0x0c, 0x25, 0x08, 0x0c, 0x0c, 0x26, 0x02, 0x20, 0x27, 0x0c, 0x07, 0xc0, 0x00, 0x00, 0x22, 
+        0xa0, 0x77, 0x0c, 0x03, 0x1c, 0x84, 0x0c, 0x75, 0x08, 0x0c, 0x0c, 0x76, 0x02, 0x20, 0x27, 0x0c, 
+        0x07, 0xc0, 0x00, 0x00, 0x1c, 0x03, 0xc0, 0x20, 0x00, 0xc1, 0x8c, 0xe0, 0x22, 0x2c, 0xe4, 0x30, 
+        0x22, 0x20, 0xc0, 0x20, 0x00, 0x22, 0x6c, 0xe4, 0x0c, 0xe2, 0x85, 0x44, 0xfc, 0x41, 0x40, 0xeb, 
+        0x42, 0x04, 0x50, 0x1c, 0x00, 0x66, 0x14, 0x1d, 0xf0, 0x60, 0x74, 0xe0, 0x50, 0xf4, 0x00, 0x66, 
+        0x11, 0x60, 0x55, 0x20, 0x62, 0x21, 0x31, 0x80, 0x66, 0x01, 0x60, 0x55, 0x20, 0xc0, 0x20, 0x00, 
+        0x61, 0x7f, 0xe0, 0x52, 0x66, 0xff, 0xc2, 0x21, 0x34, 0xe2, 0x21, 0x36, 0xf2, 0x21, 0x37, 0xd0, 
+        0x20, 0xc0, 0x32, 0xa1, 0x10, 0x02, 0x21, 0x33, 0xd2, 0x21, 0x35, 0x00, 0x22, 0x11, 0x20, 0x20, 
+        0x31, 0x3a, 0x11, 0x0d, 0xf0, 0x0c, 0x03, 0x52, 0x61, 0x29, 0x02, 0x61, 0x28, 0xa2, 0xd1, 0xfe, 
+        0xa2, 0xca, 0x18, 0xa0, 0xaf, 0xb0, 0x72, 0x2a, 0x81, 0x42, 0x2a, 0x7c, 0xb2, 0x2a, 0x80, 0xb2, 
+        0x61, 0x2b, 0xa2, 0x2a, 0x7d, 0x72, 0x61, 0x2a, 0x77, 0x3a, 0x07, 0x77, 0x9a, 0x02, 0x47, 0xbb, 
+        0x01, 0x0c, 0x13, 0xa2, 0x61, 0x26, 0x42, 0x61, 0x25, 0x62, 0x61, 0x24, 0x82, 0x21, 0x28, 0x72, 
+        0xa1, 0x38, 0x0c, 0x12, 0x7c, 0xf0, 0x10, 0x4c, 0x40, 0xb2, 0xcf, 0x2f, 0x0c, 0x05, 0xc0, 0x9c, 
+        0x11, 0x92, 0x61, 0x2d, 0x52, 0x61, 0x38, 0x00, 0xbb, 0x11, 0xc0, 0xde, 0x81, 0xd2, 0x61, 0x2c, 
+        0xb0, 0xb0, 0x31, 0x30, 0x02, 0x93, 0x02, 0x61, 0x3b, 0xb2, 0x61, 0x2e, 0x80, 0x77, 0xc0, 0x72, 
+        0x61, 0x27, 0xa2, 0x21, 0x3b, 0x42, 0x21, 0x2b, 0x66, 0x1a, 0x08, 0x52, 0x21, 0x26, 0x42, 0x21, 
+        0x25, 0x86, 0x00, 0x00, 0x52, 0x21, 0x2a, 0x32, 0x21, 0x2c, 0x22, 0x21, 0x2d, 0x85, 0x7e, 0x01, 
+        0xb2, 0x21, 0x3d, 0x20, 0xd0, 0xf4, 0xd2, 0xcd, 0x01, 0xd0, 0xd1, 0xf4, 0xc2, 0xcd, 0x04, 0xc0, 
+        0xc3, 0xf4, 0x16, 0xeb, 0x00, 0x3d, 0x0f, 0x21, 0xfb, 0xfe, 0x4d, 0x0c, 0x5d, 0x0d, 0x01, 0xe0, 
+        0xe1, 0xc0, 0x00, 0x00, 0x3d, 0x0d, 0x2d, 0x0c, 0xc5, 0x95, 0xff, 0xe2, 0xa1, 0x38, 0xc2, 0x21, 
+        0x3b, 0xd2, 0x21, 0x28, 0xc0, 0xc2, 0xd1, 0x00, 0x3c, 0x11, 0x30, 0x30, 0x31, 0xd0, 0xd3, 0xc0, 
+        0xea, 0xdd, 0xe2, 0x21, 0x3d, 0x8c, 0x7e, 0x21, 0xf0, 0xfe, 0x01, 0xd5, 0xe1, 0xc0, 0x00, 0x00, 
+        0x31, 0xe9, 0xfe, 0x52, 0xa0, 0x64, 0x21, 0xf6, 0xea, 0xc0, 0x40, 0x60, 0x00, 0x44, 0x11, 0x40, 
+        0x40, 0x31, 0x22, 0x02, 0x01, 0x45, 0x56, 0xfb, 0x22, 0xa0, 0x06, 0x32, 0x21, 0x2e, 0x42, 0xa0, 
+        0x09, 0x52, 0xc1, 0x60, 0x62, 0xc1, 0x7f, 0x62, 0xc6, 0x01, 0xc5, 0x99, 0xff, 0x0c, 0x0b, 0x72, 
+        0x21, 0x1a, 0x32, 0x21, 0x1b, 0x0c, 0x05, 0x02, 0x21, 0x18, 0x42, 0x21, 0x19, 0x42, 0x61, 0x23, 
+        0x02, 0x61, 0x22, 0xad, 0x05, 0x40, 0x33, 0xc0, 0x00, 0x67, 0xc0, 0x67, 0xb7, 0x01, 0x0b, 0x33, 
+        0x7d, 0x03, 0xe6, 0x13, 0x07, 0xcc, 0x03, 0xcc, 0x26, 0x6d, 0x0b, 0x7d, 0x0a, 0xcd, 0x07, 0xed, 
+        0x06, 0x32, 0x21, 0x23, 0x22, 0x21, 0x22, 0x0c, 0x34, 0x85, 0x9d, 0xfe, 0xe2, 0x61, 0x21, 0x3d, 
+        0x0c, 0x22, 0x61, 0x32, 0x0c, 0x34, 0x2d, 0x0e, 0x85, 0x9c, 0xfe, 0xe2, 0x21, 0x32, 0x62, 0x21, 
+        0x3d, 0x20, 0xee, 0xc0, 0xe2, 0x61, 0x42, 0x00, 0xee, 0x11, 0xe0, 0xe0, 0x31, 0x9c, 0x96, 0x7d, 
+        0x0c, 0x52, 0x21, 0x23, 0x42, 0x21, 0x22, 0x62, 0x21, 0x21, 0x21, 0xc8, 0xfe, 0x8b, 0x0e, 0x00, 
+        0x04, 0x21, 0x09, 0x01, 0x01, 0xab, 0xe1, 0xc0, 0x00, 0x00, 0x22, 0x21, 0x42, 0x32, 0x21, 0x29, 
+        0x00, 0x22, 0x11, 0x20, 0x20, 0x31, 0x37, 0xa2, 0x34, 0x32, 0x21, 0x38, 0x02, 0x21, 0x38, 0x42, 
+        0x21, 0x3b, 0x1b, 0x20, 0x40, 0x50, 0x60, 0x80, 0x55, 0x01, 0x20, 0x00, 0x74, 0x02, 0x61, 0x38, 
+        0x50, 0x48, 0x31, 0x42, 0x61, 0x3b, 0x66, 0x13, 0x0b, 0xe2, 0x21, 0x24, 0xd2, 0x21, 0x27, 0x00, 
+        0xee, 0x11, 0xe0, 0xe0, 0x31, 0x02, 0xc0, 0xfe, 0x56, 0x60, 0xea, 0x46, 0x01, 0x00, 0x32, 0x91, 
+        0x40, 0x32, 0x61, 0x40, 0x02, 0xcd, 0x10, 0x8b, 0x3e, 0x30, 0x34, 0x21, 0x46, 0x41, 0xff, 0x01, 
+        0x65, 0xe1, 0x08, 0x00, 0x20, 0x28, 0x21, 0x08, 0xe0, 0x0c, 0x03, 0xc0, 0x00, 0x00, 0x01, 0x61, 
+        0xe1, 0x0c, 0x03, 0x08, 0x00, 0xcd, 0x02, 0x08, 0xe0, 0x21, 0xa9, 0xe9, 0xc0, 0x00, 0x00, 0x02, 
+        0x21, 0x2f, 0x20, 0x2c, 0xc0, 0x8b, 0x22, 0x20, 0x24, 0x21, 0x20, 0x00, 0xc0, 0x86, 0x40, 0xff, 
+        0x02, 0xa1, 0x5f, 0xc6, 0x26, 0xff, 0x00, 0x00, 0x0c, 0x68, 0xb2, 0xa0, 0x70, 0x92, 0xa0, 0x60, 
+        0x1c, 0xe7, 0xa2, 0x13, 0x00, 0xbc, 0x54, 0x26, 0x6a, 0x29, 0x42, 0x12, 0x00, 0xcc, 0x84, 0x7d, 
+        0x08, 0x4c, 0x06, 0x62, 0x52, 0x00, 0x86, 0x06, 0x00, 0x26, 0xd4, 0x04, 0x97, 0x94, 0x09, 0x9d, 
+        0x0b, 0x92, 0x52, 0x00, 0x7d, 0x08, 0x86, 0x02, 0x00, 0xb7, 0x94, 0x0f, 0x72, 0xa0, 0x78, 0x72, 
+        0x52, 0x00, 0x7d, 0x08, 0x72, 0x53, 0x00, 0x0d, 0xf0, 0x26, 0xd4, 0x25, 0x0d, 0xf0, 0x77, 0x1a, 
+        0x27, 0x42, 0x12, 0x00, 0x82, 0xa0, 0x78, 0x87, 0x94, 0x07, 0x8d, 0x07, 0xb2, 0x52, 0x00, 0x86, 
+        0x05, 0x00, 0xb7, 0x14, 0x04, 0x97, 0x94, 0xe0, 0x4c, 0x09, 0x8d, 0x07, 0x92, 0x52, 0x00, 0x86, 
+        0x01, 0x00, 0x8d, 0x07, 0x0c, 0x09, 0x92, 0x52, 0x00, 0x82, 0x53, 0x00, 0x0d, 0xf0, 0x00, 0x00, 
+        0x80, 0x82, 0xfe, 0x3f, 0x5b, 0xf0, 0xfe, 0x3f, 0x32, 0xa0, 0x00, 0x42, 0xa0, 0x12, 0x52, 0xa0, 
+        0x07, 0x0c, 0x06, 0x12, 0xc1, 0x90, 0xd2, 0x61, 0x15, 0xf2, 0x61, 0x17, 0xc2, 0x61, 0x14, 0xe2, 
+        0x61, 0x16, 0xe1, 0x30, 0xe1, 0x02, 0x61, 0x13, 0x08, 0x0e, 0xcd, 0x02, 0x02, 0x20, 0x25, 0x22, 
+        0xa0, 0x77, 0xc0, 0x00, 0x00, 0x31, 0x6f, 0xfe, 0x52, 0xa0, 0x64, 0x4d, 0x0c, 0xd1, 0x7c, 0xea, 
+        0xcd, 0x02, 0x22, 0x0d, 0x01, 0x45, 0x38, 0xfb, 0x22, 0xa0, 0x77, 0x0c, 0x03, 0x1c, 0x24, 0x0c, 
+        0x75, 0x0c, 0x06, 0x08, 0x0e, 0x0c, 0x07, 0x02, 0x20, 0x27, 0xc2, 0x61, 0x12, 0xc0, 0x00, 0x00, 
+        0x22, 0xa0, 0x77, 0x0c, 0x03, 0x1c, 0x04, 0x0c, 0x25, 0x08, 0x0e, 0x0c, 0x26, 0x02, 0x20, 0x27, 
+        0x0c, 0x17, 0xc0, 0x00, 0x00, 0x22, 0xa0, 0x77, 0x0c, 0x03, 0x1c, 0x84, 0x0c, 0x75, 0x08, 0x0e, 
+        0x0c, 0x76, 0x02, 0x20, 0x27, 0x0c, 0x17, 0xc0, 0x00, 0x00, 0x6c, 0xf3, 0xc1, 0xb0, 0xdf, 0xc0, 
+        0x20, 0x00, 0x22, 0x2c, 0xe4, 0x30, 0x22, 0x10, 0xc0, 0x20, 0x00, 0x08, 0x0e, 0x02, 0x20, 0x28, 
+        0x22, 0x6c, 0xe4, 0xc0, 0x00, 0x00, 0x0c, 0x12, 0x3c, 0x33, 0x0c, 0x04, 0x0c, 0x05, 0x0c, 0x06, 
+        0x69, 0x21, 0x69, 0x11, 0x69, 0x01, 0x08, 0x0e, 0x0c, 0x07, 0x02, 0x20, 0x1a, 0x0c, 0x06, 0xc0, 
+        0x00, 0x00, 0x61, 0xcf, 0xff, 0x0c, 0x57, 0x0c, 0x00, 0x21, 0x30, 0xe8, 0x22, 0x61, 0x18, 0x02, 
+        0x61, 0x10, 0x72, 0x61, 0x11, 0x0c, 0x22, 0x0c, 0x13, 0x08, 0x0e, 0xc2, 0x21, 0x10, 0x02, 0x20, 
+        0x2b, 0x60, 0x4c, 0x90, 0x42, 0x14, 0x00, 0xf0, 0xcc, 0x11, 0xc0, 0x00, 0x00, 0x52, 0x21, 0x10, 
+        0x1c, 0xe0, 0x22, 0xc1, 0x20, 0x32, 0xc1, 0x10, 0x3a, 0xdc, 0x2a, 0xfc, 0x02, 0x5f, 0x00, 0xb6, 
+        0x25, 0x02, 0x86, 0x65, 0x00, 0x62, 0xa0, 0x78, 0x62, 0x5d, 0x00, 0x0c, 0x0c, 0x22, 0xa0, 0x03, 
+        0x02, 0x2e, 0x00, 0x32, 0xa0, 0x01, 0x02, 0x20, 0x2b, 0x42, 0x1d, 0x00, 0xc0, 0x00, 0x00, 0x0c, 
+        0x32, 0x08, 0x0e, 0x0c, 0x23, 0x02, 0x20, 0x2b, 0x42, 0x1f, 0x00, 0xc0, 0x00, 0x00, 0x22, 0x1d, 
+        0x00, 0x32, 0x1f, 0x00, 0x42, 0x21, 0x18, 0x05, 0x3b, 0xf8, 0x08, 0x0e, 0x0c, 0x12, 0x08, 0xd0, 
+        0x32, 0xa4, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x20, 0x00, 0x21, 0x80, 0xdf, 0x08, 0x0e, 0x22, 0x22, 
+        0xf9, 0x08, 0xc0, 0x22, 0x61, 0x19, 0xc0, 0x00, 0x00, 0x02, 0x21, 0x19, 0x21, 0x27, 0xfe, 0x31, 
+        0x0d, 0xe1, 0x07, 0xa2, 0x02, 0x07, 0xa3, 0x3b, 0x32, 0x1d, 0x00, 0x07, 0x22, 0x19, 0x42, 0xa0, 
+        0x78, 0x47, 0x93, 0x07, 0x52, 0x1f, 0x00, 0x1c, 0xe6, 0x67, 0x15, 0x27, 0x2d, 0x0d, 0x3d, 0x0f, 
+        0x0c, 0x14, 0x45, 0xe0, 0xff, 0x06, 0x04, 0x00, 0xcc, 0x43, 0x72, 0x1f, 0x00, 0x26, 0x67, 0x13, 
+        0x2d, 0x0d, 0x3d, 0x0f, 0x0c, 0x04, 0x05, 0xdf, 0xff, 0x1b, 0xcc, 0xc0, 0xc0, 0x74, 0x26, 0x5c, 
+        0x02, 0x06, 0xda, 0xff, 0xf2, 0x21, 0x10, 0xd2, 0xa0, 0x00, 0x0c, 0x0c, 0x08, 0x0e, 0x0c, 0x12, 
+        0x08, 0xd0, 0x32, 0xa2, 0x00, 0xc0, 0x00, 0x00, 0x22, 0xc1, 0x30, 0x0c, 0x93, 0x45, 0xbf, 0xf8, 
+        0x08, 0x0e, 0x08, 0xc0, 0xc0, 0x00, 0x00, 0x28, 0xd1, 0x1b, 0xcc, 0xc0, 0xc0, 0x74, 0xda, 0xd2, 
+        0x66, 0xcc, 0xd8, 0x08, 0x0e, 0x28, 0xc1, 0x08, 0xe0, 0x0c, 0x03, 0xc0, 0x00, 0x00, 0x2d, 0x0d, 
+        0x08, 0x0e, 0xc2, 0x21, 0x11, 0x08, 0xe0, 0x0c, 0x53, 0xc0, 0x00, 0x00, 0x61, 0x85, 0xff, 0x1b, 
+        0xff, 0x0b, 0xcc, 0xc2, 0x61, 0x11, 0xf0, 0xf0, 0x74, 0xf2, 0x61, 0x10, 0x56, 0x5c, 0xed, 0x08, 
+        0x0e, 0x02, 0x20, 0x1b, 0x0c, 0x02, 0xc0, 0x00, 0x00, 0x08, 0x0e, 0x02, 0x20, 0x2f, 0xc0, 0x00, 
+        0x00, 0x72, 0x21, 0x12, 0x22, 0xa0, 0x77, 0x0c, 0x03, 0x1c, 0x24, 0x08, 0x0e, 0x0c, 0x75, 0x02, 
+        0x20, 0x27, 0x0c, 0x06, 0xc0, 0x00, 0x00, 0x22, 0xa0, 0x77, 0x0c, 0x03, 0x1c, 0x04, 0x0c, 0x25, 
+        0x08, 0x0e, 0x0c, 0x26, 0x02, 0x20, 0x27, 0x0c, 0x07, 0xc0, 0x00, 0x00, 0xc1, 0x44, 0xdf, 0x22, 
+        0xa0, 0x77, 0x0c, 0x03, 0x1c, 0x84, 0x0c, 0x75, 0x08, 0x0e, 0x0c, 0x76, 0x02, 0x20, 0x27, 0x0c, 
+        0x07, 0xc0, 0x00, 0x00, 0x1c, 0x05, 0xc0, 0x20, 0x00, 0x42, 0x2c, 0xe4, 0x50, 0x44, 0x20, 0xc0, 
+        0x20, 0x00, 0x22, 0xa0, 0x64, 0x61, 0x5b, 0xe3, 0x31, 0xf2, 0xe9, 0x42, 0x6c, 0xe4, 0x51, 0xc0, 
+        0xef, 0x0c, 0x04, 0x52, 0x95, 0x00, 0x32, 0x03, 0x01, 0x4b, 0x76, 0x29, 0x01, 0x0c, 0xe2, 0xc5, 
+        0xd2, 0xfb, 0x21, 0x60, 0xff, 0x85, 0x63, 0xfb, 0xc2, 0x21, 0x14, 0xd2, 0x21, 0x15, 0xe2, 0x21, 
+        0x16, 0xf2, 0x21, 0x17, 0x02, 0x21, 0x13, 0x12, 0xc1, 0x70, 0x0d, 0xf0, 0x62, 0xa0, 0x60, 0x62, 
+        0x5d, 0x00, 0x46, 0x99, 0xff, 0x00, 0x00, 0x00, 0x12, 0xc1, 0x90, 0x42, 0x61, 0x12, 0x02, 0x61, 
+        0x0d, 0xf2, 0x61, 0x11, 0xe2, 0x61, 0x10, 0xc2, 0x61, 0x0e, 0xd2, 0x61, 0x0f, 0x5d, 0x03, 0xd1, 
+        0xfa, 0xe1, 0xc0, 0x20, 0x00, 0x71, 0x2d, 0xe3, 0xe8, 0xbd, 0xc0, 0x20, 0x00, 0x62, 0x2d, 0x42, 
+        0x70, 0x66, 0x20, 0xc0, 0x20, 0x00, 0x62, 0x6d, 0x42, 0x41, 0x29, 0xe3, 0xc0, 0x20, 0x00, 0x38, 
+        0xbd, 0x40, 0x33, 0x10, 0x4d, 0x05, 0xc0, 0x20, 0x00, 0x52, 0xa0, 0x64, 0x39, 0xbd, 0x01, 0xd0, 
+        0xe9, 0x3d, 0x02, 0x22, 0x00, 0x01, 0x45, 0x0d, 0xfb, 0xc1, 0x7a, 0xe0, 0x08, 0x0c, 0x02, 0x20, 
+        0x28, 0xe2, 0x61, 0x18, 0xc0, 0x00, 0x00, 0x08, 0x0c, 0x02, 0x20, 0x10, 0x0c, 0x12, 0xc0, 0x00, 
+        0x00, 0x0c, 0x02, 0x32, 0xa1, 0xf4, 0x08, 0x0c, 0x0c, 0x04, 0x02, 0x20, 0x15, 0x0c, 0x65, 0xc0, 
+        0x00, 0x00, 0x0c, 0x22, 0x08, 0x0c, 0x0c, 0x13, 0x02, 0x20, 0x2b, 0x42, 0xa1, 0x84, 0xc0, 0x00, 
+        0x00, 0x21, 0xdf, 0xe1, 0x32, 0xc1, 0x10, 0x0c, 0xa4, 0x08, 0x0c, 0x0c, 0x05, 0x02, 0x20, 0x3b, 
+        0x0c, 0x06, 0xc0, 0x00, 0x00, 0x0c, 0x22, 0x08, 0x0c, 0x0c, 0x13, 0x02, 0x20, 0x2b, 0x42, 0xa1, 
+        0xf4, 0xc0, 0x00, 0x00, 0x0c, 0x22, 0x42, 0xaf, 0x9c, 0x52, 0xa0, 0x79, 0x62, 0xa0, 0x7b, 0x0c, 
+        0x07, 0x72, 0x61, 0x15, 0x62, 0x61, 0x14, 0x52, 0x61, 0x16, 0x49, 0xc1, 0x22, 0x61, 0x13, 0x1c, 
+        0x00, 0x0c, 0x0d, 0x0c, 0x08, 0x82, 0x61, 0x17, 0x92, 0x21, 0x15, 0x22, 0xcd, 0x70, 0xcc, 0xa9, 
+        0x20, 0xf0, 0x74, 0xe2, 0xa0, 0x7b, 0x02, 0x61, 0x19, 0x06, 0x02, 0x00, 0xf2, 0x21, 0x16, 0x20, 
+        0xe0, 0x74, 0x02, 0x61, 0x19, 0x22, 0xa0, 0x64, 0x32, 0xa0, 0x00, 0x02, 0x2c, 0x00, 0x42, 0xa0, 
+        0x04, 0x02, 0x20, 0x26, 0x5d, 0x0f, 0xc0, 0x00, 0x00, 0x22, 0xa0, 0x64, 0x0c, 0x03, 0x08, 0x0c, 
+        0x0c, 0x74, 0x02, 0x20, 0x26, 0x5d, 0x0e, 0xc0, 0x00, 0x00, 0x0c, 0x12, 0x4c, 0x03, 0x0c, 0x04, 
+        0x0c, 0x05, 0x0c, 0x06, 0x69, 0x01, 0x69, 0x11, 0x69, 0x21, 0x08, 0x0c, 0x0c, 0x07, 0x02, 0x20, 
+        0x1a, 0x0c, 0x06, 0xc0, 0x00, 0x00, 0x0c, 0x52, 0x01, 0xbe, 0xdf, 0xc0, 0x00, 0x00, 0x08, 0x0c, 
+        0x0c, 0x12, 0x08, 0xd0, 0x32, 0xa4, 0x00, 0xc0, 0x00, 0x00, 0x22, 0xc1, 0x20, 0x0c, 0xa3, 0x45, 
+        0x9c, 0xf8, 0x08, 0x0c, 0x08, 0xc0, 0xc0, 0x00, 0x00, 0x08, 0x0c, 0x28, 0x81, 0x08, 0xe0, 0x0c, 
+        0x03, 0xc0, 0x00, 0x00, 0x08, 0x0c, 0x28, 0x91, 0x08, 0xe0, 0x0c, 0x03, 0xc0, 0x00, 0x00, 0x08, 
+        0xc1, 0x4b, 0x22, 0x20, 0x23, 0x21, 0x00, 0x22, 0x11, 0x20, 0x20, 0x31, 0x27, 0xa0, 0x0f, 0xe2, 
+        0x61, 0x14, 0xf2, 0x61, 0x16, 0x29, 0xc1, 0x0c, 0x03, 0x32, 0x61, 0x17, 0x06, 0x04, 0x00, 0x00, 
+        0x92, 0xc0, 0x72, 0x21, 0x17, 0x0c, 0x18, 0x70, 0x70, 0x74, 0x90, 0x78, 0x83, 0x72, 0x61, 0x17, 
+        0x08, 0x0c, 0x08, 0xc0, 0xc0, 0x00, 0x00, 0x08, 0x0c, 0x02, 0x20, 0x1b, 0x0c, 0x12, 0xc0, 0x00, 
+        0x00, 0x1b, 0xdd, 0x02, 0x21, 0x19, 0xd0, 0xd0, 0x74, 0x0b, 0x00, 0x56, 0x90, 0xf1, 0xe2, 0x21, 
+        0x15, 0x0c, 0x1f, 0x0c, 0x02, 0x62, 0x21, 0x15, 0x02, 0x21, 0x17, 0x1b, 0x76, 0x0b, 0x00, 0x00, 
+        0x2f, 0x83, 0x70, 0x60, 0x74, 0xdc, 0x3e, 0x32, 0x21, 0x16, 0x42, 0x21, 0x12, 0x30, 0x30, 0x34, 
+        0xf0, 0x33, 0x11, 0x30, 0x32, 0x20, 0x32, 0x44, 0x00, 0x46, 0x04, 0x00, 0x42, 0x21, 0x14, 0x52, 
+        0x21, 0x12, 0x40, 0x40, 0x34, 0xf0, 0x44, 0x11, 0x40, 0x42, 0x20, 0x42, 0x45, 0x01, 0x52, 0x21, 
+        0x13, 0x62, 0x61, 0x15, 0x0b, 0x55, 0x52, 0x61, 0x13, 0x56, 0x25, 0xec, 0x08, 0x0c, 0x02, 0x20, 
+        0x10, 0x0c, 0x02, 0xc0, 0x00, 0x00, 0x08, 0x0c, 0xd2, 0x21, 0x18, 0x02, 0x20, 0x2f, 0xe1, 0x7a, 
+        0xe1, 0xc0, 0x00, 0x00, 0x31, 0xa6, 0xe2, 0xc0, 0x20, 0x00, 0x22, 0x2e, 0x42, 0x30, 0x22, 0x10, 
+        0xc0, 0x20, 0x00, 0x22, 0x6e, 0x42, 0xc0, 0x20, 0x00, 0xc8, 0xe1, 0xd9, 0xbe, 0xf2, 0x21, 0x11, 
+        0xd8, 0xf1, 0xe2, 0x21, 0x10, 0x08, 0xd1, 0x12, 0xc1, 0x70, 0x0d, 0xf0, 0x30, 0xf3, 0xfe, 0x3f, 
+        0x12, 0xc1, 0xf0, 0x09, 0x01, 0x01, 0xfd, 0xff, 0x08, 0x00, 0x80, 0x42, 0x01, 0x08, 0x00, 0x40, 
+        0x28, 0x31, 0xc0, 0x00, 0x00, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x12, 0xc1, 0xf0, 0x09, 
+        0x01, 0x01, 0xf6, 0xff, 0x08, 0x00, 0x08, 0x60, 0xc0, 0x00, 0x00, 0x08, 0x01, 0x12, 0xc1, 0x10, 
+        0x0d, 0xf0, 0x00, 0x00, 0x12, 0xc1, 0xf0, 0xc9, 0x11, 0x09, 0x01, 0xcd, 0x03, 0x01, 0xef, 0xff, 
+        0x80, 0x32, 0x01, 0x08, 0x00, 0x30, 0x28, 0x31, 0x08, 0x00, 0x3d, 0x0c, 0xc0, 0x00, 0x00, 0x01, 
+        0xeb, 0xff, 0x08, 0x00, 0x08, 0x60, 0x2d, 0x0c, 0xc0, 0x00, 0x00, 0xc8, 0x11, 0x08, 0x01, 0x12, 
+        0xc1, 0x10, 0x0d, 0xf0, 0x0c, 0x03, 0x12, 0xc1, 0xf0, 0x5d, 0x02, 0x09, 0x01, 0x01, 0xe3, 0xff, 
+        0x0c, 0x12, 0x59, 0x00, 0xc5, 0xfb, 0xff, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 
+        0x12, 0xc1, 0xf0, 0x09, 0x01, 0x01, 0xdd, 0xff, 0x08, 0x00, 0x08, 0x10, 0xc0, 0x00, 0x00, 0x0c, 
+        0x02, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x12, 0xc1, 0xf0, 0x09, 0x01, 0x01, 0xd7, 0xff, 
+        0x08, 0x00, 0x80, 0x32, 0x01, 0x08, 0x20, 0x30, 0x28, 0x31, 0xc0, 0x00, 0x00, 0x08, 0x01, 0x12, 
+        0xc1, 0x10, 0x0d, 0xf0, 0x12, 0xc1, 0xf0, 0x09, 0x01, 0x01, 0xd0, 0xff, 0x08, 0x00, 0x08, 0x30, 
+        0xc0, 0x00, 0x00, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0x12, 0xc1, 0xf0, 0x09, 
+        0x01, 0x01, 0xca, 0xff, 0x08, 0x00, 0x08, 0x40, 0xc0, 0x00, 0x00, 0x08, 0x01, 0x12, 0xc1, 0x10, 
+        0x0d, 0xf0, 0x00, 0x00, 0x12, 0xc1, 0xf0, 0x09, 0x01, 0x01, 0xc4, 0xff, 0x08, 0x00, 0x08, 0x50, 
+        0xc0, 0x00, 0x00, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0x12, 0xc1, 0xf0, 0x09, 
+        0x01, 0x01, 0xbe, 0xff, 0x08, 0x00, 0x08, 0x60, 0xc0, 0x00, 0x00, 0x08, 0x01, 0x12, 0xc1, 0x10, 
+        0x0d, 0xf0, 0x00, 0x00, 0x12, 0xc1, 0xf0, 0x09, 0x01, 0x01, 0xb8, 0xff, 0x08, 0x00, 0x08, 0x70, 
+        0xc0, 0x00, 0x00, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0x21, 0x33, 0xe2, 0xc0, 
+        0x20, 0x00, 0x22, 0x22, 0x80, 0x0d, 0xf0, 0x00, 0xc0, 0x20, 0x00, 0x28, 0x02, 0x0d, 0xf0, 0x00, 
+        0xc0, 0x20, 0x00, 0x39, 0x02, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x80, 0x7f, 0x00, 0x00, 0xf0, 0x7f, 
+        0x00, 0x00, 0x00, 0x38, 0x67, 0xc3, 0x04, 0x70, 0x72, 0x11, 0x8c, 0x07, 0x0d, 0xf0, 0x2d, 0x03, 
+        0x0d, 0xf0, 0x00, 0x00, 0x80, 0x76, 0x11, 0x70, 0x33, 0x30, 0xc6, 0x3c, 0x00, 0x00, 0x00, 0x00, 
+        0x61, 0xf6, 0xff, 0x30, 0x72, 0x30, 0x96, 0xa7, 0xfe, 0x67, 0x42, 0xd7, 0x67, 0x43, 0xde, 0x20, 
+        0x77, 0x85, 0x30, 0x87, 0x85, 0x87, 0x37, 0x4c, 0x67, 0x03, 0x28, 0x60, 0x33, 0x20, 0x80, 0x33, 
+        0x11, 0x30, 0x38, 0x41, 0x80, 0xa7, 0xc0, 0xf6, 0xca, 0x29, 0x00, 0x0a, 0x40, 0x0c, 0x09, 0x90, 
+        0x93, 0x81, 0x30, 0x30, 0x91, 0x3a, 0x22, 0x20, 0xa7, 0x85, 0x77, 0x1a, 0x4a, 0x8d, 0x07, 0x46, 
+        0x15, 0x00, 0x00, 0x00, 0x70, 0x33, 0x11, 0x30, 0x39, 0x41, 0x67, 0x02, 0x04, 0x1b, 0x88, 0x46, 
+        0xf4, 0xff, 0x3a, 0x22, 0x0d, 0xf0, 0x00, 0x00, 0x70, 0x22, 0x11, 0x20, 0x29, 0x41, 0x1b, 0x77, 
+        0x46, 0x03, 0x00, 0x00, 0x00, 0x67, 0x02, 0xef, 0x60, 0x22, 0x20, 0x80, 0x22, 0x11, 0x20, 0x28, 
+        0x41, 0x70, 0xa8, 0xc0, 0xf6, 0xca, 0x1c, 0x00, 0x0a, 0x40, 0x00, 0x92, 0xa1, 0x20, 0x20, 0x91, 
+        0x3a, 0x22, 0x20, 0xa7, 0x85, 0x87, 0x9a, 0x0f, 0xd6, 0x69, 0x00, 0x1b, 0x22, 0xf0, 0x99, 0x11, 
+        0xac, 0xc9, 0x0d, 0xf0, 0x2d, 0x03, 0x0d, 0xf0, 0xad, 0x02, 0x20, 0x21, 0x41, 0x1b, 0x88, 0xa0, 
+        0x88, 0x01, 0x8a, 0x22, 0x67, 0x42, 0x08, 0x07, 0x6a, 0x03, 0x1b, 0x22, 0x9c, 0x09, 0x0d, 0xf0, 
+        0x20, 0x27, 0x85, 0x90, 0x22, 0x01, 0xf0, 0x88, 0x11, 0x80, 0x22, 0x20, 0x0d, 0xf0, 0x00, 0x00, 
+        0x20, 0x21, 0x41, 0xf0, 0x22, 0x11, 0x0d, 0xf0, 0x67, 0xc3, 0x05, 0x41, 0x70, 0xe8, 0x40, 0x22, 
+        0x20, 0x0d, 0xf0, 0x00, 0x80, 0x76, 0x11, 0x70, 0x23, 0x30, 0x0d, 0xf0, 0x80, 0x76, 0x11, 0x70, 
+        0x33, 0x30, 0xc6, 0xc8, 0xff, 0x00, 0x00, 0x00, 0x61, 0xbc, 0xff, 0x30, 0x72, 0x30, 0x96, 0xa7, 
+        0xfe, 0x67, 0x42, 0xd3, 0x67, 0x43, 0xdc, 0x20, 0x77, 0x75, 0x30, 0x87, 0x75, 0x37, 0x32, 0x4b, 
+        0x67, 0x03, 0x2d, 0x60, 0x33, 0x20, 0x80, 0x33, 0x11, 0x30, 0x38, 0x41, 0x80, 0xa7, 0xc0, 0xf6, 
+        0xca, 0x37, 0x00, 0x0a, 0x40, 0x0c, 0x09, 0x90, 0x93, 0x81, 0x30, 0x30, 0x91, 0x30, 0x22, 0xc0, 
+        0x90, 0x90, 0x60, 0x0b, 0xa2, 0x90, 0x2a, 0x93, 0x20, 0xa7, 0x75, 0x77, 0x1a, 0x51, 0xc6, 0x1b, 
+        0x00, 0x37, 0x12, 0x68, 0x70, 0x33, 0x11, 0x30, 0x39, 0x41, 0x67, 0x02, 0xce, 0x1b, 0x88, 0x46, 
+        0xf2, 0xff, 0x00, 0x00, 0x80, 0x76, 0x11, 0x70, 0x23, 0x30, 0x0d, 0xf0, 0x67, 0x02, 0x3c, 0x60, 
+        0x22, 0x20, 0x80, 0x22, 0x11, 0x20, 0x28, 0x41, 0x70, 0xa8, 0xc0, 0xf6, 0xca, 0xe5, 0x00, 0x0a, 
+        0x40, 0x0c, 0x09, 0x90, 0x92, 0x81, 0x20, 0x20, 0x91, 0x80, 0xb6, 0x11, 0xb0, 0x33, 0x30, 0x20, 
+        0x23, 0xc0, 0x90, 0x90, 0x60, 0x0b, 0xa2, 0x90, 0x2a, 0x93, 0x20, 0xa7, 0x75, 0x87, 0x9a, 0x20, 
+        0xd6, 0x69, 0x00, 0x1b, 0x22, 0xf0, 0x99, 0x11, 0xbc, 0xc9, 0x0d, 0xf0, 0x37, 0x12, 0x0d, 0x70, 
+        0x22, 0x11, 0x20, 0x29, 0x41, 0x67, 0x03, 0xbf, 0x1b, 0x77, 0x86, 0xee, 0xff, 0x0c, 0x02, 0x0d, 
+        0xf0, 0x70, 0x82, 0x11, 0xac, 0x88, 0x60, 0xf8, 0x40, 0x80, 0x89, 0x41, 0xa7, 0xa6, 0x2e, 0x1b, 
+        0x66, 0x00, 0x16, 0x40, 0x90, 0x88, 0x81, 0x00, 0x99, 0xa1, 0x20, 0x27, 0x85, 0x60, 0x22, 0xc0, 
+        0x90, 0x22, 0x01, 0x8a, 0x22, 0xc6, 0xed, 0xff, 0x20, 0x21, 0x41, 0xf0, 0x22, 0x11, 0x0d, 0xf0, 
+        0x16, 0x99, 0xfc, 0xb2, 0xca, 0xe8, 0x1c, 0x86, 0xb0, 0x6a, 0xa3, 0x86, 0xf4, 0xff, 0x6d, 0x0a, 
+        0x46, 0xf3, 0xff, 0x00, 0xf0, 0x22, 0x11, 0x20, 0x21, 0x41, 0xac, 0xe2, 0xa0, 0xf2, 0x40, 0xa2, 
+        0xca, 0xf8, 0x00, 0x1a, 0x40, 0x00, 0x22, 0xa1, 0x0c, 0x18, 0xa0, 0x88, 0xc0, 0xc6, 0x1e, 0x00, 
+        0xf0, 0x33, 0x11, 0x30, 0x31, 0x41, 0x9c, 0x23, 0xa0, 0xf3, 0x40, 0xa2, 0xca, 0xf8, 0x00, 0x1a, 
+        0x40, 0x00, 0x33, 0xa1, 0x0c, 0x19, 0xa0, 0x99, 0xc0, 0x86, 0x18, 0x00, 0x70, 0x2f, 0x05, 0x10, 
+        0x22, 0x01, 0x06, 0x34, 0x00, 0xf0, 0x83, 0x11, 0xcc, 0x88, 0x41, 0x18, 0xe8, 0x40, 0x22, 0x20, 
+        0x86, 0x30, 0x00, 0x00, 0x67, 0xc3, 0x06, 0x70, 0x83, 0x11, 0x8c, 0x08, 0x2d, 0x03, 0x70, 0x7f, 
+        0x05, 0xf0, 0x22, 0x11, 0x00, 0x41, 0x40, 0x20, 0x27, 0x81, 0x06, 0x2a, 0x00, 0xf0, 0x82, 0x11, 
+        0x56, 0x88, 0xfe, 0x71, 0x0e, 0xe8, 0x70, 0x23, 0x20, 0x46, 0x26, 0x00, 0x12, 0xc1, 0xe0, 0xc9, 
+        0x41, 0xd9, 0x51, 0xe9, 0x61, 0xf9, 0x71, 0x61, 0x5c, 0xff, 0x30, 0x72, 0x30, 0x67, 0x42, 0xb4, 
+        0x67, 0x43, 0xd9, 0x20, 0x87, 0x75, 0x30, 0x97, 0x75, 0x16, 0x78, 0xf6, 0x16, 0x09, 0xf8, 0x9a, 
+        0x88, 0xa1, 0x0b, 0xe6, 0x60, 0x22, 0x20, 0xa0, 0x22, 0x10, 0x60, 0x33, 0x20, 0xa0, 0x33, 0x10, 
+        0x20, 0x40, 0xf5, 0x30, 0x50, 0xf5, 0x50, 0x62, 0xc1, 0x30, 0xb4, 0xc1, 0x0c, 0x09, 0xba, 0x66, 
+        0xb7, 0xb6, 0x01, 0x1b, 0x99, 0x10, 0x40, 0x40, 0x60, 0x99, 0x81, 0x30, 0xb2, 0xc1, 0x00, 0x66, 
+        0xa1, 0xba, 0x66, 0xb7, 0xb6, 0x01, 0x1b, 0x99, 0x50, 0x24, 0xc1, 0x9a, 0x22, 0x0c, 0x94, 0x20, 
+        0x5f, 0x41, 0x8c, 0x25, 0x0b, 0x44, 0x1b, 0x88, 0x00, 0x14, 0x40, 0x60, 0x22, 0x81, 0x00, 0x66, 
+        0xa1, 0x42, 0xa0, 0x80, 0x40, 0x88, 0xc0, 0x42, 0xa0, 0xfe, 0x47, 0xb8, 0x2f, 0xd6, 0x76, 0x00, 
+        0x1b, 0x22, 0xf0, 0x66, 0x11, 0x16, 0xb6, 0x01, 0x90, 0x88, 0x01, 0x8a, 0x22, 0x70, 0x7f, 0x05, 
+        0x10, 0x77, 0x01, 0x70, 0x22, 0x20, 0xc8, 0x41, 0xd8, 0x51, 0xe8, 0x61, 0xf8, 0x71, 0x12, 0xc1, 
+        0x20, 0x0d, 0xf0, 0x00, 0x20, 0x21, 0x41, 0xf0, 0x22, 0x11, 0x86, 0xf6, 0xff, 0x96, 0x88, 0x00, 
+        0x82, 0xa0, 0xff, 0x90, 0x28, 0x01, 0xc6, 0xf4, 0xff, 0x80, 0x80, 0x60, 0x9d, 0x06, 0x00, 0x08, 
+        0x40, 0xf6, 0xc8, 0x13, 0x00, 0x62, 0xa1, 0x20, 0x20, 0x91, 0x0c, 0x08, 0x16, 0xd9, 0xfa, 0x0c, 
+        0x19, 0x90, 0x66, 0x20, 0x46, 0xe9, 0xff, 0x00, 0x70, 0x2f, 0x05, 0x10, 0x22, 0x01, 0x06, 0xed, 
+        0xff, 0x00, 0x00, 0x00, 0xf0, 0x33, 0x11, 0x30, 0x31, 0x41, 0x9c, 0x33, 0xa0, 0xf3, 0x40, 0xa2, 
+        0xca, 0xf8, 0x00, 0x1a, 0x40, 0x00, 0x33, 0xa1, 0x0c, 0x19, 0xa0, 0x99, 0xc0, 0x06, 0x1d, 0x00, 
+        0x00, 0xf0, 0x42, 0x11, 0x40, 0x41, 0x41, 0x70, 0x2f, 0x05, 0x10, 0x22, 0x01, 0x60, 0x22, 0x20, 
+        0xcc, 0x44, 0x41, 0xc6, 0xe7, 0x40, 0x22, 0x20, 0x0d, 0xf0, 0x00, 0x00, 0xf0, 0x22, 0x11, 0x20, 
+        0x21, 0x41, 0x9c, 0x22, 0xa0, 0xf2, 0x40, 0xa2, 0xca, 0xf8, 0x00, 0x1a, 0x40, 0x00, 0x22, 0xa1, 
+        0x0c, 0x18, 0xa0, 0x88, 0xc0, 0xc6, 0x0f, 0x00, 0x70, 0x2f, 0x05, 0x10, 0x22, 0x01, 0x0d, 0xf0, 
+        0x30, 0x7f, 0x05, 0x10, 0x77, 0x01, 0x70, 0x22, 0x30, 0x67, 0xc3, 0x05, 0x41, 0xb8, 0xe7, 0x40, 
+        0x22, 0x20, 0x0d, 0xf0, 0x70, 0x83, 0x11, 0x16, 0xd8, 0xfd, 0x2d, 0x03, 0x0d, 0xf0, 0x00, 0x00, 
+        0x61, 0x06, 0xff, 0x30, 0x72, 0x30, 0x67, 0x42, 0xd6, 0x67, 0x43, 0xe7, 0x20, 0x87, 0x75, 0x30, 
+        0x97, 0x75, 0x16, 0xe9, 0xf6, 0x16, 0x38, 0xfa, 0x90, 0x88, 0xc0, 0xa1, 0xb5, 0xe5, 0x60, 0x22, 
+        0x20, 0xa0, 0x22, 0x10, 0x60, 0x33, 0x20, 0xa0, 0x33, 0x10, 0x27, 0x33, 0x04, 0xf0, 0x22, 0x11, 
+        0x0b, 0x88, 0x30, 0x22, 0xc0, 0xf0, 0x22, 0x11, 0x0c, 0x1a, 0x92, 0xa0, 0x17, 0xf0, 0xaa, 0x11, 
+        0x37, 0x32, 0x04, 0x1b, 0xaa, 0x30, 0x22, 0xc0, 0xf0, 0x22, 0x11, 0x0b, 0x99, 0x56, 0xc9, 0xfe, 
+        0x82, 0xc8, 0x7e, 0x42, 0xa0, 0xfe, 0x47, 0xb8, 0x17, 0x37, 0x32, 0x04, 0x1b, 0xaa, 0x37, 0x12, 
+        0x1a, 0x90, 0x88, 0x01, 0x8a, 0x2a, 0x70, 0x7f, 0x05, 0x10, 0x77, 0x01, 0x70, 0x22, 0x20, 0x0d, 
+        0xf0, 0x96, 0x08, 0x01, 0x1b, 0x84, 0x90, 0x28, 0x01, 0x46, 0xfa, 0xff, 0xa0, 0xa1, 0x41, 0xf0, 
+        0xaa, 0x11, 0xc6, 0xf6, 0xff, 0x80, 0x80, 0x60, 0x00, 0x08, 0x40, 0xf6, 0xc8, 0x22, 0x00, 0x6a, 
+        0xa1, 0xa0, 0xa0, 0x91, 0x0c, 0x08, 0x8c, 0x32, 0x0c, 0x19, 0x90, 0x66, 0x20, 0xd6, 0x06, 0xfc, 
+        0x1b, 0xaa, 0xf0, 0x66, 0x11, 0x56, 0x86, 0xfb, 0xa0, 0xa1, 0x41, 0xf0, 0xaa, 0x11, 0xc6, 0xeb, 
+        0xff, 0x70, 0x2f, 0x05, 0x10, 0x22, 0x01, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x61, 0xd7, 0xfe, 0x67, 
+        0x42, 0x22, 0x20, 0x47, 0x75, 0x42, 0xc4, 0x82, 0xe6, 0xc4, 0x20, 0xa6, 0x14, 0x29, 0x60, 0x72, 
+        0x20, 0x80, 0x57, 0x11, 0x00, 0x14, 0x40, 0x50, 0x50, 0x91, 0x50, 0x20, 0x60, 0x70, 0x25, 0xb3, 
+        0x0d, 0xf0, 0x00, 0x00, 0x00, 0x70, 0x42, 0x11, 0x8c, 0x04, 0x0c, 0x02, 0x80, 0x46, 0x11, 0x0b, 
+        0x54, 0x20, 0x45, 0xb3, 0x2d, 0x04, 0x0d, 0xf0, 0x0c, 0x02, 0x0d, 0xf0, 0x61, 0xc7, 0xfe, 0x67, 
+        0x42, 0x25, 0x20, 0x47, 0x75, 0x42, 0xc4, 0x81, 0xe6, 0xc4, 0x25, 0x96, 0xe4, 0x02, 0x60, 0x72, 
+        0x20, 0x80, 0x57, 0x11, 0x1b, 0x44, 0x26, 0xc4, 0x27, 0x00, 0x14, 0x40, 0x50, 0x50, 0x91, 0x50, 
+        0x20, 0x60, 0x70, 0x25, 0xb3, 0x0d, 0xf0, 0x00, 0x70, 0x42, 0x11, 0x8c, 0x24, 0x7c, 0xf2, 0x0d, 
+        0xf0, 0x80, 0x46, 0x11, 0x7c, 0xf5, 0x20, 0x45, 0xb3, 0x2d, 0x04, 0x0d, 0xf0, 0x0c, 0x02, 0x0d, 
+        0xf0, 0x96, 0x32, 0x00, 0x2d, 0x05, 0x0d, 0xf0, 0x80, 0x26, 0x11, 0x0d, 0xf0, 0x00, 0x00, 0x00, 
+        0xf0, 0x33, 0x11, 0x30, 0x31, 0x41, 0x20, 0xa3, 0x20, 0x16, 0x4a, 0x08, 0x9c, 0x53, 0xa0, 0xf3, 
+        0x40, 0xa2, 0xca, 0xf5, 0x00, 0x1a, 0x40, 0x20, 0x33, 0x81, 0x00, 0x22, 0xa1, 0x0c, 0x18, 0xa0, 
+        0x88, 0xc0, 0x86, 0x36, 0x00, 0xa0, 0xf2, 0x40, 0xa2, 0xca, 0xf5, 0x6c, 0x18, 0xa0, 0x88, 0xc0, 
+        0x00, 0x1a, 0x40, 0x96, 0x9a, 0x00, 0x00, 0x32, 0xa1, 0x0c, 0x02, 0x46, 0x30, 0x00, 0x00, 0x00, 
+        0x20, 0x30, 0x91, 0x00, 0x22, 0xa1, 0x86, 0x2d, 0x00, 0xf0, 0x55, 0x11, 0x50, 0x51, 0x41, 0x40, 
+        0xa5, 0x20, 0xbc, 0xba, 0x9c, 0x55, 0xa0, 0xf5, 0x40, 0xa2, 0xca, 0xf5, 0x00, 0x1a, 0x40, 0x40, 
+        0x55, 0x81, 0x00, 0x44, 0xa1, 0x0c, 0x19, 0xa0, 0x99, 0xc0, 0x46, 0x25, 0x00, 0xa0, 0xf4, 0x40, 
+        0xa2, 0xca, 0xf5, 0x6c, 0x19, 0xa0, 0x99, 0xc0, 0x00, 0x1a, 0x40, 0x96, 0x9a, 0x00, 0x00, 0x54, 
+        0xa1, 0x0c, 0x04, 0x06, 0x1f, 0x00, 0x00, 0x00, 0x40, 0x50, 0x91, 0x00, 0x44, 0xa1, 0x46, 0x1c, 
+        0x00, 0x70, 0x3f, 0x05, 0x10, 0x33, 0x01, 0x0c, 0x02, 0x46, 0x64, 0x00, 0xcc, 0xd4, 0xf0, 0x85, 
+        0x11, 0xcc, 0x88, 0x41, 0x08, 0xdd, 0x40, 0x33, 0x20, 0x46, 0x60, 0x00, 0x00, 0x67, 0xc5, 0x0b, 
+        0x40, 0x85, 0x11, 0x40, 0x88, 0x20, 0x8c, 0x28, 0x3d, 0x05, 0x2d, 0x04, 0x70, 0x7f, 0x05, 0xf0, 
+        0x33, 0x11, 0x00, 0x41, 0x40, 0x30, 0x37, 0x81, 0x86, 0x58, 0x00, 0x00, 0x56, 0x82, 0xfe, 0xf0, 
+        0x83, 0x11, 0x56, 0x28, 0xfe, 0x71, 0xfb, 0xdc, 0x70, 0x35, 0x20, 0xc6, 0x53, 0x00, 0x00, 0x00, 
+        0x12, 0xc1, 0xe0, 0xc9, 0x41, 0xd9, 0x51, 0xe9, 0x61, 0xf9, 0x71, 0x61, 0x78, 0xfe, 0x50, 0x73, 
+        0x30, 0x67, 0x43, 0xa7, 0x67, 0x45, 0xd4, 0x30, 0x84, 0xa5, 0x50, 0x94, 0xa5, 0x16, 0xf8, 0xef, 
+        0x16, 0x59, 0xf4, 0x9a, 0x88, 0xa1, 0x60, 0xfb, 0x60, 0x33, 0x20, 0xa0, 0x33, 0x10, 0x60, 0x55, 
+        0x20, 0xa0, 0x55, 0x10, 0x79, 0x11, 0x20, 0xc0, 0xf5, 0x40, 0xd0, 0xf5, 0x30, 0xe0, 0xf5, 0x50, 
+        0xf0, 0xf5, 0xd0, 0xa2, 0xc1, 0x40, 0xbc, 0xc1, 0x0c, 0x09, 0xba, 0xaa, 0xb7, 0xba, 0x01, 0x1b, 
+        0x99, 0x10, 0x40, 0x40, 0xa0, 0x69, 0x81, 0x40, 0xb2, 0xc1, 0x00, 0xaa, 0xa1, 0xba, 0xaa, 0xb7, 
+        0xba, 0x02, 0x62, 0xc6, 0x01, 0x0c, 0x09, 0x50, 0xb2, 0xc1, 0xba, 0x66, 0xb7, 0xb6, 0x01, 0x1b, 
+        0x99, 0xd0, 0xbc, 0xc1, 0xb0, 0x66, 0x80, 0xb7, 0xb6, 0x01, 0x1b, 0x99, 0x40, 0xb3, 0xc1, 0xba, 
+        0x66, 0xb7, 0xb6, 0x01, 0x1b, 0x99, 0x8c, 0x3a, 0x0c, 0x1b, 0xb0, 0x66, 0x20, 0xf0, 0x72, 0xc1, 
+        0x40, 0xbe, 0xc1, 0x0c, 0x0a, 0x7a, 0xbb, 0x77, 0xbb, 0x02, 0xa2, 0xca, 0x01, 0x50, 0x7c, 0xc1, 
+        0x70, 0xbb, 0x80, 0x77, 0xbb, 0x02, 0xa2, 0xca, 0x01, 0xd0, 0x73, 0xc1, 0x70, 0xbb, 0x80, 0x77, 
+        0xbb, 0x02, 0xa2, 0xca, 0x01, 0xb0, 0xaa, 0x81, 0x9a, 0xaa, 0x00, 0xbb, 0xa1, 0xba, 0x66, 0xb7, 
+        0xb6, 0x02, 0xa2, 0xca, 0x01, 0x0c, 0x09, 0xf0, 0x2c, 0xc1, 0xaa, 0x22, 0xa7, 0xb2, 0x01, 0x1b, 
+        0x99, 0x50, 0xa3, 0xc1, 0xa0, 0x22, 0x80, 0xa7, 0xb2, 0x02, 0x92, 0xc9, 0x01, 0xd0, 0xae, 0xc1, 
+        0xaa, 0x22, 0xa7, 0xb2, 0x02, 0x92, 0xc9, 0x01, 0xf0, 0xb3, 0xc1, 0x50, 0x7e, 0xc1, 0x0c, 0x0a, 
+        0x70, 0xbb, 0x80, 0x77, 0xbb, 0x02, 0xa2, 0xca, 0x01, 0xb0, 0xaa, 0x81, 0x9a, 0xaa, 0x00, 0xbb, 
+        0xa1, 0xba, 0x22, 0xb7, 0xb2, 0x01, 0x1b, 0xaa, 0xf0, 0x3e, 0xc1, 0xaa, 0x33, 0x78, 0x11, 0x0c, 
+        0xb4, 0x30, 0x59, 0x41, 0xcc, 0x45, 0x42, 0xc4, 0x01, 0x82, 0xc8, 0xff, 0x00, 0x14, 0x40, 0x20, 
+        0x33, 0x81, 0x60, 0x22, 0x81, 0x00, 0x66, 0xa1, 0x42, 0xa3, 0xff, 0x40, 0x88, 0xc0, 0xf0, 0x44, 
+        0x11, 0x47, 0xb8, 0x37, 0xd6, 0x86, 0x00, 0x1b, 0x22, 0xac, 0x82, 0xf0, 0x66, 0x11, 0x9c, 0xa6, 
+        0xc0, 0x88, 0x01, 0x8a, 0x33, 0x70, 0x7f, 0x05, 0x10, 0x77, 0x01, 0x70, 0x33, 0x20, 0xc8, 0x41, 
+        0xd8, 0x51, 0xe8, 0x61, 0xf8, 0x71, 0x12, 0xc1, 0x20, 0x0d, 0xf0, 0x00, 0x20, 0x21, 0x41, 0xf0, 
+        0x22, 0x11, 0x86, 0xf6, 0xff, 0x1b, 0x33, 0x46, 0xf5, 0xff, 0x00, 0x00, 0x96, 0x98, 0x00, 0x1b, 
+        0x84, 0xc0, 0x38, 0x01, 0x0c, 0x02, 0xc6, 0xf2, 0xff, 0x80, 0x80, 0x60, 0x9d, 0x06, 0x00, 0x08, 
+        0x40, 0xf6, 0xc8, 0x0b, 0x00, 0x62, 0xa1, 0x20, 0x23, 0x81, 0x30, 0x30, 0x91, 0x06, 0x04, 0x00, 
+        0xf6, 0xd8, 0x1c, 0x00, 0xa2, 0xa1, 0x20, 0x63, 0x81, 0x30, 0x20, 0x91, 0x0c, 0x03, 0xa0, 0x99, 
+        0x20, 0x0c, 0x08, 0x16, 0xd9, 0xf8, 0x0c, 0x19, 0x90, 0x66, 0x20, 0x46, 0xe1, 0xff, 0x00, 0x00, 
+        0x70, 0x3f, 0x05, 0x10, 0x33, 0x01, 0x0c, 0x02, 0x86, 0xe4, 0xff, 0x00, 0xf0, 0x55, 0x11, 0x50, 
+        0x51, 0x41, 0x40, 0xa5, 0x20, 0xbc, 0xba, 0x9c, 0x55, 0xa0, 0xf5, 0x40, 0xa2, 0xca, 0xf5, 0x00, 
+        0x1a, 0x40, 0x40, 0x55, 0x81, 0x00, 0x44, 0xa1, 0x0c, 0x19, 0xa0, 0x99, 0xc0, 0x06, 0x36, 0x00, 
+        0xa0, 0xf4, 0x40, 0xa2, 0xca, 0xf5, 0x6c, 0x19, 0xa0, 0x99, 0xc0, 0x00, 0x1a, 0x40, 0x96, 0x7a, 
+        0x00, 0x00, 0x54, 0xa1, 0x0c, 0x04, 0xc6, 0x2f, 0x00, 0x40, 0x50, 0x91, 0x00, 0x44, 0xa1, 0x86, 
+        0x2d, 0x00, 0x00, 0x00, 0xf0, 0x33, 0x11, 0x30, 0x31, 0x41, 0x30, 0x22, 0x20, 0x70, 0x3f, 0x05, 
+        0x10, 0x33, 0x01, 0x60, 0x33, 0x20, 0xcc, 0x42, 0x41, 0x73, 0xdc, 0x40, 0x33, 0x20, 0x0c, 0x02, 
+        0x0d, 0xf0, 0x00, 0x00, 0xf0, 0x33, 0x11, 0x30, 0x31, 0x41, 0x20, 0xa3, 0x20, 0xbc, 0xba, 0x9c, 
+        0x53, 0xa0, 0xf3, 0x40, 0xa2, 0xca, 0xf5, 0x00, 0x1a, 0x40, 0x20, 0x33, 0x81, 0x00, 0x22, 0xa1, 
+        0x0c, 0x18, 0xa0, 0x88, 0xc0, 0xc6, 0x1c, 0x00, 0xa0, 0xf2, 0x40, 0xa2, 0xca, 0xf5, 0x6c, 0x18, 
+        0xa0, 0x88, 0xc0, 0x00, 0x1a, 0x40, 0x96, 0x7a, 0x00, 0x00, 0x32, 0xa1, 0x0c, 0x02, 0x86, 0x16, 
+        0x00, 0x20, 0x30, 0x91, 0x00, 0x22, 0xa1, 0x46, 0x14, 0x00, 0x00, 0x00, 0x70, 0x3f, 0x05, 0x10, 
+        0x33, 0x01, 0x0c, 0x02, 0x0d, 0xf0, 0x00, 0x00, 0x50, 0x7f, 0x05, 0x10, 0x77, 0x01, 0x70, 0x33, 
+        0x30, 0x67, 0xc5, 0x05, 0x41, 0x58, 0xdc, 0x40, 0x33, 0x20, 0x0d, 0xf0, 0x40, 0x85, 0x11, 0x40, 
+        0x88, 0x20, 0x16, 0x68, 0xfd, 0x3d, 0x05, 0x2d, 0x04, 0x0d, 0xf0, 0x00, 0x47, 0x32, 0x37, 0x46, 
+        0x0f, 0x00, 0x00, 0x00, 0x61, 0xd2, 0xfd, 0x50, 0x73, 0x30, 0x67, 0x43, 0xca, 0x67, 0x45, 0xdb, 
+        0x30, 0x84, 0xa5, 0x50, 0x94, 0xa5, 0x16, 0x29, 0xf0, 0x16, 0x78, 0xf6, 0x90, 0x88, 0xc0, 0xa1, 
+        0xba, 0xfa, 0x60, 0x33, 0x20, 0xa0, 0x33, 0x10, 0x60, 0x55, 0x20, 0xa0, 0x55, 0x10, 0x10, 0x4f, 
+        0x40, 0x37, 0x35, 0x0b, 0x37, 0x15, 0xc4, 0x20, 0x33, 0x81, 0x00, 0x22, 0xa1, 0x82, 0xc8, 0xff, 
+        0x50, 0x33, 0xc0, 0x47, 0xb2, 0x02, 0x32, 0xc3, 0xff, 0x40, 0x22, 0xc0, 0x20, 0x33, 0x81, 0x00, 
+        0x22, 0xa1, 0x0c, 0x0a, 0x0c, 0x1b, 0x3c, 0x49, 0xb0, 0xaa, 0x81, 0x00, 0xbb, 0xa1, 0x57, 0x33, 
+        0x0f, 0x57, 0x13, 0x3f, 0x1b, 0xbb, 0x50, 0x33, 0xc0, 0x47, 0xb2, 0x01, 0x0b, 0x33, 0x40, 0x22, 
+        0xc0, 0x20, 0x33, 0x81, 0x00, 0x22, 0xa1, 0x0b, 0x99, 0x56, 0xb9, 0xfd, 0x92, 0xa3, 0xfe, 0x9a, 
+        0x88, 0x92, 0xd9, 0x04, 0x97, 0xb8, 0x38, 0x57, 0x33, 0x07, 0x57, 0x13, 0x1e, 0x1b, 0xbb, 0x16, 
+        0x5b, 0x08, 0x2d, 0x0b, 0xc0, 0x88, 0x01, 0x8a, 0x3a, 0x70, 0x7f, 0x05, 0x10, 0x77, 0x01, 0x70, 
+        0x33, 0x20, 0x0d, 0xf0, 0x47, 0xb2, 0xbc, 0x86, 0xf1, 0xff, 0x00, 0x00, 0x47, 0x32, 0xe2, 0x47, 
+        0x92, 0xda, 0x1b, 0xbb, 0x16, 0x0b, 0x06, 0xb0, 0xb1, 0x41, 0xf0, 0xbb, 0x11, 0x46, 0xf4, 0xff, 
+        0x96, 0x98, 0x00, 0x1b, 0x89, 0xc0, 0x38, 0x01, 0x0c, 0x02, 0xc6, 0xf2, 0xff, 0x80, 0x80, 0x60, 
+        0x00, 0x08, 0x40, 0xf6, 0xc8, 0x0d, 0x00, 0x6b, 0xa1, 0xb0, 0xba, 0x81, 0xa0, 0xa0, 0x91, 0x86, 
+        0x04, 0x00, 0x00, 0x00, 0xf6, 0xd8, 0x35, 0x00, 0x9b, 0xa1, 0xb0, 0x6a, 0x81, 0xa0, 0xb0, 0x91, 
+        0x0c, 0x0a, 0x90, 0x22, 0x20, 0x0c, 0x08, 0x20, 0x33, 0x20, 0x8c, 0x33, 0x0c, 0x19, 0x90, 0x66, 
+        0x20, 0xd6, 0xd6, 0xf8, 0x1b, 0xbb, 0x8c, 0xeb, 0xf0, 0x66, 0x11, 0x56, 0x36, 0xf8, 0xb0, 0xb1, 
+        0x41, 0xf0, 0xbb, 0x11, 0x86, 0xde, 0xff, 0x00, 0x1b, 0xaa, 0x06, 0xdd, 0xff, 0x70, 0x3f, 0x05, 
+        0x10, 0x33, 0x01, 0x0c, 0x02, 0x0d, 0xf0, 0x00, 0x61, 0x89, 0xfd, 0x67, 0x43, 0x25, 0x30, 0x44, 
+        0xa5, 0x60, 0x53, 0x95, 0x50, 0x44, 0xc0, 0xe6, 0xc4, 0x25, 0xa6, 0x14, 0x2e, 0x60, 0x73, 0x20, 
+        0x10, 0x45, 0x40, 0x20, 0x57, 0x81, 0x00, 0x14, 0x40, 0x50, 0x50, 0x91, 0x50, 0x20, 0x60, 0x70, 
+        0x25, 0xb3, 0x0d, 0xf0, 0x40, 0x43, 0x11, 0x20, 0x44, 0x20, 0x16, 0x24, 0x00, 0x32, 0xa0, 0x00, 
+        0x50, 0x46, 0x11, 0x0b, 0x54, 0x30, 0x45, 0xb3, 0x2d, 0x04, 0x0d, 0xf0, 0x0c, 0x02, 0x0d, 0xf0, 
+        0x41, 0x78, 0xfd, 0x40, 0x53, 0xc0, 0x50, 0x63, 0x30, 0x96, 0x36, 0x05, 0x50, 0x64, 0xa5, 0x16, 
+        0xd6, 0x04, 0x42, 0xa0, 0xff, 0x47, 0xa6, 0x27, 0x10, 0x4d, 0x40, 0x20, 0x55, 0x81, 0x00, 0x42, 
+        0xa1, 0x30, 0x6f, 0x05, 0x10, 0x66, 0x01, 0x50, 0x26, 0x20, 0xd6, 0x64, 0x00, 0x1b, 0x22, 0xf0, 
+        0x44, 0x11, 0x8c, 0x24, 0x0d, 0xf0, 0x00, 0x00, 0x20, 0x21, 0x41, 0xf0, 0x22, 0x11, 0x0d, 0xf0, 
+        0x41, 0x67, 0xfd, 0x47, 0xc3, 0x0a, 0x40, 0x53, 0x11, 0x20, 0x55, 0x20, 0x8c, 0x15, 0x40, 0x41, 
+        0x41, 0xc0, 0x44, 0x11, 0x30, 0x6f, 0x05, 0x00, 0x41, 0x40, 0x40, 0x26, 0x81, 0x0d, 0xf0, 0x00, 
+        0x30, 0x64, 0xa5, 0x52, 0xa3, 0x80, 0x60, 0x65, 0xc0, 0x1b, 0x66, 0xf6, 0xc6, 0x29, 0x30, 0x55, 
+        0x11, 0x30, 0x55, 0x20, 0x50, 0x55, 0x11, 0x50, 0x5b, 0x41, 0x10, 0x4d, 0x40, 0x20, 0x55, 0x81, 
+        0x00, 0x42, 0xa1, 0x00, 0x06, 0x40, 0x00, 0x74, 0xa1, 0x40, 0x45, 0x81, 0x50, 0x50, 0x91, 0x16, 
+        0xe7, 0xf8, 0x60, 0x44, 0x20, 0x06, 0xe2, 0xff, 0x30, 0x2f, 0x05, 0x10, 0x22, 0x01, 0x0d, 0xf0, 
+        0x12, 0xc1, 0xd0, 0x22, 0x61, 0x00, 0x52, 0x61, 0x03, 0x42, 0x61, 0x02, 0x09, 0x61, 0x39, 0x11, 
+        0xc9, 0x71, 0xd9, 0x81, 0xcd, 0x02, 0xdd, 0x04, 0x3d, 0x04, 0x45, 0xc7, 0x00, 0x48, 0x31, 0x08, 
+        0x11, 0xc0, 0x44, 0x82, 0xd0, 0x00, 0x82, 0xc8, 0x71, 0xd8, 0x81, 0x4a, 0x00, 0x0a, 0x33, 0x08, 
+        0x61, 0x12, 0xc1, 0x30, 0x0d, 0xf0, 0x00, 0x00, 0x8d, 0x04, 0x7d, 0x05, 0x62, 0xa0, 0xf0, 0x60, 
+        0x11, 0xc0, 0x39, 0x11, 0x29, 0x01, 0x59, 0x31, 0x49, 0x21, 0xd2, 0x61, 0x2b, 0x02, 0x61, 0x29, 
+        0xc2, 0x61, 0x2a, 0x0d, 0x02, 0xcd, 0x03, 0x96, 0x53, 0x19, 0x0c, 0x0d, 0xc9, 0x51, 0x9d, 0x00, 
+        0x28, 0x31, 0x99, 0x41, 0xd6, 0x02, 0x01, 0x40, 0x80, 0x60, 0x72, 0xaf, 0xff, 0x70, 0xdd, 0x30, 
+        0x70, 0x75, 0x30, 0x1b, 0x37, 0x40, 0x73, 0x83, 0x79, 0x71, 0x89, 0x61, 0x5d, 0x00, 0x3d, 0x08, 
+        0x0d, 0x08, 0x16, 0xa7, 0x17, 0x77, 0xbc, 0x27, 0x0c, 0x0c, 0x0c, 0x00, 0x3d, 0x00, 0x16, 0xed, 
+        0x43, 0xd2, 0x21, 0x2b, 0x42, 0xa0, 0xf0, 0xc0, 0x20, 0x60, 0x7c, 0xf9, 0x90, 0x30, 0x30, 0x1b, 
+        0x83, 0xc0, 0x38, 0x83, 0x02, 0x21, 0x29, 0xc2, 0x21, 0x2a, 0x4a, 0x11, 0x0d, 0xf0, 0x00, 0x00, 
+        0x82, 0x61, 0x26, 0xa0, 0xf7, 0x40, 0xa2, 0x61, 0x27, 0xcc, 0xca, 0xc7, 0x37, 0x05, 0x87, 0xb5, 
+        0x02, 0x46, 0x07, 0x01, 0x0c, 0x1c, 0x06, 0xf0, 0xff, 0x52, 0x61, 0x14, 0x32, 0x21, 0x26, 0x52, 
+        0x21, 0x27, 0x2c, 0x06, 0x50, 0x66, 0xc0, 0x00, 0x06, 0x40, 0x62, 0x61, 0x1e, 0xc0, 0x20, 0x91, 
+        0x00, 0x15, 0x40, 0x22, 0x61, 0x1f, 0x30, 0x37, 0x81, 0x32, 0x61, 0x24, 0x30, 0x30, 0xf5, 0x32, 
+        0x61, 0x25, 0x05, 0xa5, 0x00, 0x02, 0x21, 0x14, 0x32, 0x21, 0x1e, 0x22, 0x61, 0x23, 0x42, 0x21, 
+        0x27, 0x22, 0x61, 0x35, 0x00, 0x14, 0x40, 0x22, 0x21, 0x1f, 0x00, 0xcc, 0xa1, 0x00, 0x03, 0x40, 
+        0x00, 0x00, 0x91, 0x32, 0x21, 0x25, 0x00, 0xcc, 0x20, 0xc2, 0x61, 0x20, 0xc0, 0xc0, 0xf5, 0x45, 
+        0xb3, 0x00, 0x00, 0x42, 0x11, 0x02, 0x21, 0x35, 0x22, 0x21, 0x24, 0x40, 0x4c, 0x20, 0xcd, 0x04, 
+        0x20, 0x20, 0xf4, 0x22, 0x61, 0x21, 0x00, 0x22, 0x82, 0x27, 0xb4, 0x1a, 0x0b, 0x60, 0x52, 0x21, 
+        0x24, 0x62, 0x61, 0x23, 0x4a, 0xc5, 0x57, 0x3c, 0x0d, 0x27, 0xbc, 0x0a, 0x82, 0xc0, 0xfe, 0x72, 
+        0x21, 0x24, 0x82, 0x61, 0x23, 0xca, 0xc7, 0x32, 0x21, 0x25, 0x20, 0xcc, 0xc0, 0x2d, 0x0c, 0x45, 
+        0x9e, 0x00, 0x32, 0x21, 0x25, 0x22, 0x61, 0x37, 0x22, 0x61, 0x36, 0x92, 0x21, 0x20, 0x2d, 0x0c, 
+        0x90, 0x90, 0xf4, 0x92, 0x61, 0x22, 0xc5, 0xad, 0x00, 0x02, 0x21, 0x37, 0x52, 0x21, 0x36, 0x00, 
+        0xa2, 0x11, 0x92, 0x21, 0x22, 0x22, 0x21, 0x21, 0xa0, 0x99, 0x20, 0x4d, 0x09, 0x50, 0x22, 0x82, 
+        0x27, 0xb9, 0x13, 0xb2, 0x21, 0x24, 0x0b, 0x05, 0x90, 0x4b, 0x80, 0xb7, 0x34, 0x08, 0x27, 0xb4, 
+        0x05, 0x40, 0x4b, 0x80, 0x02, 0xc5, 0xfe, 0x32, 0x21, 0x26, 0x52, 0x21, 0x27, 0x20, 0x44, 0xc0, 
+        0x42, 0x61, 0x38, 0x22, 0x21, 0x23, 0x00, 0x15, 0x40, 0x00, 0x33, 0xa1, 0x00, 0x22, 0x11, 0x20, 
+        0x20, 0x20, 0x22, 0x61, 0x1b, 0xcd, 0x02, 0x85, 0xac, 0x00, 0x02, 0x21, 0x38, 0x37, 0x30, 0x17, 
+        0x30, 0x40, 0xc0, 0x56, 0x34, 0xeb, 0x62, 0x21, 0x27, 0x52, 0x21, 0x14, 0x00, 0x16, 0x40, 0x00, 
+        0x55, 0xa1, 0x27, 0x35, 0x02, 0x46, 0xa8, 0xff, 0xc2, 0x21, 0x1b, 0x0b, 0xcc, 0x46, 0xa6, 0xff, 
+        0x7c, 0xfd, 0xd0, 0xc3, 0x30, 0x1b, 0x0c, 0x20, 0xc0, 0x83, 0x20, 0x00, 0x60, 0xc6, 0x96, 0xff, 
+        0x92, 0x61, 0x15, 0x87, 0x3c, 0x02, 0x86, 0x39, 0x00, 0xc2, 0x61, 0x28, 0x82, 0x61, 0x1c, 0x40, 
+        0xf8, 0x40, 0x9c, 0x34, 0x00, 0x14, 0x40, 0x00, 0x25, 0xa1, 0x50, 0x6c, 0x81, 0x00, 0x78, 0xa1, 
+        0x72, 0x61, 0x1c, 0x62, 0x61, 0x28, 0x22, 0x61, 0x15, 0xc2, 0x21, 0x15, 0x32, 0x21, 0x1c, 0x22, 
+        0x21, 0x28, 0x30, 0x30, 0xf5, 0x32, 0x61, 0x18, 0x85, 0x90, 0x00, 0x32, 0x21, 0x18, 0x22, 0x61, 
+        0x10, 0x22, 0x61, 0x2f, 0xc0, 0x40, 0xf5, 0x42, 0x61, 0x16, 0x22, 0x21, 0x28, 0x45, 0xa0, 0x00, 
+        0x42, 0x21, 0x2f, 0x00, 0x62, 0x11, 0x02, 0x21, 0x1c, 0x52, 0x21, 0x16, 0x00, 0x00, 0xf4, 0x60, 
+        0x55, 0x20, 0x52, 0x61, 0x19, 0x02, 0x61, 0x1d, 0x40, 0x00, 0x82, 0x07, 0xb5, 0x27, 0x82, 0x21, 
+        0x1c, 0x0b, 0x94, 0x92, 0x61, 0x10, 0x80, 0x75, 0x80, 0x72, 0x61, 0x19, 0x87, 0x37, 0x16, 0xa2, 
+        0x21, 0x19, 0x07, 0xba, 0x10, 0xb2, 0x21, 0x19, 0x32, 0xc4, 0xfe, 0x22, 0x21, 0x1c, 0x32, 0x61, 
+        0x10, 0xba, 0xb2, 0xb2, 0x61, 0x19, 0x22, 0x21, 0x19, 0x32, 0x21, 0x18, 0x00, 0x22, 0xc0, 0x22, 
+        0x61, 0x19, 0x05, 0x8a, 0x00, 0x32, 0x21, 0x18, 0x22, 0x61, 0x31, 0x22, 0x61, 0x30, 0xc0, 0x40, 
+        0xf4, 0x42, 0x61, 0x17, 0x22, 0x21, 0x19, 0xc5, 0x99, 0x00, 0x02, 0x21, 0x31, 0x42, 0x21, 0x10, 
+        0x32, 0x21, 0x30, 0x00, 0x62, 0x11, 0x52, 0x21, 0x17, 0x82, 0x21, 0x1d, 0x60, 0x55, 0x20, 0x30, 
+        0x88, 0x82, 0x87, 0xb5, 0x0f, 0x72, 0x21, 0x1c, 0x0b, 0x03, 0x7a, 0x55, 0x77, 0x35, 0x05, 0x87, 
+        0xb5, 0x02, 0x02, 0xc3, 0xfe, 0x00, 0xc4, 0x11, 0xc0, 0xc0, 0x20, 0x0c, 0x00, 0xc6, 0x66, 0xff, 
+        0x56, 0xe8, 0x00, 0x52, 0x61, 0x14, 0x22, 0xa0, 0x01, 0x85, 0x84, 0x00, 0x20, 0x02, 0x20, 0x52, 
+        0x21, 0x14, 0x02, 0x61, 0x1c, 0x30, 0xf0, 0x40, 0xec, 0x03, 0x02, 0x61, 0x1c, 0x00, 0x40, 0xf5, 
+        0x0c, 0x12, 0x00, 0x30, 0xf4, 0x00, 0x5c, 0xc0, 0x52, 0x61, 0x28, 0x32, 0x61, 0x1d, 0x22, 0x61, 
+        0x11, 0x42, 0x61, 0x18, 0xc2, 0x21, 0x18, 0x06, 0x3a, 0x00, 0x00, 0x00, 0x00, 0x13, 0x40, 0x2c, 
+        0x0a, 0x30, 0xaa, 0xc0, 0x00, 0x60, 0xa1, 0x62, 0x61, 0x1c, 0x00, 0x0a, 0x40, 0xc0, 0x20, 0x91, 
+        0x00, 0x13, 0x40, 0x29, 0xc1, 0x60, 0x30, 0xf5, 0x00, 0x75, 0xa1, 0x50, 0x8c, 0x81, 0x82, 0x61, 
+        0x28, 0x72, 0x61, 0x15, 0x32, 0x61, 0x18, 0xc5, 0x7e, 0x00, 0xb2, 0x21, 0x28, 0x29, 0xf1, 0x22, 
+        0x61, 0x2c, 0xc2, 0x21, 0x18, 0x28, 0xc1, 0x3d, 0x0c, 0xb0, 0xb0, 0xf5, 0xb9, 0xd1, 0x45, 0x8e, 
+        0x00, 0x02, 0x21, 0x2c, 0x00, 0x52, 0x11, 0x32, 0x21, 0x1c, 0x48, 0xd1, 0x30, 0x30, 0xf4, 0x50, 
+        0x44, 0x20, 0x42, 0x61, 0x13, 0x32, 0x61, 0x1d, 0x00, 0x33, 0x82, 0x37, 0xb4, 0x24, 0x72, 0x21, 
+        0x1c, 0x0b, 0x80, 0x89, 0xf1, 0x7a, 0x64, 0x62, 0x61, 0x13, 0x77, 0x36, 0x15, 0x92, 0x21, 0x13, 
+        0x37, 0xb9, 0x0f, 0xa2, 0x21, 0x13, 0x22, 0xc0, 0xfe, 0xb2, 0x21, 0x1c, 0x29, 0xf1, 0xaa, 0xab, 
+        0xa2, 0x61, 0x13, 0x22, 0x21, 0x13, 0x30, 0x22, 0xc0, 0x22, 0x61, 0x13, 0x3d, 0x0c, 0x45, 0x78, 
+        0x00, 0x22, 0x61, 0x2e, 0x32, 0x21, 0x28, 0x22, 0x61, 0x2d, 0x30, 0x30, 0xf4, 0x22, 0x21, 0x13, 
+        0x39, 0xe1, 0x3d, 0x0c, 0xc5, 0x87, 0x00, 0x02, 0x21, 0x2e, 0x32, 0x21, 0x2d, 0x52, 0x21, 0x1d, 
+        0x88, 0xe1, 0x00, 0x92, 0x11, 0x90, 0x88, 0x20, 0x4d, 0x08, 0x30, 0x55, 0x82, 0x57, 0xb8, 0x11, 
+        0xa2, 0x21, 0x1c, 0x0b, 0x03, 0xaa, 0x48, 0xa7, 0x34, 0x07, 0x57, 0xb4, 0x04, 0x02, 0xc3, 0xfe, 
+        0x4a, 0x4a, 0x50, 0x34, 0xc0, 0x28, 0xf1, 0x32, 0x61, 0x28, 0x00, 0x22, 0x11, 0x20, 0x20, 0x20, 
+        0x22, 0x61, 0x11, 0x22, 0x21, 0x28, 0x3d, 0x0c, 0x85, 0x72, 0x00, 0xc0, 0x3c, 0x20, 0x22, 0x61, 
+        0x12, 0x22, 0x61, 0x32, 0x42, 0x21, 0x15, 0x22, 0x21, 0x28, 0x40, 0x40, 0xf5, 0x42, 0x61, 0x16, 
+        0x05, 0x82, 0x00, 0x42, 0x21, 0x32, 0x02, 0x21, 0x1d, 0x52, 0x21, 0x16, 0x00, 0x62, 0x11, 0x60, 
+        0x55, 0x20, 0x52, 0x61, 0x1a, 0x40, 0x00, 0x82, 0x07, 0xb5, 0x27, 0x82, 0x21, 0x1c, 0x0b, 0x94, 
+        0x92, 0x61, 0x12, 0x8a, 0x75, 0x72, 0x61, 0x1a, 0x87, 0x37, 0x17, 0xa2, 0x21, 0x1a, 0x07, 0xba, 
+        0x11, 0xb2, 0x21, 0x1a, 0x32, 0xc4, 0xfe, 0x22, 0x21, 0x1c, 0x32, 0x61, 0x12, 0xb0, 0xb2, 0x80, 
+        0xb2, 0x61, 0x1a, 0x22, 0x21, 0x1a, 0x3d, 0x0c, 0x00, 0x22, 0xc0, 0x22, 0x61, 0x1a, 0x45, 0x6c, 
+        0x00, 0xc0, 0x3c, 0x20, 0x22, 0x61, 0x34, 0x22, 0x61, 0x33, 0x42, 0x21, 0x15, 0x22, 0x21, 0x1a, 
+        0x40, 0x40, 0xf4, 0x42, 0x61, 0x17, 0xc5, 0x7b, 0x00, 0x42, 0x21, 0x34, 0x02, 0x21, 0x33, 0x82, 
+        0x21, 0x17, 0x00, 0x92, 0x11, 0x90, 0x88, 0x20, 0x92, 0x21, 0x1d, 0x52, 0x21, 0x12, 0x00, 0x99, 
+        0x82, 0x97, 0xb8, 0x0f, 0xa2, 0x21, 0x1c, 0x0b, 0x40, 0xaa, 0x88, 0xa7, 0x38, 0x05, 0x97, 0xb8, 
+        0x02, 0x42, 0xc0, 0xfe, 0x02, 0x21, 0x11, 0x00, 0xc5, 0x11, 0xc0, 0xc4, 0x20, 0xc6, 0xee, 0xfe, 
+        0x02, 0x21, 0x29, 0xd2, 0x21, 0x2b, 0x2d, 0x0c, 0x42, 0xa0, 0xf0, 0xc2, 0x21, 0x2a, 0x4a, 0x11, 
+        0x0d, 0xf0, 0x0c, 0x0c, 0x86, 0xe8, 0xfe, 0x00, 0x8d, 0x02, 0x62, 0xa0, 0xc0, 0x60, 0x11, 0xc0, 
+        0x89, 0x01, 0x59, 0x31, 0x49, 0x21, 0x39, 0x11, 0x02, 0x61, 0x1e, 0xd2, 0x61, 0x20, 0xe2, 0x61, 
+        0x21, 0xc2, 0x61, 0x1f, 0xed, 0x02, 0xcd, 0x03, 0xdd, 0x03, 0x0d, 0x04, 0x3d, 0x04, 0x16, 0xb5, 
+        0x17, 0x57, 0xbc, 0x17, 0x0c, 0x03, 0x0c, 0x02, 0xe2, 0x21, 0x21, 0xd2, 0x21, 0x20, 0xc2, 0x21, 
+        0x1f, 0x42, 0xa0, 0xc0, 0x02, 0x21, 0x1e, 0x4a, 0x11, 0x0d, 0xf0, 0x00, 0x42, 0x61, 0x2e, 0xd0, 
+        0xf5, 0x40, 0xdc, 0xed, 0xc7, 0x35, 0x05, 0x47, 0xb2, 0x02, 0xc6, 0xfc, 0x00, 0x0c, 0x03, 0x0c, 
+        0x12, 0xe2, 0x21, 0x21, 0xd2, 0x21, 0x20, 0xc2, 0x21, 0x1f, 0x42, 0xa0, 0xc0, 0x02, 0x21, 0x1e, 
+        0x4a, 0x11, 0x0d, 0xf0, 0x82, 0x61, 0x12, 0xe2, 0x21, 0x2e, 0x2c, 0x04, 0xd0, 0x44, 0xc0, 0x00, 
+        0x04, 0x40, 0x42, 0x61, 0x16, 0xc0, 0x20, 0x91, 0x00, 0x1d, 0x40, 0x22, 0x61, 0x17, 0xe0, 0x35, 
+        0x81, 0x32, 0x61, 0x1c, 0x30, 0x30, 0xf5, 0x32, 0x61, 0x1d, 0x85, 0x5c, 0x00, 0x02, 0x21, 0x12, 
+        0x32, 0x21, 0x16, 0x22, 0x61, 0x1b, 0x22, 0x61, 0x2b, 0x00, 0x1d, 0x40, 0x00, 0xcc, 0xa1, 0x22, 
+        0x21, 0x17, 0x00, 0x03, 0x40, 0x00, 0x00, 0x91, 0x32, 0x21, 0x1d, 0x00, 0xcc, 0x20, 0xc2, 0x61, 
+        0x18, 0xc0, 0xc0, 0xf5, 0xc5, 0x6a, 0x00, 0x00, 0x42, 0x11, 0x02, 0x21, 0x2b, 0x22, 0x21, 0x1c, 
+        0x40, 0x4c, 0x20, 0xcd, 0x04, 0x20, 0x20, 0xf4, 0x22, 0x61, 0x19, 0x00, 0x22, 0x82, 0x27, 0xb4, 
+        0x1b, 0x0b, 0x60, 0x52, 0x21, 0x1c, 0x62, 0x61, 0x1b, 0x40, 0xc5, 0x80, 0x57, 0x3c, 0x0d, 0x27, 
+        0xbc, 0x0a, 0x82, 0xc0, 0xfe, 0x72, 0x21, 0x1c, 0x82, 0x61, 0x1b, 0xca, 0xc7, 0x32, 0x21, 0x1d, 
+        0x20, 0xcc, 0xc0, 0x2d, 0x0c, 0xc5, 0x55, 0x00, 0x32, 0x21, 0x1d, 0x22, 0x61, 0x2d, 0x22, 0x61, 
+        0x2c, 0x92, 0x21, 0x18, 0x2d, 0x0c, 0x90, 0x90, 0xf4, 0x92, 0x61, 0x1a, 0x45, 0x65, 0x00, 0x02, 
+        0x21, 0x2d, 0x32, 0x21, 0x2c, 0x00, 0x52, 0x11, 0x42, 0x21, 0x1a, 0x22, 0x21, 0x19, 0x50, 0x44, 
+        0x20, 0xcd, 0x04, 0x30, 0x22, 0x82, 0x27, 0xb4, 0x11, 0x62, 0x21, 0x1c, 0x0b, 0x03, 0x4a, 0xc6, 
+        0x67, 0x3c, 0x07, 0x27, 0xbc, 0x04, 0xca, 0xc6, 0x02, 0xc3, 0xfe, 0x20, 0xcc, 0xc0, 0x00, 0x1d, 
+        0x40, 0x22, 0x21, 0x1b, 0x00, 0x3e, 0xa1, 0x00, 0x22, 0x11, 0x20, 0x20, 0x20, 0x22, 0x61, 0x15, 
+        0xed, 0x02, 0xc5, 0x64, 0x00, 0x37, 0x3c, 0x0e, 0x37, 0x9c, 0x28, 0x32, 0x21, 0x12, 0x00, 0x1d, 
+        0x40, 0x00, 0x33, 0xa1, 0x27, 0xb3, 0x1c, 0x0c, 0x03, 0x02, 0x21, 0x1e, 0xc2, 0x21, 0x1f, 0xd2, 
+        0x21, 0x20, 0xe2, 0x21, 0x15, 0x42, 0xa0, 0xc0, 0x0b, 0xee, 0x2d, 0x0e, 0xe2, 0x21, 0x21, 0x4a, 
+        0x11, 0x0d, 0xf0, 0x00, 0x0c, 0x03, 0x02, 0x21, 0x1e, 0xc2, 0x21, 0x1f, 0xd2, 0x21, 0x20, 0x2d, 
+        0x0e, 0x42, 0xa0, 0xc0, 0xe2, 0x21, 0x21, 0x4a, 0x11, 0x0d, 0xf0, 0x00, 0x00, 0x47, 0x3c, 0x02, 
+        0x86, 0x36, 0x00, 0x09, 0xd1, 0x40, 0xf4, 0x40, 0x16, 0xe4, 0x00, 0x00, 0x14, 0x40, 0x20, 0xdc, 
+        0x81, 0x00, 0xe2, 0xa1, 0x00, 0x03, 0xa1, 0x02, 0x61, 0x0d, 0xc8, 0xd1, 0x2d, 0x0d, 0xc0, 0x30, 
+        0xf5, 0x32, 0x61, 0x13, 0xc5, 0x48, 0x00, 0x29, 0xc1, 0x22, 0x61, 0x25, 0xe0, 0x30, 0xf5, 0x32, 
+        0x61, 0x10, 0x2d, 0x0d, 0x32, 0x21, 0x13, 0xc5, 0x58, 0x00, 0x42, 0x21, 0x25, 0x00, 0x32, 0x11, 
+        0xc0, 0x00, 0xf4, 0x22, 0x21, 0x10, 0x09, 0xe1, 0x30, 0x22, 0x20, 0xdd, 0x02, 0x40, 0x00, 0x82, 
+        0x07, 0xb2, 0x12, 0xca, 0xd2, 0x0b, 0x54, 0x59, 0xc1, 0xc7, 0x3d, 0x09, 0x07, 0xbd, 0x06, 0xda, 
+        0xdc, 0x62, 0xc4, 0xfe, 0x69, 0xc1, 0x32, 0x21, 0x13, 0x00, 0xdd, 0xc0, 0x2d, 0x0d, 0x45, 0x44, 
+        0x00, 0xe0, 0xe0, 0xf4, 0x22, 0x61, 0x27, 0x22, 0x61, 0x26, 0x32, 0x21, 0x13, 0x2d, 0x0d, 0x45, 
+        0x54, 0x00, 0x02, 0x21, 0x27, 0x32, 0x21, 0x26, 0x00, 0x22, 0x11, 0x48, 0xe1, 0x20, 0x2e, 0x20, 
+        0x30, 0x44, 0x82, 0x47, 0xb2, 0x29, 0x0b, 0x03, 0xca, 0x22, 0xc7, 0x32, 0x22, 0x47, 0xb2, 0x1f, 
+        0xc2, 0x21, 0x1f, 0xd2, 0x21, 0x20, 0xe2, 0x21, 0x21, 0x42, 0xa0, 0xc0, 0x02, 0xc3, 0xfe, 0x28, 
+        0xc1, 0x0c, 0x03, 0x00, 0x22, 0x11, 0x20, 0x20, 0x20, 0x02, 0x21, 0x1e, 0x4a, 0x11, 0x0d, 0xf0, 
+        0x0c, 0x03, 0xc2, 0x21, 0x1f, 0xd2, 0x21, 0x20, 0xe2, 0x21, 0x21, 0x28, 0xc1, 0x42, 0xa0, 0xc0, 
+        0x00, 0x22, 0x11, 0x20, 0x20, 0x20, 0x02, 0x21, 0x1e, 0x4a, 0x11, 0x0d, 0xf0, 0x00, 0xcc, 0xb4, 
+        0x82, 0x61, 0x12, 0x0c, 0x12, 0xc5, 0x3c, 0x00, 0x82, 0x21, 0x12, 0x0d, 0x02, 0x09, 0xd1, 0x30, 
+        0xf0, 0x40, 0xdc, 0x33, 0x09, 0xd1, 0x0c, 0x13, 0x00, 0xdc, 0xc0, 0x00, 0x40, 0xf4, 0x00, 0xc0, 
+        0xf5, 0x49, 0xe1, 0x39, 0xb1, 0x86, 0x32, 0x00, 0x00, 0x00, 0x13, 0x40, 0x58, 0xd1, 0x2c, 0x00, 
+        0x30, 0x00, 0xc0, 0x00, 0x55, 0xa1, 0x59, 0xd1, 0x00, 0x00, 0x40, 0xc0, 0x20, 0x91, 0x29, 0x81, 
+        0x00, 0x13, 0x40, 0x80, 0xdc, 0x81, 0x00, 0xe8, 0xa1, 0x50, 0xc0, 0xf5, 0x3d, 0x0c, 0x45, 0x38, 
+        0x00, 0x29, 0xa1, 0x22, 0x61, 0x22, 0xd0, 0x30, 0xf5, 0x39, 0x91, 0x28, 0x81, 0x3d, 0x0c, 0x45, 
+        0x48, 0x00, 0x02, 0x21, 0x22, 0x00, 0x52, 0x11, 0x38, 0xd1, 0x48, 0x91, 0x30, 0x30, 0xf4, 0x50, 
+        0x44, 0x20, 0x42, 0x61, 0x11, 0x39, 0xe1, 0x00, 0x33, 0x82, 0x37, 0xb4, 0x22, 0x78, 0xd1, 0x0b, 
+        0x80, 0x89, 0xa1, 0x7a, 0x64, 0x62, 0x61, 0x11, 0x77, 0x36, 0x14, 0x92, 0x21, 0x11, 0x37, 0xb9, 
+        0x0e, 0xa2, 0x21, 0x11, 0x22, 0xc0, 0xfe, 0xb8, 0xd1, 0x29, 0xa1, 0xaa, 0xab, 0xa2, 0x61, 0x11, 
+        0x22, 0x21, 0x11, 0x30, 0x22, 0xc0, 0x22, 0x61, 0x11, 0x3d, 0x0c, 0x85, 0x32, 0x00, 0xd0, 0xd0, 
+        0xf4, 0x22, 0x61, 0x24, 0x22, 0x61, 0x23, 0x3d, 0x0c, 0x22, 0x21, 0x11, 0x45, 0x42, 0x00, 0x02, 
+        0x21, 0x24, 0x32, 0x21, 0x23, 0x58, 0xe1, 0x00, 0x82, 0x11, 0x80, 0x8d, 0x20, 0x4d, 0x08, 0x30, 
+        0x55, 0x82, 0x57, 0xb8, 0x10, 0x98, 0xd1, 0x0b, 0x03, 0x9a, 0x48, 0x97, 0x34, 0x07, 0x57, 0xb4, 
+        0x04, 0x02, 0xc3, 0xfe, 0x4a, 0x49, 0xb8, 0xa1, 0x50, 0xd4, 0xc0, 0x00, 0xbb, 0x11, 0xb0, 0xb0, 
+        0x20, 0xb9, 0xb1, 0x2d, 0x0d, 0x3d, 0x0c, 0xc5, 0x2d, 0x00, 0x3d, 0x0c, 0x29, 0xf1, 0x22, 0x61, 
+        0x28, 0xe0, 0x00, 0xf5, 0x02, 0x61, 0x10, 0x2d, 0x0d, 0x85, 0x3d, 0x00, 0x42, 0x21, 0x28, 0xd8, 
+        0xe1, 0x52, 0x21, 0x10, 0x00, 0x62, 0x11, 0x60, 0x55, 0x20, 0x52, 0x61, 0x14, 0x40, 0x0d, 0x82, 
+        0x07, 0xb5, 0x22, 0x88, 0xd1, 0x0b, 0x94, 0x99, 0xf1, 0x8a, 0x75, 0x72, 0x61, 0x14, 0x87, 0x37, 
+        0x14, 0xa2, 0x21, 0x14, 0x07, 0xba, 0x0e, 0xb2, 0x21, 0x14, 0x32, 0xc4, 0xfe, 0x28, 0xd1, 0x39, 
+        0xf1, 0xba, 0xb2, 0xb2, 0x61, 0x14, 0x22, 0x21, 0x14, 0x3d, 0x0c, 0x00, 0x22, 0xc0, 0x22, 0x61, 
+        0x14, 0x05, 0x28, 0x00, 0xe0, 0xe0, 0xf4, 0x22, 0x61, 0x2a, 0x22, 0x61, 0x29, 0x3d, 0x0c, 0x22, 
+        0x21, 0x14, 0x05, 0x38, 0x00, 0x02, 0x21, 0x2a, 0x00, 0x52, 0x11, 0x42, 0x21, 0x29, 0x50, 0x5e, 
+        0x20, 0x40, 0x8d, 0x82, 0x87, 0xb5, 0x2c, 0x68, 0xd1, 0x0b, 0x04, 0x6a, 0x55, 0x67, 0x35, 0x23, 
+        0x87, 0xb5, 0x20, 0x38, 0xb1, 0xc2, 0x21, 0x1f, 0xd2, 0x21, 0x20, 0xe2, 0x21, 0x21, 0x02, 0xc4, 
+        0xfe, 0x28, 0xf1, 0x42, 0xa0, 0xc0, 0x00, 0x22, 0x11, 0x20, 0x20, 0x20, 0x02, 0x21, 0x1e, 0x4a, 
+        0x11, 0x0d, 0xf0, 0x00, 0x38, 0xb1, 0xc2, 0x21, 0x1f, 0xd2, 0x21, 0x20, 0xe2, 0x21, 0x21, 0x28, 
+        0xf1, 0x42, 0xa0, 0xc0, 0x00, 0x22, 0x11, 0x20, 0x20, 0x20, 0x02, 0x21, 0x1e, 0x4a, 0x11, 0x0d, 
+        0xf0, 0x0c, 0x02, 0x0c, 0x03, 0xc2, 0x21, 0x1f, 0xd2, 0x21, 0x20, 0xe2, 0x21, 0x21, 0x42, 0xa0, 
+        0xc0, 0x02, 0x21, 0x1e, 0x4a, 0x11, 0x0d, 0xf0, 0x00, 0x8c, 0xd4, 0x4a, 0x73, 0x62, 0x03, 0x00, 
+        0x1b, 0x33, 0x62, 0x45, 0x00, 0x1b, 0x55, 0x77, 0x23, 0xf2, 0x0d, 0xf0, 0xb6, 0x74, 0xe9, 0x62, 
+        0x03, 0x00, 0x1b, 0x33, 0x42, 0xc4, 0xff, 0x62, 0x45, 0x00, 0x52, 0xc5, 0x01, 0x17, 0x65, 0x24, 
+        0xb6, 0x64, 0xd5, 0x62, 0x03, 0x00, 0x72, 0x03, 0x01, 0x2b, 0x33, 0x42, 0xc4, 0xfe, 0x62, 0x45, 
+        0x00, 0x72, 0x45, 0x01, 0x2b, 0x55, 0xc6, 0x02, 0x00, 0x00, 0x00, 0x00, 0x20, 0x52, 0x20, 0x07, 
+        0xe2, 0xc9, 0x17, 0xe2, 0xda, 0x40, 0x74, 0x41, 0x0c, 0x38, 0x87, 0x83, 0x62, 0x9c, 0xc7, 0xc0, 
+        0x87, 0x11, 0x3a, 0x88, 0x68, 0x03, 0x78, 0x13, 0x69, 0x05, 0x68, 0x23, 0x79, 0x15, 0x78, 0x33, 
+        0x69, 0x25, 0x32, 0xc3, 0x10, 0x79, 0x35, 0x52, 0xc5, 0x10, 0x87, 0x23, 0xe6, 0x37, 0x64, 0x0b, 
+        0x68, 0x03, 0x78, 0x13, 0x8b, 0x33, 0x69, 0x05, 0x79, 0x15, 0x8b, 0x55, 0x27, 0xe4, 0x08, 0x17, 
+        0xe4, 0x15, 0x07, 0xe4, 0x22, 0x0d, 0xf0, 0x00, 0x68, 0x03, 0x4b, 0x33, 0x69, 0x05, 0x4b, 0x55, 
+        0x17, 0xe4, 0x04, 0x07, 0xe4, 0x11, 0x0d, 0xf0, 0x62, 0x13, 0x00, 0x2b, 0x33, 0x62, 0x55, 0x00, 
+        0x2b, 0x55, 0x07, 0xe4, 0x02, 0x0d, 0xf0, 0x00, 0x62, 0x03, 0x00, 0x62, 0x45, 0x00, 0x0d, 0xf0, 
+        0x16, 0xa4, 0xff, 0x00, 0x23, 0x40, 0x80, 0xb3, 0x10, 0xb0, 0x33, 0xc0, 0x68, 0x03, 0xac, 0xa7, 
+        0xc0, 0xa7, 0x11, 0x30, 0xaa, 0x80, 0x78, 0x13, 0x88, 0x23, 0x60, 0x67, 0x81, 0x69, 0x05, 0x98, 
+        0x33, 0x70, 0x78, 0x81, 0x79, 0x15, 0x68, 0x43, 0x80, 0x89, 0x81, 0x89, 0x25, 0x32, 0xc3, 0x10, 
+        0x90, 0x96, 0x81, 0x92, 0x65, 0x03, 0x52, 0xc5, 0x10, 0xa7, 0x23, 0xd9, 0x37, 0x64, 0x14, 0x78, 
+        0x13, 0x88, 0x23, 0x60, 0x67, 0x81, 0x69, 0x05, 0x8b, 0x33, 0x70, 0x78, 0x81, 0x79, 0x15, 0x8b, 
+        0x55, 0x80, 0x68, 0x20, 0x27, 0x64, 0x0c, 0x78, 0x13, 0x4b, 0x33, 0x60, 0x67, 0x81, 0x69, 0x05, 
+        0x4b, 0x55, 0x6d, 0x07, 0xba, 0x33, 0x17, 0xe4, 0x06, 0x07, 0xe4, 0x18, 0x0d, 0xf0, 0x00, 0x00, 
+        0x62, 0x03, 0x00, 0x72, 0x03, 0x01, 0x2b, 0x33, 0x62, 0x45, 0x00, 0x72, 0x45, 0x01, 0x2b, 0x55, 
+        0x07, 0xe4, 0x01, 0x0d, 0xf0, 0x62, 0x03, 0x00, 0x62, 0x45, 0x00, 0x0d, 0xf0, 0x00, 0x00, 0x00, 
+        0x30, 0x72, 0x30, 0x20, 0x61, 0x60, 0x30, 0x31, 0x60, 0xb6, 0x23, 0x37, 0x60, 0x51, 0x41, 0x37, 
+        0x35, 0x3d, 0x50, 0xf6, 0x40, 0x40, 0xf3, 0x40, 0x50, 0x44, 0xc0, 0x00, 0x14, 0x40, 0x00, 0x33, 
+        0xa1, 0x22, 0xa0, 0x00, 0x37, 0x36, 0x04, 0x30, 0x66, 0xc0, 0x1b, 0x22, 0xf0, 0x22, 0x11, 0x30, 
+        0x31, 0x41, 0x0b, 0x44, 0x56, 0xc4, 0xfe, 0x37, 0x36, 0x01, 0x1b, 0x22, 0x20, 0x50, 0x60, 0x70, 
+        0x25, 0xa3, 0x0d, 0xf0, 0x9c, 0x53, 0x60, 0x20, 0x60, 0x70, 0x26, 0xb3, 0x0d, 0xf0, 0x00, 0x00, 
+        0x37, 0x36, 0x10, 0x0c, 0x12, 0x7c, 0xf4, 0x70, 0x24, 0xa3, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x00, 
+        0x44, 0x49, 0x56, 0x30, 0x0c, 0x02, 0x0d, 0xf0, 0x7d, 0x02, 0x20, 0x21, 0x60, 0x30, 0x31, 0x60, 
+        0xb6, 0x23, 0x30, 0x50, 0xf2, 0x40, 0x40, 0xf3, 0x40, 0x47, 0xb5, 0x17, 0x50, 0x44, 0xc0, 0x00, 
+        0x14, 0x40, 0x00, 0x33, 0xa1, 0x37, 0x32, 0x02, 0x30, 0x22, 0xc0, 0x30, 0x31, 0x41, 0x42, 0xc4, 
+        0xff, 0x56, 0x04, 0xff, 0x37, 0x32, 0x02, 0x30, 0x22, 0xc0, 0xd6, 0x27, 0x00, 0x20, 0x20, 0x60, 
+        0x0d, 0xf0, 0x00, 0x00, 0xcc, 0x53, 0x00, 0x00, 0x00, 0x44, 0x49, 0x56, 0x30, 0x0c, 0x02, 0x0d, 
+        0xf0, 0x00, 0x00, 0x00, 0xb6, 0x23, 0x30, 0x6d, 0x02, 0x50, 0xf6, 0x40, 0x40, 0xf3, 0x40, 0x47, 
+        0xb5, 0x29, 0x50, 0x44, 0xc0, 0x00, 0x14, 0x40, 0x00, 0x33, 0xa1, 0x0c, 0x02, 0x37, 0x36, 0x04, 
+        0x30, 0x66, 0xc0, 0x1b, 0x22, 0xf0, 0x22, 0x11, 0x30, 0x31, 0x41, 0x0b, 0x44, 0x56, 0xc4, 0xfe, 
+        0x37, 0x36, 0x01, 0x1b, 0x22, 0x0d, 0xf0, 0x00, 0x8c, 0x93, 0x0d, 0xf0, 0x37, 0x36, 0x0c, 0x0c, 
+        0x12, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x49, 0x56, 0x30, 0x0c, 0x02, 0x0d, 0xf0, 
+        0x00, 0x14, 0x40, 0xe6, 0xc4, 0x09, 0x20, 0x33, 0x81, 0x00, 0x22, 0xa1, 0x0d, 0xf0, 0x00, 0x00, 
+        0x00, 0x32, 0xa1, 0x0c, 0x02, 0x0d, 0xf0, 0x00, 0x00, 0x04, 0x40, 0xe6, 0xc4, 0x09, 0x20, 0x23, 
+        0x81, 0x30, 0x30, 0xb1, 0x0d, 0xf0, 0x00, 0x00, 0x30, 0x20, 0xb1, 0x30, 0x3f, 0x31, 0x0d, 0xf0, 
+        0x00, 0x04, 0x40, 0xe6, 0xc4, 0x09, 0x20, 0x23, 0x81, 0x30, 0x30, 0x91, 0x0d, 0xf0, 0x00, 0x00, 
+        0x30, 0x20, 0x91, 0x0c, 0x03, 0x0d, 0xf0, 0x00, 0xbc, 0x62, 0x0c, 0x07, 0x06, 0x02, 0x00, 0x00, 
+        0xac, 0xe2, 0x20, 0x7f, 0x05, 0x20, 0x21, 0x60, 0x40, 0xf2, 0x40, 0x00, 0x14, 0x40, 0x00, 0x52, 
+        0xa1, 0x50, 0x28, 0x41, 0x80, 0x65, 0x01, 0x52, 0xa0, 0x9d, 0x40, 0x55, 0xc0, 0x90, 0x55, 0x01, 
+        0x5a, 0x22, 0x10, 0x77, 0x01, 0x70, 0x22, 0x20, 0xd6, 0x66, 0x00, 0x1b, 0x22, 0xf0, 0x66, 0x11, 
+        0x8c, 0x06, 0x0d, 0xf0, 0x20, 0x21, 0x41, 0xf0, 0x22, 0x11, 0x0d, 0xf0, 0xac, 0xe2, 0x0c, 0x07, 
+        0x06, 0x02, 0x00, 0x00, 0xac, 0x62, 0x20, 0x7f, 0x05, 0x20, 0x21, 0x60, 0x40, 0xf2, 0x40, 0x00, 
+        0x14, 0x40, 0x00, 0x52, 0xa1, 0x50, 0x3b, 0x41, 0xb0, 0x25, 0x01, 0x52, 0xa4, 0x1d, 0x40, 0x55, 
+        0xc0, 0xc0, 0x55, 0x01, 0x5a, 0x33, 0x10, 0x77, 0x01, 0x70, 0x33, 0x20, 0x0d, 0xf0, 0x0c, 0x03, 
+        0x0d, 0xf0, 0x00, 0x00, 0xb6, 0x23, 0x28, 0x50, 0xf2, 0x40, 0x40, 0xf3, 0x40, 0x47, 0xb5, 0x17, 
+        0x50, 0x44, 0xc0, 0x00, 0x14, 0x40, 0x00, 0x33, 0xa1, 0x37, 0x32, 0x02, 0x30, 0x22, 0xc0, 0x30, 
+        0x31, 0x41, 0x42, 0xc4, 0xff, 0x56, 0x04, 0xff, 0x37, 0x32, 0x02, 0x30, 0x22, 0xc0, 0x0d, 0xf0, 
+        0xcc, 0x53, 0x00, 0x00, 0x00, 0x44, 0x49, 0x56, 0x30, 0x0c, 0x02, 0x0d, 0xf0, 0x00, 0x00, 0x00, 
+        0x12, 0xc1, 0xe0, 0xc9, 0x41, 0xd9, 0x51, 0xe9, 0x61, 0xf9, 0x71, 0x20, 0x40, 0xf5, 0x30, 0x50, 
+        0xf5, 0x50, 0x62, 0xc1, 0x30, 0xb4, 0xc1, 0x0c, 0x09, 0xba, 0x66, 0xb7, 0xb6, 0x02, 0x92, 0xc9, 
+        0x01, 0x10, 0x40, 0x40, 0x60, 0x99, 0x81, 0x30, 0xb2, 0xc1, 0x00, 0x66, 0xa1, 0xba, 0x66, 0xb7, 
+        0xb6, 0x01, 0x1b, 0x99, 0x50, 0x34, 0xc1, 0x9a, 0x33, 0x2d, 0x06, 0xc8, 0x41, 0xd8, 0x51, 0xe8, 
+        0x61, 0xf8, 0x71, 0x12, 0xc1, 0x20, 0x0d, 0xf0, 0x00, 0x80, 0xfe, 0x3f, 0x90, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x5a, 0x00, 0xf0, 0x0b, 0xc8, 0x45, 0x10, 0x40, 0xb0, 0x13, 0x10, 0x40, 0x74, 0x45, 0x10, 0x40, 
+        0x50, 0x63, 0x10, 0x40, 0xec, 0x60, 0x00, 0x40, 0xd0, 0x60, 0x00, 0x40, 0xfc, 0x2c, 0x10, 0x40, 
+        0x48, 0x63, 0x10, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x00, 0x24, 0x00, 0x28, 0x00, 0x2c, 0x00, 0x30, 0x00, 0x34, 
+        0x00, 0x40, 0x00, 0x60, 0x00, 0x64, 0x00, 0x68, 0x00, 0x70, 0x00, 0x74, 0x00, 0x78, 0x00, 0x7c, 
+        0xfa, 0x01, 0xfa, 0x01, 0xfa, 0x01, 0xfa, 0x01, 0xfa, 0x01, 0xfa, 0x01, 0xfa, 0x01, 0xfa, 0x01, 
+        0xf8, 0x01, 0xfa, 0x01, 0xfa, 0x01, 0xfa, 0x01, 0xf8, 0x01, 0xfa, 0x01, 0xfa, 0x01, 0xfa, 0x01, 
+        0xfa, 0x01, 0xfa, 0x01, 0xfa, 0x01, 0xfa, 0x01, 0xfa, 0x01, 0xfa, 0x01, 0xf8, 0x01, 0xf8, 0x01, 
+        0x90, 0x80, 0xfe, 0x3f, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x41, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9d, 0xff, 0x9d, 0xff, 0x9d, 0xff, 0x9d, 0xff, 
+        0x9d, 0xff, 0x9d, 0xff, 0x9d, 0xff, 0x9d, 0xff, 0x9d, 0xff, 0x9d, 0xff, 0x9d, 0xff, 0x9d, 0xff, 
+        0x9d, 0xff, 0x9d, 0xff, 0x00, 0x00, 0x20, 0x42, 0x00, 0x00, 0x80, 0x43, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 
+        0x3a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 
+        0xe4, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 
+        0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 
+        0x18, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 
+        0xe4, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 
+        0x60, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 
+        0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 
+        0x64, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 
+        0x6b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 
+        0x04, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 
+        0x0b, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x08, 0x0c, 0x10, 0x13, 0x16, 0x19, 
+        0x1c, 0x1f, 0x22, 0x24, 0x27, 0x29, 0x2c, 0x2e, 0x18, 0x24, 0x30, 0x3c, 0x48, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0x3a, 0xe8, 0xee, 0x0d, 0x0c, 0xe4, 0x0c, 
+        0x00, 0x00, 0x00, 0xf4, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 
+        0x60, 0x50, 0x18, 0x44, 0x06, 0x07, 0x2e, 0x00, 0x84, 0x01, 0xa4, 0x01, 0xe4, 0x01, 0xb4, 0x01, 
+        0xa6, 0x01, 0xac, 0x01, 0xae, 0x01, 0xa4, 0x01, 0xa4, 0x01, 0xa4, 0x01, 0xa4, 0x01, 0xa4, 0x01, 
+        0xa4, 0x01, 0xa4, 0x01, 0xa4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x01, 0xa4, 0x01, 0xb6, 0x01, 0xc4, 0x01, 
+        0xe4, 0x01, 0x00, 0x00, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x20, 0x6f, 0x74, 0x70, 0x0a, 0x00, 0x00, 
+        0x76, 0x65, 0x72, 0x3a, 0x25, 0x73, 0x0a, 0x00, 0x30, 0x61, 0x39, 0x39, 0x37, 0x62, 0x33, 0x65, 
+        0x31, 0x62, 0x36, 0x63, 0x00, 0x00, 0x00, 0x00, 0x65, 0x74, 0x73, 0x20, 0x25, 0x73, 0x20, 0x25, 
+        0x73, 0x0a, 0x00, 0x00, 0x41, 0x70, 0x72, 0x20, 0x31, 0x32, 0x20, 0x32, 0x30, 0x31, 0x34, 0x00, 
+        0x31, 0x36, 0x3a, 0x30, 0x35, 0x3a, 0x33, 0x32, 0x00, 0x00, 0x00, 0x00, 0x73, 0x65, 0x6e, 0x74, 
+        0x20, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x6f, 0x6e, 0x0a, 0x00, 0x00, 0x62, 0x73, 0x73, 0x20, 
+        0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x25, 0x70, 0x2c, 0x65, 0x6e, 0x64, 0x20, 0x25, 0x70, 0x0a, 
+        0x00, 0x00, 0x00, 0x00, 0x6f, 0x6f, 0x62, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x25, 0x73, 0x20, 0x25, 
+        0x75, 0x0a, 0x00, 0x00, 0x61, 0x70, 0x70, 0x5f, 0x6d, 0x61, 0x69, 0x6e, 0x2e, 0x63, 0x00, 0x00, 
+        0x6e, 0x65, 0x77, 0x20, 0x70, 0x75, 0x74, 0x63, 0x21, 0x0a, 0x00, 0x00, 0x73, 0x65, 0x74, 0x5f, 
+        0x72, 0x78, 0x5f, 0x67, 0x61, 0x69, 0x6e, 0x3a, 0x20, 0x72, 0x66, 0x74, 0x78, 0x3d, 0x25, 0x78, 
+        0x2c, 0x20, 0x72, 0x66, 0x72, 0x78, 0x3d, 0x78, 0x25, 0x78, 0x2c, 0x20, 0x61, 0x74, 0x74, 0x3d, 
+        0x25, 0x64, 0x2c, 0x20, 0x74, 0x78, 0x62, 0x62, 0x3d, 0x30, 0x78, 0x25, 0x78, 0x2c, 0x20, 0x62, 
+        0x62, 0x72, 0x78, 0x31, 0x3d, 0x30, 0x78, 0x25, 0x78, 0x2c, 0x20, 0x62, 0x62, 0x72, 0x78, 0x32, 
+        0x3d, 0x30, 0x78, 0x25, 0x78, 0x2c, 0x20, 0x74, 0x64, 0x63, 0x3a, 0x25, 0x64, 0x2c, 0x25, 0x64, 
+        0x0a, 0x00, 0x00, 0x00, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x70, 0x77, 0x72, 0x3d, 0x25, 0x6c, 
+        0x64, 0x2c, 0x20, 0x6d, 0x61, 0x78, 0x3d, 0x25, 0x6c, 0x64, 0x2c, 0x20, 0x0a, 0x00, 0x00, 0x00, 
+        0x25, 0x64, 0x5f, 0x25, 0x64, 0x5f, 0x25, 0x64, 0x0a, 0x00, 0x00, 0x00, 0x72, 0x78, 0x69, 0x71, 
+        0x5f, 0x72, 0x65, 0x67, 0x3a, 0x20, 0x69, 0x3d, 0x25, 0x64, 0x2c, 0x20, 0x61, 0x5f, 0x6d, 0x69, 
+        0x73, 0x3d, 0x25, 0x64, 0x2c, 0x20, 0x70, 0x5f, 0x6d, 0x69, 0x73, 0x3d, 0x25, 0x64, 0x0a, 0x00, 
+        0x69, 0x6e, 0x64, 0x65, 0x78, 0x3a, 0x20, 0x25, 0x64, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 
+        0x20, 0x30, 0x78, 0x25, 0x78, 0x20, 0x30, 0x78, 0x25, 0x78, 0x20, 0x30, 0x78, 0x25, 0x78, 0x20, 
+        0x30, 0x78, 0x25, 0x78, 0x0a, 0x00, 0x00, 0x00, 0x41, 0x50, 0x53, 0x54, 0x0a, 0x46, 0x54, 0x3a, 
+        0x25, 0x64, 0x2c, 0x25, 0x64, 0x2c, 0x25, 0x64, 0x0a, 0x52, 0x4e, 0x3a, 0x25, 0x64, 0x2c, 0x25, 
+        0x64, 0x3b, 0x25, 0x64, 0x2c, 0x25, 0x64, 0x3b, 0x25, 0x64, 0x2c, 0x25, 0x64, 0x3b, 0x25, 0x64, 
+        0x2c, 0x25, 0x64, 0x3b, 0x25, 0x64, 0x2c, 0x25, 0x64, 0x3b, 0x25, 0x64, 0x2c, 0x25, 0x64, 0x3b, 
+        0x25, 0x64, 0x2c, 0x25, 0x64, 0x3b, 0x25, 0x64, 0x2c, 0x25, 0x64, 0x3b, 0x25, 0x64, 0x2c, 0x25, 
+        0x64, 0x3b, 0x25, 0x64, 0x2c, 0x25, 0x64, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x25, 0x64, 0x2c, 0x25, 
+        0x64, 0x3b, 0x25, 0x64, 0x2c, 0x25, 0x64, 0x3b, 0x25, 0x64, 0x2c, 0x25, 0x64, 0x3b, 0x25, 0x64, 
+        0x2c, 0x25, 0x64, 0x0a, 0x54, 0x42, 0x3a, 0x25, 0x30, 0x32, 0x78, 0x2c, 0x25, 0x30, 0x32, 0x78, 
+        0x2c, 0x25, 0x30, 0x32, 0x78, 0x2c, 0x25, 0x30, 0x32, 0x78, 0x2c, 0x25, 0x30, 0x32, 0x78, 0x2c, 
+        0x25, 0x30, 0x32, 0x78, 0x2c, 0x25, 0x30, 0x32, 0x78, 0x2c, 0x25, 0x30, 0x32, 0x78, 0x2c, 0x25, 
+        0x30, 0x32, 0x78, 0x2c, 0x25, 0x30, 0x32, 0x78, 0x2c, 0x25, 0x30, 0x32, 0x78, 0x2c, 0x25, 0x30, 
+        0x32, 0x78, 0x2c, 0x25, 0x30, 0x32, 0x78, 0x2c, 0x25, 0x30, 0x32, 0x78, 0x0a, 0x41, 0x50, 0x45, 
+        0x44, 0x0a, 0x00, 0x00, 0x0a, 0x74, 0x78, 0x20, 0x20, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 
+        0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x20, 0x0a, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 
+        0x6c, 0x3a, 0x20, 0x25, 0x64, 0x20, 0x20, 0x0a, 0x20, 0x72, 0x61, 0x74, 0x65, 0x20, 0x6f, 0x66, 
+        0x66, 0x73, 0x65, 0x74, 0x3a, 0x20, 0x25, 0x64, 0x20, 0x0a, 0x00, 0x00, 0x65, 0x72, 0x72, 0x6f, 
+        0x72, 0x3a, 0x20, 0x70, 0x6c, 0x6c, 0x5f, 0x63, 0x61, 0x6c, 0x20, 0x65, 0x78, 0x63, 0x65, 0x65, 
+        0x64, 0x73, 0x20, 0x35, 0x6d, 0x73, 0x21, 0x21, 0x21, 0x0a, 0x00, 0x00, 0x65, 0x72, 0x72, 0x6f, 
+        0x72, 0x3a, 0x20, 0x70, 0x6c, 0x6c, 0x5f, 0x63, 0x61, 0x6c, 0x20, 0x65, 0x78, 0x63, 0x65, 0x65, 
+        0x64, 0x73, 0x20, 0x32, 0x6d, 0x73, 0x21, 0x21, 0x21, 0x0a, 0x00, 0x00, 0x63, 0x68, 0x61, 0x6e, 
+        0x6e, 0x65, 0x6c, 0x3d, 0x25, 0x64, 0x2c, 0x20, 0x66, 0x72, 0x65, 0x71, 0x5f, 0x6f, 0x66, 0x66, 
+        0x73, 0x65, 0x74, 0x3d, 0x25, 0x64, 0x2c, 0x20, 0x00, 0x00, 0x00, 0x00, 0x25, 0x33, 0x64, 0x2c, 
+        0x25, 0x33, 0x64, 0x3b, 0x20, 0x00, 0x00, 0x00, 0x74, 0x78, 0x69, 0x71, 0x5f, 0x67, 0x61, 0x69, 
+        0x6e, 0x3d, 0x25, 0x64, 0x2c, 0x20, 0x74, 0x78, 0x69, 0x71, 0x5f, 0x70, 0x68, 0x61, 0x73, 0x65, 
+        0x3d, 0x25, 0x64, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x25, 0x64, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 
+        0x25, 0x64, 0x2c, 0x20, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x75, 0x6d, 0x5f, 0x6b, 0x3d, 0x25, 0x64, 
+        0x2c, 0x20, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x5f, 0x6f, 0x75, 0x74, 0x3d, 0x25, 0x64, 0x2c, 0x20, 
+        0x00, 0x00, 0x00, 0x00, 0x72, 0x65, 0x67, 0x5f, 0x69, 0x3d, 0x25, 0x64, 0x2c, 0x20, 0x69, 0x6e, 
+        0x64, 0x61, 0x74, 0x61, 0x3d, 0x25, 0x64, 0x2c, 0x20, 0x00, 0x00, 0x00, 0x70, 0x77, 0x63, 0x74, 
+        0x72, 0x6c, 0x3a, 0x20, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x3d, 0x25, 0x64, 0x2c, 0x20, 0x74, 
+        0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x3d, 0x25, 0x64, 0x2c, 0x20, 
+        0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x5f, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x3d, 0x25, 0x64, 0x2c, 
+        0x20, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x6e, 0x3d, 0x25, 0x64, 0x2c, 0x20, 
+        0x00, 0x00, 0x00, 0x00, 0x72, 0x78, 0x69, 0x71, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x6d, 0x69, 0x73, 
+        0x3a, 0x20, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x70, 0x77, 0x72, 0x3d, 0x25, 0x64, 0x2c, 0x20, 
+        0x25, 0x64, 0x2d, 0x25, 0x64, 0x2c, 0x20, 0x00, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x20, 0x74, 
+        0x78, 0x20, 0x72, 0x65, 0x61, 0x64, 0x20, 0x72, 0x65, 0x67, 0x61, 0x64, 0x64, 0x72, 0x20, 0x3a, 
+        0x20, 0x20, 0x30, 0x78, 0x25, 0x78, 0x20, 0x20, 0x20, 0x20, 0x3b, 0x20, 0x20, 0x20, 0x72, 0x65, 
+        0x73, 0x3a, 0x20, 0x30, 0x78, 0x25, 0x78, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x62, 0x65, 0x66, 0x6f, 
+        0x72, 0x65, 0x20, 0x74, 0x78, 0x20, 0x72, 0x65, 0x67, 0x20, 0x61, 0x64, 0x64, 0x72, 0x20, 0x3d, 
+        0x3d, 0x30, 0x20, 0x0a, 0x20, 0x00, 0x00, 0x00, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 0x74, 0x78, 
+        0x20, 0x72, 0x65, 0x61, 0x64, 0x20, 0x72, 0x65, 0x67, 0x61, 0x64, 0x64, 0x72, 0x20, 0x3a, 0x20, 
+        0x20, 0x30, 0x78, 0x25, 0x78, 0x20, 0x20, 0x20, 0x20, 0x3b, 0x20, 0x20, 0x20, 0x72, 0x65, 0x73, 
+        0x3a, 0x20, 0x30, 0x78, 0x25, 0x78, 0x0a, 0x00, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 0x74, 0x78, 
+        0x20, 0x72, 0x65, 0x67, 0x20, 0x61, 0x64, 0x64, 0x72, 0x20, 0x3d, 0x3d, 0x30, 0x20, 0x0a, 0x20, 
+        0x00, 0x00, 0x00, 0x00, 0x69, 0x69, 0x31, 0x3d, 0x25, 0x6c, 0x64, 0x3b, 0x20, 0x69, 0x71, 0x31, 
+        0x3d, 0x25, 0x6c, 0x64, 0x3b, 0x20, 0x71, 0x69, 0x31, 0x3d, 0x25, 0x6c, 0x64, 0x3b, 0x20, 0x71, 
+        0x71, 0x31, 0x3d, 0x25, 0x6c, 0x64, 0x3b, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x69, 0x69, 0x32, 0x3d, 
+        0x25, 0x6c, 0x64, 0x3b, 0x20, 0x69, 0x71, 0x32, 0x3d, 0x25, 0x6c, 0x64, 0x3b, 0x20, 0x71, 0x69, 
+        0x32, 0x3d, 0x25, 0x6c, 0x64, 0x3b, 0x20, 0x71, 0x71, 0x32, 0x3d, 0x25, 0x6c, 0x64, 0x3b, 0x0a, 
+        0x00, 0x00, 0x00, 0x00, 0x64, 0x63, 0x5f, 0x69, 0x3d, 0x25, 0x6c, 0x64, 0x3b, 0x20, 0x64, 0x63, 
+        0x5f, 0x71, 0x3d, 0x25, 0x6c, 0x64, 0x3b, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x70, 0x77, 0x72, 0x3d, 
+        0x25, 0x6c, 0x64, 0x3b, 0x0a, 0x00, 0x00, 0x00, 0x25, 0x6c, 0x6c, 0x64, 0x2c, 0x20, 0x25, 0x6c, 
+        0x6c, 0x64, 0x2c, 0x20, 0x25, 0x6c, 0x6c, 0x64, 0x2c, 0x20, 0x25, 0x6c, 0x6c, 0x64, 0x2c, 0x20, 
+        0x73, 0x69, 0x67, 0x5f, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x3d, 0x25, 0x6c, 0x6c, 0x64, 0x0a, 0x00, 
+        0x25, 0x6c, 0x64, 0x2c, 0x20, 0x25, 0x6c, 0x64, 0x2c, 0x20, 0x25, 0x6c, 0x6c, 0x64, 0x2c, 0x20, 
+        0x25, 0x6c, 0x6c, 0x64, 0x2c, 0x20, 0x64, 0x63, 0x5f, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x3d, 0x25, 
+        0x6c, 0x6c, 0x64, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x25, 0x6c, 0x64, 0x2c, 0x20, 0x74, 0x6f, 0x74, 
+        0x61, 0x6c, 0x5f, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x3d, 0x25, 0x6c, 0x6c, 0x64, 0x2c, 0x20, 0x6e, 
+        0x6f, 0x69, 0x73, 0x65, 0x5f, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x3d, 0x25, 0x6c, 0x6c, 0x64, 0x0a, 
+        0x00, 0x00, 0x00, 0x00, 0x70, 0x77, 0x72, 0x31, 0x3d, 0x25, 0x6c, 0x6c, 0x64, 0x2c, 0x20, 0x70, 
+        0x77, 0x72, 0x32, 0x3d, 0x25, 0x6c, 0x6c, 0x64, 0x2c, 0x20, 0x53, 0x4e, 0x52, 0x31, 0x3d, 0x25, 
+        0x64, 0x2c, 0x20, 0x00, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x6e, 0x64, 0x3d, 0x25, 0x64, 0x2c, 0x20, 
+        0x6d, 0x61, 0x78, 0x5f, 0x64, 0x69, 0x76, 0x3d, 0x25, 0x64, 0x2c, 0x20, 0x6d, 0x61, 0x78, 0x5f, 
+        0x64, 0x69, 0x76, 0x33, 0x3d, 0x25, 0x64, 0x2c, 0x20, 0x00, 0x00, 0x00, 0x63, 0x61, 0x6c, 0x5f, 
+        0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x3d, 0x25, 0x64, 0x2c, 0x20, 0x00, 0x70, 0x77, 0x72, 0x31, 
+        0x3d, 0x25, 0x6c, 0x6c, 0x64, 0x2c, 0x20, 0x70, 0x77, 0x72, 0x32, 0x3d, 0x25, 0x6c, 0x6c, 0x64, 
+        0x2c, 0x20, 0x53, 0x4e, 0x52, 0x32, 0x3d, 0x25, 0x64, 0x2c, 0x20, 0x00, 0x46, 0x52, 0x45, 0x51, 
+        0x5f, 0x4f, 0x46, 0x46, 0x53, 0x45, 0x54, 0x3d, 0x25, 0x64, 0x6b, 0x48, 0x7a, 0x2c, 0x20, 0x0a, 
+        0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x7c, 
+        0x00, 0x0c, 0x01, 0x00, 0x08, 0x01, 0x08, 0x0c, 0x08, 0x0d, 0x08, 0x0e, 0x08, 0x0f, 0x00, 0x00, 
+        0x18, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x38, 0x95, 0x10, 0x40, 0xaf, 0x04, 0x00, 0x00, 
+        0x0e, 0xf0, 0x01, 0x80, 0x13, 0x8c, 0x12, 0x8d, 0x11, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 
+        0x3c, 0x00, 0x00, 0x00, 0xe8, 0x99, 0x10, 0x40, 0x60, 0x04, 0x00, 0x00, 0x0e, 0xc0, 0x01, 0x80, 
+        0x12, 0x8c, 0x11, 0x8d, 0x10, 0x8e, 0x0f, 0x00, 0x98, 0x88, 0xfe, 0x3f, 0x38, 0xf3, 0xfe, 0x3f, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 
+        
+       };
+
+ // const static int eagle_fw1_size = 43680;
diff --git a/drivers/net/wireless/rockchip_wlan/esp8089/eagle_fw2.h b/drivers/net/wireless/rockchip_wlan/esp8089/eagle_fw2.h
new file mode 100755 (executable)
index 0000000..826d2f6
--- /dev/null
@@ -0,0 +1,4244 @@
+/* 
+ * Copyright (c) Espressif System
+
+ * Apr 13 2013 16:44:24 
+ */ 
+
+
+static u8 eagle_fw2[] =
+{ 
+        0xe9, 0x03, 0x00, 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x00, 0x10, 0x40, 0x68, 0xf9, 0x00, 0x00, 
+        0x12, 0xc1, 0xf0, 0x09, 0x01, 0x05, 0x45, 0x00, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 
+        0x00, 0x06, 0x00, 0x60, 0x0c, 0x0a, 0x31, 0xfe, 0xff, 0xc0, 0x20, 0x00, 0xa2, 0x63, 0xc1, 0x3c, 
+        0x89, 0xc0, 0x20, 0x00, 0x82, 0x23, 0xc0, 0x90, 0x88, 0x20, 0xc0, 0x20, 0x00, 0x82, 0x63, 0xc0, 
+        0x7c, 0x97, 0x0c, 0x46, 0xc0, 0x20, 0x00, 0x52, 0x23, 0xc0, 0x70, 0x55, 0x10, 0x60, 0x55, 0x20, 
+        0xc0, 0x20, 0x00, 0x52, 0x63, 0xc0, 0x0c, 0x14, 0xc0, 0x20, 0x00, 0x22, 0x23, 0xc0, 0x40, 0x22, 
+        0x20, 0xc0, 0x20, 0x00, 0x22, 0x63, 0xc0, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x12, 0xc1, 0xf0, 0x09, 
+        0x01, 0x05, 0xfb, 0xff, 0x06, 0xff, 0xff, 0x00, 0x00, 0xfe, 0xef, 0x3f, 0xe0, 0x88, 0xfe, 0x3f, 
+        0xcc, 0x24, 0x00, 0x40, 0x12, 0xc1, 0xf0, 0x09, 0x01, 0x41, 0xfb, 0xff, 0xc0, 0x20, 0x00, 0x02, 
+        0x24, 0x97, 0xc0, 0x20, 0x00, 0x42, 0x24, 0x96, 0xdc, 0x50, 0x49, 0x11, 0x09, 0x21, 0x29, 0x31, 
+        0xcc, 0xd4, 0x21, 0xf6, 0xff, 0x01, 0xf6, 0xff, 0xc0, 0x00, 0x00, 0x28, 0x31, 0x08, 0x21, 0x48, 
+        0x11, 0x00, 0x50, 0x75, 0xdc, 0xc5, 0x02, 0x42, 0x04, 0x3c, 0x46, 0x7c, 0xe7, 0x1c, 0x88, 0x40, 
+        0x98, 0x75, 0x00, 0xa8, 0x41, 0xa2, 0x42, 0x03, 0x92, 0x42, 0x05, 0x82, 0x42, 0x00, 0x72, 0x42, 
+        0x01, 0x62, 0x42, 0x02, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0x80, 0xfe, 0x3f, 
+        0x28, 0x03, 0x00, 0x60, 0x00, 0x0a, 0x00, 0x60, 0xd0, 0x4c, 0x00, 0x40, 0x04, 0x4d, 0x00, 0x40, 
+        0xc0, 0x5d, 0x00, 0x40, 0xb8, 0x5d, 0x00, 0x40, 0x12, 0xc1, 0xe0, 0xe9, 0x41, 0xf9, 0x51, 0x39, 
+        0x01, 0x09, 0x11, 0xd9, 0x31, 0xc9, 0x21, 0xdd, 0x02, 0x20, 0xc0, 0x75, 0xb6, 0x8c, 0x06, 0x0c, 
+        0x10, 0x0c, 0x1c, 0x46, 0x00, 0x00, 0x0c, 0x00, 0x0c, 0x1f, 0x9c, 0xfc, 0x26, 0x1c, 0x1f, 0xf6, 
+        0x4c, 0x02, 0xf6, 0x2c, 0x0e, 0x22, 0xcc, 0xfc, 0x16, 0x82, 0x14, 0x26, 0x5c, 0x05, 0x32, 0xcc, 
+        0xfa, 0x16, 0xf3, 0x13, 0x0c, 0x04, 0x49, 0x61, 0x0c, 0x02, 0xc6, 0x01, 0x00, 0x0c, 0x10, 0x0c, 
+        0x12, 0x0c, 0x05, 0x59, 0x61, 0xd0, 0xe0, 0x34, 0x00, 0x1e, 0x40, 0x00, 0xff, 0xa1, 0x9c, 0x62, 
+        0x4d, 0x0f, 0x0c, 0x05, 0x00, 0x20, 0xa1, 0x7c, 0xf3, 0x30, 0x30, 0x30, 0x00, 0x33, 0xa1, 0x01, 
+        0xe2, 0xff, 0xc0, 0x00, 0x00, 0x46, 0x03, 0x00, 0x0c, 0x02, 0x0c, 0x03, 0x0c, 0x04, 0x5d, 0x0f, 
+        0x01, 0xde, 0xff, 0xc0, 0x00, 0x00, 0x21, 0xaa, 0xff, 0xd0, 0x09, 0x54, 0xa2, 0xae, 0xcf, 0x2a, 
+        0x00, 0xc0, 0x20, 0x00, 0x92, 0x20, 0x80, 0xa0, 0x99, 0x10, 0xc0, 0x20, 0x00, 0x92, 0x60, 0x80, 
+        0x0c, 0x48, 0xd0, 0x74, 0x24, 0xd0, 0x64, 0x14, 0x80, 0x77, 0x10, 0xe0, 0x77, 0x11, 0x70, 0x66, 
+        0x20, 0xc0, 0x66, 0x11, 0xc0, 0x20, 0x00, 0x52, 0x20, 0x80, 0x60, 0x55, 0x20, 0xc0, 0x20, 0x00, 
+        0x48, 0x61, 0x52, 0x60, 0x80, 0xdc, 0x34, 0x42, 0xaf, 0x7f, 0xc0, 0x20, 0x00, 0x32, 0x20, 0x80, 
+        0x40, 0x33, 0x10, 0xc0, 0x20, 0x00, 0x32, 0x60, 0x80, 0x46, 0x04, 0x00, 0x62, 0xa0, 0x80, 0xc0, 
+        0x20, 0x00, 0x52, 0x20, 0x80, 0x60, 0x55, 0x20, 0xc0, 0x20, 0x00, 0x52, 0x60, 0x80, 0x21, 0xbf, 
+        0xff, 0xb6, 0x2c, 0x44, 0x26, 0x5c, 0x44, 0x41, 0xbe, 0xff, 0xe0, 0x3e, 0x11, 0x4a, 0x33, 0xc0, 
+        0x20, 0x00, 0x42, 0xac, 0x7f, 0x38, 0x03, 0x68, 0x01, 0x40, 0x33, 0x10, 0x42, 0xcc, 0xfe, 0x90, 
+        0x44, 0x11, 0x40, 0x33, 0x20, 0x26, 0x2c, 0x05, 0x52, 0xa4, 0x00, 0x50, 0x33, 0x20, 0x16, 0x96, 
+        0x06, 0x72, 0x12, 0x01, 0x09, 0x71, 0xf0, 0x77, 0x20, 0x72, 0x52, 0x01, 0x2d, 0x0e, 0x01, 0xb3, 
+        0xff, 0xc0, 0x00, 0x00, 0x08, 0x71, 0xc6, 0x02, 0x00, 0x66, 0x5c, 0x08, 0x82, 0x12, 0x03, 0x80, 
+        0x8f, 0x20, 0x82, 0x52, 0x03, 0xa2, 0xaf, 0xbf, 0xc0, 0x20, 0x00, 0x92, 0x20, 0x80, 0xa0, 0x99, 
+        0x10, 0xc0, 0x20, 0x00, 0x92, 0x60, 0x80, 0xdc, 0xac, 0x2d, 0x0e, 0x01, 0xa9, 0xff, 0xc0, 0x00, 
+        0x00, 0xd0, 0x27, 0x14, 0x01, 0xa8, 0xff, 0xc0, 0x00, 0x00, 0x0c, 0x0b, 0xc1, 0xa2, 0xff, 0xc0, 
+        0x20, 0x00, 0xb2, 0x6c, 0x6d, 0xc8, 0x21, 0xd8, 0x31, 0xe8, 0x41, 0xf8, 0x51, 0x08, 0x11, 0x12, 
+        0xc1, 0x20, 0x0d, 0xf0, 0x0c, 0x1e, 0xe9, 0x61, 0x06, 0xaf, 0xff, 0x42, 0x12, 0x00, 0x26, 0x2c, 
+        0x0a, 0x40, 0x4f, 0x20, 0x42, 0x52, 0x00, 0x09, 0x71, 0xc6, 0xe3, 0xff, 0x7c, 0xf5, 0x62, 0x12, 
+        0x03, 0x50, 0x5f, 0x30, 0x40, 0x45, 0x10, 0x60, 0x55, 0x10, 0x52, 0x52, 0x03, 0xc6, 0xf8, 0xff, 
+        0x12, 0xc1, 0xf0, 0xc2, 0x61, 0x01, 0xc1, 0x8d, 0xff, 0x52, 0xaf, 0xff, 0x62, 0x1c, 0x04, 0x09, 
+        0x01, 0x50, 0x06, 0x30, 0x00, 0x02, 0x10, 0x00, 0x00, 0xf4, 0x16, 0x30, 0x06, 0x22, 0x1c, 0x01, 
+        0x09, 0x21, 0x07, 0x02, 0x0f, 0x05, 0xe7, 0x06, 0x05, 0xda, 0xff, 0x08, 0x21, 0x7c, 0xf5, 0x22, 
+        0x1c, 0x01, 0x62, 0x1c, 0x04, 0x50, 0x82, 0x30, 0x72, 0x1c, 0x02, 0x80, 0x80, 0x10, 0x70, 0x78, 
+        0x20, 0x60, 0x88, 0x20, 0x82, 0x5c, 0x04, 0x70, 0x60, 0xf4, 0x62, 0x5c, 0x02, 0x71, 0x7d, 0xff, 
+        0xc0, 0x20, 0x00, 0x32, 0x1c, 0x00, 0x02, 0x1c, 0x03, 0x22, 0x27, 0x69, 0x00, 0x40, 0x11, 0x40, 
+        0x00, 0x20, 0x50, 0x40, 0x30, 0x40, 0x42, 0x10, 0x47, 0x83, 0x15, 0x20, 0x90, 0x10, 0x90, 0x96, 
+        0x20, 0xc0, 0x20, 0x00, 0x92, 0x67, 0x69, 0x0c, 0xa2, 0x45, 0x43, 0x0a, 0x0c, 0x0a, 0xa2, 0x5c, 
+        0x02, 0xc8, 0x11, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0xcc, 0x4d, 0x00, 0x40, 
+        0x12, 0xc1, 0xf0, 0x09, 0x21, 0x71, 0x6b, 0xff, 0xc0, 0x20, 0x00, 0x0c, 0x05, 0x72, 0x27, 0x68, 
+        0x79, 0x01, 0x70, 0x60, 0xf5, 0x70, 0x30, 0xf5, 0x39, 0x11, 0x4d, 0x03, 0x70, 0x66, 0x10, 0x60, 
+        0x60, 0xf4, 0x2d, 0x06, 0x60, 0x33, 0x30, 0x01, 0x64, 0xff, 0xc0, 0x00, 0x00, 0x28, 0x01, 0x38, 
+        0x11, 0x7c, 0xf0, 0x00, 0x33, 0x30, 0x30, 0x22, 0x10, 0x20, 0x20, 0xf4, 0x9c, 0x32, 0x51, 0x5b, 
+        0xff, 0x42, 0x15, 0x04, 0x00, 0x62, 0x30, 0x60, 0x44, 0x10, 0x42, 0x55, 0x04, 0x01, 0xeb, 0xff, 
+        0xc0, 0x00, 0x00, 0x08, 0x21, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0xb0, 0xbc, 0xff, 0x3f, 
+        0x50, 0xcc, 0x10, 0x40, 0xec, 0x88, 0xfe, 0x3f, 0xb8, 0x1c, 0x00, 0x40, 0x68, 0x2e, 0x00, 0x40, 
+        0x88, 0x0f, 0x00, 0x40, 0xa8, 0x0f, 0x00, 0x40, 0x48, 0x1d, 0x00, 0x40, 0x12, 0xc1, 0xf0, 0xc2, 
+        0x61, 0x03, 0x02, 0x61, 0x02, 0x20, 0xc2, 0x20, 0xc5, 0x4f, 0x0c, 0x01, 0xf7, 0xff, 0xc0, 0x00, 
+        0x00, 0x2d, 0x0c, 0x05, 0x80, 0x03, 0x01, 0xf5, 0xff, 0xc0, 0x00, 0x00, 0x85, 0x9a, 0x01, 0x45, 
+        0xc3, 0x09, 0x02, 0x0c, 0x33, 0x66, 0x20, 0x02, 0x45, 0xbe, 0x08, 0x22, 0x0c, 0x39, 0x66, 0x12, 
+        0x02, 0x85, 0xbe, 0x08, 0x2d, 0x01, 0xc5, 0xc9, 0xff, 0x21, 0xe8, 0xff, 0x45, 0x4f, 0x0d, 0x45, 
+        0x68, 0x05, 0x05, 0x7e, 0x0c, 0x0c, 0x02, 0x31, 0xe6, 0xff, 0x0c, 0x04, 0x01, 0xe9, 0xff, 0xc0, 
+        0x00, 0x00, 0x0c, 0x12, 0x01, 0xe8, 0xff, 0xc0, 0x00, 0x00, 0x85, 0x52, 0x00, 0x45, 0xe9, 0x07, 
+        0xc5, 0x94, 0x01, 0x2d, 0x01, 0xc5, 0x99, 0x00, 0x21, 0xdf, 0xff, 0x01, 0x19, 0xff, 0xc0, 0x00, 
+        0x00, 0x01, 0xe1, 0xff, 0xc0, 0x00, 0x00, 0xc8, 0x31, 0x08, 0x21, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 
+        0x20, 0x89, 0xfe, 0x3f, 0x28, 0x89, 0xfe, 0x3f, 0x38, 0x89, 0xfe, 0x3f, 0xf8, 0x88, 0xfe, 0x3f, 
+        0x04, 0x89, 0xfe, 0x3f, 0x90, 0x02, 0x10, 0x40, 0x00, 0x00, 0x06, 0x00, 0x00, 0xde, 0xff, 0x3f, 
+        0x00, 0xe1, 0xff, 0x3f, 0x00, 0x02, 0x00, 0x60, 0x10, 0x89, 0xfe, 0x3f, 0x50, 0x4c, 0x00, 0x40, 
+        0x28, 0x4e, 0x00, 0x40, 0xc4, 0x56, 0x00, 0x40, 0x12, 0xc1, 0xf0, 0xc2, 0x61, 0x01, 0x02, 0x61, 
+        0x00, 0x85, 0x0b, 0x00, 0x21, 0xef, 0xff, 0x31, 0xef, 0xff, 0x01, 0x01, 0xff, 0xc0, 0x00, 0x00, 
+        0x21, 0xee, 0xff, 0x31, 0xee, 0xff, 0x41, 0xee, 0xff, 0x01, 0xfd, 0xfe, 0xc0, 0x00, 0x00, 0x45, 
+        0x41, 0x00, 0x01, 0xf2, 0xff, 0xc0, 0x00, 0x00, 0x21, 0xeb, 0xff, 0x32, 0xa0, 0x00, 0x01, 0xf0, 
+        0xff, 0xc0, 0x00, 0x00, 0xc1, 0x10, 0xff, 0xc0, 0x20, 0x00, 0xc2, 0x2c, 0x66, 0xac, 0x1c, 0xc0, 
+        0x20, 0xf4, 0x8c, 0xb2, 0x0c, 0x03, 0x05, 0xc4, 0xff, 0x21, 0x08, 0xff, 0x0c, 0x10, 0x02, 0x42, 
+        0x0a, 0xc0, 0x00, 0xf5, 0x16, 0xa0, 0x00, 0x21, 0xe0, 0xff, 0x0c, 0x13, 0x20, 0x20, 0x20, 0x85, 
+        0xc2, 0xff, 0x01, 0xe4, 0xff, 0xc0, 0x00, 0x00, 0x22, 0xa2, 0x0c, 0x45, 0x50, 0x00, 0xc5, 0x09, 
+        0x00, 0xc5, 0xa5, 0x00, 0x01, 0xda, 0xff, 0x21, 0xdb, 0xff, 0x02, 0x20, 0xfe, 0x41, 0xd8, 0xff, 
+        0x66, 0x20, 0x0b, 0x32, 0x14, 0x7e, 0xc0, 0x20, 0x00, 0x32, 0x62, 0x42, 0xc6, 0x02, 0x00, 0x66, 
+        0x30, 0x08, 0x52, 0x14, 0x7e, 0xc0, 0x20, 0x00, 0x52, 0x62, 0x41, 0x21, 0xd3, 0xff, 0x01, 0xdc, 
+        0xfe, 0xc0, 0x00, 0x00, 0xc8, 0x11, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0x00, 
+        0x98, 0xbe, 0xff, 0x3f, 0xf0, 0x8e, 0xfe, 0x3f, 0x44, 0x89, 0xfe, 0x3f, 0x41, 0xfd, 0xff, 0x12, 
+        0xc1, 0xf0, 0x31, 0xfc, 0xff, 0x09, 0x01, 0x47, 0xb3, 0x0b, 0x0c, 0x06, 0x0d, 0x03, 0x62, 0x40, 
+        0x00, 0x1b, 0x00, 0x47, 0x90, 0xf7, 0x21, 0xf8, 0xff, 0x01, 0xcd, 0xfe, 0xc0, 0x00, 0x00, 0x08, 
+        0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0xf0, 0x8e, 0xfe, 0x3f, 0x00, 0x00, 0x08, 0x00, 
+        0x54, 0x06, 0x10, 0x40, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x5c, 0x89, 0xfe, 0x3f, 
+        0xf9, 0x84, 0x2e, 0x00, 0xf9, 0x84, 0x2a, 0x00, 0xa8, 0x58, 0x00, 0x40, 0x12, 0xc1, 0xf0, 0xc9, 
+        0x11, 0x09, 0x01, 0x01, 0xfd, 0xff, 0xc0, 0x00, 0x00, 0x41, 0xf3, 0xff, 0x38, 0xc2, 0x39, 0x04, 
+        0xc1, 0xd5, 0xfe, 0x21, 0xf2, 0xff, 0xc0, 0x20, 0x00, 0x02, 0x2c, 0x57, 0x20, 0x00, 0x20, 0xc0, 
+        0x20, 0x00, 0x0c, 0x12, 0x31, 0xef, 0xff, 0x0c, 0x04, 0x02, 0x6c, 0x57, 0x01, 0x7d, 0xff, 0xc0, 
+        0x00, 0x00, 0x51, 0xca, 0xfe, 0x41, 0xa6, 0xff, 0x52, 0x05, 0x0a, 0x01, 0xa4, 0xff, 0x16, 0x25, 
+        0x06, 0x02, 0x20, 0xfe, 0x31, 0xa4, 0xff, 0x66, 0x20, 0x0b, 0x22, 0x14, 0x7e, 0xc0, 0x20, 0x00, 
+        0x22, 0x63, 0x42, 0xc6, 0x02, 0x00, 0x66, 0x30, 0x08, 0x52, 0x14, 0x7e, 0xc0, 0x20, 0x00, 0x52, 
+        0x63, 0x41, 0x71, 0xe0, 0xff, 0xc0, 0x20, 0x00, 0xa2, 0x2c, 0x6c, 0x70, 0xaa, 0x20, 0xc0, 0x20, 
+        0x00, 0xa2, 0x6c, 0x6c, 0x91, 0xdd, 0xff, 0xc0, 0x20, 0x00, 0x82, 0x2c, 0x44, 0x90, 0x88, 0x20, 
+        0xc0, 0x20, 0x00, 0x82, 0x6c, 0x44, 0xc0, 0x20, 0x00, 0x62, 0x2c, 0x6d, 0x70, 0x66, 0x20, 0xc0, 
+        0x20, 0x00, 0x62, 0x6c, 0x6d, 0x21, 0xd5, 0xff, 0x01, 0x9a, 0xfe, 0xc0, 0x00, 0x00, 0x01, 0xd4, 
+        0xff, 0x86, 0x00, 0x00, 0x01, 0xd4, 0xff, 0xc0, 0x20, 0x00, 0x02, 0x6c, 0x43, 0xc0, 0x20, 0x00, 
+        0xb2, 0x2c, 0x43, 0x0c, 0x22, 0x01, 0x5b, 0xff, 0xc0, 0x00, 0x00, 0xc8, 0x11, 0x08, 0x01, 0x12, 
+        0xc1, 0x10, 0x0d, 0xf0, 0xf9, 0x04, 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x80, 0x00, 0x00, 
+        0xff, 0xff, 0xfe, 0xff, 0xff, 0x01, 0x00, 0x02, 0x64, 0x89, 0xfe, 0x3f, 0x6c, 0x89, 0xfe, 0x3f, 
+        0xf0, 0x4c, 0x00, 0x40, 0x0c, 0x07, 0x12, 0xc1, 0xe0, 0xc9, 0x11, 0x09, 0x01, 0xe9, 0x31, 0xd9, 
+        0x21, 0xf9, 0x41, 0x79, 0x51, 0xf1, 0xbb, 0xff, 0xd1, 0x9b, 0xfe, 0xe1, 0xf2, 0xff, 0xc0, 0x20, 
+        0x00, 0xc2, 0x2d, 0x42, 0x16, 0xdc, 0x1a, 0x27, 0x7c, 0x4d, 0x01, 0x70, 0xff, 0x02, 0x20, 0xfe, 
+        0x66, 0x20, 0x11, 0x31, 0x6f, 0xff, 0x32, 0x13, 0x7e, 0xc0, 0x20, 0x00, 0x41, 0x6e, 0xff, 0x32, 
+        0x64, 0x42, 0x46, 0x04, 0x00, 0x66, 0x30, 0x0e, 0x41, 0x6a, 0xff, 0x42, 0x14, 0x7e, 0xc0, 0x20, 
+        0x00, 0x51, 0x68, 0xff, 0x42, 0x65, 0x41, 0xc0, 0x20, 0x00, 0x72, 0x2d, 0x6c, 0xf0, 0x77, 0x20, 
+        0xc0, 0x20, 0x00, 0x72, 0x6d, 0x6c, 0xc0, 0x20, 0x00, 0x61, 0xa7, 0xff, 0x52, 0x2d, 0x44, 0x60, 
+        0x55, 0x20, 0xc0, 0x20, 0x00, 0x52, 0x6d, 0x44, 0x17, 0x7c, 0x14, 0xc0, 0x20, 0x00, 0x21, 0x9e, 
+        0xff, 0x31, 0xd9, 0xff, 0x28, 0x02, 0x32, 0x6d, 0x44, 0x08, 0x52, 0x28, 0x82, 0xc0, 0x00, 0x00, 
+        0xf7, 0x6c, 0x22, 0xc0, 0x20, 0x00, 0x41, 0xd5, 0xff, 0x42, 0x6d, 0x44, 0xc0, 0x20, 0x00, 0x32, 
+        0x2d, 0x53, 0x38, 0x23, 0x8c, 0xa3, 0x21, 0x94, 0xff, 0x28, 0x02, 0x08, 0x62, 0x28, 0x82, 0xc0, 
+        0x00, 0x00, 0x0c, 0x13, 0x39, 0x51, 0x07, 0x7c, 0x20, 0xc0, 0x20, 0x00, 0x51, 0xcd, 0xff, 0x62, 
+        0x2d, 0x43, 0x50, 0x66, 0x10, 0xc0, 0x20, 0x00, 0x62, 0x6d, 0x43, 0xc0, 0x20, 0x00, 0x42, 0x2d, 
+        0x44, 0x50, 0x44, 0x10, 0xc0, 0x20, 0x00, 0x42, 0x6d, 0x44, 0xe7, 0x8c, 0x02, 0x46, 0xcf, 0xff, 
+        0xc0, 0x73, 0x05, 0x56, 0xc7, 0x0d, 0xc0, 0x85, 0x05, 0x56, 0x38, 0x10, 0xc0, 0x9a, 0x04, 0x56, 
+        0xf9, 0x10, 0x07, 0x6c, 0x10, 0xc0, 0x20, 0x00, 0x0c, 0x1b, 0xb2, 0x6d, 0x44, 0xc0, 0x20, 0x00, 
+        0xa1, 0xbd, 0xff, 0xa2, 0x6d, 0x6a, 0x37, 0x6c, 0x3c, 0xc0, 0x20, 0x00, 0x0c, 0x80, 0x02, 0x6d, 
+        0x44, 0x01, 0xbb, 0xff, 0xc0, 0x00, 0x00, 0xc0, 0x20, 0x00, 0x42, 0x2d, 0x69, 0x61, 0x57, 0xfe, 
+        0x7c, 0xf7, 0x82, 0x16, 0x03, 0x62, 0x16, 0x00, 0x00, 0x38, 0x11, 0x70, 0x78, 0x30, 0x80, 0x52, 
+        0x10, 0x50, 0x50, 0xf4, 0x70, 0x66, 0x10, 0x60, 0x44, 0x10, 0x50, 0x33, 0x20, 0x40, 0x33, 0x20, 
+        0xc0, 0x20, 0x00, 0x32, 0x6d, 0x69, 0x47, 0x6c, 0x12, 0xc0, 0x20, 0x00, 0x1c, 0x07, 0x72, 0x6d, 
+        0x44, 0xc0, 0x20, 0x00, 0x22, 0x2d, 0x66, 0x0c, 0x03, 0xc5, 0x93, 0xff, 0x57, 0x6c, 0x0b, 0xc0, 
+        0x20, 0x00, 0x82, 0xa0, 0x20, 0x82, 0x6d, 0x44, 0x45, 0xb6, 0xff, 0x67, 0x6c, 0x36, 0xc0, 0x20, 
+        0x00, 0x02, 0xa0, 0x40, 0x02, 0x6d, 0x44, 0xc0, 0x20, 0x00, 0xb1, 0x40, 0xfe, 0x92, 0x1b, 0x02, 
+        0xb2, 0x1b, 0x03, 0xa2, 0x2d, 0x69, 0x00, 0x0b, 0x11, 0x00, 0xbb, 0x20, 0xb0, 0xaa, 0x10, 0xa0, 
+        0x99, 0x20, 0xc0, 0x20, 0x00, 0x92, 0x6d, 0x69, 0x0c, 0xa2, 0x45, 0xf5, 0x09, 0x41, 0x37, 0xfe, 
+        0x0c, 0x03, 0x32, 0x54, 0x02, 0x77, 0x6c, 0x0d, 0xc0, 0x20, 0x00, 0x0c, 0x92, 0x52, 0xa0, 0x80, 
+        0x52, 0x6d, 0x44, 0xc5, 0xf3, 0x09, 0xc0, 0x20, 0x00, 0x72, 0x2d, 0x44, 0x0c, 0x16, 0x69, 0x51, 
+        0x86, 0x96, 0xff, 0x21, 0x8d, 0xff, 0x31, 0x8d, 0xff, 0x42, 0xa2, 0x4a, 0x01, 0x15, 0xfe, 0xc0, 
+        0x00, 0x00, 0x06, 0xff, 0xff, 0x82, 0x21, 0x05, 0x16, 0x58, 0x00, 0x22, 0xa0, 0x02, 0x85, 0xec, 
+        0x07, 0xc8, 0x11, 0xd8, 0x21, 0xe8, 0x31, 0xf8, 0x41, 0x08, 0x01, 0x12, 0xc1, 0x20, 0x0d, 0xf0, 
+        0x21, 0x82, 0xff, 0x31, 0x82, 0xff, 0x42, 0xa2, 0x51, 0x01, 0x09, 0xfe, 0xc0, 0x00, 0x00, 0x06, 
+        0xff, 0xff, 0x21, 0x7d, 0xff, 0x31, 0x7d, 0xff, 0x42, 0xa2, 0x58, 0x01, 0x05, 0xfe, 0xc0, 0x00, 
+        0x00, 0x06, 0xff, 0xff, 0x12, 0xc1, 0xf0, 0x09, 0x01, 0x66, 0x92, 0x0c, 0x0c, 0xd2, 0x45, 0x05, 
+        0x00, 0x0c, 0xa2, 0x05, 0x05, 0x00, 0xc6, 0x01, 0x00, 0x0c, 0xd0, 0x07, 0x12, 0x02, 0x45, 0x04, 
+        0x00, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x64, 0x08, 0x10, 0x40, 0x78, 0x89, 0xfe, 0x3f, 
+        0x2c, 0x24, 0x00, 0x40, 0x21, 0xfd, 0xff, 0x12, 0xc1, 0xf0, 0x09, 0x01, 0x01, 0xfd, 0xff, 0xc0, 
+        0x00, 0x00, 0x21, 0xfa, 0xff, 0x01, 0xf2, 0xfd, 0xc0, 0x00, 0x00, 0x08, 0x01, 0x12, 0xc1, 0x10, 
+        0x0d, 0xf0, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x5f, 0x4c, 0x3f, 0x00, 0x40, 
+        0xcc, 0x2e, 0x00, 0x40, 0x12, 0xc1, 0xf0, 0xc9, 0x11, 0xd9, 0x21, 0x09, 0x01, 0xdd, 0x02, 0x01, 
+        0xfb, 0xff, 0xc0, 0x00, 0x00, 0x22, 0x02, 0x40, 0xc1, 0xf7, 0xff, 0x01, 0xf7, 0xff, 0x20, 0xcc, 
+        0xd1, 0x0a, 0xcc, 0xc0, 0x20, 0x00, 0x02, 0x2c, 0x87, 0xd9, 0x31, 0x77, 0x70, 0x19, 0xd1, 0x16, 
+        0xff, 0x0c, 0x12, 0x01, 0xf3, 0xff, 0xc0, 0x00, 0x00, 0x48, 0x1d, 0x1b, 0x44, 0x49, 0x1d, 0xc0, 
+        0x20, 0x00, 0x32, 0x2c, 0x87, 0x77, 0xf3, 0xe8, 0xc0, 0x20, 0x00, 0x0c, 0x02, 0x08, 0x01, 0x58, 
+        0x31, 0xd8, 0x21, 0x52, 0x6c, 0x80, 0xc8, 0x11, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0xff, 0x00, 0x12, 0xc1, 0xf0, 0x09, 0x01, 0x01, 0xe4, 0xff, 0xc0, 0x00, 0x00, 0x01, 
+        0xfc, 0xff, 0x72, 0x02, 0x40, 0x51, 0xdf, 0xff, 0x61, 0xe0, 0xff, 0x70, 0x55, 0xd1, 0x6a, 0x55, 
+        0xc0, 0x20, 0x00, 0x22, 0x25, 0x87, 0x27, 0x00, 0x08, 0xc0, 0x20, 0x00, 0x82, 0x25, 0x87, 0x07, 
+        0x88, 0xf6, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x8f, 0xfe, 0x3f, 
+        0x90, 0x93, 0xfe, 0x3f, 0x80, 0x61, 0x00, 0x00, 0x40, 0x4f, 0x00, 0x40, 0x94, 0x5e, 0x00, 0x40, 
+        0x51, 0xfd, 0xff, 0x0c, 0x07, 0x21, 0xf9, 0xff, 0x12, 0xc1, 0xe0, 0x32, 0xa1, 0x04, 0x6d, 0x03, 
+        0x09, 0x61, 0x48, 0x02, 0x02, 0xc1, 0x14, 0x22, 0xc2, 0x10, 0x32, 0x54, 0x02, 0x41, 0xf4, 0xff, 
+        0x32, 0xc1, 0x10, 0x09, 0x11, 0x39, 0x01, 0x32, 0xa4, 0x80, 0x01, 0xf3, 0xff, 0xc0, 0x00, 0x00, 
+        0x28, 0x41, 0x38, 0x51, 0x42, 0xa0, 0x60, 0x01, 0xf1, 0xff, 0xc0, 0x00, 0x00, 0x08, 0x61, 0x12, 
+        0xc1, 0x20, 0x0d, 0xf0, 0xd4, 0x0f, 0x10, 0x40, 0x7c, 0xd2, 0x10, 0x40, 0xc8, 0xd3, 0x10, 0x40, 
+        0x34, 0x0a, 0x10, 0x40, 0x4c, 0x54, 0x00, 0x40, 0x5c, 0x54, 0x00, 0x40, 0x8c, 0x60, 0x00, 0x40, 
+        0x12, 0xc1, 0xf0, 0x29, 0x01, 0x09, 0x11, 0x01, 0xe4, 0xfe, 0xc0, 0x00, 0x00, 0x01, 0xdf, 0xff, 
+        0x29, 0x00, 0x21, 0xf4, 0xff, 0x01, 0xf7, 0xff, 0xc0, 0x00, 0x00, 0x31, 0xdc, 0xff, 0x41, 0xf2, 
+        0xff, 0x38, 0x03, 0x21, 0xf2, 0xff, 0x22, 0x63, 0x13, 0x42, 0x63, 0x12, 0x21, 0xf1, 0xff, 0x01, 
+        0xf2, 0xff, 0xc0, 0x00, 0x00, 0x51, 0xd5, 0xff, 0x58, 0x05, 0x48, 0x01, 0x42, 0x55, 0x03, 0x01, 
+        0xef, 0xff, 0xc0, 0x00, 0x00, 0x85, 0xf5, 0xff, 0x08, 0x11, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 
+        0xff, 0xff, 0xff, 0x00, 0xff, 0x0f, 0x00, 0xff, 0x00, 0x0a, 0xf2, 0x3f, 0xc0, 0x31, 0x00, 0x40, 
+        0xc0, 0x52, 0x00, 0x40, 0x30, 0x53, 0x20, 0x12, 0xc1, 0xe0, 0xc2, 0x61, 0x01, 0xf2, 0x61, 0x04, 
+        0x09, 0x01, 0x31, 0xc6, 0xff, 0xe9, 0x31, 0xd9, 0x21, 0x59, 0x51, 0xdd, 0x02, 0xe8, 0x12, 0x38, 
+        0x03, 0x42, 0x0e, 0x02, 0x22, 0x0e, 0x03, 0x32, 0x13, 0x02, 0x80, 0x22, 0x11, 0x40, 0x22, 0x20, 
+        0x01, 0xf3, 0xff, 0xc0, 0x00, 0x00, 0xfd, 0x02, 0x28, 0x1d, 0x45, 0x7b, 0x04, 0x08, 0x51, 0xcd, 
+        0x02, 0xcc, 0xe2, 0x2d, 0x0d, 0xf0, 0x40, 0xf4, 0x3d, 0x00, 0x01, 0xed, 0xff, 0xc0, 0x00, 0x00, 
+        0x86, 0x51, 0x00, 0x02, 0x62, 0x01, 0xd2, 0x62, 0x00, 0x62, 0x2d, 0x01, 0xf2, 0x52, 0x04, 0xcb, 
+        0x66, 0x69, 0x1d, 0x22, 0xa0, 0xf0, 0x0c, 0x1f, 0x61, 0xe2, 0xff, 0xc0, 0x20, 0x00, 0x52, 0x1d, 
+        0x01, 0x00, 0x55, 0x11, 0xc0, 0x20, 0x00, 0x72, 0x1d, 0x00, 0x70, 0x55, 0x20, 0x60, 0x55, 0x10, 
+        0x50, 0x5c, 0x41, 0x52, 0xc5, 0xf4, 0x50, 0x50, 0xb4, 0x61, 0xda, 0xff, 0x40, 0x55, 0x11, 0xc0, 
+        0x20, 0x00, 0x42, 0x1d, 0x01, 0x00, 0x44, 0x11, 0xc0, 0x20, 0x00, 0x72, 0x1d, 0x00, 0x70, 0x44, 
+        0x20, 0x60, 0x44, 0x10, 0x50, 0x44, 0x20, 0xc0, 0x20, 0x00, 0x42, 0x5d, 0x00, 0x40, 0x40, 0xf5, 
+        0xc0, 0x20, 0x00, 0xb2, 0xa0, 0x8f, 0x2b, 0x3e, 0x98, 0x7c, 0x42, 0x5d, 0x01, 0x02, 0x03, 0x01, 
+        0x32, 0x03, 0x00, 0x80, 0x00, 0x11, 0x30, 0x00, 0x20, 0x02, 0xc0, 0xf4, 0x02, 0x5c, 0x08, 0x82, 
+        0x09, 0x06, 0xa2, 0x0e, 0x05, 0xb0, 0x88, 0x10, 0xa0, 0xa0, 0x24, 0xc0, 0xaa, 0x11, 0xa0, 0x88, 
+        0x20, 0x82, 0x49, 0x06, 0x68, 0x7c, 0x72, 0x0e, 0x04, 0x52, 0x06, 0x04, 0x70, 0x70, 0x34, 0x20, 
+        0x55, 0x10, 0x70, 0x55, 0x20, 0x52, 0x46, 0x04, 0x41, 0xc0, 0xff, 0xb8, 0x7c, 0xc0, 0x20, 0x00, 
+        0x92, 0xa0, 0xfe, 0xa2, 0x0b, 0x0d, 0x42, 0x24, 0x80, 0x49, 0x4b, 0x32, 0x0e, 0x07, 0x32, 0x4b, 
+        0x0c, 0x02, 0x0e, 0x06, 0x20, 0xaa, 0x10, 0x00, 0x01, 0x34, 0x00, 0xaa, 0x20, 0xa2, 0x4b, 0x0d, 
+        0x78, 0x7c, 0x82, 0x0e, 0x06, 0x62, 0x07, 0x00, 0x80, 0x80, 0x04, 0x90, 0x66, 0x10, 0x80, 0x66, 
+        0x20, 0x62, 0x47, 0x00, 0x48, 0x7c, 0x52, 0xa0, 0xfd, 0x32, 0x04, 0x00, 0x22, 0x0e, 0x00, 0x50, 
+        0x33, 0x10, 0x20, 0x57, 0x04, 0x20, 0x24, 0x24, 0xf0, 0x55, 0x11, 0x50, 0x33, 0x20, 0x32, 0x44, 
+        0x00, 0x05, 0x9c, 0x0b, 0x29, 0x5c, 0x72, 0x0e, 0x06, 0x98, 0x7c, 0x70, 0x71, 0x41, 0x9c, 0x17, 
+        0x88, 0x09, 0x80, 0xa6, 0x41, 0x80, 0x80, 0x54, 0xf0, 0xaa, 0x20, 0xa0, 0xaa, 0x11, 0xa0, 0x88, 
+        0x20, 0x89, 0x09, 0xb2, 0x0e, 0x00, 0xb0, 0xb0, 0x34, 0x66, 0x2b, 0x17, 0xe8, 0x7c, 0xf8, 0x0e, 
+        0x01, 0x6a, 0xfe, 0xf0, 0xd0, 0x54, 0xf0, 0xf6, 0x41, 0x00, 0xff, 0x20, 0xa0, 0xff, 0x11, 0xf0, 
+        0xdd, 0x20, 0xd9, 0x0e, 0xc0, 0x2c, 0x20, 0x85, 0xed, 0x07, 0xc2, 0x21, 0x01, 0xd2, 0x21, 0x02, 
+        0xe8, 0x31, 0xf8, 0x41, 0x08, 0x01, 0x12, 0xc1, 0x20, 0x0d, 0xf0, 0x00, 0xe8, 0x2a, 0x00, 0x40, 
+        0x08, 0x58, 0x00, 0x40, 0x32, 0xa0, 0x0c, 0x12, 0xc1, 0xf0, 0xc2, 0x61, 0x01, 0x02, 0x61, 0x00, 
+        0xcd, 0x02, 0x08, 0x02, 0x28, 0x32, 0x29, 0x10, 0x01, 0xf9, 0xff, 0xc0, 0x00, 0x00, 0xa1, 0x88, 
+        0xff, 0x58, 0x0c, 0xb8, 0x1c, 0x58, 0x15, 0xc0, 0x20, 0x00, 0x82, 0x1b, 0x01, 0x00, 0x88, 0x11, 
+        0xc0, 0x20, 0x00, 0x7c, 0x04, 0x38, 0x7c, 0x2b, 0x75, 0xb2, 0x1b, 0x00, 0x62, 0x1c, 0x04, 0x91, 
+        0x4f, 0xff, 0x0b, 0x66, 0x98, 0x09, 0xb0, 0x88, 0x20, 0xa0, 0x88, 0x10, 0x92, 0x19, 0x03, 0x80, 
+        0x8c, 0x41, 0x90, 0x66, 0xd1, 0x8a, 0x66, 0x62, 0x47, 0x00, 0x60, 0x68, 0x41, 0x62, 0x47, 0x01, 
+        0x22, 0x05, 0x00, 0x32, 0x13, 0x00, 0x40, 0x22, 0x10, 0x30, 0x30, 0xb4, 0x47, 0x63, 0x21, 0x0c, 
+        0x20, 0x00, 0x62, 0x20, 0x62, 0x45, 0x00, 0x28, 0x0c, 0x38, 0x1c, 0x01, 0xe1, 0xff, 0xc0, 0x00, 
+        0x00, 0x2d, 0x0c, 0x0c, 0x73, 0x85, 0x6d, 0x04, 0xc8, 0x11, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 
+        0xf0, 0x0c, 0x10, 0x86, 0xf6, 0xff, 0x00, 0x00, 0x80, 0x51, 0x00, 0x40, 0x12, 0xc1, 0xf0, 0x09, 
+        0x01, 0x01, 0x36, 0xff, 0x08, 0x00, 0x22, 0x00, 0x44, 0xdc, 0x42, 0x28, 0xe0, 0xdc, 0x02, 0x0c, 
+        0x02, 0x0c, 0x53, 0x01, 0xf9, 0xff, 0xc0, 0x00, 0x00, 0x3d, 0x02, 0x01, 0xd1, 0xff, 0xc0, 0x00, 
+        0x00, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x41, 0x2d, 0xff, 0x48, 0x04, 0x0c, 0x12, 0x32, 
+        0x04, 0x44, 0x58, 0xe4, 0xcc, 0x73, 0xcc, 0x55, 0x78, 0x84, 0x0c, 0x06, 0x70, 0x26, 0x83, 0x20, 
+        0x20, 0x74, 0x0d, 0xf0, 0x12, 0xc1, 0xf0, 0x09, 0x21, 0x29, 0x01, 0x39, 0x11, 0x0c, 0x42, 0x0c, 
+        0xf3, 0x01, 0xe9, 0xff, 0xc0, 0x00, 0x00, 0x3d, 0x02, 0x48, 0x01, 0x28, 0x12, 0x08, 0x11, 0x02, 
+        0x42, 0x0e, 0x42, 0x42, 0x0c, 0x00, 0x08, 0x41, 0x40, 0x48, 0x41, 0x42, 0x42, 0x0d, 0x02, 0x42, 
+        0x0f, 0x2d, 0x03, 0x01, 0xbb, 0xff, 0xc0, 0x00, 0x00, 0x08, 0x21, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 
+        0x22, 0xa0, 0x00, 0x32, 0xa0, 0x00, 0x42, 0xa0, 0x00, 0x12, 0xc1, 0xf0, 0x09, 0x01, 0x05, 0x30, 
+        0x0c, 0x0c, 0x02, 0x0c, 0x13, 0xc5, 0xfa, 0xff, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 
+        0x0c, 0xb3, 0x12, 0xc1, 0xf0, 0x29, 0x01, 0x09, 0x11, 0x0c, 0x42, 0x01, 0xd3, 0xff, 0xc0, 0x00, 
+        0x00, 0x3d, 0x02, 0x28, 0x12, 0x08, 0x01, 0x02, 0x42, 0x0c, 0x00, 0x08, 0x41, 0x02, 0x42, 0x0d, 
+        0x00, 0x08, 0x41, 0x02, 0x42, 0x0e, 0x00, 0x08, 0x41, 0x02, 0x42, 0x0f, 0x2d, 0x03, 0x01, 0xa4, 
+        0xff, 0xc0, 0x00, 0x00, 0x08, 0x11, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0xb4, 0x18, 0x00, 0x40, 
+        0x12, 0xc1, 0xf0, 0x09, 0x31, 0x29, 0x01, 0x39, 0x11, 0x2c, 0x42, 0x0c, 0xc3, 0x01, 0xc2, 0xff, 
+        0xc0, 0x00, 0x00, 0x38, 0x11, 0x29, 0x21, 0x48, 0x01, 0x28, 0x12, 0x40, 0x58, 0x41, 0x42, 0x42, 
+        0x0c, 0x52, 0x42, 0x0d, 0xe0, 0x44, 0x11, 0xeb, 0x22, 0x01, 0xf4, 0xff, 0xc0, 0x00, 0x00, 0x38, 
+        0x21, 0x2d, 0x03, 0x01, 0x93, 0xff, 0xc0, 0x00, 0x00, 0x08, 0x31, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 
+        0x08, 0x6b, 0x00, 0x40, 0x12, 0xc1, 0xe0, 0x29, 0x01, 0x09, 0x41, 0x01, 0xef, 0xfd, 0xc0, 0x00, 
+        0x00, 0x29, 0x11, 0x0c, 0x13, 0x1c, 0x02, 0x01, 0xb0, 0xff, 0xc0, 0x00, 0x00, 0x38, 0x01, 0x0c, 
+        0x25, 0x0c, 0x36, 0x29, 0x21, 0x78, 0x11, 0x28, 0x12, 0x82, 0x17, 0x02, 0x82, 0x42, 0x0c, 0xcb, 
+        0x42, 0x49, 0x31, 0x80, 0x98, 0x41, 0x0c, 0x64, 0x92, 0x42, 0x0d, 0x72, 0x17, 0x03, 0x62, 0x42, 
+        0x16, 0x72, 0x42, 0x14, 0x52, 0x42, 0x17, 0x70, 0x78, 0x41, 0x72, 0x42, 0x15, 0xeb, 0x22, 0x01, 
+        0xdb, 0xff, 0xc0, 0x00, 0x00, 0x01, 0xea, 0xff, 0xc0, 0x00, 0x00, 0x08, 0xa2, 0xc0, 0x00, 0x00, 
+        0x2b, 0x22, 0x38, 0x31, 0x20, 0x22, 0x21, 0x22, 0x43, 0x0c, 0x20, 0x28, 0x41, 0x22, 0x43, 0x0d, 
+        0x38, 0x21, 0x2d, 0x03, 0x01, 0x73, 0xff, 0xc0, 0x00, 0x00, 0x08, 0x41, 0x12, 0xc1, 0x20, 0x0d, 
+        0xf0, 0x00, 0x00, 0x00, 0x10, 0xf5, 0xfe, 0x3f, 0x0c, 0x33, 0x12, 0xc1, 0xf0, 0x29, 0x01, 0x09, 
+        0x11, 0x0c, 0x42, 0x01, 0x91, 0xff, 0xc0, 0x00, 0x00, 0x0c, 0x14, 0x3d, 0x02, 0x08, 0x01, 0x28, 
+        0x12, 0x00, 0x04, 0x93, 0x02, 0x42, 0x0e, 0x00, 0x08, 0x41, 0x02, 0x42, 0x0f, 0x2d, 0x03, 0x01, 
+        0x64, 0xff, 0xc0, 0x00, 0x00, 0x61, 0xf3, 0xff, 0x0c, 0x05, 0x08, 0x11, 0x12, 0xc1, 0x10, 0x52, 
+        0x46, 0x00, 0x0d, 0xf0, 0x12, 0xc1, 0xe0, 0x49, 0x21, 0x09, 0x41, 0x29, 0x01, 0x39, 0x11, 0x0c, 
+        0x82, 0x0c, 0xe3, 0x01, 0x81, 0xff, 0xc0, 0x00, 0x00, 0x38, 0x21, 0x0c, 0x64, 0x29, 0x31, 0x58, 
+        0x11, 0x28, 0x12, 0x68, 0x01, 0x62, 0x42, 0x0c, 0x52, 0x42, 0x0d, 0xeb, 0x22, 0x01, 0xb3, 0xff, 
+        0xc0, 0x00, 0x00, 0x38, 0x31, 0x2d, 0x03, 0x01, 0x52, 0xff, 0xc0, 0x00, 0x00, 0x08, 0x41, 0x12, 
+        0xc1, 0x20, 0x0d, 0xf0, 0x0c, 0x03, 0x12, 0xc1, 0xf0, 0xc9, 0x11, 0x09, 0x01, 0xcd, 0x02, 0x85, 
+        0xc5, 0x0c, 0x2d, 0x0c, 0x0c, 0x03, 0x05, 0xc6, 0x0c, 0x2d, 0x0c, 0x05, 0x7b, 0x0c, 0x3d, 0x0c, 
+        0x0c, 0x12, 0x0c, 0x04, 0x85, 0x14, 0x0c, 0xc8, 0x11, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 
+        0x0c, 0x02, 0x1c, 0x13, 0x12, 0xc1, 0xf0, 0x09, 0x01, 0x01, 0x67, 0xff, 0xc0, 0x00, 0x00, 0x3d, 
+        0x02, 0x01, 0x3f, 0xff, 0xc0, 0x00, 0x00, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 
+        0x84, 0x89, 0xfe, 0x3f, 0x12, 0xc1, 0xf0, 0xc2, 0x61, 0x01, 0x02, 0x61, 0x00, 0x20, 0xc2, 0x20, 
+        0x21, 0xfc, 0xff, 0x3d, 0x0c, 0x01, 0x5a, 0xfc, 0xc0, 0x00, 0x00, 0x0c, 0x02, 0x3d, 0x0c, 0x0c, 
+        0x04, 0xc5, 0x0f, 0x0c, 0x2d, 0x0c, 0xc5, 0xb5, 0x0c, 0xcc, 0x72, 0xc5, 0x83, 0x0c, 0x85, 0x6b, 
+        0x07, 0x45, 0x54, 0x06, 0xc8, 0x11, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0x00, 
+        0x0c, 0x02, 0x0c, 0x03, 0x12, 0xc1, 0xf0, 0x09, 0x01, 0x01, 0x4f, 0xff, 0xc0, 0x00, 0x00, 0x3d, 
+        0x02, 0x01, 0x27, 0xff, 0xc0, 0x00, 0x00, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 
+        0x11, 0x10, 0x10, 0x40, 0x80, 0x8a, 0xfe, 0x3f, 0x0c, 0x8a, 0xfe, 0x3f, 0x3c, 0x8a, 0xfe, 0x3f, 
+        0x68, 0x8a, 0xfe, 0x3f, 0x9c, 0x89, 0xfe, 0x3f, 0xbc, 0x1d, 0x10, 0x40, 0x90, 0x89, 0xfe, 0x3f, 
+        0x90, 0x8a, 0xfe, 0x3f, 0x88, 0x8a, 0xfe, 0x3f, 0x74, 0x8a, 0xfe, 0x3f, 0xfc, 0x89, 0xfe, 0x3f, 
+        0xb0, 0x89, 0xfe, 0x3f, 0xc0, 0x89, 0xfe, 0x3f, 0xd0, 0x89, 0xfe, 0x3f, 0x04, 0x8a, 0xfe, 0x3f, 
+        0x14, 0xf5, 0xfe, 0x3f, 0x00, 0x0d, 0x10, 0x40, 0xf4, 0x89, 0xfe, 0x3f, 0xdc, 0x89, 0xfe, 0x3f, 
+        0xe8, 0x89, 0xfe, 0x3f, 0x74, 0x0f, 0x00, 0x40, 0x80, 0x0f, 0x00, 0x40, 0x9c, 0x26, 0x00, 0x40, 
+        0xdc, 0x26, 0x00, 0x40, 0xa4, 0x27, 0x00, 0x40, 0xac, 0x27, 0x00, 0x40, 0xb8, 0x27, 0x00, 0x40, 
+        0x78, 0x25, 0x00, 0x40, 0x44, 0x25, 0x00, 0x40, 0x40, 0x2d, 0x00, 0x40, 0x48, 0x2c, 0x00, 0x40, 
+        0xc4, 0x2c, 0x00, 0x40, 0x0c, 0x57, 0x0c, 0x14, 0x12, 0xc1, 0x80, 0x1c, 0x33, 0x88, 0x12, 0x02, 
+        0x61, 0x1b, 0x62, 0x08, 0x04, 0x92, 0x08, 0x05, 0x52, 0x08, 0x07, 0xa2, 0x08, 0x06, 0x80, 0x55, 
+        0x11, 0xa0, 0x55, 0x20, 0x80, 0x55, 0x11, 0x90, 0x55, 0x20, 0x80, 0x55, 0x11, 0x60, 0x55, 0x20, 
+        0x22, 0xc5, 0xf9, 0x37, 0xb2, 0x5e, 0x91, 0xd2, 0xff, 0x20, 0x62, 0x90, 0x9a, 0x66, 0xa0, 0x06, 
+        0x00, 0x46, 0x17, 0x00, 0x46, 0x13, 0x00, 0xc6, 0xeb, 0x00, 0x06, 0xd4, 0x00, 0x46, 0xc1, 0x00, 
+        0x46, 0x10, 0x00, 0xc6, 0x08, 0x00, 0xc6, 0xb1, 0x00, 0x86, 0xa9, 0x00, 0x46, 0xa1, 0x00, 0x86, 
+        0x9d, 0x00, 0xc6, 0x71, 0x00, 0xc6, 0x5c, 0x00, 0x06, 0x57, 0x00, 0x86, 0x09, 0x00, 0xc6, 0x49, 
+        0x00, 0xc6, 0x11, 0x00, 0x46, 0x07, 0x00, 0x86, 0x0c, 0x00, 0x22, 0x08, 0x0c, 0x32, 0x08, 0x0d, 
+        0x42, 0x08, 0x0e, 0x52, 0x08, 0x0f, 0x62, 0x08, 0x11, 0x72, 0x08, 0x10, 0x80, 0x66, 0x11, 0x70, 
+        0x66, 0x20, 0x05, 0x96, 0x04, 0x22, 0xa0, 0x80, 0x02, 0x21, 0x1b, 0x2a, 0x11, 0x0d, 0xf0, 0x00, 
+        0x00, 0x00, 0xcb, 0x28, 0x45, 0x32, 0xff, 0x86, 0xfa, 0xff, 0x00, 0x00, 0x00, 0x32, 0x08, 0x0c, 
+        0x21, 0xb5, 0xff, 0x01, 0xfb, 0xfb, 0xc0, 0x00, 0x00, 0x06, 0xf6, 0xff, 0x22, 0x08, 0x0c, 0x32, 
+        0xc8, 0x10, 0x42, 0x08, 0x0d, 0xcb, 0x98, 0x72, 0x08, 0x0e, 0x92, 0x61, 0x1a, 0x16, 0x77, 0x07, 
+        0x52, 0x08, 0x17, 0x62, 0x08, 0x16, 0x80, 0x55, 0x11, 0x60, 0x55, 0x20, 0x45, 0x27, 0x0b, 0x22, 
+        0x61, 0x13, 0x82, 0x21, 0x1a, 0x21, 0xa8, 0xff, 0x32, 0x08, 0x00, 0x42, 0x08, 0x01, 0x52, 0x08, 
+        0x04, 0x62, 0x08, 0x05, 0x72, 0x08, 0x06, 0xa2, 0x08, 0x07, 0xa9, 0x01, 0x92, 0x08, 0x08, 0x99, 
+        0x11, 0x82, 0x08, 0x09, 0x89, 0x21, 0x01, 0xe6, 0xfb, 0xc0, 0x00, 0x00, 0xb2, 0x21, 0x13, 0x16, 
+        0x8b, 0x06, 0x22, 0x21, 0x1a, 0x22, 0x02, 0x00, 0xc5, 0xa3, 0x0c, 0x29, 0xc1, 0x52, 0x21, 0x1a, 
+        0x22, 0x21, 0x13, 0x32, 0x05, 0x03, 0x42, 0x05, 0x0c, 0x52, 0x05, 0x0d, 0x85, 0xf5, 0x09, 0x01, 
+        0xa9, 0xff, 0xc0, 0x00, 0x00, 0x22, 0x21, 0x13, 0x0c, 0x03, 0x48, 0xc1, 0xc5, 0xfb, 0x09, 0x01, 
+        0xa6, 0xff, 0xc0, 0x00, 0x00, 0x86, 0x0c, 0x00, 0x45, 0x2e, 0x0b, 0x22, 0x21, 0x1a, 0x22, 0x02, 
+        0x00, 0x45, 0xf2, 0x07, 0x82, 0x21, 0x1a, 0x21, 0x8d, 0xff, 0x32, 0x08, 0x00, 0x42, 0x08, 0x04, 
+        0x52, 0x08, 0x05, 0x62, 0x08, 0x06, 0x72, 0x08, 0x07, 0x92, 0x08, 0x08, 0x92, 0x61, 0x00, 0x82, 
+        0x08, 0x09, 0x82, 0x61, 0x01, 0x01, 0xca, 0xfb, 0xc0, 0x00, 0x00, 0xc5, 0xe7, 0x07, 0x16, 0x32, 
+        0xf1, 0x05, 0x41, 0x0b, 0x22, 0x61, 0x12, 0x96, 0x12, 0x42, 0x05, 0x97, 0x0c, 0x16, 0xb2, 0x41, 
+        0x22, 0x21, 0x12, 0x45, 0x64, 0x06, 0xc6, 0xbe, 0xff, 0xcb, 0x08, 0x02, 0x61, 0x16, 0x02, 0x08, 
+        0x13, 0x32, 0x08, 0x0c, 0xb2, 0xc0, 0xfe, 0x56, 0xbb, 0x27, 0x21, 0x79, 0xff, 0x01, 0xbc, 0xfb, 
+        0xc0, 0x00, 0x00, 0x42, 0x21, 0x16, 0x22, 0x04, 0x00, 0x32, 0x04, 0x08, 0x42, 0x04, 0x09, 0xc5, 
+        0x92, 0x0c, 0xc6, 0xb3, 0xff, 0x00, 0x00, 0x00, 0xcb, 0x28, 0x32, 0xc1, 0x10, 0x85, 0x54, 0x00, 
+        0x32, 0xc1, 0x10, 0xc5, 0xbb, 0xff, 0xc6, 0xae, 0xff, 0x00, 0x00, 0x00, 0x21, 0x6e, 0xff, 0x32, 
+        0x08, 0x0f, 0x42, 0x08, 0x0e, 0x80, 0x33, 0x11, 0x40, 0x33, 0x20, 0x42, 0x08, 0x0d, 0x80, 0x33, 
+        0x11, 0x40, 0x33, 0x20, 0x42, 0x08, 0x0c, 0x80, 0x33, 0x11, 0x40, 0x33, 0x20, 0xcb, 0x48, 0x49, 
+        0xf1, 0x01, 0xa7, 0xfb, 0xc0, 0x00, 0x00, 0x38, 0xf1, 0x22, 0x03, 0x03, 0x42, 0x03, 0x02, 0x80, 
+        0x22, 0x11, 0x40, 0x22, 0x20, 0x80, 0x22, 0x11, 0x42, 0x03, 0x01, 0x32, 0x03, 0x00, 0x40, 0x22, 
+        0x20, 0x80, 0x22, 0x11, 0x30, 0x22, 0x20, 0x85, 0xb2, 0xff, 0xc6, 0x99, 0xff, 0xcb, 0x38, 0x0c, 
+        0x02, 0x32, 0x61, 0x10, 0x31, 0x59, 0xff, 0x01, 0x69, 0xff, 0xc0, 0x00, 0x00, 0x62, 0x21, 0x10, 
+        0x82, 0x06, 0x01, 0x72, 0x06, 0x0e, 0x32, 0x06, 0x02, 0x22, 0x06, 0x03, 0x42, 0x06, 0x0b, 0x52, 
+        0x06, 0x0f, 0x80, 0x44, 0x11, 0x80, 0x55, 0x11, 0x80, 0x22, 0x11, 0x30, 0x22, 0x20, 0x70, 0x55, 
+        0x20, 0x80, 0x55, 0x11, 0x72, 0x06, 0x0a, 0x32, 0x06, 0x07, 0x80, 0x22, 0x11, 0x80, 0x22, 0x20, 
+        0x80, 0x22, 0x11, 0x80, 0x33, 0x11, 0x82, 0x06, 0x09, 0x70, 0x44, 0x20, 0x80, 0x44, 0x11, 0x72, 
+        0x06, 0x06, 0x80, 0x44, 0x20, 0x82, 0x06, 0x08, 0x70, 0x33, 0x20, 0x80, 0x44, 0x11, 0x72, 0x06, 
+        0x0d, 0x80, 0x33, 0x11, 0x70, 0x55, 0x20, 0x80, 0x44, 0x20, 0x72, 0x06, 0x05, 0x80, 0x55, 0x11, 
+        0x70, 0x33, 0x20, 0x72, 0x06, 0x0c, 0x80, 0x33, 0x11, 0x70, 0x55, 0x20, 0x72, 0x06, 0x04, 0x62, 
+        0x06, 0x00, 0x70, 0x33, 0x20, 0x60, 0x22, 0x20, 0x0c, 0x06, 0x01, 0x49, 0xff, 0xc0, 0x00, 0x00, 
+        0x0c, 0x02, 0x01, 0x48, 0xff, 0xc0, 0x00, 0x00, 0x0c, 0x02, 0x01, 0x47, 0xff, 0xc0, 0x00, 0x00, 
+        0x01, 0x47, 0xff, 0xc0, 0x00, 0x00, 0xc6, 0x6e, 0xff, 0x21, 0x30, 0xff, 0x01, 0x71, 0xfb, 0xc0, 
+        0x00, 0x00, 0xc6, 0x6b, 0xff, 0x21, 0x2e, 0xff, 0x01, 0x42, 0xff, 0xc0, 0x00, 0x00, 0x0c, 0x02, 
+        0x0c, 0xa3, 0x01, 0x6d, 0xfe, 0xc0, 0x00, 0x00, 0x3d, 0x02, 0x01, 0x45, 0xfe, 0xc0, 0x00, 0x00, 
+        0x46, 0x64, 0xff, 0x21, 0x28, 0xff, 0x01, 0x3b, 0xff, 0xc0, 0x00, 0x00, 0x0c, 0x02, 0x0c, 0x93, 
+        0x01, 0x66, 0xfe, 0xc0, 0x00, 0x00, 0x3d, 0x02, 0x01, 0x3e, 0xfe, 0xc0, 0x00, 0x00, 0xc6, 0x5c, 
+        0xff, 0x32, 0xc8, 0x0c, 0x02, 0x08, 0x0c, 0x32, 0x61, 0x15, 0x16, 0xc0, 0x2e, 0x42, 0xc0, 0xff, 
+        0x16, 0xf4, 0x30, 0x52, 0xc0, 0xfe, 0x16, 0xd5, 0x31, 0x62, 0xc0, 0xfd, 0x56, 0x56, 0xd5, 0x22, 
+        0x08, 0x0d, 0x32, 0xc8, 0x12, 0xc5, 0x1b, 0x0b, 0x42, 0x21, 0x15, 0x0c, 0x13, 0x42, 0x04, 0x02, 
+        0x85, 0x4a, 0x0a, 0x86, 0x4f, 0xff, 0x02, 0xc8, 0x0c, 0x22, 0x08, 0x13, 0x32, 0x08, 0x12, 0x80, 
+        0x22, 0x11, 0x30, 0x22, 0x20, 0x32, 0x08, 0x18, 0x52, 0xc2, 0xfe, 0x56, 0x65, 0x0f, 0x02, 0x61, 
+        0x19, 0x42, 0x08, 0x17, 0x52, 0x08, 0x16, 0x80, 0x44, 0x11, 0x50, 0x44, 0x20, 0x52, 0x08, 0x15, 
+        0x80, 0x44, 0x11, 0x50, 0x44, 0x20, 0x52, 0x08, 0x14, 0x80, 0x44, 0x11, 0x50, 0x44, 0x20, 0x16, 
+        0x24, 0x22, 0x22, 0xa0, 0x02, 0x00, 0x40, 0x20, 0x45, 0xca, 0x0b, 0xc6, 0x86, 0x00, 0xcb, 0x58, 
+        0x52, 0x61, 0x14, 0x05, 0x36, 0x0d, 0x32, 0x21, 0x14, 0x62, 0x12, 0x02, 0x22, 0x03, 0x01, 0x32, 
+        0x03, 0x00, 0x80, 0x22, 0x11, 0x30, 0x22, 0x20, 0x20, 0x66, 0xc0, 0x16, 0x66, 0xcd, 0x32, 0xa0, 
+        0x80, 0x05, 0x58, 0x0c, 0x29, 0xe1, 0xc5, 0x33, 0x0d, 0x08, 0xe1, 0x31, 0xf8, 0xfb, 0x00, 0x00, 
+        0x90, 0x30, 0x00, 0xa0, 0x02, 0xc0, 0x28, 0x02, 0x61, 0x11, 0x07, 0x12, 0x07, 0x2d, 0x00, 0xc5, 
+        0x32, 0x0d, 0x02, 0x21, 0x11, 0x21, 0xf1, 0xfb, 0x22, 0x22, 0x37, 0x00, 0x22, 0xc0, 0x56, 0x72, 
+        0x16, 0x05, 0x1f, 0x07, 0x06, 0x59, 0x00, 0x00, 0x00, 0x00, 0x32, 0x08, 0x15, 0xcb, 0x68, 0x52, 
+        0x08, 0x16, 0x62, 0x61, 0x1c, 0x16, 0x85, 0x1e, 0x62, 0x08, 0x13, 0x16, 0xf6, 0x08, 0x0b, 0x76, 
+        0x16, 0x37, 0x1d, 0x82, 0xc6, 0xfe, 0x16, 0x28, 0x1d, 0xa2, 0xc6, 0xfd, 0x0c, 0x49, 0x0c, 0x00, 
+        0xa0, 0x09, 0x83, 0x86, 0x20, 0x00, 0xb2, 0xc0, 0xff, 0x56, 0x4b, 0x12, 0x21, 0xdf, 0xfe, 0x01, 
+        0x1c, 0xfb, 0xc0, 0x00, 0x00, 0x22, 0x21, 0x16, 0x1b, 0x32, 0x39, 0xd1, 0x22, 0x02, 0x00, 0xc5, 
+        0xb0, 0x0b, 0x52, 0x21, 0x16, 0x38, 0xd1, 0x22, 0x05, 0x00, 0x42, 0x05, 0x08, 0x52, 0x05, 0x09, 
+        0xc5, 0x5e, 0x0c, 0x66, 0x12, 0x02, 0x85, 0x34, 0x0c, 0x22, 0x21, 0x16, 0x22, 0x02, 0x00, 0x45, 
+        0xa7, 0xff, 0xc6, 0x0b, 0xff, 0x42, 0x61, 0x18, 0x52, 0xc2, 0xff, 0x56, 0x95, 0x0c, 0x22, 0xa0, 
+        0x02, 0x4d, 0x00, 0xc5, 0xbc, 0x0b, 0x21, 0xcd, 0xfe, 0x71, 0xcc, 0xfb, 0x0c, 0x56, 0x69, 0x17, 
+        0x01, 0x08, 0xfb, 0xc0, 0x00, 0x00, 0x01, 0xd3, 0xfe, 0xc0, 0x00, 0x00, 0x45, 0x27, 0x0d, 0x81, 
+        0xc7, 0xfb, 0x22, 0x68, 0x37, 0x01, 0xd0, 0xfe, 0xc0, 0x00, 0x00, 0x86, 0xfd, 0xfe, 0x92, 0x08, 
+        0x17, 0x92, 0xc9, 0xf3, 0x90, 0x47, 0x83, 0x0d, 0x04, 0x22, 0x21, 0x1c, 0x02, 0x61, 0x17, 0x22, 
+        0x02, 0x00, 0xb6, 0x63, 0x19, 0x3d, 0x00, 0x05, 0x68, 0x0c, 0x32, 0x21, 0x1c, 0x21, 0xbc, 0xfe, 
+        0x32, 0x03, 0x09, 0x01, 0xf7, 0xfa, 0xc0, 0x00, 0x00, 0x46, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 
+        0x61, 0x17, 0x56, 0x36, 0x02, 0x00, 0x30, 0x20, 0xc5, 0x65, 0x0c, 0x22, 0x21, 0x1c, 0x32, 0x21, 
+        0x17, 0x22, 0x02, 0x00, 0x05, 0x66, 0x0c, 0x32, 0x21, 0x1c, 0x21, 0xb2, 0xfe, 0x32, 0x03, 0x08, 
+        0x01, 0xec, 0xfa, 0xc0, 0x00, 0x00, 0x06, 0x05, 0x00, 0x00, 0x30, 0x20, 0x85, 0x64, 0x0c, 0x32, 
+        0x21, 0x1c, 0x21, 0xad, 0xfe, 0x32, 0x03, 0x09, 0x01, 0xe6, 0xfa, 0xc0, 0x00, 0x00, 0x72, 0x21, 
+        0x1c, 0x22, 0x21, 0x17, 0x1b, 0x57, 0x32, 0x07, 0x00, 0x42, 0x07, 0x08, 0x62, 0x07, 0x09, 0x82, 
+        0x07, 0x0b, 0x89, 0x01, 0xcb, 0x77, 0xc5, 0xfc, 0x0b, 0x32, 0x21, 0x1c, 0x22, 0x03, 0x00, 0x32, 
+        0x03, 0x07, 0x45, 0x0d, 0x0c, 0x06, 0xd7, 0xfe, 0x2d, 0x03, 0x85, 0x99, 0xff, 0x21, 0x9f, 0xfe, 
+        0x51, 0x9b, 0xfb, 0x42, 0x21, 0x18, 0x49, 0x15, 0x01, 0xd6, 0xfa, 0xc0, 0x00, 0x00, 0xc6, 0xd0, 
+        0xfe, 0x2d, 0x03, 0x05, 0x9d, 0xff, 0xc6, 0xce, 0xfe, 0x05, 0x05, 0x07, 0x72, 0x21, 0x14, 0x62, 
+        0x07, 0x03, 0x72, 0x07, 0x02, 0x80, 0x66, 0x11, 0x70, 0x66, 0x20, 0x16, 0x66, 0xb2, 0x22, 0xa0, 
+        0x01, 0x32, 0xa0, 0x01, 0xc5, 0x77, 0xff, 0x21, 0x92, 0xfe, 0x01, 0x9f, 0xfe, 0xc0, 0x00, 0x00, 
+        0x21, 0x90, 0xfe, 0x31, 0x90, 0xfe, 0x42, 0xa0, 0x00, 0x01, 0x9c, 0xfe, 0xc0, 0x00, 0x00, 0x42, 
+        0x21, 0x14, 0x21, 0x8b, 0xfe, 0x32, 0x04, 0x03, 0x42, 0x04, 0x02, 0x80, 0x33, 0x11, 0x40, 0x33, 
+        0x20, 0x0c, 0x04, 0x01, 0x97, 0xfe, 0xc0, 0x00, 0x00, 0x06, 0xba, 0xfe, 0xc5, 0x13, 0x06, 0x86, 
+        0xb8, 0xfe, 0x00, 0x00, 0x00, 0x2d, 0x03, 0xc5, 0x91, 0xff, 0x42, 0x21, 0x19, 0x21, 0x82, 0xfe, 
+        0x32, 0x04, 0x0b, 0x52, 0x04, 0x0a, 0x80, 0x33, 0x11, 0x50, 0x33, 0x20, 0x80, 0x33, 0x11, 0x52, 
+        0x04, 0x09, 0x42, 0x04, 0x08, 0x50, 0x33, 0x20, 0x80, 0x33, 0x11, 0x40, 0x33, 0x20, 0x01, 0xb0, 
+        0xfa, 0xc0, 0x00, 0x00, 0x46, 0xab, 0xfe, 0x0c, 0x20, 0x06, 0xaf, 0xff, 0x0c, 0x30, 0xc6, 0xad, 
+        0xff, 0x2d, 0x03, 0x45, 0xfd, 0x0b, 0x32, 0x21, 0x1c, 0x32, 0x03, 0x09, 0xf6, 0x63, 0x0e, 0x21, 
+        0x73, 0xfe, 0x01, 0xa7, 0xfa, 0xc0, 0x00, 0x00, 0x46, 0xa2, 0xfe, 0x00, 0x00, 0x00, 0x21, 0x70, 
+        0xfe, 0x01, 0xa3, 0xfa, 0xc0, 0x00, 0x00, 0x86, 0x9e, 0xfe, 0x22, 0x08, 0x0d, 0x32, 0xc8, 0x12, 
+        0x42, 0x08, 0x0e, 0x52, 0x08, 0x11, 0x62, 0x08, 0x10, 0x80, 0x55, 0x11, 0x60, 0x55, 0x20, 0x62, 
+        0x08, 0x0f, 0x45, 0x0a, 0x0c, 0x22, 0x21, 0x15, 0x22, 0x02, 0x02, 0xc5, 0x07, 0x08, 0xc6, 0x94, 
+        0xfe, 0x00, 0x00, 0x22, 0x08, 0x0d, 0xc5, 0x0f, 0x0c, 0x22, 0x21, 0x15, 0x22, 0x02, 0x02, 0xc5, 
+        0x06, 0x08, 0xc6, 0x8f, 0xfe, 0x00, 0x00, 0x22, 0x08, 0x0d, 0x32, 0xc8, 0x12, 0x45, 0xea, 0x0a, 
+        0x42, 0x21, 0x15, 0x0c, 0x23, 0x42, 0x04, 0x02, 0x05, 0x19, 0x0a, 0x86, 0x89, 0xfe, 0x00, 0x00, 
+        0x0c, 0x80, 0xfe, 0x3f, 0x31, 0xff, 0xff, 0x29, 0x03, 0x0d, 0xf0, 0x00, 0x21, 0xfd, 0xff, 0x28, 
+        0x02, 0x0d, 0xf0, 0x00, 0x21, 0xfb, 0xff, 0x28, 0x12, 0x0d, 0xf0, 0x00, 0x31, 0xf9, 0xff, 0x0c, 
+        0x02, 0x29, 0x13, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x21, 0xf6, 0xff, 0x28, 0x22, 0x0d, 0xf0, 0x00, 
+        0xff, 0xff, 0xff, 0x2f, 0xff, 0xff, 0xff, 0x6f, 0x31, 0xfe, 0xff, 0x41, 0xfe, 0xff, 0x27, 0xb3, 
+        0x06, 0x27, 0x34, 0x03, 0x0c, 0x12, 0x0d, 0xf0, 0x0c, 0x02, 0x0d, 0xf0, 0x29, 0x17, 0x10, 0x40, 
+        0x64, 0x8b, 0xfe, 0x3f, 0x2c, 0x8b, 0xfe, 0x3f, 0x00, 0x96, 0x00, 0x60, 0x00, 0x9a, 0x00, 0x60, 
+        0xff, 0xff, 0xff, 0x7f, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x00, 0xfc, 0x00, 0x00, 0x64, 0x00, 
+        0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x0c, 0x0c, 0x8b, 0xfe, 0x3f, 0xd4, 0x8a, 0xfe, 0x3f, 
+        0xc4, 0x8a, 0xfe, 0x3f, 0xb0, 0x8a, 0xfe, 0x3f, 0x9c, 0x8a, 0xfe, 0x3f, 0x68, 0x8b, 0xfe, 0x3f, 
+        0xea, 0x00, 0xc0, 0xed, 0x00, 0x0c, 0x90, 0x0d, 0x00, 0x00, 0x00, 0x08, 0x1c, 0x8b, 0xfe, 0x3f, 
+        0x44, 0x8b, 0xfe, 0x3f, 0xf0, 0x8a, 0xfe, 0x3f, 0x61, 0xd6, 0xff, 0x0c, 0xf4, 0x12, 0xc1, 0xf0, 
+        0x09, 0x01, 0xd9, 0x21, 0xc9, 0x11, 0xdd, 0x02, 0xcd, 0x03, 0x02, 0x02, 0x03, 0x32, 0x02, 0x02, 
+        0x80, 0x00, 0x11, 0x30, 0x00, 0x20, 0x32, 0x02, 0x01, 0x80, 0x00, 0x11, 0x30, 0x00, 0x20, 0x32, 
+        0x02, 0x00, 0x80, 0x00, 0x11, 0x30, 0x00, 0x20, 0x32, 0xa1, 0x01, 0x47, 0xb0, 0x37, 0x51, 0xdb, 
+        0xff, 0x00, 0x40, 0x90, 0x5a, 0x44, 0xa0, 0x04, 0x00, 0x06, 0x12, 0x00, 0x86, 0x0a, 0x01, 0x86, 
+        0xf3, 0x00, 0x86, 0xdd, 0x00, 0x06, 0xca, 0x00, 0x86, 0xbb, 0x00, 0x46, 0x97, 0x00, 0xc6, 0x82, 
+        0x00, 0x86, 0x6e, 0x00, 0x46, 0x51, 0x00, 0xc6, 0x4d, 0x00, 0xc6, 0x49, 0x00, 0x86, 0x45, 0x00, 
+        0x46, 0x25, 0x00, 0x86, 0x1a, 0x00, 0x0c, 0x02, 0x29, 0x0c, 0x06, 0x03, 0x00, 0x62, 0xa1, 0x01, 
+        0x60, 0x60, 0xc0, 0x16, 0x46, 0x50, 0x09, 0x0c, 0x0c, 0x12, 0xc8, 0x11, 0xd8, 0x21, 0x08, 0x01, 
+        0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x22, 0x02, 0x0b, 0x32, 0x0d, 0x0a, 0x80, 0x22, 0x11, 0x30, 0x22, 
+        0x20, 0x32, 0x0d, 0x09, 0x80, 0x22, 0x11, 0x30, 0x22, 0x20, 0x32, 0x0d, 0x08, 0x80, 0x22, 0x11, 
+        0x30, 0x22, 0x20, 0x45, 0xee, 0xff, 0x16, 0xe2, 0xfc, 0x32, 0x0d, 0x0b, 0x42, 0x0d, 0x0a, 0x80, 
+        0x33, 0x11, 0x40, 0x33, 0x20, 0x42, 0x0d, 0x09, 0x80, 0x33, 0x11, 0x40, 0x33, 0x20, 0x42, 0x0d, 
+        0x08, 0x80, 0x33, 0x11, 0x40, 0x33, 0x20, 0xc0, 0x20, 0x00, 0x38, 0x03, 0x39, 0x0c, 0x86, 0xe9, 
+        0xff, 0x42, 0x02, 0x0b, 0x52, 0x02, 0x0a, 0x80, 0x44, 0x11, 0x50, 0x44, 0x20, 0x52, 0x02, 0x09, 
+        0x80, 0x44, 0x11, 0x50, 0x44, 0x20, 0x52, 0x02, 0x08, 0x80, 0x44, 0x11, 0x50, 0x44, 0x20, 0xc0, 
+        0x20, 0x00, 0x48, 0x04, 0x49, 0x0c, 0x86, 0xdf, 0xff, 0x85, 0x83, 0x0a, 0x02, 0x0d, 0x0b, 0x32, 
+        0x0d, 0x0a, 0x80, 0x00, 0x11, 0x30, 0x00, 0x20, 0x32, 0x0d, 0x09, 0x80, 0x00, 0x11, 0x30, 0x00, 
+        0x20, 0x32, 0x0d, 0x08, 0x80, 0x00, 0x11, 0x30, 0x00, 0x20, 0x52, 0xc0, 0xff, 0x16, 0x65, 0x46, 
+        0x22, 0xc0, 0xfe, 0x16, 0xa2, 0x43, 0x42, 0x0d, 0x0f, 0x52, 0x0d, 0x0e, 0x80, 0x44, 0x11, 0x50, 
+        0x44, 0x20, 0x52, 0x0d, 0x0d, 0x80, 0x44, 0x11, 0x50, 0x44, 0x20, 0x52, 0x0d, 0x0c, 0x80, 0x44, 
+        0x11, 0x50, 0x44, 0x20, 0xc0, 0x20, 0x00, 0x42, 0x60, 0x00, 0x42, 0xcd, 0x08, 0x32, 0x04, 0x03, 
+        0x52, 0x04, 0x02, 0x80, 0x33, 0x11, 0x50, 0x33, 0x20, 0x52, 0x04, 0x01, 0x80, 0x33, 0x11, 0x42, 
+        0x04, 0x00, 0x50, 0x33, 0x20, 0x80, 0x33, 0x11, 0x40, 0x33, 0x20, 0xc0, 0x20, 0x00, 0x0c, 0x12, 
+        0x38, 0x03, 0x39, 0x0c, 0x86, 0xc0, 0xff, 0x2d, 0x0c, 0x85, 0x94, 0x0a, 0x20, 0x20, 0xf4, 0xc6, 
+        0xbd, 0xff, 0x00, 0x00, 0x00, 0xc5, 0x7a, 0x0a, 0x3d, 0x0c, 0x85, 0x90, 0x0a, 0xc6, 0xfa, 0xff, 
+        0x00, 0x00, 0x2d, 0x0c, 0x85, 0x49, 0x05, 0x46, 0xf8, 0xff, 0x00, 0x00, 0x00, 0x45, 0x79, 0x0a, 
+        0x52, 0xa0, 0x20, 0x02, 0x0d, 0x0b, 0x32, 0x0d, 0x0a, 0x80, 0x00, 0x11, 0x30, 0x00, 0x20, 0x32, 
+        0x0d, 0x09, 0x80, 0x00, 0x11, 0x30, 0x00, 0x20, 0x32, 0x0d, 0x08, 0x80, 0x00, 0x11, 0x30, 0x00, 
+        0x20, 0x07, 0xb5, 0x02, 0xc6, 0xdc, 0x00, 0x00, 0x30, 0x74, 0x05, 0x86, 0x0a, 0x22, 0x0d, 0x0b, 
+        0x32, 0x0d, 0x0a, 0x80, 0x22, 0x11, 0x30, 0x22, 0x20, 0x32, 0x0d, 0x09, 0x80, 0x22, 0x11, 0x30, 
+        0x22, 0x20, 0x32, 0x0d, 0x08, 0x80, 0x22, 0x11, 0x30, 0x22, 0x20, 0x85, 0x34, 0x05, 0x02, 0x0d, 
+        0x0b, 0x22, 0x0d, 0x0a, 0x80, 0x00, 0x11, 0x20, 0x00, 0x20, 0x22, 0x0d, 0x09, 0x80, 0x00, 0x11, 
+        0x20, 0x00, 0x20, 0x22, 0x0d, 0x08, 0x80, 0x00, 0x11, 0x20, 0x00, 0x20, 0x86, 0x99, 0xff, 0x02, 
+        0x02, 0x0b, 0x22, 0x02, 0x0a, 0x80, 0x00, 0x11, 0x20, 0x00, 0x20, 0x22, 0x0d, 0x09, 0x80, 0x00, 
+        0x11, 0x20, 0x00, 0x20, 0x22, 0x0d, 0x08, 0x80, 0x00, 0x11, 0x20, 0x00, 0x20, 0x42, 0xd0, 0xff, 
+        0x56, 0x54, 0x2c, 0x21, 0x5b, 0xff, 0x01, 0xd2, 0xf9, 0xc0, 0x00, 0x00, 0x02, 0x0d, 0x0b, 0x22, 
+        0x0d, 0x0a, 0x80, 0x00, 0x11, 0x20, 0x00, 0x20, 0x22, 0x0d, 0x09, 0x80, 0x00, 0x11, 0x20, 0x00, 
+        0x20, 0x22, 0x0d, 0x08, 0x80, 0x00, 0x11, 0x20, 0x00, 0x20, 0x06, 0x86, 0xff, 0x32, 0x02, 0x0b, 
+        0x42, 0x02, 0x0a, 0x80, 0x33, 0x11, 0x40, 0x33, 0x20, 0x42, 0x02, 0x09, 0x80, 0x33, 0x11, 0x40, 
+        0x33, 0x20, 0x42, 0x02, 0x08, 0x80, 0x33, 0x11, 0x40, 0x33, 0x20, 0x39, 0x26, 0x39, 0x0c, 0x22, 
+        0x02, 0x0b, 0x32, 0x0d, 0x0a, 0x80, 0x22, 0x11, 0x30, 0x22, 0x20, 0x32, 0x0d, 0x09, 0x80, 0x22, 
+        0x11, 0x30, 0x22, 0x20, 0x32, 0x0d, 0x08, 0x80, 0x22, 0x11, 0x30, 0x22, 0x20, 0x16, 0x42, 0x2b, 
+        0x21, 0x41, 0xff, 0x01, 0xb7, 0xf9, 0xc0, 0x00, 0x00, 0xc6, 0x72, 0xff, 0x01, 0x40, 0xff, 0x42, 
+        0x02, 0x0b, 0x52, 0x02, 0x0a, 0x80, 0x44, 0x11, 0x50, 0x44, 0x20, 0x52, 0x02, 0x09, 0x80, 0x44, 
+        0x11, 0x50, 0x44, 0x20, 0x80, 0x44, 0x11, 0x52, 0x02, 0x08, 0x21, 0x37, 0xff, 0x50, 0x44, 0x20, 
+        0x0b, 0x44, 0x56, 0x54, 0x23, 0x41, 0x36, 0xff, 0xc0, 0x20, 0x00, 0x32, 0x20, 0x54, 0x40, 0x33, 
+        0x10, 0xc0, 0x20, 0x00, 0x32, 0x60, 0x54, 0x0c, 0xac, 0xd1, 0x32, 0xff, 0xc0, 0x20, 0x00, 0xb2, 
+        0x20, 0xc6, 0xd0, 0xbb, 0x10, 0xc0, 0xbb, 0x20, 0xc0, 0x20, 0x00, 0xb2, 0x60, 0xc6, 0x91, 0x2f, 
+        0xff, 0xa1, 0x2d, 0xff, 0xc0, 0x20, 0x00, 0x82, 0x22, 0xbb, 0xa0, 0x88, 0x10, 0x90, 0x88, 0x20, 
+        0xc0, 0x20, 0x00, 0x82, 0x62, 0xbb, 0x61, 0x2b, 0xff, 0x71, 0x29, 0xff, 0xc0, 0x20, 0x00, 0x52, 
+        0x22, 0xe2, 0x70, 0x55, 0x10, 0x60, 0x55, 0x20, 0xc0, 0x20, 0x00, 0x52, 0x62, 0xe2, 0x21, 0x26, 
+        0xff, 0x01, 0x93, 0xf9, 0xc0, 0x00, 0x00, 0x46, 0x4f, 0xff, 0x22, 0x02, 0x0b, 0x32, 0x0d, 0x0a, 
+        0x80, 0x22, 0x11, 0x30, 0x22, 0x20, 0x32, 0x0d, 0x09, 0x80, 0x22, 0x11, 0x30, 0x22, 0x20, 0x32, 
+        0x0d, 0x08, 0x80, 0x22, 0x11, 0x30, 0x22, 0x20, 0xb6, 0x22, 0x02, 0x46, 0x46, 0xff, 0x1b, 0x32, 
+        0x39, 0x16, 0x16, 0x92, 0x20, 0x21, 0x19, 0xff, 0x01, 0x86, 0xf9, 0xc0, 0x00, 0x00, 0x86, 0x41, 
+        0xff, 0x42, 0xa0, 0x0e, 0x22, 0x02, 0x0b, 0x32, 0x0d, 0x0a, 0x80, 0x22, 0x11, 0x30, 0x22, 0x20, 
+        0x32, 0x0d, 0x09, 0x80, 0x22, 0x11, 0x30, 0x22, 0x20, 0x32, 0x0d, 0x08, 0x80, 0x22, 0x11, 0x30, 
+        0x22, 0x20, 0x27, 0xb4, 0x02, 0xc6, 0x37, 0xff, 0x16, 0xc2, 0xcd, 0x32, 0xa0, 0x80, 0x05, 0xf0, 
+        0x0b, 0x32, 0xa0, 0x00, 0x29, 0x0c, 0x0c, 0x04, 0x20, 0x20, 0xf4, 0x85, 0x26, 0x00, 0x38, 0x0c, 
+        0x21, 0x08, 0xff, 0x01, 0x73, 0xf9, 0xc0, 0x00, 0x00, 0xc6, 0x2e, 0xff, 0x22, 0x02, 0x0b, 0x32, 
+        0x0d, 0x0a, 0x80, 0x22, 0x11, 0x30, 0x22, 0x20, 0x32, 0x0d, 0x09, 0x80, 0x22, 0x11, 0x30, 0x22, 
+        0x20, 0x32, 0x0d, 0x08, 0x80, 0x22, 0x11, 0x30, 0x22, 0x20, 0x2c, 0x03, 0x27, 0xb3, 0x02, 0x46, 
+        0x25, 0xff, 0x05, 0xb7, 0xff, 0x21, 0xfb, 0xfe, 0x32, 0x0d, 0x0b, 0x42, 0x0d, 0x0a, 0x80, 0x33, 
+        0x11, 0x40, 0x33, 0x20, 0x42, 0x0d, 0x09, 0x80, 0x33, 0x11, 0x40, 0x33, 0x20, 0x42, 0x0d, 0x08, 
+        0x80, 0x33, 0x11, 0x40, 0x33, 0x20, 0x39, 0x0c, 0x01, 0x5e, 0xf9, 0xc0, 0x00, 0x00, 0x86, 0x19, 
+        0xff, 0x22, 0x02, 0x0b, 0x32, 0x0d, 0x0a, 0x80, 0x22, 0x11, 0x30, 0x22, 0x20, 0x32, 0x0d, 0x09, 
+        0x80, 0x22, 0x11, 0x30, 0x22, 0x20, 0x32, 0x0d, 0x08, 0x80, 0x22, 0x11, 0x30, 0x22, 0x20, 0xb6, 
+        0x32, 0x02, 0x86, 0x10, 0xff, 0x20, 0x20, 0x74, 0xc5, 0x26, 0x00, 0x21, 0xe7, 0xfe, 0x32, 0x0d, 
+        0x0b, 0x42, 0x0d, 0x0a, 0x80, 0x33, 0x11, 0x40, 0x33, 0x20, 0x42, 0x0d, 0x09, 0x80, 0x33, 0x11, 
+        0x40, 0x33, 0x20, 0x42, 0x0d, 0x08, 0x80, 0x33, 0x11, 0x40, 0x33, 0x20, 0x39, 0x0c, 0x01, 0x48, 
+        0xf9, 0xc0, 0x00, 0x00, 0x06, 0x04, 0xff, 0x00, 0x00, 0x00, 0x22, 0x02, 0x0b, 0x32, 0x0d, 0x0a, 
+        0x80, 0x22, 0x11, 0x30, 0x22, 0x20, 0x32, 0x0d, 0x09, 0x80, 0x22, 0x11, 0x30, 0x22, 0x20, 0x32, 
+        0x0d, 0x08, 0x80, 0x22, 0x11, 0x30, 0x22, 0x20, 0xc5, 0xaf, 0xff, 0x16, 0x92, 0xbe, 0x62, 0x0d, 
+        0x0a, 0x72, 0x0d, 0x0d, 0x42, 0x0d, 0x0f, 0x52, 0x0d, 0x0e, 0x80, 0x44, 0x11, 0x50, 0x44, 0x20, 
+        0x80, 0x44, 0x11, 0x52, 0x0d, 0x0b, 0x70, 0x44, 0x20, 0x72, 0x0d, 0x0c, 0x80, 0x55, 0x11, 0x80, 
+        0x44, 0x11, 0x60, 0x55, 0x20, 0x62, 0x0d, 0x09, 0x80, 0x55, 0x11, 0x70, 0x44, 0x20, 0x60, 0x55, 
+        0x20, 0x62, 0x0d, 0x08, 0x80, 0x55, 0x11, 0x60, 0x55, 0x20, 0xc0, 0x20, 0x00, 0x49, 0x05, 0x8b, 
+        0x4d, 0x32, 0x04, 0x03, 0x52, 0x04, 0x02, 0x80, 0x33, 0x11, 0x50, 0x33, 0x20, 0x52, 0x04, 0x01, 
+        0x80, 0x33, 0x11, 0x42, 0x04, 0x00, 0x50, 0x33, 0x20, 0x80, 0x33, 0x11, 0x40, 0x33, 0x20, 0xc0, 
+        0x20, 0x00, 0x38, 0x03, 0x39, 0x0c, 0x86, 0xdf, 0xfe, 0x30, 0x50, 0xc0, 0x56, 0x65, 0xb7, 0x21, 
+        0xb7, 0xfe, 0x01, 0x1f, 0xf9, 0xc0, 0x00, 0x00, 0x06, 0x4c, 0xff, 0x91, 0xb5, 0xfe, 0xc0, 0x20, 
+        0x00, 0x92, 0x60, 0x54, 0x82, 0xa1, 0x90, 0xc0, 0x20, 0x00, 0x82, 0x60, 0xc6, 0x71, 0xb1, 0xfe, 
+        0xc0, 0x20, 0x00, 0x72, 0x62, 0xbb, 0x61, 0xb0, 0xfe, 0xc0, 0x20, 0x00, 0x62, 0x62, 0xe2, 0x21, 
+        0xaf, 0xfe, 0x01, 0x13, 0xf9, 0xc0, 0x00, 0x00, 0x06, 0xcf, 0xfe, 0x32, 0xa0, 0xf7, 0xa2, 0xd0, 
+        0xff, 0x56, 0x8a, 0xb2, 0xb2, 0x02, 0x14, 0x0c, 0x80, 0x30, 0xbb, 0x10, 0x00, 0xbb, 0x20, 0xb2, 
+        0x42, 0x14, 0x06, 0x26, 0xff, 0x21, 0xa6, 0xfe, 0x01, 0x0a, 0xf9, 0xc0, 0x00, 0x00, 0x86, 0xc5, 
+        0xfe, 0x2d, 0x0c, 0x05, 0x5f, 0x0a, 0x20, 0x20, 0xf4, 0x46, 0xc3, 0xfe, 0x00, 0x00, 0x00, 0x21, 
+        0xa1, 0xfe, 0x01, 0x03, 0xf9, 0xc0, 0x00, 0x00, 0x06, 0xbf, 0xfe, 0x02, 0x02, 0x14, 0x30, 0x00, 
+        0x10, 0x02, 0x42, 0x14, 0x86, 0x19, 0xff, 0x3d, 0x0c, 0x05, 0x58, 0x0a, 0x86, 0xf5, 0xff, 0x00, 
+        0x28, 0xf5, 0xfe, 0x3f, 0x12, 0xc1, 0xf0, 0x09, 0x01, 0x01, 0xfd, 0xff, 0x08, 0x00, 0x80, 0x42, 
+        0x01, 0x08, 0x00, 0x40, 0x28, 0x31, 0xc0, 0x00, 0x00, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 
+        0x12, 0xc1, 0xf0, 0x09, 0x01, 0x01, 0xf6, 0xff, 0x08, 0x00, 0x08, 0x60, 0xc0, 0x00, 0x00, 0x08, 
+        0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0x12, 0xc1, 0xf0, 0xc9, 0x11, 0x09, 0x01, 0xcd, 
+        0x03, 0x01, 0xef, 0xff, 0x80, 0x32, 0x01, 0x08, 0x00, 0x30, 0x28, 0x31, 0x08, 0x00, 0x3d, 0x0c, 
+        0xc0, 0x00, 0x00, 0x01, 0xeb, 0xff, 0x08, 0x00, 0x08, 0x60, 0x2d, 0x0c, 0xc0, 0x00, 0x00, 0xc8, 
+        0x11, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x0c, 0x03, 0x12, 0xc1, 0xf0, 0x5d, 0x02, 0x09, 
+        0x01, 0x01, 0xe3, 0xff, 0x0c, 0x12, 0x59, 0x00, 0xc5, 0xfb, 0xff, 0x08, 0x01, 0x12, 0xc1, 0x10, 
+        0x0d, 0xf0, 0x00, 0x00, 0x12, 0xc1, 0xf0, 0x09, 0x01, 0x01, 0xdd, 0xff, 0x08, 0x00, 0x08, 0x10, 
+        0xc0, 0x00, 0x00, 0x0c, 0x02, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x12, 0xc1, 0xf0, 0x09, 
+        0x01, 0x01, 0xd7, 0xff, 0x08, 0x00, 0x80, 0x32, 0x01, 0x08, 0x20, 0x30, 0x28, 0x31, 0xc0, 0x00, 
+        0x00, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x12, 0xc1, 0xf0, 0x09, 0x01, 0x01, 0xd0, 0xff, 
+        0x08, 0x00, 0x08, 0x30, 0xc0, 0x00, 0x00, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 
+        0x12, 0xc1, 0xf0, 0x09, 0x01, 0x01, 0xca, 0xff, 0x08, 0x00, 0x08, 0x40, 0xc0, 0x00, 0x00, 0x08, 
+        0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0x12, 0xc1, 0xf0, 0x09, 0x01, 0x01, 0xc4, 0xff, 
+        0x08, 0x00, 0x08, 0x50, 0xc0, 0x00, 0x00, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 
+        0x12, 0xc1, 0xf0, 0x09, 0x01, 0x01, 0xbe, 0xff, 0x08, 0x00, 0x08, 0x60, 0xc0, 0x00, 0x00, 0x08, 
+        0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0x12, 0xc1, 0xf0, 0x09, 0x01, 0x01, 0xb8, 0xff, 
+        0x08, 0x00, 0x08, 0x70, 0xc0, 0x00, 0x00, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 
+        0x21, 0x1e, 0xfb, 0xc0, 0x20, 0x00, 0x22, 0x22, 0x80, 0x0d, 0xf0, 0x00, 0x12, 0xc1, 0xf0, 0x02, 
+        0x61, 0x00, 0x05, 0x91, 0x0c, 0x22, 0x02, 0x06, 0x32, 0xa0, 0x01, 0xc5, 0xee, 0xff, 0x02, 0x21, 
+        0x00, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0xc0, 0x20, 0x00, 0x28, 0x02, 0x0d, 0xf0, 0x00, 
+        0xc0, 0x20, 0x00, 0x39, 0x02, 0x0d, 0xf0, 0x00, 0x00, 0x0e, 0x00, 0x60, 0x20, 0x53, 0xc0, 0x3b, 
+        0x45, 0x50, 0x45, 0xb3, 0x40, 0x42, 0x21, 0x1b, 0x34, 0xa6, 0x13, 0x17, 0x20, 0x63, 0xa0, 0x31, 
+        0xfa, 0xff, 0xc0, 0x20, 0x00, 0x78, 0x02, 0xc0, 0x20, 0x00, 0x72, 0x63, 0x80, 0x4b, 0x22, 0x4b, 
+        0x33, 0x67, 0x92, 0xed, 0x0d, 0xf0, 0x00, 0x00, 0x20, 0x63, 0xc0, 0x3b, 0x56, 0x60, 0x56, 0xb3, 
+        0x50, 0x52, 0x21, 0x1b, 0x55, 0xa6, 0x15, 0x1a, 0x61, 0xf0, 0xff, 0x31, 0xef, 0xff, 0x60, 0x65, 
+        0xa0, 0xc0, 0x20, 0x00, 0x72, 0x23, 0x80, 0xc0, 0x20, 0x00, 0x79, 0x02, 0x4b, 0x33, 0x4b, 0x22, 
+        0x67, 0x93, 0xed, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x30, 0xf5, 0xfe, 0x3f, 0x20, 0x73, 0x04, 0x20, 
+        0x61, 0x04, 0x20, 0x50, 0x04, 0x12, 0xc1, 0xe0, 0x09, 0x31, 0xc9, 0x41, 0x6a, 0x55, 0xc1, 0xfa, 
+        0xff, 0x20, 0x62, 0x04, 0x7a, 0x66, 0x20, 0x05, 0x04, 0x20, 0x76, 0x04, 0x7a, 0x00, 0x20, 0x74, 
+        0x04, 0x7a, 0x00, 0x6a, 0x00, 0x5a, 0x00, 0x30, 0x53, 0x24, 0x00, 0x20, 0x74, 0x0c, 0x40, 0xf6, 
+        0x52, 0x01, 0x0d, 0x02, 0x00, 0x20, 0x90, 0x1c, 0xd0, 0x50, 0x22, 0x90, 0x20, 0x20, 0x74, 0x27, 
+        0x30, 0x01, 0x0d, 0x02, 0x0c, 0x42, 0x00, 0x50, 0x74, 0x0c, 0x13, 0x08, 0x0c, 0x40, 0x45, 0xb0, 
+        0x68, 0x14, 0x02, 0x20, 0x2b, 0x48, 0x04, 0x60, 0x79, 0x84, 0x79, 0x11, 0x40, 0x50, 0x84, 0x60, 
+        0x60, 0x84, 0x69, 0x21, 0x59, 0x01, 0x40, 0x49, 0x84, 0xc0, 0x00, 0x00, 0x48, 0x11, 0x08, 0x0c, 
+        0x0c, 0x52, 0x02, 0x20, 0x2b, 0x0c, 0x13, 0xc0, 0x00, 0x00, 0x48, 0x01, 0x08, 0x0c, 0x0c, 0x42, 
+        0x02, 0x20, 0x2b, 0x0c, 0x23, 0xc0, 0x00, 0x00, 0x48, 0x21, 0x08, 0x0c, 0x0c, 0x52, 0x02, 0x20, 
+        0x2b, 0x0c, 0x23, 0xc0, 0x00, 0x00, 0xc8, 0x41, 0x08, 0x31, 0x12, 0xc1, 0x20, 0x0d, 0xf0, 0x00, 
+        0x70, 0x8b, 0xfe, 0x3f, 0x20, 0x80, 0xfe, 0x3f, 0x14, 0x1d, 0x00, 0x40, 0x12, 0xc1, 0xc0, 0xc9, 
+        0x21, 0xd9, 0x31, 0xe9, 0x41, 0xf9, 0x51, 0x09, 0x11, 0x59, 0xa1, 0x79, 0x91, 0x29, 0x71, 0x49, 
+        0x81, 0x22, 0xa0, 0x7f, 0x80, 0x43, 0x01, 0x40, 0x48, 0x31, 0x40, 0x32, 0xa3, 0x39, 0x61, 0xe6, 
+        0x13, 0x02, 0x46, 0x40, 0x00, 0x0c, 0x0c, 0x0c, 0x00, 0x0c, 0x0f, 0x58, 0xa1, 0x0b, 0x76, 0xdd, 
+        0x05, 0x7a, 0x55, 0x59, 0xb1, 0x1c, 0x83, 0xa2, 0x0d, 0x00, 0xf0, 0x6c, 0xc0, 0x80, 0xe6, 0x01, 
+        0xe0, 0xe8, 0x31, 0x80, 0xaa, 0x01, 0xa0, 0xa8, 0x31, 0xa7, 0x2e, 0x3e, 0x80, 0x66, 0x01, 0x28, 
+        0xb1, 0x60, 0x68, 0x31, 0x27, 0xad, 0x33, 0xa0, 0x70, 0x74, 0xcc, 0xa7, 0x82, 0x0d, 0x01, 0x80, 
+        0x88, 0x01, 0x80, 0x88, 0x31, 0x87, 0x26, 0x22, 0xd8, 0xa1, 0x1b, 0x00, 0xa0, 0x20, 0x74, 0x2a, 
+        0xff, 0x00, 0x00, 0x74, 0x0a, 0xdd, 0xf0, 0x6c, 0xc0, 0x80, 0xe6, 0x01, 0xa2, 0x0d, 0x00, 0xe0, 
+        0xe8, 0x31, 0x80, 0xaa, 0x01, 0xa0, 0xa8, 0x31, 0xa7, 0xae, 0xc0, 0x09, 0xc1, 0x37, 0x2e, 0x0d, 
+        0x62, 0xce, 0xe8, 0x0c, 0xfe, 0x80, 0x66, 0x01, 0x60, 0x68, 0x31, 0x86, 0x09, 0x00, 0xe0, 0x2e, 
+        0x20, 0x32, 0xa0, 0x06, 0x05, 0x7c, 0x0d, 0x0d, 0x02, 0x0c, 0x63, 0x2d, 0x0e, 0x00, 0x10, 0x40, 
+        0x0c, 0x1e, 0x00, 0xee, 0xa1, 0x0b, 0xee, 0xe0, 0xe0, 0xf4, 0x45, 0x81, 0x0d, 0x08, 0xc1, 0x80, 
+        0x62, 0x01, 0x60, 0x68, 0x31, 0xa6, 0x56, 0x04, 0x0c, 0x56, 0x86, 0x00, 0x00, 0x60, 0x60, 0xf4, 
+        0x09, 0xc1, 0x69, 0x01, 0x78, 0x91, 0x98, 0x81, 0x88, 0x71, 0x90, 0x90, 0x90, 0x42, 0x19, 0x00, 
+        0x80, 0x8c, 0x90, 0x40, 0x4e, 0xb0, 0x4a, 0x46, 0x40, 0x40, 0xf4, 0x42, 0x58, 0x00, 0x9c, 0x47, 
+        0x52, 0x19, 0x00, 0x21, 0xbf, 0xff, 0x3d, 0x0c, 0x6d, 0x0e, 0x78, 0x01, 0x01, 0xbf, 0xff, 0xc0, 
+        0x00, 0x00, 0x08, 0xc1, 0x68, 0x01, 0x0c, 0xfa, 0xa7, 0x9e, 0x0b, 0x66, 0x56, 0x08, 0xb1, 0xb9, 
+        0xff, 0xc2, 0x4b, 0x00, 0xc6, 0x03, 0x00, 0xe8, 0x61, 0x1b, 0xcc, 0x80, 0xcc, 0x01, 0xc0, 0xc8, 
+        0x31, 0xe0, 0xec, 0xc0, 0x56, 0xde, 0xf0, 0xc8, 0x21, 0xd8, 0x31, 0xe8, 0x41, 0xf8, 0x51, 0x08, 
+        0x11, 0x12, 0xc1, 0x40, 0x0d, 0xf0, 0x00, 0x00, 0x12, 0xc1, 0xf0, 0xc9, 0x11, 0x09, 0x01, 0xcd, 
+        0x02, 0x1c, 0x70, 0x27, 0x20, 0x1d, 0x1c, 0x12, 0xc7, 0x22, 0x12, 0xe6, 0xac, 0x09, 0x4c, 0x00, 
+        0xe6, 0x6c, 0x13, 0x0c, 0x00, 0x86, 0x03, 0x00, 0x02, 0xa0, 0x60, 0x06, 0x02, 0x00, 0x02, 0xa0, 
+        0x70, 0x86, 0x00, 0x00, 0x02, 0xa0, 0x78, 0x21, 0x78, 0xff, 0x00, 0x40, 0xf4, 0x02, 0x22, 0x00, 
+        0x32, 0xa0, 0x01, 0x02, 0x20, 0x2b, 0x22, 0xa0, 0x03, 0xc0, 0x00, 0x00, 0x2d, 0x0c, 0x0c, 0x63, 
+        0xc5, 0x74, 0x0d, 0x0c, 0x23, 0x0c, 0x65, 0xd0, 0x42, 0x11, 0x01, 0x6f, 0xff, 0x0c, 0x32, 0x08, 
+        0x00, 0x50, 0x44, 0x20, 0x02, 0x20, 0x2b, 0x40, 0x40, 0xf4, 0xc0, 0x00, 0x00, 0xc8, 0x11, 0x08, 
+        0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x9e, 0x00, 0x60, 0x12, 0xc1, 0xe0, 0xd9, 
+        0x21, 0xe9, 0x31, 0x09, 0x01, 0xc9, 0x11, 0xf9, 0x41, 0x16, 0x76, 0x0d, 0xb1, 0x78, 0xfd, 0xc1, 
+        0xfa, 0xff, 0x0c, 0x00, 0x0c, 0x4d, 0x70, 0x80, 0x90, 0x82, 0x18, 0x00, 0x9d, 0x0d, 0x80, 0xe8, 
+        0x04, 0x80, 0x24, 0x04, 0x80, 0xf3, 0x04, 0x2a, 0xff, 0x80, 0x36, 0x04, 0x80, 0x25, 0x04, 0x3a, 
+        0x22, 0x80, 0x39, 0x04, 0x3a, 0xee, 0x80, 0x37, 0x04, 0x80, 0x80, 0xe4, 0x3a, 0xee, 0x2a, 0xee, 
+        0xfa, 0xee, 0x80, 0xf0, 0x24, 0xe0, 0xe0, 0x74, 0xf6, 0x5e, 0x01, 0x9d, 0x0e, 0x90, 0xa0, 0x74, 
+        0xa0, 0xea, 0x90, 0xf0, 0xee, 0x90, 0xe0, 0xe0, 0xf4, 0x1c, 0xdf, 0x9d, 0x0f, 0xe7, 0x3f, 0x01, 
+        0x9d, 0x0e, 0x90, 0x30, 0xf4, 0x40, 0x33, 0xb0, 0xd8, 0x13, 0x38, 0x03, 0xd0, 0xe9, 0x84, 0x30, 
+        0x20, 0x84, 0xd0, 0xd0, 0x84, 0x30, 0x39, 0x84, 0xc0, 0x20, 0x00, 0xf0, 0xf8, 0x01, 0x80, 0x33, 
+        0x11, 0x1c, 0xe8, 0x3a, 0xff, 0x82, 0x6b, 0x1a, 0x20, 0x31, 0x41, 0x3a, 0xff, 0xc0, 0x30, 0xa0, 
+        0xc0, 0x20, 0x00, 0xf9, 0x03, 0xc0, 0x20, 0x00, 0x1c, 0xf8, 0x82, 0x6b, 0x1a, 0xc0, 0x20, 0x00, 
+        0xa0, 0x8e, 0x01, 0x10, 0x22, 0x01, 0xf9, 0x03, 0x8a, 0x22, 0x50, 0x8a, 0x90, 0x82, 0x18, 0x00, 
+        0x30, 0xdd, 0x11, 0x80, 0x80, 0xa4, 0xd0, 0x88, 0xa0, 0x8a, 0x22, 0xc0, 0x20, 0x00, 0xd2, 0xa1, 
+        0xe0, 0xd2, 0x6b, 0x1a, 0xc0, 0x20, 0x00, 0x29, 0x03, 0xc0, 0x20, 0x00, 0x82, 0xa1, 0xe1, 0x82, 
+        0x6b, 0x1a, 0xc0, 0x20, 0x00, 0x29, 0x03, 0x88, 0x51, 0x1b, 0x00, 0x00, 0x00, 0x74, 0x00, 0xd6, 
+        0xc0, 0x56, 0xfd, 0xf2, 0xc8, 0x11, 0xd8, 0x21, 0xe8, 0x31, 0xf8, 0x41, 0x08, 0x01, 0x12, 0xc1, 
+        0x20, 0x0d, 0xf0, 0x00, 0xfd, 0x7f, 0xfd, 0xff, 0x82, 0xae, 0x00, 0x72, 0xa1, 0x42, 0x31, 0x3b, 
+        0xfd, 0xc0, 0x20, 0x00, 0x62, 0x23, 0x59, 0x80, 0x66, 0x10, 0x70, 0x66, 0x20, 0xc0, 0x20, 0x00, 
+        0x62, 0x63, 0x59, 0x51, 0xf8, 0xff, 0x0c, 0x24, 0xc0, 0x20, 0x00, 0x22, 0x23, 0x58, 0x50, 0x22, 
+        0x10, 0x40, 0x22, 0x20, 0xc0, 0x20, 0x00, 0x22, 0x63, 0x58, 0x0d, 0xf0, 0x12, 0xc1, 0xe0, 0x09, 
+        0x11, 0x29, 0x01, 0xd9, 0x31, 0xe9, 0x41, 0xc9, 0x21, 0xed, 0x05, 0xc1, 0x2c, 0xfd, 0xd1, 0x0e, 
+        0xfa, 0xc0, 0x20, 0x00, 0x02, 0x2c, 0x58, 0x49, 0x51, 0x17, 0xe0, 0x24, 0x2d, 0x03, 0x01, 0xb0, 
+        0xf9, 0xc0, 0x00, 0x00, 0x01, 0x11, 0xff, 0x08, 0x00, 0x02, 0x20, 0x19, 0x28, 0x01, 0xc0, 0x00, 
+        0x00, 0x08, 0x51, 0xc0, 0x20, 0x00, 0x22, 0x2c, 0x58, 0x17, 0xe2, 0x13, 0x0c, 0x02, 0x06, 0x07, 
+        0x00, 0xc0, 0x20, 0x00, 0x52, 0x2d, 0x80, 0x40, 0x55, 0xc0, 0x57, 0xbe, 0xc3, 0xc6, 0x02, 0x00, 
+        0xc0, 0x20, 0x00, 0x62, 0x2d, 0x80, 0x00, 0x66, 0xc0, 0x67, 0xbe, 0xd6, 0x0c, 0x12, 0xc8, 0x21, 
+        0xd8, 0x31, 0xe8, 0x41, 0x08, 0x11, 0x12, 0xc1, 0x20, 0x0d, 0xf0, 0x00, 0xff, 0xff, 0xff, 0xf7, 
+        0x51, 0xff, 0xff, 0x31, 0x12, 0xfd, 0xc0, 0x20, 0x00, 0x42, 0x23, 0x42, 0x50, 0x44, 0x10, 0xc0, 
+        0x20, 0x00, 0x42, 0x63, 0x42, 0xc0, 0x20, 0x00, 0x29, 0xb3, 0x0d, 0xf0, 0xff, 0xff, 0xf7, 0xff, 
+        0x41, 0x0b, 0xfd, 0xc0, 0x20, 0x00, 0x71, 0x18, 0xfd, 0x28, 0xb4, 0xc0, 0x20, 0x00, 0x62, 0x24, 
+        0x42, 0x70, 0x66, 0x20, 0xc0, 0x20, 0x00, 0x62, 0x64, 0x42, 0x51, 0xf8, 0xff, 0xc0, 0x20, 0x00, 
+        0x38, 0xb4, 0x50, 0x33, 0x10, 0xc0, 0x20, 0x00, 0x39, 0xb4, 0x0d, 0xf0, 0x12, 0xc1, 0xf0, 0x02, 
+        0x61, 0x00, 0x01, 0xe9, 0xfe, 0x02, 0x20, 0x00, 0x02, 0x20, 0x11, 0x32, 0xa0, 0x80, 0xc0, 0x00, 
+        0x00, 0xc5, 0x5e, 0x02, 0x22, 0xa0, 0x00, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 
+        0xb0, 0xf6, 0xfe, 0x3f, 0x12, 0xc1, 0xf0, 0x02, 0x61, 0x00, 0x01, 0xdf, 0xfe, 0x22, 0x20, 0x02, 
+        0x27, 0x72, 0x20, 0x41, 0xfb, 0xff, 0x32, 0xc0, 0x49, 0x22, 0x04, 0x10, 0x42, 0x04, 0x10, 0x80, 
+        0x22, 0x01, 0x20, 0x28, 0x31, 0x80, 0x44, 0x01, 0x40, 0x48, 0x31, 0x40, 0x22, 0x90, 0x30, 0x22, 
+        0x80, 0x85, 0xcf, 0x01, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x4a, 0xf6, 0xfe, 0x3f, 
+        0x93, 0xf6, 0xfe, 0x3f, 0x0e, 0xf7, 0xfe, 0x3f, 0x20, 0x42, 0xa0, 0x12, 0xc1, 0xc0, 0x09, 0x41, 
+        0x39, 0xd1, 0xc9, 0x51, 0xe9, 0x71, 0xd9, 0x61, 0xf9, 0x81, 0x42, 0xc4, 0xc9, 0x49, 0x31, 0x0c, 
+        0x0f, 0xd1, 0xf6, 0xff, 0x0c, 0x6e, 0xcd, 0x02, 0x32, 0xc2, 0xfa, 0x39, 0x91, 0x0b, 0x22, 0x29, 
+        0xc1, 0xf6, 0x7c, 0x2a, 0x32, 0xa0, 0x05, 0x22, 0x21, 0x0c, 0x42, 0x0d, 0x7d, 0x52, 0x0d, 0x77, 
+        0x52, 0x61, 0x0b, 0x80, 0x44, 0x01, 0x80, 0x55, 0x01, 0x50, 0x58, 0x31, 0x40, 0x48, 0x31, 0x50, 
+        0x44, 0xc0, 0x40, 0x22, 0x82, 0x05, 0x41, 0x0d, 0x08, 0xb1, 0x0a, 0x02, 0x86, 0x16, 0x00, 0xf6, 
+        0xac, 0x2a, 0x32, 0xa0, 0x05, 0x22, 0x21, 0x09, 0x42, 0x0d, 0x83, 0x52, 0x0d, 0x7d, 0x52, 0x61, 
+        0x0a, 0x80, 0x44, 0x01, 0x80, 0x55, 0x01, 0x50, 0x58, 0x31, 0x40, 0x48, 0x31, 0x50, 0x44, 0xc0, 
+        0x40, 0x22, 0x82, 0x45, 0x3e, 0x0d, 0x08, 0xa1, 0x0a, 0x02, 0x06, 0x0b, 0x00, 0x02, 0x0d, 0x89, 
+        0x22, 0xa0, 0x0d, 0x80, 0x00, 0x01, 0x00, 0x08, 0x31, 0xc7, 0x32, 0x1d, 0x32, 0xa0, 0x16, 0x22, 
+        0x21, 0x03, 0x42, 0x0d, 0x83, 0x49, 0x21, 0x80, 0x44, 0x01, 0x40, 0x48, 0x31, 0x40, 0x40, 0xc0, 
+        0x40, 0x22, 0x82, 0x45, 0x3b, 0x0d, 0x08, 0x21, 0x0a, 0x02, 0xd2, 0xcd, 0x01, 0x22, 0x21, 0x0d, 
+        0xe2, 0xce, 0xff, 0x2a, 0x2f, 0x02, 0x42, 0x00, 0x1b, 0xff, 0x56, 0x3e, 0xf6, 0xd1, 0xcc, 0xff, 
+        0x32, 0x0d, 0xa0, 0x42, 0x0d, 0xab, 0x26, 0x13, 0x28, 0x26, 0x14, 0x25, 0x0c, 0x05, 0xe2, 0xaf, 
+        0x80, 0x6d, 0x0e, 0xe2, 0x4d, 0x4d, 0x52, 0x4d, 0x4e, 0x21, 0xc6, 0xff, 0x0c, 0xd3, 0x48, 0xd1, 
+        0x45, 0x90, 0x02, 0xc8, 0x51, 0xd8, 0x61, 0xe8, 0x71, 0xf8, 0x81, 0x08, 0x41, 0x12, 0xc1, 0x40, 
+        0x0d, 0xf0, 0x52, 0x0d, 0x97, 0xf2, 0x0d, 0x9b, 0xdc, 0x55, 0xb6, 0x3c, 0x02, 0x86, 0x43, 0x00, 
+        0x01, 0xbb, 0xff, 0x02, 0x00, 0x79, 0x0c, 0x15, 0x80, 0xe0, 0x01, 0xe0, 0xe8, 0x31, 0xc6, 0xef, 
+        0xff, 0xc7, 0x3f, 0x57, 0x01, 0xb6, 0xff, 0xe2, 0x0d, 0x99, 0x00, 0xee, 0x80, 0xe2, 0x0e, 0x77, 
+        0x02, 0x0d, 0x9c, 0x80, 0xee, 0x01, 0xe0, 0xe8, 0x31, 0x66, 0x10, 0x3a, 0x32, 0xa0, 0x05, 0x22, 
+        0x0d, 0x34, 0xc2, 0x0d, 0x2e, 0x80, 0x22, 0x01, 0x80, 0xcc, 0x01, 0xc0, 0xc8, 0x31, 0x20, 0x28, 
+        0x31, 0xc0, 0x22, 0xc0, 0x20, 0x2f, 0x82, 0x05, 0x31, 0x0d, 0x2a, 0x3c, 0x80, 0x33, 0x01, 0x28, 
+        0xc1, 0x30, 0x38, 0x31, 0xe0, 0x33, 0xc0, 0x30, 0x22, 0x82, 0x3d, 0x0f, 0x85, 0x2f, 0x0d, 0x2a, 
+        0xee, 0x80, 0xee, 0x01, 0xe0, 0xe8, 0x31, 0x0c, 0x15, 0x06, 0xd9, 0xff, 0x22, 0x0d, 0x9a, 0x02, 
+        0xa0, 0x0f, 0x20, 0x00, 0xc0, 0x07, 0x2c, 0x48, 0x01, 0x9d, 0xff, 0xe2, 0x0d, 0x98, 0x00, 0xee, 
+        0x80, 0xe2, 0x0e, 0x89, 0x32, 0x0d, 0x9c, 0x80, 0xee, 0x01, 0xe0, 0xe8, 0x31, 0x66, 0x13, 0xd6, 
+        0x02, 0x0d, 0x3a, 0x80, 0x00, 0x01, 0x00, 0x08, 0x31, 0x02, 0x61, 0x01, 0xf6, 0xac, 0x29, 0x22, 
+        0x0d, 0x34, 0x0c, 0x83, 0x80, 0x22, 0x01, 0xf0, 0x33, 0xc0, 0x20, 0x28, 0x31, 0x29, 0x01, 0x20, 
+        0x20, 0xc0, 0x30, 0x22, 0x82, 0x0c, 0x53, 0x05, 0x2a, 0x0d, 0x08, 0x01, 0x2a, 0x00, 0x06, 0x0b, 
+        0x00, 0x0c, 0x05, 0xe2, 0xaf, 0x80, 0xc6, 0xc1, 0xff, 0x32, 0xa0, 0x16, 0x21, 0x79, 0xff, 0x42, 
+        0xa0, 0x03, 0x22, 0x02, 0x23, 0xf0, 0x44, 0xc0, 0x80, 0x22, 0x01, 0x20, 0x28, 0x31, 0x00, 0x22, 
+        0xc0, 0x40, 0x22, 0x82, 0x20, 0x22, 0xa0, 0x05, 0x27, 0x0d, 0x08, 0x11, 0x2a, 0x00, 0x0c, 0xe3, 
+        0x80, 0x20, 0x01, 0x20, 0x28, 0x31, 0xc0, 0x33, 0xc0, 0xe0, 0x22, 0xc0, 0x30, 0x22, 0x82, 0x3d, 
+        0x0f, 0x45, 0x25, 0x0d, 0x2a, 0xee, 0x80, 0xee, 0x01, 0xe0, 0xe8, 0x31, 0xc6, 0xd5, 0xff, 0xb6, 
+        0x9c, 0x08, 0x01, 0x76, 0xff, 0x02, 0x00, 0x85, 0x86, 0xba, 0xff, 0xe2, 0xaf, 0x80, 0x0c, 0x05, 
+        0x46, 0xab, 0xff, 0x00, 0x12, 0xc1, 0xe0, 0x02, 0x61, 0x04, 0x01, 0x43, 0xfe, 0x02, 0x20, 0x02, 
+        0x47, 0x70, 0x15, 0x21, 0x6c, 0xfe, 0x3d, 0x01, 0x22, 0x12, 0x01, 0xc5, 0x6c, 0x02, 0x21, 0x69, 
+        0xfe, 0x3d, 0x01, 0x22, 0x12, 0x01, 0x45, 0x62, 0x02, 0x0c, 0xe2, 0x8b, 0x31, 0x85, 0xda, 0xff, 
+        0x08, 0x41, 0x12, 0xc1, 0x20, 0x0d, 0xf0, 0x00, 0x21, 0x4d, 0xfc, 0xc0, 0x20, 0x00, 0x22, 0x22, 
+        0x59, 0x20, 0x24, 0xb5, 0x1b, 0x22, 0x20, 0x21, 0x41, 0x22, 0xd2, 0xf8, 0x00, 0x22, 0x11, 0x20, 
+        0x20, 0x31, 0x0d, 0xf0, 0x41, 0x46, 0xfc, 0x1b, 0x92, 0x2b, 0x82, 0x90, 0x89, 0xb3, 0x80, 0x81, 
+        0x21, 0x82, 0xd8, 0x02, 0x92, 0xae, 0x00, 0x80, 0x80, 0x84, 0xc0, 0x20, 0x00, 0x72, 0x24, 0x59, 
+        0x90, 0x77, 0x10, 0x80, 0x77, 0x20, 0xc0, 0x20, 0x00, 0x72, 0x64, 0x59, 0x61, 0xfe, 0xfe, 0x0c, 
+        0x25, 0xc0, 0x20, 0x00, 0x32, 0x24, 0x58, 0x60, 0x33, 0x10, 0x50, 0x33, 0x20, 0xc0, 0x20, 0x00, 
+        0x32, 0x64, 0x58, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0xff, 0xf1, 0xff, 0xff, 0x80, 0xf8, 0xfe, 0x3f, 
+        0x71, 0xfe, 0xff, 0x12, 0xc1, 0xf0, 0xc9, 0x21, 0x09, 0x11, 0x62, 0xa2, 0x00, 0x41, 0x2f, 0xfc, 
+        0x01, 0xfb, 0xff, 0xc0, 0x20, 0x00, 0x52, 0x24, 0x59, 0x70, 0x55, 0x10, 0x60, 0x55, 0x20, 0xc0, 
+        0x20, 0x00, 0x52, 0x64, 0x59, 0x52, 0x10, 0x00, 0xc0, 0x20, 0x00, 0x42, 0x24, 0x58, 0x29, 0x01, 
+        0x17, 0x64, 0x02, 0xb6, 0x95, 0x5f, 0xc1, 0x10, 0xfe, 0x39, 0x31, 0xb6, 0x95, 0x05, 0x02, 0xae, 
+        0xd4, 0x86, 0x05, 0x00, 0x08, 0x0c, 0x08, 0xa0, 0xc0, 0x00, 0x00, 0x38, 0x31, 0x02, 0xae, 0xd4, 
+        0x27, 0x20, 0x01, 0x0d, 0x02, 0x00, 0x00, 0x11, 0x00, 0x00, 0x31, 0x22, 0x9c, 0xc7, 0x27, 0x20, 
+        0x42, 0x20, 0x42, 0x90, 0x4a, 0x00, 0x42, 0xc0, 0xfe, 0x1b, 0x00, 0x40, 0x04, 0xb3, 0x00, 0x02, 
+        0x21, 0x00, 0x20, 0x11, 0x20, 0x20, 0x31, 0x22, 0x5c, 0xc7, 0x8c, 0x63, 0x08, 0x0c, 0x02, 0x20, 
+        0x16, 0xc0, 0x00, 0x00, 0x08, 0x0c, 0x02, 0x20, 0x19, 0x28, 0x01, 0xc0, 0x00, 0x00, 0x01, 0xdb, 
+        0xff, 0x0c, 0x02, 0x46, 0x00, 0x00, 0x1b, 0x25, 0xc8, 0x21, 0x22, 0x50, 0x00, 0x08, 0x11, 0x12, 
+        0xc1, 0x10, 0x0d, 0xf0, 0x0a, 0x02, 0x1b, 0x40, 0x2b, 0x00, 0x40, 0x04, 0xb3, 0x00, 0x01, 0x21, 
+        0x46, 0xef, 0xff, 0x00, 0x60, 0xf7, 0xfe, 0x3f, 0xff, 0xff, 0xff, 0xbf, 0x00, 0x00, 0x20, 0x00, 
+        0x12, 0xc1, 0xc0, 0xc9, 0x61, 0xd9, 0x71, 0xe9, 0x81, 0xf9, 0x91, 0x09, 0x51, 0x92, 0x21, 0x10, 
+        0x39, 0xe1, 0x38, 0x09, 0x01, 0xe9, 0xfd, 0x30, 0x35, 0x05, 0x56, 0x83, 0x16, 0x81, 0xf5, 0xff, 
+        0xe2, 0xae, 0xac, 0x0c, 0x0b, 0xb9, 0xa1, 0xc8, 0xa1, 0x1b, 0xdc, 0x80, 0xfc, 0x90, 0xe2, 0x5f, 
+        0x00, 0xd0, 0xc0, 0x74, 0xc9, 0xa1, 0x66, 0x4c, 0xed, 0xb2, 0xaf, 0xd8, 0xa2, 0xae, 0x7c, 0x69, 
+        0x01, 0x60, 0xab, 0x93, 0xa2, 0x50, 0xc7, 0x7c, 0xed, 0xa1, 0xf0, 0xfb, 0xc0, 0x20, 0x00, 0x78, 
+        0xba, 0x79, 0x21, 0xc0, 0x20, 0x00, 0x32, 0x2a, 0xc8, 0x39, 0x31, 0xc0, 0x20, 0x00, 0xf2, 0x2a, 
+        0xd0, 0xf9, 0x41, 0xc0, 0x20, 0x00, 0xc8, 0xba, 0xd0, 0xcc, 0x10, 0xc0, 0x20, 0x00, 0xc9, 0xba, 
+        0xb1, 0xe2, 0xff, 0xc0, 0x20, 0x00, 0x72, 0x2a, 0xc8, 0xb0, 0x77, 0x10, 0xc0, 0x20, 0x00, 0x72, 
+        0x6a, 0xc8, 0xc1, 0xc5, 0xf8, 0x99, 0x11, 0x29, 0xd1, 0x49, 0xc1, 0x59, 0xb1, 0x0c, 0x03, 0x39, 
+        0xa1, 0xc0, 0x20, 0x00, 0xf2, 0x2c, 0x80, 0x42, 0x21, 0x0a, 0x22, 0xa0, 0x0e, 0x40, 0x34, 0xa0, 
+        0x42, 0xc4, 0xfd, 0x32, 0xc3, 0x01, 0x40, 0x23, 0x93, 0x80, 0x22, 0x01, 0x20, 0x28, 0x31, 0x05, 
+        0x16, 0x02, 0x48, 0xe1, 0x01, 0xd0, 0xff, 0xbc, 0xa4, 0xd8, 0xa1, 0x0c, 0x0c, 0x00, 0xdd, 0x90, 
+        0x4d, 0x0f, 0x28, 0xd1, 0x38, 0xc1, 0x58, 0xb1, 0x05, 0xa8, 0xff, 0xec, 0x32, 0x01, 0xba, 0xfd, 
+        0x08, 0x00, 0x08, 0xa0, 0xc0, 0x00, 0x00, 0x02, 0x9d, 0x00, 0x07, 0xa2, 0x04, 0x0d, 0x02, 0x22, 
+        0x5d, 0x00, 0x28, 0xe1, 0x1b, 0xcc, 0xc0, 0xc0, 0x74, 0x07, 0xae, 0x02, 0xe2, 0x5d, 0x00, 0xc7, 
+        0x92, 0xcd, 0xc1, 0xa9, 0xf8, 0xc0, 0x20, 0x00, 0x21, 0xc5, 0xfb, 0x08, 0xd2, 0x7c, 0xe3, 0x30, 
+        0x00, 0x10, 0xc0, 0x20, 0x00, 0xd8, 0xa1, 0x09, 0xd2, 0x1b, 0xfd, 0xf0, 0xd0, 0x74, 0xd9, 0xa1, 
+        0x26, 0x4d, 0x02, 0x86, 0xde, 0xff, 0xc0, 0x20, 0x00, 0x61, 0xbc, 0xfb, 0x88, 0x21, 0x89, 0xb6, 
+        0xc0, 0x20, 0x00, 0x78, 0x31, 0x72, 0x66, 0xc8, 0xc0, 0x20, 0x00, 0x58, 0x41, 0x48, 0x01, 0x52, 
+        0x66, 0xd0, 0xbc, 0x84, 0x31, 0xb0, 0xff, 0xc1, 0xa0, 0xfd, 0x0c, 0x09, 0x22, 0x9c, 0xc7, 0x99, 
+        0xa1, 0x00, 0xa2, 0x11, 0xa0, 0xa0, 0x31, 0x08, 0xa1, 0x48, 0xa1, 0x30, 0x00, 0x90, 0x1b, 0x54, 
+        0x50, 0x40, 0x74, 0x02, 0x90, 0x00, 0x49, 0xa1, 0xa7, 0xa0, 0x04, 0x2d, 0x00, 0x02, 0x5c, 0xc7, 
+        0x00, 0xa2, 0x11, 0x66, 0x44, 0xdd, 0x08, 0x0c, 0x02, 0x20, 0x16, 0xc0, 0x00, 0x00, 0x21, 0x92, 
+        0xfd, 0x22, 0x92, 0xc7, 0xe7, 0xa2, 0x19, 0x48, 0x11, 0x51, 0xa0, 0xff, 0x38, 0x04, 0x50, 0x33, 
+        0x20, 0x39, 0x04, 0x86, 0x02, 0x00, 0x68, 0x00, 0x62, 0x26, 0x16, 0x22, 0x90, 0xc7, 0xc0, 0x06, 
+        0x00, 0xc8, 0x61, 0xd8, 0x71, 0xe8, 0x81, 0xf8, 0x91, 0x08, 0x51, 0x12, 0xc1, 0x40, 0x0d, 0xf0, 
+        0x80, 0x87, 0xfe, 0x3f, 0x7a, 0xf6, 0xfe, 0x3f, 0xff, 0x03, 0xfc, 0xff, 0x42, 0xa0, 0x00, 0x12, 
+        0xc1, 0xe0, 0xe2, 0x61, 0x05, 0xd2, 0x61, 0x04, 0x09, 0x21, 0xc9, 0x31, 0x01, 0xfa, 0xff, 0xcd, 
+        0x02, 0xdd, 0x03, 0x0c, 0x22, 0x31, 0xf6, 0xff, 0xe2, 0x00, 0x7d, 0x3a, 0x44, 0x80, 0xee, 0x01, 
+        0x3a, 0x22, 0x42, 0x14, 0x00, 0x42, 0x51, 0x00, 0x22, 0x02, 0x00, 0xe0, 0xe8, 0x31, 0x22, 0x41, 
+        0x02, 0x0c, 0xd2, 0xe6, 0x7c, 0x20, 0x0c, 0x53, 0x4d, 0x00, 0x42, 0x04, 0x7c, 0x0b, 0x2c, 0x80, 
+        0x44, 0x01, 0x40, 0x48, 0x31, 0x49, 0x11, 0x40, 0x4e, 0xc0, 0x40, 0x22, 0x82, 0x85, 0xed, 0x0c, 
+        0xe8, 0x11, 0x2a, 0xee, 0x06, 0x08, 0x00, 0x32, 0x00, 0x7e, 0x80, 0x33, 0x01, 0x30, 0x38, 0x31, 
+        0xe0, 0x33, 0xc0, 0xc7, 0xa2, 0x02, 0x46, 0x42, 0x00, 0x22, 0xcc, 0xfa, 0x20, 0x23, 0x82, 0x32, 
+        0xa0, 0x05, 0x45, 0xeb, 0x0c, 0x20, 0xee, 0x80, 0x66, 0x1d, 0x0b, 0xd2, 0xaf, 0xfa, 0xd2, 0x41, 
+        0x00, 0xd2, 0x41, 0x02, 0xc6, 0x08, 0x00, 0x32, 0xcd, 0xfe, 0x56, 0x93, 0x0b, 0x01, 0xd9, 0xff, 
+        0x32, 0x00, 0x7f, 0x32, 0x41, 0x00, 0x22, 0x00, 0x80, 0x22, 0x41, 0x01, 0x02, 0x00, 0x81, 0x02, 
+        0x41, 0x02, 0xd2, 0x01, 0x01, 0x80, 0xdd, 0x01, 0xd0, 0xd8, 0x31, 0xe6, 0x7c, 0x2c, 0x32, 0x01, 
+        0x00, 0x22, 0xcc, 0xff, 0x80, 0x33, 0x01, 0x30, 0x38, 0x31, 0x80, 0x33, 0x01, 0x30, 0x38, 0x31, 
+        0x30, 0x3d, 0xc0, 0x30, 0x22, 0x82, 0x32, 0xa0, 0x05, 0xc5, 0xe5, 0x0c, 0x02, 0x01, 0x00, 0x80, 
+        0x00, 0x01, 0x00, 0x08, 0x31, 0x20, 0x00, 0x80, 0x06, 0x08, 0x00, 0x02, 0x01, 0x02, 0x22, 0xa0, 
+        0x0d, 0x80, 0x00, 0x01, 0x00, 0x08, 0x31, 0xd0, 0x00, 0xc0, 0xc7, 0x22, 0x74, 0x32, 0xa0, 0x05, 
+        0x22, 0xcc, 0xfa, 0x20, 0x20, 0x82, 0x05, 0xe3, 0x0c, 0xd0, 0x02, 0x80, 0xa1, 0xbf, 0xff, 0x0a, 
+        0x9e, 0x41, 0x56, 0xfb, 0x90, 0x90, 0x74, 0x60, 0x99, 0x11, 0xc0, 0x20, 0x00, 0x82, 0x24, 0xda, 
+        0xa0, 0x88, 0x10, 0x90, 0x88, 0x20, 0xc0, 0x20, 0x00, 0x82, 0x64, 0xda, 0x0c, 0x17, 0xc0, 0x20, 
+        0x00, 0x68, 0xd4, 0x70, 0x66, 0x20, 0xc0, 0x20, 0x00, 0x69, 0xd4, 0x7c, 0xe5, 0xc0, 0x20, 0x00, 
+        0x38, 0xd4, 0x50, 0x33, 0x10, 0xc0, 0x20, 0x00, 0x39, 0xd4, 0xc8, 0x31, 0xd8, 0x41, 0xe8, 0x51, 
+        0x08, 0x21, 0x12, 0xc1, 0x20, 0x0d, 0xf0, 0xa2, 0xcd, 0xfd, 0x56, 0x4a, 0xf5, 0x01, 0xa9, 0xff, 
+        0x32, 0x00, 0x82, 0x32, 0x41, 0x00, 0x22, 0x00, 0x83, 0x22, 0x41, 0x01, 0x02, 0x00, 0x84, 0x06, 
+        0xcf, 0xff, 0x0c, 0x53, 0x22, 0xcc, 0xfe, 0x20, 0x20, 0x82, 0xc5, 0xdb, 0x0c, 0x06, 0xe2, 0xff, 
+        0x00, 0x00, 0x00, 0x22, 0xcc, 0xfe, 0x20, 0x23, 0x82, 0x0c, 0x53, 0xc5, 0xda, 0x0c, 0xc6, 0xbc, 
+        0xff, 0x00, 0x00, 0x00, 0x12, 0xc1, 0xf0, 0x02, 0x61, 0x03, 0x01, 0x1f, 0xfd, 0x02, 0x20, 0x02, 
+        0x29, 0x21, 0x27, 0x70, 0x0f, 0x31, 0x1c, 0xfd, 0x20, 0x22, 0x90, 0x32, 0xc3, 0x49, 0x3a, 0x22, 
+        0x85, 0x60, 0x01, 0x28, 0x21, 0x41, 0x10, 0xf8, 0xc0, 0x20, 0x00, 0x42, 0x24, 0x9c, 0x17, 0x64, 
+        0x22, 0x20, 0x20, 0x74, 0x3d, 0x01, 0x05, 0x91, 0xff, 0x0c, 0x02, 0xc5, 0x59, 0x00, 0x21, 0x12, 
+        0xfd, 0x08, 0x02, 0x02, 0x20, 0x16, 0x22, 0x92, 0xc7, 0xc0, 0x00, 0x00, 0x1c, 0xe2, 0x01, 0xac, 
+        0xf7, 0xc0, 0x00, 0x00, 0x08, 0x31, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x85, 0xf6, 0xfe, 0x3f, 
+        0x84, 0x87, 0xfe, 0x3f, 0xc0, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x24, 0x40, 0x99, 0x99, 0x49, 0x40, 
+        0x9a, 0x99, 0x99, 0x99, 0x99, 0x99, 0xe9, 0x40, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xc0, 
+        0x12, 0xc1, 0xb0, 0xd9, 0xb1, 0xe9, 0xc1, 0x29, 0x61, 0xc9, 0xa1, 0xf9, 0xd1, 0xf1, 0xf3, 0xff, 
+        0x09, 0x91, 0x02, 0x0f, 0x60, 0xcd, 0x03, 0xcc, 0x30, 0x2c, 0x8d, 0xc6, 0x04, 0x00, 0x66, 0x10, 
+        0x04, 0x1c, 0xad, 0xc6, 0x02, 0x00, 0x32, 0xc0, 0xfe, 0x22, 0xa0, 0x18, 0xd2, 0xa0, 0x28, 0x30, 
+        0xd2, 0x83, 0x2d, 0x0c, 0x3d, 0x0d, 0x85, 0xd5, 0x0c, 0xe6, 0x92, 0x17, 0x2d, 0x0c, 0x3d, 0x0d, 
+        0x45, 0xce, 0x0c, 0x20, 0x0d, 0x82, 0xc0, 0x00, 0xc0, 0x00, 0x00, 0xa0, 0xf0, 0x20, 0x11, 0x29, 
+        0x51, 0xc6, 0x08, 0x00, 0x20, 0x4d, 0xc0, 0xe6, 0x94, 0x17, 0xc0, 0x2c, 0x20, 0xd0, 0x3d, 0x20, 
+        0x45, 0xcc, 0x0c, 0x02, 0xc2, 0x01, 0x00, 0x0d, 0x82, 0xc0, 0x00, 0xc0, 0x00, 0x00, 0xa0, 0x46, 
+        0xf6, 0xff, 0x22, 0xa0, 0x00, 0x22, 0x61, 0x05, 0x32, 0x0f, 0x7c, 0x22, 0x0f, 0x9f, 0x16, 0x83, 
+        0x06, 0x32, 0x61, 0x04, 0xe2, 0x0f, 0x7b, 0x80, 0x22, 0x11, 0x2a, 0xee, 0x16, 0xae, 0x05, 0x2d, 
+        0x03, 0x7c, 0x6d, 0xc0, 0xdd, 0x82, 0xc0, 0x22, 0xc1, 0x30, 0x33, 0xa0, 0xf0, 0x33, 0x11, 0x29, 
+        0xe1, 0x32, 0x61, 0x10, 0x3d, 0x0e, 0x85, 0xce, 0x0c, 0x02, 0x21, 0x10, 0x48, 0xe1, 0x07, 0x22, 
+        0x02, 0x86, 0x47, 0x00, 0x2d, 0x04, 0x3d, 0x0e, 0xc5, 0xc6, 0x0c, 0x45, 0xd7, 0x0c, 0x29, 0x21, 
+        0x2d, 0x0e, 0xc5, 0xd6, 0x0c, 0xed, 0x02, 0x28, 0x41, 0xc5, 0xd5, 0x0c, 0x3d, 0x02, 0x2d, 0x0e, 
+        0xc5, 0x07, 0x0c, 0x3d, 0x02, 0x28, 0x21, 0x45, 0xf1, 0x0b, 0xe1, 0xc1, 0xff, 0x38, 0x0e, 0xc5, 
+        0xf0, 0x0b, 0x85, 0x12, 0x0c, 0x2a, 0xed, 0x06, 0x02, 0x00, 0xe2, 0xa0, 0x00, 0xd2, 0xaf, 0xf6, 
+        0xc0, 0xdd, 0x82, 0x02, 0x0f, 0x9b, 0xe2, 0x61, 0x11, 0x16, 0x30, 0x06, 0x02, 0x61, 0x03, 0x22, 
+        0x0f, 0xa0, 0xe2, 0x0f, 0x9a, 0x80, 0x22, 0x11, 0x2a, 0xee, 0x16, 0x2e, 0x05, 0x3d, 0x0e, 0x00, 
+        0xf0, 0xa0, 0xc0, 0x20, 0xc1, 0x29, 0xf1, 0xf0, 0xff, 0x11, 0x45, 0xc7, 0x0c, 0xc8, 0x31, 0x08, 
+        0xf1, 0xf7, 0x22, 0x02, 0x06, 0x3b, 0x00, 0x3d, 0x0e, 0x2d, 0x00, 0xc5, 0xbf, 0x0c, 0x05, 0xd0, 
+        0x0c, 0xfd, 0x02, 0x2d, 0x0e, 0x85, 0xcf, 0x0c, 0xed, 0x02, 0x2d, 0x0c, 0x85, 0xce, 0x0c, 0x3d, 
+        0x02, 0x2d, 0x0e, 0xc5, 0x00, 0x0c, 0x3d, 0x02, 0x2d, 0x0f, 0x05, 0xea, 0x0b, 0x31, 0xa4, 0xff, 
+        0x38, 0x03, 0x85, 0xe9, 0x0b, 0x45, 0x0b, 0x0c, 0xe2, 0x21, 0x11, 0x2a, 0xfd, 0x06, 0x01, 0x00, 
+        0xe2, 0x21, 0x11, 0x0c, 0x0f, 0xc1, 0xa8, 0xfc, 0x21, 0x9f, 0xff, 0x08, 0x0c, 0xc2, 0x1c, 0xfb, 
+        0x08, 0x00, 0xca, 0xcd, 0x2a, 0xcc, 0x2d, 0x0c, 0xc0, 0x00, 0x00, 0x01, 0x9a, 0xff, 0x41, 0xa2, 
+        0xfc, 0x0c, 0x03, 0x52, 0xa0, 0x64, 0x57, 0x22, 0x01, 0xcd, 0x03, 0x68, 0x04, 0x22, 0x14, 0xfc, 
+        0x68, 0x06, 0x2a, 0xdd, 0x0a, 0xdd, 0x2d, 0x0d, 0xc0, 0x06, 0x00, 0x01, 0x9b, 0xfc, 0x38, 0x61, 
+        0x72, 0x10, 0xe9, 0x0b, 0x33, 0x00, 0x03, 0x40, 0x70, 0x70, 0xb1, 0x07, 0x67, 0x02, 0x56, 0x4e, 
+        0x11, 0x42, 0x10, 0xf9, 0x00, 0x03, 0x40, 0x40, 0x40, 0xb1, 0x07, 0x64, 0x02, 0x56, 0x7f, 0x11, 
+        0x56, 0xfc, 0x08, 0x52, 0xa0, 0x64, 0x57, 0x22, 0x01, 0x0c, 0x0d, 0xc8, 0x51, 0xd0, 0xcd, 0x93, 
+        0xc6, 0x1f, 0x00, 0x20, 0x6e, 0xc0, 0x07, 0x26, 0x02, 0x86, 0x3b, 0x00, 0x2d, 0x04, 0x3d, 0x0e, 
+        0x45, 0xb4, 0x0c, 0x1b, 0x22, 0x85, 0xc4, 0x0c, 0x29, 0x01, 0x2d, 0x0e, 0x05, 0xc4, 0x0c, 0x29, 
+        0x11, 0x28, 0x41, 0x45, 0xc3, 0x0c, 0x3d, 0x02, 0xe8, 0x01, 0x28, 0x11, 0x05, 0xf5, 0x0b, 0x3d, 
+        0x02, 0x2d, 0x0e, 0x85, 0xde, 0x0b, 0x31, 0x76, 0xff, 0x38, 0x03, 0x05, 0xde, 0x0b, 0xc5, 0xff, 
+        0x0b, 0x06, 0xb4, 0xff, 0x20, 0x4e, 0xc0, 0xf7, 0x24, 0x02, 0x86, 0x2c, 0x00, 0x3d, 0x0e, 0x2d, 
+        0x00, 0x45, 0xb0, 0x0c, 0x1b, 0x22, 0x85, 0xc0, 0x0c, 0xfd, 0x02, 0x2d, 0x0e, 0x05, 0xc0, 0x0c, 
+        0xed, 0x02, 0x2d, 0x0c, 0x05, 0xbf, 0x0c, 0x3d, 0x02, 0x2d, 0x0e, 0x45, 0xf1, 0x0b, 0x3d, 0x02, 
+        0x2d, 0x0f, 0x85, 0xda, 0x0b, 0x31, 0x66, 0xff, 0x38, 0x03, 0x05, 0xda, 0x0b, 0xc5, 0xfb, 0x0b, 
+        0x06, 0xc1, 0xff, 0xe1, 0x65, 0xff, 0xd2, 0xa0, 0x00, 0x2d, 0x0c, 0x85, 0xc1, 0x0c, 0x29, 0x81, 
+        0x39, 0x71, 0x51, 0x62, 0xff, 0x41, 0x62, 0xff, 0x45, 0x11, 0x0c, 0x5d, 0x0e, 0x4d, 0x0d, 0x45, 
+        0x3b, 0x0c, 0x45, 0x4d, 0x0c, 0x38, 0x71, 0x51, 0x5f, 0xff, 0xfd, 0x02, 0x41, 0x5d, 0xff, 0x28, 
+        0x81, 0xc5, 0x0f, 0x0c, 0x4d, 0x0d, 0x5d, 0x0e, 0x85, 0x39, 0x0c, 0xd1, 0x73, 0xfa, 0x85, 0x4b, 
+        0x0c, 0x71, 0x5a, 0xff, 0x51, 0x59, 0xff, 0xf0, 0x60, 0x94, 0x50, 0x52, 0x10, 0xc0, 0x66, 0x01, 
+        0x2d, 0x0c, 0xc0, 0x20, 0x00, 0x42, 0x2d, 0xa8, 0x70, 0x44, 0x10, 0x60, 0x44, 0x20, 0x50, 0x44, 
+        0x20, 0xc0, 0x20, 0x00, 0xc8, 0xa1, 0xe8, 0xc1, 0x42, 0x6d, 0xa8, 0xf8, 0xd1, 0xd8, 0xb1, 0x08, 
+        0x91, 0x12, 0xc1, 0x50, 0x0d, 0xf0, 0xcd, 0x0e, 0xc6, 0xe1, 0xff, 0x0c, 0x0e, 0x86, 0x88, 0xff, 
+        0xe2, 0x21, 0x11, 0x0c, 0x0f, 0x06, 0xa3, 0xff, 0xcd, 0x0f, 0x46, 0xdd, 0xff, 0x00, 0x00, 0x00, 
+        0x12, 0xc1, 0xf0, 0xc9, 0x21, 0x09, 0x11, 0xcc, 0x52, 0x0c, 0x00, 0x0c, 0x0c, 0x86, 0x10, 0x00, 
+        0xe6, 0x12, 0x02, 0xc6, 0x70, 0x00, 0x32, 0xa0, 0x64, 0xb0, 0xc2, 0x11, 0xc0, 0x2c, 0x20, 0x85, 
+        0xa2, 0x0c, 0x0d, 0x02, 0x0c, 0xa3, 0x2d, 0x0c, 0x80, 0xc0, 0x01, 0xc0, 0xc8, 0x31, 0x85, 0xa1, 
+        0x0c, 0x0c, 0xa3, 0xc5, 0xa7, 0x0c, 0xa6, 0x22, 0x02, 0x06, 0x73, 0x00, 0x0c, 0x10, 0x46, 0x04, 
+        0x00, 0xc2, 0x01, 0x01, 0x02, 0x01, 0x00, 0x80, 0xcc, 0x01, 0x80, 0x00, 0x01, 0x00, 0x08, 0x31, 
+        0xc0, 0xc8, 0x31, 0xe6, 0x1c, 0x05, 0x00, 0x41, 0x21, 0xc6, 0x01, 0x00, 0x0b, 0x2c, 0x00, 0x12, 
+        0x40, 0x00, 0x40, 0xa1, 0x21, 0x45, 0xfa, 0xc0, 0x20, 0x00, 0x42, 0x62, 0xb5, 0x62, 0xcc, 0x1e, 
+        0x0c, 0x05, 0x00, 0x16, 0x40, 0x00, 0x30, 0xa1, 0xc0, 0x35, 0xb3, 0xc0, 0x20, 0x00, 0x32, 0x62, 
+        0xa7, 0xe6, 0x1c, 0x05, 0x00, 0x41, 0x21, 0xc6, 0x01, 0x00, 0x0b, 0x7c, 0x00, 0x17, 0x40, 0x00, 
+        0x40, 0xa1, 0xc0, 0x20, 0x00, 0x0c, 0x06, 0x42, 0x62, 0xec, 0xa2, 0xcc, 0x1e, 0x0c, 0x09, 0x00, 
+        0x1a, 0x40, 0x00, 0x80, 0xa1, 0xc0, 0x89, 0xb3, 0xc0, 0x20, 0x00, 0x82, 0x62, 0xa1, 0x26, 0x10, 
+        0x14, 0x66, 0x20, 0x04, 0x0c, 0x85, 0x86, 0x03, 0x00, 0x32, 0xc0, 0xfd, 0x0c, 0xab, 0x5d, 0x06, 
+        0x30, 0x5b, 0x83, 0x46, 0x00, 0x00, 0x0c, 0x25, 0xa6, 0xbc, 0x0d, 0x6c, 0x04, 0x40, 0x4c, 0x90, 
+        0x00, 0x14, 0x40, 0x00, 0x45, 0xa1, 0x46, 0x00, 0x00, 0x0c, 0x04, 0xc0, 0x20, 0x00, 0x42, 0x62, 
+        0xa3, 0x7c, 0x0b, 0xa6, 0x1c, 0x10, 0xe6, 0xbc, 0x0d, 0x7c, 0xe7, 0x70, 0x7c, 0x90, 0x00, 0x17, 
+        0x40, 0x00, 0x75, 0xa1, 0xc6, 0x01, 0x00, 0x0c, 0x08, 0x50, 0x72, 0x21, 0xc0, 0x78, 0x93, 0xc0, 
+        0x20, 0x00, 0x6c, 0x1a, 0x72, 0x62, 0xa2, 0x81, 0x1d, 0xfa, 0xc7, 0xab, 0x10, 0xd6, 0xdc, 0x00, 
+        0x1c, 0xe9, 0x90, 0x9c, 0x90, 0x00, 0x19, 0x40, 0x00, 0x75, 0xa1, 0x46, 0x00, 0x00, 0x0c, 0x07, 
+        0x7c, 0x19, 0xc0, 0x20, 0x00, 0x72, 0x68, 0xc3, 0xc7, 0xaa, 0x10, 0x97, 0xac, 0x0d, 0x3c, 0xc3, 
+        0x30, 0x3c, 0x90, 0x00, 0x13, 0x40, 0x00, 0x45, 0xa1, 0x46, 0x00, 0x00, 0x0c, 0x04, 0xc0, 0x20, 
+        0x00, 0x42, 0x68, 0xc2, 0x26, 0x10, 0x14, 0x66, 0x20, 0x04, 0x0c, 0x40, 0x86, 0x03, 0x00, 0x52, 
+        0xc0, 0xfd, 0x0c, 0x54, 0x50, 0x64, 0x83, 0x0d, 0x06, 0x46, 0x00, 0x00, 0x0c, 0x10, 0xa6, 0xbc, 
+        0x0d, 0x6c, 0x06, 0x60, 0x6c, 0x90, 0x00, 0x16, 0x40, 0x00, 0x40, 0xa1, 0x46, 0x00, 0x00, 0x0c, 
+        0x04, 0xc0, 0x20, 0x00, 0x42, 0x62, 0xef, 0xa6, 0x1c, 0x10, 0xe6, 0xbc, 0x0d, 0x7c, 0xe7, 0x70, 
+        0x7c, 0x90, 0x00, 0x17, 0x40, 0x00, 0x50, 0xa1, 0xc6, 0x01, 0x00, 0x0c, 0x08, 0x00, 0x52, 0x21, 
+        0xc0, 0x58, 0x93, 0xc0, 0x20, 0x00, 0x52, 0x62, 0xee, 0xc7, 0xab, 0x10, 0xd6, 0xdc, 0x00, 0x1c, 
+        0xeb, 0xb0, 0xbc, 0x90, 0x00, 0x1b, 0x40, 0x00, 0x50, 0xa1, 0x46, 0x00, 0x00, 0x0c, 0x05, 0xc0, 
+        0x20, 0x00, 0x52, 0x62, 0xeb, 0xc7, 0xaa, 0x10, 0x97, 0xac, 0x0d, 0x3c, 0xc3, 0x30, 0x3c, 0x90, 
+        0x00, 0x13, 0x40, 0x00, 0x00, 0xa1, 0x46, 0x00, 0x00, 0x0c, 0x00, 0xc0, 0x20, 0x00, 0xc8, 0x21, 
+        0x02, 0x62, 0xea, 0x08, 0x11, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0xd6, 0x32, 0xe6, 0x32, 0xa0, 0x64, 
+        0xb0, 0xc2, 0x11, 0xc0, 0x2c, 0x20, 0x05, 0x86, 0x0c, 0x0d, 0x02, 0x0c, 0xa3, 0x2d, 0x0c, 0x0b, 
+        0xc0, 0x80, 0xcc, 0x01, 0xc0, 0xc8, 0x31, 0x05, 0x85, 0x0c, 0x0c, 0xa3, 0x05, 0x8b, 0x0c, 0x7c, 
+        0x83, 0x37, 0xa2, 0x11, 0x0c, 0x10, 0x46, 0x92, 0xff, 0x0c, 0x30, 0xe6, 0x82, 0x02, 0x46, 0x90, 
+        0xff, 0x0c, 0x20, 0x06, 0x8f, 0xff, 0x0c, 0x30, 0x7c, 0xe4, 0x47, 0xa2, 0x02, 0x86, 0x8c, 0xff, 
+        0x0c, 0x20, 0x46, 0x8b, 0xff, 0x00, 0x00, 0x00, 0x40, 0xf6, 0xfe, 0x3f, 0x12, 0xc1, 0xf0, 0x09, 
+        0x01, 0x01, 0x3c, 0xf5, 0xdc, 0x22, 0x1c, 0x04, 0xc0, 0x20, 0x00, 0x32, 0x20, 0xe4, 0x40, 0x33, 
+        0x20, 0xc0, 0x20, 0x00, 0x32, 0x60, 0xe4, 0x06, 0x04, 0x00, 0x6c, 0xf6, 0xc0, 0x20, 0x00, 0x52, 
+        0x20, 0xe4, 0x60, 0x55, 0x10, 0xc0, 0x20, 0x00, 0x52, 0x60, 0xe4, 0x41, 0xf3, 0xff, 0x80, 0x32, 
+        0x01, 0x22, 0x04, 0x80, 0x30, 0x38, 0x31, 0x80, 0x22, 0x01, 0x20, 0x28, 0x31, 0xc5, 0x8a, 0xff, 
+        0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x12, 0xc1, 0xf0, 0xc2, 0x61, 0x01, 0x02, 0x61, 
+        0x00, 0x20, 0xc2, 0x20, 0x05, 0xed, 0x00, 0x2d, 0x0c, 0x05, 0xfa, 0xff, 0xc8, 0x11, 0x08, 0x01, 
+        0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 
+        0xff, 0xff, 0x7f, 0x80, 0x81, 0xbc, 0x14, 0x09, 0x98, 0x41, 0xc6, 0x5a, 0x00, 0x00, 0x00, 0x80, 
+        0x00, 0x00, 0x90, 0x01, 0xff, 0xff, 0xff, 0xfb, 0x00, 0x00, 0x00, 0x18, 0xff, 0xff, 0xff, 0x80, 
+        0xff, 0x0f, 0xf0, 0xff, 0x00, 0x20, 0x02, 0x00, 0xa6, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 
+        0x54, 0x58, 0x38, 0x00, 0x00, 0xff, 0x0f, 0xf0, 0xe6, 0x00, 0x20, 0x0b, 0x3f, 0xf0, 0xff, 0xdf, 
+        0x40, 0x0c, 0x00, 0x20, 0xff, 0xff, 0x80, 0xff, 0x00, 0x00, 0x13, 0x00, 0x3f, 0xf0, 0xff, 0xff, 
+        0x80, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x24, 0x01, 0xfe, 0x03, 0xff, 0xff, 0xff, 0x0f, 
+        0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, 0x04, 0xff, 0xff, 0x0b, 0xff, 0x00, 0x00, 0x24, 0x00, 
+        0xff, 0xff, 0xbf, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x83, 0x00, 0x80, 0x00, 0xff, 0xf7, 0xff, 0xff, 
+        0x50, 0x80, 0xfe, 0x3f, 0xe7, 0xf6, 0xfe, 0x3f, 0x70, 0xf7, 0xfe, 0x3f, 0x38, 0xf5, 0xfe, 0x3f, 
+        0xbc, 0xf5, 0xfe, 0x3f, 0xac, 0xf6, 0xfe, 0x3f, 0x61, 0xd8, 0xff, 0xb1, 0xd8, 0xff, 0x41, 0xa5, 
+        0xfb, 0x51, 0x71, 0xf6, 0x12, 0xc1, 0xe0, 0xc9, 0x51, 0x09, 0x41, 0xd9, 0x61, 0x82, 0xaf, 0x80, 
+        0x21, 0x8b, 0xf9, 0xd1, 0x89, 0xf9, 0xc0, 0x20, 0x00, 0x32, 0x22, 0x58, 0x60, 0x33, 0x20, 0xc0, 
+        0x20, 0x00, 0x32, 0x62, 0x58, 0xc0, 0x20, 0x00, 0x02, 0x22, 0x43, 0xb0, 0x00, 0x20, 0xc0, 0x20, 
+        0x00, 0x02, 0x62, 0x43, 0xc1, 0xcb, 0xff, 0xc0, 0x20, 0x00, 0xa2, 0x22, 0xd0, 0xc0, 0xaa, 0x10, 
+        0xb0, 0xaa, 0x20, 0xc0, 0x20, 0x00, 0xa2, 0x62, 0xd0, 0x91, 0xc6, 0xff, 0xc0, 0x20, 0x00, 0x92, 
+        0x62, 0x5b, 0x71, 0xc5, 0xff, 0xc0, 0x20, 0x00, 0x72, 0x62, 0x5a, 0x61, 0xc4, 0xff, 0xc0, 0x20, 
+        0x00, 0x32, 0x22, 0x54, 0x60, 0x33, 0x20, 0xc0, 0x20, 0x00, 0x32, 0x62, 0x54, 0xc0, 0x20, 0x00, 
+        0xc2, 0xa1, 0x90, 0x02, 0x22, 0xc6, 0xc0, 0x20, 0x00, 0xc2, 0x62, 0xc6, 0xb1, 0x73, 0xf9, 0xa1, 
+        0xbc, 0xff, 0xc0, 0x20, 0x00, 0x92, 0x2d, 0xbb, 0xb0, 0x99, 0x10, 0xa0, 0x99, 0x20, 0xc0, 0x20, 
+        0x00, 0x92, 0x6d, 0xbb, 0x71, 0xb8, 0xff, 0xc0, 0x20, 0x00, 0x62, 0x2d, 0xe2, 0x70, 0x66, 0x10, 
+        0xc0, 0x20, 0x00, 0x62, 0x6d, 0xe2, 0x42, 0x04, 0x00, 0xc0, 0x20, 0x00, 0x32, 0x22, 0x52, 0x80, 
+        0x33, 0x10, 0x40, 0x33, 0x20, 0xc0, 0x20, 0x00, 0x32, 0x62, 0x52, 0x01, 0x41, 0xf6, 0xc1, 0xae, 
+        0xff, 0xc0, 0x20, 0x00, 0xb2, 0x22, 0x4a, 0x00, 0xbb, 0x10, 0xc0, 0xbb, 0x20, 0xc0, 0x20, 0x00, 
+        0xb2, 0x62, 0x4a, 0xa1, 0xaa, 0xff, 0xc0, 0x20, 0x00, 0x98, 0xd2, 0xa0, 0x99, 0x10, 0xc0, 0x20, 
+        0x00, 0x99, 0xd2, 0x2c, 0x67, 0xc0, 0x20, 0x00, 0x62, 0x22, 0x51, 0x80, 0x66, 0x10, 0x70, 0x66, 
+        0x20, 0xc0, 0x20, 0x00, 0x62, 0x62, 0x51, 0x42, 0xaf, 0xc0, 0x1c, 0x13, 0xc0, 0x20, 0x00, 0x02, 
+        0x22, 0xdc, 0x40, 0x00, 0x10, 0x30, 0x00, 0x20, 0xc0, 0x20, 0x00, 0x02, 0x62, 0xdc, 0xc1, 0x33, 
+        0xfe, 0xc0, 0x20, 0x00, 0xb2, 0x2d, 0xa8, 0xc0, 0xbb, 0x20, 0xc0, 0x20, 0x00, 0xb2, 0x6d, 0xa8, 
+        0xa1, 0x98, 0xff, 0x91, 0x98, 0xff, 0xc0, 0x20, 0x00, 0x82, 0x22, 0x59, 0xa0, 0x88, 0x10, 0x90, 
+        0x88, 0x20, 0xc0, 0x20, 0x00, 0x82, 0x62, 0x59, 0x71, 0x43, 0xf9, 0x61, 0x93, 0xff, 0xc0, 0x20, 
+        0x00, 0x42, 0x22, 0x59, 0x70, 0x44, 0x10, 0x60, 0x44, 0x20, 0xc0, 0x20, 0x00, 0x42, 0x62, 0x59, 
+        0x31, 0x8f, 0xff, 0x01, 0x8f, 0xff, 0xc0, 0x20, 0x00, 0xc2, 0x22, 0x57, 0x30, 0xcc, 0x10, 0x00, 
+        0xcc, 0x20, 0xc0, 0x20, 0x00, 0xc2, 0x62, 0x57, 0xb1, 0x8b, 0xff, 0xa1, 0x8b, 0xff, 0xc0, 0x20, 
+        0x00, 0x92, 0x22, 0x54, 0xb0, 0x99, 0x10, 0xa0, 0x99, 0x20, 0xc0, 0x20, 0x00, 0x92, 0x62, 0x54, 
+        0xc0, 0x20, 0x00, 0x72, 0xa0, 0x80, 0x82, 0x22, 0xc6, 0xc0, 0x20, 0x00, 0x72, 0x62, 0xc6, 0x0c, 
+        0x46, 0xc0, 0x20, 0x00, 0x42, 0x22, 0xc4, 0x60, 0x44, 0x20, 0xc0, 0x20, 0x00, 0x42, 0x62, 0xc4, 
+        0x31, 0x7f, 0xff, 0x01, 0x7f, 0xff, 0xc0, 0x20, 0x00, 0xc2, 0x22, 0xdc, 0x30, 0xcc, 0x10, 0x00, 
+        0xcc, 0x20, 0xc0, 0x20, 0x00, 0xc2, 0x62, 0xdc, 0xb1, 0x7b, 0xff, 0xa1, 0x7b, 0xff, 0xc0, 0x20, 
+        0x00, 0x92, 0x22, 0xc9, 0xb0, 0x99, 0x10, 0xa0, 0x99, 0x20, 0xc0, 0x20, 0x00, 0x92, 0x62, 0xc9, 
+        0x81, 0x77, 0xff, 0x71, 0x77, 0xff, 0xc0, 0x20, 0x00, 0x62, 0x22, 0x56, 0x80, 0x66, 0x10, 0x70, 
+        0x66, 0x20, 0xc0, 0x20, 0x00, 0x62, 0x62, 0x56, 0x41, 0x73, 0xff, 0x31, 0x73, 0xff, 0xc0, 0x20, 
+        0x00, 0x02, 0x22, 0xd3, 0x40, 0x00, 0x10, 0x30, 0x00, 0x20, 0xc0, 0x20, 0x00, 0x02, 0x62, 0xd3, 
+        0xc1, 0x6f, 0xff, 0xb1, 0x6f, 0xff, 0xc0, 0x20, 0x00, 0xa2, 0x22, 0xc8, 0xc0, 0xaa, 0x10, 0xb0, 
+        0xaa, 0x20, 0xc0, 0x20, 0x00, 0xa2, 0x62, 0xc8, 0x91, 0x6b, 0xff, 0xc0, 0x20, 0x00, 0x82, 0x2d, 
+        0xe2, 0x90, 0x88, 0x20, 0xc0, 0x20, 0x00, 0x82, 0x6d, 0xe2, 0x71, 0x67, 0xff, 0x61, 0x67, 0xff, 
+        0xc0, 0x20, 0x00, 0x42, 0x25, 0x9c, 0x70, 0x44, 0x10, 0x60, 0x44, 0x20, 0xc0, 0x20, 0x00, 0x42, 
+        0x65, 0x9c, 0x31, 0x63, 0xff, 0xc0, 0x20, 0x00, 0x02, 0x22, 0xd1, 0x30, 0x00, 0x10, 0xc0, 0x20, 
+        0x00, 0x02, 0x62, 0xd1, 0x0c, 0x02, 0x45, 0xc9, 0xff, 0xc1, 0xe3, 0xfa, 0x08, 0x0c, 0x08, 0x30, 
+        0x0c, 0x02, 0xc0, 0x00, 0x00, 0xb2, 0xaf, 0xcf, 0x2c, 0x0a, 0x31, 0x5e, 0xf4, 0x61, 0x66, 0xf3, 
+        0x21, 0x59, 0xff, 0xc0, 0x20, 0x00, 0x92, 0x2d, 0x8e, 0xb0, 0x99, 0x10, 0xa0, 0x99, 0x20, 0xc0, 
+        0x20, 0x00, 0x92, 0x6d, 0x8e, 0xc0, 0x20, 0x00, 0xa1, 0xed, 0xf8, 0x71, 0x53, 0xff, 0x82, 0x2a, 
+        0x92, 0xc0, 0x20, 0x00, 0x72, 0x6a, 0x92, 0x0c, 0x65, 0xc0, 0x20, 0x00, 0x42, 0x2a, 0x93, 0x50, 
+        0x44, 0x20, 0xc0, 0x20, 0x00, 0x42, 0x6a, 0x93, 0xc0, 0x20, 0x00, 0x22, 0x6a, 0xc7, 0xc0, 0x20, 
+        0x00, 0x02, 0x2a, 0xc7, 0x20, 0x00, 0x20, 0xc0, 0x20, 0x00, 0x02, 0x6a, 0xc7, 0xb1, 0x47, 0xff, 
+        0xc0, 0x20, 0x00, 0x98, 0xaa, 0xb0, 0x99, 0x10, 0xc0, 0x20, 0x00, 0x99, 0xaa, 0x7c, 0x98, 0x0c, 
+        0x27, 0xc0, 0x20, 0x00, 0x52, 0x26, 0x89, 0x80, 0x55, 0x10, 0x70, 0x55, 0x20, 0xc0, 0x20, 0x00, 
+        0x52, 0x66, 0x89, 0x7c, 0xe4, 0xc0, 0x20, 0x00, 0x22, 0x23, 0xf0, 0x40, 0x22, 0x10, 0xc0, 0x20, 
+        0x00, 0x08, 0x0c, 0x02, 0x20, 0x28, 0x22, 0x63, 0xf0, 0xc0, 0x00, 0x00, 0x0c, 0x12, 0x08, 0x0c, 
+        0x0c, 0x13, 0x02, 0x20, 0x2b, 0x0c, 0xc4, 0xc0, 0x00, 0x00, 0x0c, 0x22, 0x08, 0x0c, 0x0c, 0x13, 
+        0x02, 0x20, 0x2b, 0x42, 0xa1, 0x84, 0xc0, 0x00, 0x00, 0x0c, 0x32, 0x08, 0x0c, 0x0c, 0x23, 0x02, 
+        0x20, 0x2b, 0x0c, 0x64, 0xc0, 0x00, 0x00, 0x08, 0x0c, 0x02, 0x20, 0x2f, 0xc0, 0x00, 0x00, 0x32, 
+        0xa0, 0x7f, 0x41, 0x2b, 0xff, 0x51, 0x2b, 0xff, 0x1c, 0x06, 0x21, 0x2b, 0xff, 0x0c, 0x07, 0xc5, 
+        0xb5, 0xfe, 0x21, 0x2a, 0xff, 0x41, 0x2a, 0xff, 0x51, 0x2b, 0xff, 0x32, 0x2c, 0x22, 0x61, 0xd1, 
+        0xfa, 0x0c, 0x07, 0x62, 0x06, 0x00, 0x79, 0x01, 0x79, 0x11, 0x79, 0x21, 0x1b, 0x66, 0x60, 0x60, 
+        0x74, 0x71, 0x21, 0xff, 0x45, 0xce, 0xfe, 0x22, 0xa0, 0x77, 0x0c, 0x03, 0x1c, 0x24, 0x0c, 0x75, 
+        0x08, 0x0c, 0x0c, 0x06, 0x02, 0x20, 0x27, 0x72, 0xa0, 0xe8, 0xc0, 0x00, 0x00, 0x0c, 0x13, 0xc0, 
+        0x20, 0x00, 0x22, 0x2d, 0x98, 0x30, 0x22, 0x20, 0xc0, 0x20, 0x00, 0x22, 0x6d, 0x98, 0xc8, 0x51, 
+        0xd8, 0x61, 0x08, 0x41, 0x12, 0xc1, 0x20, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0xff, 0xff, 0x1f, 0xf0, 
+        0x00, 0x00, 0x80, 0x01, 0xff, 0xff, 0xff, 0x1f, 0xff, 0x3f, 0xe0, 0xff, 0x00, 0x40, 0x1f, 0x00, 
+        0xff, 0xff, 0x00, 0xff, 0x00, 0x00, 0xab, 0x00, 0xff, 0x00, 0xff, 0xff, 0xb1, 0xf8, 0xff, 0xa1, 
+        0xf8, 0xff, 0x31, 0x08, 0xf4, 0xc0, 0x20, 0x00, 0x22, 0x23, 0xe6, 0xb0, 0x22, 0x10, 0xa0, 0x22, 
+        0x20, 0xc0, 0x20, 0x00, 0x22, 0x63, 0xe6, 0xc0, 0x20, 0x00, 0x92, 0x23, 0xe7, 0xb0, 0x99, 0x10, 
+        0xa0, 0x99, 0x20, 0xc0, 0x20, 0x00, 0x92, 0x63, 0xe7, 0x81, 0xee, 0xff, 0x71, 0x7c, 0xfd, 0xc0, 
+        0x20, 0x00, 0x62, 0x23, 0xe5, 0x80, 0x66, 0x10, 0x70, 0x66, 0x20, 0xc0, 0x20, 0x00, 0x62, 0x63, 
+        0xe5, 0x51, 0xe9, 0xff, 0x41, 0xea, 0xff, 0xc0, 0x20, 0x00, 0x22, 0x23, 0xe6, 0x50, 0x22, 0x10, 
+        0x40, 0x22, 0x20, 0xc0, 0x20, 0x00, 0x22, 0x63, 0xe6, 0xb1, 0xe5, 0xff, 0xa1, 0xe6, 0xff, 0xc0, 
+        0x20, 0x00, 0x92, 0x23, 0xe8, 0xb0, 0x99, 0x10, 0xa0, 0x99, 0x20, 0xc0, 0x20, 0x00, 0x92, 0x63, 
+        0xe8, 0x81, 0xe1, 0xff, 0x72, 0xa1, 0x00, 0xc0, 0x20, 0x00, 0x62, 0x23, 0xf2, 0x80, 0x66, 0x10, 
+        0x70, 0x66, 0x20, 0xc0, 0x20, 0x00, 0x62, 0x63, 0xf2, 0x52, 0xaf, 0x80, 0x4c, 0x74, 0xc0, 0x20, 
+        0x00, 0x22, 0x23, 0xe6, 0x50, 0x22, 0x10, 0x40, 0x22, 0x20, 0xc0, 0x20, 0x00, 0x22, 0x63, 0xe6, 
+        0x0d, 0xf0, 0x00, 0x00, 0x9b, 0xf6, 0xfe, 0x3f, 0xff, 0x0f, 0xff, 0xff, 0x00, 0x20, 0x00, 0x00, 
+        0x42, 0xaf, 0xbc, 0x12, 0xc1, 0xf0, 0xc9, 0x11, 0xc1, 0xfb, 0xff, 0x09, 0x01, 0x22, 0x0c, 0x82, 
+        0x01, 0xcc, 0xf2, 0x66, 0x22, 0x13, 0x4c, 0x15, 0xc0, 0x20, 0x00, 0x32, 0x20, 0x68, 0x40, 0x33, 
+        0x10, 0x50, 0x33, 0x20, 0xc0, 0x20, 0x00, 0x32, 0x60, 0x68, 0x32, 0x0c, 0x83, 0x26, 0x13, 0x02, 
+        0x66, 0x33, 0x27, 0x0c, 0x18, 0xc0, 0x20, 0x00, 0x72, 0x20, 0x68, 0x40, 0x77, 0x10, 0x80, 0x77, 
+        0x20, 0xc0, 0x20, 0x00, 0x72, 0x60, 0x68, 0x7c, 0xe6, 0xc0, 0x20, 0x00, 0x52, 0x20, 0x5d, 0x60, 
+        0x55, 0x10, 0xc0, 0x20, 0x00, 0x52, 0x60, 0x5d, 0x32, 0x0c, 0x83, 0x42, 0xae, 0xff, 0x26, 0x23, 
+        0x02, 0x66, 0x33, 0x28, 0xc0, 0x20, 0x00, 0x91, 0xb6, 0xf2, 0x82, 0x29, 0x8d, 0xa2, 0xae, 0xff, 
+        0xa0, 0x88, 0x10, 0xc0, 0x20, 0x00, 0x82, 0x69, 0x8d, 0x0c, 0x02, 0x0c, 0x03, 0x0c, 0x04, 0x0c, 
+        0x15, 0x01, 0xe1, 0xf2, 0xc0, 0x00, 0x00, 0x01, 0xae, 0xf2, 0x42, 0xae, 0xff, 0x32, 0x0c, 0x7c, 
+        0x26, 0x13, 0x11, 0xc0, 0x20, 0x00, 0xb2, 0x20, 0x8d, 0x40, 0xbb, 0x10, 0xc0, 0x20, 0x00, 0xb2, 
+        0x60, 0x8d, 0x32, 0x0c, 0x7c, 0x66, 0x23, 0x11, 0x32, 0xa1, 0x00, 0xc0, 0x20, 0x00, 0x22, 0x20, 
+        0x85, 0x30, 0x22, 0x20, 0xc0, 0x20, 0x00, 0x22, 0x60, 0x85, 0x62, 0xae, 0xcf, 0x32, 0x0c, 0x81, 
+        0x3c, 0x05, 0x66, 0x13, 0x14, 0xc0, 0x20, 0x00, 0x42, 0x20, 0x86, 0x60, 0x44, 0x10, 0x50, 0x44, 
+        0x20, 0xc0, 0x20, 0x00, 0x42, 0x60, 0x86, 0x46, 0x0d, 0x00, 0x66, 0x23, 0x11, 0xc0, 0x20, 0x00, 
+        0x72, 0x20, 0x8e, 0x40, 0x77, 0x10, 0xc0, 0x20, 0x00, 0x72, 0x60, 0x8e, 0x06, 0x08, 0x00, 0xc0, 
+        0x20, 0x00, 0x92, 0x20, 0x86, 0x60, 0x99, 0x10, 0x50, 0x99, 0x20, 0xc0, 0x20, 0x00, 0x92, 0x60, 
+        0x86, 0xc0, 0x20, 0x00, 0x82, 0x20, 0x8e, 0x40, 0x88, 0x10, 0xc0, 0x20, 0x00, 0x82, 0x60, 0x8e, 
+        0xa2, 0x0c, 0x7e, 0x66, 0x1a, 0x64, 0xc0, 0x20, 0x00, 0x32, 0x20, 0x86, 0x60, 0x33, 0x10, 0x50, 
+        0x33, 0x20, 0xc0, 0x20, 0x00, 0x32, 0x60, 0x86, 0xc0, 0x20, 0x00, 0x22, 0x20, 0x85, 0x60, 0x22, 
+        0x10, 0x50, 0x22, 0x20, 0xc0, 0x20, 0x00, 0x22, 0x60, 0x85, 0xb2, 0x0c, 0x7f, 0x66, 0x1b, 0x1e, 
+        0x0c, 0x22, 0x0c, 0x03, 0x0c, 0x24, 0x0c, 0x05, 0x01, 0xb0, 0xf2, 0xc0, 0x00, 0x00, 0x0c, 0x02, 
+        0x0c, 0x83, 0x0c, 0x84, 0x0c, 0x05, 0x01, 0xac, 0xf2, 0xc0, 0x00, 0x00, 0xc6, 0x06, 0x00, 0x0c, 
+        0x02, 0x0c, 0x23, 0x0c, 0x24, 0x0c, 0x05, 0x01, 0xa8, 0xf2, 0xc0, 0x00, 0x00, 0x0c, 0x82, 0x0c, 
+        0x03, 0x0c, 0x84, 0x0c, 0x05, 0x01, 0xa4, 0xf2, 0xc0, 0x00, 0x00, 0x41, 0xa2, 0xf2, 0x02, 0x0c, 
+        0x7d, 0x31, 0x9d, 0xff, 0x66, 0x10, 0x15, 0x61, 0xbf, 0xf3, 0xc0, 0x20, 0x00, 0x58, 0x14, 0x30, 
+        0x55, 0x10, 0x60, 0x55, 0x20, 0xc0, 0x20, 0x00, 0x59, 0x14, 0x46, 0x05, 0x00, 0x66, 0x20, 0x12, 
+        0x71, 0x97, 0xff, 0xc0, 0x20, 0x00, 0x68, 0x14, 0x30, 0x66, 0x10, 0x70, 0x66, 0x20, 0xc0, 0x20, 
+        0x00, 0x69, 0x14, 0xc8, 0x11, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0xbe, 0xf6, 0xfe, 0x3f, 
+        0x80, 0x3f, 0xe0, 0x0f, 0xff, 0xff, 0xcf, 0xff, 0x12, 0xc1, 0xf0, 0x09, 0x01, 0x01, 0xfb, 0xff, 
+        0x22, 0x00, 0x80, 0x56, 0x62, 0x08, 0x01, 0xe8, 0xf9, 0x22, 0xa0, 0x66, 0x08, 0x00, 0x0c, 0x33, 
+        0x02, 0x20, 0x24, 0x0c, 0x14, 0xc0, 0x00, 0x00, 0x31, 0xe4, 0xf9, 0x22, 0x63, 0x84, 0x21, 0x61, 
+        0xf3, 0xc0, 0x20, 0x00, 0x52, 0x22, 0xe5, 0x52, 0x63, 0x85, 0xc0, 0x20, 0x00, 0x42, 0x22, 0xe6, 
+        0x42, 0x63, 0x86, 0xc0, 0x20, 0x00, 0x0c, 0x14, 0x0c, 0x55, 0x0c, 0x06, 0x3c, 0xc7, 0x22, 0x22, 
+        0xe7, 0x22, 0x63, 0x87, 0x08, 0x03, 0x22, 0xa0, 0x66, 0x02, 0x20, 0x27, 0x0c, 0x33, 0xc0, 0x00, 
+        0x00, 0x01, 0xe6, 0xff, 0x21, 0xe7, 0xff, 0xc0, 0x20, 0x00, 0x71, 0x52, 0xf3, 0xb2, 0x27, 0xe7, 
+        0x20, 0xbb, 0x20, 0xc0, 0x20, 0x00, 0xb2, 0x67, 0xe7, 0xa1, 0x44, 0xfe, 0xc0, 0x20, 0x00, 0x92, 
+        0x27, 0xe6, 0xa0, 0x99, 0x20, 0xc0, 0x20, 0x00, 0x92, 0x67, 0xe6, 0x81, 0xde, 0xff, 0xc0, 0x20, 
+        0x00, 0x62, 0x27, 0xe5, 0x80, 0x66, 0x10, 0xc0, 0x20, 0x00, 0x62, 0x67, 0xe5, 0x0c, 0x13, 0x32, 
+        0x40, 0x80, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0xc0, 0xf6, 0xfe, 0x3f, 
+        0x12, 0xc1, 0xf0, 0x09, 0x01, 0x01, 0xfd, 0xff, 0x22, 0x00, 0x7e, 0x66, 0x12, 0x38, 0x22, 0xa0, 
+        0x66, 0x0c, 0x33, 0x01, 0xbd, 0xf9, 0x0c, 0x14, 0x08, 0x00, 0x51, 0xf8, 0xff, 0x02, 0x20, 0x26, 
+        0x52, 0x05, 0x80, 0xc0, 0x00, 0x00, 0x01, 0xf5, 0xff, 0x31, 0x36, 0xf3, 0x52, 0x20, 0x21, 0xc0, 
+        0x20, 0x00, 0x52, 0x63, 0xe5, 0x42, 0x20, 0x22, 0xc0, 0x20, 0x00, 0x42, 0x63, 0xe6, 0x22, 0x20, 
+        0x23, 0xc0, 0x20, 0x00, 0x22, 0x63, 0xe7, 0x0c, 0x06, 0x62, 0x40, 0x7e, 0x08, 0x01, 0x12, 0xc1, 
+        0x10, 0x0d, 0xf0, 0x00, 0x12, 0xc1, 0xf0, 0x09, 0x01, 0x66, 0x12, 0x05, 0x85, 0xef, 0xff, 0x86, 
+        0x00, 0x00, 0xc5, 0xf9, 0xff, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0xb4, 0xf5, 0xfe, 0x3f, 
+        0x58, 0xf6, 0xfe, 0x3f, 0x00, 0x78, 0x00, 0x00, 0x12, 0xc1, 0xe0, 0xc9, 0x51, 0x09, 0x41, 0x21, 
+        0x2a, 0xf2, 0x01, 0xa1, 0xf9, 0xc0, 0x20, 0x00, 0x42, 0x22, 0x97, 0xc0, 0x20, 0x00, 0x32, 0x22, 
+        0x96, 0xc0, 0x20, 0x00, 0x10, 0x48, 0x40, 0x0c, 0x13, 0x0c, 0x74, 0x0c, 0x35, 0x0c, 0x26, 0x0c, 
+        0x07, 0x08, 0x00, 0x22, 0x22, 0x97, 0x02, 0x20, 0x27, 0x22, 0xa0, 0x61, 0xc0, 0x00, 0x00, 0xc5, 
+        0xc2, 0xff, 0x22, 0xa0, 0x77, 0x0c, 0x03, 0x1c, 0x04, 0x01, 0x93, 0xf9, 0x0c, 0x05, 0x08, 0x00, 
+        0x0c, 0x06, 0x02, 0x20, 0x27, 0x0c, 0x17, 0xc0, 0x00, 0x00, 0x45, 0x6b, 0x01, 0xc1, 0x0f, 0xfe, 
+        0x2d, 0x0c, 0x32, 0xcc, 0x3c, 0x05, 0x31, 0x01, 0x85, 0xaa, 0xfe, 0x0c, 0x12, 0x45, 0xd1, 0xfe, 
+        0x2d, 0x0c, 0x31, 0xe2, 0xff, 0x4c, 0x05, 0x0c, 0x07, 0x0c, 0x06, 0x0c, 0x19, 0x0c, 0x0a, 0x41, 
+        0xb1, 0xf9, 0x81, 0xdf, 0xff, 0x42, 0x14, 0x01, 0x82, 0x08, 0x80, 0xa9, 0x01, 0x99, 0x11, 0x80, 
+        0x88, 0x01, 0x80, 0x88, 0x31, 0x82, 0xc8, 0x1f, 0x80, 0x88, 0x01, 0x80, 0x88, 0x31, 0x80, 0x68, 
+        0xb3, 0x60, 0x60, 0x74, 0x45, 0x5e, 0x01, 0x0c, 0x62, 0x45, 0x04, 0x01, 0x85, 0x7f, 0xff, 0x0c, 
+        0x27, 0x61, 0x71, 0xf4, 0xc0, 0x20, 0x00, 0x52, 0x26, 0x9c, 0x70, 0x55, 0x20, 0xc0, 0x20, 0x00, 
+        0x52, 0x66, 0x9c, 0x3c, 0x22, 0x01, 0x12, 0xf4, 0xc0, 0x00, 0x00, 0x01, 0x73, 0xf9, 0x08, 0x00, 
+        0x02, 0x20, 0x16, 0x22, 0xae, 0x7c, 0xc0, 0x00, 0x00, 0x72, 0xac, 0x00, 0x62, 0xa0, 0xc9, 0x31, 
+        0x83, 0xf7, 0xc0, 0x20, 0x00, 0x58, 0xd3, 0x70, 0x55, 0x10, 0x60, 0x55, 0x20, 0xc0, 0x20, 0x00, 
+        0x59, 0xd3, 0x7c, 0xe4, 0xc0, 0x20, 0x00, 0x28, 0xd3, 0x40, 0x22, 0x10, 0xc0, 0x20, 0x00, 0x29, 
+        0xd3, 0x3c, 0x22, 0x01, 0x03, 0xf4, 0xc0, 0x00, 0x00, 0xc9, 0x01, 0x0c, 0x12, 0x0c, 0x73, 0x0c, 
+        0x54, 0x51, 0xbc, 0xff, 0x0c, 0x16, 0x0c, 0x07, 0x45, 0xdc, 0xfe, 0x0c, 0x02, 0xc8, 0x51, 0x08, 
+        0x41, 0x12, 0xc1, 0x20, 0x0d, 0xf0, 0x00, 0x00, 0xe4, 0xf6, 0xfe, 0x3f, 0x6d, 0x02, 0xfb, 0x72, 
+        0x91, 0xfe, 0xff, 0x42, 0x02, 0x00, 0x5d, 0x09, 0x42, 0x49, 0x00, 0x32, 0x02, 0x01, 0x82, 0xc9, 
+        0xc0, 0x30, 0x31, 0x04, 0x32, 0x49, 0x02, 0xa2, 0x06, 0x02, 0xa2, 0x45, 0x03, 0x1b, 0x66, 0x1b, 
+        0x55, 0x77, 0x96, 0xf2, 0x5d, 0x09, 0x6d, 0x02, 0x3b, 0x72, 0x32, 0x06, 0x11, 0x1b, 0x55, 0x1b, 
+        0x66, 0x32, 0x45, 0x11, 0x42, 0x06, 0x13, 0x80, 0xb3, 0x01, 0x4a, 0x33, 0x32, 0x45, 0x14, 0x32, 
+        0x06, 0x16, 0xb0, 0xb8, 0x31, 0x3a, 0xbb, 0xb2, 0x45, 0x17, 0x77, 0x96, 0xdc, 0x6d, 0x02, 0x5d, 
+        0x09, 0x4b, 0x72, 0x42, 0x02, 0x1a, 0x42, 0x48, 0x5c, 0x32, 0x02, 0x1b, 0x32, 0x48, 0x5d, 0xb2, 
+        0x02, 0x1c, 0xa2, 0x02, 0x1d, 0xb0, 0xb0, 0x54, 0x80, 0xbb, 0x11, 0xb0, 0xaa, 0x20, 0xa2, 0x58, 
+        0x2f, 0xa2, 0x06, 0x1e, 0xa2, 0x45, 0x20, 0x1b, 0x66, 0x1b, 0x55, 0x77, 0x96, 0xf2, 0x5d, 0x09, 
+        0x6d, 0x02, 0x6b, 0x72, 0xb2, 0x06, 0x22, 0xb2, 0x45, 0x24, 0x1b, 0x66, 0x1b, 0x55, 0x77, 0x96, 
+        0xf2, 0x5d, 0x09, 0x6d, 0x02, 0x8b, 0x72, 0x32, 0x06, 0x28, 0x32, 0x45, 0x2a, 0x1b, 0x66, 0x1b, 
+        0x55, 0x77, 0x96, 0xf2, 0x0c, 0x55, 0x32, 0x02, 0x30, 0x32, 0x48, 0x41, 0xb2, 0x02, 0x31, 0xb2, 
+        0x48, 0x73, 0xa2, 0x02, 0x32, 0xa2, 0x48, 0x74, 0x92, 0x02, 0x33, 0x92, 0x48, 0x75, 0x72, 0x02, 
+        0x34, 0x72, 0x48, 0x76, 0x62, 0x02, 0x35, 0x62, 0x48, 0x77, 0x42, 0x02, 0x36, 0x42, 0x48, 0x78, 
+        0x32, 0x02, 0x37, 0x32, 0x48, 0x79, 0xb2, 0x02, 0x38, 0xb2, 0x48, 0x7a, 0xa2, 0x02, 0x40, 0xa2, 
+        0x48, 0x7b, 0x92, 0x02, 0x41, 0x92, 0x48, 0x7c, 0x72, 0x02, 0x42, 0x62, 0x02, 0x43, 0x70, 0x70, 
+        0x54, 0x80, 0x77, 0x11, 0x70, 0x66, 0x20, 0x62, 0x58, 0x3f, 0x42, 0x02, 0x44, 0x42, 0x48, 0x80, 
+        0x32, 0x02, 0x45, 0x32, 0x48, 0x81, 0xb2, 0x02, 0x47, 0xa2, 0x02, 0x46, 0x80, 0xbb, 0x01, 0x80, 
+        0xaa, 0x01, 0xa0, 0xa8, 0x31, 0xb0, 0xb8, 0x31, 0x80, 0xbb, 0x11, 0xb0, 0xaa, 0x20, 0xa2, 0x58, 
+        0x41, 0x92, 0x02, 0x49, 0x72, 0x02, 0x48, 0x80, 0x99, 0x01, 0x80, 0x77, 0x01, 0x70, 0x78, 0x31, 
+        0x90, 0x98, 0x31, 0x80, 0x99, 0x11, 0x90, 0x77, 0x20, 0x72, 0x58, 0x42, 0x62, 0x02, 0x4a, 0x62, 
+        0x48, 0x86, 0x42, 0x02, 0x4b, 0x6d, 0x05, 0x40, 0x40, 0x34, 0x42, 0x48, 0x88, 0xf6, 0x64, 0x01, 
+        0x6d, 0x04, 0x62, 0x48, 0x88, 0x92, 0x02, 0x4b, 0x90, 0x94, 0x24, 0x92, 0x48, 0x8a, 0x72, 0x02, 
+        0x4b, 0x70, 0x77, 0x04, 0x72, 0x48, 0x8c, 0x62, 0x02, 0x4c, 0x60, 0x60, 0x34, 0x62, 0x48, 0x87, 
+        0x67, 0x35, 0x01, 0x5d, 0x06, 0x52, 0x48, 0x87, 0xa2, 0x02, 0x4c, 0xa0, 0xa4, 0x24, 0xa2, 0x48, 
+        0x89, 0x92, 0x02, 0x4c, 0x90, 0x97, 0x04, 0x92, 0x48, 0x8b, 0x72, 0x02, 0x4d, 0x70, 0x70, 0x34, 
+        0x72, 0x48, 0x8e, 0x62, 0x02, 0x4d, 0x60, 0x64, 0x34, 0x62, 0x48, 0x8d, 0x42, 0x02, 0x4e, 0x42, 
+        0x48, 0x8f, 0x32, 0x02, 0x4f, 0x32, 0x48, 0x90, 0xb2, 0x02, 0x50, 0xb2, 0x48, 0x91, 0xa2, 0x02, 
+        0x51, 0xa2, 0x48, 0x92, 0x92, 0x02, 0x52, 0x92, 0x48, 0x93, 0x72, 0x02, 0x53, 0x72, 0x48, 0x94, 
+        0x62, 0x02, 0x54, 0x62, 0x48, 0x95, 0x42, 0x02, 0x55, 0x42, 0x48, 0x96, 0x32, 0x02, 0x56, 0x32, 
+        0x48, 0x97, 0xb2, 0x02, 0x57, 0xb2, 0x48, 0x98, 0xa2, 0x02, 0x58, 0xa2, 0x48, 0x99, 0x0c, 0x02, 
+        0x0d, 0xf0, 0x00, 0x00, 0x65, 0xf6, 0xfe, 0x3f, 0x14, 0x3a, 0x00, 0x40, 0xa4, 0x38, 0x00, 0x40, 
+        0xd8, 0x39, 0x00, 0x40, 0x12, 0xc1, 0xf0, 0x09, 0x11, 0x01, 0xfa, 0xff, 0x02, 0x00, 0x80, 0x16, 
+        0xa0, 0x09, 0x01, 0xaf, 0xf4, 0xc0, 0x00, 0x00, 0x41, 0xf7, 0xff, 0x42, 0x04, 0x80, 0x29, 0x01, 
+        0x66, 0x14, 0x26, 0x22, 0xa0, 0x67, 0x0c, 0x43, 0x08, 0x01, 0x0c, 0x24, 0x02, 0x20, 0x26, 0x52, 
+        0xa0, 0x91, 0xc0, 0x00, 0x00, 0x22, 0xa0, 0x67, 0x0c, 0x43, 0x08, 0x01, 0x0c, 0x14, 0x02, 0x20, 
+        0x26, 0x52, 0xa0, 0x88, 0xc0, 0x00, 0x00, 0x46, 0x05, 0x00, 0x66, 0x24, 0x12, 0x0c, 0x43, 0x0c, 
+        0x24, 0x0c, 0x75, 0x0c, 0x56, 0x0c, 0x27, 0x02, 0x22, 0x27, 0x22, 0xa0, 0x67, 0xc0, 0x00, 0x00, 
+        0x01, 0x45, 0xf2, 0xc0, 0x20, 0x00, 0x22, 0x20, 0x46, 0x27, 0x72, 0x35, 0xc0, 0x20, 0x00, 0x32, 
+        0x20, 0x46, 0x41, 0x33, 0xf1, 0x30, 0x3d, 0x25, 0x66, 0x23, 0x26, 0xc0, 0x20, 0x00, 0x42, 0x24, 
+        0x88, 0x87, 0x64, 0x1d, 0x0c, 0x12, 0x01, 0xdc, 0xff, 0xc0, 0x00, 0x00, 0x0c, 0x12, 0x01, 0xdb, 
+        0xff, 0xc0, 0x00, 0x00, 0x0c, 0x12, 0x32, 0xa2, 0xb6, 0x01, 0xd9, 0xff, 0xc0, 0x00, 0x00, 0x86, 
+        0x02, 0x00, 0x0c, 0x02, 0x32, 0xa2, 0xb6, 0x01, 0xd6, 0xff, 0xc0, 0x00, 0x00, 0x08, 0x11, 0x12, 
+        0xc1, 0x10, 0x0d, 0xf0, 0x82, 0xf8, 0xfe, 0x3f, 0x34, 0xf5, 0xfe, 0x3f, 0xdc, 0xf6, 0xfe, 0x3f, 
+        0x6c, 0x40, 0x10, 0x40, 0x90, 0x3c, 0x10, 0x40, 0xc4, 0x3f, 0x10, 0x40, 0x68, 0x25, 0x10, 0x40, 
+        0x84, 0x25, 0x10, 0x40, 0x34, 0x51, 0x10, 0x40, 0xcc, 0x41, 0x10, 0x40, 0x24, 0x80, 0xfe, 0x3f, 
+        0x00, 0x00, 0x00, 0x02, 0x12, 0xc1, 0xf0, 0xd9, 0x31, 0xc9, 0x21, 0xc1, 0xf2, 0xff, 0x09, 0x11, 
+        0x02, 0x0c, 0x00, 0xdd, 0x02, 0xcc, 0x70, 0x21, 0xf0, 0xff, 0x31, 0xf0, 0xff, 0x85, 0x24, 0xfe, 
+        0x0c, 0x16, 0x31, 0x40, 0xf1, 0xc0, 0x20, 0x00, 0x52, 0x23, 0xd2, 0x60, 0x55, 0x20, 0xc0, 0x20, 
+        0x00, 0x52, 0x63, 0xd2, 0x7c, 0xe4, 0xc0, 0x20, 0x00, 0x22, 0x23, 0xd2, 0x40, 0x22, 0x10, 0xc0, 
+        0x20, 0x00, 0x22, 0x63, 0xd2, 0x01, 0x6a, 0xf4, 0xc0, 0x00, 0x00, 0x72, 0x0c, 0x00, 0x81, 0xea, 
+        0xff, 0x91, 0xe8, 0xff, 0xa1, 0xe7, 0xff, 0xb1, 0xe5, 0xff, 0x31, 0xe3, 0xff, 0x41, 0xe1, 0xff, 
+        0x01, 0x8e, 0xf8, 0x51, 0xdf, 0xff, 0x29, 0x00, 0x52, 0x62, 0x1f, 0x42, 0x62, 0x28, 0x32, 0x62, 
+        0x22, 0xb9, 0xa2, 0xa2, 0x62, 0x16, 0x99, 0x92, 0x82, 0x62, 0x36, 0xcc, 0xc7, 0x2d, 0x0d, 0xc5, 
+        0xca, 0xff, 0xdd, 0x02, 0x0c, 0xe6, 0x69, 0x01, 0x46, 0x04, 0x00, 0x71, 0xc3, 0xfc, 0x72, 0x07, 
+        0x80, 0xd2, 0xa0, 0x00, 0x80, 0x77, 0x01, 0x70, 0x78, 0x31, 0x72, 0x61, 0x00, 0x45, 0xe8, 0xff, 
+        0xc5, 0x87, 0xff, 0xc5, 0xae, 0xff, 0x21, 0xd5, 0xff, 0xc5, 0x08, 0xfe, 0x82, 0x0c, 0x00, 0xa1, 
+        0x7a, 0xf8, 0x66, 0x18, 0x07, 0x28, 0x01, 0x85, 0xc3, 0x00, 0x46, 0x02, 0x00, 0xb1, 0xd0, 0xff, 
+        0x98, 0x2a, 0xb0, 0x99, 0x20, 0x99, 0x2a, 0x2d, 0x0d, 0x0c, 0x10, 0x02, 0x4c, 0x00, 0xd8, 0x31, 
+        0xc8, 0x21, 0x08, 0x11, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 
+        0x12, 0xc1, 0xe0, 0xd9, 0x21, 0xe9, 0x31, 0x09, 0x01, 0xc9, 0x11, 0xf9, 0x41, 0x4d, 0x00, 0xf1, 
+        0x62, 0xf3, 0xc1, 0xe8, 0xf1, 0xc0, 0x20, 0x00, 0x22, 0x2c, 0xe5, 0x07, 0xe2, 0x41, 0xc0, 0x20, 
+        0x00, 0x52, 0x2f, 0x9c, 0x17, 0x65, 0x38, 0xd1, 0x64, 0xf8, 0x08, 0x0d, 0x02, 0x20, 0x1d, 0xc0, 
+        0x00, 0x00, 0x0c, 0x52, 0x01, 0xff, 0xf2, 0xc0, 0x00, 0x00, 0xe2, 0xa1, 0x84, 0x08, 0x0d, 0x0c, 
+        0x22, 0x02, 0x20, 0x2c, 0x0c, 0x13, 0xc0, 0x00, 0x00, 0xe7, 0xc2, 0xf0, 0x08, 0x0d, 0x0c, 0x32, 
+        0x02, 0x20, 0x2c, 0x0c, 0x23, 0xc0, 0x00, 0x00, 0x0c, 0x63, 0x30, 0x22, 0x10, 0x66, 0x62, 0xdc, 
+        0x91, 0x7a, 0xf6, 0x81, 0x6a, 0xf6, 0xc0, 0x20, 0x00, 0x72, 0x28, 0x42, 0x90, 0x77, 0x20, 0xc0, 
+        0x20, 0x00, 0x72, 0x68, 0x42, 0xc0, 0x20, 0x00, 0x52, 0x2c, 0xe5, 0x0c, 0x16, 0x60, 0x55, 0x20, 
+        0xc0, 0x20, 0x00, 0x52, 0x6c, 0xe5, 0xc0, 0x20, 0x00, 0x42, 0x2f, 0x9c, 0x01, 0xdc, 0xff, 0x17, 
+        0x64, 0x11, 0xc0, 0x20, 0x00, 0xa2, 0x2c, 0xe8, 0xe7, 0xfa, 0x08, 0xc0, 0x20, 0x00, 0xb2, 0x2c, 
+        0xe8, 0x07, 0x0b, 0xf6, 0xc8, 0x11, 0xd8, 0x21, 0xe8, 0x31, 0xf8, 0x41, 0x08, 0x01, 0x12, 0xc1, 
+        0x20, 0x0d, 0xf0, 0x00, 0x0c, 0x13, 0x42, 0xa0, 0x81, 0x12, 0xc1, 0xf0, 0xc9, 0x11, 0xd9, 0x21, 
+        0xd1, 0x3e, 0xf8, 0x09, 0x01, 0x08, 0x0d, 0xcd, 0x02, 0x02, 0x20, 0x2b, 0x0c, 0x22, 0xc0, 0x00, 
+        0x00, 0x0c, 0x72, 0x08, 0x0d, 0x0c, 0x13, 0x02, 0x20, 0x2b, 0xc0, 0x45, 0x41, 0xc0, 0x00, 0x00, 
+        0xc0, 0x40, 0x44, 0x08, 0x0d, 0x0c, 0x02, 0x02, 0x20, 0x2b, 0x0c, 0x13, 0xc0, 0x00, 0x00, 0x0c, 
+        0x12, 0x08, 0x0d, 0x0c, 0x13, 0x02, 0x20, 0x2b, 0x42, 0xa0, 0x7f, 0xc0, 0x00, 0x00, 0x0c, 0x62, 
+        0x08, 0x0d, 0x0c, 0x13, 0x02, 0x20, 0x2b, 0x42, 0xa0, 0x7f, 0xc0, 0x00, 0x00, 0xc8, 0x11, 0xd8, 
+        0x21, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0xf0, 0x00, 0x98, 0x8b, 0xfe, 0x3f, 
+        0xff, 0xff, 0x0f, 0xff, 0x12, 0xc1, 0xe0, 0x09, 0x11, 0x29, 0x61, 0xe9, 0x41, 0xd9, 0x31, 0xf9, 
+        0x51, 0xc9, 0x21, 0xfd, 0x02, 0xc1, 0x20, 0xf8, 0xdd, 0x04, 0xed, 0x03, 0x41, 0xf7, 0xff, 0x31, 
+        0x9d, 0xf1, 0xc0, 0x20, 0x00, 0x22, 0x23, 0xf2, 0x40, 0x22, 0x20, 0xc0, 0x20, 0x00, 0x08, 0x0c, 
+        0x02, 0x20, 0x37, 0x22, 0x63, 0xf2, 0xc0, 0x00, 0x00, 0x4d, 0x0d, 0x3d, 0x0f, 0x2d, 0x0e, 0x5d, 
+        0x01, 0xc5, 0x45, 0x00, 0x08, 0x0c, 0x02, 0x20, 0x38, 0x2d, 0x01, 0xc0, 0x00, 0x00, 0x08, 0x0c, 
+        0x02, 0x20, 0x36, 0xc0, 0x00, 0x00, 0x22, 0xa0, 0x62, 0x0c, 0x13, 0x0c, 0x04, 0x0c, 0x45, 0x08, 
+        0x0c, 0x0c, 0x06, 0x02, 0x20, 0x27, 0x0c, 0x87, 0xc0, 0x00, 0x00, 0x0c, 0x0d, 0xf2, 0xa0, 0x63, 
+        0xe2, 0xa0, 0x64, 0x3c, 0x22, 0x01, 0xa6, 0xf2, 0xc0, 0x00, 0x00, 0x22, 0xa0, 0x62, 0x0c, 0x13, 
+        0x0c, 0x74, 0x08, 0x0c, 0x0c, 0x75, 0x02, 0x20, 0x25, 0x0c, 0x76, 0xc0, 0x00, 0x00, 0xdc, 0x22, 
+        0xf7, 0x9d, 0x08, 0x21, 0xda, 0xff, 0x01, 0x2c, 0xf8, 0xc0, 0x00, 0x00, 0x1b, 0xdd, 0xd0, 0xd0, 
+        0x74, 0xe7, 0x9d, 0xce, 0x01, 0xd7, 0xff, 0xc0, 0x20, 0x00, 0xf1, 0x7a, 0xf1, 0xe2, 0x2f, 0xf2, 
+        0x00, 0xee, 0x10, 0xc0, 0x20, 0x00, 0xc8, 0x21, 0xe2, 0x6f, 0xf2, 0xd8, 0x31, 0xe8, 0x41, 0xf8, 
+        0x51, 0x08, 0x11, 0x12, 0xc1, 0x20, 0x0d, 0xf0, 0x32, 0xa0, 0x01, 0x42, 0xa0, 0x05, 0x0c, 0x75, 
+        0x0c, 0x06, 0x12, 0xc1, 0xe0, 0xd9, 0x21, 0xf9, 0x41, 0xc9, 0x11, 0xe9, 0x31, 0xe1, 0xee, 0xf7, 
+        0x09, 0x01, 0x08, 0x0e, 0xcd, 0x02, 0x02, 0x20, 0x25, 0x22, 0xa0, 0x62, 0xc0, 0x00, 0x00, 0x0c, 
+        0x0d, 0xfd, 0x02, 0x32, 0xae, 0xac, 0x20, 0x22, 0x90, 0x30, 0x22, 0xb0, 0x32, 0xa0, 0xe3, 0x85, 
+        0x8b, 0x0b, 0x00, 0x52, 0x11, 0x0c, 0xf4, 0x0d, 0x04, 0x50, 0x50, 0x31, 0x2d, 0x0d, 0x50, 0x25, 
+        0xb3, 0xe6, 0xb2, 0x01, 0x0d, 0x02, 0x32, 0xa0, 0xcf, 0xf0, 0x2f, 0x90, 0xf0, 0x22, 0xf0, 0x22, 
+        0xc2, 0x1d, 0x00, 0xf0, 0x11, 0xf0, 0xf0, 0x31, 0xc5, 0x88, 0x0b, 0x98, 0x0e, 0x00, 0x42, 0x11, 
+        0x0c, 0xf3, 0x0d, 0x03, 0x40, 0x40, 0x31, 0x92, 0x29, 0x27, 0x40, 0xd4, 0xb3, 0xe6, 0xbd, 0x01, 
+        0x0d, 0x0d, 0x00, 0xd0, 0x11, 0xd0, 0xd0, 0x31, 0xb6, 0x3c, 0x1c, 0x0c, 0x82, 0xa6, 0x8f, 0x01, 
+        0x7c, 0x82, 0x0c, 0x03, 0x0c, 0x44, 0x0c, 0x35, 0x0c, 0x06, 0x2a, 0x7f, 0x70, 0x70, 0x74, 0x22, 
+        0xa0, 0x64, 0xc0, 0x09, 0x00, 0x06, 0x04, 0x00, 0xf0, 0x70, 0x74, 0x22, 0xa0, 0x64, 0x0c, 0x03, 
+        0x0c, 0x44, 0x0c, 0x35, 0x0c, 0x06, 0xc0, 0x09, 0x00, 0x98, 0x0e, 0x0c, 0x80, 0x92, 0x29, 0x27, 
+        0xb6, 0x2c, 0x1a, 0xa6, 0x8d, 0x01, 0x7c, 0x80, 0x22, 0xa0, 0x64, 0x0c, 0x03, 0x0c, 0x74, 0x0c, 
+        0x35, 0x0c, 0x06, 0x0a, 0x7d, 0x70, 0x70, 0x74, 0xc0, 0x09, 0x00, 0x06, 0x04, 0x00, 0xd0, 0x70, 
+        0x74, 0x22, 0xa0, 0x64, 0x0c, 0x03, 0x0c, 0x74, 0x0c, 0x35, 0x0c, 0x06, 0xc0, 0x09, 0x00, 0x98, 
+        0x0e, 0x92, 0x29, 0x27, 0xac, 0x6c, 0x22, 0xa0, 0x61, 0x0c, 0x13, 0x0c, 0x54, 0x0c, 0x35, 0x0c, 
+        0x26, 0x0c, 0x37, 0xc0, 0x09, 0x00, 0x22, 0xa0, 0x61, 0x0c, 0x13, 0x0c, 0x54, 0x0c, 0x15, 0x08, 
+        0x0e, 0x0c, 0x06, 0x02, 0x20, 0x27, 0x0c, 0x37, 0xc0, 0x00, 0x00, 0x06, 0x09, 0x00, 0x22, 0xa0, 
+        0x61, 0x0c, 0x13, 0x0c, 0x54, 0x0c, 0x35, 0x0c, 0x26, 0x0c, 0x07, 0xc0, 0x09, 0x00, 0x22, 0xa0, 
+        0x61, 0x0c, 0x13, 0x0c, 0x54, 0x0c, 0x15, 0x08, 0x0e, 0x0c, 0x06, 0x02, 0x20, 0x27, 0x0c, 0x07, 
+        0xc0, 0x00, 0x00, 0xc8, 0x11, 0xd8, 0x21, 0xe8, 0x31, 0xf8, 0x41, 0x08, 0x01, 0x12, 0xc1, 0x20, 
+        0x0d, 0xf0, 0x00, 0x00, 0x22, 0xa0, 0x61, 0x12, 0xc1, 0xf0, 0x09, 0x01, 0x01, 0x9f, 0xf7, 0x0c, 
+        0x13, 0x08, 0x00, 0x0c, 0x84, 0x02, 0x20, 0x26, 0x1c, 0x15, 0xc0, 0x00, 0x00, 0x0c, 0x02, 0x85, 
+        0xe9, 0xff, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x12, 0xc1, 0xf0, 0x09, 
+        0x01, 0xc9, 0x11, 0xd9, 0x21, 0xcd, 0x02, 0x0c, 0x0d, 0x16, 0x1d, 0x04, 0x26, 0x1d, 0x20, 0x66, 
+        0x2d, 0x56, 0x22, 0xa0, 0x6b, 0x0c, 0x23, 0x0c, 0x24, 0x0c, 0x65, 0x01, 0x8f, 0xf7, 0x0c, 0x46, 
+        0x08, 0x00, 0xda, 0x7c, 0x02, 0x20, 0x27, 0x72, 0x07, 0x00, 0xc0, 0x00, 0x00, 0x06, 0x0e, 0x00, 
+        0x22, 0xa0, 0x6b, 0x0c, 0x23, 0x0c, 0x24, 0x0c, 0x35, 0x01, 0x87, 0xf7, 0x0c, 0x06, 0x08, 0x00, 
+        0xda, 0x7c, 0x02, 0x20, 0x27, 0x72, 0x07, 0x00, 0xc0, 0x00, 0x00, 0x86, 0x06, 0x00, 0x22, 0xa0, 
+        0x6b, 0x0c, 0x23, 0x0c, 0x14, 0x0c, 0x35, 0x01, 0x80, 0xf7, 0x0c, 0x06, 0x08, 0x00, 0xda, 0x7c, 
+        0x02, 0x20, 0x27, 0x72, 0x07, 0x00, 0xc0, 0x00, 0x00, 0x1b, 0xdd, 0xd0, 0xd0, 0x74, 0x66, 0x3d, 
+        0x97, 0xc8, 0x11, 0xd8, 0x21, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x12, 0xc1, 0xe0, 0x09, 
+        0x11, 0x39, 0x01, 0xc9, 0x21, 0xd9, 0x31, 0xe9, 0x41, 0xdd, 0x02, 0xed, 0x04, 0xc1, 0x72, 0xf7, 
+        0x16, 0x22, 0x0f, 0x22, 0xa0, 0x77, 0x0c, 0x03, 0x1c, 0xc4, 0x0c, 0x05, 0x08, 0x0c, 0x0c, 0x06, 
+        0x02, 0x20, 0x27, 0x0c, 0x07, 0xc0, 0x00, 0x00, 0x22, 0xa0, 0x77, 0x0c, 0x03, 0x1c, 0xa4, 0x0c, 
+        0x45, 0x08, 0x0c, 0x0c, 0x46, 0x02, 0x20, 0x27, 0x0c, 0x07, 0xc0, 0x00, 0x00, 0x22, 0xa0, 0x77, 
+        0x0c, 0x03, 0x1c, 0xa4, 0x0c, 0x45, 0x08, 0x0c, 0x0c, 0x46, 0x02, 0x20, 0x27, 0x0c, 0x17, 0xc0, 
+        0x00, 0x00, 0x22, 0xa0, 0x77, 0x0c, 0x03, 0x1c, 0xa4, 0x0c, 0x55, 0x08, 0x0c, 0x0c, 0x56, 0x02, 
+        0x20, 0x27, 0x0c, 0x07, 0xc0, 0x00, 0x00, 0x22, 0xa0, 0x77, 0x0c, 0x03, 0x1c, 0xa4, 0x0c, 0x55, 
+        0x08, 0x0c, 0x0c, 0x56, 0x02, 0x20, 0x27, 0x0c, 0x17, 0xc0, 0x00, 0x00, 0x22, 0xa0, 0x77, 0x0c, 
+        0x03, 0x0c, 0x04, 0x0c, 0x75, 0x0c, 0x06, 0x08, 0x0c, 0x78, 0x01, 0x02, 0x20, 0x27, 0x70, 0x7c, 
+        0x74, 0xc0, 0x00, 0x00, 0x22, 0xa0, 0x77, 0x0c, 0x03, 0x0c, 0x14, 0x0c, 0x75, 0x0c, 0x06, 0x08, 
+        0x0c, 0x78, 0x01, 0x02, 0x20, 0x27, 0x70, 0x74, 0x74, 0xc0, 0x00, 0x00, 0x22, 0xa0, 0x77, 0x0c, 
+        0x03, 0x0c, 0x24, 0x0c, 0x35, 0x0c, 0x06, 0x08, 0x0c, 0x78, 0x01, 0x02, 0x20, 0x27, 0x70, 0x70, 
+        0x34, 0xc0, 0x00, 0x00, 0x22, 0xa0, 0x77, 0x0c, 0x03, 0x0c, 0x44, 0x0c, 0x75, 0x08, 0x0c, 0x0c, 
+        0x06, 0x02, 0x20, 0x27, 0xe0, 0x70, 0x74, 0xc0, 0x00, 0x00, 0x22, 0xa0, 0x77, 0x0c, 0x03, 0x0c, 
+        0x34, 0x0c, 0x75, 0x08, 0x0c, 0x0c, 0x06, 0x02, 0x20, 0x27, 0xe0, 0x78, 0x74, 0xc0, 0x00, 0x00, 
+        0xe0, 0x70, 0x35, 0x22, 0xa0, 0x77, 0x0c, 0x03, 0x0c, 0x24, 0x08, 0x0c, 0x0c, 0x75, 0x02, 0x20, 
+        0x27, 0x0c, 0x46, 0xc0, 0x00, 0x00, 0x0c, 0xf4, 0x0c, 0x35, 0x0c, 0x36, 0xd0, 0x30, 0x04, 0x0c, 
+        0x12, 0x08, 0x0c, 0x0c, 0x0e, 0x02, 0x20, 0x27, 0x30, 0xe2, 0x83, 0x7d, 0x0e, 0x22, 0xa0, 0x77, 
+        0x0c, 0x03, 0xc0, 0x00, 0x00, 0x7d, 0x0e, 0x22, 0xa0, 0x77, 0x0c, 0x03, 0x1c, 0x84, 0x08, 0x0c, 
+        0x0c, 0x05, 0x02, 0x20, 0x27, 0x0c, 0x06, 0xc0, 0x00, 0x00, 0x7d, 0x0d, 0x22, 0xa0, 0x77, 0x0c, 
+        0x03, 0x1c, 0xc4, 0x08, 0x0c, 0x0c, 0x05, 0x02, 0x20, 0x27, 0x0c, 0x06, 0xc0, 0x00, 0x00, 0xc8, 
+        0x21, 0xd8, 0x31, 0xe8, 0x41, 0x08, 0x11, 0x12, 0xc1, 0x20, 0x0d, 0xf0, 0x22, 0xa0, 0x62, 0x0c, 
+        0x13, 0x0c, 0x04, 0x0c, 0x65, 0x12, 0xc1, 0xf0, 0xc9, 0x11, 0xc1, 0x1b, 0xf7, 0x09, 0x01, 0x08, 
+        0x0c, 0x0c, 0x66, 0x02, 0x20, 0x27, 0x0c, 0x17, 0xc0, 0x00, 0x00, 0x22, 0xa0, 0x62, 0x0c, 0x13, 
+        0x0c, 0x04, 0x0c, 0x55, 0x08, 0x0c, 0x0c, 0x56, 0x02, 0x20, 0x27, 0x0c, 0x07, 0xc0, 0x00, 0x00, 
+        0x22, 0xa0, 0x62, 0x0c, 0x13, 0x0c, 0x04, 0x0c, 0x55, 0x08, 0x0c, 0x0c, 0x56, 0x02, 0x20, 0x27, 
+        0x0c, 0x17, 0xc0, 0x00, 0x00, 0x22, 0xa0, 0x62, 0x0c, 0x13, 0x0c, 0x04, 0x0c, 0x65, 0x08, 0x0c, 
+        0x0c, 0x66, 0x02, 0x20, 0x27, 0x0c, 0x07, 0xc0, 0x00, 0x00, 0xc8, 0x11, 0x08, 0x01, 0x12, 0xc1, 
+        0x10, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x20, 0x42, 0x00, 0x00, 0xc0, 0x41, 0x00, 0x00, 0xd0, 0x41, 
+        0x00, 0x00, 0x80, 0x43, 0x00, 0x00, 0x08, 0x40, 0x00, 0x00, 0x80, 0x44, 0x00, 0x00, 0x00, 0xc2, 
+        0x12, 0xc1, 0xe0, 0xd9, 0x31, 0x09, 0x11, 0xc9, 0x21, 0xe9, 0x41, 0xcd, 0x05, 0xe1, 0xf5, 0xff, 
+        0x8c, 0xd3, 0x26, 0x13, 0x08, 0x66, 0x23, 0x08, 0xe1, 0xf4, 0xff, 0x86, 0x00, 0x00, 0xe1, 0xf3, 
+        0xff, 0xd1, 0xf3, 0xff, 0x60, 0x22, 0x11, 0x20, 0x24, 0x80, 0xe0, 0x22, 0x11, 0xc5, 0x62, 0x0b, 
+        0x51, 0xf1, 0xff, 0x0c, 0x04, 0xc5, 0xdd, 0x0a, 0x45, 0xf4, 0x0a, 0x29, 0x01, 0x31, 0xee, 0xff, 
+        0x2d, 0x0e, 0x85, 0x79, 0x0a, 0x3d, 0x02, 0x28, 0x01, 0x45, 0x8f, 0x0a, 0x31, 0xec, 0xff, 0x05, 
+        0x53, 0x0a, 0xed, 0x02, 0x45, 0x9e, 0x0a, 0x22, 0x4c, 0x00, 0x20, 0x20, 0x74, 0x05, 0x5c, 0x0b, 
+        0x3d, 0x02, 0x2d, 0x0e, 0x05, 0x60, 0x0a, 0x3d, 0x0d, 0x05, 0x77, 0x0a, 0xed, 0x02, 0xc5, 0x9c, 
+        0x0a, 0x22, 0x4c, 0x01, 0x20, 0x20, 0x74, 0x85, 0x5a, 0x0b, 0x3d, 0x02, 0x2d, 0x0e, 0x85, 0x5e, 
+        0x0a, 0x3d, 0x0d, 0x85, 0x75, 0x0a, 0x45, 0x9b, 0x0a, 0x08, 0x11, 0xd8, 0x31, 0x22, 0x4c, 0x02, 
+        0xe8, 0x41, 0xc8, 0x21, 0x12, 0xc1, 0x20, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x91, 0x43, 0x10, 0x40, 
+        0xb4, 0x09, 0x00, 0x00, 0xf3, 0x43, 0x10, 0x40, 0xb8, 0x8b, 0xfe, 0x3f, 0x31, 0x45, 0x10, 0x40, 
+        0x6c, 0x09, 0x00, 0x00, 0xa8, 0x09, 0x00, 0x00, 0xa3, 0x09, 0x00, 0x00, 0x9e, 0x09, 0x00, 0x00, 
+        0x99, 0x09, 0x00, 0x00, 0x94, 0x09, 0x00, 0x00, 0x8f, 0x09, 0x00, 0x00, 0x8a, 0x09, 0x00, 0x00, 
+        0x85, 0x09, 0x00, 0x00, 0x80, 0x09, 0x00, 0x00, 0x7b, 0x09, 0x00, 0x00, 0x76, 0x09, 0x00, 0x00, 
+        0x71, 0x09, 0x00, 0x00, 0x12, 0xc1, 0xd0, 0xc9, 0x61, 0x49, 0xa1, 0x69, 0x41, 0x39, 0x31, 0x09, 
+        0x51, 0xe9, 0x81, 0xd9, 0x71, 0xf9, 0x91, 0xdd, 0x02, 0xfd, 0x04, 0x2d, 0x05, 0x29, 0x21, 0xa6, 
+        0x1d, 0x0c, 0x0c, 0xd0, 0xd7, 0x20, 0x07, 0x0b, 0xed, 0xe0, 0xe0, 0x74, 0x46, 0x00, 0x00, 0x0c, 
+        0xde, 0x41, 0x91, 0xfe, 0xc1, 0xb9, 0xf6, 0x31, 0x37, 0xf0, 0xc0, 0x20, 0x00, 0x22, 0x23, 0xf2, 
+        0x40, 0x22, 0x20, 0xc0, 0x20, 0x00, 0x08, 0x0c, 0x02, 0x20, 0x37, 0x22, 0x63, 0xf2, 0xc0, 0x00, 
+        0x00, 0x0c, 0xe5, 0x57, 0xbd, 0x34, 0x71, 0xd9, 0xff, 0xd0, 0x6d, 0x90, 0x7a, 0x66, 0xa0, 0x06, 
+        0x00, 0x86, 0x09, 0x00, 0xc6, 0x79, 0x00, 0x06, 0x91, 0x00, 0x46, 0x8e, 0x00, 0x86, 0x8b, 0x00, 
+        0xc6, 0x88, 0x00, 0x06, 0x86, 0x00, 0x46, 0x83, 0x00, 0x86, 0x80, 0x00, 0xc6, 0x7d, 0x00, 0x06, 
+        0x7b, 0x00, 0x46, 0x78, 0x00, 0x86, 0x75, 0x00, 0xc6, 0x72, 0x00, 0x81, 0xcd, 0xff, 0x89, 0x11, 
+        0x56, 0x9f, 0x05, 0x98, 0x31, 0x3c, 0xb0, 0xf6, 0x29, 0x52, 0x0b, 0xa9, 0x56, 0xea, 0x13, 0x42, 
+        0xaf, 0xb7, 0xb2, 0xaf, 0x83, 0xa2, 0xa0, 0x76, 0x5c, 0xe3, 0x5c, 0xd9, 0x5c, 0xc5, 0x5c, 0xb6, 
+        0x0c, 0xee, 0xe7, 0x3d, 0x02, 0x86, 0x83, 0x00, 0x21, 0xc3, 0xff, 0xd0, 0xfd, 0x90, 0x2a, 0xff, 
+        0xa0, 0x0f, 0x00, 0x06, 0x80, 0x00, 0x06, 0x20, 0x00, 0x86, 0x82, 0x00, 0x46, 0xad, 0x00, 0xc6, 
+        0xa9, 0x00, 0x06, 0xa6, 0x00, 0x06, 0x83, 0x00, 0x86, 0xa2, 0x00, 0x46, 0x9e, 0x00, 0x46, 0x9a, 
+        0x00, 0xc6, 0x96, 0x00, 0x86, 0x92, 0x00, 0x06, 0x8f, 0x00, 0x86, 0x8b, 0x00, 0x00, 0x0e, 0x40, 
+        0x38, 0x21, 0xd8, 0x41, 0x38, 0x03, 0xd0, 0xde, 0xa0, 0x30, 0x30, 0x91, 0x07, 0xe3, 0x35, 0x4d, 
+        0x0f, 0x38, 0x31, 0x28, 0x11, 0x5d, 0x01, 0x85, 0xe1, 0xff, 0x00, 0x1e, 0x40, 0x0c, 0x12, 0x08, 
+        0x21, 0x32, 0x01, 0x02, 0x52, 0x01, 0x01, 0x42, 0x01, 0x00, 0x80, 0x55, 0x11, 0x00, 0x44, 0x11, 
+        0x50, 0x44, 0x20, 0x40, 0x33, 0x20, 0x39, 0x0d, 0xf8, 0x00, 0x00, 0x22, 0xa1, 0x20, 0xff, 0x20, 
+        0xf9, 0x00, 0x06, 0x08, 0x00, 0x78, 0x0d, 0x70, 0x70, 0xf5, 0x72, 0x41, 0x00, 0x68, 0x0d, 0x60, 
+        0x68, 0x41, 0x62, 0x41, 0x01, 0x08, 0x0d, 0x06, 0x02, 0x00, 0x62, 0x41, 0x00, 0x32, 0xaf, 0xb1, 
+        0x32, 0x41, 0x01, 0x02, 0x41, 0x02, 0x08, 0x0c, 0x02, 0x20, 0x38, 0x2d, 0x01, 0xc0, 0x00, 0x00, 
+        0x08, 0x0c, 0x02, 0x20, 0x36, 0xc0, 0x00, 0x00, 0x22, 0xa0, 0x62, 0x0c, 0x13, 0x0c, 0x04, 0x0c, 
+        0x45, 0x08, 0x0c, 0x0c, 0x06, 0x02, 0x20, 0x27, 0x0c, 0x87, 0xc0, 0x00, 0x00, 0x0c, 0x0d, 0xf2, 
+        0xa0, 0x63, 0xe2, 0xa0, 0x64, 0x1c, 0x42, 0x01, 0x02, 0xf1, 0xc0, 0x00, 0x00, 0x22, 0xa0, 0x62, 
+        0x0c, 0x13, 0x0c, 0x74, 0x08, 0x0c, 0x0c, 0x75, 0x02, 0x20, 0x25, 0x0c, 0x76, 0xc0, 0x00, 0x00, 
+        0xdc, 0x22, 0xf7, 0x9d, 0x08, 0x21, 0x88, 0xff, 0x01, 0x88, 0xf6, 0xc0, 0x00, 0x00, 0x1b, 0xdd, 
+        0xd0, 0xd0, 0x74, 0xe7, 0x9d, 0xce, 0x08, 0x11, 0x31, 0x32, 0xfe, 0xc0, 0x20, 0x00, 0x21, 0xd5, 
+        0xef, 0xf2, 0x22, 0xf2, 0x30, 0xff, 0x10, 0xc0, 0x20, 0x00, 0xc8, 0x61, 0xd8, 0x71, 0xf2, 0x62, 
+        0xf2, 0xe8, 0x81, 0xf8, 0x91, 0x2d, 0x00, 0x08, 0x51, 0x12, 0xc1, 0x30, 0x0d, 0xf0, 0x3c, 0x04, 
+        0x3c, 0x2e, 0x32, 0xa0, 0x66, 0xb2, 0xaf, 0x91, 0x52, 0xaf, 0xbb, 0x6c, 0x69, 0x1c, 0x16, 0x3c, 
+        0x1a, 0x0c, 0xe7, 0x77, 0xbd, 0x34, 0xf1, 0x75, 0xff, 0xd0, 0x8d, 0x90, 0xfa, 0x88, 0xa0, 0x08, 
+        0x00, 0x86, 0x09, 0x00, 0x06, 0x0f, 0x00, 0xc6, 0x09, 0x00, 0xc6, 0x3c, 0x00, 0x06, 0x3d, 0x00, 
+        0x46, 0x40, 0x00, 0x46, 0x08, 0x00, 0x46, 0x27, 0x00, 0x86, 0x27, 0x00, 0x86, 0x3b, 0x00, 0x06, 
+        0x27, 0x00, 0x46, 0x33, 0x00, 0x86, 0x33, 0x00, 0x86, 0x05, 0x00, 0x4d, 0x0e, 0x62, 0xaf, 0xcc, 
+        0xbd, 0x06, 0x5d, 0x06, 0x0d, 0x0b, 0xad, 0x04, 0x3d, 0x05, 0x4d, 0x0a, 0x02, 0x41, 0x01, 0x06, 
+        0x01, 0x00, 0x4d, 0x0e, 0x32, 0x41, 0x01, 0x0d, 0x03, 0x42, 0x41, 0x00, 0xc6, 0xc0, 0xff, 0x01, 
+        0x60, 0xff, 0x09, 0x11, 0x06, 0x8e, 0xff, 0x21, 0x5f, 0xff, 0x29, 0x11, 0x06, 0x8c, 0xff, 0x31, 
+        0x5e, 0xff, 0x39, 0x11, 0x06, 0x8a, 0xff, 0x41, 0x5d, 0xff, 0x49, 0x11, 0x06, 0x88, 0xff, 0x51, 
+        0x5c, 0xff, 0x59, 0x11, 0x06, 0x86, 0xff, 0x61, 0x5b, 0xff, 0x69, 0x11, 0x06, 0x84, 0xff, 0x71, 
+        0x5a, 0xff, 0x79, 0x11, 0x06, 0x82, 0xff, 0x81, 0x59, 0xff, 0x89, 0x11, 0x06, 0x80, 0xff, 0x91, 
+        0x58, 0xff, 0x99, 0x11, 0x06, 0x7e, 0xff, 0xa1, 0x57, 0xff, 0xa9, 0x11, 0x06, 0x7c, 0xff, 0xb1, 
+        0x56, 0xff, 0xb9, 0x11, 0x06, 0x7a, 0xff, 0x01, 0x55, 0xff, 0x09, 0x11, 0x06, 0x78, 0xff, 0x21, 
+        0x54, 0xff, 0x29, 0x11, 0x06, 0x76, 0xff, 0x6d, 0x03, 0xbd, 0x06, 0x3d, 0x06, 0x9d, 0x0b, 0x4d, 
+        0x0a, 0x92, 0x41, 0x01, 0xc6, 0xdf, 0xff, 0x0d, 0x0a, 0x32, 0xa0, 0x62, 0x5c, 0xf4, 0x42, 0x41, 
+        0x00, 0x32, 0x41, 0x01, 0xc6, 0x9e, 0xff, 0x62, 0x41, 0x00, 0x02, 0xaf, 0xdf, 0x7c, 0x25, 0x52, 
+        0x41, 0x01, 0x46, 0x9b, 0xff, 0x52, 0x41, 0x00, 0x02, 0xa0, 0x6f, 0x7c, 0x96, 0x62, 0x41, 0x01, 
+        0xc6, 0x97, 0xff, 0x5d, 0x06, 0x0d, 0x05, 0x3d, 0x05, 0x4d, 0x0e, 0x02, 0x41, 0x01, 0x46, 0xd1, 
+        0xff, 0x3d, 0x05, 0x9d, 0x03, 0x5d, 0x03, 0x0d, 0x09, 0xad, 0x04, 0x46, 0xca, 0xff, 0x3d, 0x05, 
+        0x9d, 0x03, 0x46, 0xea, 0xff, 0x5d, 0x06, 0x0d, 0x05, 0xc6, 0xc6, 0xff, 0x32, 0x41, 0x00, 0x6c, 
+        0xc0, 0x32, 0xaf, 0xc4, 0x06, 0x8a, 0xff, 0x32, 0x41, 0x00, 0xb2, 0x41, 0x01, 0x4c, 0x80, 0x06, 
+        0x88, 0xff, 0x32, 0x41, 0x00, 0x02, 0xaf, 0xa4, 0x4c, 0x17, 0x72, 0x41, 0x01, 0x86, 0x84, 0xff, 
+        0x0c, 0x00, 0x02, 0x41, 0x01, 0x32, 0x41, 0x00, 0xc6, 0x81, 0xff, 0x0d, 0x06, 0x3d, 0x09, 0x82, 
+        0xaf, 0xbe, 0x82, 0x41, 0x01, 0x06, 0xfb, 0xff, 0x92, 0x41, 0x00, 0x02, 0xa0, 0x7c, 0x02, 0x41, 
+        0x01, 0x0d, 0x04, 0x06, 0x7b, 0xff, 0x92, 0x41, 0x00, 0x1c, 0x34, 0xc6, 0xfb, 0xff, 0x52, 0x41, 
+        0x00, 0x42, 0x41, 0x01, 0x02, 0xaf, 0xcb, 0x06, 0x76, 0xff, 0x52, 0x41, 0x00, 0xa2, 0x41, 0x01, 
+        0x2c, 0x70, 0x46, 0x73, 0xff, 0x0d, 0x0b, 0x52, 0x41, 0x00, 0x3c, 0x49, 0x92, 0x41, 0x01, 0x06, 
+        0x70, 0xff, 0x00, 0x00, 0xb4, 0xf6, 0xfe, 0x3f, 0x11, 0x47, 0x10, 0x40, 0x60, 0x09, 0x00, 0x00, 
+        0x08, 0x52, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x81, 0xfb, 0xff, 0x9d, 0x04, 0x12, 0xc1, 0xe0, 
+        0xc9, 0x11, 0xe9, 0x31, 0xf9, 0x41, 0x09, 0x01, 0xd9, 0x21, 0x4d, 0x05, 0xdd, 0x02, 0x22, 0x48, 
+        0x0c, 0x5d, 0x06, 0x99, 0x51, 0x6d, 0x07, 0x72, 0x11, 0x10, 0x85, 0xc3, 0xff, 0xfd, 0x02, 0x08, 
+        0x51, 0x0c, 0xe9, 0x97, 0xbd, 0x34, 0xb1, 0xf0, 0xff, 0xd0, 0xad, 0x90, 0xba, 0xaa, 0xa0, 0x0a, 
+        0x00, 0x86, 0x09, 0x00, 0x86, 0x2a, 0x00, 0xc6, 0x44, 0x00, 0xc6, 0x41, 0x00, 0xc6, 0x3e, 0x00, 
+        0xc6, 0x3b, 0x00, 0xc6, 0x38, 0x00, 0xc6, 0x35, 0x00, 0xc6, 0x32, 0x00, 0xc6, 0x2f, 0x00, 0xc6, 
+        0x2c, 0x00, 0xc6, 0x29, 0x00, 0xc6, 0x26, 0x00, 0xc6, 0x23, 0x00, 0xc2, 0xa0, 0x6a, 0xe2, 0xa1, 
+        0x08, 0xbc, 0xf0, 0x01, 0xc1, 0xf5, 0x21, 0xb8, 0xf0, 0xc0, 0x20, 0x00, 0x22, 0x22, 0x9c, 0x17, 
+        0xe2, 0x16, 0x22, 0xa0, 0x67, 0x01, 0xbc, 0xf5, 0x0c, 0x43, 0x08, 0x00, 0x0c, 0x74, 0x02, 0x20, 
+        0x26, 0x0c, 0x45, 0xc0, 0x00, 0x00, 0x01, 0xb8, 0xf5, 0xe0, 0x3f, 0x82, 0x0c, 0x12, 0x08, 0x00, 
+        0x41, 0xd7, 0xff, 0x02, 0x20, 0x1f, 0x40, 0x4e, 0xc1, 0xc0, 0x00, 0x00, 0x0c, 0x52, 0x01, 0x50, 
+        0xf0, 0xc0, 0x00, 0x00, 0xf0, 0x3f, 0x20, 0xd0, 0x2d, 0x20, 0x71, 0xd2, 0xff, 0x81, 0xd0, 0xff, 
+        0x61, 0xc3, 0xf3, 0x8a, 0x8c, 0xf0, 0x88, 0x01, 0xc0, 0x20, 0x00, 0x52, 0x26, 0x45, 0x50, 0x50, 
+        0xc4, 0x80, 0x55, 0x20, 0x70, 0x55, 0x20, 0xc0, 0x20, 0x00, 0x52, 0x66, 0x45, 0x05, 0x29, 0xfe, 
+        0xc5, 0x56, 0xfe, 0xc8, 0x11, 0xd8, 0x21, 0xe8, 0x31, 0xf8, 0x41, 0x08, 0x01, 0x12, 0xc1, 0x20, 
+        0x0d, 0xf0, 0xc2, 0xa2, 0xe1, 0xe2, 0xa1, 0x09, 0x46, 0xdd, 0xff, 0xc2, 0xa0, 0xd1, 0xe2, 0xa1, 
+        0x08, 0x06, 0xdb, 0xff, 0xc2, 0xa0, 0xfc, 0xe2, 0xa1, 0x08, 0xc6, 0xd8, 0xff, 0xc2, 0xa1, 0x27, 
+        0xe2, 0xa1, 0x02, 0x86, 0xd6, 0xff, 0xc2, 0xa1, 0x53, 0xe2, 0xa1, 0x01, 0x46, 0xd4, 0xff, 0xc2, 
+        0xa1, 0x7e, 0xe2, 0xa1, 0x08, 0x06, 0xd2, 0xff, 0xc2, 0xa1, 0xaa, 0xe2, 0xa1, 0x1b, 0xc6, 0xcf, 
+        0xff, 0xc2, 0xa1, 0xd6, 0xe2, 0xa0, 0xff, 0x86, 0xcd, 0xff, 0xc2, 0xa2, 0x02, 0xe2, 0xa1, 0x0d, 
+        0x46, 0xcb, 0xff, 0xc2, 0xa2, 0x2e, 0xe2, 0xa1, 0x09, 0x06, 0xc9, 0xff, 0xc2, 0xa2, 0x5a, 0xe2, 
+        0xa1, 0x09, 0xc6, 0xc6, 0xff, 0xc2, 0xa2, 0x87, 0xe2, 0xa1, 0x08, 0x86, 0xc4, 0xff, 0xe2, 0xa1, 
+        0x05, 0xc2, 0xa2, 0xb4, 0x46, 0xc2, 0xff, 0x00, 0xd8, 0x8b, 0xfe, 0x3f, 0x42, 0xc2, 0xff, 0x12, 
+        0xc1, 0xe0, 0x02, 0x61, 0x04, 0xd2, 0x61, 0x06, 0x00, 0x14, 0x40, 0xc9, 0x51, 0x7c, 0xf4, 0xcd, 
+        0x02, 0xdd, 0x03, 0x21, 0xcd, 0xfc, 0x0c, 0x13, 0x00, 0x33, 0xa1, 0x40, 0x33, 0x30, 0x08, 0x12, 
+        0x4d, 0x0d, 0x30, 0x00, 0x10, 0x09, 0x12, 0x3d, 0x0c, 0x21, 0xf3, 0xff, 0x01, 0xa3, 0xf5, 0xc0, 
+        0x00, 0x00, 0x5d, 0x0d, 0x2d, 0x0c, 0x0c, 0x04, 0x61, 0xf5, 0xf9, 0x31, 0x17, 0xfc, 0x72, 0xa0, 
+        0x64, 0x32, 0x03, 0x01, 0x79, 0x01, 0x4b, 0x76, 0xc5, 0xe4, 0xff, 0x2d, 0x0c, 0x45, 0x13, 0xfe, 
+        0xc8, 0x51, 0xd8, 0x61, 0x08, 0x41, 0x12, 0xc1, 0x20, 0x0d, 0xf0, 0x00, 0x54, 0xf7, 0xfe, 0x3f, 
+        0x12, 0xc1, 0xe0, 0xc2, 0x61, 0x06, 0x09, 0x51, 0xcd, 0x02, 0x45, 0x9c, 0xfd, 0x0c, 0x04, 0x02, 
+        0xa0, 0x64, 0x31, 0x09, 0xfc, 0x51, 0xf9, 0xff, 0x29, 0x41, 0x61, 0xe4, 0xf9, 0x2d, 0x0c, 0x4b, 
+        0x76, 0x52, 0x95, 0x00, 0x32, 0x03, 0x01, 0x09, 0x01, 0xc5, 0xe0, 0xff, 0x2d, 0x0c, 0x45, 0x0f, 
+        0xfe, 0x28, 0x41, 0xc5, 0x97, 0xfd, 0xc8, 0x61, 0x08, 0x51, 0x12, 0xc1, 0x20, 0x0d, 0xf0, 0x00, 
+        0x00, 0x00, 0x00, 0x30, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x1c, 0xff, 0xff, 0xff, 0xcf, 
+        0x61, 0x57, 0xf6, 0x12, 0xc1, 0xf0, 0x09, 0x11, 0x29, 0x01, 0xc9, 0x21, 0xd9, 0x31, 0x51, 0xd1, 
+        0xee, 0xd1, 0xc3, 0xed, 0xc1, 0x51, 0xf5, 0xc0, 0x20, 0x00, 0x42, 0x25, 0xfa, 0x60, 0x44, 0x10, 
+        0xc0, 0x20, 0x00, 0x42, 0x65, 0xfa, 0x31, 0xa6, 0xfc, 0xc0, 0x20, 0x00, 0x22, 0x2d, 0x44, 0x30, 
+        0x22, 0x20, 0xc0, 0x20, 0x00, 0x0c, 0x23, 0x0c, 0x04, 0x2c, 0x75, 0x08, 0x0c, 0x22, 0x6d, 0x44, 
+        0x02, 0x20, 0x26, 0x22, 0xa0, 0x6a, 0xc0, 0x00, 0x00, 0x08, 0x0c, 0x02, 0x20, 0x35, 0xc0, 0x00, 
+        0x00, 0x21, 0xe7, 0xff, 0x31, 0x39, 0xf0, 0xc0, 0x20, 0x00, 0x02, 0x2d, 0x44, 0x20, 0x00, 0x20, 
+        0xc0, 0x20, 0x00, 0x02, 0x6d, 0x44, 0xb1, 0xe3, 0xff, 0xa1, 0xe3, 0xff, 0xc0, 0x20, 0x00, 0x61, 
+        0xb9, 0xee, 0x92, 0x26, 0xe8, 0xb0, 0x99, 0x10, 0xa0, 0x99, 0x20, 0xc0, 0x20, 0x00, 0x92, 0x66, 
+        0xe8, 0x81, 0xde, 0xff, 0x71, 0x92, 0xf9, 0xc0, 0x20, 0x00, 0x52, 0x26, 0xe6, 0x80, 0x55, 0x10, 
+        0x70, 0x55, 0x20, 0xc0, 0x20, 0x00, 0x52, 0x66, 0xe6, 0x7c, 0xd4, 0xc0, 0x20, 0x00, 0x22, 0x23, 
+        0x9c, 0x40, 0x22, 0x10, 0xc0, 0x20, 0x00, 0x22, 0x63, 0x9c, 0x0c, 0x22, 0x01, 0xc9, 0xef, 0xc0, 
+        0x00, 0x00, 0x08, 0x0c, 0x02, 0x20, 0x28, 0xc0, 0x00, 0x00, 0x0c, 0x22, 0x08, 0x0c, 0x0c, 0x13, 
+        0x02, 0x20, 0x2b, 0x42, 0xa0, 0x81, 0xc0, 0x00, 0x00, 0x31, 0x3e, 0xf3, 0xc0, 0x20, 0x00, 0x22, 
+        0x2d, 0x44, 0x30, 0x22, 0x20, 0xc0, 0x20, 0x00, 0x08, 0x0c, 0x02, 0x20, 0x32, 0x22, 0x6d, 0x44, 
+        0xc0, 0x00, 0x00, 0x22, 0xa0, 0x6a, 0x0c, 0x23, 0x08, 0x0c, 0x0c, 0x04, 0x02, 0x20, 0x26, 0x2c, 
+        0x45, 0xc0, 0x00, 0x00, 0x08, 0x0c, 0x02, 0x20, 0x31, 0xc0, 0x00, 0x00, 0x22, 0xa0, 0x6a, 0x0c, 
+        0x23, 0x08, 0x0c, 0x0c, 0x04, 0x02, 0x20, 0x26, 0x2c, 0x55, 0xc0, 0x00, 0x00, 0x08, 0x0c, 0x02, 
+        0x20, 0x2f, 0xd8, 0x01, 0xc0, 0x00, 0x00, 0x62, 0xa9, 0xff, 0x31, 0xb2, 0xed, 0xc0, 0x20, 0x00, 
+        0x52, 0x23, 0xd0, 0x60, 0x55, 0x10, 0xc0, 0x20, 0x00, 0x52, 0x63, 0xd0, 0x7c, 0x34, 0xc0, 0x20, 
+        0x00, 0x22, 0x23, 0xd0, 0x40, 0x22, 0x10, 0xc0, 0x20, 0x00, 0x22, 0x63, 0xd0, 0x2d, 0x0d, 0x05, 
+        0xe7, 0xff, 0x08, 0x0c, 0x02, 0x20, 0x23, 0xc0, 0x00, 0x00, 0x22, 0xa0, 0x6b, 0x0c, 0x23, 0x08, 
+        0x0c, 0x0c, 0x14, 0x02, 0x20, 0x26, 0x4c, 0x85, 0xc0, 0x00, 0x00, 0x08, 0x0c, 0x02, 0x20, 0x22, 
+        0xc0, 0x00, 0x00, 0x22, 0xa0, 0x6c, 0x0c, 0x23, 0x0c, 0x04, 0x0c, 0x05, 0x08, 0x0c, 0x0c, 0x06, 
+        0x02, 0x20, 0x27, 0x0c, 0x17, 0xc0, 0x00, 0x00, 0x22, 0xa0, 0x6c, 0x0c, 0x23, 0x0c, 0x04, 0x0c, 
+        0x25, 0x08, 0x0c, 0x0c, 0x26, 0x02, 0x20, 0x27, 0x0c, 0x17, 0xc0, 0x00, 0x00, 0x08, 0x0c, 0x02, 
+        0x20, 0x13, 0xc0, 0x00, 0x00, 0x22, 0xa0, 0x77, 0x0c, 0x03, 0x1c, 0xa4, 0x0c, 0x45, 0x08, 0x0c, 
+        0x0c, 0x46, 0x02, 0x20, 0x27, 0x0c, 0x07, 0xc0, 0x00, 0x00, 0x22, 0xa0, 0x77, 0x0c, 0x03, 0x1c, 
+        0xa4, 0x0c, 0x55, 0x08, 0x0c, 0x0c, 0x56, 0x02, 0x20, 0x27, 0x0c, 0x07, 0xc0, 0x00, 0x00, 0x22, 
+        0xa0, 0x77, 0x0c, 0x03, 0x1c, 0xa4, 0x0c, 0x45, 0x08, 0x0c, 0x0c, 0x46, 0x02, 0x20, 0x27, 0x0c, 
+        0x17, 0xc0, 0x00, 0x00, 0x22, 0xa0, 0x77, 0x0c, 0x03, 0x1c, 0xa4, 0x0c, 0x55, 0x08, 0x0c, 0x0c, 
+        0x56, 0x02, 0x20, 0x27, 0x0c, 0x17, 0xc0, 0x00, 0x00, 0x0c, 0x02, 0xc8, 0x21, 0xd8, 0x31, 0x08, 
+        0x11, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0x26, 0x42, 0x14, 0x26, 0xb2, 0x09, 0x1c, 0x23, 
+        0x37, 0x12, 0x10, 0x1c, 0x44, 0x47, 0x12, 0x03, 0x0c, 0x12, 0x0d, 0xf0, 0x0c, 0x32, 0x0d, 0xf0, 
+        0x0c, 0x02, 0x0d, 0xf0, 0x0c, 0x22, 0x0d, 0xf0, 0x8c, 0xf2, 0x26, 0x12, 0x05, 0x26, 0x22, 0x0e, 
+        0x26, 0x32, 0x03, 0x1c, 0x02, 0x0d, 0xf0, 0x1c, 0x42, 0x0d, 0xf0, 0x0c, 0x42, 0x0d, 0xf0, 0x1c, 
+        0x22, 0x0d, 0xf0, 0x00, 0x22, 0x80, 0xfe, 0x3f, 0x12, 0xc1, 0xf0, 0x09, 0x11, 0x01, 0xc6, 0xf4, 
+        0x21, 0xfd, 0xff, 0x08, 0x00, 0x22, 0x12, 0x00, 0x02, 0x20, 0x29, 0x20, 0x20, 0x44, 0xc0, 0x00, 
+        0x00, 0x01, 0xc1, 0xf4, 0x0c, 0x12, 0x08, 0x00, 0x0c, 0x13, 0x02, 0x20, 0x2b, 0x1c, 0xf4, 0xc0, 
+        0x00, 0x00, 0x21, 0xf4, 0xff, 0x3d, 0x01, 0x22, 0x12, 0x00, 0xc5, 0x0b, 0x00, 0x01, 0xba, 0xf4, 
+        0x08, 0x00, 0x02, 0x20, 0x2a, 0xc0, 0x00, 0x00, 0x08, 0x11, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 
+        0xff, 0x00, 0xf0, 0xff, 0xff, 0x3f, 0x00, 0xf0, 0x00, 0xc0, 0xff, 0xff, 0x80, 0x92, 0x11, 0x81, 
+        0xfc, 0xff, 0x71, 0x30, 0xee, 0xb1, 0xfb, 0xff, 0xa1, 0xfc, 0xff, 0x12, 0xc1, 0xf0, 0xc9, 0x11, 
+        0xe9, 0x31, 0x09, 0x01, 0xd9, 0x21, 0x0c, 0x00, 0x1c, 0x8d, 0x70, 0x50, 0xa0, 0xc0, 0x20, 0x00, 
+        0x42, 0x25, 0xc1, 0x80, 0x44, 0x10, 0x90, 0x44, 0x20, 0xc0, 0x20, 0x00, 0x42, 0x65, 0xc1, 0x00, 
+        0x21, 0x41, 0x70, 0x22, 0xa0, 0x62, 0x03, 0x01, 0x52, 0x03, 0x00, 0x80, 0x66, 0x01, 0x80, 0x55, 
+        0x01, 0x50, 0x58, 0x31, 0x60, 0x68, 0x31, 0x07, 0x60, 0x1d, 0x20, 0xe5, 0x11, 0xb0, 0x46, 0x01, 
+        0xc0, 0x20, 0x00, 0xc2, 0x22, 0x81, 0xb0, 0xcc, 0x10, 0x40, 0xcc, 0x20, 0xe0, 0xcc, 0x20, 0xc0, 
+        0x20, 0x00, 0xc2, 0x62, 0x81, 0xc6, 0x05, 0x00, 0x90, 0x46, 0x11, 0xc0, 0x20, 0x00, 0xe2, 0x22, 
+        0x81, 0xa0, 0xee, 0x10, 0x40, 0xee, 0x20, 0x50, 0xee, 0x20, 0xc0, 0x20, 0x00, 0xe2, 0x62, 0x81, 
+        0x1b, 0x00, 0x00, 0x00, 0x74, 0xd7, 0x90, 0x91, 0xc8, 0x11, 0xd8, 0x21, 0xe8, 0x31, 0x08, 0x01, 
+        0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x20, 0x20, 0x44, 0x12, 0xc1, 0xf0, 0xc9, 0x11, 
+        0x09, 0x01, 0xcd, 0x03, 0x05, 0xec, 0xff, 0x0c, 0x23, 0x01, 0x87, 0xf4, 0x5d, 0x02, 0x61, 0xd6, 
+        0xfb, 0x0c, 0x02, 0x60, 0x55, 0x90, 0x62, 0x15, 0x20, 0x62, 0x4c, 0x00, 0x42, 0x0c, 0x00, 0x52, 
+        0x15, 0x20, 0x80, 0x44, 0x01, 0x50, 0x58, 0x41, 0x52, 0x4c, 0x01, 0x08, 0x00, 0x40, 0x48, 0x31, 
+        0x02, 0x20, 0x2b, 0x40, 0x40, 0xf4, 0xc0, 0x00, 0x00, 0x0c, 0x12, 0x0c, 0x23, 0x42, 0x0c, 0x01, 
+        0x01, 0x7a, 0xf4, 0x80, 0x44, 0x01, 0x08, 0x00, 0x40, 0x48, 0x31, 0x02, 0x20, 0x2b, 0x40, 0x40, 
+        0xf4, 0xc0, 0x00, 0x00, 0xc8, 0x11, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0x00, 
+        0x12, 0xc1, 0xe0, 0x29, 0x41, 0x09, 0x71, 0x2d, 0x01, 0x45, 0x44, 0x00, 0x0c, 0x33, 0x22, 0x11, 
+        0x03, 0x92, 0x11, 0x05, 0x42, 0x11, 0x04, 0x82, 0x11, 0x07, 0x52, 0x11, 0x06, 0x72, 0x11, 0x02, 
+        0x01, 0x6a, 0xf4, 0x62, 0x11, 0x01, 0x08, 0x00, 0x7a, 0x66, 0x8a, 0x55, 0x9a, 0x44, 0x08, 0xe0, 
+        0x40, 0x44, 0x90, 0x50, 0x55, 0x90, 0x6a, 0x22, 0x50, 0x22, 0xd0, 0x50, 0x44, 0xc0, 0x00, 0x44, 
+        0x11, 0x00, 0x22, 0x11, 0x20, 0x20, 0x31, 0x40, 0x40, 0x31, 0x49, 0x51, 0xc0, 0x00, 0x00, 0x01, 
+        0x5e, 0xf4, 0x0c, 0x33, 0x08, 0x00, 0x29, 0x61, 0x08, 0xe0, 0x28, 0x51, 0xc0, 0x00, 0x00, 0x38, 
+        0x61, 0x08, 0x71, 0x20, 0x33, 0xc0, 0x28, 0x41, 0x12, 0xc1, 0x20, 0x3a, 0x22, 0x00, 0x22, 0x11, 
+        0x20, 0x20, 0x31, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0xad, 0x06, 0xbd, 0x05, 0x9d, 0x03, 0x82, 0xaf, 
+        0x79, 0x12, 0xc1, 0xd0, 0xf9, 0x81, 0x09, 0x41, 0xd9, 0x61, 0xc9, 0x51, 0xe9, 0x71, 0xcd, 0x02, 
+        0xed, 0x04, 0xd2, 0xd1, 0xff, 0x0c, 0x04, 0xd2, 0xcd, 0x7d, 0xda, 0x24, 0x16, 0x34, 0x05, 0x26, 
+        0x14, 0x4a, 0x26, 0x24, 0x41, 0x26, 0x34, 0x38, 0x26, 0x44, 0x24, 0x26, 0x54, 0x1b, 0x26, 0x64, 
+        0x12, 0x26, 0x74, 0x09, 0x4a, 0x0c, 0x8a, 0x00, 0x02, 0x00, 0x7f, 0x06, 0x05, 0x00, 0x02, 0x0c, 
+        0x00, 0x86, 0x03, 0x00, 0x02, 0x0c, 0x02, 0x06, 0x02, 0x00, 0x02, 0x0c, 0x04, 0x86, 0x00, 0x00, 
+        0x02, 0x0c, 0x06, 0x02, 0x42, 0x83, 0x1b, 0x44, 0x40, 0x40, 0x74, 0x66, 0xb4, 0xbb, 0xc6, 0x05, 
+        0x00, 0x02, 0x0c, 0x00, 0xc6, 0xfa, 0xff, 0x02, 0x0c, 0x01, 0x46, 0xf9, 0xff, 0x02, 0x0c, 0x03, 
+        0xc6, 0xf7, 0xff, 0x02, 0x0c, 0x05, 0x46, 0xf6, 0xff, 0x22, 0xa0, 0x77, 0x0c, 0x03, 0x0c, 0x94, 
+        0x0c, 0x75, 0x0c, 0x06, 0x0c, 0x07, 0x01, 0x30, 0xf4, 0x99, 0x91, 0x08, 0x00, 0xa9, 0xa1, 0x02, 
+        0x20, 0x27, 0xb9, 0xb1, 0xc0, 0x00, 0x00, 0x28, 0xa1, 0x38, 0x91, 0x0c, 0x04, 0x1c, 0x8b, 0x61, 
+        0xa9, 0xed, 0xa2, 0xaf, 0x00, 0x08, 0xb1, 0xf1, 0x47, 0xfe, 0x8c, 0xa0, 0x26, 0x24, 0x25, 0x26, 
+        0x34, 0x22, 0x26, 0x64, 0x1f, 0x26, 0x74, 0x1c, 0x0c, 0x05, 0x60, 0x84, 0xa0, 0xf6, 0x84, 0x2e, 
+        0x80, 0x75, 0x01, 0x52, 0x0c, 0x00, 0x70, 0x78, 0x31, 0x7a, 0x55, 0x5a, 0x5e, 0x52, 0x05, 0x00, 
+        0x3a, 0x55, 0x86, 0x0b, 0x00, 0x51, 0xc0, 0xfa, 0x92, 0x0f, 0x0c, 0x82, 0x05, 0x4e, 0x80, 0x99, 
+        0x01, 0x52, 0x05, 0x4d, 0x90, 0x98, 0x31, 0xe6, 0x79, 0xcf, 0x5d, 0x08, 0x86, 0xf2, 0xff, 0xda, 
+        0x54, 0x52, 0x05, 0x7b, 0xea, 0x55, 0x52, 0x05, 0x00, 0x80, 0x55, 0x01, 0x50, 0x58, 0x31, 0x27, 
+        0xa5, 0x01, 0x5d, 0x02, 0x50, 0x90, 0x60, 0x90, 0x90, 0x74, 0xc0, 0x20, 0x00, 0x72, 0x28, 0xc1, 
+        0xa0, 0x77, 0x10, 0x90, 0x77, 0x20, 0xc0, 0x20, 0x00, 0x72, 0x68, 0xc1, 0x1b, 0x44, 0x40, 0x40, 
+        0x74, 0xb7, 0x94, 0x85, 0xc8, 0x51, 0xd8, 0x61, 0xe8, 0x71, 0xf8, 0x81, 0x08, 0x41, 0x12, 0xc1, 
+        0x30, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x03, 0x00, 0xff, 0xff, 0x00, 0xe0, 0x51, 0x17, 0xf2, 0x48, 
+        0x02, 0x81, 0xfc, 0xff, 0x17, 0x74, 0x0b, 0x22, 0x13, 0x00, 0x20, 0x38, 0x41, 0x80, 0x22, 0x01, 
+        0x20, 0x28, 0x31, 0xe0, 0x62, 0x01, 0x80, 0x73, 0x01, 0x80, 0x66, 0x20, 0x81, 0xf7, 0xff, 0xc0, 
+        0x20, 0x00, 0x42, 0x25, 0x98, 0x80, 0x44, 0x10, 0x70, 0x44, 0x20, 0x60, 0x44, 0x20, 0xc0, 0x20, 
+        0x00, 0x42, 0x65, 0x98, 0x0d, 0xf0, 0x00, 0x00, 0x2b, 0x64, 0x82, 0x93, 0x00, 0x00, 0x04, 0x40, 
+        0x80, 0x90, 0xb1, 0x90, 0x88, 0xc0, 0x00, 0x16, 0x40, 0x8a, 0x82, 0x00, 0x25, 0xa1, 0x00, 0x88, 
+        0x11, 0x80, 0x80, 0x31, 0x82, 0x53, 0x00, 0x27, 0x28, 0x11, 0x20, 0x48, 0xc0, 0x80, 0x25, 0x01, 
+        0x20, 0x28, 0x31, 0x42, 0x53, 0x00, 0x0d, 0xf0, 0x0c, 0x02, 0x0d, 0xf0, 0x20, 0x40, 0x60, 0x87, 
+        0x24, 0xf5, 0x2a, 0x48, 0x50, 0x20, 0x60, 0x80, 0x22, 0x01, 0x20, 0x28, 0x31, 0x86, 0xf8, 0xff, 
+        0x22, 0xa0, 0x61, 0x0c, 0x13, 0x0c, 0x24, 0x0c, 0x45, 0x12, 0xc1, 0xf0, 0x09, 0x01, 0x01, 0xde, 
+        0xf3, 0x0c, 0x06, 0x08, 0x00, 0x71, 0xfb, 0xfd, 0x02, 0x20, 0x27, 0x72, 0x07, 0x02, 0xc0, 0x00, 
+        0x00, 0x22, 0xa0, 0x66, 0x0c, 0x33, 0x0c, 0x14, 0x0c, 0x55, 0x01, 0xd7, 0xf3, 0x0c, 0x06, 0x08, 
+        0x00, 0x71, 0xf4, 0xfd, 0x02, 0x20, 0x27, 0x72, 0x07, 0x03, 0xc0, 0x00, 0x00, 0x08, 0x01, 0x12, 
+        0xc1, 0x10, 0x0d, 0xf0, 0xf8, 0x8b, 0xfe, 0x3f, 0x00, 0x8c, 0xfe, 0x3f, 0x12, 0xc1, 0xc0, 0xc9, 
+        0x71, 0xe9, 0x91, 0x69, 0x51, 0x79, 0xd1, 0x49, 0xc1, 0x59, 0x41, 0x09, 0x61, 0x29, 0xb1, 0xd9, 
+        0x81, 0xf9, 0xa1, 0xdd, 0x03, 0xfd, 0x07, 0x22, 0xa1, 0x38, 0x45, 0xd5, 0xff, 0xcd, 0x02, 0xb2, 
+        0xaf, 0x7a, 0xe2, 0x01, 0x40, 0xac, 0x7f, 0xb6, 0x8e, 0x09, 0xea, 0x0d, 0xba, 0x00, 0x02, 0x00, 
+        0x7f, 0x46, 0x00, 0x00, 0x0c, 0x00, 0x21, 0xef, 0xff, 0x58, 0xb1, 0x3d, 0x0e, 0x5a, 0x50, 0x52, 
+        0x05, 0x00, 0x4d, 0x0c, 0xe0, 0x55, 0x11, 0x01, 0x46, 0xec, 0xc0, 0x00, 0x00, 0xb2, 0xaf, 0x7a, 
+        0xb6, 0x8e, 0x09, 0xea, 0x0d, 0xba, 0x00, 0x02, 0x00, 0x7f, 0x46, 0x00, 0x00, 0x0c, 0x00, 0x38, 
+        0x41, 0x28, 0xb1, 0x0c, 0x44, 0x2a, 0x20, 0x22, 0x02, 0x00, 0x0c, 0x15, 0xe0, 0x22, 0x11, 0x20, 
+        0x2c, 0xc0, 0x00, 0x22, 0x11, 0x20, 0x20, 0x31, 0x29, 0x21, 0xc5, 0xee, 0xff, 0xcd, 0x02, 0xd9, 
+        0x31, 0x9c, 0x2f, 0x38, 0x21, 0x21, 0xdb, 0xff, 0x48, 0x41, 0x5d, 0x0c, 0x42, 0x94, 0x00, 0x01, 
+        0x34, 0xec, 0xc0, 0x00, 0x00, 0xd9, 0x31, 0x58, 0x51, 0xd1, 0x26, 0xed, 0x16, 0x75, 0x04, 0x16, 
+        0x4c, 0x04, 0x6d, 0x01, 0x0c, 0x04, 0x08, 0xc1, 0xd0, 0xa4, 0xa0, 0x6a, 0xb4, 0xc0, 0x20, 0x00, 
+        0x1b, 0x94, 0x4a, 0x80, 0xa2, 0x2a, 0xd3, 0xa2, 0x4b, 0x00, 0xc0, 0xaa, 0xc0, 0xa2, 0x4b, 0x00, 
+        0x72, 0x08, 0x00, 0x90, 0x40, 0x74, 0xc0, 0x77, 0xc0, 0x72, 0x48, 0x00, 0x66, 0x64, 0xd8, 0x28, 
+        0x31, 0x0c, 0xd3, 0x51, 0xb8, 0xfd, 0x4d, 0x01, 0x62, 0x05, 0x2c, 0x52, 0x05, 0x2d, 0x80, 0x66, 
+        0x01, 0x60, 0x68, 0x31, 0x05, 0xd0, 0xff, 0x9c, 0x3f, 0xd0, 0x3e, 0xa0, 0x21, 0xc3, 0xff, 0xc0, 
+        0x20, 0x00, 0x32, 0x23, 0xc1, 0x30, 0x30, 0x74, 0x01, 0x1a, 0xec, 0xc0, 0x00, 0x00, 0xc8, 0x71, 
+        0xd8, 0x81, 0xe8, 0x91, 0xf8, 0xa1, 0x08, 0x61, 0x12, 0xc1, 0x40, 0x0d, 0xf0, 0x00, 0x00, 0x00, 
+        0x78, 0xf8, 0xfe, 0x3f, 0xc1, 0xf6, 0xfe, 0x3f, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0x7f, 0xff, 
+        0x12, 0xc1, 0xe0, 0x09, 0x41, 0x51, 0x27, 0xec, 0xc0, 0x20, 0x00, 0x02, 0x25, 0xd8, 0x00, 0x08, 
+        0x45, 0xc0, 0x20, 0x00, 0x52, 0x25, 0xd4, 0xf7, 0xf5, 0x7c, 0x09, 0x01, 0x7d, 0x04, 0x5d, 0x02, 
+        0x6d, 0x03, 0x21, 0xf3, 0xff, 0x31, 0xab, 0xf4, 0x41, 0xf3, 0xff, 0x05, 0xeb, 0xff, 0x61, 0xf2, 
+        0xff, 0x7c, 0xea, 0xc0, 0x20, 0x00, 0x71, 0x1b, 0xec, 0x52, 0x27, 0xd7, 0x60, 0x55, 0x10, 0xc0, 
+        0x20, 0x00, 0x52, 0x67, 0xd7, 0x41, 0xed, 0xff, 0xc0, 0x20, 0x00, 0x32, 0x27, 0xd7, 0x40, 0x33, 
+        0x10, 0xc0, 0x20, 0x00, 0x32, 0x67, 0xd7, 0xc0, 0x20, 0x00, 0x22, 0x27, 0xd4, 0xa0, 0x22, 0x10, 
+        0xc0, 0x20, 0x00, 0x22, 0x67, 0xd4, 0x0c, 0x20, 0xc0, 0x20, 0x00, 0xb2, 0x27, 0xd8, 0x00, 0xbb, 
+        0x20, 0xc0, 0x20, 0x00, 0xb2, 0x67, 0xd8, 0xc0, 0x20, 0x00, 0x92, 0x27, 0xd8, 0xa0, 0x99, 0x10, 
+        0xc0, 0x20, 0x00, 0x92, 0x67, 0xd8, 0xc0, 0x20, 0x00, 0x62, 0x27, 0xd8, 0x0c, 0x18, 0x80, 0x66, 
+        0x20, 0xc0, 0x20, 0x00, 0x62, 0x67, 0xd8, 0x08, 0x41, 0x12, 0xc1, 0x20, 0x0d, 0xf0, 0x00, 0x00, 
+        0x91, 0x01, 0xec, 0x81, 0xf8, 0xed, 0x0c, 0x0b, 0x12, 0xc1, 0xf0, 0xc9, 0x11, 0x09, 0x01, 0xd9, 
+        0x21, 0x0c, 0x00, 0xd2, 0xa0, 0xff, 0x7c, 0xfc, 0x90, 0x60, 0xa0, 0x20, 0x70, 0x90, 0x5d, 0x0d, 
+        0xad, 0x0b, 0xc0, 0x20, 0x00, 0x32, 0xa1, 0x17, 0x62, 0x26, 0xe0, 0x1b, 0x00, 0x00, 0x00, 0x74, 
+        0xc0, 0x66, 0x30, 0x60, 0x40, 0x74, 0x42, 0xc4, 0xeb, 0x60, 0x60, 0xa4, 0x62, 0x57, 0x00, 0x40, 
+        0xa4, 0xb3, 0x30, 0xaa, 0x82, 0x80, 0x36, 0x10, 0xa0, 0xa8, 0x21, 0xa7, 0x2d, 0x01, 0x5d, 0x0a, 
+        0x3a, 0x35, 0x32, 0x57, 0x00, 0x66, 0x80, 0xbf, 0xc8, 0x11, 0xd8, 0x21, 0x08, 0x01, 0x12, 0xc1, 
+        0x10, 0x0d, 0xf0, 0x00, 0x12, 0xc1, 0xe0, 0x09, 0x61, 0x39, 0x41, 0x29, 0x51, 0x7c, 0xd5, 0x21, 
+        0xe5, 0xeb, 0xc0, 0x20, 0x00, 0x42, 0x22, 0xd4, 0x50, 0x44, 0x10, 0xc0, 0x20, 0x00, 0x42, 0x62, 
+        0xd4, 0x0c, 0x23, 0xc0, 0x20, 0x00, 0x02, 0x22, 0xd4, 0x30, 0x00, 0x20, 0xc0, 0x20, 0x00, 0x02, 
+        0x62, 0xd4, 0x1c, 0x92, 0x01, 0xd7, 0xed, 0xc0, 0x00, 0x00, 0x2d, 0x01, 0x05, 0xf6, 0xff, 0x28, 
+        0x51, 0x02, 0x11, 0x03, 0x42, 0x11, 0x02, 0x32, 0x11, 0x01, 0x92, 0x11, 0x07, 0x72, 0x11, 0x05, 
+        0x62, 0x11, 0x04, 0x82, 0x11, 0x06, 0x7a, 0x66, 0x9a, 0x88, 0x4a, 0x33, 0x3a, 0x00, 0x80, 0x88, 
+        0x90, 0x60, 0x66, 0x90, 0x60, 0x60, 0xf4, 0x80, 0x70, 0xf4, 0xf0, 0x90, 0x11, 0x90, 0x90, 0xf4, 
+        0x77, 0x39, 0x05, 0x80, 0x80, 0xd0, 0x46, 0x00, 0x00, 0x0c, 0x08, 0x82, 0x52, 0x00, 0x08, 0x41, 
+        0x77, 0x36, 0x05, 0x70, 0x26, 0xc0, 0x46, 0x00, 0x00, 0x0c, 0x02, 0x22, 0x50, 0x00, 0x08, 0x61, 
+        0x12, 0xc1, 0x20, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x0d, 0xf0, 0x00, 0x00, 0x0d, 0xf0, 0x00, 0x00, 
+        0x31, 0x6e, 0xfa, 0x0c, 0x02, 0x29, 0x13, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x90, 0xf8, 0xfe, 0x3f, 
+        0x12, 0xc1, 0xf0, 0x09, 0x01, 0x66, 0x72, 0x0b, 0x01, 0xfd, 0xff, 0x08, 0x40, 0x0c, 0x02, 0xcc, 
+        0xc0, 0xc6, 0x00, 0x00, 0x0c, 0x00, 0x2d, 0x00, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x01, 
+        0x69, 0xef, 0xc0, 0x00, 0x00, 0x51, 0xf5, 0xff, 0x0c, 0x02, 0x38, 0x45, 0x39, 0x11, 0x48, 0x63, 
+        0x49, 0x45, 0x29, 0x63, 0x01, 0x65, 0xef, 0xc0, 0x00, 0x00, 0x08, 0x11, 0x86, 0xf5, 0xff, 0x00, 
+        0x12, 0xc1, 0xf0, 0x09, 0x21, 0x01, 0xed, 0xff, 0x29, 0x01, 0x08, 0x00, 0x0c, 0x02, 0xcc, 0x10, 
+        0x86, 0x0e, 0x00, 0x01, 0x5c, 0xef, 0xc0, 0x00, 0x00, 0x51, 0xe8, 0xff, 0x0c, 0x02, 0x38, 0x05, 
+        0x39, 0x11, 0x48, 0x63, 0x49, 0x05, 0x29, 0x63, 0x01, 0x58, 0xef, 0xc0, 0x00, 0x00, 0x78, 0x11, 
+        0x68, 0x01, 0x98, 0x77, 0xb1, 0x9e, 0xf8, 0xa8, 0x09, 0x2d, 0x07, 0xa0, 0x80, 0x54, 0xa0, 0xa6, 
+        0x41, 0xb0, 0xaa, 0x20, 0xa0, 0xaa, 0x11, 0xa0, 0x88, 0x20, 0x89, 0x09, 0x69, 0x37, 0x08, 0x21, 
+        0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x0c, 0x02, 0x12, 0xc1, 
+        0xf0, 0x09, 0x01, 0x01, 0xd6, 0xff, 0x66, 0x43, 0x42, 0x38, 0x10, 0x16, 0xf3, 0x07, 0x01, 0x45, 
+        0xef, 0xc0, 0x00, 0x00, 0x71, 0xd2, 0xff, 0x0c, 0x04, 0x58, 0x17, 0x59, 0x11, 0x68, 0x65, 0x69, 
+        0x17, 0x49, 0x65, 0x01, 0x41, 0xef, 0xc0, 0x00, 0x00, 0x08, 0x11, 0x98, 0x00, 0x88, 0x30, 0x89, 
+        0x19, 0x58, 0x70, 0x38, 0x05, 0x21, 0xf0, 0xff, 0x30, 0xa0, 0x54, 0x30, 0xb6, 0x41, 0x20, 0xbb, 
+        0x20, 0xa0, 0xbb, 0x11, 0xb0, 0xaa, 0x20, 0xa9, 0x05, 0xc6, 0x0f, 0x00, 0x66, 0x53, 0x30, 0x38, 
+        0x20, 0xbc, 0x93, 0x01, 0x34, 0xef, 0xc0, 0x00, 0x00, 0x71, 0xc0, 0xff, 0x0c, 0x04, 0x58, 0x27, 
+        0x59, 0x11, 0x68, 0x65, 0x69, 0x27, 0x49, 0x65, 0x01, 0x30, 0xef, 0xc0, 0x00, 0x00, 0x08, 0x11, 
+        0x98, 0x00, 0x88, 0x30, 0x89, 0x19, 0x58, 0x70, 0x21, 0xd1, 0xec, 0x38, 0x05, 0xc6, 0xed, 0xff, 
+        0x66, 0x63, 0x06, 0xa8, 0x30, 0x8c, 0x5a, 0x86, 0x02, 0x00, 0x0d, 0x02, 0x2d, 0x00, 0x08, 0x01, 
+        0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x01, 0x23, 0xef, 0xc0, 0x00, 0x00, 0x31, 0xb0, 0xff, 0x0c, 0x0b, 
+        0x08, 0x33, 0x09, 0x11, 0x28, 0x60, 0x29, 0x33, 0xb9, 0x60, 0x01, 0x1f, 0xef, 0xc0, 0x00, 0x00, 
+        0x08, 0x11, 0x58, 0x70, 0x21, 0xd6, 0xf4, 0x38, 0x05, 0xc6, 0xde, 0xff, 0xa4, 0x18, 0x00, 0x40, 
+        0x0b, 0x43, 0x12, 0xc1, 0xf0, 0x09, 0x11, 0x29, 0x01, 0x16, 0xd4, 0x0a, 0x52, 0xc3, 0xfe, 0x16, 
+        0x75, 0x0a, 0x66, 0x43, 0x25, 0x28, 0x72, 0x0c, 0x03, 0x1c, 0x84, 0x01, 0xf8, 0xff, 0xc0, 0x00, 
+        0x00, 0x01, 0x10, 0xef, 0xc0, 0x00, 0x00, 0x41, 0x9d, 0xff, 0x38, 0x01, 0x58, 0x14, 0x59, 0x63, 
+        0x39, 0x14, 0x01, 0x0d, 0xef, 0xc0, 0x00, 0x00, 0xc6, 0x1d, 0x00, 0x66, 0x53, 0x25, 0x28, 0x72, 
+        0x0c, 0x03, 0x1c, 0x84, 0x01, 0xee, 0xff, 0xc0, 0x00, 0x00, 0x01, 0x06, 0xef, 0xc0, 0x00, 0x00, 
+        0x41, 0x93, 0xff, 0x38, 0x01, 0x58, 0x24, 0x59, 0x63, 0x39, 0x24, 0x01, 0x03, 0xef, 0xc0, 0x00, 
+        0x00, 0x86, 0x13, 0x00, 0x66, 0x63, 0x25, 0x28, 0x72, 0x0c, 0x03, 0x1c, 0x84, 0x01, 0xe3, 0xff, 
+        0xc0, 0x00, 0x00, 0x01, 0xfc, 0xee, 0xc0, 0x00, 0x00, 0x41, 0x88, 0xff, 0x38, 0x01, 0x58, 0x34, 
+        0x59, 0x63, 0x39, 0x34, 0x01, 0xf9, 0xee, 0xc0, 0x00, 0x00, 0x46, 0x09, 0x00, 0x66, 0x73, 0x22, 
+        0x28, 0x72, 0x0c, 0x03, 0x0c, 0xc4, 0x01, 0xd9, 0xff, 0xc0, 0x00, 0x00, 0x01, 0xf2, 0xee, 0xc0, 
+        0x00, 0x00, 0x41, 0x7e, 0xff, 0x38, 0x01, 0x58, 0x44, 0x59, 0x63, 0x39, 0x44, 0x01, 0xee, 0xee, 
+        0xc0, 0x00, 0x00, 0x08, 0x11, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x0c, 0x03, 0x28, 0x01, 0x1c, 0x84, 
+        0x28, 0x72, 0x01, 0xce, 0xff, 0xc0, 0x00, 0x00, 0x01, 0xe7, 0xee, 0xc0, 0x00, 0x00, 0x41, 0x73, 
+        0xff, 0x38, 0x01, 0x58, 0x04, 0x59, 0x63, 0x39, 0x04, 0x01, 0xe3, 0xee, 0xc0, 0x00, 0x00, 0x06, 
+        0xf4, 0xff, 0x00, 0x00, 0xd0, 0x13, 0xff, 0x3f, 0xb0, 0xf8, 0xfe, 0x3f, 0x70, 0x0e, 0xff, 0x3f, 
+        0x00, 0xf0, 0x00, 0x00, 0xa0, 0x12, 0xff, 0x3f, 0xb0, 0x1e, 0xff, 0x3f, 0x12, 0xc1, 0xe0, 0xf9, 
+        0x41, 0x09, 0x01, 0xe9, 0x31, 0xd9, 0x21, 0xc9, 0x11, 0xd2, 0xa0, 0x68, 0xc1, 0xf7, 0xff, 0xe1, 
+        0xf5, 0xff, 0xe9, 0x7c, 0x2d, 0x0c, 0x0c, 0x13, 0x45, 0xee, 0xff, 0xc2, 0xcc, 0x20, 0xe2, 0xce, 
+        0x18, 0x0b, 0xdd, 0xe6, 0x1d, 0xeb, 0x0c, 0x4d, 0xf1, 0xf1, 0xff, 0xc0, 0x20, 0x00, 0x81, 0xf0, 
+        0xff, 0x72, 0x1f, 0x00, 0x80, 0x77, 0x10, 0x82, 0xa1, 0x00, 0x80, 0x77, 0x20, 0xc0, 0x20, 0x00, 
+        0x72, 0x5f, 0x00, 0xf9, 0x0c, 0xf9, 0x1c, 0xe9, 0x7c, 0x2d, 0x0c, 0x0c, 0x43, 0xcb, 0x5f, 0x0c, 
+        0x16, 0x62, 0x5c, 0x04, 0x59, 0x3c, 0x85, 0xea, 0xff, 0xc2, 0xcc, 0x20, 0xe2, 0xce, 0x18, 0x0b, 
+        0xdd, 0x92, 0xa1, 0x0c, 0x9a, 0xff, 0xe6, 0x1d, 0xc1, 0x0c, 0x4d, 0xf1, 0xe2, 0xff, 0xc0, 0x20, 
+        0x00, 0x31, 0xdf, 0xff, 0x22, 0x1f, 0x00, 0x30, 0x22, 0x10, 0x4c, 0x03, 0x30, 0x22, 0x20, 0xc0, 
+        0x20, 0x00, 0xf9, 0x0c, 0xf9, 0x1c, 0xe9, 0x7c, 0x0c, 0x53, 0x0c, 0x10, 0x22, 0x5f, 0x00, 0xcb, 
+        0xbf, 0xb9, 0x3c, 0x2d, 0x0c, 0x02, 0x5c, 0x04, 0x45, 0xe6, 0xff, 0xc2, 0xcc, 0x20, 0xf2, 0xcf, 
+        0x4c, 0xe2, 0xce, 0x18, 0x0b, 0xdd, 0xe6, 0x1d, 0xc4, 0x0c, 0x4d, 0xe9, 0x7c, 0x2d, 0x0c, 0x0c, 
+        0x63, 0xc5, 0xe4, 0xff, 0xc2, 0xcc, 0x20, 0xe2, 0xce, 0x18, 0x0b, 0xdd, 0xe6, 0x1d, 0xeb, 0x3c, 
+        0xad, 0xe1, 0xcd, 0xff, 0xe9, 0x7c, 0x2d, 0x0c, 0x0c, 0x73, 0x45, 0xe3, 0xff, 0xc2, 0xcc, 0x20, 
+        0xcb, 0xee, 0x0b, 0xdd, 0xe6, 0x1d, 0xec, 0xc8, 0x11, 0xd8, 0x21, 0xe8, 0x31, 0xf8, 0x41, 0x08, 
+        0x01, 0x12, 0xc1, 0x20, 0x0d, 0xf0, 0x00, 0x00, 0x70, 0x21, 0xff, 0x3f, 0x31, 0xff, 0xff, 0x32, 
+        0x03, 0x00, 0x0c, 0x12, 0xb6, 0x83, 0x01, 0x0c, 0x02, 0x0d, 0xf0, 0x00, 0xa0, 0x21, 0xff, 0x3f, 
+        0x0c, 0x13, 0x51, 0xfe, 0xff, 0x20, 0x42, 0xb0, 0x50, 0x44, 0xa0, 0x42, 0x04, 0x11, 0x0c, 0x02, 
+        0x40, 0x23, 0x83, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x64, 0x89, 0xfe, 0x3f, 0x08, 0x8c, 0xfe, 0x3f, 
+        0x12, 0xc1, 0xf0, 0x09, 0x11, 0x01, 0xf0, 0xff, 0x08, 0x90, 0x29, 0x01, 0xdc, 0x00, 0x21, 0xfa, 
+        0xff, 0x31, 0xfa, 0xff, 0x42, 0xa0, 0xec, 0x01, 0xbe, 0xea, 0xc0, 0x00, 0x00, 0x06, 0xff, 0xff, 
+        0x30, 0x23, 0x20, 0x32, 0xa0, 0x03, 0x85, 0xc9, 0x07, 0x38, 0x01, 0x22, 0x43, 0x10, 0x0c, 0xa2, 
+        0x05, 0xc2, 0x07, 0x08, 0x11, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0x12, 0xc1, 0xf0, 0x09, 
+        0x01, 0x01, 0xe1, 0xff, 0x08, 0x90, 0x9d, 0x02, 0xdc, 0x00, 0x21, 0xeb, 0xff, 0x31, 0xeb, 0xff, 
+        0x42, 0xa0, 0xf7, 0x01, 0xaf, 0xea, 0xc0, 0x00, 0x00, 0x06, 0xff, 0xff, 0x30, 0x23, 0x20, 0x32, 
+        0x09, 0x10, 0xc5, 0xc5, 0x07, 0x22, 0xa0, 0x0a, 0x05, 0xc3, 0x07, 0x08, 0x01, 0x12, 0xc1, 0x10, 
+        0x0d, 0xf0, 0x00, 0x00, 0x12, 0xc1, 0xf0, 0x09, 0x01, 0x45, 0x01, 0x00, 0x08, 0x01, 0x12, 0xc1, 
+        0x10, 0x0d, 0xf0, 0x00, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x40, 0x00, 
+        0x81, 0xce, 0xff, 0x12, 0xc1, 0xd0, 0xf9, 0x81, 0x09, 0x41, 0xe9, 0x71, 0xc9, 0x51, 0xd9, 0x61, 
+        0xcd, 0x02, 0xdd, 0x03, 0xcc, 0x33, 0xe8, 0x02, 0x46, 0x00, 0x00, 0xe8, 0x98, 0x0c, 0x07, 0x92, 
+        0xa0, 0x80, 0x08, 0x7e, 0x38, 0x0e, 0x48, 0x00, 0x52, 0x1e, 0x08, 0x40, 0x26, 0x41, 0x90, 0x92, 
+        0x10, 0x87, 0x74, 0x06, 0xf8, 0x13, 0x4b, 0xff, 0x46, 0x00, 0x00, 0xf8, 0x13, 0x32, 0x10, 0x03, 
+        0x62, 0x0c, 0x11, 0x30, 0x37, 0x41, 0x77, 0x62, 0x04, 0x67, 0xe2, 0x01, 0x0c, 0x17, 0x9c, 0x66, 
+        0x26, 0x36, 0x14, 0x26, 0x26, 0x11, 0x21, 0xc4, 0xff, 0x31, 0xc4, 0xff, 0x42, 0xa1, 0x14, 0x01, 
+        0x88, 0xea, 0xc0, 0x00, 0x00, 0x06, 0xff, 0xff, 0x0c, 0x06, 0x79, 0x21, 0x59, 0x31, 0x0c, 0x14, 
+        0x49, 0x91, 0x67, 0x72, 0x0b, 0x08, 0x7e, 0x32, 0x5f, 0x01, 0x0c, 0x15, 0x0c, 0x13, 0x46, 0x15, 
+        0x00, 0x52, 0x0c, 0x0b, 0xcc, 0x45, 0x72, 0x0c, 0x0d, 0x16, 0x67, 0x24, 0x72, 0x9c, 0x0b, 0x52, 
+        0x9c, 0x0a, 0x48, 0xa8, 0x00, 0x93, 0x11, 0x90, 0x90, 0x31, 0x48, 0x74, 0x70, 0x55, 0xc0, 0x42, 
+        0x14, 0x03, 0x52, 0x5c, 0x0a, 0xa2, 0x9c, 0x0a, 0x02, 0x10, 0x05, 0x40, 0x47, 0x41, 0x4a, 0x00, 
+        0x30, 0x00, 0xc0, 0x00, 0x00, 0x11, 0x00, 0x00, 0x31, 0x02, 0x5c, 0x0b, 0x00, 0x0a, 0xc0, 0x07, 
+        0x29, 0x08, 0x32, 0x5f, 0x01, 0x62, 0x4c, 0x0c, 0x86, 0x00, 0x00, 0x02, 0x5f, 0x01, 0x32, 0xa0, 
+        0x00, 0x02, 0x2e, 0x07, 0x52, 0xa0, 0x00, 0x78, 0x00, 0x92, 0xa1, 0x00, 0x70, 0x26, 0x41, 0x90, 
+        0x82, 0x10, 0x9c, 0xc5, 0x39, 0xa1, 0x69, 0xb1, 0xe7, 0x67, 0x16, 0x22, 0x00, 0x08, 0x05, 0x6b, 
+        0x05, 0x68, 0xb1, 0x08, 0x7e, 0x38, 0xa1, 0x28, 0x00, 0x82, 0xa1, 0x00, 0x20, 0x26, 0x41, 0x80, 
+        0x82, 0x10, 0x42, 0xa4, 0x02, 0x47, 0x82, 0x0b, 0x20, 0x56, 0x05, 0x16, 0x35, 0x18, 0x20, 0x73, 
+        0x05, 0x56, 0xd7, 0x17, 0x0c, 0x05, 0x46, 0x02, 0x00, 0x20, 0xa3, 0x05, 0x58, 0x91, 0x0c, 0x29, 
+        0xa0, 0x59, 0x93, 0xb1, 0xb4, 0xff, 0xa8, 0x0e, 0x92, 0x1f, 0x01, 0x50, 0x70, 0x24, 0x80, 0x77, 
+        0x01, 0xf1, 0xb1, 0xff, 0x51, 0xc1, 0xec, 0xe2, 0x9c, 0x0a, 0xb0, 0xaa, 0x10, 0xb8, 0x31, 0x00, 
+        0x99, 0x11, 0xb0, 0xb0, 0xb4, 0x16, 0x9d, 0x15, 0x97, 0x62, 0x01, 0xcc, 0x33, 0x0c, 0x0c, 0x86, 
+        0x00, 0x00, 0xc1, 0x1e, 0xf6, 0x16, 0x48, 0x14, 0x16, 0x13, 0x14, 0x31, 0xe3, 0xef, 0xe6, 0x1e, 
+        0x0c, 0x88, 0x21, 0x80, 0x80, 0x74, 0xcc, 0x48, 0xd2, 0x00, 0x08, 0xb6, 0xbd, 0x04, 0x0c, 0x02, 
+        0x86, 0x00, 0x00, 0x21, 0xa2, 0xff, 0x30, 0x4c, 0x20, 0xa0, 0x82, 0x20, 0x40, 0x47, 0x20, 0x80, 
+        0x44, 0x20, 0xc0, 0x20, 0x00, 0x42, 0x65, 0xb7, 0xc0, 0x20, 0x00, 0x92, 0x65, 0xba, 0x32, 0x00, 
+        0x0c, 0x22, 0x00, 0x08, 0x00, 0x33, 0x11, 0x20, 0x70, 0x34, 0x40, 0x77, 0x11, 0x70, 0x7b, 0x20, 
+        0xf6, 0xb2, 0x01, 0xfd, 0x06, 0x30, 0x8f, 0x20, 0x80, 0x77, 0x20, 0xc0, 0x20, 0x00, 0x72, 0x65, 
+        0xb8, 0x22, 0x00, 0x08, 0xf6, 0xb2, 0x02, 0x06, 0x32, 0x00, 0x32, 0xa0, 0x87, 0x0c, 0x88, 0x98, 
+        0x00, 0x02, 0xc2, 0xf0, 0x90, 0x9c, 0x05, 0x90, 0x68, 0x93, 0xe6, 0x80, 0x01, 0x0c, 0x73, 0x00, 
+        0xa0, 0x24, 0xc8, 0x31, 0x60, 0xb3, 0x20, 0x80, 0xbb, 0x01, 0x80, 0xcc, 0x11, 0xc0, 0xaa, 0x20, 
+        0xb0, 0xaa, 0x20, 0xc0, 0x20, 0x00, 0xa2, 0x65, 0xb9, 0x86, 0x25, 0x00, 0x31, 0x84, 0xff, 0xe2, 
+        0x0c, 0x04, 0x6c, 0x8d, 0x80, 0x22, 0x20, 0xa0, 0x33, 0x20, 0x20, 0x77, 0x20, 0xe0, 0xed, 0xd1, 
+        0x5a, 0xee, 0x30, 0x77, 0x20, 0xc0, 0x20, 0x00, 0x72, 0x6e, 0xf1, 0x42, 0x0c, 0x04, 0x40, 0x4d, 
+        0xd1, 0x5a, 0x44, 0xc0, 0x20, 0x00, 0x92, 0x64, 0xf4, 0x22, 0x00, 0x08, 0x32, 0x00, 0x0c, 0x72, 
+        0x0c, 0x04, 0x00, 0x33, 0x11, 0x70, 0x7d, 0xd1, 0x5a, 0x77, 0xf6, 0xb2, 0x01, 0xfd, 0x06, 0x30, 
+        0x8f, 0x20, 0x20, 0x40, 0x34, 0x40, 0x44, 0x11, 0x40, 0x4b, 0x20, 0x80, 0x44, 0x20, 0xc0, 0x20, 
+        0x00, 0x42, 0x67, 0xf2, 0x22, 0x00, 0x08, 0xb6, 0xb2, 0x38, 0x32, 0xa0, 0x87, 0x82, 0x0c, 0x04, 
+        0x6c, 0x87, 0x0c, 0x89, 0xa8, 0x00, 0x02, 0xc2, 0xf0, 0xa0, 0xac, 0x05, 0xa0, 0x69, 0x93, 0x80, 
+        0x77, 0xd1, 0x5a, 0x57, 0xe6, 0x80, 0x01, 0x0c, 0x73, 0x00, 0xb0, 0x24, 0xd8, 0x31, 0x60, 0xc3, 
+        0x20, 0x80, 0xcc, 0x01, 0x80, 0xdd, 0x11, 0xd0, 0xbb, 0x20, 0xc0, 0xbb, 0x20, 0xc0, 0x20, 0x00, 
+        0xb2, 0x65, 0xf3, 0xc8, 0x51, 0xd8, 0x61, 0xe8, 0x71, 0xf8, 0x81, 0x08, 0x41, 0x12, 0xc1, 0x30, 
+        0x0d, 0xf0, 0x20, 0x44, 0x05, 0x16, 0x04, 0xe8, 0x0c, 0x35, 0x46, 0xa1, 0xff, 0x0c, 0x03, 0xc6, 
+        0xae, 0xff, 0x97, 0x62, 0x01, 0xcc, 0x33, 0x0c, 0x02, 0x86, 0x00, 0x00, 0x21, 0xc8, 0xf5, 0x9c, 
+        0xb8, 0x9c, 0x93, 0x81, 0x8d, 0xef, 0xe6, 0x1e, 0x0f, 0xd8, 0x21, 0xd0, 0xd0, 0x74, 0xcc, 0x7d, 
+        0xe2, 0x00, 0x08, 0xf6, 0xbe, 0x02, 0x86, 0xc8, 0xff, 0x0c, 0x03, 0x06, 0xc8, 0xff, 0x0c, 0x08, 
+        0x86, 0xf8, 0xff, 0x42, 0x1c, 0x0c, 0x16, 0xe4, 0x05, 0x32, 0x5f, 0x01, 0x08, 0x7e, 0x2d, 0x03, 
+        0x78, 0x00, 0x39, 0x11, 0x07, 0xf7, 0x24, 0x77, 0xe7, 0x21, 0x69, 0xb1, 0xc7, 0x77, 0x04, 0x69, 
+        0xb1, 0x97, 0x77, 0x17, 0x32, 0x21, 0x01, 0x22, 0x00, 0x00, 0x42, 0x1c, 0x0c, 0x20, 0x22, 0x34, 
+        0x45, 0xfe, 0x04, 0x62, 0x21, 0x0b, 0x02, 0x2e, 0x07, 0x22, 0x5f, 0x01, 0x48, 0x11, 0x40, 0x40, 
+        0xf4, 0x27, 0xb4, 0x0f, 0x22, 0x5c, 0x0a, 0x58, 0x91, 0x62, 0x5c, 0x0b, 0x52, 0x4c, 0x0c, 0x0c, 
+        0x15, 0x86, 0x03, 0x00, 0x62, 0x5c, 0x0a, 0x0c, 0x05, 0x86, 0x01, 0x00, 0x62, 0x5c, 0x0a, 0x0c, 
+        0x05, 0x08, 0x7e, 0x0c, 0x13, 0x86, 0x67, 0xff, 0x32, 0x61, 0x00, 0x16, 0x99, 0x02, 0x62, 0x61, 
+        0x0b, 0x67, 0xe2, 0x23, 0x22, 0x00, 0x00, 0x20, 0x22, 0x34, 0x45, 0xa5, 0x03, 0x68, 0xb1, 0x38, 
+        0x01, 0x32, 0x5f, 0x01, 0x39, 0x11, 0x16, 0x42, 0x05, 0x48, 0x72, 0x42, 0x14, 0x05, 0x0c, 0x15, 
+        0x3a, 0x44, 0x42, 0x5f, 0x01, 0x06, 0xf2, 0xff, 0xa7, 0xe2, 0x18, 0x69, 0xb1, 0x17, 0xe2, 0x13, 
+        0x22, 0x00, 0x00, 0x20, 0x22, 0x34, 0x85, 0xa2, 0x03, 0x68, 0xb1, 0x81, 0xef, 0xfe, 0x06, 0x01, 
+        0x00, 0x00, 0x00, 0x00, 0x0c, 0x02, 0x08, 0x01, 0x02, 0x5f, 0x01, 0x16, 0xd2, 0xf9, 0x48, 0x72, 
+        0x42, 0x14, 0x05, 0x32, 0x18, 0x16, 0x0a, 0x04, 0x07, 0x23, 0x90, 0x58, 0x91, 0x02, 0x5f, 0x01, 
+        0x02, 0x5c, 0x0a, 0x62, 0x5c, 0x0b, 0x52, 0x4c, 0x0c, 0x0c, 0x15, 0x86, 0xe0, 0xff, 0x0c, 0x05, 
+        0x46, 0xdf, 0xff, 0x00, 0x0c, 0x05, 0x0c, 0x02, 0x71, 0xe5, 0xfe, 0x50, 0x65, 0xb0, 0x1b, 0x55, 
+        0x70, 0x66, 0xa0, 0x62, 0x96, 0x0a, 0x50, 0x50, 0x74, 0x67, 0xa2, 0x02, 0x60, 0x20, 0xf4, 0x66, 
+        0x45, 0xe8, 0x0d, 0xf0, 0x12, 0xc1, 0xe0, 0x29, 0x01, 0x39, 0x11, 0x09, 0x21, 0xe9, 0x51, 0xc9, 
+        0x31, 0xd9, 0x41, 0xcd, 0x06, 0xdd, 0x05, 0xed, 0x04, 0x01, 0x72, 0xed, 0xc0, 0x00, 0x00, 0x31, 
+        0xd7, 0xfe, 0x28, 0x11, 0x08, 0x01, 0x0b, 0x22, 0x00, 0x00, 0xb0, 0x30, 0x00, 0xa0, 0xe2, 0x40, 
+        0x07, 0x22, 0x40, 0x05, 0x22, 0x00, 0x06, 0xd2, 0x40, 0x08, 0x27, 0x3d, 0x04, 0xe7, 0xb2, 0x04, 
+        0xdd, 0x0e, 0xd2, 0x40, 0x06, 0xd1, 0xc8, 0xfe, 0x22, 0x1d, 0x16, 0x27, 0xbc, 0x0d, 0x32, 0x10, 
+        0x0c, 0x27, 0x93, 0x0a, 0xc2, 0x50, 0x0c, 0xc5, 0xf8, 0xff, 0xcd, 0x02, 0xc2, 0x5d, 0x16, 0x01, 
+        0x62, 0xed, 0xc0, 0x00, 0x00, 0xc8, 0x31, 0xd8, 0x41, 0xe8, 0x51, 0x08, 0x21, 0x12, 0xc1, 0x20, 
+        0x0d, 0xf0, 0x00, 0x00, 0x0c, 0x07, 0x91, 0xc1, 0xfe, 0x20, 0x82, 0xb0, 0x90, 0x88, 0xa0, 0x22, 
+        0x48, 0x04, 0x32, 0x48, 0x05, 0x52, 0x48, 0x08, 0x42, 0x48, 0x07, 0x42, 0x48, 0x06, 0x62, 0x58, 
+        0x0c, 0x72, 0x48, 0x09, 0x72, 0x48, 0x0a, 0x72, 0x48, 0x11, 0x79, 0x78, 0x79, 0x88, 0x0d, 0xf0, 
+        0xc0, 0x0b, 0x00, 0x00, 0x12, 0xc1, 0xf0, 0x02, 0x61, 0x00, 0x05, 0x01, 0x01, 0x22, 0xa0, 0x02, 
+        0x0c, 0x33, 0x0c, 0x44, 0x0c, 0xa5, 0x0c, 0x06, 0x85, 0xfb, 0xff, 0x0c, 0x32, 0x0c, 0x73, 0x0c, 
+        0x44, 0x0c, 0xa5, 0x0c, 0x06, 0xc5, 0xfa, 0xff, 0x0c, 0x12, 0x0c, 0x23, 0x0c, 0x34, 0x0c, 0x45, 
+        0x61, 0xf4, 0xff, 0x05, 0xfa, 0xff, 0x0c, 0x02, 0x0c, 0x23, 0x0c, 0x24, 0x0c, 0x35, 0x62, 0xa5, 
+        0xe0, 0x05, 0xf9, 0xff, 0x0c, 0x42, 0x0c, 0x23, 0x0c, 0x44, 0x0c, 0xa5, 0x0c, 0x06, 0x45, 0xf8, 
+        0xff, 0x0c, 0x72, 0x0c, 0x23, 0x0c, 0x54, 0x0c, 0xa5, 0x0c, 0x06, 0x85, 0xf7, 0xff, 0x45, 0xee, 
+        0xff, 0x01, 0x99, 0xfe, 0x0c, 0x13, 0x22, 0x50, 0x16, 0x0c, 0x82, 0x22, 0x40, 0x00, 0x22, 0x10, 
+        0x0e, 0x45, 0x25, 0x05, 0x45, 0x4f, 0x06, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 
+        0x32, 0xc2, 0xf6, 0x12, 0xc1, 0xf0, 0x41, 0x90, 0xfe, 0x09, 0x11, 0x02, 0x04, 0x00, 0x5d, 0x02, 
+        0x30, 0x50, 0x83, 0x50, 0x00, 0x74, 0xb6, 0x80, 0x11, 0x21, 0x97, 0xfe, 0x31, 0x98, 0xfe, 0x42, 
+        0xa2, 0x2d, 0x01, 0x5b, 0xe9, 0xc0, 0x00, 0x00, 0x06, 0xff, 0xff, 0x32, 0xc4, 0x30, 0x00, 0x00, 
+        0xb0, 0x30, 0x00, 0xa0, 0x62, 0x00, 0x11, 0x26, 0x16, 0x11, 0x21, 0x8f, 0xfe, 0x31, 0x8f, 0xfe, 
+        0x42, 0xa2, 0x35, 0x01, 0x53, 0xe9, 0xc0, 0x00, 0x00, 0x06, 0xff, 0xff, 0x52, 0x44, 0x00, 0x09, 
+        0x01, 0x66, 0x92, 0x12, 0x2d, 0x00, 0x3d, 0x04, 0x32, 0x03, 0x2e, 0x05, 0xa6, 0xff, 0x08, 0x01, 
+        0x51, 0x7a, 0xfe, 0x0c, 0x04, 0x49, 0x95, 0x68, 0x00, 0xdc, 0x06, 0x21, 0x83, 0xfe, 0x31, 0x83, 
+        0xfe, 0x42, 0xa2, 0x3c, 0x01, 0x47, 0xe9, 0xc0, 0x00, 0x00, 0x06, 0xff, 0xff, 0x00, 0x20, 0x20, 
+        0x72, 0xa0, 0x02, 0x72, 0x40, 0x11, 0xc5, 0x00, 0x00, 0x85, 0x8a, 0x00, 0x02, 0x21, 0x01, 0x12, 
+        0xc1, 0x10, 0x0d, 0xf0, 0x12, 0xc1, 0xf0, 0x09, 0x11, 0xc9, 0x21, 0x48, 0x02, 0xcd, 0x02, 0xdc, 
+        0x04, 0x21, 0x75, 0xfe, 0x31, 0x76, 0xfe, 0x42, 0xa2, 0x53, 0x01, 0x39, 0xe9, 0xc0, 0x00, 0x00, 
+        0x06, 0xff, 0xff, 0x21, 0x65, 0xfe, 0x08, 0xa2, 0x38, 0x92, 0x9c, 0x00, 0x21, 0x6f, 0xfe, 0x31, 
+        0x6f, 0xfe, 0x42, 0xa2, 0x54, 0x01, 0x32, 0xe9, 0xc0, 0x00, 0x00, 0x06, 0xff, 0xff, 0x9c, 0x03, 
+        0x21, 0x6a, 0xfe, 0x31, 0x6a, 0xfe, 0x42, 0xa2, 0x55, 0x01, 0x2d, 0xe9, 0xc0, 0x00, 0x00, 0x06, 
+        0xff, 0xff, 0x49, 0xa2, 0x08, 0x74, 0x0c, 0x06, 0x58, 0x00, 0x69, 0x0c, 0x50, 0x5c, 0x05, 0x56, 
+        0x85, 0x0e, 0x49, 0x01, 0x72, 0x0c, 0x0b, 0xa2, 0x1c, 0x0c, 0xcc, 0x97, 0x82, 0x9c, 0x0a, 0xa6, 
+        0x18, 0x04, 0x0c, 0x19, 0x92, 0x4c, 0x0d, 0x16, 0x8a, 0x04, 0xb2, 0x0c, 0x0b, 0x22, 0x0c, 0x0c, 
+        0x8c, 0x0b, 0xcc, 0x32, 0x32, 0x0c, 0x0d, 0xbc, 0x83, 0x22, 0x00, 0x00, 0x20, 0x22, 0x34, 0x05, 
+        0x7e, 0x03, 0x02, 0x21, 0x00, 0x02, 0x20, 0x07, 0x16, 0x72, 0x02, 0x48, 0x00, 0x40, 0x56, 0x41, 
+        0x40, 0x30, 0x05, 0x56, 0xd3, 0x0a, 0x40, 0x67, 0x04, 0x56, 0x76, 0x0a, 0x71, 0x43, 0xfe, 0x0c, 
+        0x13, 0x29, 0x97, 0x2d, 0x0c, 0xc5, 0x9a, 0xff, 0x2d, 0x0c, 0x32, 0xa0, 0xd4, 0x05, 0x93, 0xff, 
+        0xc6, 0x21, 0x00, 0x42, 0x20, 0x00, 0xd7, 0x64, 0x26, 0xc7, 0xe4, 0x23, 0x22, 0x00, 0x00, 0x20, 
+        0x22, 0x34, 0xc5, 0x79, 0x03, 0x16, 0x72, 0x01, 0x31, 0x38, 0xfe, 0x22, 0x63, 0x09, 0x2d, 0x0c, 
+        0x0c, 0x13, 0x05, 0x98, 0xff, 0x2d, 0x0c, 0x32, 0xa0, 0xd4, 0x45, 0x90, 0xff, 0x86, 0x16, 0x00, 
+        0x42, 0x0c, 0x0b, 0x52, 0x0c, 0x0c, 0x8c, 0x04, 0xcc, 0x45, 0x62, 0x0c, 0x0d, 0x16, 0xa6, 0x04, 
+        0x22, 0x21, 0x00, 0x22, 0x22, 0x07, 0x22, 0x02, 0x00, 0x20, 0x22, 0x34, 0x05, 0x76, 0x03, 0x16, 
+        0x82, 0x03, 0x48, 0x01, 0x48, 0x74, 0x48, 0x04, 0x07, 0xf4, 0x19, 0x77, 0xe4, 0x16, 0x51, 0x26, 
+        0xfe, 0x0c, 0x13, 0x29, 0x95, 0x2d, 0x0c, 0xc5, 0x93, 0xff, 0x2d, 0x0c, 0x32, 0xa0, 0xd4, 0x05, 
+        0x8c, 0xff, 0x46, 0x05, 0x00, 0x22, 0x6c, 0x00, 0x32, 0xa0, 0x00, 0xc0, 0x2c, 0x20, 0x45, 0x92, 
+        0xff, 0x22, 0x0c, 0x04, 0x0c, 0x03, 0x0c, 0x04, 0xc5, 0x1f, 0x07, 0xc8, 0x21, 0x08, 0x11, 0x12, 
+        0xc1, 0x10, 0x0d, 0xf0, 0x57, 0x65, 0x08, 0x62, 0x00, 0x04, 0x60, 0x64, 0x41, 0xa6, 0x26, 0xea, 
+        0x22, 0x6c, 0x00, 0x32, 0xa0, 0x00, 0xc0, 0x2c, 0x20, 0x85, 0x8f, 0xff, 0x22, 0x0c, 0x04, 0x0c, 
+        0x03, 0x0c, 0x04, 0x45, 0x1d, 0x07, 0x46, 0xf4, 0xff, 0x00, 0x00, 0x00, 0x12, 0xc1, 0xf0, 0xc9, 
+        0x11, 0x09, 0x01, 0xcd, 0x03, 0x45, 0x83, 0xff, 0xdc, 0x02, 0x21, 0x17, 0xfe, 0x31, 0x17, 0xfe, 
+        0x42, 0xa2, 0x90, 0x01, 0xdb, 0xe8, 0xc0, 0x00, 0x00, 0x06, 0xff, 0xff, 0x21, 0x07, 0xfe, 0x08, 
+        0xa2, 0x42, 0x02, 0x00, 0xdc, 0x00, 0x21, 0x10, 0xfe, 0x31, 0x10, 0xfe, 0x42, 0xa2, 0x93, 0x01, 
+        0xd4, 0xe8, 0xc0, 0x00, 0x00, 0x06, 0xff, 0xff, 0x52, 0x02, 0x00, 0x32, 0xc2, 0x30, 0x50, 0x24, 
+        0xb0, 0x30, 0x22, 0xa0, 0x32, 0x02, 0x11, 0x26, 0x23, 0x11, 0x21, 0x07, 0xfe, 0x31, 0x07, 0xfe, 
+        0x42, 0xa2, 0x94, 0x01, 0xcb, 0xe8, 0xc0, 0x00, 0x00, 0x06, 0xff, 0xff, 0x08, 0x70, 0x0c, 0x06, 
+        0x38, 0x00, 0x82, 0xa4, 0x02, 0x30, 0x76, 0x41, 0x87, 0x87, 0x05, 0xc7, 0x73, 0x50, 0x97, 0xf3, 
+        0x4d, 0x62, 0x42, 0x09, 0x62, 0x42, 0x0a, 0xc2, 0xaf, 0xff, 0x92, 0x02, 0x07, 0x92, 0x42, 0x06, 
+        0xa2, 0x20, 0x00, 0xc2, 0x40, 0x09, 0xb7, 0x6a, 0x28, 0x52, 0x00, 0x04, 0x50, 0x34, 0x41, 0xe6, 
+        0x23, 0x1f, 0xc2, 0xc3, 0x01, 0x50, 0xb0, 0x34, 0x0c, 0x13, 0xc0, 0xc0, 0x34, 0xc0, 0xcc, 0x11, 
+        0xc0, 0xbb, 0x20, 0xb2, 0x40, 0x04, 0x45, 0x2a, 0x00, 0xc8, 0x11, 0x08, 0x01, 0x12, 0xc1, 0x10, 
+        0x0d, 0xf0, 0x0c, 0x03, 0x0c, 0x50, 0x02, 0x42, 0x11, 0x05, 0x29, 0x00, 0x46, 0xfa, 0xff, 0x32, 
+        0x02, 0x07, 0x87, 0xe7, 0x08, 0x32, 0x42, 0x06, 0x62, 0x42, 0x09, 0x46, 0xec, 0xff, 0x32, 0x42, 
+        0x06, 0x62, 0x42, 0x09, 0x62, 0x42, 0x0a, 0x46, 0xe9, 0xff, 0x00, 0x00, 0x12, 0xc1, 0xe0, 0x09, 
+        0x01, 0x59, 0x51, 0xf9, 0x41, 0xe9, 0x31, 0xc9, 0x11, 0xd9, 0x21, 0xcd, 0x03, 0xdd, 0x04, 0xed, 
+        0x02, 0xfd, 0x05, 0x38, 0x8e, 0x28, 0x7c, 0x1b, 0x33, 0x39, 0x8e, 0x08, 0x02, 0xd2, 0x42, 0x0f, 
+        0xd7, 0x60, 0x0c, 0xc7, 0xe0, 0x09, 0x2d, 0x0c, 0x0c, 0x03, 0x45, 0xf4, 0x00, 0x06, 0x02, 0x00, 
+        0xf0, 0x3f, 0x20, 0xc0, 0x2c, 0x20, 0x85, 0xf3, 0x00, 0x22, 0x2c, 0x07, 0x08, 0x02, 0xd7, 0x60, 
+        0x10, 0xc7, 0xe0, 0x0d, 0x22, 0x02, 0x00, 0x20, 0x22, 0x34, 0x45, 0x60, 0x03, 0xcd, 0x02, 0x56, 
+        0x02, 0xfc, 0xc8, 0x11, 0xd8, 0x21, 0xe8, 0x31, 0xf8, 0x41, 0x08, 0x01, 0x12, 0xc1, 0x20, 0x0d, 
+        0xf0, 0x00, 0x00, 0x00, 0x31, 0xc2, 0xfd, 0x20, 0x22, 0xb0, 0x30, 0x22, 0xa0, 0x0d, 0xf0, 0x00, 
+        0x5d, 0x04, 0x12, 0xc1, 0xf0, 0x0c, 0x44, 0x09, 0x01, 0x05, 0xf8, 0xff, 0x08, 0x01, 0x12, 0xc1, 
+        0x10, 0x0d, 0xf0, 0x00, 0x6d, 0x02, 0x12, 0xc1, 0xf0, 0x09, 0x01, 0x2d, 0x03, 0x0c, 0x10, 0x3d, 
+        0x04, 0x58, 0x76, 0x48, 0x72, 0x1b, 0x55, 0x59, 0x76, 0x02, 0x44, 0x0f, 0x05, 0xed, 0x00, 0x08, 
+        0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0x24, 0x0e, 0x00, 0x40, 0x12, 0xc1, 0xf0, 0x09, 
+        0x11, 0x32, 0x02, 0x11, 0x08, 0x02, 0x26, 0x63, 0x11, 0x21, 0xb3, 0xfd, 0x31, 0xb4, 0xfd, 0x42, 
+        0xa2, 0xda, 0x01, 0x77, 0xe8, 0xc0, 0x00, 0x00, 0x06, 0xff, 0xff, 0x42, 0xa0, 0x00, 0x42, 0x42, 
+        0x11, 0x62, 0x20, 0x07, 0x02, 0x61, 0x00, 0x38, 0x06, 0x49, 0x02, 0xb7, 0x73, 0x2a, 0x22, 0x06, 
+        0x00, 0x32, 0x06, 0x04, 0x20, 0x22, 0x34, 0x30, 0x34, 0x41, 0x2b, 0x33, 0x30, 0x30, 0x74, 0x45, 
+        0xc7, 0x03, 0x48, 0x01, 0x48, 0x74, 0x2c, 0x02, 0x42, 0x04, 0x00, 0x0c, 0x63, 0x40, 0x42, 0x34, 
+        0x01, 0xea, 0xff, 0xc0, 0x00, 0x00, 0x46, 0x0d, 0x00, 0x02, 0x21, 0x00, 0xc7, 0x73, 0x0b, 0x32, 
+        0xa0, 0x01, 0x00, 0x20, 0x20, 0x45, 0xad, 0x04, 0xc6, 0x08, 0x00, 0x71, 0x8f, 0xfd, 0x52, 0x06, 
+        0x05, 0x72, 0x07, 0x0d, 0x50, 0x50, 0x54, 0x77, 0x35, 0x0b, 0x0c, 0x24, 0x0c, 0x15, 0x3d, 0x00, 
+        0x85, 0xec, 0xff, 0x06, 0x02, 0x00, 0x0c, 0x34, 0x0c, 0x15, 0x3d, 0x00, 0xc5, 0xeb, 0xff, 0x08, 
+        0x11, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0x42, 0x02, 0x0d, 0x0c, 0x05, 0x8c, 0x44, 0x32, 
+        0x42, 0x0b, 0x52, 0x42, 0x0d, 0x0d, 0xf0, 0x00, 0x12, 0xc1, 0xf0, 0xc2, 0x61, 0x01, 0x02, 0x61, 
+        0x00, 0x02, 0x02, 0x0b, 0x20, 0xc2, 0x20, 0xac, 0xa0, 0x22, 0x02, 0x0c, 0x0c, 0x00, 0x9c, 0x02, 
+        0x28, 0x0c, 0x28, 0x72, 0x22, 0x02, 0x00, 0x20, 0x22, 0x34, 0x45, 0x49, 0x03, 0x29, 0x0c, 0x46, 
+        0x01, 0x00, 0x00, 0x20, 0x20, 0x22, 0x6c, 0x00, 0x16, 0xe2, 0x01, 0x2d, 0x0c, 0x0c, 0x03, 0x05, 
+        0x74, 0x00, 0x86, 0x01, 0x00, 0x0c, 0x03, 0x05, 0xfb, 0xff, 0x0c, 0x02, 0x0c, 0x93, 0x08, 0x01, 
+        0x32, 0x4c, 0x12, 0xc8, 0x11, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x0c, 0x02, 0x0c, 0x04, 0x42, 0x4c, 
+        0x0b, 0xc6, 0xf9, 0xff, 0x12, 0xc1, 0xf0, 0xc9, 0x11, 0x09, 0x01, 0x02, 0x02, 0x0b, 0xcd, 0x02, 
+        0x8c, 0x60, 0x0c, 0x02, 0x22, 0x4c, 0x0b, 0x46, 0x01, 0x00, 0x32, 0xa0, 0x00, 0x85, 0xf7, 0xff, 
+        0x21, 0x62, 0xfd, 0x22, 0x22, 0x09, 0x05, 0x4a, 0x03, 0x32, 0xa0, 0x0c, 0x08, 0x01, 0x32, 0x4c, 
+        0x12, 0xc8, 0x11, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x0c, 0x13, 0x12, 0xc1, 0xf0, 0x09, 0x01, 0xc9, 
+        0x11, 0x01, 0x59, 0xfd, 0xcd, 0x02, 0x08, 0x90, 0x09, 0x02, 0x45, 0x6d, 0x00, 0x0c, 0xb3, 0x08, 
+        0x01, 0x32, 0x4c, 0x12, 0xc8, 0x11, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x12, 0xc1, 0xf0, 0x02, 
+        0x61, 0x00, 0xc9, 0x11, 0xd9, 0x21, 0xcd, 0x03, 0xdd, 0x02, 0x0c, 0x03, 0x32, 0x42, 0x11, 0x85, 
+        0xf2, 0xff, 0x28, 0x5c, 0x45, 0x31, 0x06, 0xac, 0x52, 0x28, 0x7c, 0xc5, 0x44, 0x05, 0x28, 0x7c, 
+        0x22, 0x02, 0x00, 0x0c, 0x13, 0x20, 0x22, 0x34, 0x85, 0xb2, 0x03, 0x48, 0x7c, 0x2c, 0x02, 0x42, 
+        0x04, 0x00, 0x0c, 0x63, 0x40, 0x42, 0x34, 0x01, 0x98, 0xff, 0xc0, 0x00, 0x00, 0x06, 0x02, 0x00, 
+        0xc0, 0x2c, 0x20, 0x32, 0xa0, 0x01, 0x45, 0xa2, 0x04, 0x02, 0x21, 0x00, 0x0c, 0x85, 0xc8, 0x11, 
+        0x52, 0x4d, 0x12, 0xd8, 0x21, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0x0c, 0x34, 0x81, 0x6b, 
+        0xfd, 0x52, 0xa0, 0x94, 0x12, 0xc1, 0xd0, 0xe9, 0x71, 0x09, 0x41, 0xc9, 0x51, 0xf9, 0x81, 0xd9, 
+        0x61, 0x0c, 0x0f, 0xd1, 0x35, 0xfd, 0xcd, 0x02, 0x02, 0x0c, 0x11, 0x2d, 0x03, 0x32, 0xa0, 0xd4, 
+        0xec, 0x92, 0x0c, 0x1e, 0x22, 0xc0, 0xfa, 0x56, 0x12, 0x09, 0xf2, 0x4c, 0x11, 0x08, 0xad, 0x48, 
+        0x0c, 0x56, 0x20, 0x18, 0x8c, 0x34, 0x38, 0x9d, 0x16, 0x73, 0x37, 0x21, 0x37, 0xfd, 0x31, 0x37, 
+        0xfd, 0x42, 0xa3, 0x37, 0x01, 0xfb, 0xe7, 0xc0, 0x00, 0x00, 0x06, 0xff, 0xff, 0x26, 0x20, 0x14, 
+        0x26, 0x10, 0x11, 0x21, 0x31, 0xfd, 0x31, 0x31, 0xfd, 0x42, 0xa3, 0xa1, 0x01, 0xf5, 0xe7, 0xc0, 
+        0x00, 0x00, 0x06, 0xff, 0xff, 0x02, 0x2d, 0x0a, 0x62, 0x2d, 0x09, 0x56, 0x50, 0x01, 0x2d, 0x0c, 
+        0x0c, 0x03, 0x0c, 0x34, 0x42, 0x4c, 0x11, 0x85, 0x5e, 0x00, 0xed, 0x02, 0x0c, 0x50, 0x02, 0x4c, 
+        0x12, 0x86, 0x26, 0x00, 0x16, 0xe6, 0x01, 0x72, 0x20, 0x07, 0x72, 0x27, 0x00, 0x2d, 0x0c, 0x70, 
+        0x79, 0x05, 0x70, 0x35, 0x93, 0x45, 0x4c, 0xff, 0x82, 0x0c, 0x0e, 0x28, 0x9d, 0x56, 0xe8, 0x0b, 
+        0x45, 0x36, 0x03, 0xc6, 0x2e, 0x00, 0x98, 0x0c, 0xbc, 0x09, 0x21, 0x1b, 0xfd, 0x31, 0x1b, 0xfd, 
+        0x42, 0xa3, 0xb4, 0x01, 0xdf, 0xe7, 0xc0, 0x00, 0x00, 0x06, 0xff, 0xff, 0x26, 0x50, 0x02, 0x86, 
+        0x22, 0x00, 0x08, 0xad, 0xf2, 0x4c, 0x11, 0x56, 0x00, 0x0b, 0x21, 0x13, 0xfd, 0x31, 0x13, 0xfd, 
+        0x42, 0xa3, 0x62, 0x01, 0xd7, 0xe7, 0xc0, 0x00, 0x00, 0x06, 0xff, 0xff, 0x28, 0x70, 0xa8, 0x02, 
+        0xa0, 0xa6, 0x41, 0x87, 0x0a, 0x1a, 0x22, 0x02, 0x04, 0x20, 0x24, 0x41, 0xa6, 0x12, 0x11, 0x52, 
+        0x10, 0x08, 0x32, 0x1d, 0x07, 0x57, 0xb3, 0x02, 0x46, 0x6e, 0x00, 0xa6, 0x32, 0x02, 0xc6, 0x6c, 
+        0x00, 0x09, 0x0c, 0x62, 0x0c, 0x0b, 0x42, 0x4c, 0x11, 0x8c, 0x16, 0xf2, 0x4c, 0x0b, 0xc0, 0x2c, 
+        0x20, 0x32, 0xa0, 0x00, 0x85, 0x54, 0x00, 0x20, 0xe2, 0x20, 0x0c, 0x77, 0x72, 0x4c, 0x12, 0x0c, 
+        0x00, 0xf9, 0xad, 0x82, 0x0c, 0x0d, 0xb8, 0x9d, 0x92, 0x0d, 0x00, 0x0c, 0x8a, 0xe0, 0x9a, 0x83, 
+        0x00, 0xbf, 0x83, 0xb9, 0x9d, 0x92, 0x4d, 0x00, 0x16, 0x68, 0x0d, 0x21, 0xf7, 0xfc, 0x31, 0xf7, 
+        0xfc, 0x42, 0xa3, 0xc9, 0x01, 0xbb, 0xe7, 0xc0, 0x00, 0x00, 0x06, 0xff, 0xff, 0x21, 0xf2, 0xfc, 
+        0x31, 0xf3, 0xfc, 0x42, 0xa3, 0x9b, 0x01, 0xb6, 0xe7, 0xc0, 0x00, 0x00, 0x06, 0xff, 0xff, 0x05, 
+        0x58, 0x04, 0xc0, 0x2c, 0x20, 0x32, 0xa0, 0x00, 0x0c, 0x30, 0xe8, 0xad, 0xe9, 0x0c, 0x02, 0x4c, 
+        0x11, 0xc5, 0x4e, 0x00, 0xed, 0x02, 0x0c, 0x60, 0x86, 0xc0, 0xff, 0x22, 0x2d, 0x09, 0x16, 0x32, 
+        0x05, 0x42, 0x20, 0x07, 0x42, 0x24, 0x00, 0x2d, 0x0c, 0x40, 0x49, 0x05, 0x40, 0x35, 0x93, 0x32, 
+        0x4d, 0x2e, 0x3d, 0x0e, 0x05, 0xd4, 0xff, 0x22, 0x0c, 0x04, 0x58, 0x9d, 0x59, 0x0c, 0x45, 0xdd, 
+        0x06, 0xe2, 0x4c, 0x11, 0xf2, 0x4c, 0x12, 0x2d, 0x0c, 0x38, 0xad, 0x0c, 0x04, 0x45, 0xc6, 0xff, 
+        0x0c, 0x10, 0x0c, 0x1e, 0x46, 0xda, 0xff, 0x68, 0x9d, 0x09, 0x31, 0x16, 0x16, 0x08, 0x09, 0x91, 
+        0x16, 0xa4, 0x1c, 0x21, 0xd5, 0xfc, 0x31, 0xd5, 0xfc, 0x42, 0xa3, 0x3c, 0x01, 0x99, 0xe7, 0xc0, 
+        0x00, 0x00, 0x06, 0xff, 0xff, 0x72, 0x2c, 0x00, 0x56, 0x57, 0x04, 0x02, 0x20, 0x07, 0x08, 0x00, 
+        0x00, 0x89, 0x05, 0x16, 0xc8, 0x0f, 0x2d, 0x01, 0x2b, 0x31, 0x4b, 0x41, 0x8b, 0x51, 0x85, 0x4f, 
+        0x07, 0x58, 0x21, 0x08, 0xad, 0x48, 0x11, 0x08, 0x70, 0x32, 0x11, 0x01, 0x22, 0x00, 0x00, 0x68, 
+        0x00, 0x20, 0x22, 0x34, 0x60, 0x6b, 0x05, 0x56, 0x16, 0x15, 0x0c, 0x06, 0x45, 0x8f, 0x03, 0x06, 
+        0x56, 0x00, 0xc8, 0x51, 0xd8, 0x61, 0xe8, 0x71, 0xf8, 0x81, 0x08, 0x41, 0x12, 0xc1, 0x30, 0x0d, 
+        0xf0, 0x2d, 0x0c, 0x3d, 0x0e, 0x05, 0xcb, 0xff, 0xe2, 0x4c, 0x11, 0x38, 0xad, 0x0c, 0x42, 0x0c, 
+        0x04, 0x22, 0x4c, 0x12, 0x2d, 0x0c, 0xc5, 0xbd, 0xff, 0x0c, 0x1e, 0x0c, 0x00, 0x06, 0xb8, 0xff, 
+        0xdc, 0x74, 0x2d, 0x0c, 0x3d, 0x0f, 0x05, 0xc9, 0xff, 0x32, 0x0c, 0x0b, 0x8c, 0x13, 0xf2, 0x4c, 
+        0x0b, 0x0c, 0x0e, 0x0c, 0xa4, 0x42, 0x4c, 0x12, 0x46, 0x05, 0x00, 0xe0, 0x3e, 0x20, 0xc0, 0x2c, 
+        0x20, 0x45, 0xc7, 0xff, 0xe2, 0xa0, 0x01, 0x0c, 0xd5, 0x0c, 0x16, 0x62, 0x4c, 0x11, 0x52, 0x4c, 
+        0x12, 0x08, 0x31, 0x08, 0x70, 0x48, 0x00, 0xb7, 0x74, 0x2a, 0x22, 0x00, 0x00, 0x32, 0x00, 0x04, 
+        0x20, 0x22, 0x34, 0x30, 0x34, 0x41, 0x2b, 0x33, 0x30, 0x30, 0x74, 0x85, 0x86, 0x03, 0x48, 0x31, 
+        0x48, 0x74, 0x2c, 0x02, 0x42, 0x04, 0x00, 0x0c, 0x63, 0x40, 0x42, 0x34, 0x01, 0xe7, 0xfe, 0xc0, 
+        0x00, 0x00, 0x46, 0xe5, 0xff, 0xc7, 0x74, 0x18, 0x28, 0x31, 0x0c, 0x13, 0xc5, 0x6c, 0x04, 0x06, 
+        0xe2, 0xff, 0x00, 0x00, 0x00, 0x2d, 0x0c, 0x3d, 0x00, 0x05, 0xce, 0xff, 0x0c, 0x0e, 0x46, 0x97, 
+        0xff, 0x72, 0x0d, 0x0d, 0x92, 0x0c, 0x11, 0x0c, 0x18, 0x42, 0x00, 0x05, 0x0c, 0x05, 0x40, 0x60, 
+        0x54, 0x90, 0x58, 0x83, 0x77, 0x36, 0x5a, 0x38, 0x31, 0x2d, 0x0c, 0x0c, 0x24, 0xc5, 0xaa, 0xff, 
+        0xc6, 0xd5, 0xff, 0xc7, 0x70, 0x29, 0xc0, 0x2c, 0x20, 0xf0, 0x3f, 0x20, 0x85, 0xbe, 0xff, 0x28, 
+        0xad, 0x0c, 0x23, 0x32, 0x4c, 0x12, 0x28, 0x52, 0x05, 0xfd, 0x05, 0x4d, 0x02, 0x28, 0xad, 0x16, 
+        0x64, 0x0c, 0x28, 0x72, 0x22, 0x02, 0x04, 0x20, 0x20, 0x34, 0x05, 0x6e, 0x03, 0x06, 0x07, 0x00, 
+        0x2d, 0x0c, 0x3d, 0x0f, 0x05, 0xbc, 0xff, 0x32, 0x0c, 0x0b, 0x8c, 0x13, 0xf2, 0x4c, 0x0b, 0x2d, 
+        0x0c, 0x0c, 0x34, 0x38, 0xad, 0x42, 0x4c, 0x12, 0x0c, 0x14, 0x85, 0xae, 0xff, 0x0c, 0x0e, 0x06, 
+        0xc2, 0xff, 0x62, 0x00, 0x06, 0x72, 0x0d, 0x0c, 0x80, 0x66, 0x11, 0x40, 0x66, 0x20, 0x60, 0x66, 
+        0x54, 0x77, 0x36, 0x0b, 0x38, 0x31, 0x2d, 0x0c, 0x0c, 0x34, 0x05, 0xa4, 0xff, 0x86, 0xba, 0xff, 
+        0x38, 0x31, 0x2d, 0x0c, 0x0c, 0x44, 0x45, 0xa3, 0xff, 0x86, 0xb7, 0xff, 0x62, 0x00, 0x04, 0x60, 
+        0x64, 0x41, 0x62, 0xc6, 0x01, 0x60, 0x60, 0x74, 0x85, 0x79, 0x03, 0x42, 0x2d, 0x0a, 0x42, 0x24, 
+        0x07, 0x2c, 0x02, 0x42, 0x04, 0x00, 0x0c, 0x63, 0x40, 0x42, 0x34, 0x01, 0xaf, 0xfe, 0xc0, 0x00, 
+        0x00, 0x2d, 0x0c, 0x0c, 0x03, 0x05, 0xb5, 0xff, 0xe2, 0x4c, 0x12, 0x86, 0xe7, 0xff, 0x68, 0x70, 
+        0x2d, 0x0c, 0x68, 0x06, 0xed, 0x00, 0x60, 0x69, 0x05, 0x60, 0x35, 0x93, 0xc5, 0x1b, 0xff, 0x48, 
+        0x7e, 0x48, 0x04, 0xd7, 0x64, 0x18, 0xc7, 0xe4, 0x15, 0x2d, 0x0c, 0x85, 0xb9, 0xff, 0x0c, 0x0e, 
+        0x46, 0xaf, 0xff, 0x49, 0x31, 0x2d, 0x0c, 0x05, 0xb3, 0xff, 0xed, 0x02, 0x46, 0xac, 0xff, 0x2d, 
+        0x0c, 0x45, 0xbb, 0xff, 0xed, 0x02, 0xc6, 0xa9, 0xff, 0x0c, 0x13, 0x05, 0x64, 0x04, 0xc6, 0xd6, 
+        0xff, 0x00, 0x00, 0x00, 0x12, 0xc1, 0xe0, 0xc2, 0x61, 0x01, 0xd2, 0x61, 0x02, 0xe2, 0x61, 0x03, 
+        0xf9, 0x41, 0x09, 0x01, 0x45, 0xd6, 0x06, 0xcd, 0x02, 0xbc, 0x42, 0x0c, 0x1f, 0xc6, 0x06, 0x00, 
+        0xd0, 0xe0, 0x74, 0xe0, 0x2e, 0x20, 0x05, 0xd3, 0x06, 0x2d, 0x0e, 0x45, 0x03, 0x00, 0x7c, 0xf0, 
+        0x00, 0x1d, 0x40, 0x00, 0x2f, 0xa1, 0x00, 0x22, 0x30, 0x20, 0xcc, 0x10, 0xc0, 0xd0, 0x60, 0xc0, 
+        0xdd, 0x10, 0xd0, 0xfd, 0x40, 0xd0, 0xd0, 0x60, 0xd2, 0xcd, 0x1f, 0xd6, 0x1d, 0xfd, 0xc5, 0xd3, 
+        0x06, 0xc8, 0x11, 0xd8, 0x21, 0xe8, 0x31, 0xf8, 0x41, 0x08, 0x01, 0x12, 0xc1, 0x20, 0x0d, 0xf0, 
+        0x12, 0xc1, 0xf0, 0x09, 0x01, 0xb6, 0x82, 0x11, 0x21, 0x38, 0xfc, 0x31, 0x38, 0xfc, 0x42, 0xa3, 
+        0xe9, 0x01, 0xfb, 0xe6, 0xc0, 0x00, 0x00, 0x06, 0xff, 0xff, 0x01, 0x2c, 0xfc, 0x20, 0x22, 0xb0, 
+        0x00, 0x22, 0xa0, 0x38, 0x02, 0xdc, 0x03, 0x21, 0x30, 0xfc, 0x31, 0x30, 0xfc, 0x42, 0xa3, 0xeb, 
+        0x01, 0xf4, 0xe6, 0xc0, 0x00, 0x00, 0x06, 0xff, 0xff, 0x42, 0x02, 0x11, 0x26, 0x14, 0x11, 0x21, 
+        0x2a, 0xfc, 0x31, 0x2a, 0xfc, 0x42, 0xa3, 0xec, 0x01, 0xee, 0xe6, 0xc0, 0x00, 0x00, 0x06, 0xff, 
+        0xff, 0x52, 0x23, 0x07, 0x72, 0x13, 0x08, 0x52, 0x25, 0x00, 0x62, 0xa3, 0x00, 0x50, 0x56, 0x41, 
+        0x67, 0x85, 0x13, 0x62, 0xc0, 0xd0, 0x62, 0x16, 0x07, 0x77, 0xb6, 0x0a, 0x85, 0x29, 0x00, 0x02, 
+        0x21, 0x00, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x0c, 0x14, 0xc5, 0x00, 0x00, 0xc6, 0xfb, 0xff, 0x00, 
+        0x0c, 0x02, 0x0d, 0xf0, 0x00, 0x01, 0x40, 0x00, 0x12, 0xc1, 0xf0, 0x09, 0x01, 0xc9, 0x11, 0xd9, 
+        0x21, 0xcd, 0x02, 0xdd, 0x03, 0xdc, 0x03, 0x21, 0x14, 0xfc, 0x31, 0x14, 0xfc, 0x42, 0xa4, 0x09, 
+        0x01, 0xd8, 0xe6, 0xc0, 0x00, 0x00, 0x06, 0xff, 0xff, 0x01, 0x03, 0xfc, 0x72, 0x02, 0x09, 0x22, 
+        0x00, 0x0d, 0x3d, 0x07, 0x27, 0xb7, 0x0a, 0x1b, 0x37, 0x32, 0x4c, 0x09, 0x22, 0x00, 0x0d, 0x30, 
+        0x30, 0x74, 0x27, 0xb3, 0x10, 0x22, 0x0c, 0x06, 0x52, 0x0c, 0x08, 0x1b, 0x62, 0x57, 0xb2, 0x0b, 
+        0x62, 0x4c, 0x06, 0x46, 0x01, 0x00, 0x72, 0x0c, 0x07, 0x72, 0x4c, 0x06, 0xb8, 0x7d, 0x82, 0x00, 
+        0x00, 0x22, 0x0b, 0x05, 0xa2, 0xa0, 0xc0, 0xa0, 0xa2, 0x10, 0x20, 0x20, 0x54, 0x1b, 0x22, 0x20, 
+        0x20, 0x54, 0x20, 0xaa, 0x20, 0xa2, 0x4b, 0x05, 0x92, 0x0c, 0x04, 0x97, 0x98, 0x28, 0x28, 0x7d, 
+        0x72, 0x02, 0x04, 0xb2, 0x02, 0x05, 0x70, 0x34, 0x41, 0x8c, 0x94, 0xb0, 0xb0, 0x54, 0xb7, 0xa3, 
+        0x17, 0x48, 0x02, 0xc7, 0xf4, 0x12, 0x70, 0x50, 0x34, 0x1b, 0x63, 0x60, 0x60, 0x34, 0xc0, 0x66, 
+        0x11, 0x60, 0x55, 0x20, 0x52, 0x42, 0x04, 0x28, 0x7d, 0x32, 0x0c, 0x11, 0x26, 0x23, 0x14, 0x26, 
+        0x13, 0x11, 0x21, 0xed, 0xfb, 0x31, 0xed, 0xfb, 0x42, 0xa4, 0x1a, 0x01, 0xb1, 0xe6, 0xc0, 0x00, 
+        0x00, 0x06, 0xff, 0xff, 0x45, 0x9f, 0x05, 0x01, 0xdc, 0xfb, 0x20, 0x72, 0x20, 0x22, 0x2d, 0x07, 
+        0x56, 0x87, 0x01, 0x82, 0x02, 0x05, 0x92, 0x00, 0x0d, 0x80, 0x80, 0x54, 0x97, 0xb8, 0x0c, 0x2d, 
+        0x0d, 0xc5, 0xf1, 0xff, 0x01, 0xd5, 0xfb, 0x16, 0xe2, 0x05, 0x28, 0x7d, 0x98, 0x02, 0xa1, 0xc5, 
+        0xff, 0x90, 0x96, 0x41, 0xa7, 0xc9, 0x2c, 0xb2, 0x1d, 0x08, 0x32, 0x02, 0x04, 0xa2, 0x10, 0x07, 
+        0x30, 0x30, 0x34, 0xb7, 0xba, 0x35, 0x1c, 0x00, 0x0c, 0x04, 0x00, 0x53, 0x20, 0x52, 0x42, 0x04, 
+        0x3d, 0x0d, 0x2d, 0x0c, 0x49, 0x0c, 0x45, 0x9d, 0xff, 0xc8, 0x11, 0xd8, 0x21, 0x08, 0x01, 0x12, 
+        0xc1, 0x10, 0x0d, 0xf0, 0x72, 0x0c, 0x04, 0x0c, 0x68, 0x62, 0x00, 0x00, 0x82, 0x4c, 0x11, 0x77, 
+        0x96, 0x0e, 0x2d, 0x0c, 0x0c, 0x03, 0x45, 0xa1, 0xff, 0x06, 0xf7, 0xff, 0x3c, 0x00, 0x86, 0xf1, 
+        0xff, 0x2d, 0x0c, 0x85, 0x84, 0xff, 0xc6, 0xf3, 0xff, 0xa2, 0x0c, 0x04, 0x92, 0x00, 0x00, 0xa7, 
+        0x99, 0x1a, 0xb8, 0xa0, 0xd7, 0x9b, 0x3a, 0x08, 0x7d, 0x08, 0x00, 0xc7, 0xf0, 0x33, 0xb7, 0xf0, 
+        0x30, 0x28, 0x0d, 0x87, 0x70, 0x1e, 0x08, 0x12, 0x4b, 0x00, 0x46, 0x06, 0x00, 0x22, 0x0c, 0x11, 
+        0x26, 0x12, 0x28, 0x21, 0xbd, 0xfb, 0x31, 0xbd, 0xfb, 0x42, 0xa4, 0x3b, 0x01, 0x81, 0xe6, 0xc0, 
+        0x00, 0x00, 0x06, 0xff, 0xff, 0x08, 0x12, 0x32, 0x00, 0x01, 0x0c, 0x84, 0x40, 0x33, 0x20, 0x32, 
+        0x40, 0x01, 0x2d, 0x0c, 0x0c, 0x13, 0x45, 0x9b, 0xff, 0x06, 0xdf, 0xff, 0xc0, 0x2c, 0x20, 0x32, 
+        0xa0, 0x00, 0x52, 0xa0, 0x04, 0x52, 0x4c, 0x11, 0x45, 0x00, 0x00, 0x86, 0xda, 0xff, 0x00, 0x00, 
+        0x12, 0xc1, 0xf0, 0xc2, 0x61, 0x02, 0x02, 0x61, 0x01, 0x02, 0x02, 0x0e, 0xcd, 0x02, 0xec, 0x70, 
+        0x02, 0x02, 0x0b, 0x16, 0xb3, 0x03, 0x16, 0x80, 0x08, 0x22, 0x02, 0x04, 0x45, 0x8f, 0x06, 0x0c, 
+        0x03, 0x0c, 0x12, 0x0c, 0x04, 0x22, 0x4c, 0x11, 0x22, 0x0c, 0x04, 0xc5, 0x7e, 0x06, 0x0c, 0x12, 
+        0xc8, 0x21, 0x08, 0x11, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x32, 0xa0, 0x00, 0x32, 0x42, 0x0e, 0x22, 
+        0x22, 0x00, 0xc5, 0x03, 0x04, 0x22, 0xa0, 0x00, 0x0c, 0x04, 0x49, 0x0c, 0x42, 0x4c, 0x11, 0x46, 
+        0xf7, 0xff, 0x16, 0x10, 0x06, 0x22, 0x22, 0x00, 0x32, 0x22, 0x07, 0x28, 0x52, 0x42, 0x13, 0x03, 
+        0x52, 0x03, 0x08, 0x59, 0x01, 0x40, 0x47, 0x41, 0x42, 0x5c, 0x0b, 0xc5, 0x3b, 0x05, 0x28, 0x0c, 
+        0x08, 0x72, 0x78, 0x01, 0x62, 0x00, 0x08, 0x77, 0x16, 0x06, 0x85, 0x23, 0x04, 0x08, 0x0c, 0x08, 
+        0x70, 0x22, 0x9c, 0x0b, 0x42, 0x10, 0x03, 0x32, 0x10, 0x05, 0x40, 0x47, 0x41, 0x40, 0x33, 0xc0, 
+        0x30, 0x22, 0x80, 0x22, 0x5c, 0x0b, 0xc0, 0x2c, 0x20, 0x85, 0x4b, 0x00, 0x22, 0xa0, 0x01, 0x46, 
+        0xe3, 0xff, 0x32, 0xa0, 0x00, 0x05, 0x7d, 0xff, 0x22, 0x2c, 0x00, 0x32, 0x0c, 0x04, 0x05, 0x36, 
+        0x00, 0x22, 0xa0, 0x00, 0x06, 0xde, 0xff, 0x32, 0xa0, 0x00, 0xc5, 0x7b, 0xff, 0x32, 0x2c, 0x00, 
+        0x28, 0x53, 0x38, 0x73, 0x05, 0x36, 0x05, 0x28, 0x0c, 0x32, 0x0c, 0x04, 0x05, 0x34, 0x00, 0x0c, 
+        0x02, 0xc6, 0xd6, 0xff, 0x3f, 0xf0, 0x00, 0x00, 0x12, 0xc1, 0xf0, 0x52, 0x02, 0x0a, 0x09, 0x01, 
+        0xc9, 0x11, 0xd9, 0x21, 0xd1, 0x69, 0xfb, 0xcd, 0x02, 0x02, 0x0d, 0x0c, 0x2d, 0x05, 0x07, 0xb5, 
+        0x0a, 0x1b, 0x25, 0x22, 0x4c, 0x0a, 0x02, 0x0d, 0x0c, 0x20, 0x20, 0x74, 0x07, 0xb2, 0x10, 0x02, 
+        0x0c, 0x06, 0x32, 0x0c, 0x08, 0x1b, 0x40, 0x37, 0xb0, 0x0b, 0x42, 0x4c, 0x06, 0x46, 0x01, 0x00, 
+        0x52, 0x0c, 0x07, 0x52, 0x4c, 0x06, 0x28, 0xad, 0x62, 0x0d, 0x00, 0x98, 0x72, 0x81, 0xed, 0xff, 
+        0xa2, 0x09, 0x06, 0xb2, 0x09, 0x05, 0x80, 0xaa, 0x11, 0xb0, 0xaa, 0x20, 0x80, 0x8a, 0x10, 0xa0, 
+        0xa6, 0x54, 0x1b, 0xaa, 0xa0, 0xa0, 0x54, 0xa0, 0xaa, 0x11, 0xa0, 0x88, 0x20, 0x82, 0x49, 0x05, 
+        0x80, 0x88, 0x41, 0x82, 0x49, 0x06, 0x72, 0x0c, 0x04, 0x77, 0x96, 0x18, 0x08, 0x72, 0x32, 0x00, 
+        0x04, 0x30, 0xb0, 0x34, 0x30, 0x34, 0x41, 0x1b, 0x33, 0x30, 0x30, 0x34, 0xc0, 0x33, 0x11, 0x30, 
+        0xbb, 0x20, 0xb2, 0x40, 0x04, 0x02, 0x0c, 0x11, 0x26, 0x20, 0x14, 0x26, 0x10, 0x11, 0x21, 0x52, 
+        0xfb, 0x31, 0x52, 0xfb, 0x42, 0xa4, 0x8b, 0x01, 0x16, 0xe6, 0xc0, 0x00, 0x00, 0x06, 0xff, 0xff, 
+        0x22, 0x22, 0x07, 0x85, 0x78, 0x05, 0x56, 0xe2, 0x01, 0x22, 0x2d, 0x0a, 0x68, 0x72, 0x52, 0x0d, 
+        0x0c, 0x42, 0x06, 0x06, 0x62, 0x06, 0x05, 0x80, 0x44, 0x11, 0x60, 0x44, 0x20, 0x40, 0x46, 0x54, 
+        0x57, 0xb4, 0x04, 0xc5, 0xca, 0xff, 0xac, 0x62, 0x82, 0x0c, 0x04, 0x0c, 0x69, 0x72, 0x0d, 0x00, 
+        0x92, 0x4c, 0x11, 0x87, 0x97, 0x09, 0x2d, 0x0c, 0x0c, 0x03, 0x05, 0x7e, 0xff, 0x06, 0x01, 0x00, 
+        0x2d, 0x0c, 0x85, 0x61, 0xff, 0xc8, 0x11, 0xd8, 0x21, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 
+        0xb2, 0x0c, 0x04, 0xa2, 0x0d, 0x00, 0xb7, 0x9a, 0x2b, 0x28, 0xad, 0x48, 0x72, 0x48, 0x04, 0xc7, 
+        0xf4, 0x18, 0x08, 0x02, 0x87, 0x74, 0x06, 0x08, 0x10, 0x4b, 0x00, 0x46, 0x00, 0x00, 0x08, 0x10, 
+        0x22, 0x00, 0x01, 0x0c, 0x83, 0x30, 0x22, 0x20, 0x22, 0x40, 0x01, 0x2d, 0x0c, 0x0c, 0x13, 0xc5, 
+        0x79, 0xff, 0xc6, 0xef, 0xff, 0x42, 0x0c, 0x11, 0x26, 0x14, 0x11, 0x21, 0x2b, 0xfb, 0x31, 0x2b, 
+        0xfb, 0x42, 0xa4, 0xa1, 0x01, 0xef, 0xe5, 0xc0, 0x00, 0x00, 0x06, 0xff, 0xff, 0x2d, 0x0c, 0x0c, 
+        0x03, 0x0c, 0x45, 0x52, 0x4c, 0x11, 0x85, 0xdd, 0xff, 0x06, 0xe6, 0xff, 0x31, 0x1c, 0xfb, 0x12, 
+        0xc1, 0xf0, 0x09, 0x01, 0x20, 0x02, 0xb0, 0x30, 0x20, 0xa0, 0x38, 0x02, 0xdc, 0x03, 0x21, 0x1e, 
+        0xfb, 0x31, 0x1e, 0xfb, 0x42, 0xa4, 0xb7, 0x01, 0xe2, 0xe5, 0xc0, 0x00, 0x00, 0x06, 0xff, 0xff, 
+        0x42, 0x02, 0x11, 0x26, 0x14, 0x11, 0x21, 0x18, 0xfb, 0x31, 0x18, 0xfb, 0x42, 0xa4, 0xb8, 0x01, 
+        0xdc, 0xe5, 0xc0, 0x00, 0x00, 0x06, 0xff, 0xff, 0x0c, 0x14, 0xc5, 0xbe, 0xff, 0x08, 0x01, 0x12, 
+        0xc1, 0x10, 0x0d, 0xf0, 0x12, 0xc1, 0xf0, 0x09, 0x01, 0x05, 0xc1, 0xfe, 0xdc, 0x02, 0x21, 0x0e, 
+        0xfb, 0x31, 0x0e, 0xfb, 0x42, 0xa4, 0xc9, 0x01, 0xd2, 0xe5, 0xc0, 0x00, 0x00, 0x06, 0xff, 0xff, 
+        0x41, 0xfe, 0xfa, 0x38, 0xa4, 0x22, 0x04, 0x00, 0x52, 0x04, 0x00, 0x08, 0x73, 0x42, 0xc4, 0x30, 
+        0x50, 0x22, 0xb0, 0x08, 0x00, 0x40, 0x22, 0xa0, 0xe7, 0x60, 0x10, 0x0c, 0x06, 0x72, 0x02, 0x07, 
+        0x72, 0x42, 0x06, 0x62, 0x42, 0x09, 0x05, 0xe2, 0xff, 0x06, 0x01, 0x00, 0x0c, 0x04, 0x85, 0xb9, 
+        0xff, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x31, 0xf0, 0xfa, 0x22, 0x43, 0x00, 0x0d, 0xf0, 
+        0x10, 0x8c, 0xfe, 0x3f, 0x12, 0xc1, 0xf0, 0x09, 0x01, 0xc9, 0x11, 0xd9, 0x21, 0xcd, 0x02, 0xdd, 
+        0x03, 0x85, 0xba, 0xfe, 0xdc, 0x02, 0x21, 0xf4, 0xfa, 0x31, 0xf4, 0xfa, 0x42, 0xa4, 0xe6, 0x01, 
+        0xb8, 0xe5, 0xc0, 0x00, 0x00, 0x06, 0xff, 0xff, 0x21, 0xe4, 0xfa, 0x02, 0x02, 0x00, 0x07, 0x1d, 
+        0x11, 0x21, 0xed, 0xfa, 0x31, 0xee, 0xfa, 0x42, 0xa4, 0xe7, 0x01, 0xb1, 0xe5, 0xc0, 0x00, 0x00, 
+        0x06, 0xff, 0xff, 0x26, 0x1c, 0x38, 0x32, 0xa0, 0xc0, 0x37, 0x1c, 0x1c, 0x21, 0xed, 0xff, 0x3d, 
+        0x0c, 0x01, 0xab, 0xe5, 0xc0, 0x00, 0x00, 0x21, 0xe4, 0xfa, 0x31, 0xe4, 0xfa, 0x42, 0xa4, 0xf7, 
+        0x01, 0xa8, 0xe5, 0xc0, 0x00, 0x00, 0x06, 0xff, 0xff, 0x0c, 0x03, 0x0c, 0x64, 0x22, 0xc2, 0x30, 
+        0x00, 0x50, 0xb0, 0x20, 0x25, 0xa0, 0x42, 0x42, 0x11, 0x05, 0x65, 0xff, 0x06, 0x01, 0x00, 0x2d, 
+        0x0d, 0x85, 0xed, 0xff, 0xc8, 0x11, 0xd8, 0x21, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 
+        0x24, 0x8c, 0xfe, 0x3f, 0x12, 0xc1, 0xf0, 0xc9, 0x11, 0x09, 0x01, 0xcd, 0x02, 0xc5, 0xb1, 0xfe, 
+        0xdc, 0x02, 0x21, 0xd1, 0xfa, 0x31, 0xd1, 0xfa, 0x42, 0xa5, 0x0a, 0x01, 0x95, 0xe5, 0xc0, 0x00, 
+        0x00, 0x06, 0xff, 0xff, 0x26, 0x1c, 0x41, 0x02, 0xa0, 0xc0, 0x07, 0x1c, 0x1c, 0x21, 0xf4, 0xff, 
+        0x3d, 0x0c, 0x01, 0x8f, 0xe5, 0xc0, 0x00, 0x00, 0x21, 0xc8, 0xfa, 0x31, 0xc8, 0xfa, 0x42, 0xa5, 
+        0x1a, 0x01, 0x8b, 0xe5, 0xc0, 0x00, 0x00, 0x06, 0xff, 0xff, 0x0c, 0x03, 0x51, 0xb7, 0xfa, 0x0c, 
+        0x64, 0x22, 0x05, 0x00, 0x62, 0x05, 0x00, 0x52, 0xc5, 0x30, 0x60, 0x22, 0xb0, 0x50, 0x22, 0xa0, 
+        0x42, 0x42, 0x11, 0x85, 0x5d, 0xff, 0x86, 0x00, 0x00, 0x85, 0xea, 0xff, 0xc8, 0x11, 0x08, 0x01, 
+        0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x2a, 0x09, 0x00, 0x00, 0x21, 0x6e, 0xf1, 0x42, 
+        0xa1, 0x5f, 0x0c, 0x95, 0x61, 0xfd, 0xff, 0x0c, 0x77, 0x31, 0xa7, 0xfa, 0x82, 0xa2, 0x00, 0x89, 
+        0x13, 0x89, 0x23, 0x72, 0x43, 0x0d, 0x72, 0x43, 0x0c, 0x62, 0x53, 0x08, 0x62, 0x53, 0x07, 0x52, 
+        0x53, 0x0a, 0x42, 0x53, 0x0e, 0x22, 0x53, 0x0f, 0x0d, 0xf0, 0x00, 0x00, 0xff, 0xef, 0xff, 0x03, 
+        0x12, 0xc1, 0xf0, 0xc9, 0x31, 0x09, 0x21, 0x01, 0xa1, 0xfa, 0x30, 0xc3, 0xb0, 0x00, 0xcc, 0xa0, 
+        0x02, 0x0c, 0x11, 0x9c, 0x60, 0x26, 0x30, 0x14, 0x26, 0x40, 0x2a, 0x21, 0xa3, 0xfa, 0x31, 0xa3, 
+        0xfa, 0x42, 0xa5, 0xb9, 0x01, 0x67, 0xe5, 0xc0, 0x00, 0x00, 0x06, 0xff, 0xff, 0x26, 0x40, 0x15, 
+        0x29, 0x0c, 0xec, 0xa2, 0x21, 0x9d, 0xfa, 0x31, 0x9d, 0xfa, 0x42, 0xa5, 0xc1, 0x01, 0x60, 0xe5, 
+        0xc0, 0x00, 0x00, 0x06, 0xff, 0xff, 0x38, 0x0c, 0x20, 0x33, 0xc0, 0x16, 0x53, 0x0b, 0x21, 0x96, 
+        0xfa, 0x31, 0x96, 0xfa, 0x42, 0xa5, 0xbc, 0x01, 0x5a, 0xe5, 0xc0, 0x00, 0x00, 0x06, 0xff, 0xff, 
+        0x82, 0xa1, 0x00, 0x71, 0xe6, 0xff, 0x52, 0x12, 0x08, 0x68, 0x72, 0x41, 0x83, 0xfa, 0x38, 0x06, 
+        0x42, 0x14, 0x07, 0x30, 0x06, 0x41, 0x57, 0xb4, 0x22, 0x77, 0xe3, 0x1f, 0x80, 0x50, 0x20, 0x30, 
+        0x40, 0x54, 0xa0, 0x55, 0x11, 0x50, 0x44, 0x20, 0x40, 0x30, 0x54, 0x40, 0x46, 0x41, 0x70, 0x44, 
+        0x10, 0xa0, 0x44, 0x11, 0x40, 0x33, 0x20, 0x39, 0x06, 0x30, 0x06, 0x41, 0xc7, 0x60, 0x5d, 0x92, 
+        0x0c, 0x11, 0x66, 0x39, 0x57, 0xa2, 0x06, 0x04, 0xa0, 0xa4, 0x41, 0xa6, 0x3a, 0x4e, 0x41, 0x05, 
+        0xff, 0x30, 0x90, 0x54, 0x52, 0x06, 0x05, 0x80, 0xa0, 0x20, 0xa0, 0xaa, 0x11, 0x50, 0xb0, 0x54, 
+        0xa0, 0x99, 0x20, 0x90, 0xa6, 0x41, 0x70, 0xaa, 0x10, 0x90, 0x90, 0x54, 0xa0, 0xaa, 0x11, 0xa0, 
+        0x99, 0x20, 0xa2, 0x06, 0x06, 0xa0, 0xbb, 0x11, 0x80, 0xaa, 0x11, 0x50, 0xaa, 0x20, 0x40, 0xaa, 
+        0x10, 0xb0, 0xaa, 0x20, 0xa2, 0x46, 0x05, 0xa0, 0xa8, 0x41, 0xa2, 0x46, 0x06, 0x48, 0x72, 0x99, 
+        0x06, 0xb2, 0x04, 0x05, 0x52, 0xa0, 0xc0, 0x50, 0xbb, 0x10, 0xb2, 0x44, 0x05, 0x2d, 0x0c, 0x0c, 
+        0x03, 0xc5, 0xa3, 0xfe, 0xb2, 0x0c, 0x06, 0xb2, 0x61, 0x00, 0x85, 0xba, 0x07, 0x29, 0x11, 0x85, 
+        0xaa, 0xfa, 0x32, 0x0c, 0x05, 0x68, 0x01, 0x1c, 0xf5, 0x48, 0x11, 0x60, 0x55, 0xc0, 0x00, 0x05, 
+        0x40, 0x0c, 0x15, 0x40, 0x40, 0xb1, 0x40, 0x41, 0x41, 0x52, 0x4c, 0x11, 0x40, 0x42, 0x82, 0x22, 
+        0x0c, 0x04, 0x40, 0x42, 0xf4, 0x05, 0x2d, 0x06, 0xc8, 0x31, 0x08, 0x21, 0x12, 0xc1, 0x10, 0x0d, 
+        0xf0, 0x00, 0x00, 0x00, 0x32, 0xa0, 0x00, 0x12, 0xc1, 0xf0, 0xc2, 0x61, 0x01, 0x02, 0x61, 0x00, 
+        0xcd, 0x02, 0xc5, 0x9e, 0xfe, 0x22, 0x0c, 0x04, 0x0c, 0x03, 0x0c, 0x04, 0x0c, 0x10, 0x02, 0x4c, 
+        0x11, 0x45, 0x2a, 0x06, 0xc8, 0x11, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0x00, 
+        0xa0, 0x80, 0xfe, 0x3f, 0x12, 0xc1, 0xf0, 0x29, 0x01, 0x09, 0x11, 0x01, 0xde, 0xe8, 0xc0, 0x00, 
+        0x00, 0x0c, 0x00, 0x21, 0xfb, 0xff, 0x38, 0x01, 0x32, 0x42, 0x00, 0x09, 0x22, 0x09, 0x32, 0x09, 
+        0x12, 0x09, 0x42, 0x01, 0xd9, 0xe8, 0xc0, 0x00, 0x00, 0x08, 0x11, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 
+        0x12, 0xc1, 0xf0, 0xc2, 0x61, 0x01, 0x02, 0x61, 0x00, 0x30, 0xc3, 0x20, 0x01, 0xf1, 0xff, 0x32, 
+        0x03, 0x08, 0x02, 0x00, 0x00, 0x30, 0x00, 0xc0, 0x56, 0xb0, 0x0a, 0x05, 0x6a, 0x05, 0x16, 0xd2, 
+        0x07, 0x02, 0x0c, 0x08, 0xb6, 0xb0, 0x77, 0x22, 0xc0, 0xf0, 0x20, 0x20, 0x24, 0xa6, 0x32, 0x6e, 
+        0x38, 0x0c, 0x51, 0xe7, 0xff, 0x30, 0x3c, 0x05, 0x16, 0xb3, 0x08, 0x48, 0x25, 0x78, 0x45, 0x02, 
+        0x0c, 0x05, 0xb8, 0x35, 0x00, 0x00, 0x54, 0x0a, 0xbb, 0xb9, 0x35, 0xa2, 0x0c, 0x04, 0x98, 0x15, 
+        0xa0, 0xa4, 0x41, 0xaa, 0x99, 0x99, 0x15, 0x82, 0x0c, 0x06, 0x92, 0x0c, 0x05, 0x80, 0x88, 0x11, 
+        0x90, 0x88, 0x20, 0x92, 0x0c, 0x04, 0x80, 0x86, 0x54, 0x90, 0x94, 0x41, 0x90, 0x88, 0x82, 0x8a, 
+        0x77, 0x79, 0x45, 0x72, 0x0c, 0x05, 0x62, 0x0c, 0x06, 0x82, 0x0c, 0x0f, 0x80, 0x66, 0x11, 0x0b, 
+        0x88, 0x70, 0x66, 0x20, 0x72, 0x0c, 0x04, 0x60, 0x66, 0x54, 0x70, 0x74, 0x41, 0x1b, 0x97, 0x60, 
+        0x77, 0x82, 0x90, 0x66, 0x82, 0x80, 0x67, 0x93, 0x6a, 0x44, 0x49, 0x25, 0xc6, 0x09, 0x00, 0x41, 
+        0xcc, 0xff, 0x22, 0x0c, 0x04, 0x08, 0x24, 0x20, 0x24, 0x41, 0x2a, 0x00, 0x1b, 0x30, 0x39, 0x24, 
+        0x22, 0x0c, 0x0f, 0x51, 0xc7, 0xff, 0x66, 0x12, 0x07, 0x38, 0x34, 0x09, 0x24, 0x1b, 0x33, 0x39, 
+        0x34, 0x48, 0x15, 0x1b, 0x44, 0x49, 0x15, 0xc8, 0x11, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 
+        0x31, 0xc0, 0xff, 0x72, 0x03, 0x00, 0x79, 0x02, 0x68, 0x43, 0x69, 0x12, 0x58, 0x13, 0x59, 0x22, 
+        0x48, 0x23, 0x49, 0x32, 0x38, 0x33, 0x39, 0x42, 0x0c, 0x52, 0x0d, 0xf0, 0xd8, 0x8d, 0xfe, 0x3f, 
+        0x12, 0xc1, 0xf0, 0x02, 0x61, 0x00, 0xd9, 0x21, 0xc9, 0x11, 0xdd, 0x03, 0xcd, 0x02, 0x05, 0x1d, 
+        0x03, 0x38, 0x7c, 0x08, 0x03, 0x97, 0x60, 0x07, 0xc7, 0xf0, 0x04, 0x28, 0x5c, 0x05, 0x64, 0x04, 
+        0x0c, 0x42, 0xc5, 0x9d, 0x03, 0x16, 0xcd, 0x04, 0x28, 0x7c, 0x22, 0x02, 0x06, 0x01, 0xf3, 0xf9, 
+        0x20, 0x24, 0x24, 0x20, 0xd2, 0xb0, 0x00, 0xdd, 0xa0, 0x45, 0x7c, 0xfe, 0xcc, 0xa2, 0x32, 0x0d, 
+        0x12, 0x21, 0xee, 0xff, 0x01, 0xbb, 0xe4, 0xc0, 0x00, 0x00, 0x28, 0x7c, 0x22, 0x02, 0x06, 0x20, 
+        0x24, 0x24, 0xc5, 0x7a, 0xfe, 0xdc, 0x02, 0x21, 0xf0, 0xf9, 0x31, 0xf0, 0xf9, 0x42, 0xa6, 0x4b, 
+        0x01, 0xb4, 0xe4, 0xc0, 0x00, 0x00, 0x06, 0xff, 0xff, 0x22, 0x2c, 0x07, 0x22, 0x02, 0x06, 0x20, 
+        0x24, 0x24, 0x85, 0x0f, 0x02, 0xc2, 0x21, 0x01, 0xd2, 0x21, 0x02, 0x08, 0x01, 0x12, 0xc1, 0x10, 
+        0x0d, 0xf0, 0x00, 0x00, 0x12, 0xc1, 0xf0, 0x02, 0x61, 0x00, 0x45, 0x1c, 0x03, 0x22, 0xa0, 0x05, 
+        0xc5, 0x96, 0x03, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0x40, 0x22, 0x11, 0x12, 
+        0xc1, 0xf0, 0x02, 0x61, 0x00, 0x45, 0xa3, 0x08, 0x02, 0x21, 0x00, 0x12, 0xc1, 0x10, 0x80, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x30, 0x22, 0x82, 0x20, 0x2c, 0x41, 0x0d, 0xf0, 0xc0, 0x22, 0xff, 0x3f, 
+        0x51, 0xff, 0xff, 0x41, 0x83, 0xe4, 0xc0, 0x20, 0x00, 0x32, 0x24, 0x47, 0x39, 0x05, 0x3a, 0x32, 
+        0x39, 0x15, 0xc0, 0x20, 0x00, 0x32, 0x64, 0x41, 0x0d, 0xf0, 0x00, 0x00, 0xff, 0xff, 0xfc, 0xff, 
+        0x00, 0x00, 0x01, 0x00, 0x12, 0xc1, 0xf0, 0x39, 0x01, 0x09, 0x11, 0x01, 0xab, 0xf2, 0xc9, 0x21, 
+        0x02, 0x00, 0x39, 0xc1, 0x77, 0xe4, 0xdc, 0x20, 0x7c, 0xc5, 0xc0, 0x20, 0x00, 0x32, 0x2c, 0x59, 
+        0x50, 0x33, 0x10, 0xc0, 0x20, 0x00, 0x32, 0x6c, 0x59, 0x86, 0x07, 0x00, 0x66, 0x10, 0x07, 0x2c, 
+        0x06, 0x60, 0x44, 0x20, 0xc6, 0x04, 0x00, 0x66, 0x20, 0x10, 0x0c, 0x38, 0xc0, 0x20, 0x00, 0x72, 
+        0x2c, 0x59, 0x80, 0x77, 0x20, 0xc0, 0x20, 0x00, 0x72, 0x6c, 0x59, 0x0c, 0x03, 0x01, 0xf6, 0xeb, 
+        0xc0, 0x20, 0x00, 0x32, 0x6c, 0x50, 0xc0, 0x20, 0x00, 0x22, 0x6c, 0x51, 0xc0, 0x20, 0x00, 0x22, 
+        0xa0, 0x77, 0x0c, 0x55, 0x0c, 0x56, 0x0c, 0x17, 0x08, 0x00, 0x42, 0x6c, 0x40, 0x02, 0x20, 0x27, 
+        0x1c, 0xc4, 0xc0, 0x00, 0x00, 0x51, 0xe1, 0xff, 0x41, 0xe2, 0xff, 0x31, 0x6a, 0xe5, 0xc0, 0x20, 
+        0x00, 0x22, 0x23, 0xf2, 0x50, 0x22, 0x10, 0x40, 0x22, 0x20, 0xc0, 0x20, 0x00, 0x22, 0x63, 0xf2, 
+        0x0c, 0x12, 0x01, 0x83, 0xe6, 0xc0, 0x00, 0x00, 0x22, 0xa0, 0x77, 0x0c, 0x03, 0x1c, 0xc4, 0x01, 
+        0xe2, 0xeb, 0x0c, 0x55, 0x08, 0x00, 0x0c, 0x56, 0x02, 0x20, 0x27, 0x0c, 0x07, 0xc0, 0x00, 0x00, 
+        0xc0, 0x20, 0x00, 0x28, 0x01, 0x08, 0x11, 0x22, 0x6c, 0x44, 0xc8, 0x21, 0x12, 0xc1, 0x10, 0x0d, 
+        0xf0, 0x00, 0x00, 0x00, 0x82, 0xaf, 0xc0, 0x51, 0x4a, 0xe4, 0xc0, 0x20, 0x00, 0x72, 0x25, 0x46, 
+        0x80, 0x77, 0x10, 0x20, 0x77, 0x20, 0xc0, 0x20, 0x00, 0x72, 0x65, 0x46, 0x7c, 0xe6, 0xc0, 0x20, 
+        0x00, 0x42, 0x25, 0x6a, 0x60, 0x44, 0x10, 0x30, 0x44, 0x20, 0xc0, 0x20, 0x00, 0x42, 0x65, 0x6a, 
+        0x0d, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x50, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 
+        0x12, 0xc1, 0xf0, 0x09, 0x01, 0x31, 0xc5, 0xe5, 0x41, 0xfb, 0xff, 0x01, 0x4f, 0xe4, 0xc0, 0x20, 
+        0x00, 0x22, 0x20, 0x96, 0x30, 0x22, 0x10, 0x20, 0x2f, 0x41, 0x66, 0x12, 0x2c, 0xc0, 0x20, 0x00, 
+        0x02, 0x20, 0x95, 0x40, 0x50, 0x10, 0x50, 0x58, 0x75, 0x26, 0x25, 0x0c, 0x0c, 0x42, 0x0c, 0x03, 
+        0x41, 0xf2, 0xff, 0x05, 0xed, 0xff, 0x46, 0x02, 0x00, 0x0c, 0x42, 0x0c, 0x03, 0x41, 0xef, 0xff, 
+        0x05, 0xec, 0xff, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0xc0, 0x20, 0x00, 0x02, 0x20, 0x97, 
+        0xc6, 0xf3, 0xff, 0x00, 0x12, 0xc1, 0xf0, 0x09, 0x01, 0x31, 0xb0, 0xe5, 0x41, 0xe6, 0xff, 0x01, 
+        0x3a, 0xe4, 0xc0, 0x20, 0x00, 0x22, 0x20, 0x96, 0x30, 0x22, 0x10, 0x20, 0x2f, 0x41, 0x66, 0x12, 
+        0x2c, 0xc0, 0x20, 0x00, 0x02, 0x20, 0x95, 0x40, 0x50, 0x10, 0x50, 0x58, 0x75, 0x26, 0x25, 0x0c, 
+        0x0c, 0x02, 0x0c, 0x03, 0x41, 0xdd, 0xff, 0xc5, 0xe7, 0xff, 0x46, 0x02, 0x00, 0x0c, 0x02, 0x0c, 
+        0x03, 0x41, 0xda, 0xff, 0xc5, 0xe6, 0xff, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0xc0, 0x20, 
+        0x00, 0x02, 0x20, 0x97, 0xc6, 0xf3, 0xff, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x12, 0xc1, 0xf0, 0x09, 
+        0x01, 0xc9, 0x11, 0xd9, 0x21, 0x51, 0xb2, 0xe9, 0xdd, 0x02, 0xc1, 0x1a, 0xe5, 0xc0, 0x20, 0x00, 
+        0x42, 0x2c, 0x5c, 0x50, 0x44, 0x10, 0xc0, 0x20, 0x00, 0x42, 0x6c, 0x5c, 0x32, 0xa1, 0x01, 0xc0, 
+        0x20, 0x00, 0x32, 0x6c, 0x5b, 0x21, 0xf5, 0xef, 0xc0, 0x20, 0x00, 0x02, 0x2c, 0x5b, 0x20, 0x00, 
+        0x20, 0xc0, 0x20, 0x00, 0x22, 0xa0, 0x64, 0x02, 0x6c, 0x5b, 0x01, 0x2d, 0xe6, 0xc0, 0x00, 0x00, 
+        0xc0, 0x20, 0x00, 0x62, 0x2c, 0x5c, 0x96, 0x86, 0x00, 0xc0, 0x20, 0x00, 0x72, 0x2c, 0x5c, 0xd6, 
+        0x67, 0xff, 0x31, 0xfe, 0xef, 0xc0, 0x20, 0x00, 0x01, 0x2c, 0xf2, 0x22, 0x2c, 0x5c, 0x02, 0x00, 
+        0x01, 0x30, 0x22, 0x10, 0x8c, 0x40, 0x26, 0x10, 0x07, 0x26, 0x20, 0x54, 0x2c, 0x83, 0x86, 0x00, 
+        0x00, 0x32, 0xa0, 0x1a, 0xc0, 0x22, 0x11, 0xc2, 0x2d, 0x01, 0x05, 0x7d, 0x08, 0x3d, 0x02, 0xdc, 
+        0x3c, 0x29, 0x1d, 0x21, 0xdd, 0xff, 0x45, 0x7c, 0x08, 0x29, 0x0d, 0xc8, 0x11, 0xd8, 0x21, 0x08, 
+        0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x27, 0xbc, 0x05, 0xc0, 0x02, 0xc0, 0x86, 0x00, 0x00, 0x20, 
+        0x0c, 0xc0, 0x22, 0xa1, 0xff, 0x07, 0x32, 0xe2, 0x30, 0x43, 0xa0, 0x21, 0xd3, 0xff, 0xc0, 0x3c, 
+        0x90, 0x4a, 0x33, 0x30, 0x33, 0x41, 0x39, 0x1d, 0x05, 0x79, 0x08, 0x86, 0xf2, 0xff, 0x00, 0x00, 
+        0x00, 0x1c, 0x83, 0x46, 0xeb, 0xff, 0x00, 0x00, 0x64, 0x80, 0x0c, 0x00, 0x21, 0xff, 0xff, 0x31, 
+        0xdc, 0xe3, 0xc0, 0x20, 0x00, 0x22, 0x63, 0x43, 0x0d, 0xf0, 0x00, 0x00, 0x31, 0x0b, 0xf2, 0x22, 
+        0x03, 0x39, 0x32, 0x03, 0x3a, 0x26, 0x22, 0x10, 0x26, 0x13, 0x0d, 0x26, 0x33, 0x0a, 0x0c, 0x23, 
+        0x41, 0xd4, 0xe3, 0xc0, 0x20, 0x00, 0x32, 0x64, 0x68, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x10, 0x00, 
+        0x7c, 0xf5, 0x31, 0xcf, 0xe3, 0xc0, 0x20, 0x00, 0x52, 0x63, 0x49, 0x41, 0xfc, 0xff, 0xc0, 0x20, 
+        0x00, 0x22, 0x23, 0x42, 0x40, 0x22, 0x20, 0xc0, 0x20, 0x00, 0x22, 0x63, 0x42, 0x0d, 0xf0, 0x00, 
+        0x7c, 0xd4, 0x31, 0x4d, 0xe6, 0xc0, 0x20, 0x00, 0x22, 0x23, 0x9c, 0x40, 0x22, 0x10, 0xc0, 0x20, 
+        0x00, 0x22, 0x63, 0x9c, 0x0d, 0xf0, 0x00, 0x00, 0x31, 0xc2, 0xe3, 0xc0, 0x20, 0x00, 0x22, 0x23, 
+        0x4a, 0x20, 0x20, 0x14, 0xcc, 0xa2, 0xc0, 0x20, 0x00, 0x42, 0x23, 0x4a, 0x40, 0x40, 0x14, 0x16, 
+        0x34, 0xff, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0xfe, 0x81, 0xff, 0xff, 0x31, 0xc6, 0xe4, 0x61, 0xb8, 
+        0xe3, 0xc0, 0x20, 0x00, 0x82, 0x66, 0x44, 0x0c, 0x07, 0xc0, 0x20, 0x00, 0x72, 0x66, 0x51, 0x51, 
+        0x2a, 0xf9, 0xc0, 0x20, 0x00, 0x52, 0x66, 0x40, 0x41, 0x35, 0xff, 0xc0, 0x20, 0x00, 0x22, 0x23, 
+        0xf2, 0x40, 0x22, 0x10, 0xc0, 0x20, 0x00, 0x22, 0x63, 0xf2, 0x0d, 0xf0, 0xd0, 0x22, 0xff, 0x3f, 
+        0x22, 0xa0, 0x6a, 0x12, 0xc1, 0xf0, 0x02, 0x61, 0x00, 0x01, 0x37, 0xeb, 0x32, 0xa0, 0x02, 0x02, 
+        0x20, 0x00, 0x0c, 0x84, 0x02, 0x20, 0x26, 0x0c, 0x05, 0xc0, 0x00, 0x00, 0x21, 0xf8, 0xff, 0xc5, 
+        0xe4, 0xff, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x12, 0xc1, 0xf0, 0x09, 
+        0x01, 0x01, 0xf2, 0xff, 0x02, 0x00, 0x2c, 0x47, 0xe0, 0x08, 0x45, 0xd8, 0xff, 0x46, 0x01, 0x00, 
+        0x00, 0x00, 0x00, 0x05, 0xdd, 0xff, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0x00, 
+        0x12, 0xc1, 0xf0, 0x22, 0x61, 0x00, 0x21, 0xe9, 0xff, 0x02, 0x61, 0x01, 0x28, 0x12, 0xc5, 0xed, 
+        0xff, 0x01, 0xe6, 0xff, 0x02, 0x00, 0x2c, 0x0c, 0x02, 0x07, 0x60, 0x0f, 0x28, 0x01, 0x05, 0xc3, 
+        0xff, 0x01, 0xe2, 0xff, 0x0c, 0x82, 0x02, 0x00, 0x2c, 0xc6, 0xff, 0xff, 0x17, 0x60, 0x04, 0x1c, 
+        0x03, 0x30, 0x22, 0x20, 0x27, 0x60, 0x04, 0x0c, 0x44, 0x40, 0x22, 0x20, 0x00, 0x33, 0x04, 0x45, 
+        0xcf, 0xff, 0x08, 0x11, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xf1, 0x3f, 
+        0x12, 0xc1, 0xf0, 0x02, 0x61, 0x00, 0x05, 0xf2, 0xff, 0x01, 0x67, 0xe7, 0xc0, 0x00, 0x00, 0x0c, 
+        0x02, 0x05, 0x9a, 0xfc, 0xc5, 0x5d, 0x01, 0x31, 0x6d, 0xef, 0x21, 0xf8, 0xff, 0xc0, 0x20, 0x00, 
+        0x02, 0x22, 0x81, 0x30, 0x00, 0x20, 0xc0, 0x20, 0x00, 0x02, 0x62, 0x81, 0x08, 0x01, 0x12, 0xc1, 
+        0x10, 0x0d, 0xf0, 0x00, 0x61, 0xca, 0xff, 0x22, 0x06, 0x2e, 0x51, 0xfb, 0xe5, 0xac, 0x12, 0xc0, 
+        0x20, 0x00, 0x42, 0x06, 0x36, 0x52, 0x25, 0x80, 0x28, 0x56, 0x38, 0xa6, 0x50, 0x22, 0xc0, 0x40, 
+        0x33, 0x82, 0x27, 0x33, 0x0c, 0x82, 0x26, 0x11, 0x72, 0x16, 0x12, 0x8a, 0x77, 0x27, 0xb7, 0x01, 
+        0x0d, 0xf0, 0x0c, 0x02, 0x0d, 0xf0, 0x00, 0x00, 0x87, 0x13, 0x00, 0x00, 0x00, 0x02, 0xf2, 0x3f, 
+        0x34, 0x8c, 0xfe, 0x3f, 0x1c, 0x42, 0x12, 0xc1, 0xe0, 0xc9, 0x11, 0xd9, 0x21, 0xe9, 0x31, 0xf9, 
+        0x41, 0x09, 0x01, 0x01, 0x8f, 0xe5, 0xc0, 0x00, 0x00, 0x0c, 0x0c, 0xf1, 0xf7, 0xff, 0xd1, 0xf7, 
+        0xff, 0xe1, 0xda, 0xff, 0xc0, 0x20, 0x00, 0x02, 0x2d, 0x84, 0x00, 0x00, 0x34, 0xcc, 0xa0, 0xc0, 
+        0x20, 0x00, 0x22, 0x2e, 0xf4, 0x20, 0x2c, 0x34, 0x16, 0x32, 0x06, 0x0c, 0x22, 0x01, 0x84, 0xe5, 
+        0xc0, 0x00, 0x00, 0x3d, 0x0c, 0x1b, 0xcc, 0xc0, 0xc0, 0xf4, 0x37, 0xbf, 0xd6, 0x1c, 0x42, 0x01, 
+        0x80, 0xe5, 0xc0, 0x00, 0x00, 0xf2, 0xa7, 0xcf, 0xc0, 0x20, 0x00, 0x02, 0x2d, 0x84, 0x00, 0x00, 
+        0x34, 0xcc, 0x90, 0xc0, 0x20, 0x00, 0x22, 0x2e, 0xf4, 0x20, 0x2c, 0x34, 0xac, 0xf2, 0x0c, 0x22, 
+        0x01, 0x78, 0xe5, 0xc0, 0x00, 0x00, 0x3d, 0x0c, 0x1b, 0xcc, 0xc0, 0xc0, 0xf4, 0x37, 0xbf, 0xd7, 
+        0x0c, 0x0c, 0x21, 0xdf, 0xff, 0xc0, 0x20, 0x00, 0x32, 0x2d, 0x84, 0xc0, 0x20, 0x00, 0x42, 0x2e, 
+        0xf4, 0x01, 0x5b, 0xe3, 0xc0, 0x00, 0x00, 0x1b, 0xcc, 0xc0, 0xc0, 0xf4, 0x66, 0xdc, 0xe2, 0xc8, 
+        0x11, 0xd8, 0x21, 0xe8, 0x31, 0xf8, 0x41, 0x08, 0x01, 0x12, 0xc1, 0x20, 0x0d, 0xf0, 0x00, 0x00, 
+        0x64, 0x89, 0xfe, 0x3f, 0x58, 0x8c, 0xfe, 0x3f, 0x60, 0x8c, 0xfe, 0x3f, 0x3f, 0xfe, 0x00, 0x00, 
+        0x12, 0xc1, 0xf0, 0xc2, 0x61, 0x02, 0x09, 0x11, 0xcd, 0x02, 0x45, 0xe2, 0xff, 0x31, 0x87, 0xff, 
+        0x22, 0x23, 0x11, 0x38, 0x13, 0x20, 0x2c, 0xc0, 0x05, 0xa9, 0xff, 0xcd, 0x02, 0x51, 0xb6, 0xe5, 
+        0xc0, 0x20, 0x00, 0x42, 0xa1, 0x2c, 0x52, 0x25, 0x80, 0x59, 0x01, 0x27, 0x34, 0x02, 0x46, 0x22, 
+        0x00, 0x85, 0xe2, 0xff, 0x81, 0xcf, 0xe8, 0x71, 0xa5, 0xff, 0xc0, 0x20, 0x00, 0x62, 0x27, 0x81, 
+        0x80, 0x66, 0x10, 0xc0, 0x20, 0x00, 0x62, 0x67, 0x81, 0x0c, 0x12, 0x0c, 0x13, 0x05, 0x25, 0xfb, 
+        0x05, 0xef, 0xff, 0xc0, 0x20, 0x00, 0x48, 0x01, 0x21, 0xa8, 0xe5, 0x31, 0x74, 0xff, 0x22, 0x22, 
+        0x80, 0x38, 0x13, 0x40, 0x22, 0xc0, 0x45, 0xa4, 0xff, 0x29, 0x31, 0x01, 0x02, 0xe7, 0xc0, 0x00, 
+        0x00, 0x42, 0xa1, 0xff, 0x08, 0x31, 0x31, 0x4b, 0xe3, 0xc0, 0x20, 0x00, 0x32, 0x23, 0x6a, 0x22, 
+        0xae, 0xd4, 0x47, 0x93, 0x47, 0x2a, 0x5c, 0x42, 0xa3, 0xe8, 0x4a, 0x40, 0x57, 0xb4, 0x3d, 0x00, 
+        0x5c, 0xc0, 0x2a, 0x25, 0x85, 0xde, 0xff, 0xc1, 0x65, 0xff, 0x02, 0x0c, 0x2d, 0x72, 0x0c, 0x2c, 
+        0x00, 0x61, 0x24, 0x26, 0x26, 0x34, 0x07, 0x67, 0x31, 0x21, 0xd1, 0xff, 0x31, 0xd2, 0xff, 0x42, 
+        0xa0, 0xea, 0x01, 0x23, 0xe3, 0xc0, 0x00, 0x00, 0x06, 0xff, 0xff, 0x21, 0xcf, 0xff, 0x01, 0x20, 
+        0xe3, 0xc0, 0x00, 0x00, 0x01, 0xed, 0xe6, 0xc0, 0x00, 0x00, 0x86, 0x00, 0x00, 0x05, 0xe0, 0xff, 
+        0x0c, 0x12, 0xc8, 0x21, 0x08, 0x11, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0xa2, 0x0c, 0x2c, 0x92, 0xa0, 
+        0x06, 0x82, 0xa0, 0xf1, 0x80, 0x80, 0x10, 0x90, 0x88, 0x20, 0x80, 0x80, 0x74, 0x91, 0xc3, 0xff, 
+        0x80, 0x88, 0x11, 0xa0, 0x88, 0x20, 0x90, 0x88, 0x10, 0x82, 0x4c, 0x2c, 0x80, 0x88, 0x41, 0x82, 
+        0x4c, 0x2d, 0x85, 0xc7, 0xff, 0xa1, 0xf6, 0xe2, 0xc0, 0x20, 0x00, 0xa2, 0x2a, 0x47, 0xa9, 0x7c, 
+        0xc0, 0x20, 0x00, 0x91, 0x79, 0xe5, 0x92, 0x29, 0x80, 0x99, 0x8c, 0x45, 0xc8, 0xff, 0x85, 0xcb, 
+        0xff, 0x0c, 0x02, 0xc6, 0xea, 0xff, 0x00, 0x00, 0x6c, 0x23, 0xff, 0x3f, 0x70, 0x8c, 0xfe, 0x3f, 
+        0x98, 0x7b, 0x10, 0x40, 0xc0, 0x0d, 0x00, 0x40, 0x21, 0xfc, 0xff, 0x12, 0xc1, 0xf0, 0x02, 0x61, 
+        0x00, 0x01, 0xd5, 0xe6, 0xc0, 0x00, 0x00, 0x01, 0x39, 0xff, 0x02, 0x00, 0x34, 0x56, 0x00, 0x02, 
+        0x31, 0x37, 0xff, 0x22, 0xa0, 0x00, 0x22, 0x43, 0x35, 0x21, 0xf4, 0xff, 0x01, 0xf9, 0xe2, 0xc0, 
+        0x00, 0x00, 0x05, 0x49, 0xf9, 0x21, 0xf2, 0xff, 0x31, 0x31, 0xff, 0x01, 0xf2, 0xff, 0xc0, 0x00, 
+        0x00, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x12, 0xc1, 0xf0, 0x02, 0x61, 0x00, 0x45, 0x47, 
+        0xf9, 0x31, 0x2a, 0xff, 0x21, 0xeb, 0xff, 0x01, 0xeb, 0xff, 0xc0, 0x00, 0x00, 0x21, 0x27, 0xff, 
+        0x02, 0x02, 0x2d, 0x32, 0xa0, 0xf1, 0x30, 0x00, 0x10, 0x32, 0xa0, 0x04, 0x30, 0x00, 0x20, 0x02, 
+        0x42, 0x2d, 0x02, 0x21, 0x00, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0x30, 0x23, 0xff, 0x3f, 
+        0x74, 0x8c, 0xfe, 0x3f, 0x00, 0x90, 0x01, 0x00, 0x1c, 0x23, 0xff, 0x3f, 0x91, 0xfc, 0xff, 0x12, 
+        0xc1, 0xe0, 0x09, 0x01, 0xf9, 0x41, 0xe9, 0x31, 0xd9, 0x21, 0xc9, 0x11, 0xc2, 0xc9, 0xec, 0xd2, 
+        0xc9, 0xa0, 0xe1, 0x49, 0xe5, 0xc0, 0x20, 0x00, 0x02, 0x0d, 0x2e, 0x32, 0xa0, 0xf1, 0x22, 0x0d, 
+        0x2d, 0xe2, 0x2e, 0x80, 0x30, 0x22, 0x10, 0x0c, 0x83, 0x30, 0x22, 0x20, 0x22, 0x4d, 0x2d, 0x16, 
+        0x10, 0x09, 0x58, 0x4d, 0x38, 0xad, 0xe0, 0xf5, 0xc0, 0xf7, 0xb3, 0x4c, 0x0c, 0x0c, 0x42, 0x0d, 
+        0x36, 0xf2, 0xa0, 0x64, 0x1b, 0xcc, 0x30, 0x64, 0x82, 0x59, 0x6d, 0x08, 0x5d, 0x5a, 0x53, 0x59, 
+        0x4d, 0x50, 0x20, 0xc0, 0x27, 0xb6, 0x03, 0x0a, 0x76, 0x79, 0x5d, 0xf7, 0x9c, 0x24, 0x21, 0xe4, 
+        0xff, 0x6d, 0x0e, 0x01, 0xc7, 0xe2, 0xc0, 0x00, 0x00, 0x91, 0xe0, 0xff, 0x58, 0x4d, 0xa1, 0xe1, 
+        0xff, 0x38, 0xad, 0x42, 0x0d, 0x36, 0x0c, 0x1b, 0x40, 0x4b, 0x83, 0x42, 0x4d, 0x36, 0x30, 0x3a, 
+        0x83, 0x39, 0xad, 0xe0, 0x85, 0xc0, 0x87, 0x33, 0xba, 0x90, 0x29, 0x20, 0xc1, 0xdb, 0xff, 0x01, 
+        0x92, 0xe6, 0xc0, 0x00, 0x00, 0xc0, 0x2c, 0x20, 0x01, 0x90, 0xe6, 0xc0, 0x00, 0x00, 0x32, 0xa3, 
+        0xe8, 0x42, 0x2d, 0x11, 0x52, 0x2d, 0x04, 0x22, 0x2d, 0x12, 0xe0, 0x55, 0xc0, 0x5a, 0x22, 0x40, 
+        0x22, 0xc0, 0x85, 0x27, 0x08, 0x3d, 0x02, 0x0c, 0x04, 0x2d, 0x0c, 0x01, 0x89, 0xe6, 0xc0, 0x00, 
+        0x00, 0x06, 0x07, 0x00, 0x2d, 0x09, 0x01, 0x84, 0xe6, 0xc0, 0x00, 0x00, 0x2d, 0x0c, 0x01, 0x82, 
+        0xe6, 0xc0, 0x00, 0x00, 0x2d, 0x0c, 0x32, 0xa0, 0x69, 0x0c, 0x04, 0x01, 0x81, 0xe6, 0xc0, 0x00, 
+        0x00, 0xc8, 0x11, 0xd8, 0x21, 0xe8, 0x31, 0xf8, 0x41, 0x08, 0x01, 0x12, 0xc1, 0x20, 0x0d, 0xf0, 
+        0x0c, 0x02, 0x12, 0xc1, 0xf0, 0x09, 0x01, 0xc5, 0xdb, 0x00, 0x21, 0xdc, 0xfe, 0x02, 0x02, 0x2d, 
+        0x32, 0xa0, 0xf1, 0x30, 0x00, 0x10, 0x0c, 0xc3, 0x30, 0x00, 0x20, 0x02, 0x42, 0x2d, 0x08, 0x01, 
+        0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x12, 0xc1, 0xf0, 0x21, 0xd4, 0xfe, 0x02, 0x61, 
+        0x00, 0x02, 0x02, 0x2d, 0x32, 0xa0, 0xf1, 0x30, 0x00, 0x10, 0x02, 0x42, 0x2d, 0x45, 0x59, 0x01, 
+        0x21, 0xcf, 0xfe, 0x22, 0x02, 0x38, 0x85, 0x43, 0x06, 0x16, 0x72, 0x00, 0x31, 0xcc, 0xfe, 0x32, 
+        0x03, 0x30, 0x8c, 0x13, 0x05, 0xe3, 0xff, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 
+        0x22, 0xa0, 0x00, 0x32, 0xa0, 0x00, 0x12, 0xc1, 0xf0, 0xc2, 0x61, 0x01, 0x09, 0x01, 0x01, 0x85, 
+        0xff, 0xc0, 0x00, 0x00, 0xc1, 0xc2, 0xfe, 0x32, 0xa0, 0xbf, 0x02, 0x0c, 0x2d, 0x22, 0xcc, 0x4c, 
+        0x30, 0x00, 0x10, 0x02, 0x4c, 0x2d, 0x01, 0x58, 0xe6, 0xc0, 0x00, 0x00, 0x21, 0x9c, 0xff, 0x01, 
+        0x56, 0xe6, 0xc0, 0x00, 0x00, 0x02, 0x0c, 0x2d, 0x42, 0x0c, 0x33, 0x47, 0xe0, 0x29, 0xec, 0x64, 
+        0x0c, 0x05, 0x52, 0x4c, 0x35, 0x57, 0x60, 0x13, 0x0c, 0xe7, 0x62, 0xa0, 0xf1, 0x60, 0x60, 0x10, 
+        0x70, 0x66, 0x20, 0x62, 0x4c, 0x2d, 0xc5, 0x51, 0x01, 0x86, 0x00, 0x00, 0x85, 0xf6, 0xff, 0xc8, 
+        0x11, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x45, 0xf3, 0xff, 0x06, 0xfc, 0xff, 0x00, 0x00, 
+        0x88, 0x8c, 0xfe, 0x3f, 0xb8, 0x0b, 0x00, 0x00, 0x28, 0x23, 0x00, 0x00, 0x21, 0xfd, 0xff, 0x61, 
+        0xda, 0xe4, 0x71, 0xa6, 0xfe, 0x12, 0xc1, 0xf0, 0x09, 0x01, 0x42, 0x07, 0x32, 0x32, 0x07, 0x2d, 
+        0x58, 0x37, 0x30, 0x31, 0x24, 0x78, 0x27, 0xc0, 0x20, 0x00, 0x62, 0x26, 0x80, 0x70, 0x66, 0xc0, 
+        0x01, 0x64, 0xe2, 0xc0, 0x00, 0x00, 0x22, 0xa0, 0xdf, 0x41, 0xf3, 0xff, 0x51, 0xf2, 0xff, 0x31, 
+        0x9b, 0xfe, 0x0c, 0x06, 0x62, 0x43, 0x2e, 0x69, 0xa3, 0x62, 0x43, 0x36, 0x69, 0x63, 0x69, 0x43, 
+        0x69, 0x53, 0x69, 0x83, 0x52, 0x63, 0x11, 0x42, 0x63, 0x12, 0x02, 0x03, 0x2d, 0x42, 0x03, 0x2c, 
+        0x20, 0x00, 0x10, 0x00, 0x00, 0x74, 0x21, 0x05, 0xff, 0x80, 0x00, 0x11, 0x40, 0x00, 0x20, 0x42, 
+        0xa0, 0xfe, 0x20, 0x00, 0x10, 0x00, 0x20, 0x74, 0x00, 0x58, 0x41, 0x52, 0x43, 0x2d, 0x40, 0x22, 
+        0x10, 0x22, 0x43, 0x2c, 0x00, 0x09, 0x24, 0x26, 0x60, 0x04, 0x8c, 0x10, 0x05, 0xf0, 0xff, 0x08, 
+        0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0x12, 0xc1, 0xf0, 0x21, 0x84, 0xfe, 0x02, 0x61, 
+        0x01, 0x02, 0xa0, 0x00, 0x02, 0x42, 0x30, 0x21, 0x40, 0xff, 0x22, 0x61, 0x00, 0x01, 0x1a, 0xe6, 
+        0xc0, 0x00, 0x00, 0x31, 0x7e, 0xfe, 0x32, 0x03, 0x2d, 0x57, 0xe3, 0x11, 0xc5, 0xc7, 0x04, 0xcc, 
+        0xb2, 0x28, 0x01, 0x32, 0xa1, 0xf4, 0x0c, 0x04, 0x01, 0x16, 0xe6, 0xc0, 0x00, 0x00, 0x08, 0x11, 
+        0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x12, 0xc1, 0xf0, 0x21, 0x74, 0xfe, 0x09, 0x01, 
+        0x0c, 0x10, 0x02, 0x42, 0x30, 0x05, 0xcd, 0xff, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 
+        0xa0, 0x8c, 0xfe, 0x3f, 0x09, 0x23, 0xff, 0x3f, 0x12, 0xc1, 0xf0, 0xd2, 0x61, 0x03, 0xc2, 0x61, 
+        0x02, 0x02, 0x61, 0x01, 0xcd, 0x02, 0xc5, 0xcd, 0x04, 0x29, 0x01, 0x16, 0x22, 0x09, 0x21, 0x26, 
+        0xff, 0xd1, 0x66, 0xfe, 0x2c, 0x03, 0x02, 0x0d, 0x2d, 0x42, 0xa0, 0xdf, 0x40, 0x00, 0x10, 0x30, 
+        0x00, 0x20, 0x02, 0x4d, 0x2d, 0x01, 0xfc, 0xe5, 0xc0, 0x00, 0x00, 0x21, 0xf1, 0xff, 0x32, 0x0d, 
+        0x2d, 0x42, 0x0d, 0x32, 0x30, 0x31, 0x24, 0x01, 0x22, 0xe2, 0xc0, 0x00, 0x00, 0x42, 0x0d, 0x2d, 
+        0x40, 0x01, 0x24, 0x56, 0x50, 0x06, 0x0c, 0xe6, 0x52, 0xa0, 0xf1, 0x50, 0x54, 0x10, 0x60, 0x55, 
+        0x20, 0x52, 0x4d, 0x2d, 0x22, 0xa0, 0x00, 0x0c, 0x03, 0x01, 0x16, 0xff, 0xc0, 0x00, 0x00, 0x38, 
+        0x01, 0x21, 0xe4, 0xff, 0x42, 0x13, 0x10, 0xc2, 0x4d, 0x38, 0x42, 0x5d, 0x20, 0x32, 0xc3, 0x1a, 
+        0x0c, 0x64, 0x01, 0x4e, 0xe5, 0xc0, 0x00, 0x00, 0x72, 0x0d, 0x2c, 0x82, 0xa0, 0xfe, 0x80, 0x77, 
+        0x10, 0x0c, 0x18, 0x80, 0x77, 0x20, 0x72, 0x4d, 0x2c, 0x61, 0x7b, 0xe4, 0xc0, 0x20, 0x00, 0x0c, 
+        0x05, 0x62, 0x26, 0x80, 0x69, 0x2d, 0x59, 0x3d, 0x85, 0xd6, 0x00, 0x05, 0xfd, 0x00, 0xc5, 0xfe, 
+        0x00, 0xc8, 0x21, 0xd8, 0x31, 0x08, 0x11, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x26, 0x60, 0xa4, 0x92, 
+        0x0d, 0x2c, 0x07, 0x69, 0x9e, 0x21, 0xae, 0xfe, 0x31, 0xaf, 0xfe, 0x42, 0xa2, 0x18, 0x01, 0x00, 
+        0xe2, 0xc0, 0x00, 0x00, 0x06, 0xff, 0xff, 0x00, 0x0d, 0xf0, 0x00, 0x00, 0xb8, 0x8c, 0xfe, 0x3f, 
+        0xb4, 0x8c, 0xfe, 0x3f, 0x12, 0xc1, 0xe0, 0xd9, 0x41, 0xf9, 0x61, 0xc9, 0x31, 0xe9, 0x51, 0x09, 
+        0x21, 0xed, 0x03, 0x30, 0x04, 0xc0, 0xa6, 0xa0, 0x3e, 0xcb, 0x0e, 0x32, 0x13, 0x04, 0xc1, 0x2f, 
+        0xfe, 0x60, 0x33, 0x11, 0x39, 0xac, 0x00, 0x34, 0xc0, 0xa6, 0x23, 0x3a, 0x0c, 0x0d, 0x52, 0x00, 
+        0x01, 0x72, 0x00, 0x00, 0x2b, 0x65, 0x67, 0x23, 0x1e, 0x66, 0x57, 0x01, 0xdd, 0x00, 0x0a, 0x05, 
+        0x2b, 0x00, 0x00, 0x34, 0xc0, 0xe6, 0x23, 0xe5, 0x86, 0x07, 0x00, 0x8c, 0x9e, 0x47, 0xe0, 0x04, 
+        0x22, 0x0c, 0x33, 0x8c, 0x12, 0x85, 0xd0, 0xff, 0xc8, 0x31, 0xd8, 0x41, 0xe8, 0x51, 0xf8, 0x61, 
+        0x08, 0x21, 0x12, 0xc1, 0x20, 0x0d, 0xf0, 0xd2, 0xa0, 0x00, 0x22, 0x61, 0x07, 0x16, 0x7d, 0xfe, 
+        0x20, 0xf2, 0x20, 0x21, 0xfd, 0xfe, 0x01, 0xb4, 0xe5, 0xc0, 0x00, 0x00, 0x48, 0xac, 0x38, 0x1e, 
+        0x28, 0x0e, 0x72, 0x1c, 0x63, 0x0c, 0x05, 0x1b, 0x77, 0x52, 0x5c, 0x62, 0x72, 0x5c, 0x63, 0xe2, 
+        0x0d, 0x03, 0x62, 0x0d, 0x02, 0x49, 0x01, 0x60, 0x6e, 0x83, 0x40, 0x66, 0x82, 0x69, 0x11, 0x45, 
+        0x9d, 0x07, 0x82, 0x0c, 0x2e, 0xa8, 0x7f, 0xb8, 0x01, 0xa8, 0x1a, 0x98, 0x11, 0x20, 0xaa, 0xc0, 
+        0xa9, 0x6c, 0xaa, 0x99, 0x99, 0x5c, 0xba, 0xaa, 0xa9, 0x4c, 0x9c, 0x68, 0xb2, 0x0c, 0x36, 0xe7, 
+        0x1b, 0x14, 0x21, 0x77, 0xfe, 0x31, 0x77, 0xfe, 0x42, 0xa2, 0x9d, 0x01, 0xc9, 0xe1, 0xc0, 0x00, 
+        0x00, 0x06, 0xff, 0xff, 0xe2, 0x4c, 0x36, 0x0c, 0x00, 0x0c, 0x1f, 0x92, 0xa0, 0xfe, 0x82, 0x1c, 
+        0x20, 0x0c, 0x1a, 0xa2, 0x4c, 0x2e, 0x80, 0x23, 0xa4, 0x32, 0x0d, 0x04, 0x42, 0x0d, 0x01, 0x90, 
+        0x93, 0x10, 0x9a, 0x44, 0x30, 0x30, 0x04, 0x32, 0x4c, 0x26, 0x42, 0xc4, 0xfc, 0x40, 0x40, 0x74, 
+        0x97, 0x32, 0x18, 0x27, 0x34, 0x15, 0x80, 0xe0, 0x24, 0x90, 0xbd, 0xc0, 0xba, 0xb2, 0xb2, 0x0b, 
+        0x05, 0x00, 0x0e, 0x40, 0xb0, 0xb0, 0xb1, 0x07, 0x6b, 0x01, 0x0d, 0x0a, 0x00, 0x20, 0x74, 0x22, 
+        0x4c, 0x27, 0xcc, 0x33, 0x0c, 0x0e, 0x20, 0xfe, 0x83, 0xf0, 0xe0, 0x74, 0x00, 0x30, 0x74, 0x8c, 
+        0x73, 0x21, 0xb2, 0xff, 0x01, 0xaf, 0xe1, 0xc0, 0x00, 0x00, 0xf0, 0x40, 0x74, 0x56, 0x04, 0x05, 
+        0x62, 0x0d, 0x03, 0x02, 0x0c, 0x37, 0x0c, 0x85, 0x60, 0x60, 0xc1, 0x67, 0xa5, 0x06, 0x0c, 0x1e, 
+        0x0c, 0x00, 0x02, 0x4c, 0x37, 0x52, 0xc0, 0x01, 0x02, 0x0c, 0x2d, 0x52, 0x4c, 0x37, 0x00, 0x31, 
+        0x24, 0x16, 0x03, 0x07, 0x72, 0xc3, 0xff, 0x16, 0x07, 0xee, 0x26, 0x23, 0x28, 0x26, 0x33, 0x64, 
+        0x26, 0x43, 0x3e, 0x26, 0x53, 0x43, 0x82, 0xc3, 0xfa, 0x16, 0xb8, 0xed, 0x92, 0xc3, 0xf9, 0x56, 
+        0x59, 0xed, 0x56, 0x2e, 0xed, 0x85, 0xc8, 0x00, 0x16, 0xc2, 0xec, 0x45, 0xe5, 0x00, 0x86, 0xb1, 
+        0xff, 0x0c, 0x05, 0x46, 0xf0, 0xff, 0x16, 0xee, 0xeb, 0x0c, 0x02, 0x0c, 0x03, 0x01, 0x91, 0xfe, 
+        0xc0, 0x00, 0x00, 0xa2, 0x0c, 0x2d, 0xa0, 0xa4, 0x04, 0x16, 0xba, 0xea, 0x05, 0xbb, 0xff, 0x46, 
+        0xa9, 0xff, 0xbc, 0xde, 0x85, 0xba, 0xff, 0x46, 0xa7, 0xff, 0x16, 0xae, 0x05, 0x21, 0xa7, 0xfe, 
+        0x01, 0x62, 0xe5, 0xc0, 0x00, 0x00, 0xb2, 0x0c, 0x2d, 0xb0, 0xb4, 0x04, 0x16, 0x8b, 0xe8, 0x05, 
+        0xb9, 0xff, 0x86, 0xa0, 0xff, 0x21, 0x8a, 0xff, 0x00, 0x45, 0x04, 0x01, 0x85, 0xe1, 0xc0, 0x00, 
+        0x00, 0x21, 0x2f, 0xfe, 0x31, 0x30, 0xfe, 0x42, 0xa2, 0xdb, 0x01, 0x81, 0xe1, 0xc0, 0x00, 0x00, 
+        0x06, 0xff, 0xff, 0x47, 0xe0, 0x1b, 0x0c, 0x12, 0x85, 0x92, 0x00, 0xd2, 0x0c, 0x2d, 0xe2, 0xa0, 
+        0xf1, 0xe0, 0xdd, 0x10, 0x0c, 0x2e, 0xe0, 0xdd, 0x20, 0xd2, 0x4c, 0x2d, 0x06, 0x92, 0xff, 0x00, 
+        0x00, 0x00, 0x45, 0xa1, 0xff, 0xc6, 0x8f, 0xff, 0xf2, 0x0c, 0x2f, 0xf2, 0xcf, 0xf8, 0x56, 0x6f, 
+        0xe3, 0x45, 0xa0, 0xff, 0x06, 0x8c, 0xff, 0x00, 0x41, 0xad, 0xfd, 0x78, 0x44, 0x68, 0x54, 0x38, 
+        0x34, 0x58, 0x64, 0x2a, 0x33, 0x20, 0x55, 0xc0, 0x20, 0x66, 0xc0, 0x20, 0x77, 0xc0, 0x79, 0x44, 
+        0x69, 0x54, 0x59, 0x64, 0x39, 0x34, 0x0d, 0xf0, 0x12, 0xc1, 0xe0, 0x09, 0x21, 0xc9, 0x31, 0xd9, 
+        0x41, 0xcd, 0x02, 0xd1, 0xa2, 0xfd, 0x26, 0x22, 0x13, 0x26, 0x42, 0x08, 0x66, 0x82, 0x02, 0x86, 
+        0x20, 0x00, 0x66, 0xb2, 0x3d, 0x02, 0x2d, 0x32, 0x1b, 0x00, 0x02, 0x6d, 0x32, 0x32, 0x2d, 0x33, 
+        0x22, 0x0d, 0x2d, 0x1b, 0x33, 0x32, 0x6d, 0x33, 0x57, 0x62, 0x27, 0x21, 0x78, 0xfe, 0x29, 0x11, 
+        0x01, 0x32, 0xe5, 0xc0, 0x00, 0x00, 0x28, 0x11, 0x52, 0xa0, 0xbf, 0x42, 0x0d, 0x2d, 0x0c, 0xa3, 
+        0x50, 0x44, 0x10, 0x4c, 0x05, 0x50, 0x44, 0x20, 0x42, 0x4d, 0x2d, 0x0c, 0x04, 0x01, 0x2c, 0xe5, 
+        0xc0, 0x00, 0x00, 0xc5, 0x6d, 0xff, 0x02, 0x0d, 0x2d, 0xc2, 0x4d, 0x2f, 0x00, 0x61, 0x24, 0x26, 
+        0x36, 0x11, 0x21, 0xfb, 0xfd, 0x31, 0xfb, 0xfd, 0x42, 0xa3, 0x14, 0x01, 0x4d, 0xe1, 0xc0, 0x00, 
+        0x00, 0x06, 0xff, 0xff, 0xc8, 0x31, 0x22, 0xa0, 0xf1, 0x20, 0x20, 0x10, 0x57, 0x60, 0x10, 0x0c, 
+        0xa0, 0x00, 0x02, 0x20, 0x02, 0x4d, 0x2d, 0xd8, 0x41, 0x08, 0x21, 0x12, 0xc1, 0x20, 0x0d, 0xf0, 
+        0x0d, 0x02, 0x86, 0xfb, 0xff, 0x22, 0xcd, 0x4c, 0x22, 0x61, 0x00, 0x01, 0x17, 0xe5, 0xc0, 0x00, 
+        0x00, 0x32, 0xa3, 0xe8, 0x22, 0x2d, 0x12, 0x45, 0xca, 0x07, 0x20, 0x32, 0x20, 0x42, 0xa0, 0x00, 
+        0x28, 0x01, 0x01, 0x13, 0xe5, 0xc0, 0x00, 0x00, 0xc6, 0xe5, 0xff, 0x00, 0xb0, 0x8c, 0xfe, 0x3f, 
+        0x58, 0x23, 0xff, 0x3f, 0x40, 0x42, 0x0f, 0x00, 0x12, 0xc1, 0xf0, 0xc9, 0x21, 0x09, 0x11, 0x01, 
+        0x02, 0xe5, 0xc0, 0x00, 0x00, 0xc1, 0x6d, 0xfd, 0x02, 0x0c, 0x2d, 0x00, 0x31, 0x24, 0x66, 0x23, 
+        0x07, 0x47, 0x60, 0x04, 0x42, 0x0c, 0x32, 0x9c, 0x64, 0x57, 0x60, 0x14, 0x21, 0xf4, 0xff, 0x42, 
+        0x0c, 0x32, 0x00, 0x54, 0x04, 0x01, 0x2a, 0xe1, 0xc0, 0x00, 0x00, 0x02, 0x0c, 0x2d, 0x00, 0x31, 
+        0x24, 0x66, 0x23, 0x07, 0x47, 0x60, 0x04, 0x52, 0x0c, 0x32, 0x9c, 0x35, 0x57, 0x60, 0x11, 0x21, 
+        0xd0, 0xfd, 0x31, 0xd0, 0xfd, 0x42, 0xa3, 0x24, 0x01, 0x22, 0xe1, 0xc0, 0x00, 0x00, 0x06, 0xff, 
+        0xff, 0x67, 0xe0, 0x59, 0x00, 0x67, 0x41, 0x56, 0x36, 0x05, 0xc5, 0x0a, 0xf9, 0x8c, 0x42, 0x72, 
+        0x0c, 0x2c, 0x57, 0x67, 0x48, 0x0c, 0x12, 0x45, 0x05, 0x01, 0x26, 0x12, 0x40, 0x01, 0xe5, 0xe4, 
+        0xc0, 0x00, 0x00, 0x22, 0xa1, 0xff, 0x01, 0x2f, 0xe1, 0xc0, 0x20, 0x00, 0x92, 0x20, 0x6a, 0xa2, 
+        0x0c, 0x2c, 0x27, 0x19, 0x54, 0x17, 0x6a, 0x4b, 0xc1, 0x2b, 0xe1, 0x45, 0x2a, 0xf9, 0xc0, 0x20, 
+        0x00, 0xb2, 0xa1, 0xff, 0xb2, 0x6c, 0x6a, 0x01, 0xdc, 0xe4, 0xc0, 0x00, 0x00, 0x46, 0x03, 0x00, 
+        0x00, 0x85, 0x8a, 0xff, 0x0c, 0x02, 0x0c, 0x03, 0x01, 0x07, 0xfe, 0xc0, 0x00, 0x00, 0x01, 0xd5, 
+        0xe4, 0xc0, 0x00, 0x00, 0xc1, 0xcf, 0xff, 0x2d, 0x0c, 0x01, 0xdb, 0xe4, 0xc0, 0x00, 0x00, 0x2d, 
+        0x0c, 0x0c, 0x03, 0x0c, 0x04, 0x01, 0xda, 0xe4, 0xc0, 0x00, 0x00, 0xc8, 0x21, 0x08, 0x11, 0x12, 
+        0xc1, 0x10, 0x0d, 0xf0, 0xc0, 0x20, 0x00, 0x22, 0x60, 0x6a, 0x01, 0xcb, 0xe4, 0xc0, 0x00, 0x00, 
+        0x21, 0xc5, 0xff, 0x02, 0x0c, 0x2c, 0x0c, 0x03, 0x39, 0x01, 0x00, 0x40, 0x04, 0x40, 0x23, 0x93, 
+        0x07, 0x60, 0x05, 0x05, 0x5a, 0xff, 0x16, 0x72, 0xfa, 0x45, 0x69, 0xff, 0x8c, 0x42, 0xc5, 0x84, 
+        0xff, 0xc6, 0xe7, 0xff, 0x21, 0xdb, 0xe0, 0x42, 0x2c, 0x07, 0xc0, 0x20, 0x00, 0x22, 0x22, 0x47, 
+        0x32, 0x2c, 0x01, 0x40, 0x22, 0xc0, 0xc5, 0x13, 0xff, 0x31, 0x5b, 0xe3, 0xc0, 0x20, 0x00, 0x42, 
+        0x2c, 0x08, 0x32, 0x23, 0x80, 0x4a, 0x22, 0x30, 0x22, 0xc0, 0xc5, 0xdd, 0xff, 0xc0, 0x20, 0x00, 
+        0x01, 0xd0, 0xe0, 0x22, 0x20, 0x4a, 0x20, 0x40, 0x14, 0xdc, 0x04, 0x21, 0x91, 0xfd, 0x31, 0x91, 
+        0xfd, 0x42, 0xa3, 0x56, 0x01, 0xe3, 0xe0, 0xc0, 0x00, 0x00, 0x06, 0xff, 0xff, 0x07, 0x62, 0x0b, 
+        0xc0, 0x20, 0x00, 0x22, 0x20, 0x46, 0x20, 0x28, 0x54, 0x46, 0x02, 0x00, 0x20, 0x41, 0x04, 0x28, 
+        0x01, 0x0c, 0x23, 0x40, 0x23, 0x93, 0x1c, 0x05, 0x20, 0x82, 0x04, 0x0c, 0x47, 0x80, 0x27, 0x93, 
+        0x0b, 0x62, 0x60, 0x62, 0x10, 0x60, 0x25, 0x93, 0xc5, 0xda, 0xff, 0x46, 0xc9, 0xff, 0x00, 0x00, 
+        0xbc, 0x8c, 0xfe, 0x3f, 0x12, 0xc1, 0xf0, 0x41, 0x0d, 0xfd, 0x09, 0x01, 0x02, 0x04, 0x2d, 0x00, 
+        0x31, 0x24, 0x66, 0x63, 0x19, 0x57, 0x60, 0x26, 0x0c, 0xe2, 0x32, 0xa0, 0xf1, 0x30, 0x00, 0x10, 
+        0x20, 0x00, 0x20, 0x02, 0x44, 0x2d, 0xc5, 0xe6, 0x00, 0xc6, 0x02, 0x00, 0x00, 0x00, 0x00, 0x21, 
+        0xf4, 0xff, 0x01, 0xc7, 0xe0, 0xc0, 0x00, 0x00, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x85, 
+        0x8a, 0xff, 0x86, 0xfc, 0xff, 0x00, 0x00, 0x00, 0xc4, 0x8c, 0xfe, 0x3f, 0x12, 0xc1, 0xf0, 0x09, 
+        0x01, 0x01, 0xfa, 0xfc, 0x02, 0x00, 0x2d, 0x00, 0x31, 0x24, 0x66, 0x13, 0x14, 0x57, 0xe0, 0x2c, 
+        0x21, 0x68, 0xfd, 0x31, 0x68, 0xfd, 0x42, 0xa3, 0x9c, 0x01, 0xb9, 0xe0, 0xc0, 0x00, 0x00, 0x06, 
+        0xff, 0xff, 0x21, 0xf5, 0xff, 0x01, 0xb6, 0xe0, 0xc0, 0x00, 0x00, 0x21, 0x61, 0xfd, 0x31, 0x61, 
+        0xfd, 0x42, 0xa3, 0xa5, 0x01, 0xb3, 0xe0, 0xc0, 0x00, 0x00, 0x06, 0xff, 0xff, 0x45, 0x48, 0xff, 
+        0x8c, 0x42, 0x45, 0x6f, 0xff, 0x06, 0x03, 0x00, 0x0c, 0x02, 0x0c, 0x03, 0x01, 0xaa, 0xfd, 0xc0, 
+        0x00, 0x00, 0x85, 0x72, 0xff, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x44, 0x23, 0xff, 0x3f, 
+        0xd4, 0x23, 0xff, 0x3f, 0x40, 0x89, 0xfe, 0x3f, 0xaf, 0x36, 0x00, 0x00, 0xcc, 0x8c, 0xfe, 0x3f, 
+        0x20, 0x42, 0x20, 0x12, 0xc1, 0xe0, 0xc2, 0x61, 0x03, 0xd2, 0x61, 0x04, 0x21, 0xf8, 0xff, 0x09, 
+        0x21, 0x49, 0x11, 0x01, 0x75, 0xe4, 0xc0, 0x00, 0x00, 0xd1, 0xd8, 0xfc, 0x38, 0x11, 0x42, 0x0d, 
+        0x2d, 0x0c, 0x0c, 0x40, 0x01, 0x24, 0xbc, 0xa0, 0xc2, 0x4d, 0x33, 0xc2, 0x4d, 0x32, 0x38, 0x73, 
+        0x01, 0xf0, 0xff, 0x32, 0x03, 0x0f, 0x62, 0x0d, 0x35, 0x26, 0x13, 0x32, 0x45, 0x8b, 0x06, 0x42, 
+        0x0d, 0x35, 0x0d, 0x02, 0x66, 0x24, 0x08, 0xc2, 0x4d, 0x35, 0x45, 0x7b, 0xff, 0xc6, 0x04, 0x00, 
+        0x42, 0x0d, 0x2d, 0x0c, 0x12, 0x57, 0x64, 0x08, 0x09, 0x01, 0x40, 0x57, 0x41, 0xbc, 0xd5, 0xcd, 
+        0x02, 0xc2, 0x4d, 0x35, 0xc8, 0x31, 0xd8, 0x41, 0x08, 0x21, 0x12, 0xc1, 0x20, 0x0d, 0xf0, 0xc2, 
+        0x40, 0x00, 0x1c, 0x08, 0x72, 0xa0, 0xef, 0x70, 0x74, 0x10, 0x80, 0x77, 0x20, 0x72, 0x4d, 0x2d, 
+        0x66, 0x26, 0x08, 0xc2, 0x4d, 0x35, 0x85, 0x77, 0xff, 0xc6, 0xf5, 0xff, 0x21, 0xda, 0xff, 0x01, 
+        0x80, 0xe0, 0xc0, 0x00, 0x00, 0xc2, 0x4d, 0x35, 0x05, 0xef, 0xff, 0x46, 0xf1, 0xff, 0x45, 0x3b, 
+        0xff, 0x81, 0xd5, 0xff, 0x27, 0x38, 0x08, 0xc2, 0x4d, 0x35, 0x05, 0x66, 0xff, 0xc6, 0xec, 0xff, 
+        0x21, 0xd3, 0xff, 0x51, 0xe5, 0xe2, 0xc1, 0xce, 0xff, 0x31, 0x38, 0xe1, 0x48, 0x01, 0x32, 0x23, 
+        0x37, 0x42, 0x04, 0x06, 0x32, 0x03, 0x06, 0xc0, 0x20, 0x00, 0x52, 0x25, 0xa1, 0x01, 0x70, 0xe0, 
+        0xc0, 0x00, 0x00, 0x42, 0x0c, 0x00, 0x0c, 0xe2, 0x1b, 0x04, 0x47, 0x32, 0x0a, 0x0c, 0x12, 0x02, 
+        0x4c, 0x00, 0x05, 0x4e, 0x00, 0xc6, 0xde, 0xff, 0x22, 0x4c, 0x00, 0x0c, 0x12, 0x45, 0x4d, 0x00, 
+        0x06, 0xdc, 0xff, 0x00, 0xd5, 0x23, 0xff, 0x3f, 0x14, 0x8d, 0xfe, 0x3f, 0xf0, 0x8c, 0xfe, 0x3f, 
+        0x12, 0xc1, 0xf0, 0xd2, 0x61, 0x02, 0xc2, 0x61, 0x01, 0x02, 0x61, 0x00, 0xcd, 0x02, 0x21, 0xb7, 
+        0xff, 0x01, 0x35, 0xe4, 0xc0, 0x00, 0x00, 0xd1, 0x99, 0xfc, 0x22, 0x0d, 0x2d, 0x20, 0x01, 0x24, 
+        0x16, 0x50, 0x04, 0x0c, 0x00, 0x02, 0x4d, 0x32, 0x02, 0x4d, 0x34, 0x38, 0x7c, 0x82, 0x0d, 0x35, 
+        0x32, 0x03, 0x0f, 0xc1, 0xf0, 0xff, 0x26, 0x13, 0x3a, 0x85, 0x7b, 0x06, 0x42, 0x0d, 0x35, 0x0d, 
+        0x02, 0x66, 0x14, 0x16, 0x21, 0xff, 0xfc, 0x31, 0xff, 0xfc, 0x42, 0xa3, 0xf9, 0x0c, 0x05, 0x52, 
+        0x4d, 0x35, 0x01, 0x4f, 0xe0, 0xc0, 0x00, 0x00, 0x06, 0xff, 0xff, 0x62, 0x0d, 0x2d, 0x0c, 0x27, 
+        0x60, 0x67, 0x41, 0x16, 0x86, 0x04, 0x72, 0x4d, 0x35, 0xc8, 0x11, 0xd8, 0x21, 0x08, 0x01, 0x12, 
+        0xc1, 0x10, 0x0d, 0xf0, 0x02, 0x4c, 0x00, 0x92, 0xa0, 0xef, 0x90, 0x22, 0x10, 0x22, 0x4d, 0x2d, 
+        0x66, 0x18, 0x17, 0x57, 0x62, 0x14, 0x21, 0xee, 0xfc, 0x31, 0xee, 0xfc, 0x42, 0xa4, 0x20, 0x02, 
+        0x4d, 0x35, 0x01, 0x3f, 0xe0, 0xc0, 0x00, 0x00, 0x06, 0xff, 0xff, 0x21, 0xd7, 0xff, 0x01, 0x3c, 
+        0xe0, 0xc0, 0x00, 0x00, 0x0c, 0x0a, 0xa2, 0x4d, 0x35, 0x85, 0xd9, 0xff, 0x46, 0xee, 0xff, 0x51, 
+        0xa6, 0xe2, 0x31, 0xfa, 0xe0, 0x21, 0xd1, 0xff, 0x32, 0x23, 0x37, 0x42, 0x00, 0x06, 0x32, 0x03, 
+        0x06, 0xc0, 0x20, 0x00, 0x52, 0x25, 0xa1, 0x01, 0x32, 0xe0, 0xc0, 0x00, 0x00, 0x22, 0x0d, 0x38, 
+        0xc5, 0xaa, 0x05, 0x16, 0xb2, 0x01, 0x42, 0x0d, 0x30, 0x56, 0x54, 0x01, 0x22, 0x0d, 0x38, 0x31, 
+        0xf9, 0xfd, 0x05, 0x51, 0x04, 0xcc, 0xf2, 0x0c, 0x05, 0x52, 0x4d, 0x35, 0x45, 0xd5, 0xff, 0x86, 
+        0xdd, 0xff, 0x45, 0x49, 0xff, 0x06, 0xdc, 0xff, 0x62, 0x0c, 0x00, 0x22, 0xa0, 0x0e, 0x02, 0xc6, 
+        0x01, 0x67, 0x32, 0x0b, 0x22, 0xa0, 0x00, 0x02, 0x4c, 0x00, 0x85, 0x3b, 0x00, 0x06, 0xd6, 0xff, 
+        0x22, 0x4c, 0x00, 0x0c, 0x02, 0xc5, 0x3a, 0x00, 0x46, 0xd3, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x31, 0x57, 0xfc, 0x21, 0x89, 0xe2, 0xc0, 0x20, 0x00, 0x22, 0x22, 0x80, 0x22, 0x63, 0x34, 0x0d, 
+        0xf0, 0x00, 0x00, 0x00, 0x3c, 0x0f, 0x00, 0x00, 0xb4, 0x2d, 0x00, 0x00, 0x1b, 0x0c, 0x00, 0x00, 
+        0xcb, 0x10, 0x00, 0x00, 0x20, 0x32, 0x20, 0x12, 0xc1, 0xf0, 0xc2, 0x61, 0x01, 0xd2, 0x61, 0x02, 
+        0xc1, 0x4b, 0xfc, 0x09, 0x01, 0xd2, 0x1c, 0x62, 0x29, 0x31, 0x1b, 0xdd, 0xd0, 0xd0, 0xf4, 0xd2, 
+        0x5c, 0x62, 0x16, 0x6d, 0x05, 0x22, 0x1c, 0x63, 0x3d, 0x0d, 0x05, 0x7d, 0x07, 0x38, 0x31, 0x20, 
+        0x20, 0xf4, 0x0c, 0xa0, 0x27, 0x30, 0x1f, 0x02, 0x2c, 0x11, 0x41, 0xee, 0xff, 0x61, 0xee, 0xff, 
+        0x07, 0x34, 0x05, 0x52, 0xc0, 0x64, 0x52, 0x6c, 0x11, 0x02, 0x2c, 0x12, 0x72, 0xa1, 0x2c, 0x07, 
+        0x36, 0x04, 0x7a, 0x70, 0x72, 0x6c, 0x12, 0x1c, 0x38, 0x27, 0xb8, 0x1f, 0x02, 0x2c, 0x11, 0x91, 
+        0xe7, 0xff, 0xb1, 0xe7, 0xff, 0x07, 0xb9, 0x05, 0xa2, 0xc0, 0x9c, 0xa2, 0x6c, 0x11, 0x02, 0x2c, 
+        0x12, 0x22, 0xae, 0xd4, 0x07, 0xbb, 0x04, 0x2a, 0x20, 0x22, 0x6c, 0x12, 0x0c, 0x04, 0x42, 0x5c, 
+        0x63, 0xb6, 0x2d, 0x07, 0x8c, 0x73, 0x85, 0x59, 0xff, 0x86, 0x00, 0x00, 0xc5, 0x43, 0xff, 0xc8, 
+        0x11, 0xd8, 0x21, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0x12, 0xc1, 0xf0, 0x09, 
+        0x01, 0x21, 0x59, 0xe2, 0x31, 0x26, 0xfc, 0xc0, 0x20, 0x00, 0x02, 0x03, 0x2d, 0x22, 0x22, 0x80, 
+        0x00, 0x01, 0x24, 0x66, 0x50, 0x05, 0x42, 0x03, 0x2f, 0x26, 0x84, 0x14, 0x26, 0x40, 0x11, 0x21, 
+        0x90, 0xfc, 0x31, 0x90, 0xfc, 0x42, 0xa4, 0x54, 0x01, 0xe2, 0xdf, 0xc0, 0x00, 0x00, 0x06, 0xff, 
+        0xff, 0x0c, 0x12, 0x05, 0xf3, 0xff, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0x00, 
+        0x12, 0xc1, 0xf0, 0x21, 0x16, 0xfc, 0x09, 0x01, 0x02, 0x02, 0x2d, 0x32, 0xa0, 0xbf, 0x30, 0x00, 
+        0x10, 0x02, 0x42, 0x2d, 0x00, 0x31, 0x24, 0x26, 0x53, 0x11, 0x21, 0x81, 0xfc, 0x31, 0x81, 0xfc, 
+        0x42, 0xa4, 0x81, 0x01, 0xd3, 0xdf, 0xc0, 0x00, 0x00, 0x06, 0xff, 0xff, 0x47, 0x60, 0x2e, 0x42, 
+        0x02, 0x32, 0xcc, 0x94, 0xc5, 0x0f, 0xff, 0x9c, 0x62, 0xc5, 0x36, 0xff, 0x86, 0x07, 0x00, 0x21, 
+        0x78, 0xfc, 0x31, 0x78, 0xfc, 0x42, 0xa4, 0x95, 0x01, 0xca, 0xdf, 0xc0, 0x00, 0x00, 0x06, 0xff, 
+        0xff, 0x0c, 0x02, 0x0c, 0x03, 0x01, 0xc3, 0xfc, 0xc0, 0x00, 0x00, 0x05, 0x39, 0xff, 0x08, 0x01, 
+        0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x18, 0x8d, 0xfe, 0x3f, 0x00, 0x0e, 0xf2, 0x3f, 
+        0x3c, 0x8d, 0xfe, 0x3f, 0x00, 0x8a, 0xfe, 0x3f, 0x12, 0xc1, 0xe0, 0xc2, 0x61, 0x01, 0xd2, 0x61, 
+        0x02, 0xe2, 0x61, 0x03, 0xf9, 0x41, 0x09, 0x01, 0x85, 0x54, 0x06, 0xfd, 0x02, 0xc1, 0x26, 0xe2, 
+        0xc0, 0x20, 0x00, 0x02, 0x2c, 0xb1, 0x0c, 0x0d, 0x9c, 0xc0, 0xe2, 0xa0, 0x63, 0xc0, 0x20, 0x00, 
+        0x22, 0x2c, 0xb1, 0x16, 0x12, 0x09, 0x0c, 0xa2, 0x01, 0xc6, 0xe1, 0xc0, 0x00, 0x00, 0x3d, 0x0d, 
+        0x1b, 0xdd, 0xd0, 0xd0, 0x74, 0x37, 0xbe, 0xe4, 0x31, 0x71, 0xe0, 0x21, 0xeb, 0xff, 0x32, 0x23, 
+        0x37, 0x42, 0x0f, 0x06, 0x32, 0x03, 0x06, 0xc0, 0x20, 0x00, 0x52, 0x2c, 0xa1, 0x01, 0xa8, 0xdf, 
+        0xc0, 0x00, 0x00, 0xf1, 0x0a, 0xfc, 0xe1, 0x25, 0xfc, 0xd1, 0xe4, 0xff, 0x21, 0xe5, 0xff, 0xc0, 
+        0x20, 0x00, 0x38, 0xed, 0x01, 0xa3, 0xdf, 0xc0, 0x00, 0x00, 0x21, 0xe1, 0xff, 0xc0, 0x20, 0x00, 
+        0x32, 0x2f, 0xf4, 0x01, 0x9f, 0xdf, 0xc0, 0x00, 0x00, 0x21, 0xdd, 0xff, 0xc0, 0x20, 0x00, 0x32, 
+        0x2e, 0x84, 0x01, 0x9b, 0xdf, 0xc0, 0x00, 0x00, 0x21, 0xda, 0xff, 0xc0, 0x20, 0x00, 0x32, 0x2c, 
+        0xb1, 0x01, 0x97, 0xdf, 0xc0, 0x00, 0x00, 0x21, 0xd6, 0xff, 0xc0, 0x20, 0x00, 0x32, 0x2c, 0x9f, 
+        0x01, 0x94, 0xdf, 0xc0, 0x00, 0x00, 0x21, 0xd3, 0xff, 0x01, 0x91, 0xdf, 0xc0, 0x00, 0x00, 0xc0, 
+        0x20, 0x00, 0x42, 0x2c, 0xb1, 0x56, 0x34, 0xfa, 0xc8, 0x11, 0xd8, 0x21, 0xe8, 0x31, 0xf8, 0x41, 
+        0x08, 0x01, 0x12, 0xc1, 0x20, 0x0d, 0xf0, 0x00, 0x31, 0xc5, 0xfb, 0x22, 0x03, 0x2c, 0x42, 0xa0, 
+        0xdf, 0x40, 0x22, 0x10, 0x2c, 0x04, 0x40, 0x22, 0x20, 0x22, 0x43, 0x2c, 0x0d, 0xf0, 0x00, 0x00, 
+        0xc4, 0x09, 0x00, 0x00, 0xe0, 0x7d, 0x10, 0x40, 0xe0, 0x7e, 0x10, 0x40, 0xbc, 0x80, 0x10, 0x40, 
+        0x00, 0x81, 0x10, 0x40, 0x78, 0x81, 0x10, 0x40, 0x00, 0x80, 0x10, 0x40, 0x88, 0x77, 0x10, 0x40, 
+        0x80, 0x23, 0xff, 0x3f, 0xfc, 0x85, 0x10, 0x40, 0x44, 0x87, 0x10, 0x40, 0xb0, 0x23, 0xff, 0x3f, 
+        0xd0, 0x0d, 0x00, 0x40, 0x32, 0xa0, 0x04, 0x92, 0xa0, 0xdf, 0xb2, 0xa0, 0xfb, 0x21, 0xaf, 0xfb, 
+        0x82, 0xa0, 0x00, 0x12, 0xc1, 0xf0, 0x09, 0x01, 0x82, 0x42, 0x2e, 0xa2, 0x02, 0x2c, 0x02, 0x02, 
+        0x2d, 0xb0, 0xaa, 0x10, 0x90, 0x00, 0x10, 0x02, 0x42, 0x2d, 0x30, 0xaa, 0x20, 0xb2, 0xa0, 0xfe, 
+        0xa2, 0x42, 0x2c, 0xb0, 0xaa, 0x10, 0xa2, 0x42, 0x2c, 0xb2, 0xa0, 0xfd, 0xb0, 0xaa, 0x10, 0x0c, 
+        0x2b, 0xb0, 0xaa, 0x20, 0xa2, 0x42, 0x2c, 0xb2, 0xa0, 0xf7, 0xb0, 0xaa, 0x10, 0x0c, 0x8b, 0xb0, 
+        0xaa, 0x20, 0xa2, 0x42, 0x2c, 0xb2, 0xa0, 0xef, 0xb0, 0xaa, 0x10, 0x1c, 0x0b, 0xb0, 0xaa, 0x20, 
+        0xa2, 0x42, 0x2c, 0x90, 0x9a, 0x10, 0x92, 0x42, 0x2c, 0x61, 0xd2, 0xe0, 0x71, 0x76, 0xdf, 0xc0, 
+        0x20, 0x00, 0x01, 0xed, 0xfc, 0x41, 0xeb, 0xfc, 0x62, 0x67, 0x6a, 0x51, 0xd5, 0xff, 0x52, 0x52, 
+        0x12, 0x42, 0x62, 0x11, 0x02, 0x62, 0x12, 0x21, 0xd3, 0xff, 0x85, 0x8a, 0x00, 0x21, 0xd2, 0xff, 
+        0x0c, 0x53, 0x05, 0x8a, 0x00, 0x21, 0x70, 0xfc, 0x31, 0xd1, 0xff, 0x0c, 0x04, 0x01, 0x27, 0xe3, 
+        0xc0, 0x00, 0x00, 0x21, 0x6a, 0xfc, 0x31, 0xce, 0xff, 0x0c, 0x04, 0x01, 0x24, 0xe3, 0xc0, 0x00, 
+        0x00, 0x21, 0xa2, 0xfe, 0x31, 0xcc, 0xff, 0x0c, 0x04, 0x01, 0x20, 0xe3, 0xc0, 0x00, 0x00, 0x21, 
+        0x10, 0xfe, 0x31, 0xc9, 0xff, 0x0c, 0x04, 0x01, 0x1d, 0xe3, 0xc0, 0x00, 0x00, 0x21, 0x3e, 0xfc, 
+        0x31, 0xc7, 0xff, 0x0c, 0x04, 0x01, 0x19, 0xe3, 0xc0, 0x00, 0x00, 0x21, 0xc5, 0xff, 0x31, 0xc5, 
+        0xff, 0x0c, 0x04, 0x01, 0x16, 0xe3, 0xc0, 0x00, 0x00, 0x21, 0xc3, 0xff, 0x1c, 0x43, 0x41, 0xc3, 
+        0xff, 0x0c, 0x35, 0x01, 0xc3, 0xff, 0xc0, 0x00, 0x00, 0x31, 0x74, 0xfb, 0x0c, 0x12, 0x22, 0x43, 
+        0x31, 0x45, 0x3b, 0xff, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0x80, 0x01, 0x00, 
+        0xf7, 0xff, 0xff, 0x03, 0x0c, 0x25, 0x12, 0xc1, 0xd0, 0x31, 0x6c, 0xfb, 0x09, 0xa1, 0x0c, 0x00, 
+        0x42, 0x03, 0x33, 0x09, 0x41, 0xdc, 0x74, 0x62, 0x03, 0x34, 0x8c, 0x56, 0x5d, 0x02, 0x0c, 0x10, 
+        0x06, 0x03, 0x00, 0x72, 0x03, 0x2d, 0x0c, 0x16, 0x70, 0x77, 0x41, 0x16, 0x67, 0x15, 0x0d, 0x06, 
+        0x20, 0x50, 0x93, 0x52, 0x43, 0x35, 0x06, 0x51, 0x00, 0x22, 0x21, 0x08, 0x22, 0x22, 0x00, 0x1c, 
+        0x83, 0x28, 0x12, 0x29, 0x51, 0x01, 0xfd, 0xe1, 0xc0, 0x00, 0x00, 0x38, 0x81, 0x1c, 0x87, 0x72, 
+        0x53, 0x08, 0xa8, 0x03, 0x72, 0xa0, 0x80, 0xc0, 0x20, 0x00, 0x62, 0x0a, 0x03, 0x60, 0x60, 0x64, 
+        0x70, 0x66, 0x20, 0xc0, 0x20, 0x00, 0x62, 0x4a, 0x03, 0x4c, 0x04, 0x52, 0xa0, 0xbf, 0xc0, 0x20, 
+        0x00, 0x22, 0x0a, 0x03, 0x50, 0x22, 0x10, 0x40, 0x22, 0x20, 0xc0, 0x20, 0x00, 0x22, 0x4a, 0x03, 
+        0x02, 0xa0, 0xdf, 0xc0, 0x20, 0x00, 0xb2, 0x0a, 0x03, 0x00, 0xbb, 0x10, 0x08, 0x71, 0x00, 0xbb, 
+        0x20, 0xc0, 0x20, 0x00, 0xb2, 0x4a, 0x03, 0x01, 0x7b, 0xe1, 0xb1, 0xd8, 0xff, 0xc0, 0x20, 0x00, 
+        0x92, 0x1a, 0x01, 0x00, 0x99, 0x11, 0xc0, 0x20, 0x00, 0x22, 0x1a, 0x00, 0x20, 0x99, 0x20, 0x00, 
+        0x99, 0x10, 0xb0, 0x99, 0x20, 0xc0, 0x20, 0x00, 0x92, 0x5a, 0x00, 0x90, 0x90, 0xf5, 0xc0, 0x20, 
+        0x00, 0x0c, 0x02, 0x4c, 0x84, 0x92, 0x5a, 0x01, 0x0c, 0x05, 0x91, 0xce, 0xfc, 0x61, 0xc3, 0xdf, 
+        0x7d, 0x09, 0x82, 0xc9, 0xc7, 0x82, 0x08, 0x38, 0x99, 0x01, 0xc0, 0x88, 0x11, 0x8a, 0x66, 0x9b, 
+        0x66, 0x05, 0x74, 0x05, 0xa8, 0x81, 0xb1, 0x68, 0xe1, 0x08, 0x7a, 0xc0, 0x20, 0x00, 0x0c, 0x68, 
+        0x92, 0xa0, 0xf0, 0x32, 0xa0, 0x8f, 0x22, 0x00, 0x06, 0xb2, 0x2b, 0x80, 0x30, 0x22, 0x10, 0x32, 
+        0xa0, 0xfd, 0x22, 0x40, 0x06, 0x78, 0x7a, 0xb9, 0x40, 0x62, 0x07, 0x04, 0x21, 0x2c, 0xfb, 0x90, 
+        0x66, 0x10, 0x98, 0x71, 0x80, 0x66, 0x20, 0x62, 0x47, 0x04, 0x08, 0x7a, 0x88, 0x91, 0x58, 0x00, 
+        0x61, 0xb8, 0xff, 0x50, 0x40, 0x54, 0x50, 0x56, 0x41, 0x60, 0x55, 0x10, 0xa0, 0x55, 0x11, 0x50, 
+        0x44, 0x20, 0x49, 0x00, 0xb2, 0x00, 0x00, 0x22, 0x02, 0x38, 0x30, 0xbb, 0x10, 0x20, 0x20, 0x04, 
+        0xf0, 0x22, 0x11, 0x20, 0xbb, 0x20, 0xb2, 0x40, 0x00, 0x99, 0x5a, 0x16, 0xc8, 0x06, 0x38, 0x51, 
+        0x22, 0x03, 0x01, 0x1c, 0x00, 0x00, 0x22, 0x20, 0x22, 0x43, 0x01, 0x38, 0x81, 0x21, 0x33, 0xfe, 
+        0x38, 0x73, 0x29, 0x61, 0x02, 0x43, 0x0e, 0x01, 0xb0, 0xe2, 0xc0, 0x00, 0x00, 0x28, 0x61, 0x3c, 
+        0x73, 0x0c, 0x04, 0x01, 0xaf, 0xe2, 0xc0, 0x00, 0x00, 0x28, 0x81, 0x45, 0x58, 0x00, 0x08, 0xa1, 
+        0x12, 0xc1, 0x30, 0x0d, 0xf0, 0x29, 0x91, 0x62, 0x43, 0x32, 0x09, 0x71, 0xcc, 0x42, 0x62, 0x43, 
+        0x34, 0x86, 0x00, 0x00, 0x62, 0x43, 0x33, 0x22, 0xc1, 0x10, 0x32, 0xa0, 0x18, 0x42, 0xa0, 0x00, 
+        0x85, 0x63, 0x05, 0x22, 0x61, 0x08, 0x56, 0xf2, 0xe8, 0x21, 0x75, 0xfb, 0x31, 0x76, 0xfb, 0x42, 
+        0xa5, 0x02, 0x01, 0xc7, 0xde, 0xc0, 0x00, 0x00, 0x06, 0xff, 0xff, 0x2c, 0x00, 0x86, 0xe6, 0xff, 
+        0x41, 0xff, 0xfa, 0x42, 0x04, 0x2d, 0x0c, 0x02, 0x40, 0x31, 0x24, 0x66, 0x73, 0x04, 0x57, 0x64, 
+        0x01, 0x0c, 0x12, 0x20, 0x20, 0x74, 0x0d, 0xf0, 0x48, 0x8d, 0xfe, 0x3f, 0x21, 0xff, 0xff, 0x12, 
+        0xc1, 0xf0, 0x02, 0x61, 0x00, 0x01, 0xba, 0xde, 0xc0, 0x00, 0x00, 0x21, 0xf4, 0xfa, 0x02, 0x02, 
+        0x2d, 0x32, 0xa0, 0x80, 0x00, 0x00, 0x64, 0x30, 0x00, 0x20, 0x02, 0x42, 0x2d, 0xc5, 0x27, 0x00, 
+        0x21, 0x38, 0xff, 0x01, 0x89, 0xe2, 0xc0, 0x00, 0x00, 0x02, 0x21, 0x00, 0x12, 0xc1, 0x10, 0x80, 
+        0x00, 0x00, 0x00, 0x00, 0x21, 0x33, 0xff, 0x12, 0xc1, 0xf0, 0x09, 0x11, 0x29, 0x01, 0x01, 0x82, 
+        0xe2, 0xc0, 0x00, 0x00, 0x28, 0x01, 0x32, 0xa0, 0x69, 0x0c, 0x04, 0x01, 0x81, 0xe2, 0xc0, 0x00, 
+        0x00, 0x08, 0x11, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x21, 0x2a, 0xff, 0x12, 0xc1, 0xf0, 0x02, 0x61, 
+        0x00, 0x01, 0x79, 0xe2, 0xc0, 0x00, 0x00, 0x22, 0xa0, 0x00, 0x05, 0x01, 0x00, 0x02, 0x21, 0x00, 
+        0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x4c, 0x8d, 0xfe, 0x3f, 0x12, 0xc1, 0xf0, 0x21, 
+        0xfe, 0xff, 0xc9, 0x11, 0xc1, 0xd6, 0xfa, 0x09, 0x01, 0x32, 0x0c, 0x2d, 0x42, 0x0c, 0x35, 0x30, 
+        0x31, 0x24, 0x01, 0x97, 0xde, 0xc0, 0x00, 0x00, 0x02, 0x0c, 0x2d, 0x42, 0x0c, 0x32, 0x00, 0x50, 
+        0x64, 0x52, 0x4c, 0x2d, 0xfc, 0x24, 0x42, 0x0c, 0x35, 0x0c, 0x02, 0x66, 0x14, 0x34, 0x22, 0x4c, 
+        0x35, 0x00, 0x61, 0x24, 0x26, 0x16, 0x4f, 0x21, 0x3a, 0xfb, 0x31, 0x3a, 0xfb, 0x42, 0xa5, 0x4d, 
+        0x01, 0x8c, 0xde, 0xc0, 0x00, 0x00, 0x06, 0xff, 0xff, 0x45, 0xf1, 0xff, 0x8c, 0xa2, 0x10, 0x11, 
+        0x20, 0x85, 0x1c, 0x00, 0x10, 0x11, 0x20, 0x45, 0x1e, 0x00, 0xc8, 0x11, 0x08, 0x01, 0x12, 0xc1, 
+        0x10, 0x0d, 0xf0, 0x66, 0x24, 0xe2, 0x22, 0x4c, 0x35, 0x00, 0x71, 0x24, 0x26, 0x67, 0x11, 0x21, 
+        0x2c, 0xfb, 0x31, 0x2c, 0xfb, 0x42, 0xa5, 0x52, 0x01, 0x7e, 0xde, 0xc0, 0x00, 0x00, 0x06, 0xff, 
+        0xff, 0x05, 0xd2, 0xff, 0x86, 0xf4, 0xff, 0x0c, 0x12, 0x85, 0xd1, 0xff, 0x86, 0xf2, 0xff, 0x00, 
+        0x41, 0xb3, 0xfa, 0x0c, 0x13, 0x42, 0x04, 0x2d, 0x0c, 0x02, 0x40, 0x47, 0x41, 0x40, 0x23, 0x83, 
+        0x0d, 0xf0, 0x00, 0x00, 0x61, 0xae, 0xfa, 0x42, 0x06, 0x2d, 0x0c, 0x15, 0x40, 0x41, 0x24, 0x26, 
+        0x74, 0x09, 0x8c, 0x64, 0x72, 0x06, 0x38, 0x27, 0x97, 0x01, 0x0c, 0x05, 0x50, 0x20, 0x74, 0x0d, 
+        0xf0, 0x00, 0x00, 0x00, 0xd4, 0x18, 0x00, 0x40, 0x12, 0xc1, 0xf0, 0x09, 0x01, 0x01, 0xa3, 0xfa, 
+        0x32, 0x00, 0x2d, 0x57, 0x63, 0x11, 0x0c, 0x64, 0x32, 0xc0, 0x39, 0x01, 0xfa, 0xff, 0xc0, 0x00, 
+        0x00, 0xcc, 0x32, 0x0c, 0x10, 0x46, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x20, 0x74, 0x08, 0x01, 0x12, 
+        0xc1, 0x10, 0x0d, 0xf0, 0xd0, 0x23, 0xff, 0x3f, 0x12, 0xc1, 0xf0, 0x09, 0x01, 0x01, 0x97, 0xfa, 
+        0xc9, 0x11, 0x02, 0x00, 0x31, 0xcd, 0x02, 0xbc, 0x00, 0x01, 0x26, 0xe2, 0xc0, 0x00, 0x00, 0x21, 
+        0xf9, 0xff, 0x2a, 0x2c, 0x02, 0x02, 0x00, 0x8c, 0x90, 0x01, 0x23, 0xe2, 0xc0, 0x00, 0x00, 0x0c, 
+        0x02, 0x86, 0x05, 0x00, 0x1b, 0x30, 0x32, 0x42, 0x00, 0x01, 0x1f, 0xe2, 0xc0, 0x00, 0x00, 0x3d, 
+        0x0c, 0x1c, 0x42, 0x0c, 0x04, 0x01, 0xd0, 0xf5, 0xc0, 0x00, 0x00, 0xc8, 0x11, 0x08, 0x01, 0x12, 
+        0xc1, 0x10, 0x0d, 0xf0, 0x41, 0xec, 0xff, 0x12, 0xc1, 0xf0, 0x09, 0x11, 0x08, 0x02, 0x52, 0xd4, 
+        0xff, 0xac, 0x90, 0x26, 0x10, 0x60, 0x29, 0x01, 0x66, 0x20, 0x54, 0x01, 0x12, 0xe2, 0xc0, 0x00, 
+        0x00, 0x28, 0x01, 0x31, 0xe4, 0xff, 0x28, 0x02, 0x3a, 0x22, 0x02, 0x02, 0x00, 0x0b, 0x00, 0x02, 
+        0x42, 0x00, 0x01, 0x0d, 0xe2, 0xc0, 0x00, 0x00, 0xc5, 0xfc, 0xfe, 0x46, 0x0c, 0x00, 0x40, 0x40, 
+        0x80, 0x32, 0x04, 0x00, 0x22, 0xa0, 0x01, 0x32, 0xc3, 0xff, 0x32, 0x44, 0x00, 0xc5, 0x4c, 0x00, 
+        0xdc, 0xc2, 0xc5, 0xdc, 0xff, 0x9c, 0x72, 0x0c, 0x12, 0x85, 0xc0, 0xff, 0x71, 0x70, 0xfa, 0x62, 
+        0x07, 0x2d, 0x82, 0xa0, 0xf1, 0x80, 0x66, 0x10, 0x0c, 0x28, 0x80, 0x66, 0x20, 0x62, 0x47, 0x2d, 
+        0x08, 0x11, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x4a, 0xa0, 0x92, 0x0a, 0x00, 0x02, 0x05, 0x2d, 0x0b, 
+        0x99, 0x92, 0x4a, 0x00, 0x57, 0x60, 0xe8, 0x00, 0x01, 0x24, 0x26, 0x70, 0xe2, 0x26, 0x60, 0xdf, 
+        0xc5, 0xe6, 0xfe, 0x46, 0xf6, 0xff, 0x00, 0x00, 0x22, 0xa0, 0x01, 0x32, 0xa0, 0x01, 0x12, 0xc1, 
+        0xf0, 0x02, 0x61, 0x00, 0x85, 0xde, 0xf9, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 
+        0xe0, 0x23, 0xff, 0x3f, 0x21, 0xff, 0xff, 0x12, 0xc1, 0xf0, 0x09, 0x01, 0x01, 0xf3, 0xe1, 0xc0, 
+        0x00, 0x00, 0x45, 0xfd, 0xff, 0x21, 0xfa, 0xff, 0x32, 0xa0, 0x64, 0x0c, 0x14, 0x01, 0xf0, 0xe1, 
+        0xc0, 0x00, 0x00, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0x21, 0xf5, 0xff, 0x0c, 
+        0x03, 0x12, 0xc1, 0xf0, 0x09, 0x01, 0x32, 0x42, 0x14, 0x22, 0xc2, 0x18, 0x01, 0xe7, 0xe1, 0xc0, 
+        0x00, 0x00, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x0c, 0x04, 0x21, 0xec, 
+        0xff, 0x0c, 0x13, 0x12, 0xc1, 0xf0, 0x09, 0x01, 0x32, 0x42, 0x14, 0x22, 0xc2, 0x18, 0x32, 0xa0, 
+        0xc8, 0x01, 0xdf, 0xe1, 0xc0, 0x00, 0x00, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 
+        0x12, 0xc1, 0xf0, 0x09, 0x01, 0x01, 0xe2, 0xff, 0x22, 0x00, 0x14, 0xdc, 0x12, 0x0c, 0x04, 0x0c, 
+        0x13, 0x22, 0xc0, 0x18, 0x32, 0x40, 0x14, 0x32, 0xa0, 0xc8, 0x01, 0xd5, 0xe1, 0xc0, 0x00, 0x00, 
+        0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x80, 0x26, 0xff, 0x3f, 0x64, 0x89, 0xfe, 0x3f, 
+        0x58, 0x8d, 0xfe, 0x3f, 0x12, 0xc1, 0xf0, 0xc9, 0x11, 0x09, 0x01, 0xcd, 0x02, 0x08, 0x02, 0x21, 
+        0xfa, 0xff, 0xf6, 0x40, 0x1a, 0x3d, 0x02, 0x3a, 0x30, 0x42, 0x03, 0x00, 0x00, 0x20, 0x74, 0x0b, 
+        0x04, 0x02, 0x43, 0x00, 0x45, 0x5f, 0x00, 0xc8, 0x11, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 
+        0x26, 0x40, 0x5b, 0x26, 0x50, 0x7e, 0x26, 0x60, 0x25, 0x26, 0x70, 0xea, 0x66, 0x80, 0x02, 0x86, 
+        0x25, 0x00, 0x0c, 0x94, 0x47, 0x90, 0x02, 0xc6, 0x28, 0x00, 0x26, 0x90, 0x1d, 0x21, 0xeb, 0xff, 
+        0x31, 0xec, 0xff, 0x42, 0xa0, 0xb9, 0x01, 0xe2, 0xdd, 0xc0, 0x00, 0x00, 0x06, 0xff, 0xff, 0x22, 
+        0x0c, 0x04, 0x05, 0x27, 0x01, 0x86, 0xef, 0xff, 0x00, 0x00, 0x00, 0x01, 0xaa, 0xe1, 0xc0, 0x00, 
+        0x00, 0x71, 0xe1, 0xff, 0x62, 0x2c, 0x00, 0x70, 0x66, 0x80, 0x52, 0x06, 0x00, 0x52, 0xc5, 0xff, 
+        0x52, 0x46, 0x00, 0x01, 0xa5, 0xe1, 0xc0, 0x00, 0x00, 0x05, 0x36, 0xf8, 0xc6, 0xe5, 0xff, 0x01, 
+        0xa1, 0xe1, 0xc0, 0x00, 0x00, 0xa1, 0xd8, 0xff, 0x92, 0x2c, 0x00, 0xa0, 0x99, 0x80, 0x82, 0x09, 
+        0x00, 0x82, 0xc8, 0xff, 0x82, 0x49, 0x00, 0x01, 0x9c, 0xe1, 0xc0, 0x00, 0x00, 0x0c, 0x12, 0x85, 
+        0x3f, 0x00, 0x46, 0xdc, 0xff, 0x01, 0x97, 0xe1, 0xc0, 0x00, 0x00, 0x21, 0xcf, 0xff, 0x02, 0x2c, 
+        0x00, 0x20, 0x00, 0x80, 0xb2, 0x00, 0x00, 0xb2, 0xcb, 0xff, 0xb2, 0x40, 0x00, 0x01, 0x92, 0xe1, 
+        0xc0, 0x00, 0x00, 0x05, 0x9d, 0x00, 0x46, 0xd3, 0xff, 0x20, 0x42, 0x20, 0x40, 0x40, 0x80, 0x32, 
+        0x04, 0x00, 0x32, 0xc3, 0xff, 0x32, 0x44, 0x00, 0x05, 0xc5, 0x01, 0x06, 0xce, 0xff, 0x01, 0x89, 
+        0xe1, 0xc0, 0x00, 0x00, 0x71, 0xc1, 0xff, 0x62, 0x2c, 0x00, 0x7a, 0x66, 0x52, 0x06, 0x00, 0x0b, 
+        0x55, 0x52, 0x46, 0x00, 0x01, 0x85, 0xe1, 0xc0, 0x00, 0x00, 0x0c, 0x02, 0x45, 0x55, 0xf8, 0x0c, 
+        0x12, 0x05, 0x55, 0xf8, 0x05, 0x8a, 0xff, 0x06, 0xc3, 0xff, 0x00, 0x00, 0xb8, 0x80, 0xfe, 0x3f, 
+        0x60, 0x8d, 0xfe, 0x3f, 0x00, 0x08, 0x00, 0x00, 0x12, 0xc1, 0xf0, 0x78, 0x72, 0x09, 0x01, 0x08, 
+        0x07, 0x48, 0x02, 0x00, 0x56, 0x41, 0x87, 0x70, 0x06, 0x68, 0x14, 0x4b, 0x66, 0x46, 0x00, 0x00, 
+        0x68, 0x14, 0x0c, 0xca, 0x82, 0x06, 0x04, 0x0c, 0x24, 0x07, 0x68, 0x10, 0x00, 0x00, 0x54, 0x40, 
+        0x35, 0x20, 0xa0, 0x33, 0x11, 0x30, 0x00, 0x20, 0x09, 0x07, 0x00, 0x56, 0x41, 0x92, 0x06, 0x00, 
+        0x82, 0xa0, 0xf0, 0xa0, 0x49, 0x10, 0x80, 0x89, 0x10, 0x66, 0x84, 0x46, 0x00, 0x00, 0x54, 0x0c, 
+        0x83, 0x30, 0x35, 0x20, 0xa0, 0x33, 0x11, 0x30, 0x00, 0x20, 0x09, 0x07, 0x26, 0xd8, 0x05, 0x42, 
+        0xa0, 0xc0, 0x47, 0x98, 0x13, 0x00, 0x50, 0x54, 0x31, 0x62, 0xfe, 0x00, 0x06, 0x41, 0x30, 0x00, 
+        0x10, 0xa0, 0x00, 0x11, 0x00, 0x05, 0x20, 0x09, 0x07, 0x00, 0x56, 0x41, 0x08, 0x01, 0x27, 0x75, 
+        0x0c, 0x58, 0x02, 0x42, 0x16, 0x0b, 0x58, 0x15, 0x40, 0x44, 0x41, 0x42, 0x45, 0x03, 0x12, 0xc1, 
+        0x10, 0x0d, 0xf0, 0xa7, 0x89, 0xe5, 0x66, 0xe8, 0x38, 0x69, 0x11, 0x00, 0xa0, 0x54, 0x91, 0xd7, 
+        0xff, 0xb1, 0x32, 0xf9, 0x98, 0x09, 0xb0, 0xb5, 0x20, 0xa0, 0xbb, 0x11, 0xb0, 0xaa, 0x20, 0xa9, 
+        0x07, 0x82, 0x29, 0x9a, 0x29, 0x21, 0x1b, 0x88, 0x82, 0x69, 0x9a, 0xb6, 0x68, 0x0e, 0x21, 0xd0, 
+        0xff, 0x01, 0x7f, 0xdd, 0xc0, 0x00, 0x00, 0x28, 0x21, 0x78, 0x72, 0x68, 0x11, 0x08, 0x07, 0x86, 
+        0xe9, 0xff, 0x66, 0xd8, 0xa6, 0x17, 0xe5, 0xa3, 0x31, 0xcb, 0xff, 0x00, 0x00, 0x54, 0x30, 0x35, 
+        0x20, 0xa0, 0x33, 0x11, 0x30, 0x00, 0x20, 0x09, 0x07, 0x06, 0xe3, 0xff, 0x64, 0x8d, 0xfe, 0x3f, 
+        0x12, 0xc1, 0xf0, 0x09, 0x01, 0xc9, 0x11, 0x58, 0x72, 0xcd, 0x02, 0x32, 0x05, 0x06, 0x02, 0x05, 
+        0x04, 0x30, 0x34, 0x24, 0x00, 0x00, 0x34, 0x9c, 0x30, 0x26, 0x30, 0x11, 0xa6, 0x30, 0x09, 0x0c, 
+        0x12, 0xa6, 0x60, 0x0b, 0x0c, 0x02, 0x86, 0x01, 0x00, 0x0c, 0x32, 0x46, 0x00, 0x00, 0x0c, 0x22, 
+        0x37, 0x12, 0x11, 0x21, 0x6e, 0xff, 0x31, 0x6e, 0xff, 0x42, 0xa1, 0x1d, 0x01, 0x65, 0xdd, 0xc0, 
+        0x00, 0x00, 0x06, 0xff, 0xff, 0xc0, 0x2c, 0x20, 0xc5, 0xec, 0xff, 0x2d, 0x0c, 0x45, 0xc9, 0x01, 
+        0x0b, 0x42, 0x16, 0xf4, 0x09, 0x01, 0x2b, 0xe1, 0xc0, 0x00, 0x00, 0x28, 0x5c, 0x38, 0x7c, 0x45, 
+        0xea, 0x02, 0x01, 0x29, 0xe1, 0xc0, 0x00, 0x00, 0x2d, 0x0c, 0x85, 0xe4, 0x01, 0x2d, 0x0c, 0x85, 
+        0xb1, 0x01, 0x0c, 0x05, 0x41, 0xa6, 0xff, 0x56, 0x32, 0x04, 0x01, 0x22, 0xe1, 0xc0, 0x00, 0x00, 
+        0x61, 0xa3, 0xff, 0x78, 0x7c, 0x0c, 0x08, 0x89, 0x6c, 0x82, 0x07, 0x00, 0x68, 0x06, 0x80, 0x82, 
+        0x34, 0xb0, 0x88, 0x11, 0x8a, 0x86, 0x88, 0x78, 0xc9, 0x08, 0x72, 0x07, 0x00, 0x52, 0xcc, 0x18, 
+        0x70, 0x72, 0x34, 0xb0, 0x77, 0x11, 0x7a, 0x66, 0x59, 0x76, 0x01, 0x17, 0xe1, 0xc0, 0x00, 0x00, 
+        0x28, 0x7c, 0x22, 0x02, 0x06, 0x20, 0x24, 0x24, 0x45, 0xbe, 0x01, 0xc6, 0x12, 0x00, 0x66, 0x12, 
+        0x27, 0x68, 0x7c, 0x59, 0x6c, 0x82, 0x06, 0x00, 0x78, 0x04, 0x80, 0x81, 0x04, 0x70, 0x88, 0xb0, 
+        0x82, 0x28, 0x8b, 0xc9, 0x08, 0x62, 0x06, 0x00, 0x32, 0xcc, 0x18, 0x60, 0x61, 0x04, 0x70, 0x66, 
+        0xb0, 0x32, 0x66, 0x8b, 0x0c, 0x02, 0x06, 0x08, 0x00, 0x66, 0x22, 0xf7, 0x21, 0xc4, 0xff, 0x01, 
+        0x38, 0xdd, 0xc0, 0x00, 0x00, 0x01, 0x03, 0xe1, 0xc0, 0x00, 0x00, 0xc0, 0x2c, 0x20, 0x05, 0xb8, 
+        0x01, 0x01, 0x01, 0xe1, 0xc0, 0x00, 0x00, 0x22, 0xa0, 0x01, 0xc2, 0x21, 0x01, 0x08, 0x01, 0x12, 
+        0xc1, 0x10, 0x0d, 0xf0, 0x12, 0xc1, 0xf0, 0x09, 0x01, 0x05, 0xa1, 0x01, 0x08, 0x01, 0x12, 0xc1, 
+        0x10, 0x0d, 0xf0, 0x00, 0x71, 0x7a, 0xff, 0x0c, 0x18, 0x78, 0x07, 0x62, 0xa1, 0xc8, 0x6a, 0x67, 
+        0x52, 0x06, 0x80, 0x00, 0x03, 0x40, 0x50, 0x40, 0xb1, 0x07, 0x64, 0x03, 0x2d, 0x08, 0x0d, 0xf0, 
+        0x00, 0x13, 0x40, 0x70, 0x93, 0xa0, 0x00, 0xa8, 0xa1, 0xa0, 0xa5, 0x20, 0xa2, 0x46, 0x80, 0x22, 
+        0x69, 0x93, 0x0c, 0x02, 0x0d, 0xf0, 0x00, 0x00, 0x50, 0x50, 0x00, 0x40, 0x12, 0xc1, 0xf0, 0xc2, 
+        0x61, 0x01, 0x02, 0x61, 0x00, 0x20, 0xc2, 0x20, 0x28, 0x02, 0x38, 0x3c, 0x39, 0x12, 0x08, 0x7c, 
+        0x02, 0x10, 0x00, 0x42, 0x1c, 0x04, 0x00, 0x00, 0xb4, 0x47, 0xe0, 0x07, 0x38, 0x1c, 0xc5, 0x65, 
+        0x04, 0xc6, 0x09, 0x00, 0x32, 0xc4, 0xff, 0x30, 0x30, 0xf4, 0x01, 0xf3, 0xff, 0xc0, 0x00, 0x00, 
+        0x3d, 0x02, 0x42, 0x1c, 0x04, 0x0c, 0x05, 0x0b, 0x44, 0x59, 0x22, 0x28, 0x0c, 0x40, 0x40, 0xf4, 
+        0x85, 0x63, 0x04, 0x38, 0x1c, 0x0c, 0x14, 0x2d, 0x03, 0xc5, 0x77, 0x04, 0x2d, 0x0c, 0x0c, 0x73, 
+        0xc5, 0x6e, 0xfc, 0xc8, 0x11, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x12, 0xc1, 0xf0, 0xd9, 
+        0x21, 0xc9, 0x11, 0x09, 0x01, 0xcd, 0x02, 0x8c, 0x42, 0x01, 0xce, 0xe0, 0xc0, 0x00, 0x00, 0x0c, 
+        0x0d, 0xd0, 0x2d, 0x20, 0x85, 0x8c, 0xfc, 0x16, 0xc2, 0x07, 0xd2, 0xcd, 0x01, 0xd0, 0xd0, 0x74, 
+        0x66, 0x4d, 0xed, 0xd1, 0x4a, 0xff, 0x02, 0x2d, 0x00, 0x38, 0x00, 0x30, 0x20, 0x60, 0x30, 0x22, 
+        0x10, 0x20, 0xf2, 0x40, 0x20, 0x20, 0x60, 0x22, 0xc2, 0x1f, 0x96, 0xe2, 0x06, 0xb0, 0x42, 0x11, 
+        0x4a, 0x40, 0x58, 0x64, 0x56, 0xf5, 0x04, 0x58, 0xb4, 0x42, 0x04, 0x24, 0x56, 0x75, 0x04, 0x9c, 
+        0x34, 0x26, 0x34, 0x11, 0xb6, 0x34, 0x09, 0x0c, 0x15, 0xb6, 0x64, 0x0b, 0x0c, 0x05, 0x86, 0x01, 
+        0x00, 0x0c, 0x35, 0x46, 0x00, 0x00, 0x0c, 0x25, 0x72, 0xa0, 0x01, 0x50, 0x90, 0x74, 0x20, 0xa0, 
+        0x74, 0x00, 0x1a, 0x40, 0x00, 0x99, 0xa0, 0x82, 0x29, 0x01, 0xa2, 0xaf, 0xff, 0x00, 0x77, 0xa1, 
+        0xa0, 0x77, 0x30, 0x70, 0x88, 0x10, 0x89, 0x19, 0x68, 0x00, 0x0c, 0x82, 0x70, 0x66, 0x10, 0x69, 
+        0x00, 0xc5, 0xa4, 0x01, 0x86, 0xe3, 0xff, 0x8c, 0x4c, 0x01, 0xab, 0xe0, 0xc0, 0x00, 0x00, 0x0c, 
+        0x12, 0xc8, 0x11, 0xd8, 0x21, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0xb8, 0x60, 0x56, 0x5b, 
+        0xfe, 0xd8, 0xe0, 0x56, 0x0d, 0xfe, 0x22, 0x20, 0x8a, 0x56, 0xa2, 0xfd, 0x32, 0x20, 0x8c, 0x56, 
+        0x43, 0xfd, 0x8c, 0x4c, 0x01, 0xa1, 0xe0, 0xc0, 0x00, 0x00, 0x0c, 0x02, 0x46, 0xf4, 0xff, 0x00, 
+        0x00, 0x2b, 0xff, 0x3f, 0xf8, 0x23, 0xff, 0x3f, 0x0c, 0x06, 0x12, 0xc1, 0xe0, 0xc9, 0x21, 0xd9, 
+        0x31, 0x09, 0x11, 0xe9, 0x41, 0xf9, 0x51, 0x69, 0x61, 0x7c, 0xff, 0x0c, 0x1e, 0x45, 0x20, 0x01, 
+        0x16, 0x92, 0x0e, 0x51, 0x16, 0xff, 0xd8, 0x72, 0x02, 0xa1, 0xc8, 0xd2, 0x0d, 0x0e, 0x29, 0x01, 
+        0xd0, 0xc0, 0x60, 0xd0, 0xcc, 0x10, 0xc0, 0xfc, 0x40, 0xc0, 0xc0, 0x60, 0xc2, 0xcc, 0x1f, 0x96, 
+        0xfc, 0x02, 0x68, 0x05, 0x0a, 0x36, 0x32, 0x03, 0x80, 0x00, 0x0c, 0x40, 0x30, 0x30, 0x91, 0x07, 
+        0x63, 0x10, 0x60, 0x0c, 0xa0, 0x02, 0x20, 0x93, 0x28, 0x01, 0xc0, 0x00, 0x00, 0x02, 0xa1, 0xc8, 
+        0x51, 0x07, 0xff, 0x00, 0x1c, 0x40, 0x00, 0x3e, 0xa1, 0xf0, 0x33, 0x30, 0x30, 0xdd, 0x10, 0x46, 
+        0xef, 0xff, 0x38, 0x01, 0x38, 0x73, 0x08, 0x03, 0x37, 0x70, 0x6a, 0x28, 0x01, 0x28, 0x52, 0x05, 
+        0xea, 0xfd, 0x38, 0x01, 0x38, 0x73, 0x08, 0x03, 0x00, 0x56, 0x41, 0x87, 0xf0, 0x12, 0x97, 0x60, 
+        0x0f, 0x38, 0x01, 0x28, 0x53, 0x05, 0x4d, 0x03, 0x38, 0x01, 0x38, 0x73, 0x58, 0x03, 0x50, 0x56, 
+        0x41, 0xb7, 0x65, 0x13, 0x42, 0x03, 0x0f, 0x66, 0x14, 0x0d, 0x22, 0x03, 0x00, 0x20, 0x21, 0x04, 
+        0x45, 0x29, 0x00, 0x8c, 0x12, 0xc5, 0xdf, 0xf7, 0x48, 0x01, 0x0c, 0x0c, 0x28, 0x04, 0x58, 0x34, 
+        0x59, 0x12, 0x38, 0x14, 0x42, 0x14, 0x04, 0xc9, 0x23, 0x01, 0x0d, 0xdf, 0xc0, 0x00, 0x00, 0x0c, 
+        0x29, 0x88, 0x01, 0x71, 0xcb, 0xff, 0x82, 0x18, 0x04, 0x62, 0x07, 0x00, 0x99, 0x61, 0x8a, 0x66, 
+        0x62, 0x47, 0x00, 0xc6, 0x03, 0x00, 0x47, 0x70, 0x19, 0x0c, 0x49, 0x99, 0x61, 0x46, 0x01, 0x00, 
+        0x00, 0xab, 0x05, 0x56, 0x6a, 0xf2, 0x28, 0x01, 0x38, 0x61, 0x45, 0x51, 0xfc, 0x06, 0xc7, 0xff, 
+        0x00, 0x00, 0x00, 0x57, 0x70, 0xe9, 0x0c, 0x5b, 0xb9, 0x61, 0x06, 0xfa, 0xff, 0xd1, 0xbc, 0xff, 
+        0xd2, 0x0d, 0x00, 0xc2, 0xa0, 0x1d, 0xd7, 0xbc, 0x0a, 0x01, 0xb9, 0xff, 0x0c, 0x0f, 0xf2, 0x40, 
+        0x00, 0x85, 0xe2, 0xf7, 0xd1, 0xb8, 0xff, 0x0c, 0x02, 0xc2, 0xcd, 0xe8, 0x22, 0x4c, 0x14, 0x2d, 
+        0x0d, 0x01, 0x59, 0xe0, 0xc0, 0x00, 0x00, 0x0c, 0x12, 0x05, 0xdf, 0xff, 0xdc, 0x82, 0x05, 0x6f, 
+        0xff, 0x9c, 0x32, 0xc5, 0x81, 0xff, 0x8c, 0xe2, 0x2d, 0x0d, 0xe2, 0x4c, 0x14, 0x32, 0xa0, 0xc8, 
+        0x0c, 0x04, 0x01, 0x53, 0xe0, 0xc0, 0x00, 0x00, 0xc8, 0x21, 0xd8, 0x31, 0xe8, 0x41, 0xf8, 0x51, 
+        0x08, 0x11, 0x12, 0xc1, 0x20, 0x0d, 0xf0, 0x00, 0x22, 0xa0, 0x00, 0x12, 0xc1, 0xf0, 0x02, 0x61, 
+        0x00, 0x45, 0x85, 0xff, 0x02, 0x21, 0x00, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x12, 0xc1, 0xf0, 0xd2, 
+        0x61, 0x02, 0xc2, 0x61, 0x01, 0x02, 0x61, 0x00, 0xcd, 0x02, 0x01, 0x3a, 0xe0, 0xc0, 0x00, 0x00, 
+        0x2d, 0x0c, 0xc5, 0x67, 0xfc, 0xcc, 0x92, 0x01, 0x38, 0xe0, 0xc0, 0x00, 0x00, 0x7c, 0xf2, 0xc6, 
+        0x17, 0x00, 0xc0, 0x2c, 0x20, 0x05, 0x2b, 0x01, 0x20, 0xd2, 0x20, 0x56, 0xa2, 0x00, 0x01, 0x32, 
+        0xe0, 0xc0, 0x00, 0x00, 0x7c, 0xe2, 0x06, 0x12, 0x00, 0x22, 0x22, 0x07, 0x32, 0x22, 0x00, 0x01, 
+        0xaf, 0xfe, 0x87, 0x73, 0x13, 0x28, 0x5d, 0x45, 0x41, 0x03, 0x16, 0xf2, 0x03, 0x2d, 0x0d, 0x05, 
+        0x8d, 0x00, 0x01, 0xaa, 0xfe, 0xdd, 0x02, 0x28, 0x72, 0x48, 0x02, 0x68, 0x00, 0xd7, 0x74, 0x0f, 
+        0x52, 0x26, 0x99, 0x72, 0x26, 0x9a, 0x1b, 0x55, 0x0b, 0x77, 0x72, 0x66, 0x9a, 0x52, 0x66, 0x99, 
+        0x01, 0x22, 0xe0, 0xc0, 0x00, 0x00, 0xc0, 0x3c, 0x20, 0xd0, 0x2d, 0x20, 0x05, 0xb8, 0xfd, 0x22, 
+        0xa0, 0x00, 0xc8, 0x11, 0xd8, 0x21, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0xd0, 0x2d, 0x20, 
+        0x05, 0x78, 0x00, 0x52, 0x2d, 0x06, 0x01, 0x99, 0xfe, 0x16, 0x75, 0x05, 0x50, 0x25, 0x20, 0x78, 
+        0x1d, 0x0c, 0x06, 0x69, 0x6d, 0x69, 0x27, 0x88, 0x12, 0x3d, 0x02, 0x28, 0x62, 0x69, 0x28, 0x56, 
+        0x42, 0xff, 0x28, 0x7d, 0x92, 0x02, 0x00, 0x78, 0x00, 0x90, 0x92, 0x34, 0xb0, 0x99, 0x11, 0x9a, 
+        0x97, 0x98, 0x69, 0x99, 0x63, 0xcc, 0xe9, 0xb2, 0x02, 0x00, 0xa2, 0xc3, 0x18, 0xb0, 0xb2, 0x34, 
+        0xb0, 0xbb, 0x11, 0xba, 0xb7, 0xa9, 0x7b, 0x42, 0x02, 0x00, 0x40, 0x42, 0x34, 0xb0, 0x44, 0x11, 
+        0x4a, 0x47, 0x59, 0x64, 0x32, 0x02, 0x00, 0x30, 0x32, 0x34, 0xb0, 0x33, 0x11, 0x3a, 0x37, 0x69, 
+        0xb3, 0x06, 0xd9, 0xff, 0x28, 0x7d, 0xc6, 0xd7, 0xff, 0x00, 0x00, 0x00, 0x0d, 0xf0, 0x00, 0x00, 
+        0x31, 0x7f, 0xfe, 0x0c, 0x02, 0x22, 0x43, 0x04, 0x0d, 0xf0, 0x00, 0x00, 0x31, 0x7c, 0xfe, 0x0c, 
+        0x02, 0x22, 0x43, 0x05, 0x0d, 0xf0, 0x00, 0x00, 0x21, 0x79, 0xfe, 0x22, 0x02, 0x05, 0x0d, 0xf0, 
+        0x90, 0x26, 0xff, 0x3f, 0x90, 0x29, 0xff, 0x3f, 0xd0, 0x29, 0xff, 0x3f, 0xbe, 0x80, 0xfe, 0x3f, 
+        0x12, 0xc1, 0xf0, 0x09, 0x21, 0x01, 0x71, 0xfe, 0x29, 0x11, 0x02, 0x00, 0x04, 0x39, 0x01, 0x56, 
+        0xe0, 0x04, 0x30, 0x33, 0x90, 0x21, 0xf6, 0xff, 0x90, 0x33, 0x11, 0x3a, 0x22, 0x38, 0x11, 0x42, 
+        0xa1, 0x80, 0x38, 0x33, 0x01, 0x56, 0xdf, 0xc0, 0x00, 0x00, 0x2c, 0x04, 0x38, 0x01, 0x21, 0xf1, 
+        0xff, 0xb0, 0x33, 0x11, 0x3a, 0x22, 0x38, 0x11, 0x01, 0x51, 0xdf, 0xc0, 0x00, 0x00, 0x41, 0xee, 
+        0xff, 0x28, 0x01, 0x38, 0x11, 0x20, 0x22, 0x90, 0x38, 0x03, 0x40, 0x22, 0xa0, 0x0c, 0xc4, 0x01, 
+        0x4b, 0xdf, 0xc0, 0x00, 0x00, 0x61, 0xe9, 0xff, 0x58, 0x01, 0x0c, 0x14, 0x6a, 0x55, 0x42, 0x45, 
+        0x00, 0x08, 0x21, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x51, 0x59, 0xfe, 0x32, 0x05, 0x04, 0xcc, 0x73, 
+        0x0c, 0x04, 0x6b, 0x65, 0x6a, 0x62, 0x42, 0x46, 0x00, 0x0d, 0xf0, 0x00, 0x51, 0x54, 0xfe, 0x42, 
+        0x05, 0x04, 0xcc, 0x74, 0x8b, 0x75, 0x70, 0x33, 0xa0, 0x68, 0x03, 0x8c, 0x26, 0x0c, 0x02, 0x0d, 
+        0xf0, 0x29, 0x03, 0x0c, 0x12, 0x0d, 0xf0, 0x00, 0x12, 0xc1, 0xf0, 0xc2, 0x61, 0x03, 0x20, 0xc2, 
+        0x20, 0x21, 0x4a, 0xfe, 0x02, 0x61, 0x02, 0x02, 0x02, 0x04, 0xdc, 0xb0, 0x8b, 0x02, 0x00, 0x0c, 
+        0xa0, 0x38, 0x00, 0x9c, 0x23, 0x6b, 0x32, 0x3a, 0x3c, 0x32, 0x03, 0x00, 0x09, 0x11, 0x8c, 0x73, 
+        0x0c, 0x72, 0xc5, 0x13, 0xfc, 0x29, 0x01, 0xcc, 0x32, 0x0c, 0x02, 0x46, 0x20, 0x00, 0x31, 0xc9, 
+        0xff, 0xb0, 0x4c, 0x11, 0x4a, 0x33, 0x2c, 0x04, 0x01, 0x29, 0xdf, 0xc0, 0x00, 0x00, 0x41, 0xc6, 
+        0xff, 0x28, 0x11, 0xc0, 0x3c, 0x90, 0x28, 0x02, 0x40, 0x33, 0xa0, 0x0c, 0xc4, 0x01, 0x23, 0xdf, 
+        0xc0, 0x00, 0x00, 0x28, 0x01, 0x71, 0x54, 0xde, 0x88, 0x72, 0xc0, 0x20, 0x00, 0x72, 0x27, 0x80, 
+        0x68, 0x11, 0x79, 0x18, 0x0c, 0x18, 0x98, 0x06, 0x99, 0x02, 0x68, 0x06, 0x69, 0x12, 0x98, 0x19, 
+        0x99, 0x32, 0x82, 0x52, 0x04, 0x72, 0xa0, 0xbf, 0xc0, 0x20, 0x00, 0x52, 0x06, 0x03, 0x70, 0x55, 
+        0x10, 0xc0, 0x20, 0x00, 0x31, 0xb3, 0xff, 0x52, 0x46, 0x03, 0xc0, 0x4c, 0x90, 0x90, 0x44, 0x11, 
+        0x28, 0x32, 0x4a, 0x33, 0x42, 0xa1, 0x80, 0x01, 0x11, 0xdf, 0xc0, 0x00, 0x00, 0xa8, 0x11, 0xc8, 
+        0x01, 0x0c, 0x09, 0x2d, 0x0c, 0xb8, 0x3c, 0xc8, 0x0c, 0xb2, 0xcb, 0x18, 0xb9, 0x1c, 0x99, 0x0a, 
+        0xc8, 0x31, 0x08, 0x21, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x70, 0x8d, 0xfe, 0x3f, 
+        0x90, 0x87, 0xfe, 0x3f, 0xff, 0x00, 0x00, 0xff, 0x0c, 0xc7, 0x12, 0xc1, 0xe0, 0xd9, 0x61, 0x29, 
+        0x01, 0xe9, 0x71, 0x09, 0x41, 0xe8, 0x02, 0xc9, 0x51, 0xe8, 0x1e, 0xcd, 0x03, 0x62, 0x0e, 0x00, 
+        0x02, 0x03, 0x03, 0x70, 0x36, 0x10, 0x47, 0xe0, 0x05, 0x00, 0x26, 0x04, 0x16, 0x42, 0x12, 0x57, 
+        0xe0, 0x09, 0x00, 0x47, 0x41, 0xcc, 0x34, 0x0c, 0x0d, 0x86, 0x00, 0x00, 0xd2, 0xa0, 0x02, 0x66, 
+        0x83, 0x36, 0x21, 0xec, 0xfe, 0x52, 0xa0, 0x00, 0x62, 0xc2, 0xe8, 0x52, 0x46, 0x14, 0x01, 0x8e, 
+        0xdf, 0xc0, 0x00, 0x00, 0x85, 0x3c, 0xff, 0x16, 0x32, 0x05, 0x45, 0x4f, 0xff, 0x16, 0xd2, 0x04, 
+        0x32, 0xa0, 0xc8, 0x0c, 0x04, 0x91, 0x92, 0xfd, 0x0c, 0x18, 0x82, 0x49, 0x14, 0x22, 0xc9, 0x18, 
+        0x01, 0x88, 0xdf, 0xc0, 0x00, 0x00, 0x06, 0x0d, 0x00, 0xfc, 0x13, 0xa2, 0xa0, 0xf0, 0xa0, 0xa6, 
+        0x10, 0x66, 0xea, 0x29, 0x70, 0xb6, 0x10, 0xb2, 0xcb, 0xfc, 0x56, 0xfb, 0x0d, 0x21, 0xdb, 0xff, 
+        0x31, 0xdc, 0xff, 0x01, 0xa7, 0xdb, 0xc0, 0x00, 0x00, 0x06, 0xff, 0xff, 0x22, 0xa0, 0x01, 0x32, 
+        0x21, 0x03, 0x05, 0x2f, 0x03, 0x8c, 0x52, 0x28, 0x01, 0x0c, 0x13, 0x45, 0xdf, 0xff, 0xb6, 0x2d, 
+        0x02, 0x06, 0x24, 0x00, 0x2d, 0x0d, 0xab, 0x3e, 0x85, 0x2d, 0x03, 0x08, 0x01, 0x3d, 0x0c, 0x29, 
+        0x50, 0xc5, 0x1f, 0x02, 0x32, 0x0c, 0x00, 0x5b, 0x33, 0x32, 0x4c, 0x00, 0x22, 0x0e, 0x01, 0x42, 
+        0x0e, 0x04, 0x67, 0x62, 0x6f, 0x40, 0x40, 0x04, 0x16, 0x64, 0x08, 0x2d, 0x0d, 0x85, 0x8d, 0x04, 
+        0x72, 0xc2, 0xfe, 0x0c, 0x16, 0x0c, 0x05, 0x70, 0x56, 0x83, 0x16, 0x75, 0x05, 0x81, 0xc5, 0xff, 
+        0x92, 0x1c, 0x03, 0xa2, 0x1c, 0x01, 0xd1, 0x7e, 0xf0, 0xa0, 0xb0, 0xb4, 0xb2, 0xcb, 0xfc, 0xd0, 
+        0xaa, 0x10, 0xb0, 0xb0, 0xb4, 0xb0, 0xaa, 0x20, 0xa2, 0x5c, 0x01, 0xa2, 0x1c, 0x02, 0x00, 0x99, 
+        0x11, 0xa0, 0x99, 0x20, 0x80, 0x89, 0x10, 0x90, 0x98, 0xf4, 0x92, 0xc9, 0xfc, 0x90, 0x90, 0xf4, 
+        0x80, 0x99, 0x11, 0x90, 0x88, 0x20, 0x82, 0x5c, 0x02, 0x80, 0x80, 0xf5, 0x82, 0x5c, 0x03, 0x45, 
+        0x3e, 0xf8, 0x02, 0x0e, 0x04, 0x00, 0x00, 0x04, 0x1b, 0x00, 0x07, 0x92, 0x07, 0x7c, 0x52, 0x22, 
+        0x4c, 0x08, 0x85, 0x3d, 0xf8, 0x0c, 0x02, 0xc8, 0x51, 0xd8, 0x61, 0xe8, 0x71, 0x08, 0x41, 0x12, 
+        0xc1, 0x20, 0x0d, 0xf0, 0x57, 0xe0, 0x05, 0x00, 0x47, 0x41, 0x16, 0xf4, 0x08, 0x0c, 0x1d, 0x06, 
+        0xb7, 0xff, 0x2d, 0x0d, 0x05, 0x84, 0x04, 0x46, 0xdd, 0xff, 0x00, 0x00, 0x00, 0x72, 0xa0, 0x88, 
+        0x1c, 0x88, 0x1c, 0xe0, 0x92, 0x0e, 0x01, 0x52, 0xa0, 0x8c, 0x50, 0x56, 0x10, 0x90, 0x90, 0x14, 
+        0x92, 0xc9, 0xfd, 0x90, 0x08, 0x93, 0x77, 0x95, 0x01, 0x2b, 0x00, 0x62, 0x0c, 0x01, 0x09, 0x21, 
+        0x60, 0x66, 0x41, 0xcc, 0x96, 0x72, 0x1c, 0x01, 0x70, 0x70, 0xb4, 0x79, 0x11, 0x46, 0x04, 0x00, 
+        0x82, 0x1c, 0x03, 0x92, 0x1c, 0x02, 0x00, 0x88, 0x11, 0x90, 0x88, 0x20, 0x80, 0x88, 0xf4, 0x82, 
+        0x61, 0x01, 0x22, 0xce, 0x0a, 0x29, 0x31, 0x05, 0x3d, 0xff, 0x9c, 0x82, 0x28, 0x01, 0x58, 0x21, 
+        0x48, 0x11, 0x32, 0xce, 0x18, 0x50, 0x44, 0xc0, 0x42, 0xc4, 0xfc, 0x40, 0x40, 0xf4, 0x4a, 0x4e, 
+        0x42, 0xc4, 0x18, 0x05, 0x57, 0xfe, 0x22, 0xa0, 0x00, 0x32, 0x21, 0x03, 0x45, 0x1b, 0x03, 0x16, 
+        0x92, 0xeb, 0x22, 0x21, 0x00, 0x0c, 0x03, 0x85, 0xcb, 0xff, 0x06, 0xb0, 0xff, 0x0c, 0x2d, 0x06, 
+        0x93, 0xff, 0x00, 0x00, 0x12, 0xc1, 0xf0, 0xc9, 0x11, 0x09, 0x01, 0x46, 0x01, 0x00, 0xc0, 0x2c, 
+        0x20, 0x85, 0x8b, 0xff, 0x05, 0xc6, 0x00, 0x20, 0xc2, 0x20, 0x16, 0x62, 0x03, 0xc5, 0x48, 0x04, 
+        0x08, 0x3c, 0x48, 0x0c, 0x32, 0xc0, 0x18, 0x39, 0x14, 0x28, 0x7c, 0x22, 0x12, 0x00, 0xcb, 0x30, 
+        0x20, 0x20, 0xb4, 0x47, 0xe2, 0x12, 0x22, 0x00, 0x14, 0x52, 0xa0, 0xf5, 0x8c, 0x12, 0x57, 0x92, 
+        0xcc, 0x2d, 0x0c, 0x45, 0xdd, 0xff, 0x56, 0xa2, 0xfc, 0x2d, 0x0c, 0x85, 0x86, 0xf7, 0x86, 0xf0, 
+        0xff, 0x00, 0x00, 0x00, 0xc8, 0x11, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0x00, 
+        0x12, 0xc1, 0xf0, 0x09, 0x11, 0xf6, 0xb2, 0x2e, 0x01, 0x85, 0xfd, 0x08, 0x00, 0xb0, 0x32, 0x11, 
+        0x3a, 0x00, 0x02, 0x00, 0x27, 0x39, 0x01, 0xdc, 0xc0, 0x01, 0xfe, 0xde, 0xc0, 0x00, 0x00, 0x21, 
+        0x7f, 0xfd, 0x38, 0x01, 0x28, 0x02, 0x3a, 0x22, 0x28, 0x62, 0x29, 0x21, 0x01, 0xfb, 0xde, 0xc0, 
+        0x00, 0x00, 0x08, 0x21, 0x46, 0x00, 0x00, 0x0c, 0x00, 0x8c, 0x70, 0x38, 0x70, 0x38, 0x03, 0x87, 
+        0x73, 0x01, 0x0c, 0x00, 0x2d, 0x00, 0x08, 0x11, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0x00, 
+        0xf6, 0xb2, 0x2b, 0x41, 0x72, 0xfd, 0x48, 0x04, 0xb0, 0x52, 0x11, 0x5a, 0x44, 0x32, 0x04, 0x27, 
+        0x28, 0x64, 0xdc, 0x93, 0x9c, 0x92, 0x58, 0x72, 0x58, 0x05, 0x68, 0x62, 0x87, 0xf5, 0x11, 0x69, 
+        0x64, 0x0c, 0x08, 0xcc, 0x36, 0x72, 0xc4, 0x18, 0x79, 0x74, 0x89, 0x62, 0x46, 0x00, 0x00, 0x0c, 
+        0x02, 0x8c, 0x72, 0x98, 0x72, 0x98, 0x09, 0x87, 0x79, 0x01, 0x0c, 0x02, 0x0d, 0xf0, 0x00, 0x00, 
+        0xf6, 0xb2, 0x1e, 0x41, 0x62, 0xfd, 0x48, 0x04, 0xb0, 0x52, 0x11, 0x5a, 0x44, 0x28, 0x64, 0x9c, 
+        0x12, 0x0c, 0x07, 0x58, 0x62, 0x59, 0x64, 0xcc, 0x35, 0x62, 0xc4, 0x18, 0x69, 0x74, 0x79, 0x62, 
+        0x0d, 0xf0, 0x0c, 0x02, 0x0d, 0xf0, 0x00, 0x00, 0x58, 0x72, 0x41, 0x58, 0xfd, 0x52, 0x05, 0x00, 
+        0x48, 0x04, 0x50, 0x52, 0x34, 0xb0, 0x55, 0x11, 0x5a, 0x44, 0x38, 0x64, 0x39, 0x62, 0xcc, 0x33, 
+        0x62, 0xc2, 0x18, 0x69, 0x74, 0x29, 0x64, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0xf0, 0x29, 0xff, 0x3f, 
+        0x0f, 0xf8, 0x00, 0x00, 0x32, 0xa0, 0x06, 0x42, 0xa0, 0x00, 0x12, 0xc1, 0xf0, 0xc9, 0x31, 0x29, 
+        0x01, 0x09, 0x21, 0x0c, 0x02, 0x45, 0xdf, 0xfb, 0x38, 0x01, 0x61, 0xf8, 0xff, 0x30, 0x53, 0xb0, 
+        0x60, 0x55, 0xa0, 0x59, 0x11, 0x1c, 0x86, 0x59, 0x02, 0x62, 0x52, 0x08, 0xcd, 0x02, 0x71, 0xe4, 
+        0xef, 0xc0, 0x20, 0x00, 0x42, 0x15, 0x00, 0x70, 0x44, 0x10, 0x60, 0x44, 0x20, 0xc0, 0x20, 0x00, 
+        0x0c, 0x16, 0x42, 0x55, 0x00, 0x30, 0x30, 0x24, 0x58, 0x0c, 0xc0, 0x33, 0x11, 0x62, 0x52, 0x04, 
+        0x28, 0x72, 0x59, 0x1c, 0x02, 0x02, 0x06, 0x42, 0xa0, 0x8f, 0x40, 0x00, 0x10, 0x30, 0x00, 0x20, 
+        0x02, 0x42, 0x06, 0x01, 0xb4, 0xde, 0xc0, 0x00, 0x00, 0x28, 0x5c, 0x38, 0x7c, 0x45, 0x4c, 0x02, 
+        0x01, 0xb2, 0xde, 0xc0, 0x00, 0x00, 0x2d, 0x0c, 0x85, 0x46, 0x01, 0xb1, 0xe1, 0xff, 0x31, 0xd0, 
+        0xef, 0x0c, 0x07, 0x92, 0xaf, 0x84, 0x22, 0x1c, 0x08, 0x88, 0x11, 0x20, 0x20, 0xb4, 0x02, 0x18, 
+        0x06, 0xa2, 0x08, 0x0e, 0x92, 0x48, 0x10, 0x72, 0x48, 0x11, 0x80, 0xaa, 0x11, 0x30, 0x00, 0x10, 
+        0x20, 0x00, 0x20, 0x02, 0x58, 0x06, 0x2d, 0x0c, 0x00, 0x08, 0x74, 0xc8, 0x31, 0x00, 0xaa, 0x20, 
+        0x08, 0x21, 0xb0, 0xaa, 0x10, 0x12, 0xc1, 0x10, 0xa2, 0x48, 0x0d, 0xb2, 0xa0, 0xcf, 0xa0, 0xa8, 
+        0x74, 0xb0, 0xaa, 0x10, 0xa2, 0x48, 0x0e, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x00, 0x00, 
+        0x12, 0xc1, 0xe0, 0xd9, 0x51, 0x09, 0x31, 0x49, 0x01, 0xc9, 0x41, 0x59, 0x21, 0xcd, 0x02, 0x9c, 
+        0x32, 0x26, 0x32, 0x11, 0xb6, 0x32, 0x09, 0x0c, 0x10, 0xb6, 0x62, 0x0b, 0x0c, 0x00, 0x86, 0x01, 
+        0x00, 0x0c, 0x30, 0x46, 0x00, 0x00, 0x0c, 0x20, 0x21, 0xf9, 0xdb, 0xc0, 0x40, 0x34, 0x52, 0xa0, 
+        0xf0, 0x81, 0x0e, 0xfd, 0x61, 0xbe, 0xff, 0x88, 0x08, 0x00, 0xd0, 0x74, 0x80, 0x8d, 0xa0, 0x82, 
+        0x28, 0x86, 0xd0, 0xdd, 0xb0, 0x08, 0x78, 0x89, 0x11, 0xb2, 0x00, 0x04, 0x60, 0xdd, 0xa0, 0x50, 
+        0xbb, 0x10, 0x40, 0xbb, 0x20, 0xb2, 0x40, 0x04, 0xb8, 0x78, 0x92, 0xcd, 0x10, 0xa8, 0x0b, 0x78, 
+        0x08, 0xa0, 0x06, 0x41, 0x20, 0x00, 0x20, 0xa0, 0xa0, 0x54, 0xa0, 0x00, 0x11, 0x00, 0xaa, 0x20, 
+        0xa9, 0x0b, 0x99, 0x17, 0x52, 0xa0, 0x80, 0x82, 0x18, 0x08, 0xc0, 0x20, 0x00, 0x42, 0x07, 0x03, 
+        0x40, 0x40, 0x64, 0x50, 0x44, 0x20, 0xc0, 0x20, 0x00, 0x42, 0x47, 0x03, 0x4c, 0x00, 0x22, 0xa0, 
+        0xbf, 0xc0, 0x20, 0x00, 0xb2, 0x07, 0x03, 0x20, 0xbb, 0x10, 0x00, 0xbb, 0x20, 0xc0, 0x20, 0x00, 
+        0xb2, 0x47, 0x03, 0xa2, 0xa0, 0xdf, 0xc0, 0x20, 0x00, 0x92, 0x07, 0x03, 0xa0, 0x99, 0x10, 0xc0, 
+        0x20, 0x00, 0x92, 0x47, 0x03, 0x80, 0x80, 0xb4, 0x91, 0x0b, 0xdd, 0x40, 0x88, 0x11, 0xc0, 0x20, 
+        0x00, 0x62, 0x17, 0x01, 0x00, 0x66, 0x11, 0xc0, 0x20, 0x00, 0xa2, 0x17, 0x00, 0xa0, 0x66, 0x20, 
+        0x90, 0x66, 0x10, 0x80, 0x66, 0x20, 0xc0, 0x20, 0x00, 0x62, 0x57, 0x00, 0x60, 0x60, 0xf5, 0xc0, 
+        0x20, 0x00, 0x22, 0xcd, 0x14, 0x0c, 0x64, 0x62, 0x57, 0x01, 0x02, 0x0d, 0x11, 0x52, 0xa0, 0xf7, 
+        0x50, 0x00, 0x10, 0x02, 0x4d, 0x11, 0x01, 0xc9, 0xdd, 0xc0, 0x00, 0x00, 0x38, 0x01, 0x22, 0xcd, 
+        0x1a, 0x0c, 0x64, 0x01, 0xc6, 0xdd, 0xc0, 0x00, 0x00, 0x98, 0x31, 0x08, 0x11, 0x31, 0xbb, 0xff, 
+        0xb1, 0x78, 0xef, 0x40, 0xac, 0x11, 0x28, 0x21, 0xc8, 0x41, 0xc0, 0x22, 0x11, 0xb0, 0xaa, 0x10, 
+        0x30, 0x22, 0x10, 0x22, 0x4d, 0x22, 0x0c, 0x4b, 0xb0, 0xaa, 0x20, 0x20, 0x28, 0x41, 0x22, 0x4d, 
+        0x23, 0xa2, 0x4d, 0x20, 0x2d, 0x00, 0xa0, 0xa8, 0x41, 0xa2, 0x4d, 0x21, 0x0d, 0x09, 0xd8, 0x51, 
+        0x12, 0xc1, 0x20, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x0d, 0xf0, 0x00, 0x00, 0x0d, 0xf0, 0x00, 0x00, 
+        0x58, 0x02, 0x58, 0x15, 0x0c, 0x43, 0x22, 0x15, 0x00, 0x62, 0x05, 0x02, 0x20, 0x40, 0x14, 0x40, 
+        0x33, 0xc0, 0x30, 0x30, 0x74, 0x40, 0x43, 0x93, 0x20, 0x38, 0x74, 0x80, 0x26, 0x11, 0x30, 0x22, 
+        0x20, 0x20, 0x24, 0x64, 0x40, 0x22, 0xa0, 0x20, 0x20, 0xf4, 0x0d, 0xf0, 0xfc, 0xff, 0x00, 0x00, 
+        0xff, 0xfe, 0xb3, 0x03, 0x12, 0xc1, 0xf0, 0x52, 0x22, 0x00, 0x72, 0x25, 0x01, 0x09, 0x01, 0x72, 
+        0x17, 0x00, 0xc9, 0x11, 0x70, 0x70, 0xb4, 0x72, 0x52, 0x08, 0x62, 0xa0, 0xdf, 0xcd, 0x02, 0xc0, 
+        0x20, 0x00, 0x42, 0x05, 0x03, 0x60, 0x44, 0x10, 0xc0, 0x20, 0x00, 0x42, 0x45, 0x03, 0x51, 0xcc, 
+        0xdc, 0x41, 0xf2, 0xff, 0x28, 0x02, 0xc0, 0x20, 0x00, 0x32, 0x12, 0x01, 0x00, 0x33, 0x11, 0xc0, 
+        0x20, 0x00, 0x62, 0x12, 0x00, 0x60, 0x33, 0x20, 0x50, 0x33, 0x10, 0x30, 0x3c, 0x41, 0x4a, 0x33, 
+        0x30, 0x30, 0xb4, 0x41, 0xc4, 0xdc, 0x40, 0x33, 0x11, 0xc0, 0x20, 0x00, 0x02, 0x12, 0x01, 0x00, 
+        0x00, 0x11, 0xc0, 0x20, 0x00, 0x52, 0x12, 0x00, 0x50, 0x00, 0x20, 0x40, 0x00, 0x10, 0x30, 0x00, 
+        0x20, 0xc0, 0x20, 0x00, 0x02, 0x52, 0x00, 0x00, 0x00, 0xf5, 0xc0, 0x20, 0x00, 0xb8, 0x0c, 0xa8, 
+        0x1b, 0x02, 0x52, 0x01, 0x4b, 0xaa, 0xa9, 0x1b, 0xa8, 0x7c, 0x92, 0x0a, 0x04, 0x90, 0x90, 0x34, 
+        0x92, 0x4a, 0x04, 0x78, 0x7c, 0x62, 0x07, 0x05, 0x82, 0xa0, 0xc0, 0x80, 0x66, 0x10, 0x62, 0x47, 
+        0x05, 0x48, 0x7c, 0x5b, 0x54, 0x32, 0x05, 0x01, 0x52, 0x05, 0x00, 0x80, 0x33, 0x11, 0x50, 0x33, 
+        0x20, 0x51, 0x00, 0xf4, 0x5b, 0x44, 0x50, 0x33, 0x10, 0x32, 0x44, 0x00, 0x30, 0x38, 0x41, 0x32, 
+        0x44, 0x01, 0x38, 0x7c, 0x28, 0x03, 0x41, 0xce, 0xff, 0x20, 0x00, 0x54, 0x20, 0x26, 0x41, 0x40, 
+        0x22, 0x10, 0xa0, 0x22, 0x11, 0x20, 0x00, 0x20, 0x28, 0x5c, 0x09, 0x03, 0x45, 0x20, 0x02, 0x2d, 
+        0x0c, 0x05, 0x1b, 0x01, 0xb2, 0xa0, 0xbf, 0x4c, 0x0a, 0x98, 0x1c, 0xc0, 0x20, 0x00, 0x82, 0x09, 
+        0x03, 0xb0, 0x88, 0x10, 0xa0, 0x88, 0x20, 0xc0, 0x20, 0x00, 0x82, 0x49, 0x03, 0xc8, 0x11, 0x08, 
+        0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0xb4, 0x31, 0x00, 0x40, 
+        0x12, 0xc1, 0xb0, 0xd9, 0xd1, 0xf9, 0xf1, 0x68, 0x02, 0x58, 0x72, 0xe9, 0xe1, 0xc9, 0xc1, 0x09, 
+        0xb1, 0xcd, 0x01, 0x08, 0x52, 0xed, 0x02, 0x78, 0x7e, 0x09, 0xa1, 0x78, 0x07, 0x22, 0x05, 0x04, 
+        0x52, 0x05, 0x00, 0x20, 0x20, 0x34, 0x29, 0x81, 0x50, 0x52, 0x34, 0xe9, 0x61, 0x48, 0x16, 0x52, 
+        0x61, 0x10, 0x42, 0x04, 0x03, 0x49, 0x91, 0x46, 0x00, 0x00, 0xcd, 0x0d, 0xd8, 0x6c, 0x56, 0x8d, 
+        0xff, 0x0c, 0x0d, 0xc7, 0xf7, 0x29, 0xf8, 0x16, 0x22, 0x1f, 0x00, 0x0c, 0x43, 0x20, 0x20, 0xb4, 
+        0x01, 0xeb, 0xff, 0xc0, 0x00, 0x00, 0x32, 0x0f, 0x02, 0x02, 0x0f, 0x01, 0x80, 0xf3, 0x11, 0x00, 
+        0xff, 0x20, 0xf0, 0xf4, 0x64, 0x1b, 0xff, 0x20, 0xff, 0xa0, 0xf0, 0xf0, 0xf4, 0x06, 0x08, 0x00, 
+        0x2d, 0x0c, 0xc5, 0xe4, 0xff, 0xf2, 0x1e, 0x08, 0x58, 0x1c, 0x2a, 0xff, 0xc0, 0x20, 0x00, 0x42, 
+        0x05, 0x03, 0x62, 0xa0, 0xbf, 0x60, 0x44, 0x10, 0xd0, 0x44, 0x20, 0xc0, 0x20, 0x00, 0x42, 0x45, 
+        0x03, 0x01, 0x3d, 0xdb, 0x81, 0x52, 0xfc, 0x62, 0x21, 0x10, 0x58, 0x08, 0xb0, 0x66, 0x11, 0x6a, 
+        0x55, 0x48, 0x65, 0x62, 0x61, 0x11, 0xdd, 0x04, 0x16, 0x84, 0x09, 0x78, 0x74, 0x78, 0x07, 0x70, 
+        0x76, 0x41, 0x07, 0x87, 0x02, 0xc6, 0x22, 0x00, 0x28, 0x04, 0x28, 0x12, 0x22, 0x61, 0x12, 0x22, 
+        0x12, 0x00, 0x0c, 0x43, 0x20, 0x20, 0xb4, 0x01, 0xcd, 0xff, 0xc0, 0x00, 0x00, 0x02, 0x21, 0x12, 
+        0x81, 0x43, 0xfc, 0x38, 0xa1, 0x20, 0x50, 0xf4, 0x32, 0x13, 0x39, 0xfa, 0x45, 0x47, 0x33, 0x14, 
+        0x78, 0x91, 0x48, 0xa1, 0x62, 0x00, 0x03, 0x42, 0x04, 0x75, 0x70, 0x66, 0xc0, 0x60, 0x60, 0x74, 
+        0x0b, 0x44, 0x67, 0xa4, 0x04, 0x0c, 0x06, 0x86, 0x05, 0x00, 0x62, 0x00, 0x02, 0x72, 0x00, 0x01, 
+        0x80, 0x66, 0x11, 0x70, 0x66, 0x20, 0x60, 0x64, 0x64, 0x1b, 0x66, 0x50, 0x66, 0xa0, 0x60, 0x60, 
+        0xf4, 0xac, 0x86, 0x01, 0x1d, 0xdb, 0x72, 0x21, 0x11, 0x58, 0x08, 0xfa, 0xf6, 0x7a, 0x55, 0x48, 
+        0x65, 0xb8, 0x0d, 0x48, 0x64, 0x49, 0x65, 0xcc, 0x34, 0x92, 0xc5, 0x18, 0x99, 0x75, 0xd9, 0x6c, 
+        0xc8, 0x1c, 0x0c, 0x0a, 0xb9, 0x2c, 0xcd, 0x0d, 0xa9, 0x6d, 0x06, 0xda, 0xff, 0x62, 0x21, 0x11, 
+        0x58, 0x08, 0x6a, 0x55, 0x16, 0xae, 0x0f, 0x78, 0x7e, 0x52, 0x15, 0x11, 0x78, 0x07, 0x68, 0x0e, 
+        0x87, 0x77, 0x06, 0x08, 0x16, 0x4b, 0x00, 0x46, 0x00, 0x00, 0x08, 0x16, 0x68, 0x0c, 0x50, 0x90, 
+        0x74, 0x68, 0x16, 0x78, 0xa1, 0x62, 0x06, 0x03, 0x72, 0x07, 0x75, 0x90, 0x66, 0xc0, 0x62, 0xd6, 
+        0x01, 0x60, 0x60, 0x74, 0x70, 0x66, 0xc0, 0x1b, 0x66, 0xa6, 0x16, 0x04, 0x5a, 0x56, 0x50, 0x50, 
+        0xb4, 0x22, 0x21, 0x08, 0x32, 0xc0, 0x04, 0x42, 0xc0, 0x0a, 0x45, 0xbe, 0xff, 0x2d, 0x0c, 0x05, 
+        0xd3, 0xff, 0x08, 0x7e, 0x20, 0x2f, 0xc0, 0x22, 0x5e, 0x08, 0xd2, 0x00, 0x04, 0xd0, 0xd0, 0x34, 
+        0xd2, 0x40, 0x04, 0xa8, 0x7e, 0x92, 0x0a, 0x05, 0xb2, 0xa0, 0xc0, 0xb0, 0x99, 0x10, 0x92, 0x4a, 
+        0x05, 0x98, 0x7e, 0xa1, 0x7c, 0xf3, 0x82, 0x09, 0x06, 0xb2, 0x09, 0x05, 0x80, 0x88, 0x11, 0xb0, 
+        0x88, 0x20, 0xa0, 0x88, 0x10, 0x82, 0x49, 0x05, 0x80, 0x88, 0x41, 0x82, 0x49, 0x06, 0x38, 0x7e, 
+        0x28, 0x5e, 0x78, 0x03, 0x81, 0x89, 0xff, 0x70, 0x60, 0x54, 0x70, 0x76, 0x41, 0x80, 0x77, 0x20, 
+        0xa0, 0x77, 0x11, 0x70, 0x66, 0x20, 0x69, 0x03, 0x05, 0x0a, 0x02, 0x38, 0x7e, 0x32, 0x03, 0x08, 
+        0xf6, 0xb3, 0x11, 0x21, 0xb2, 0xfb, 0x31, 0xb2, 0xfb, 0x42, 0xa4, 0xb6, 0x01, 0xa9, 0xd9, 0xc0, 
+        0x00, 0x00, 0x06, 0xff, 0xff, 0xe0, 0x2e, 0x20, 0x85, 0xf7, 0x00, 0xa2, 0xa0, 0x40, 0x92, 0x2c, 
+        0x01, 0xc0, 0x20, 0x00, 0x82, 0x09, 0x03, 0xb2, 0xa0, 0xbf, 0xb0, 0x88, 0x10, 0xa0, 0x88, 0x20, 
+        0xc0, 0x20, 0x00, 0x0c, 0x14, 0x82, 0x49, 0x03, 0x72, 0x21, 0x11, 0x51, 0xec, 0xfb, 0x62, 0x21, 
+        0x10, 0x58, 0x05, 0xb0, 0x66, 0x11, 0x5a, 0x77, 0xe9, 0xb7, 0x6a, 0x55, 0x42, 0x45, 0x21, 0x06, 
+        0x02, 0x00, 0x2d, 0x0e, 0x0c, 0x0c, 0xc9, 0xb5, 0x85, 0xca, 0xff, 0x08, 0xb1, 0xc8, 0xc1, 0xd8, 
+        0xd1, 0x2d, 0x0e, 0xf8, 0xf1, 0xe8, 0xe1, 0x12, 0xc1, 0x50, 0x0d, 0xf0, 0x12, 0xc1, 0xf0, 0x09, 
+        0x21, 0x9c, 0x32, 0x26, 0x32, 0x11, 0xb6, 0x32, 0x09, 0x0c, 0x10, 0xb6, 0x62, 0x0c, 0x0c, 0x00, 
+        0xc6, 0x01, 0x00, 0x0c, 0x30, 0x86, 0x00, 0x00, 0x02, 0xa0, 0x02, 0x41, 0xd8, 0xfb, 0x00, 0x30, 
+        0x74, 0x42, 0x24, 0x00, 0x39, 0x01, 0x40, 0x33, 0xa0, 0x32, 0x23, 0x86, 0x78, 0x73, 0x62, 0x07, 
+        0x05, 0x82, 0xa0, 0xc0, 0x80, 0x66, 0x10, 0x62, 0x47, 0x05, 0x68, 0x73, 0x71, 0x42, 0xf3, 0x52, 
+        0x06, 0x06, 0x82, 0x06, 0x05, 0x80, 0x55, 0x11, 0x80, 0x55, 0x20, 0x70, 0x55, 0x10, 0x52, 0x46, 
+        0x05, 0x50, 0x58, 0x41, 0x52, 0x46, 0x06, 0x58, 0x73, 0x42, 0x05, 0x04, 0x39, 0x11, 0x40, 0x40, 
+        0x34, 0x42, 0x45, 0x04, 0x28, 0x53, 0x38, 0x73, 0xc5, 0x02, 0x02, 0x41, 0x74, 0xfe, 0x38, 0x01, 
+        0x28, 0x11, 0x30, 0x33, 0xb0, 0x58, 0x02, 0x40, 0x33, 0xa0, 0x32, 0xc3, 0x10, 0x39, 0x15, 0x62, 
+        0x12, 0x08, 0x32, 0xa0, 0x80, 0xc0, 0x20, 0x00, 0x02, 0x05, 0x03, 0x00, 0x00, 0x64, 0x30, 0x00, 
+        0x20, 0xc0, 0x20, 0x00, 0x02, 0x45, 0x03, 0xb2, 0xa0, 0xbf, 0x4c, 0x0a, 0xc0, 0x20, 0x00, 0x92, 
+        0x05, 0x03, 0xb0, 0x99, 0x10, 0xa0, 0x99, 0x20, 0xc0, 0x20, 0x00, 0x92, 0x45, 0x03, 0x82, 0xa0, 
+        0xdf, 0xc0, 0x20, 0x00, 0x72, 0x05, 0x03, 0x80, 0x77, 0x10, 0xc0, 0x20, 0x00, 0x72, 0x45, 0x03, 
+        0x60, 0x60, 0xb4, 0x40, 0x66, 0x11, 0x71, 0xcb, 0xdb, 0xc0, 0x20, 0x00, 0x42, 0x15, 0x01, 0x00, 
+        0x44, 0x11, 0xc0, 0x20, 0x00, 0x82, 0x15, 0x00, 0x80, 0x44, 0x20, 0x70, 0x44, 0x10, 0x60, 0x44, 
+        0x20, 0xc0, 0x20, 0x00, 0x42, 0x55, 0x00, 0x40, 0x40, 0xf5, 0xc0, 0x20, 0x00, 0x38, 0x72, 0x42, 
+        0x55, 0x01, 0x32, 0x03, 0x06, 0x30, 0x34, 0x24, 0x45, 0xf8, 0xfc, 0x08, 0x21, 0x12, 0xc1, 0x10, 
+        0x0d, 0xf0, 0x00, 0x00, 0x41, 0x9e, 0xfb, 0x48, 0x04, 0xb0, 0x52, 0x11, 0x5a, 0x44, 0x32, 0x44, 
+        0x20, 0x0d, 0xf0, 0x00, 0x81, 0x9a, 0xfb, 0x88, 0x08, 0xb0, 0x92, 0x11, 0x9a, 0x88, 0x32, 0x58, 
+        0x11, 0x59, 0xc8, 0x72, 0x08, 0x20, 0x49, 0xd8, 0x6a, 0x77, 0x72, 0x48, 0x20, 0x0d, 0xf0, 0x00, 
+        0x84, 0x8d, 0xfe, 0x3f, 0x32, 0xa0, 0xa0, 0x30, 0x11, 0xc0, 0xd2, 0x61, 0x1e, 0x02, 0x61, 0x1c, 
+        0xc2, 0x61, 0x1d, 0xf2, 0x61, 0x20, 0xf1, 0x8d, 0xfb, 0xe2, 0x61, 0x1f, 0xe8, 0x0f, 0xb0, 0xc2, 
+        0x11, 0xca, 0xee, 0xe2, 0x0e, 0x24, 0x22, 0x61, 0x1a, 0x9c, 0x3e, 0x26, 0x3e, 0x11, 0xb6, 0x3e, 
+        0x09, 0x0c, 0x12, 0xb6, 0x6e, 0x0c, 0x0c, 0x02, 0xc6, 0x01, 0x00, 0x0c, 0x32, 0x86, 0x00, 0x00, 
+        0x22, 0xa0, 0x02, 0x05, 0x29, 0xfc, 0x02, 0x2f, 0x00, 0x20, 0x62, 0x20, 0xca, 0x00, 0x32, 0x00, 
+        0x21, 0xd8, 0xb0, 0xdc, 0x03, 0x21, 0x35, 0xfb, 0x31, 0x36, 0xfb, 0x42, 0xa5, 0x58, 0x01, 0x2c, 
+        0xd9, 0xc0, 0x00, 0x00, 0x06, 0xff, 0xff, 0xdc, 0x0d, 0x21, 0x30, 0xfb, 0x31, 0x31, 0xfb, 0x42, 
+        0xa5, 0x5a, 0x01, 0x27, 0xd9, 0xc0, 0x00, 0x00, 0x06, 0xff, 0xff, 0x2d, 0x01, 0x38, 0x7d, 0x1c, 
+        0x84, 0x62, 0x61, 0x1b, 0x01, 0x5e, 0xdc, 0xc0, 0x00, 0x00, 0x32, 0xc1, 0x18, 0x52, 0xc1, 0x38, 
+        0x91, 0xe1, 0xf2, 0x5b, 0x81, 0xb2, 0xa0, 0xc0, 0xa2, 0x01, 0x05, 0x0c, 0x5f, 0xf2, 0x41, 0x0f, 
+        0xb0, 0xaa, 0x10, 0xa2, 0x41, 0x05, 0x72, 0x08, 0x01, 0xa2, 0x08, 0x00, 0x80, 0x77, 0x11, 0xa0, 
+        0x77, 0x20, 0x90, 0x77, 0x10, 0x72, 0x48, 0x00, 0x70, 0x78, 0x41, 0x72, 0x48, 0x01, 0xf2, 0x1d, 
+        0x08, 0x28, 0x7d, 0x48, 0x0d, 0x68, 0x5d, 0x62, 0x61, 0x13, 0x59, 0x13, 0x49, 0x25, 0xd9, 0x63, 
+        0x22, 0x02, 0x04, 0xf2, 0x61, 0x15, 0x20, 0x24, 0x41, 0x22, 0x61, 0x14, 0x01, 0xda, 0xdc, 0xc0, 
+        0x00, 0x00, 0x01, 0x5a, 0xfb, 0x08, 0x00, 0xca, 0x00, 0x28, 0xc0, 0x38, 0xd0, 0x42, 0x10, 0x11, 
+        0x42, 0x61, 0x12, 0x32, 0x61, 0x17, 0x22, 0x61, 0x18, 0x02, 0x00, 0x20, 0x02, 0x61, 0x16, 0x01, 
+        0xd2, 0xdc, 0xc0, 0x00, 0x00, 0xc2, 0x61, 0x11, 0x92, 0x21, 0x12, 0x0c, 0x06, 0x0c, 0x07, 0x82, 
+        0xc1, 0x18, 0x82, 0x61, 0x25, 0x72, 0x61, 0x19, 0x62, 0x61, 0x24, 0x90, 0x90, 0x74, 0x92, 0x61, 
+        0x21, 0xc2, 0x21, 0x25, 0x21, 0xbc, 0xf2, 0xc8, 0x6c, 0x5b, 0x31, 0x16, 0x2c, 0x15, 0x42, 0x03, 
+        0x01, 0x52, 0x03, 0x00, 0x80, 0x44, 0x11, 0x50, 0x44, 0x20, 0x20, 0x24, 0x10, 0x40, 0x46, 0x54, 
+        0x1b, 0x44, 0x40, 0x40, 0x54, 0xa0, 0x44, 0x11, 0x40, 0x22, 0x20, 0x22, 0x43, 0x00, 0x20, 0x28, 
+        0x41, 0x22, 0x43, 0x01, 0x08, 0x0c, 0x08, 0x10, 0x22, 0x21, 0x21, 0x02, 0x00, 0x03, 0x2c, 0x05, 
+        0x20, 0x00, 0xc0, 0x02, 0xd0, 0x01, 0x00, 0x00, 0x74, 0xe6, 0xd0, 0x3c, 0x07, 0x25, 0x2a, 0x00, 
+        0x00, 0x40, 0x02, 0x21, 0x17, 0x00, 0x00, 0x91, 0x07, 0x60, 0x2d, 0x22, 0xa0, 0xc0, 0x32, 0x01, 
+        0x05, 0x0c, 0x14, 0x42, 0x61, 0x23, 0x20, 0x23, 0x10, 0x30, 0x30, 0x54, 0x1b, 0x33, 0x30, 0x30, 
+        0x54, 0x30, 0x22, 0x20, 0x22, 0x41, 0x05, 0x46, 0x07, 0x00, 0x22, 0xc0, 0xe0, 0x02, 0x21, 0x18, 
+        0x00, 0x02, 0x40, 0x00, 0x00, 0x91, 0x86, 0xf3, 0xff, 0xc0, 0x2c, 0x20, 0x05, 0x7e, 0xfc, 0x16, 
+        0x32, 0x0a, 0x32, 0xa0, 0x00, 0x32, 0x61, 0x23, 0x42, 0x2c, 0x06, 0xcc, 0xa4, 0x2d, 0x0c, 0x05, 
+        0x97, 0xff, 0xfa, 0xf2, 0x0c, 0x15, 0x52, 0x61, 0x19, 0x22, 0x2c, 0x00, 0x22, 0x22, 0x01, 0x22, 
+        0x61, 0x22, 0x22, 0x12, 0x00, 0x32, 0xa0, 0x04, 0x20, 0x20, 0xb4, 0x01, 0xa4, 0xfe, 0xc0, 0x00, 
+        0x00, 0x0c, 0x07, 0x68, 0x7c, 0x32, 0x21, 0x22, 0x92, 0x21, 0x25, 0xa8, 0x1c, 0x08, 0x19, 0xb8, 
+        0x2a, 0x42, 0x03, 0x01, 0x88, 0x06, 0x32, 0x03, 0x02, 0x80, 0x50, 0x54, 0x80, 0x86, 0x41, 0x80, 
+        0x33, 0x11, 0x40, 0x33, 0x20, 0xb9, 0x20, 0x30, 0x34, 0x64, 0x1b, 0x33, 0x79, 0x2a, 0x20, 0x33, 
+        0xa0, 0xa1, 0x1e, 0xee, 0x30, 0xff, 0xc0, 0xa0, 0x88, 0x20, 0xa0, 0x88, 0x11, 0x80, 0x55, 0x20, 
+        0x88, 0x6c, 0x89, 0x69, 0x79, 0x6c, 0x59, 0x06, 0x01, 0x87, 0xdc, 0xc0, 0x00, 0x00, 0x42, 0x21, 
+        0x23, 0x8c, 0xb4, 0x3d, 0x0c, 0x22, 0x21, 0x1b, 0x0c, 0x04, 0x85, 0x0b, 0xfc, 0x46, 0x02, 0x00, 
+        0x3d, 0x0c, 0x22, 0x21, 0x1b, 0x0c, 0x04, 0x85, 0x09, 0xfc, 0x01, 0x7f, 0xdc, 0xc0, 0x00, 0x00, 
+        0x46, 0xb3, 0xff, 0x00, 0x00, 0x00, 0xc2, 0x61, 0x24, 0x58, 0x7c, 0x22, 0x21, 0x25, 0x58, 0x05, 
+        0x08, 0x0c, 0x87, 0x75, 0x06, 0x08, 0x10, 0x4b, 0x00, 0x46, 0x00, 0x00, 0x08, 0x10, 0x32, 0x00, 
+        0x01, 0x0c, 0x84, 0x40, 0x33, 0x20, 0x32, 0x40, 0x01, 0x28, 0x62, 0x22, 0x61, 0x25, 0xc6, 0xa7, 
+        0xff, 0x62, 0x21, 0x19, 0x8c, 0xa6, 0x72, 0x21, 0x24, 0x8c, 0x57, 0x2d, 0x07, 0x05, 0x8a, 0xff, 
+        0xfa, 0xf2, 0x82, 0x21, 0x16, 0xcc, 0xb8, 0x0c, 0x1a, 0xa2, 0x41, 0x0f, 0x98, 0x7d, 0x92, 0x09, 
+        0x09, 0x92, 0x41, 0x09, 0xd2, 0x21, 0x14, 0xc2, 0x21, 0x13, 0x10, 0x31, 0x20, 0x2d, 0x0c, 0x05, 
+        0xe4, 0xfc, 0x2d, 0x0c, 0x3d, 0x01, 0x42, 0x21, 0x15, 0xb2, 0x01, 0x04, 0xd0, 0x00, 0x34, 0xc0, 
+        0x00, 0x11, 0xb0, 0xb0, 0x34, 0x00, 0xbb, 0x20, 0xb2, 0x41, 0x04, 0x45, 0x64, 0x01, 0x2d, 0x0c, 
+        0xd2, 0xc1, 0x18, 0xd8, 0x6d, 0x45, 0x4d, 0x02, 0x0c, 0x00, 0x31, 0xdc, 0xfa, 0xac, 0x82, 0x38, 
+        0x03, 0x22, 0x21, 0x11, 0x3a, 0x22, 0xd9, 0xb2, 0x16, 0x3d, 0x09, 0x58, 0x7d, 0x68, 0x05, 0x71, 
+        0x5e, 0xfe, 0x60, 0x40, 0x54, 0x60, 0x66, 0x41, 0x70, 0x66, 0x20, 0xa0, 0x66, 0x11, 0x60, 0x44, 
+        0x20, 0x49, 0x05, 0xf2, 0x5d, 0x08, 0x46, 0x1d, 0x00, 0x16, 0x9d, 0x06, 0x82, 0x21, 0x11, 0x78, 
+        0x03, 0x8a, 0x77, 0x78, 0xb7, 0xd7, 0x97, 0x12, 0x01, 0x4b, 0xdc, 0xc0, 0x00, 0x00, 0x2d, 0x0d, 
+        0x05, 0x84, 0xff, 0x01, 0x49, 0xdc, 0xc0, 0x00, 0x00, 0x0c, 0x00, 0x92, 0x21, 0x24, 0xcd, 0x0d, 
+        0x97, 0x1d, 0x0b, 0xa2, 0x21, 0x24, 0xb8, 0x1c, 0xc8, 0x6c, 0x09, 0x2b, 0xa7, 0x9c, 0xf3, 0x01, 
+        0x41, 0xdc, 0xc0, 0x00, 0x00, 0x01, 0xc1, 0xfa, 0x22, 0x21, 0x11, 0x08, 0x00, 0xf2, 0x21, 0x24, 
+        0x2a, 0x00, 0xc8, 0x60, 0xc9, 0x6f, 0xcc, 0x6c, 0x22, 0x21, 0x24, 0x22, 0xc2, 0x18, 0x29, 0x70, 
+        0xd9, 0x60, 0x01, 0x39, 0xdc, 0xc0, 0x00, 0x00, 0x21, 0x26, 0xff, 0x01, 0x69, 0xd8, 0xc0, 0x00, 
+        0x00, 0x0c, 0x00, 0x31, 0xb6, 0xfa, 0x42, 0x21, 0x11, 0x38, 0x03, 0x3a, 0x44, 0x09, 0xb4, 0x52, 
+        0x21, 0x1a, 0xb0, 0x55, 0x11, 0x5a, 0x53, 0x02, 0x45, 0x20, 0x02, 0x45, 0x21, 0x9c, 0x3e, 0x26, 
+        0x3e, 0x11, 0xb6, 0x3e, 0x09, 0x0c, 0x12, 0xb6, 0x6e, 0x0b, 0x0c, 0x02, 0x86, 0x01, 0x00, 0x0c, 
+        0x32, 0x46, 0x00, 0x00, 0x0c, 0x22, 0x45, 0xfa, 0xfe, 0xc2, 0x21, 0x1d, 0xd2, 0x21, 0x1e, 0xe2, 
+        0x21, 0x1f, 0xf2, 0x21, 0x20, 0x32, 0xa0, 0xa0, 0x02, 0x21, 0x1c, 0x3a, 0x11, 0x0d, 0xf0, 0x00, 
+        0x12, 0xc1, 0xf0, 0x09, 0x01, 0xdc, 0x02, 0x21, 0x59, 0xfa, 0x31, 0x59, 0xfa, 0x42, 0xa5, 0xd2, 
+        0x01, 0x50, 0xd8, 0xc0, 0x00, 0x00, 0x06, 0xff, 0xff, 0x31, 0x9c, 0xfa, 0x02, 0xc2, 0x18, 0x38, 
+        0x03, 0x0c, 0x05, 0x42, 0x23, 0x8f, 0x59, 0x62, 0x29, 0x04, 0x02, 0x63, 0x8f, 0x08, 0x01, 0x12, 
+        0xc1, 0x10, 0x0d, 0xf0, 0x12, 0xc1, 0xf0, 0xc9, 0x11, 0x09, 0x01, 0x01, 0x12, 0xdc, 0xc0, 0x00, 
+        0x00, 0x01, 0x92, 0xfa, 0x08, 0x00, 0xc2, 0x20, 0x8e, 0x9c, 0x1c, 0x0c, 0x04, 0x28, 0x6c, 0x22, 
+        0x60, 0x8e, 0xcc, 0x62, 0x32, 0xa2, 0x38, 0x3a, 0x30, 0x32, 0x60, 0x8f, 0x49, 0x6c, 0x01, 0x0a, 
+        0xdc, 0xc0, 0x00, 0x00, 0x2d, 0x0c, 0x08, 0x01, 0xc8, 0x11, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 
+        0x41, 0x87, 0xfa, 0x32, 0xc2, 0x18, 0x48, 0x04, 0x0c, 0x06, 0x52, 0x24, 0x91, 0x69, 0x62, 0x29, 
+        0x05, 0x32, 0x64, 0x91, 0x0d, 0xf0, 0x00, 0x00, 0x12, 0xc1, 0xf0, 0xc9, 0x11, 0x09, 0x01, 0x01, 
+        0xfd, 0xdb, 0xc0, 0x00, 0x00, 0x01, 0x7d, 0xfa, 0x08, 0x00, 0xc2, 0x20, 0x90, 0x9c, 0x1c, 0x0c, 
+        0x04, 0x28, 0x6c, 0x22, 0x60, 0x90, 0xcc, 0x62, 0x32, 0xa2, 0x40, 0x3a, 0x30, 0x32, 0x60, 0x91, 
+        0x49, 0x6c, 0x01, 0xf5, 0xdb, 0xc0, 0x00, 0x00, 0x2d, 0x0c, 0x08, 0x01, 0xc8, 0x11, 0x12, 0xc1, 
+        0x10, 0x0d, 0xf0, 0x00, 0x94, 0x88, 0x10, 0x40, 0x80, 0x2a, 0xff, 0x3f, 0x98, 0x8e, 0x10, 0x40, 
+        0xd8, 0x87, 0x10, 0x40, 0x0c, 0x05, 0x0c, 0x16, 0x12, 0xc1, 0xf0, 0xc9, 0x11, 0x09, 0x01, 0xd9, 
+        0x21, 0xd1, 0x6a, 0xfa, 0x0c, 0x00, 0x28, 0x0d, 0xb0, 0x30, 0x11, 0x1b, 0x00, 0x3a, 0x32, 0x59, 
+        0x63, 0x52, 0x43, 0x27, 0x00, 0x00, 0x74, 0x42, 0xc3, 0x18, 0x49, 0x73, 0x66, 0xb0, 0xe8, 0x0c, 
+        0x00, 0x0c, 0x74, 0xb0, 0x30, 0x11, 0x1b, 0x00, 0x3a, 0x32, 0x62, 0x43, 0x27, 0x42, 0x43, 0x24, 
+        0x00, 0x00, 0x74, 0x66, 0x20, 0xec, 0x59, 0x02, 0x0c, 0x00, 0x00, 0x60, 0xf0, 0x20, 0x40, 0xa0, 
+        0x59, 0x14, 0xf0, 0x66, 0x11, 0x2a, 0x40, 0x3b, 0x36, 0x60, 0x36, 0xb3, 0x1b, 0x00, 0x00, 0x00, 
+        0x74, 0x30, 0x32, 0x21, 0x2b, 0x33, 0x32, 0x44, 0x14, 0x66, 0x40, 0xdd, 0x0c, 0x00, 0x62, 0xa2, 
+        0x28, 0x20, 0x30, 0xb0, 0x52, 0x63, 0x8a, 0x02, 0xc0, 0x01, 0x60, 0x43, 0x80, 0x42, 0x63, 0x8b, 
+        0x00, 0x00, 0x74, 0x66, 0x20, 0xea, 0x52, 0x62, 0x8e, 0x52, 0x62, 0x90, 0x62, 0xa2, 0x38, 0x60, 
+        0x62, 0x80, 0x62, 0x62, 0x8f, 0x52, 0xa2, 0x40, 0x5a, 0x52, 0x52, 0x62, 0x91, 0xc5, 0x3a, 0xfb, 
+        0x0c, 0x0c, 0x2d, 0x0c, 0xc5, 0x3d, 0xff, 0x08, 0x0d, 0x00, 0x0c, 0xa0, 0x22, 0x60, 0x86, 0x1b, 
+        0xcc, 0xc0, 0xc0, 0x74, 0x66, 0x4c, 0xea, 0x21, 0xcf, 0xff, 0x2c, 0x03, 0x41, 0xcf, 0xff, 0x1c, 
+        0x05, 0x01, 0x77, 0xf8, 0xc0, 0x00, 0x00, 0x21, 0x1f, 0xfb, 0x31, 0xcc, 0xff, 0x0c, 0x04, 0x01, 
+        0xc3, 0xdb, 0xc0, 0x00, 0x00, 0x31, 0xca, 0xff, 0xc1, 0xca, 0xf9, 0x0c, 0x04, 0x2d, 0x0c, 0x01, 
+        0xbf, 0xdb, 0xc0, 0x00, 0x00, 0x2d, 0x0c, 0x01, 0xbc, 0xdb, 0xc0, 0x00, 0x00, 0x85, 0x6f, 0xfe, 
+        0x2d, 0x0c, 0x32, 0xa0, 0x64, 0x0c, 0x14, 0x01, 0xba, 0xdb, 0xc0, 0x00, 0x00, 0xc8, 0x11, 0xd8, 
+        0x21, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x12, 0xc1, 0xf0, 0xd9, 0x31, 0xc9, 0x21, 0xc1, 
+        0x2b, 0xfa, 0x09, 0x11, 0x08, 0x0c, 0xb0, 0xd2, 0x11, 0xda, 0x00, 0x02, 0x00, 0x24, 0x9c, 0x30, 
+        0x26, 0x30, 0x11, 0xb6, 0x30, 0x09, 0x0c, 0x12, 0xb6, 0x60, 0x0c, 0x0c, 0x02, 0xc6, 0x01, 0x00, 
+        0x0c, 0x32, 0x86, 0x00, 0x00, 0x22, 0xa0, 0x02, 0x85, 0xd0, 0xfb, 0x52, 0x2c, 0x00, 0x20, 0x02, 
+        0x20, 0xda, 0x55, 0x62, 0x05, 0x21, 0x0c, 0x0c, 0xcc, 0x96, 0x28, 0xb5, 0x8c, 0x32, 0xcd, 0x02, 
+        0x46, 0x00, 0x00, 0x8c, 0xb6, 0x08, 0x11, 0x2d, 0x0c, 0xd8, 0x31, 0xc8, 0x21, 0x12, 0xc1, 0x10, 
+        0x0d, 0xf0, 0x09, 0x01, 0xc8, 0x65, 0x0c, 0x00, 0x16, 0x9c, 0xfe, 0x68, 0x6c, 0x69, 0x65, 0xcc, 
+        0x36, 0x72, 0xc5, 0x18, 0x79, 0x75, 0xc0, 0x2c, 0x20, 0x02, 0x6c, 0x06, 0x05, 0x38, 0xfc, 0x16, 
+        0x22, 0xfd, 0x3d, 0x0c, 0x28, 0x01, 0x0c, 0x04, 0x45, 0xcc, 0xfb, 0x51, 0x0c, 0xfa, 0x58, 0x05, 
+        0xda, 0x55, 0x86, 0xf3, 0xff, 0x00, 0x00, 0x00, 0x12, 0xc1, 0xe0, 0xc9, 0x21, 0xe9, 0x41, 0xf9, 
+        0x51, 0xd9, 0x31, 0x09, 0x11, 0xdd, 0x02, 0x85, 0x0e, 0x00, 0x01, 0x04, 0xfa, 0x0c, 0x1f, 0x08, 
+        0x00, 0xe0, 0xed, 0x11, 0x0a, 0x2d, 0x00, 0x4d, 0xa0, 0x48, 0x14, 0x22, 0x02, 0x14, 0xec, 0xfd, 
+        0x00, 0x02, 0x40, 0x40, 0x30, 0x91, 0x07, 0x63, 0x0a, 0xb0, 0x52, 0x11, 0x5a, 0x50, 0x52, 0x05, 
+        0x28, 0x26, 0x15, 0x1c, 0x0c, 0x0c, 0x29, 0x61, 0xc0, 0x20, 0x74, 0xc5, 0xf2, 0xff, 0x56, 0x32, 
+        0x06, 0x1b, 0xcc, 0x66, 0x2c, 0xf1, 0x41, 0xf5, 0xf9, 0x48, 0x04, 0x28, 0x61, 0xea, 0x44, 0x48, 
+        0x14, 0xd9, 0x01, 0x00, 0x12, 0x40, 0x00, 0xcf, 0xa1, 0x0b, 0xcc, 0xc0, 0xc4, 0x10, 0xc0, 0xe4, 
+        0x30, 0xe0, 0xd0, 0x60, 0xe0, 0xdd, 0x10, 0xd0, 0xfd, 0x40, 0xd0, 0xd0, 0x60, 0xd2, 0xcd, 0x1f, 
+        0x96, 0x0d, 0x04, 0xd0, 0x20, 0x74, 0x05, 0xef, 0xff, 0x9c, 0x52, 0x01, 0xe8, 0xf9, 0xe8, 0x01, 
+        0x08, 0x00, 0x0a, 0xee, 0xd2, 0x4e, 0x14, 0xb0, 0x3d, 0x11, 0x3a, 0x30, 0xf2, 0x43, 0x28, 0x86, 
+        0x04, 0x00, 0x7c, 0xf5, 0x00, 0x1d, 0x40, 0x00, 0x4f, 0xa1, 0x50, 0x44, 0x30, 0x40, 0xee, 0x10, 
+        0x46, 0xef, 0xff, 0x0c, 0x02, 0xc8, 0x21, 0xd8, 0x31, 0xe8, 0x41, 0xf8, 0x51, 0x08, 0x11, 0x12, 
+        0xc1, 0x20, 0x0d, 0xf0, 0xc0, 0xd0, 0x60, 0xc0, 0xdd, 0x10, 0xd0, 0xfd, 0x40, 0xd0, 0xd0, 0x60, 
+        0xd2, 0xcd, 0x1f, 0x96, 0xcd, 0xfd, 0xd0, 0x20, 0x74, 0xc5, 0xe9, 0xff, 0xcc, 0xf2, 0x7c, 0xf0, 
+        0x00, 0x1d, 0x40, 0x00, 0xef, 0xa1, 0x00, 0xee, 0x30, 0xe0, 0xcc, 0x10, 0x06, 0xf5, 0xff, 0x01, 
+        0xcf, 0xf9, 0x38, 0x01, 0x08, 0x00, 0x0a, 0x33, 0xd2, 0x43, 0x14, 0x06, 0xe6, 0xff, 0x00, 0x00, 
+        0x0c, 0x19, 0x12, 0xc1, 0xf0, 0x81, 0xc9, 0xf9, 0x09, 0x21, 0x08, 0x08, 0xe0, 0x72, 0x11, 0x00, 
+        0x52, 0xa0, 0x0a, 0x42, 0x42, 0x04, 0x14, 0x38, 0x15, 0x00, 0x04, 0x40, 0x30, 0x30, 0x91, 0x07, 
+        0xe3, 0x02, 0x46, 0x20, 0x00, 0xb0, 0x64, 0x11, 0x6a, 0x60, 0xa2, 0x06, 0x28, 0x7c, 0xf8, 0x16, 
+        0x4a, 0x07, 0x0c, 0x0b, 0xa8, 0x66, 0xb2, 0x46, 0x28, 0xfc, 0xba, 0x79, 0x11, 0x49, 0x01, 0x38, 
+        0xb6, 0x29, 0x31, 0xfc, 0x13, 0x78, 0x15, 0x88, 0x01, 0x0c, 0x16, 0x00, 0x18, 0x40, 0x7c, 0xf8, 
+        0x00, 0x66, 0xa1, 0x80, 0x66, 0x30, 0x60, 0x77, 0x10, 0x79, 0x15, 0x48, 0x00, 0x0c, 0x82, 0x60, 
+        0x44, 0x10, 0x49, 0x00, 0x85, 0x45, 0x00, 0x28, 0x31, 0x48, 0x01, 0x7c, 0xf8, 0x01, 0xaf, 0xf9, 
+        0x58, 0x11, 0x08, 0x00, 0x0c, 0x19, 0x0a, 0x55, 0x58, 0x15, 0xac, 0x95, 0x00, 0x14, 0x40, 0x00, 
+        0x69, 0xa1, 0x80, 0x76, 0x30, 0x0b, 0x66, 0x60, 0x65, 0x10, 0x60, 0xa5, 0x30, 0xa0, 0x77, 0x10, 
+        0x70, 0x40, 0x60, 0x70, 0x44, 0x10, 0x40, 0xf4, 0x40, 0x40, 0x40, 0x60, 0x42, 0xc4, 0x1f, 0x96, 
+        0xb4, 0x00, 0x0a, 0x72, 0x42, 0x47, 0x14, 0x08, 0x21, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x60, 0x40, 
+        0x60, 0x60, 0x44, 0x10, 0x40, 0xf4, 0x40, 0x40, 0x40, 0x60, 0x42, 0xc4, 0x1f, 0xd6, 0x14, 0xfe, 
+        0xc6, 0xf8, 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, 0x0c, 0x1b, 0x0c, 0x08, 0xa1, 0x98, 0xf9, 0x12, 
+        0xc1, 0xf0, 0xc9, 0x11, 0xd9, 0x21, 0xa8, 0x0a, 0x09, 0x01, 0xa0, 0x75, 0xa0, 0x08, 0x17, 0xd8, 
+        0x0a, 0x56, 0x10, 0x04, 0xaa, 0x95, 0x92, 0x09, 0x14, 0x00, 0x09, 0x40, 0xd0, 0xc0, 0x91, 0x07, 
+        0xec, 0x33, 0x0d, 0x09, 0x00, 0x19, 0x40, 0xb0, 0x59, 0x11, 0x5a, 0x5a, 0x42, 0x45, 0x24, 0x32, 
+        0x45, 0x25, 0x82, 0x45, 0x28, 0x22, 0x45, 0x26, 0x28, 0x17, 0x00, 0x3b, 0xa1, 0x30, 0x22, 0x20, 
+        0x29, 0x17, 0x68, 0x0a, 0x30, 0x66, 0x20, 0x69, 0x0a, 0xc8, 0x11, 0xd8, 0x21, 0x2d, 0x00, 0x08, 
+        0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x7c, 0xfc, 0x00, 0x80, 0x60, 0x00, 0x88, 0x10, 0x80, 0xf8, 
+        0x40, 0x80, 0x80, 0x60, 0x82, 0xc8, 0x1f, 0x96, 0x88, 0x02, 0xb0, 0x98, 0x11, 0x9a, 0x9a, 0x62, 
+        0x09, 0x24, 0x00, 0x18, 0x40, 0x47, 0x96, 0x0e, 0x62, 0x09, 0x25, 0x72, 0x09, 0x26, 0x37, 0x96, 
+        0x05, 0x20, 0x77, 0xc0, 0x16, 0xc7, 0x08, 0x00, 0x9b, 0xa1, 0xc0, 0x99, 0x30, 0x90, 0x00, 0x10, 
+        0x86, 0xf0, 0xff, 0xc1, 0xd8, 0xff, 0x0c, 0x38, 0xaa, 0x95, 0x92, 0x09, 0x14, 0x80, 0x8d, 0x20, 
+        0x00, 0x19, 0x40, 0xc0, 0x98, 0x30, 0x00, 0x7b, 0xa1, 0x0b, 0x77, 0x90, 0x77, 0x10, 0x00, 0xf7, 
+        0x40, 0x1c, 0xf9, 0x00, 0x09, 0xc0, 0xd6, 0x30, 0x01, 0x70, 0x08, 0x30, 0xc0, 0x00, 0x30, 0x00, 
+        0xf0, 0x40, 0x00, 0x09, 0xc0, 0xd6, 0x40, 0x00, 0x1c, 0x00, 0xc6, 0xde, 0xff, 0xa0, 0x75, 0xa0, 
+        0x00, 0x10, 0x40, 0x00, 0x8b, 0xa1, 0x0b, 0x88, 0xd0, 0x58, 0x10, 0x50, 0xf5, 0x40, 0x50, 0x69, 
+        0xc0, 0x96, 0x56, 0x03, 0x50, 0x00, 0xc0, 0x0c, 0x08, 0x62, 0xc0, 0x20, 0x02, 0xc0, 0x21, 0x60, 
+        0x06, 0xb3, 0x00, 0x01, 0x74, 0x00, 0x10, 0x40, 0xb0, 0x60, 0x11, 0x6a, 0x6a, 0x82, 0x46, 0x28, 
+        0x32, 0x46, 0x25, 0x42, 0x46, 0x24, 0x22, 0x46, 0x26, 0x28, 0x17, 0x00, 0x3b, 0xa1, 0x30, 0x22, 
+        0x20, 0xc6, 0xca, 0xff, 0x80, 0x00, 0x74, 0x86, 0xcb, 0xff, 0x7c, 0xf5, 0x50, 0x58, 0x30, 0x50, 
+        0x5d, 0x10, 0x50, 0xf5, 0x40, 0x50, 0x50, 0xc0, 0x62, 0xc5, 0x2d, 0x52, 0xc5, 0x2e, 0x60, 0x56, 
+        0xb3, 0x0c, 0x06, 0x50, 0x51, 0x21, 0x0d, 0x05, 0xa6, 0xb5, 0x02, 0x02, 0xc5, 0xf2, 0x00, 0x00, 
+        0x74, 0x00, 0x10, 0x40, 0xb0, 0x50, 0x11, 0x5a, 0x5a, 0x42, 0x45, 0x24, 0x32, 0x45, 0x25, 0x62, 
+        0x45, 0x28, 0x22, 0x45, 0x26, 0x28, 0x17, 0x00, 0x3b, 0xa1, 0x30, 0x22, 0x20, 0xc6, 0xb7, 0xff, 
+        0x12, 0xc1, 0xc0, 0xc9, 0x91, 0xd9, 0xa1, 0xf9, 0xc1, 0xe9, 0xb1, 0x09, 0x81, 0xed, 0x02, 0x01, 
+        0xb9, 0xda, 0xc0, 0x00, 0x00, 0xc1, 0x39, 0xf9, 0xc8, 0x0c, 0xc8, 0x0c, 0x01, 0xb7, 0xda, 0xc0, 
+        0x00, 0x00, 0xf1, 0x9c, 0xff, 0x0c, 0x3d, 0xd0, 0xdc, 0x20, 0xf0, 0xdd, 0x30, 0x16, 0x2d, 0x0e, 
+        0x01, 0x33, 0xf9, 0x42, 0xa2, 0x28, 0x08, 0x00, 0xd0, 0xfe, 0x11, 0x00, 0x0e, 0xb0, 0xd2, 0x20, 
+        0x8a, 0xf9, 0xd1, 0x16, 0xcd, 0x0c, 0xd9, 0x61, 0x4a, 0x40, 0x0c, 0x03, 0x32, 0x60, 0x8a, 0x42, 
+        0x60, 0x8b, 0xc6, 0x05, 0x00, 0x51, 0x29, 0xf9, 0x62, 0x21, 0x0d, 0x52, 0x25, 0x00, 0x72, 0xa0, 
+        0x00, 0x6a, 0x55, 0x62, 0x25, 0x8b, 0x79, 0x6c, 0xc9, 0x06, 0xe2, 0x65, 0x8b, 0xcd, 0x0d, 0x16, 
+        0xfd, 0x08, 0x0c, 0x0e, 0xd8, 0x6d, 0xd9, 0x61, 0xe9, 0x6c, 0x01, 0x9e, 0xda, 0xc0, 0x00, 0x00, 
+        0x38, 0x5c, 0x48, 0x7c, 0x32, 0x03, 0x76, 0x22, 0x04, 0x00, 0x52, 0x04, 0x06, 0x20, 0x21, 0x04, 
+        0x42, 0x04, 0x04, 0x50, 0x54, 0x24, 0x40, 0x40, 0x34, 0xc5, 0xdf, 0xff, 0xfd, 0x02, 0x01, 0x96, 
+        0xda, 0xc0, 0x00, 0x00, 0xe2, 0xcc, 0x18, 0x26, 0xbf, 0xaa, 0x72, 0xa0, 0xc3, 0x58, 0x7c, 0xf0, 
+        0x60, 0x34, 0x42, 0x05, 0x00, 0xe0, 0x66, 0x11, 0x70, 0x44, 0x10, 0x60, 0x44, 0x20, 0x42, 0x45, 
+        0x00, 0x01, 0x8c, 0xda, 0xc0, 0x00, 0x00, 0xf1, 0x0d, 0xf9, 0x88, 0x7c, 0x0c, 0x0a, 0xa9, 0x6c, 
+        0x92, 0x08, 0x00, 0x78, 0x0f, 0x90, 0x92, 0x34, 0xb0, 0x99, 0x11, 0x9a, 0x97, 0x98, 0x79, 0xc9, 
+        0x09, 0x82, 0x08, 0x00, 0x80, 0x82, 0x34, 0xb0, 0x88, 0x11, 0x8a, 0x77, 0xe9, 0x77, 0x01, 0x82, 
+        0xda, 0xc0, 0x00, 0x00, 0x28, 0x7c, 0x22, 0x02, 0x06, 0x20, 0x24, 0x24, 0x05, 0x19, 0x00, 0x86, 
+        0xda, 0xff, 0x0c, 0x12, 0xc8, 0x91, 0xd8, 0xa1, 0xe8, 0xb1, 0xf8, 0xc1, 0x08, 0x81, 0x12, 0xc1, 
+        0x40, 0x0d, 0xf0, 0x0c, 0x02, 0xc6, 0xfa, 0xff, 0x01, 0x2b, 0xff, 0x3f, 0x12, 0xc1, 0xe0, 0x02, 
+        0x61, 0x00, 0xe2, 0x61, 0x03, 0xc2, 0x61, 0x01, 0xd9, 0x21, 0xf9, 0x41, 0xf1, 0xfb, 0xff, 0x7c, 
+        0xfd, 0xc2, 0x0f, 0x00, 0x0c, 0x0e, 0x2d, 0x0c, 0x85, 0x0b, 0xfe, 0x8c, 0x62, 0x2d, 0x0c, 0x05, 
+        0xec, 0xff, 0x20, 0xdc, 0x93, 0x02, 0x0f, 0x00, 0x1b, 0xcc, 0xc0, 0xc0, 0x74, 0x22, 0xcc, 0xfe, 
+        0x20, 0xce, 0x83, 0xc7, 0x90, 0xdf, 0xc8, 0x11, 0x26, 0x0d, 0x0c, 0x1b, 0x0d, 0x00, 0x20, 0x74, 
+        0x26, 0x22, 0x01, 0xed, 0x00, 0xe2, 0x4f, 0x00, 0xd8, 0x21, 0xe8, 0x31, 0xf8, 0x41, 0x08, 0x01, 
+        0x12, 0xc1, 0x20, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x12, 0xc1, 0xf0, 0xc9, 0x11, 0xd9, 0x21, 0xcd, 
+        0x02, 0x28, 0x72, 0x09, 0x01, 0x28, 0x02, 0x08, 0x0c, 0x87, 0x72, 0x06, 0xd8, 0x10, 0x4b, 0xdd, 
+        0x46, 0x00, 0x00, 0xd8, 0x10, 0x45, 0xf8, 0xff, 0x0c, 0x78, 0x72, 0xa0, 0xf0, 0x02, 0xa0, 0xc3, 
+        0x58, 0x7c, 0x62, 0xa0, 0x8f, 0x42, 0x05, 0x00, 0x38, 0x5c, 0x40, 0x21, 0x04, 0xfc, 0x03, 0xe0, 
+        0xd2, 0x11, 0x00, 0xb4, 0x10, 0xd0, 0xbb, 0x20, 0xb2, 0x45, 0x00, 0xb8, 0x7c, 0xa2, 0x0b, 0x06, 
+        0x60, 0xaa, 0x10, 0xa2, 0x4b, 0x06, 0xa8, 0x7c, 0x92, 0x0a, 0x04, 0x70, 0x99, 0x10, 0x80, 0x99, 
+        0x20, 0x92, 0x4a, 0x04, 0x0c, 0x02, 0xc8, 0x11, 0xd8, 0x21, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 
+        0xf0, 0x32, 0x0d, 0x00, 0xe0, 0xd2, 0x11, 0x30, 0x32, 0x14, 0xec, 0x33, 0x00, 0xb4, 0x10, 0xd0, 
+        0xbb, 0x20, 0xb2, 0x45, 0x00, 0xb8, 0x7c, 0xa2, 0x0b, 0x06, 0x60, 0xaa, 0x10, 0xa2, 0x4b, 0x06, 
+        0xa8, 0x7c, 0x92, 0x0a, 0x04, 0x70, 0x99, 0x10, 0x80, 0x99, 0x20, 0x92, 0x4a, 0x04, 0x86, 0xf0, 
+        0xff, 0x05, 0xfe, 0xfd, 0x56, 0x12, 0x01, 0x02, 0x2c, 0x07, 0x08, 0x00, 0x37, 0x70, 0x09, 0x0c, 
+        0x12, 0x45, 0x02, 0xfe, 0x0c, 0x12, 0x06, 0xeb, 0xff, 0x01, 0x32, 0xda, 0xc0, 0x00, 0x00, 0x38, 
+        0x5c, 0x48, 0x7c, 0x32, 0x03, 0x76, 0x22, 0x04, 0x00, 0x52, 0x04, 0x06, 0x20, 0x21, 0x04, 0x42, 
+        0x04, 0x04, 0x50, 0x54, 0x24, 0x40, 0x40, 0x34, 0xc5, 0xc4, 0xff, 0xdd, 0x02, 0x01, 0x2a, 0xda, 
+        0xc0, 0x00, 0x00, 0x26, 0xbd, 0xcd, 0x72, 0xa0, 0xc3, 0x58, 0x7c, 0xd0, 0x60, 0x34, 0x42, 0x05, 
+        0x00, 0xe0, 0x66, 0x11, 0x70, 0x44, 0x10, 0x60, 0x44, 0x20, 0x42, 0x45, 0x00, 0xc6, 0xd8, 0xff, 
+        0x0c, 0x04, 0x12, 0xc1, 0xf0, 0x09, 0x01, 0x38, 0x72, 0x0c, 0x40, 0x42, 0x43, 0x0e, 0x02, 0x43, 
+        0x0f, 0xc5, 0x7e, 0xff, 0x0c, 0x42, 0x85, 0x00, 0x00, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 
+        0x12, 0xc1, 0xf0, 0xc9, 0x11, 0x09, 0x01, 0xcd, 0x02, 0x01, 0x16, 0xda, 0xc0, 0x00, 0x00, 0x21, 
+        0x4e, 0xf8, 0x2a, 0x2c, 0x02, 0x02, 0x00, 0x8c, 0x90, 0x01, 0x13, 0xda, 0xc0, 0x00, 0x00, 0x0c, 
+        0x02, 0x86, 0x05, 0x00, 0x1b, 0x30, 0x32, 0x42, 0x00, 0x01, 0x0f, 0xda, 0xc0, 0x00, 0x00, 0x3d, 
+        0x0c, 0x2c, 0x02, 0x0c, 0x04, 0x01, 0xc0, 0xed, 0xc0, 0x00, 0x00, 0xc8, 0x11, 0x08, 0x01, 0x12, 
+        0xc1, 0x10, 0x0d, 0xf0, 0x12, 0xc1, 0xf0, 0x09, 0x01, 0x08, 0x72, 0x58, 0x52, 0x02, 0x00, 0x0d, 
+        0xa2, 0x12, 0x08, 0x00, 0x00, 0x34, 0x8c, 0xd0, 0x26, 0x10, 0x10, 0x32, 0xc0, 0xfe, 0x16, 0x83, 
+        0x0c, 0x42, 0xc0, 0xfd, 0x16, 0x84, 0x12, 0x0c, 0x40, 0x46, 0x00, 0x00, 0x0c, 0x80, 0x0a, 0xaa, 
+        0xa2, 0x52, 0x08, 0xb1, 0x9b, 0xd8, 0x88, 0x12, 0xc0, 0x20, 0x00, 0x92, 0x18, 0x01, 0x00, 0x99, 
+        0x11, 0xc0, 0x20, 0x00, 0x32, 0x18, 0x00, 0xa1, 0x97, 0xd8, 0x30, 0x99, 0x20, 0xb0, 0x99, 0x10, 
+        0x90, 0x9c, 0x41, 0x0a, 0x99, 0x90, 0x90, 0xb4, 0x40, 0x99, 0x11, 0xc0, 0x20, 0x00, 0x72, 0x18, 
+        0x01, 0x00, 0x77, 0x11, 0xc0, 0x20, 0x00, 0xb2, 0x18, 0x00, 0xb0, 0x77, 0x20, 0xa0, 0x77, 0x10, 
+        0x90, 0x77, 0x20, 0xc0, 0x20, 0x00, 0x72, 0x58, 0x00, 0x70, 0x70, 0xf5, 0xc0, 0x20, 0x00, 0x68, 
+        0x72, 0x4c, 0x03, 0x68, 0x06, 0x72, 0x58, 0x01, 0x87, 0x76, 0x06, 0xec, 0x35, 0x0c, 0x12, 0x06, 
+        0x06, 0x00, 0x42, 0xa0, 0xbf, 0x08, 0x12, 0xc0, 0x20, 0x00, 0xb2, 0x00, 0x03, 0x40, 0xbb, 0x10, 
+        0x30, 0xbb, 0x20, 0xc0, 0x20, 0x00, 0xb2, 0x40, 0x03, 0x0c, 0x02, 0x08, 0x01, 0x12, 0xc1, 0x10, 
+        0x0d, 0xf0, 0x2c, 0x06, 0x72, 0xa0, 0xdf, 0x48, 0x02, 0xc0, 0x20, 0x00, 0x32, 0x04, 0x03, 0x70, 
+        0x33, 0x10, 0x60, 0x33, 0x20, 0xc0, 0x20, 0x00, 0x32, 0x44, 0x03, 0x08, 0x72, 0x02, 0x00, 0x0d, 
+        0x00, 0x00, 0x34, 0x26, 0x30, 0x18, 0x9c, 0x50, 0x21, 0x0d, 0xf8, 0x31, 0x0d, 0xf8, 0x42, 0xa7, 
+        0xbf, 0x01, 0x03, 0xd6, 0xc0, 0x00, 0x00, 0x06, 0xff, 0xff, 0x1c, 0x00, 0x86, 0xcf, 0xff, 0x41, 
+        0x93, 0xfb, 0x32, 0x12, 0x08, 0x28, 0x02, 0x4a, 0x33, 0x28, 0x12, 0x41, 0xed, 0xea, 0x02, 0x12, 
+        0x00, 0x30, 0x30, 0xb4, 0x40, 0x00, 0x10, 0x30, 0x00, 0x20, 0x32, 0x02, 0x02, 0x02, 0x52, 0x00, 
+        0x52, 0x05, 0x74, 0x62, 0x02, 0x01, 0x00, 0x00, 0xb4, 0x4b, 0x80, 0x80, 0x33, 0x11, 0x60, 0x33, 
+        0x20, 0x87, 0x25, 0x08, 0x00, 0x05, 0xc0, 0x00, 0x02, 0x21, 0x46, 0x00, 0x00, 0x0c, 0x00, 0x51, 
+        0xf0, 0xfa, 0x00, 0x40, 0x64, 0xc0, 0x44, 0x11, 0x50, 0x33, 0x10, 0x40, 0x33, 0x20, 0x32, 0x42, 
+        0x01, 0x42, 0xa0, 0xcf, 0x30, 0x38, 0x74, 0x40, 0x33, 0x10, 0x32, 0x42, 0x02, 0x06, 0xd6, 0xff, 
+        0x0c, 0xc0, 0x06, 0xb6, 0xff, 0x00, 0x00, 0x00, 0x12, 0xc1, 0xf0, 0xc9, 0x31, 0x09, 0x21, 0xcd, 
+        0x03, 0x01, 0x32, 0xf8, 0x3d, 0x04, 0x39, 0x01, 0x08, 0x00, 0xb0, 0x42, 0x11, 0x4a, 0x00, 0x02, 
+        0x00, 0x27, 0x49, 0x11, 0x56, 0x50, 0x04, 0x01, 0xab, 0xd9, 0xc0, 0x00, 0x00, 0x01, 0x2b, 0xf8, 
+        0x28, 0x11, 0x08, 0x00, 0x2a, 0x00, 0x08, 0x60, 0xac, 0xb0, 0x68, 0x70, 0x28, 0x06, 0x87, 0xf2, 
+        0x25, 0x22, 0x16, 0x05, 0x38, 0x01, 0xca, 0xc2, 0xc0, 0xc0, 0xf4, 0xdc, 0x00, 0x21, 0xdb, 0xf7, 
+        0x31, 0xdc, 0xf7, 0x42, 0xa7, 0xd6, 0x01, 0xd2, 0xd5, 0xc0, 0x00, 0x00, 0x06, 0xff, 0xff, 0x37, 
+        0xbc, 0x15, 0x08, 0x60, 0x56, 0x20, 0xfd, 0x01, 0x9c, 0xd9, 0xc0, 0x00, 0x00, 0x2d, 0x0c, 0x08, 
+        0x21, 0xc8, 0x31, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x01, 0x98, 0xd9, 0xc0, 0x00, 0x00, 0xc8, 0x01, 
+        0x46, 0xfa, 0xff, 0x00, 0x12, 0xc1, 0xf0, 0xc2, 0x61, 0x01, 0x02, 0x61, 0x00, 0x02, 0x22, 0x07, 
+        0xcd, 0x02, 0x28, 0x00, 0x97, 0x72, 0x0a, 0x22, 0x00, 0x08, 0x05, 0x47, 0x00, 0x08, 0x7c, 0x86, 
+        0x05, 0x00, 0x07, 0xf2, 0x10, 0x77, 0xe2, 0x0d, 0x22, 0x00, 0x08, 0x45, 0x41, 0x00, 0x08, 0x7c, 
+        0x46, 0x01, 0x00, 0x00, 0x00, 0x00, 0x22, 0xa0, 0x00, 0x20, 0x40, 0x84, 0x32, 0x10, 0x03, 0x22, 
+        0x2c, 0x07, 0x90, 0x44, 0x11, 0x30, 0x30, 0x64, 0x40, 0x33, 0x20, 0x32, 0x50, 0x03, 0x32, 0x1c, 
+        0x08, 0x42, 0x12, 0x03, 0x22, 0x02, 0x08, 0x40, 0x47, 0x41, 0x85, 0x3f, 0x00, 0x02, 0x21, 0x00, 
+        0x58, 0x7c, 0xc8, 0x11, 0x22, 0x55, 0x05, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x12, 0xc1, 0xe0, 0xe2, 
+        0x61, 0x04, 0xf2, 0x61, 0x05, 0x32, 0x61, 0x00, 0xc9, 0x21, 0xd9, 0x31, 0xcd, 0x02, 0x28, 0x72, 
+        0x09, 0x11, 0xd2, 0x02, 0x00, 0x22, 0x02, 0x06, 0xd0, 0xd2, 0x34, 0x20, 0x24, 0x24, 0x45, 0x45, 
+        0xfb, 0xfd, 0x02, 0xe1, 0x02, 0xeb, 0x0c, 0x08, 0x41, 0xf1, 0xf7, 0x0c, 0x03, 0x48, 0x04, 0xb0, 
+        0x5d, 0x11, 0x5a, 0x44, 0x39, 0xb4, 0x32, 0x44, 0x20, 0x32, 0x44, 0x21, 0x92, 0x2c, 0x01, 0x62, 
+        0x2c, 0x07, 0xd2, 0x2c, 0x06, 0x78, 0x06, 0x89, 0x6c, 0x70, 0x50, 0x54, 0x89, 0x29, 0x70, 0x76, 
+        0x41, 0xe0, 0x77, 0x20, 0xa0, 0x77, 0x11, 0x70, 0x55, 0x20, 0x59, 0x06, 0x8c, 0xad, 0x3d, 0x0c, 
+        0x2d, 0x0f, 0x0c, 0x04, 0x85, 0x41, 0xfb, 0xc6, 0x02, 0x00, 0xc0, 0x3c, 0x20, 0xf0, 0x2f, 0x20, 
+        0x42, 0x21, 0x00, 0xc5, 0x40, 0xfb, 0xcd, 0x0d, 0x0c, 0x08, 0x56, 0xed, 0xfb, 0xc8, 0x21, 0xd8, 
+        0x31, 0xe8, 0x41, 0xf8, 0x51, 0x08, 0x11, 0x12, 0xc1, 0x20, 0x0d, 0xf0, 0x12, 0xc1, 0xe0, 0x09, 
+        0x11, 0x39, 0x01, 0xe9, 0x41, 0xc9, 0x21, 0xd9, 0x31, 0xf9, 0x51, 0xdd, 0x02, 0xf8, 0x72, 0xcd, 
+        0x02, 0xf2, 0x0f, 0x00, 0x0c, 0x0e, 0xf0, 0xf2, 0x34, 0x46, 0x01, 0x00, 0x28, 0x1d, 0xdd, 0x00, 
+        0xe9, 0x22, 0x08, 0x6d, 0x56, 0x40, 0xff, 0x2d, 0x0c, 0x85, 0xc4, 0xfe, 0x08, 0x01, 0x31, 0xcb, 
+        0xf7, 0xb0, 0x2f, 0x11, 0x38, 0x03, 0xb0, 0x5f, 0x11, 0x5a, 0x53, 0x3a, 0x22, 0x48, 0x62, 0x49, 
+        0x6d, 0xcc, 0x34, 0x42, 0xcd, 0x18, 0x49, 0x72, 0xe9, 0xb2, 0xc9, 0x62, 0xe2, 0x45, 0x20, 0xe2, 
+        0x45, 0x21, 0x8c, 0x90, 0x28, 0x7c, 0x22, 0x02, 0x06, 0x20, 0x24, 0x24, 0x05, 0xc9, 0xff, 0xc8, 
+        0x21, 0xd8, 0x31, 0xe8, 0x41, 0xf8, 0x51, 0x08, 0x11, 0x12, 0xc1, 0x20, 0x0d, 0xf0, 0x00, 0x00, 
+        0xb6, 0x52, 0x13, 0xb6, 0x82, 0x09, 0x2c, 0x44, 0xf6, 0xb2, 0x07, 0x1c, 0x44, 0x86, 0x00, 0x00, 
+        0x42, 0xa0, 0x60, 0x2d, 0x04, 0x0d, 0xf0, 0x22, 0xa0, 0xc0, 0x0d, 0xf0, 0x10, 0x2b, 0xff, 0x3f, 
+        0x2e, 0xba, 0x00, 0x00, 0x17, 0x5d, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0xaa, 0xaa, 0x00, 0x00, 
+        0xc7, 0x71, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0xe3, 0x38, 0x00, 0x00, 0xaa, 0x2a, 0x00, 0x00, 
+        0x71, 0x1c, 0x00, 0x00, 0x55, 0x15, 0x00, 0x00, 0xf6, 0x12, 0x00, 0x00, 0x89, 0x9d, 0x00, 0x00, 
+        0xc4, 0x4e, 0x00, 0x00, 0x83, 0x34, 0x00, 0x00, 0x62, 0x27, 0x00, 0x00, 0x41, 0x1a, 0x00, 0x00, 
+        0xb1, 0x13, 0x00, 0x00, 0x81, 0x11, 0x00, 0x00, 0xc8, 0x8d, 0x00, 0x00, 0xe4, 0x46, 0x00, 0x00, 
+        0x42, 0x2f, 0x00, 0x00, 0x72, 0x23, 0x00, 0x00, 0xa1, 0x17, 0x00, 0x00, 0xb9, 0x11, 0x00, 0x00, 
+        0x2d, 0x0e, 0x00, 0x00, 0x91, 0xe7, 0xff, 0x41, 0x84, 0xd6, 0xb1, 0xbb, 0xd6, 0x71, 0xe5, 0xff, 
+        0x0c, 0x75, 0x0c, 0x36, 0x0c, 0x02, 0x0c, 0x1a, 0x31, 0xe1, 0xff, 0x0c, 0x28, 0x82, 0x43, 0x36, 
+        0x82, 0x43, 0x14, 0x82, 0x43, 0x15, 0x82, 0x43, 0x16, 0xa2, 0x43, 0x2e, 0xa2, 0x43, 0x0c, 0xa2, 
+        0x43, 0x0d, 0xa2, 0x43, 0x0e, 0x22, 0x43, 0x04, 0x22, 0x43, 0x05, 0x22, 0x43, 0x06, 0x22, 0x43, 
+        0x26, 0x62, 0x43, 0x3e, 0x62, 0x43, 0x1c, 0x62, 0x43, 0x1d, 0x62, 0x43, 0x1e, 0x52, 0x43, 0x3c, 
+        0x52, 0x43, 0x3d, 0x52, 0x43, 0x46, 0x52, 0x43, 0x66, 0x79, 0xe3, 0x79, 0x63, 0xb9, 0xa3, 0xb9, 
+        0x23, 0x49, 0x03, 0x99, 0xc3, 0x99, 0x43, 0x49, 0x83, 0x91, 0xcf, 0xff, 0x0c, 0xb4, 0x0c, 0xab, 
+        0x0c, 0x67, 0x72, 0x43, 0x34, 0x72, 0x43, 0x35, 0x72, 0x43, 0x4e, 0x72, 0x43, 0x6e, 0x72, 0x43, 
+        0x9e, 0x72, 0x43, 0xa6, 0x72, 0x43, 0xae, 0x72, 0x43, 0xb6, 0x72, 0x43, 0xbe, 0x72, 0x43, 0xde, 
+        0x72, 0x43, 0xe6, 0x72, 0x43, 0xee, 0x72, 0x43, 0xf6, 0x72, 0x43, 0xfe, 0xb2, 0x43, 0x54, 0xb2, 
+        0x43, 0x55, 0xb2, 0x43, 0x74, 0xb2, 0x43, 0x75, 0xb2, 0x43, 0x8c, 0xb2, 0x43, 0x8d, 0xb2, 0x43, 
+        0x94, 0xb2, 0x43, 0x95, 0xb2, 0x43, 0xcc, 0xb2, 0x43, 0xcd, 0xb2, 0x43, 0xd4, 0xb2, 0x43, 0xd5, 
+        0x42, 0x43, 0x5c, 0x42, 0x43, 0x5d, 0x42, 0x43, 0x7c, 0x42, 0x43, 0x7d, 0x42, 0x43, 0x84, 0x42, 
+        0x43, 0x85, 0x42, 0x43, 0xc4, 0x42, 0x43, 0xc5, 0x92, 0x63, 0x2e, 0x92, 0x63, 0x3c, 0x51, 0xb4, 
+        0xff, 0x61, 0xb2, 0xff, 0x0c, 0x42, 0x0c, 0x5a, 0x0c, 0x98, 0x82, 0x43, 0x4c, 0x82, 0x43, 0x4d, 
+        0x82, 0x43, 0x6c, 0x82, 0x43, 0x6d, 0x82, 0x43, 0x44, 0x82, 0x43, 0x45, 0x82, 0x43, 0x64, 0x82, 
+        0x43, 0x65, 0x82, 0x43, 0x9c, 0x82, 0x43, 0x9d, 0x82, 0x43, 0xa4, 0x82, 0x43, 0xa5, 0x82, 0x43, 
+        0xac, 0x82, 0x43, 0xad, 0x82, 0x43, 0xb4, 0x82, 0x43, 0xb5, 0x82, 0x43, 0xbc, 0x82, 0x43, 0xbd, 
+        0x82, 0x43, 0xdc, 0x82, 0x43, 0xdd, 0x82, 0x43, 0xe4, 0x82, 0x43, 0xe5, 0x82, 0x43, 0xec, 0x82, 
+        0x43, 0xed, 0x82, 0x43, 0xf4, 0x82, 0x43, 0xf5, 0x82, 0x43, 0xfc, 0x82, 0x43, 0xfd, 0xa2, 0x43, 
+        0x2c, 0xa2, 0x43, 0x2d, 0xa2, 0x43, 0x56, 0xa2, 0x43, 0x76, 0xa2, 0x43, 0x8e, 0xa2, 0x43, 0x96, 
+        0xa2, 0x43, 0xce, 0xa2, 0x43, 0xd6, 0x22, 0x43, 0x24, 0x22, 0x43, 0x25, 0x22, 0x43, 0x5e, 0x22, 
+        0x43, 0x7e, 0x22, 0x43, 0x86, 0x22, 0x43, 0xc6, 0x62, 0x63, 0x16, 0x52, 0x63, 0x1e, 0x91, 0x95, 
+        0xff, 0x92, 0x63, 0x10, 0x51, 0x98, 0xff, 0x61, 0x96, 0xff, 0x62, 0x63, 0x22, 0x52, 0x63, 0x24, 
+        0x91, 0x9a, 0xff, 0x92, 0x63, 0x30, 0x51, 0x9c, 0xff, 0x61, 0x9a, 0xff, 0x62, 0x63, 0x36, 0x52, 
+        0x63, 0x38, 0x21, 0x89, 0xff, 0x41, 0x87, 0xff, 0x42, 0x63, 0x14, 0x22, 0x63, 0x1c, 0x41, 0x8e, 
+        0xff, 0x21, 0x8e, 0xff, 0xa1, 0x87, 0xff, 0xa2, 0x63, 0x1a, 0x22, 0x63, 0x28, 0x42, 0x63, 0x26, 
+        0x21, 0x94, 0xff, 0xb1, 0x82, 0xff, 0x41, 0x91, 0xff, 0xa1, 0x8a, 0xff, 0xa2, 0x63, 0x2c, 0x42, 
+        0x63, 0x3a, 0xb2, 0x63, 0x12, 0x22, 0x63, 0x3e, 0xb1, 0x86, 0xff, 0x71, 0x80, 0xff, 0x72, 0x63, 
+        0x20, 0xb2, 0x63, 0x2a, 0x71, 0x87, 0xff, 0x72, 0x63, 0x34, 0x81, 0x7b, 0xff, 0x82, 0x63, 0x18, 
+        0x81, 0x83, 0xff, 0x82, 0x63, 0x32, 0x0d, 0xf0, 0x12, 0xc1, 0xf0, 0x09, 0x01, 0x02, 0xa1, 0x5f, 
+        0x07, 0xc2, 0x05, 0x05, 0xe1, 0xff, 0xc6, 0x0b, 0x00, 0x41, 0x68, 0xff, 0x0c, 0x58, 0x0c, 0x75, 
+        0x0c, 0x32, 0x0b, 0x93, 0x0c, 0x17, 0x0c, 0x06, 0x90, 0x67, 0x83, 0x60, 0x25, 0x93, 0x60, 0x78, 
+        0x93, 0x72, 0x44, 0x5c, 0x72, 0x44, 0x7c, 0x72, 0x44, 0x54, 0x22, 0x44, 0x74, 0x22, 0x44, 0x4c, 
+        0x22, 0x44, 0x6c, 0x22, 0x44, 0x44, 0x22, 0x44, 0x64, 0x0c, 0x02, 0x08, 0x01, 0x12, 0xc1, 0x10, 
+        0x0d, 0xf0, 0x00, 0x00, 0x31, 0x5a, 0xff, 0x30, 0x22, 0xb0, 0x22, 0x02, 0x05, 0x0d, 0xf0, 0x00, 
+        0x31, 0x57, 0xff, 0x30, 0x22, 0xb0, 0x22, 0x02, 0x04, 0x0d, 0xf0, 0x00, 0xd0, 0x80, 0xfe, 0x3f, 
+        0x31, 0x53, 0xff, 0x30, 0x22, 0xb0, 0x31, 0xfd, 0xff, 0x22, 0x02, 0x05, 0x30, 0x22, 0x90, 0x22, 
+        0x12, 0x00, 0x0d, 0xf0, 0x12, 0xc1, 0xe0, 0x39, 0x01, 0x49, 0x11, 0xc9, 0x31, 0x09, 0x21, 0xcd, 
+        0x02, 0xc5, 0xd0, 0xff, 0x29, 0x41, 0x38, 0x01, 0x2d, 0x0c, 0xc5, 0x05, 0x00, 0x08, 0x41, 0x38, 
+        0x11, 0x0c, 0xa4, 0x2a, 0x23, 0xb6, 0x8c, 0x01, 0x1c, 0x04, 0xc8, 0x31, 0x4a, 0x50, 0x5a, 0x22, 
+        0x08, 0x21, 0x12, 0xc1, 0x20, 0x20, 0x20, 0xf4, 0x0d, 0xf0, 0x00, 0x00, 0x12, 0xc1, 0xf0, 0xc9, 
+        0x31, 0x09, 0x21, 0x01, 0x3e, 0xff, 0x0c, 0xac, 0x00, 0x02, 0xb0, 0x22, 0x00, 0x05, 0x09, 0x01, 
+        0xb6, 0x82, 0x01, 0x1c, 0x0c, 0x85, 0xcc, 0xff, 0x29, 0x11, 0x28, 0x01, 0x2c, 0x03, 0x22, 0x02, 
+        0x05, 0x45, 0x01, 0x00, 0x38, 0x11, 0x08, 0x21, 0x3a, 0x3c, 0xc8, 0x31, 0x3a, 0x22, 0x20, 0x20, 
+        0xf4, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0xd0, 0x43, 0x11, 0x51, 0x30, 0xff, 0x40, 0x30, 
+        0xf4, 0x41, 0xf0, 0xe9, 0x50, 0x52, 0xb0, 0x58, 0x05, 0xb6, 0x82, 0x05, 0x32, 0xc3, 0x16, 0x30, 
+        0x30, 0xf4, 0x30, 0x35, 0x82, 0x4a, 0x33, 0x30, 0x32, 0xd5, 0xb6, 0x82, 0x06, 0x7c, 0xc4, 0x3b, 
+        0x33, 0x40, 0x33, 0x10, 0x30, 0x20, 0xf4, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x30, 0x62, 0xc0, 0x37, 
+        0x32, 0x03, 0x2d, 0x06, 0x0d, 0xf0, 0x0b, 0x26, 0x0d, 0xf0, 0x00, 0x00, 0x48, 0x12, 0x00, 0x00, 
+        0xa8, 0x2a, 0x00, 0x00, 0x60, 0x18, 0x00, 0x00, 0x78, 0x1e, 0x00, 0x00, 0x90, 0x24, 0x00, 0x00, 
+        0x1c, 0x13, 0x37, 0x12, 0x38, 0x1c, 0x24, 0x47, 0x12, 0x3d, 0x1c, 0x35, 0x57, 0x12, 0x3d, 0x1c, 
+        0x46, 0x67, 0x12, 0x3d, 0x1c, 0x77, 0x27, 0x27, 0x04, 0x1c, 0x58, 0x87, 0xa2, 0x24, 0x1c, 0x99, 
+        0x97, 0x12, 0x1a, 0x1c, 0xaa, 0xa7, 0x12, 0x1f, 0x1c, 0xbb, 0xb7, 0x12, 0x1f, 0x1c, 0xc3, 0x37, 
+        0x12, 0x1f, 0xe6, 0xc2, 0x04, 0x1c, 0xd4, 0x47, 0xa2, 0x08, 0x0c, 0x02, 0x0d, 0xf0, 0x21, 0xeb, 
+        0xff, 0x0d, 0xf0, 0x21, 0xeb, 0xff, 0x0d, 0xf0, 0x21, 0xeb, 0xff, 0x0d, 0xf0, 0x21, 0xea, 0xff, 
+        0x0d, 0xf0, 0x21, 0xea, 0xff, 0x0d, 0xf0, 0x00, 0xda, 0xae, 0x10, 0x40, 0xf6, 0xc2, 0x6a, 0x41, 
+        0xfe, 0xff, 0x20, 0x32, 0x90, 0x4a, 0x33, 0xa0, 0x03, 0x00, 0x46, 0x22, 0x00, 0x86, 0x20, 0x00, 
+        0x86, 0x15, 0x00, 0xc6, 0x14, 0x00, 0x06, 0x14, 0x00, 0x86, 0x1d, 0x00, 0x86, 0x12, 0x00, 0xc6, 
+        0x11, 0x00, 0x06, 0x11, 0x00, 0x46, 0x10, 0x00, 0x86, 0x0f, 0x00, 0xc6, 0x0e, 0x00, 0x06, 0x0e, 
+        0x00, 0x46, 0x0d, 0x00, 0x86, 0x0c, 0x00, 0xc6, 0x0b, 0x00, 0x46, 0x14, 0x00, 0x86, 0x12, 0x00, 
+        0xc6, 0x10, 0x00, 0x06, 0x0f, 0x00, 0x46, 0x0d, 0x00, 0x86, 0x0b, 0x00, 0xc6, 0x09, 0x00, 0x06, 
+        0x08, 0x00, 0x06, 0x05, 0x00, 0x46, 0x04, 0x00, 0x86, 0x03, 0x00, 0xc6, 0x02, 0x00, 0x06, 0x02, 
+        0x00, 0x46, 0x01, 0x00, 0x86, 0x00, 0x00, 0x06, 0x01, 0x00, 0x22, 0xa0, 0xff, 0x0d, 0xf0, 0x0c, 
+        0x02, 0x0d, 0xf0, 0x0c, 0x12, 0x0d, 0xf0, 0x0c, 0x22, 0x0d, 0xf0, 0x0c, 0x32, 0x0d, 0xf0, 0x0c, 
+        0x42, 0x0d, 0xf0, 0x0c, 0x52, 0x0d, 0xf0, 0x0c, 0x62, 0x0d, 0xf0, 0x0c, 0x72, 0x0d, 0xf0, 0x0c, 
+        0x82, 0x0d, 0xf0, 0x0c, 0x92, 0x0d, 0xf0, 0x0c, 0xa2, 0x0d, 0xf0, 0x00, 0x7e, 0xaf, 0x10, 0x40, 
+        0xf6, 0xb2, 0x3a, 0x41, 0xfe, 0xff, 0x20, 0x32, 0x90, 0x4a, 0x33, 0xa0, 0x03, 0x00, 0x46, 0x15, 
+        0x00, 0x86, 0x13, 0x00, 0x86, 0x09, 0x00, 0xc6, 0x08, 0x00, 0x06, 0x08, 0x00, 0x86, 0x10, 0x00, 
+        0x86, 0x06, 0x00, 0xc6, 0x05, 0x00, 0x46, 0x0d, 0x00, 0x86, 0x0b, 0x00, 0xc6, 0x09, 0x00, 0x06, 
+        0x08, 0x00, 0x46, 0x03, 0x00, 0x86, 0x05, 0x00, 0xc6, 0x03, 0x00, 0x06, 0x02, 0x00, 0x22, 0xa0, 
+        0xff, 0x0d, 0xf0, 0x0c, 0x02, 0x0d, 0xf0, 0x0c, 0x62, 0x0d, 0xf0, 0x0c, 0x42, 0x0d, 0xf0, 0x0c, 
+        0x22, 0x0d, 0xf0, 0x0c, 0x72, 0x0d, 0xf0, 0x0c, 0x52, 0x0d, 0xf0, 0x0c, 0x32, 0x0d, 0xf0, 0x0c, 
+        0x12, 0x0d, 0xf0, 0x0c, 0x82, 0x0d, 0xf0, 0x0c, 0x92, 0x0d, 0xf0, 0x00, 0xac, 0x12, 0x26, 0x12, 
+        0x17, 0x26, 0x22, 0x18, 0x26, 0x32, 0x0d, 0x26, 0x52, 0x0e, 0x26, 0x62, 0x0f, 0x26, 0x72, 0x04, 
+        0x22, 0xa0, 0xff, 0x0d, 0xf0, 0x0c, 0x02, 0x0d, 0xf0, 0x0c, 0x22, 0x0d, 0xf0, 0x0c, 0x12, 0x0d, 
+        0xf0, 0x0c, 0x32, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x8c, 0xd3, 0x0c, 0x06, 0x62, 0x42, 0x0a, 0xcb, 
+        0x22, 0x1b, 0x66, 0x60, 0x60, 0x74, 0x67, 0x93, 0xf2, 0x0d, 0xf0, 0x00, 0x0c, 0x05, 0x42, 0x02, 
+        0x0b, 0x00, 0x05, 0x40, 0x40, 0x40, 0x91, 0x07, 0x64, 0x04, 0x5a, 0x62, 0x32, 0x46, 0x0c, 0x1b, 
+        0x55, 0x50, 0x50, 0x74, 0x66, 0x85, 0xe6, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x62, 0x12, 0x38, 0x67, 
+        0xb3, 0x04, 0x32, 0x52, 0x39, 0x0d, 0xf0, 0x3d, 0x06, 0x46, 0xfd, 0xff, 0xff, 0x1f, 0x00, 0x00, 
+        0xff, 0x5f, 0x00, 0x00, 0xff, 0x3f, 0x00, 0x00, 0x32, 0x62, 0x17, 0xf6, 0x43, 0x35, 0xb6, 0x23, 
+        0x32, 0x31, 0xfa, 0xff, 0x8c, 0xa4, 0x26, 0x14, 0x2c, 0xe6, 0x44, 0x05, 0xa6, 0x24, 0x02, 0x31, 
+        0xf8, 0xff, 0x32, 0x52, 0x38, 0x0c, 0x84, 0xe6, 0x45, 0x02, 0xd6, 0xe5, 0x00, 0x26, 0x45, 0x20, 
+        0x26, 0x55, 0x22, 0x26, 0x65, 0x15, 0x32, 0xaf, 0x94, 0x46, 0x00, 0x00, 0x0c, 0xc3, 0x32, 0x42, 
+        0x74, 0x42, 0x42, 0x75, 0x0d, 0xf0, 0x31, 0xef, 0xff, 0x46, 0xf5, 0xff, 0x4c, 0xc3, 0x06, 0xfb, 
+        0xff, 0x1c, 0x43, 0xc6, 0xf9, 0xff, 0x2c, 0x83, 0x86, 0xf8, 0xff, 0x00, 0x00, 0x83, 0xfe, 0x3f, 
+        0xdc, 0xaf, 0x10, 0x40, 0x20, 0x82, 0xfe, 0x3f, 0x70, 0xaf, 0x10, 0x40, 0x24, 0x83, 0xfe, 0x3f, 
+        0x74, 0x82, 0xfe, 0x3f, 0x90, 0x81, 0xfe, 0x3f, 0xcc, 0xae, 0x10, 0x40, 0x0c, 0x37, 0x61, 0xf8, 
+        0xff, 0x12, 0xc1, 0xf0, 0x09, 0x01, 0x32, 0x42, 0x15, 0xd9, 0x21, 0xc9, 0x11, 0xdd, 0x04, 0xcd, 
+        0x02, 0x0c, 0x02, 0x02, 0x2c, 0x17, 0x41, 0xf1, 0xff, 0x8c, 0xd0, 0x1c, 0x58, 0x1c, 0xda, 0x0c, 
+        0x29, 0x26, 0x10, 0x17, 0x26, 0x20, 0x78, 0x26, 0x30, 0x7c, 0x42, 0x6c, 0x1a, 0x42, 0x6c, 0x18, 
+        0x22, 0x4c, 0x04, 0x72, 0x4c, 0x05, 0x62, 0x6c, 0x1b, 0x46, 0x0e, 0x00, 0x22, 0x4c, 0x04, 0xa2, 
+        0xc4, 0x80, 0x01, 0xe8, 0xff, 0x62, 0xa0, 0x07, 0x52, 0xa0, 0x09, 0xb1, 0xe7, 0xff, 0xb2, 0x6c, 
+        0x1b, 0xd0, 0x56, 0x93, 0xd0, 0x0a, 0x83, 0x02, 0x6c, 0x1a, 0x52, 0x4c, 0x05, 0xa6, 0xa3, 0x02, 
+        0x06, 0x30, 0x00, 0x92, 0xa0, 0x09, 0x8c, 0x3d, 0xb6, 0x89, 0x01, 0x0c, 0x79, 0x90, 0x29, 0x90, 
+        0x00, 0x22, 0xa0, 0x22, 0x6c, 0x18, 0x41, 0xdd, 0xff, 0x31, 0xdd, 0xff, 0x2d, 0x0c, 0xd0, 0x34, 
+        0x83, 0x32, 0x6c, 0x19, 0xc5, 0x0f, 0x00, 0x08, 0x01, 0xd8, 0x21, 0x7c, 0xf5, 0x52, 0x4c, 0x00, 
+        0x52, 0x4c, 0x01, 0x52, 0x4c, 0x02, 0x52, 0x4c, 0x03, 0xc8, 0x11, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 
+        0x0c, 0x12, 0x0c, 0x10, 0x46, 0x00, 0x00, 0x0c, 0x00, 0x02, 0x4c, 0x04, 0x41, 0xd2, 0xff, 0x0c, 
+        0x87, 0x0c, 0xa6, 0xb1, 0xd1, 0xff, 0xb2, 0x6c, 0x1b, 0xd0, 0x67, 0x93, 0x62, 0x4c, 0x05, 0x02, 
+        0xc4, 0x90, 0xd0, 0x04, 0x83, 0x02, 0x6c, 0x1a, 0xe6, 0xa3, 0x3c, 0x0c, 0xa9, 0x22, 0xa0, 0x05, 
+        0x16, 0x5d, 0x00, 0xb6, 0x89, 0x02, 0x92, 0xa0, 0x07, 0xf6, 0x69, 0x01, 0x2d, 0x09, 0x90, 0x39, 
+        0x90, 0x20, 0x20, 0x74, 0x20, 0x22, 0x90, 0x00, 0x33, 0xa0, 0x32, 0x6c, 0x18, 0x00, 0x22, 0xa0, 
+        0x22, 0x02, 0x00, 0x22, 0x4c, 0x08, 0x85, 0xca, 0xff, 0x3d, 0x02, 0x2d, 0x0c, 0xc5, 0xe6, 0xff, 
+        0x2d, 0x0c, 0x85, 0x05, 0x00, 0x46, 0xdb, 0xff, 0x1c, 0x04, 0x37, 0x24, 0x04, 0x0c, 0x79, 0x86, 
+        0xee, 0xff, 0x37, 0x28, 0x04, 0x0c, 0x59, 0x86, 0xec, 0xff, 0x1c, 0xa5, 0x37, 0x25, 0x23, 0x0c, 
+        0x49, 0x06, 0xea, 0xff, 0x1c, 0x06, 0x37, 0x26, 0x04, 0x0c, 0x59, 0xc6, 0xcd, 0xff, 0x37, 0x28, 
+        0x04, 0x9d, 0x07, 0xc6, 0xcb, 0xff, 0x1c, 0xe7, 0x77, 0xa3, 0x02, 0xc6, 0xc9, 0xff, 0x9d, 0x02, 
+        0x86, 0xc8, 0xff, 0x37, 0x2a, 0x04, 0x0c, 0x39, 0x46, 0xe0, 0xff, 0x20, 0x20, 0x74, 0x2c, 0x28, 
+        0x87, 0xa3, 0x02, 0x86, 0xdd, 0xff, 0x9d, 0x02, 0x46, 0xdc, 0xff, 0x00, 0x0c, 0x43, 0x12, 0xc1, 
+        0xf0, 0xc9, 0x11, 0x09, 0x01, 0xcd, 0x02, 0x45, 0xde, 0xff, 0x2d, 0x0c, 0x0c, 0x43, 0x85, 0x0a, 
+        0x01, 0x2d, 0x0c, 0x05, 0x03, 0x00, 0xc8, 0x11, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 
+        0x20, 0xa1, 0x07, 0x00, 0x31, 0xff, 0xff, 0x52, 0x22, 0x18, 0x0c, 0x04, 0x42, 0x45, 0x0b, 0x49, 
+        0xa2, 0x49, 0x92, 0x49, 0xe2, 0x42, 0x42, 0x16, 0x42, 0x42, 0x17, 0x42, 0x42, 0x06, 0x32, 0x62, 
+        0x16, 0x0d, 0xf0, 0x00, 0x31, 0xf7, 0xff, 0x52, 0x22, 0x18, 0x0c, 0x04, 0x42, 0x45, 0x0b, 0x42, 
+        0x62, 0x10, 0x49, 0xf2, 0x42, 0x62, 0x11, 0x42, 0x42, 0x18, 0x42, 0x42, 0x19, 0x42, 0x42, 0x0a, 
+        0x42, 0x62, 0x15, 0x32, 0x62, 0x16, 0x0d, 0xf0, 0x12, 0xc1, 0xf0, 0x09, 0x01, 0xd9, 0x21, 0xc9, 
+        0x11, 0xdd, 0x03, 0xcd, 0x02, 0xc5, 0xfa, 0xff, 0x02, 0x2c, 0x18, 0x41, 0xdf, 0xd5, 0x32, 0x00, 
+        0x0a, 0x22, 0x0c, 0x05, 0xda, 0x33, 0x37, 0x22, 0x1b, 0xd0, 0x2d, 0x90, 0x00, 0x52, 0xa0, 0x52, 
+        0x6c, 0x18, 0xc0, 0x20, 0x00, 0x08, 0x01, 0x42, 0x24, 0x80, 0x49, 0xbc, 0xd8, 0x21, 0xc8, 0x11, 
+        0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x20, 0x22, 0x90, 0x02, 0x2c, 0x1a, 0x46, 0xf7, 0xff, 0x00, 0x00, 
+        0x72, 0xa0, 0xff, 0x77, 0x13, 0x2b, 0x62, 0x02, 0x01, 0x52, 0x02, 0x00, 0x0c, 0x04, 0x32, 0x42, 
+        0x00, 0x5a, 0x33, 0x70, 0x55, 0xc0, 0x30, 0x31, 0x74, 0x50, 0x34, 0x83, 0x77, 0x16, 0x0f, 0x60, 
+        0x46, 0x90, 0x4a, 0x43, 0xe0, 0x44, 0x11, 0xfb, 0x34, 0x40, 0x34, 0xb3, 0x30, 0x34, 0x21, 0x32, 
+        0x42, 0x01, 0x0d, 0xf0, 0x10, 0x2c, 0xff, 0x3f, 0x61, 0xff, 0xff, 0x00, 0x43, 0x11, 0x58, 0x06, 
+        0x40, 0x42, 0x20, 0x1b, 0x75, 0x79, 0x06, 0x50, 0x50, 0x24, 0x62, 0xc6, 0x10, 0x60, 0x55, 0xa0, 
+        0x49, 0x05, 0x0d, 0xf0, 0x12, 0xc1, 0xf0, 0x09, 0x01, 0xc9, 0x11, 0xd9, 0x21, 0xcd, 0x02, 0xdd, 
+        0x03, 0x32, 0x22, 0x18, 0x08, 0xa2, 0x32, 0x03, 0x01, 0x1b, 0x00, 0xd7, 0x33, 0x46, 0x28, 0x92, 
+        0x09, 0xac, 0x2a, 0x0d, 0x1b, 0x00, 0x2d, 0x0d, 0x09, 0x9c, 0xc5, 0xfb, 0xff, 0x0c, 0xa3, 0xb6, 
+        0x6d, 0x0d, 0x02, 0x0c, 0x06, 0x1b, 0x00, 0x00, 0x00, 0x74, 0x02, 0x4c, 0x06, 0xc6, 0x03, 0x00, 
+        0xf6, 0x3d, 0x09, 0x0c, 0x00, 0x0c, 0x02, 0x22, 0x4c, 0x06, 0x86, 0x00, 0x00, 0x02, 0x0c, 0x06, 
+        0x07, 0xb3, 0x06, 0x2d, 0x0c, 0x0c, 0x13, 0x05, 0xf1, 0xff, 0xc8, 0x11, 0xd8, 0x21, 0x08, 0x01, 
+        0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x28, 0x92, 0x09, 0xac, 0x2a, 0x0d, 0x2b, 0x00, 0x46, 0xed, 0xff, 
+        0x12, 0xc1, 0xf0, 0x09, 0x01, 0xc9, 0x11, 0xd9, 0x21, 0xcd, 0x02, 0xdd, 0x03, 0xbc, 0x62, 0x02, 
+        0x22, 0x18, 0xbc, 0x10, 0x28, 0x53, 0x07, 0x92, 0x2d, 0x38, 0xec, 0x1b, 0x33, 0x39, 0xec, 0x22, 
+        0x0d, 0x0f, 0x66, 0x12, 0x1b, 0x42, 0x0c, 0x14, 0x27, 0xe4, 0x07, 0x2d, 0x0c, 0x32, 0x0d, 0x09, 
+        0xc5, 0xf0, 0xff, 0x32, 0x0d, 0x04, 0x2d, 0x0c, 0x30, 0x34, 0x41, 0x85, 0xf5, 0xff, 0x46, 0x01, 
+        0x00, 0x26, 0x22, 0x0d, 0x26, 0x32, 0x0a, 0xc8, 0x11, 0xd8, 0x21, 0x08, 0x01, 0x12, 0xc1, 0x10, 
+        0x0d, 0xf0, 0x2d, 0x0c, 0x32, 0x00, 0x08, 0xc5, 0xf3, 0xff, 0x46, 0xfa, 0xff, 0x00, 0x00, 0x00, 
+        0x32, 0x03, 0x00, 0xbc, 0x82, 0x42, 0x02, 0x14, 0x82, 0xa0, 0xff, 0x07, 0xe4, 0x30, 0x62, 0x02, 
+        0x02, 0x72, 0x02, 0x03, 0x87, 0x96, 0x07, 0x32, 0x42, 0x02, 0x0c, 0x06, 0x46, 0x02, 0x00, 0x32, 
+        0x42, 0x02, 0x6a, 0x63, 0x60, 0x61, 0x74, 0x3d, 0x06, 0x87, 0x17, 0x0f, 0x70, 0x47, 0x90, 0x4a, 
+        0x46, 0xe0, 0x44, 0x11, 0xfb, 0x34, 0x40, 0x34, 0xb3, 0x30, 0x34, 0x21, 0x32, 0x42, 0x03, 0x0d, 
+        0xf0, 0x00, 0x00, 0x00, 0x0d, 0xf0, 0x00, 0x00, 0x0d, 0xf0, 0x00, 0x00, 0x41, 0xb2, 0xff, 0x38, 
+        0x14, 0x1b, 0x53, 0x59, 0x14, 0x30, 0x30, 0x24, 0x42, 0xc4, 0x30, 0x40, 0x33, 0xa0, 0x29, 0x03, 
+        0x0d, 0xf0, 0x00, 0x00, 0x3f, 0x0d, 0x03, 0x00, 0x00, 0x09, 0x3d, 0x00, 0x40, 0x0d, 0x03, 0x00, 
+        0x12, 0xc1, 0xd0, 0xf2, 0x61, 0x08, 0x02, 0x61, 0x04, 0xd2, 0x61, 0x06, 0xc9, 0x51, 0xe9, 0x71, 
+        0xcd, 0x02, 0xed, 0x03, 0xd2, 0x03, 0x06, 0x02, 0x03, 0x05, 0x80, 0xdd, 0x11, 0x00, 0xf0, 0x54, 
+        0x00, 0xdd, 0x20, 0x02, 0x03, 0x04, 0xd0, 0xd6, 0x54, 0x00, 0x00, 0x34, 0x16, 0x7d, 0x16, 0x09, 
+        0x21, 0x32, 0x22, 0x18, 0x49, 0x11, 0x16, 0xd3, 0x15, 0x05, 0xe6, 0x00, 0x16, 0x72, 0x15, 0x42, 
+        0xa7, 0xff, 0x02, 0x0e, 0x04, 0x38, 0x11, 0x00, 0x04, 0x41, 0x4a, 0x33, 0x42, 0x0e, 0x0f, 0x30, 
+        0x3b, 0x21, 0x66, 0x14, 0x18, 0x52, 0x0c, 0x14, 0x00, 0x23, 0x82, 0x2a, 0xdd, 0xd0, 0xd0, 0x74, 
+        0x27, 0xe5, 0x1c, 0x2d, 0x0c, 0x32, 0x0e, 0x09, 0x45, 0xe0, 0xff, 0x46, 0x04, 0x00, 0x30, 0x40, 
+        0xc1, 0x52, 0xc0, 0xff, 0x50, 0x53, 0x82, 0x50, 0xdd, 0x80, 0xf0, 0xd4, 0x83, 0xd0, 0xd0, 0x74, 
+        0x22, 0x0c, 0x08, 0x02, 0x2c, 0x1b, 0x38, 0xfc, 0x42, 0x2c, 0x10, 0x3a, 0x3d, 0x4a, 0x4f, 0x42, 
+        0x6c, 0x10, 0x39, 0xfc, 0xc0, 0x00, 0x00, 0x29, 0x01, 0x2d, 0x0c, 0x45, 0x7f, 0x00, 0x29, 0x91, 
+        0x3d, 0x0d, 0x90, 0x2f, 0x11, 0x05, 0x25, 0x04, 0xd8, 0x91, 0xf8, 0x01, 0xf6, 0xd2, 0x1c, 0x32, 
+        0x0c, 0x0a, 0x1b, 0x33, 0x30, 0x30, 0x74, 0x32, 0x4c, 0x0a, 0x56, 0x52, 0x0f, 0x02, 0x0e, 0x04, 
+        0x00, 0x04, 0x41, 0xe6, 0x40, 0x02, 0x06, 0x37, 0x00, 0x86, 0x37, 0x00, 0x27, 0xbd, 0x04, 0x0c, 
+        0x02, 0x22, 0x4c, 0x0a, 0xe1, 0x39, 0xd5, 0xc0, 0x20, 0x00, 0xe2, 0x2e, 0x80, 0x32, 0x2c, 0x12, 
+        0xe0, 0x2e, 0x20, 0x85, 0x8f, 0xff, 0x32, 0x2c, 0x0f, 0x02, 0xa1, 0xf3, 0x16, 0x73, 0x0a, 0x37, 
+        0x30, 0x02, 0x46, 0x28, 0x00, 0x41, 0xbf, 0xff, 0x27, 0x34, 0x02, 0x06, 0x26, 0x00, 0xe2, 0x6c, 
+        0x12, 0x22, 0x2c, 0x10, 0x42, 0x2c, 0x15, 0x90, 0x22, 0x11, 0x1b, 0x44, 0x42, 0x6c, 0x15, 0xc5, 
+        0x29, 0x04, 0x20, 0x00, 0x74, 0x52, 0x0c, 0x19, 0x59, 0x31, 0x02, 0x4c, 0x18, 0x16, 0xe5, 0x04, 
+        0x28, 0x31, 0x20, 0x22, 0x90, 0x2a, 0x20, 0x20, 0x22, 0x74, 0x22, 0x4c, 0x19, 0xc5, 0xea, 0xff, 
+        0x22, 0x0c, 0x19, 0xd7, 0x32, 0x02, 0x46, 0x26, 0x00, 0x38, 0x31, 0xd7, 0x33, 0x02, 0x46, 0x24, 
+        0x00, 0x42, 0x0c, 0x22, 0x8c, 0xd4, 0x02, 0x2c, 0x16, 0x51, 0xab, 0xff, 0x07, 0x35, 0x05, 0xf0, 
+        0x60, 0x11, 0x62, 0x6c, 0x16, 0x2d, 0x0e, 0x32, 0x2c, 0x13, 0x05, 0x88, 0xff, 0x71, 0xa7, 0xff, 
+        0x27, 0xb7, 0x29, 0x3d, 0x0f, 0x2d, 0x0c, 0x0c, 0x04, 0x05, 0x35, 0x00, 0xc6, 0x09, 0x00, 0x42, 
+        0xa0, 0x80, 0xd0, 0x3d, 0x90, 0x4a, 0x33, 0x30, 0x32, 0x74, 0x32, 0x4c, 0x19, 0x2d, 0x03, 0x07, 
+        0xb3, 0x07, 0x3a, 0x20, 0x20, 0x21, 0x74, 0x22, 0x4c, 0x19, 0x05, 0xe5, 0xff, 0x0c, 0x03, 0x32, 
+        0x6c, 0x10, 0x39, 0xfc, 0x32, 0x6c, 0x11, 0xc8, 0x51, 0xd8, 0x61, 0xe8, 0x71, 0xf8, 0x81, 0x08, 
+        0x41, 0x12, 0xc1, 0x30, 0x0d, 0xf0, 0x7c, 0xd4, 0x40, 0x00, 0x90, 0x3a, 0x30, 0x30, 0x30, 0x74, 
+        0x32, 0x4c, 0x0a, 0xb6, 0x53, 0x05, 0x42, 0x0c, 0x08, 0xb6, 0x54, 0x07, 0x0c, 0xe5, 0x37, 0x35, 
+        0x02, 0xc6, 0xc3, 0xff, 0xf0, 0x3f, 0x20, 0xc0, 0x2c, 0x20, 0x42, 0x21, 0x02, 0xc5, 0x2e, 0x00, 
+        0xc6, 0xf0, 0xff, 0x62, 0x0c, 0x22, 0x8c, 0xc6, 0x71, 0x02, 0xff, 0x0c, 0x08, 0x82, 0x4c, 0x22, 
+        0x72, 0x6c, 0x16, 0x86, 0xe9, 0xff, 0x92, 0x0c, 0x04, 0xf7, 0x19, 0xa0, 0x32, 0x0c, 0x08, 0x1c, 
+        0x3a, 0xa7, 0x13, 0x76, 0xd2, 0xa0, 0x79, 0x1c, 0x4b, 0xb7, 0x13, 0x7d, 0x02, 0xc3, 0xeb, 0x16, 
+        0x20, 0x09, 0x42, 0xc3, 0xea, 0x16, 0x54, 0x09, 0x52, 0xc3, 0xe9, 0x16, 0x85, 0x09, 0x1c, 0xf6, 
+        0x67, 0x13, 0x72, 0x0d, 0x0d, 0x27, 0x30, 0x02, 0x46, 0xdc, 0xff, 0x78, 0x31, 0x77, 0x30, 0x02, 
+        0x46, 0xda, 0xff, 0x2d, 0x0e, 0x32, 0x2c, 0x14, 0x05, 0x7b, 0xff, 0x82, 0x2c, 0x16, 0x27, 0x38, 
+        0x02, 0x06, 0xd6, 0xff, 0xc0, 0x20, 0x00, 0x0c, 0x19, 0x31, 0xdf, 0xd4, 0x0b, 0x2f, 0x20, 0x20, 
+        0x74, 0x32, 0x23, 0x80, 0x32, 0x6c, 0x14, 0x32, 0x2c, 0x1a, 0x20, 0x22, 0x90, 0x30, 0x22, 0xa0, 
+        0x22, 0x02, 0x00, 0x22, 0x4c, 0x08, 0x92, 0x4c, 0x22, 0x45, 0x7a, 0xff, 0x3d, 0x02, 0x2d, 0x0c, 
+        0x85, 0x96, 0xff, 0x2d, 0x0c, 0xc5, 0xb9, 0xff, 0xc6, 0xca, 0xff, 0x22, 0x0c, 0x01, 0x45, 0x43, 
+        0x00, 0xd2, 0xa0, 0x74, 0x06, 0x05, 0x00, 0x00, 0x00, 0x00, 0x22, 0x0c, 0x01, 0x45, 0x42, 0x00, 
+        0x06, 0x02, 0x00, 0x00, 0x00, 0x00, 0x22, 0x0c, 0x01, 0x85, 0x41, 0x00, 0x20, 0x0d, 0xc0, 0x22, 
+        0x0c, 0x19, 0xc6, 0xdf, 0xff, 0x22, 0x0c, 0x01, 0x85, 0x40, 0x00, 0x46, 0xfb, 0xff, 0x22, 0x0c, 
+        0x01, 0x05, 0x40, 0x00, 0x06, 0xf9, 0xff, 0x22, 0x0c, 0x01, 0x85, 0x3f, 0x00, 0xc6, 0xf6, 0xff, 
+        0x0c, 0x33, 0x12, 0xc1, 0xf0, 0xc9, 0x11, 0xd9, 0x21, 0x09, 0x01, 0xdd, 0x02, 0xc5, 0x8e, 0xff, 
+        0x2d, 0x0d, 0x0c, 0x33, 0x05, 0xbb, 0x00, 0x02, 0x2d, 0x1a, 0x2d, 0x0d, 0x02, 0xc0, 0x30, 0x02, 
+        0x6d, 0x18, 0x05, 0xb1, 0xff, 0x0c, 0x0c, 0x22, 0x0d, 0x0b, 0x00, 0x0c, 0x40, 0x20, 0x20, 0x91, 
+        0x07, 0x62, 0x08, 0x2d, 0x0d, 0x0c, 0x33, 0x4d, 0x0c, 0x05, 0x07, 0x00, 0x1b, 0xcc, 0xc0, 0xc0, 
+        0x74, 0x66, 0x8c, 0xe2, 0xc8, 0x11, 0xd8, 0x21, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 
+        0x12, 0xc1, 0xf0, 0xc9, 0x11, 0x09, 0x01, 0xd9, 0x21, 0x02, 0x22, 0x1a, 0xdd, 0x02, 0x02, 0x00, 
+        0x24, 0x02, 0x42, 0x08, 0x45, 0xaa, 0xff, 0x0c, 0x0c, 0x22, 0x0d, 0x0b, 0x00, 0x0c, 0x40, 0x20, 
+        0x20, 0x91, 0x07, 0x62, 0x08, 0x2d, 0x0d, 0x0c, 0x23, 0x4d, 0x0c, 0x05, 0x03, 0x00, 0x1b, 0xcc, 
+        0xc0, 0xc0, 0x74, 0x66, 0x8c, 0xe2, 0xc8, 0x11, 0xd8, 0x21, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 
+        0xf0, 0x00, 0x00, 0x00, 0x64, 0x89, 0xfe, 0x3f, 0x8c, 0x8d, 0xfe, 0x3f, 0xa8, 0x8d, 0xfe, 0x3f, 
+        0xb4, 0x8d, 0xfe, 0x3f, 0x94, 0x8d, 0xfe, 0x3f, 0xa0, 0x8d, 0xfe, 0x3f, 0x12, 0xc1, 0xe0, 0x09, 
+        0x21, 0xd9, 0x41, 0xc9, 0x31, 0xdd, 0x03, 0xcd, 0x02, 0x40, 0x00, 0x74, 0xb6, 0x80, 0x13, 0x21, 
+        0xf5, 0xff, 0x31, 0xf5, 0xff, 0x42, 0xa3, 0x5f, 0x01, 0x22, 0xd2, 0xc0, 0x00, 0x00, 0x3d, 0xf0, 
+        0x86, 0xfe, 0xff, 0x0c, 0x12, 0x09, 0x11, 0x66, 0x23, 0x57, 0x42, 0x0c, 0x0b, 0x32, 0x0c, 0x14, 
+        0x00, 0x10, 0x40, 0x00, 0x52, 0xa1, 0xca, 0x00, 0x09, 0x01, 0x30, 0x30, 0x64, 0x50, 0x44, 0x20, 
+        0x42, 0x4c, 0x0b, 0x42, 0xa0, 0x80, 0x40, 0x33, 0x20, 0x32, 0x4c, 0x14, 0x02, 0x00, 0x0c, 0x02, 
+        0xc0, 0xfe, 0x56, 0xf0, 0x09, 0x21, 0xe3, 0xff, 0x31, 0xe4, 0xff, 0x42, 0xa3, 0x64, 0x01, 0x10, 
+        0xd2, 0xc0, 0x00, 0x00, 0x3d, 0xf0, 0x86, 0xfe, 0xff, 0xd2, 0xa0, 0x21, 0xc0, 0x2c, 0x20, 0x0c, 
+        0x33, 0x85, 0x7d, 0xff, 0x2d, 0x0c, 0x0c, 0x33, 0xc5, 0xa9, 0x00, 0x0c, 0x12, 0xd2, 0x4c, 0x15, 
+        0x0c, 0x3d, 0x08, 0x11, 0x26, 0x1d, 0x56, 0x66, 0x3d, 0x2f, 0x26, 0x1d, 0x50, 0x0c, 0x1d, 0x21, 
+        0xd7, 0xff, 0x3d, 0x00, 0xca, 0x70, 0x0c, 0x16, 0x62, 0x47, 0x0c, 0x01, 0x01, 0xd2, 0xc0, 0x00, 
+        0x00, 0x32, 0x0c, 0x09, 0x66, 0x33, 0x1d, 0x3d, 0x0d, 0x2d, 0x0c, 0xc5, 0xa6, 0x00, 0x06, 0x02, 
+        0x00, 0x21, 0xcf, 0xff, 0x01, 0xfb, 0xd1, 0xc0, 0x00, 0x00, 0xc8, 0x31, 0xd8, 0x41, 0x08, 0x21, 
+        0x12, 0xc1, 0x20, 0x0d, 0xf0, 0x66, 0x43, 0xe8, 0x21, 0xca, 0xff, 0x01, 0xf5, 0xd1, 0xc0, 0x00, 
+        0x00, 0x3d, 0x0d, 0x2d, 0x0c, 0x05, 0xa4, 0x00, 0x86, 0xf7, 0xff, 0x00, 0x00, 0x00, 0x82, 0x0c, 
+        0x0b, 0x7c, 0xfa, 0x00, 0x10, 0x40, 0x00, 0x92, 0xa1, 0xa0, 0x99, 0x30, 0x90, 0x88, 0x10, 0x82, 
+        0x4c, 0x0b, 0x46, 0xe6, 0xff, 0x21, 0xbf, 0xff, 0x38, 0x11, 0x01, 0xe9, 0xd1, 0xc0, 0x00, 0x00, 
+        0x32, 0x0c, 0x09, 0x26, 0x43, 0x3c, 0x26, 0x23, 0x39, 0x66, 0x13, 0x0b, 0x21, 0xbb, 0xff, 0x01, 
+        0xe4, 0xd1, 0xc0, 0x00, 0x00, 0x06, 0x02, 0x00, 0x21, 0xb8, 0xff, 0x01, 0xe1, 0xd1, 0xc0, 0x00, 
+        0x00, 0x2c, 0x12, 0xb2, 0x0c, 0x15, 0x1c, 0x04, 0xb7, 0x34, 0x11, 0x02, 0x0c, 0x01, 0x07, 0x34, 
+        0x02, 0x06, 0xcd, 0xff, 0xd2, 0xa0, 0xff, 0xd0, 0xd0, 0xc0, 0x16, 0xbd, 0xf2, 0x22, 0x4c, 0x15, 
+        0x86, 0xdd, 0xff, 0x22, 0x21, 0x00, 0x02, 0xa0, 0x02, 0xd0, 0x3d, 0x20, 0x02, 0x42, 0x0c, 0x2d, 
+        0x0c, 0x45, 0x9c, 0x00, 0x46, 0xf2, 0xff, 0x00, 0xbc, 0x8d, 0xfe, 0x3f, 0x12, 0xc1, 0xf0, 0xc9, 
+        0x21, 0x09, 0x11, 0x02, 0x02, 0x14, 0xcd, 0x02, 0x67, 0xe0, 0x52, 0x49, 0x01, 0x66, 0x53, 0x1e, 
+        0xc5, 0x3b, 0x00, 0x32, 0x0c, 0x19, 0x32, 0xc3, 0x14, 0x27, 0xb3, 0x3c, 0x21, 0xf7, 0xff, 0x01, 
+        0xc8, 0xd1, 0xc0, 0x00, 0x00, 0x2d, 0x0c, 0x38, 0x01, 0x45, 0xdc, 0xff, 0x86, 0x0b, 0x00, 0x41, 
+        0x32, 0xd4, 0xc0, 0x20, 0x00, 0x42, 0x24, 0x80, 0x42, 0x62, 0x13, 0x1b, 0x23, 0x32, 0x2c, 0x1a, 
+        0x20, 0x20, 0x74, 0x20, 0x22, 0x90, 0x30, 0x22, 0xa0, 0x22, 0x02, 0x00, 0x22, 0x4c, 0x08, 0x05, 
+        0x4f, 0xff, 0x3d, 0x02, 0x2d, 0x0c, 0x45, 0x6b, 0xff, 0x2d, 0x0c, 0x85, 0x8e, 0xff, 0xc8, 0x21, 
+        0x08, 0x11, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0xc4, 0x8d, 0xfe, 0x3f, 0x00, 0x08, 0x20, 0x00, 
+        0x10, 0x81, 0xfe, 0x3f, 0x12, 0xc1, 0xf0, 0x09, 0x01, 0xc9, 0x11, 0xd9, 0x21, 0xcd, 0x02, 0xdd, 
+        0x03, 0x9c, 0x12, 0x02, 0x22, 0x18, 0x8c, 0xc0, 0x08, 0x03, 0x00, 0x26, 0x41, 0x77, 0x60, 0x41, 
+        0x22, 0x2c, 0x19, 0x06, 0x02, 0x00, 0x22, 0x0d, 0x00, 0x07, 0x62, 0x49, 0x21, 0xbd, 0xfd, 0x29, 
+        0x5d, 0xcc, 0x72, 0x21, 0xf1, 0xff, 0x01, 0xa6, 0xd1, 0xc0, 0x00, 0x00, 0x8c, 0xfc, 0x32, 0x0c, 
+        0x14, 0x02, 0x0c, 0x07, 0x67, 0x63, 0x07, 0x48, 0x0d, 0x97, 0x64, 0x02, 0x06, 0x01, 0x00, 0x08, 
+        0x5d, 0x02, 0x00, 0x00, 0x02, 0x4d, 0x08, 0xc8, 0x11, 0xd8, 0x21, 0x08, 0x01, 0x12, 0xc1, 0x10, 
+        0x0d, 0xf0, 0x97, 0x60, 0x16, 0x22, 0x0c, 0x14, 0x37, 0x62, 0x27, 0x2d, 0x0c, 0x05, 0x62, 0x00, 
+        0xc6, 0xee, 0xff, 0x00, 0x00, 0x00, 0x21, 0xa9, 0xfd, 0x86, 0xec, 0xff, 0x31, 0xe0, 0xff, 0x27, 
+        0x03, 0x0a, 0x42, 0x2c, 0x17, 0x21, 0xde, 0xff, 0x8c, 0x14, 0x46, 0xe8, 0xff, 0x22, 0x2c, 0x19, 
+        0xc6, 0xe6, 0xff, 0xc0, 0x2c, 0x20, 0x05, 0x36, 0x00, 0x22, 0x2c, 0x18, 0x62, 0x2d, 0x00, 0x71, 
+        0xc5, 0xd2, 0x60, 0x50, 0x54, 0x60, 0x66, 0x41, 0x70, 0x66, 0x20, 0xa0, 0x66, 0x11, 0x60, 0x55, 
+        0x20, 0x52, 0x6d, 0x00, 0xc6, 0xdd, 0xff, 0x00, 0xcc, 0x8d, 0xfe, 0x3f, 0x12, 0xc1, 0xf0, 0xc9, 
+        0x21, 0x09, 0x11, 0x02, 0x02, 0x14, 0xcd, 0x03, 0x67, 0x60, 0x19, 0x02, 0x02, 0x07, 0x02, 0x43, 
+        0x08, 0xb6, 0xb0, 0x08, 0x22, 0xc0, 0xf0, 0x20, 0x20, 0x24, 0xe6, 0x32, 0x32, 0x1c, 0x33, 0x32, 
+        0x4c, 0x08, 0x86, 0x0a, 0x00, 0x29, 0x01, 0x37, 0xe0, 0x2e, 0x32, 0x03, 0x04, 0x30, 0x30, 0x34, 
+        0x2a, 0x43, 0x42, 0x04, 0x0c, 0x29, 0x01, 0x66, 0x14, 0x0f, 0x48, 0x01, 0x21, 0xef, 0xff, 0x42, 
+        0x04, 0x09, 0x01, 0x73, 0xd1, 0xc0, 0x00, 0x00, 0x28, 0x01, 0x02, 0x02, 0x08, 0x02, 0x4c, 0x08, 
+        0xc8, 0x21, 0x08, 0x11, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x45, 0x57, 0x00, 0x29, 0x5c, 0x02, 0x02, 
+        0x00, 0x06, 0xfa, 0xff, 0x00, 0x00, 0x00, 0x00, 0x48, 0x03, 0x0c, 0x06, 0x40, 0xb6, 0x41, 0xc7, 
+        0xf4, 0x2a, 0x0c, 0x07, 0x82, 0x03, 0x04, 0x98, 0x53, 0x80, 0x84, 0x41, 0x90, 0xa6, 0x90, 0x42, 
+        0x0a, 0x01, 0x1b, 0x66, 0x7a, 0x74, 0x70, 0x70, 0x74, 0x87, 0x27, 0x12, 0x8c, 0x72, 0x52, 0x02, 
+        0x14, 0x67, 0x65, 0x02, 0x37, 0xeb, 0x10, 0x22, 0x0a, 0x00, 0x22, 0x43, 0x08, 0x0d, 0xf0, 0x60, 
+        0x60, 0x74, 0x66, 0x46, 0xd6, 0x06, 0xfd, 0xff, 0x22, 0x02, 0x07, 0xc6, 0xfa, 0xff, 0x00, 0x00, 
+        0x25, 0xbb, 0x10, 0x40, 0x62, 0xa0, 0xff, 0xf6, 0xc3, 0x7c, 0x51, 0xfd, 0xff, 0x30, 0x43, 0x90, 
+        0x5a, 0x44, 0xa0, 0x04, 0x00, 0x86, 0x1b, 0x00, 0xc6, 0x6c, 0x00, 0xc6, 0x64, 0x00, 0x46, 0x5c, 
+        0x00, 0x86, 0x18, 0x00, 0xc6, 0x69, 0x00, 0xc6, 0x61, 0x00, 0x46, 0x59, 0x00, 0xc6, 0x50, 0x00, 
+        0x46, 0x48, 0x00, 0x46, 0x40, 0x00, 0xc6, 0x37, 0x00, 0x46, 0x2f, 0x00, 0xc6, 0x26, 0x00, 0x46, 
+        0x1e, 0x00, 0x46, 0x16, 0x00, 0x06, 0x34, 0x00, 0x06, 0x3b, 0x00, 0x46, 0x1b, 0x00, 0xc6, 0x40, 
+        0x00, 0x86, 0x21, 0x00, 0x06, 0x47, 0x00, 0xc6, 0x27, 0x00, 0x06, 0x0d, 0x00, 0x06, 0x2e, 0x00, 
+        0x06, 0x35, 0x00, 0x46, 0x15, 0x00, 0xc6, 0x3a, 0x00, 0x86, 0x1b, 0x00, 0x06, 0x41, 0x00, 0xc6, 
+        0x21, 0x00, 0x06, 0x07, 0x00, 0x32, 0xc2, 0xdf, 0x22, 0xc2, 0xe0, 0x30, 0x23, 0xb3, 0x20, 0x21, 
+        0x21, 0x20, 0x22, 0x90, 0x20, 0x20, 0x74, 0x2c, 0x03, 0x27, 0xb3, 0x03, 0x2d, 0x03, 0x0d, 0xf0, 
+        0x0d, 0xf0, 0x2c, 0x14, 0x27, 0xb4, 0x02, 0x67, 0x92, 0xda, 0x0c, 0x02, 0x06, 0xf9, 0xff, 0xb6, 
+        0x92, 0x02, 0x67, 0x92, 0x04, 0x0c, 0x02, 0x46, 0xf6, 0xff, 0x32, 0xc2, 0xf7, 0x22, 0xc2, 0xf8, 
+        0x30, 0x23, 0xb3, 0x20, 0x21, 0x21, 0x20, 0x22, 0x90, 0xc6, 0xf1, 0xff, 0x0c, 0xd4, 0x27, 0xb4, 
+        0x02, 0x67, 0x92, 0x04, 0x0c, 0x02, 0x86, 0xee, 0xff, 0x32, 0xc2, 0xf3, 0x22, 0xc2, 0xf4, 0x30, 
+        0x23, 0xb3, 0x20, 0x21, 0x21, 0x20, 0x22, 0x90, 0x06, 0xea, 0xff, 0x1c, 0x54, 0x27, 0xb4, 0x02, 
+        0x67, 0x92, 0x04, 0x0c, 0x02, 0xc6, 0xe6, 0xff, 0x32, 0xc2, 0xeb, 0x22, 0xc2, 0xec, 0x30, 0x23, 
+        0xb3, 0x20, 0x21, 0x21, 0x20, 0x22, 0x90, 0x46, 0xe2, 0xff, 0x1c, 0xd4, 0x27, 0xb4, 0x02, 0x67, 
+        0x92, 0x04, 0x0c, 0x02, 0x06, 0xdf, 0xff, 0x32, 0xc2, 0xe3, 0x22, 0xc2, 0xe4, 0x30, 0x23, 0xb3, 
+        0x20, 0x21, 0x21, 0x20, 0x22, 0x90, 0x86, 0xda, 0xff, 0x0c, 0x84, 0x27, 0xb4, 0x02, 0x67, 0x92, 
+        0x04, 0x0c, 0x02, 0x46, 0xd7, 0xff, 0x32, 0xc2, 0xf8, 0x22, 0xc2, 0xf9, 0x30, 0x23, 0xb3, 0x20, 
+        0x21, 0x21, 0x20, 0x22, 0x90, 0xc6, 0xd2, 0xff, 0xb6, 0xa2, 0x02, 0x67, 0x92, 0x04, 0x0c, 0x02, 
+        0x06, 0xd0, 0xff, 0x32, 0xc2, 0xf5, 0x22, 0xc2, 0xf6, 0x30, 0x23, 0xb3, 0x20, 0x21, 0x21, 0x20, 
+        0x22, 0x90, 0x86, 0xcb, 0xff, 0x1c, 0x04, 0x27, 0xb4, 0x02, 0x67, 0x92, 0x04, 0x0c, 0x02, 0x46, 
+        0xc8, 0xff, 0x32, 0xc2, 0xf0, 0x22, 0xc2, 0xf1, 0x30, 0x23, 0xb3, 0x20, 0x21, 0x21, 0x20, 0x22, 
+        0x90, 0xc6, 0xc3, 0xff, 0x1c, 0xa4, 0x27, 0xb4, 0x02, 0x67, 0x92, 0x04, 0x0c, 0x02, 0x86, 0xc0, 
+        0xff, 0x32, 0xc2, 0xe6, 0x22, 0xc2, 0xe7, 0x30, 0x23, 0xb3, 0x20, 0x21, 0x21, 0x20, 0x22, 0x90, 
+        0x06, 0xbc, 0xff, 0x0c, 0xe4, 0x27, 0xb4, 0x02, 0x67, 0x92, 0x04, 0x0c, 0x02, 0xc6, 0xb8, 0xff, 
+        0x32, 0xc2, 0xf2, 0x22, 0xc2, 0xf3, 0x30, 0x23, 0xb3, 0x20, 0x21, 0x21, 0x20, 0x22, 0x90, 0x46, 
+        0xb4, 0xff, 0xb6, 0xa2, 0x02, 0x67, 0x92, 0x04, 0x0c, 0x02, 0x86, 0xb1, 0xff, 0x32, 0xc2, 0xf5, 
+        0x22, 0xc2, 0xf6, 0x30, 0x23, 0xb3, 0x20, 0x21, 0x21, 0x20, 0x22, 0x90, 0x06, 0xad, 0xff, 0x0c, 
+        0xa4, 0x27, 0xb4, 0x02, 0x67, 0x92, 0x04, 0x0c, 0x02, 0xc6, 0xa9, 0xff, 0x32, 0xc2, 0xf6, 0x22, 
+        0xc2, 0xf7, 0x30, 0x23, 0xb3, 0x20, 0x21, 0x21, 0x20, 0x22, 0x90, 0x46, 0xa5, 0xff, 0x00, 0x00, 
+        0x12, 0xc1, 0xf0, 0x09, 0x01, 0x32, 0x02, 0x08, 0x1c, 0x30, 0x07, 0x13, 0x20, 0x1c, 0x44, 0x47, 
+        0x13, 0x48, 0x1c, 0x55, 0x57, 0x13, 0x54, 0x02, 0xa0, 0x72, 0x1c, 0x67, 0x77, 0x13, 0x32, 0x1c, 
+        0x78, 0x87, 0x13, 0x58, 0x1c, 0xf9, 0x97, 0x13, 0x19, 0x2d, 0x00, 0x46, 0x03, 0x00, 0x22, 0x02, 
+        0x01, 0x05, 0xde, 0xff, 0x3d, 0x02, 0x22, 0xa0, 0x6c, 0x30, 0x22, 0xc0, 0x08, 0x01, 0x12, 0xc1, 
+        0x10, 0x0d, 0xf0, 0x22, 0x02, 0x01, 0xc5, 0xdc, 0xff, 0x42, 0xa0, 0x72, 0x20, 0x24, 0xc0, 0x46, 
+        0xfa, 0xff, 0x22, 0x02, 0x01, 0xc5, 0xdb, 0xff, 0x46, 0xfb, 0xff, 0x22, 0x02, 0x01, 0x45, 0xdb, 
+        0xff, 0x3d, 0x02, 0x22, 0xa0, 0x6d, 0x30, 0x22, 0xc0, 0xc6, 0xf3, 0xff, 0x22, 0x02, 0x01, 0x45, 
+        0xda, 0xff, 0x3d, 0x02, 0x22, 0xa0, 0x73, 0x30, 0x22, 0xc0, 0x86, 0xef, 0xff, 0x22, 0x02, 0x01, 
+        0x05, 0xd9, 0xff, 0x3d, 0x02, 0x22, 0xa0, 0x73, 0x30, 0x22, 0xc0, 0x46, 0xeb, 0xff, 0x00, 0x00, 
+        0x9f, 0x86, 0x01, 0x00, 0xa0, 0x86, 0x01, 0x00, 0x12, 0xc1, 0xe0, 0xe2, 0x61, 0x04, 0x02, 0x61, 
+        0x01, 0xd2, 0x61, 0x03, 0xc9, 0x21, 0xcd, 0x02, 0xd1, 0x20, 0xd3, 0xc0, 0x20, 0x00, 0xd2, 0x2d, 
+        0x80, 0x38, 0xd2, 0x2d, 0x0d, 0x45, 0x09, 0xff, 0x38, 0x9c, 0xe1, 0xf5, 0xff, 0x16, 0x93, 0x06, 
+        0x58, 0xec, 0x42, 0xa0, 0x63, 0x57, 0x34, 0x02, 0x27, 0xbe, 0x5e, 0xd9, 0xdc, 0xe1, 0x51, 0xfd, 
+        0x28, 0xac, 0x48, 0x2e, 0x90, 0x22, 0x11, 0x1b, 0x44, 0x49, 0x2e, 0x05, 0xa4, 0x03, 0x20, 0x20, 
+        0x74, 0x02, 0x0c, 0x17, 0x22, 0x4c, 0x16, 0x16, 0x30, 0x09, 0x0a, 0x52, 0x38, 0xcc, 0x2d, 0x0d, 
+        0x50, 0x51, 0x21, 0x52, 0x4c, 0x17, 0x45, 0x05, 0xff, 0xe2, 0x0c, 0x17, 0x29, 0x01, 0x32, 0x2c, 
+        0x18, 0x22, 0x0c, 0x01, 0x32, 0x03, 0x00, 0xc5, 0xd0, 0xff, 0x02, 0x2c, 0x18, 0x20, 0x21, 0x74, 
+        0x32, 0x00, 0x09, 0x4c, 0x05, 0x56, 0x93, 0x09, 0x5c, 0xa4, 0x20, 0x44, 0xc0, 0x0c, 0x12, 0xe7, 
+        0xb4, 0x02, 0xc6, 0x2d, 0x00, 0x0c, 0x02, 0x86, 0x2c, 0x00, 0x32, 0x2c, 0x0d, 0x22, 0x2c, 0x12, 
+        0x85, 0x01, 0xff, 0x20, 0xd2, 0x20, 0xc0, 0x2c, 0x20, 0x05, 0x4d, 0x00, 0x16, 0x52, 0x06, 0xd7, 
+        0xbe, 0x62, 0x2d, 0x0c, 0x52, 0x2c, 0x12, 0xd2, 0x2c, 0x18, 0x61, 0x01, 0xfd, 0xd2, 0x0d, 0x0a, 
+        0x62, 0x6c, 0x16, 0x59, 0xdc, 0xc5, 0x3f, 0xff, 0x02, 0x2c, 0x1b, 0x22, 0x0c, 0x08, 0xc0, 0x00, 
+        0x00, 0x32, 0x2c, 0x1a, 0x20, 0x02, 0x90, 0x30, 0x00, 0xa0, 0x02, 0x6c, 0x18, 0x02, 0x00, 0x0a, 
+        0x07, 0x3d, 0x02, 0x46, 0x49, 0x00, 0x42, 0x2c, 0x12, 0x49, 0xbc, 0x86, 0x07, 0x00, 0x02, 0x2c, 
+        0x18, 0x02, 0x00, 0x09, 0x32, 0xa0, 0x80, 0x00, 0x00, 0x90, 0x3a, 0x00, 0x00, 0x02, 0x74, 0x02, 
+        0x4c, 0x17, 0x27, 0xb0, 0x07, 0x0a, 0x32, 0x30, 0x31, 0x21, 0x32, 0x4c, 0x17, 0x0c, 0x04, 0x49, 
+        0xac, 0x49, 0x9c, 0x49, 0xec, 0xc8, 0x21, 0xd8, 0x31, 0xe8, 0x41, 0x08, 0x11, 0x12, 0xc1, 0x20, 
+        0x0d, 0xf0, 0x37, 0x35, 0x0f, 0x62, 0xa0, 0x64, 0x20, 0x66, 0xc0, 0x0c, 0x12, 0xe7, 0x36, 0x1c, 
+        0x0c, 0x02, 0xc6, 0x05, 0x00, 0x0c, 0x06, 0x72, 0xa0, 0x6e, 0x20, 0x77, 0xc0, 0xe7, 0xb7, 0x09, 
+        0x20, 0x83, 0xc0, 0x2b, 0x88, 0xe7, 0xb8, 0x01, 0x0c, 0x16, 0x60, 0x20, 0x74, 0x0c, 0x1e, 0x8c, 
+        0xb2, 0xa8, 0x01, 0x92, 0x2c, 0x16, 0xa7, 0xb9, 0x04, 0x0d, 0x0e, 0x46, 0x16, 0x00, 0xb2, 0x00, 
+        0x0b, 0x07, 0xeb, 0x0a, 0x21, 0x08, 0xfd, 0x28, 0x22, 0x20, 0x20, 0x14, 0x56, 0xd2, 0xf9, 0x22, 
+        0x0c, 0x01, 0x32, 0x00, 0x00, 0xc5, 0xc0, 0xff, 0x32, 0x0c, 0x17, 0x02, 0x2c, 0x18, 0x20, 0x51, 
+        0x74, 0x42, 0x00, 0x09, 0x22, 0x00, 0x0b, 0x50, 0x44, 0xc0, 0x47, 0xa3, 0x16, 0x07, 0x62, 0x0e, 
+        0x02, 0x2c, 0x16, 0x61, 0x51, 0xfd, 0x07, 0x36, 0x05, 0xf0, 0x70, 0x11, 0x72, 0x6c, 0x16, 0x0c, 
+        0x20, 0xc6, 0x04, 0x00, 0x07, 0x62, 0x0e, 0x81, 0xc6, 0xfc, 0x92, 0xa0, 0xfe, 0x90, 0x92, 0x10, 
+        0x92, 0x40, 0x0b, 0x82, 0x6c, 0x16, 0x0c, 0x00, 0x66, 0x10, 0x30, 0x2d, 0x0c, 0x45, 0x30, 0xff, 
+        0x02, 0x2c, 0x18, 0xa2, 0x0c, 0x04, 0xb2, 0x00, 0x0a, 0xb7, 0x3a, 0x02, 0x46, 0xcf, 0xff, 0x32, 
+        0xc0, 0xf4, 0x32, 0x6c, 0x18, 0x22, 0x03, 0x0b, 0xe0, 0x22, 0x20, 0x22, 0x43, 0x0b, 0xc0, 0x20, 
+        0x00, 0xd1, 0xad, 0xd2, 0xd2, 0x2d, 0x80, 0xd9, 0xcc, 0x06, 0xc8, 0xff, 0x32, 0xc0, 0xfe, 0x56, 
+        0xa3, 0xf1, 0x2d, 0x0d, 0x38, 0xbc, 0x45, 0xec, 0xfe, 0x41, 0x82, 0xff, 0x27, 0x34, 0x02, 0x86, 
+        0xc2, 0xff, 0x2d, 0x0c, 0x0c, 0x13, 0x05, 0x30, 0xff, 0x06, 0xc0, 0xff, 0xd7, 0x30, 0x02, 0x86, 
+        0xbe, 0xff, 0x52, 0x2c, 0x12, 0x59, 0xcc, 0x86, 0xbc, 0xff, 0x00, 0x00, 0x32, 0x02, 0x04, 0x48, 
+        0x52, 0x0c, 0x12, 0x42, 0x04, 0x08, 0x30, 0x34, 0x41, 0x47, 0xa3, 0x01, 0x0c, 0x02, 0x0d, 0xf0, 
+        0xdc, 0x8d, 0xfe, 0x3f, 0x20, 0x81, 0xfe, 0x3f, 0x80, 0x82, 0xfe, 0x3f, 0x21, 0xfd, 0xff, 0x12, 
+        0xc1, 0xf0, 0x09, 0x01, 0x01, 0x27, 0xd0, 0xc0, 0x00, 0x00, 0x41, 0xce, 0xfc, 0x0c, 0x05, 0x52, 
+        0x44, 0x0c, 0x02, 0xc4, 0x50, 0x42, 0xc4, 0x52, 0x52, 0x40, 0x00, 0x1b, 0x00, 0x47, 0x90, 0xf7, 
+        0x21, 0x35, 0xfc, 0x0c, 0xb3, 0x05, 0x01, 0xff, 0x21, 0xf3, 0xff, 0x0c, 0x93, 0x85, 0x00, 0xff, 
+        0x21, 0xf2, 0xff, 0x0c, 0xa3, 0x05, 0x00, 0xff, 0x21, 0x2b, 0xfc, 0x0c, 0x83, 0x85, 0xff, 0xfe, 
+        0x21, 0x27, 0xfc, 0x0c, 0x43, 0x05, 0xff, 0xfe, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 
+        0x70, 0x2c, 0xff, 0x3f, 0x21, 0xff, 0xff, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x30, 0x83, 0xfe, 0x3f, 
+        0x22, 0x22, 0x17, 0x41, 0xfe, 0xff, 0x8c, 0x72, 0x26, 0x12, 0x0d, 0x26, 0x22, 0x0f, 0x26, 0x32, 
+        0x03, 0x2d, 0x04, 0x0d, 0xf0, 0xcb, 0x24, 0x0d, 0xf0, 0x22, 0xc4, 0x24, 0x0d, 0xf0, 0x22, 0xc4, 
+        0x18, 0x0d, 0xf0, 0x00, 0x74, 0x21, 0xff, 0x3f, 0x58, 0x72, 0x52, 0x05, 0x08, 0xbc, 0x55, 0x26, 
+        0x15, 0x44, 0x26, 0x55, 0x41, 0x26, 0x95, 0x5c, 0x0c, 0xb6, 0x67, 0x15, 0x48, 0x0c, 0xf7, 0x77, 
+        0x15, 0x61, 0x26, 0xb5, 0x40, 0x1c, 0x18, 0x87, 0x15, 0x4a, 0x1c, 0x89, 0x97, 0x15, 0x36, 0x1c, 
+        0x9a, 0xa7, 0x15, 0x40, 0xb1, 0xf4, 0xff, 0x32, 0x12, 0x08, 0xb2, 0x1b, 0x05, 0x0c, 0x12, 0x37, 
+        0x3b, 0x12, 0x0c, 0x02, 0x0d, 0xf0, 0x32, 0xa2, 0x71, 0x42, 0x12, 0x08, 0x0c, 0x12, 0x47, 0x33, 
+        0x03, 0x0c, 0x02, 0x0d, 0xf0, 0x0d, 0xf0, 0x52, 0xa3, 0xe8, 0x62, 0x12, 0x08, 0x0c, 0x12, 0x67, 
+        0x35, 0xf2, 0x0c, 0x02, 0x0d, 0xf0, 0x72, 0xa2, 0xbc, 0x82, 0x12, 0x08, 0x0c, 0x12, 0x87, 0x37, 
+        0xe3, 0x0c, 0x02, 0x0d, 0xf0, 0x92, 0xa4, 0x60, 0xa2, 0x12, 0x08, 0x0c, 0x12, 0xa7, 0x39, 0xd4, 
+        0x0c, 0x02, 0x0d, 0xf0, 0xb2, 0xa4, 0x1a, 0x32, 0x12, 0x08, 0x0c, 0x12, 0x37, 0x3b, 0xc5, 0x0c, 
+        0x02, 0x0d, 0xf0, 0x00, 0x0d, 0xf0, 0x00, 0x00, 0x32, 0x02, 0x14, 0x42, 0xa0, 0xfe, 0x40, 0x33, 
+        0x10, 0x0c, 0x14, 0x40, 0x33, 0x20, 0x42, 0xa0, 0xfb, 0x40, 0x33, 0x10, 0x0c, 0x44, 0x40, 0x33, 
+        0x20, 0x32, 0x42, 0x14, 0x0d, 0xf0, 0x00, 0x00, 0x32, 0x02, 0x14, 0x42, 0xa0, 0xfe, 0x40, 0x33, 
+        0x10, 0x42, 0xa0, 0xfb, 0x40, 0x33, 0x10, 0x32, 0x42, 0x14, 0x0d, 0xf0, 0x12, 0xc1, 0xf0, 0x09, 
+        0x01, 0xd9, 0x21, 0xc9, 0x11, 0xdd, 0x03, 0xcd, 0x02, 0x02, 0x02, 0x14, 0x22, 0xa0, 0xbf, 0x20, 
+        0x00, 0x10, 0x66, 0xc3, 0x0f, 0x2d, 0x0c, 0x02, 0x4c, 0x14, 0x05, 0x1d, 0x00, 0xec, 0xd2, 0x22, 
+        0x0c, 0x08, 0x86, 0x0b, 0x00, 0xd2, 0x4c, 0x07, 0x2d, 0x0c, 0x4c, 0x03, 0x30, 0x30, 0x20, 0x32, 
+        0x4c, 0x14, 0x85, 0x1b, 0x00, 0x8c, 0xa2, 0x2d, 0x0d, 0x45, 0xd1, 0xfe, 0x3d, 0x02, 0x2d, 0x0c, 
+        0x85, 0xed, 0xfe, 0xc8, 0x11, 0xd8, 0x21, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x22, 0x0c, 
+        0x07, 0x22, 0x4c, 0x08, 0x85, 0xcf, 0xfe, 0x3d, 0x02, 0x2d, 0x0c, 0x05, 0xec, 0xfe, 0x46, 0xf8, 
+        0xff, 0x00, 0x00, 0x00, 0x12, 0xc1, 0xf0, 0x29, 0x01, 0x39, 0x11, 0x09, 0x21, 0x01, 0x85, 0xd3, 
+        0xc0, 0x00, 0x00, 0x08, 0x01, 0x28, 0x11, 0x32, 0x00, 0x01, 0x39, 0x02, 0x02, 0x00, 0x03, 0x09, 
+        0x12, 0x01, 0x81, 0xd3, 0xc0, 0x00, 0x00, 0x0c, 0x22, 0x08, 0x21, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 
+        0x20, 0x2c, 0xff, 0x3f, 0x12, 0xc1, 0xf0, 0x09, 0x01, 0xd9, 0x21, 0xc9, 0x11, 0xdd, 0x02, 0xcd, 
+        0x02, 0x01, 0x78, 0xd3, 0xc0, 0x00, 0x00, 0x0c, 0x00, 0x21, 0xf9, 0xff, 0x20, 0x30, 0xa0, 0x1b, 
+        0x00, 0x38, 0x03, 0x39, 0x0d, 0x00, 0x00, 0x74, 0x4b, 0xdd, 0x66, 0x80, 0xee, 0x01, 0x72, 0xd3, 
+        0xc0, 0x00, 0x00, 0xc0, 0x3d, 0xc0, 0x08, 0x01, 0xc8, 0x11, 0xd8, 0x21, 0x3b, 0x23, 0x30, 0x23, 
+        0xb3, 0x20, 0x22, 0xf4, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x12, 0xc1, 0xf0, 0x29, 
+        0x01, 0x39, 0x11, 0x09, 0x21, 0x01, 0x67, 0xd3, 0xc0, 0x00, 0x00, 0x08, 0x01, 0x28, 0x11, 0x82, 
+        0x00, 0x08, 0x89, 0x02, 0x72, 0x00, 0x09, 0x79, 0x12, 0x62, 0x00, 0x19, 0x69, 0x22, 0x52, 0x20, 
+        0x10, 0x59, 0x32, 0x48, 0xf0, 0x49, 0x42, 0x32, 0x00, 0x0a, 0x39, 0x52, 0x02, 0x20, 0x15, 0x09, 
+        0x62, 0x01, 0x5d, 0xd3, 0xc0, 0x00, 0x00, 0x0c, 0x72, 0x08, 0x21, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 
+        0x40, 0x2c, 0xff, 0x3f, 0x12, 0xc1, 0xf0, 0x09, 0x01, 0xd9, 0x21, 0xc9, 0x11, 0xdd, 0x02, 0xcd, 
+        0x02, 0x01, 0x54, 0xd3, 0xc0, 0x00, 0x00, 0x0c, 0x00, 0x21, 0xf9, 0xff, 0x20, 0x30, 0xa0, 0x1b, 
+        0x00, 0x38, 0x03, 0x39, 0x0d, 0x00, 0x00, 0x74, 0x4b, 0xdd, 0x66, 0x80, 0xee, 0x01, 0x4e, 0xd3, 
+        0xc0, 0x00, 0x00, 0xc0, 0x3d, 0xc0, 0x08, 0x01, 0xc8, 0x11, 0xd8, 0x21, 0x3b, 0x23, 0x30, 0x23, 
+        0xb3, 0x20, 0x22, 0xf4, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x22, 0x02, 0x14, 0x20, 
+        0x27, 0x41, 0x0d, 0xf0, 0xe8, 0x8d, 0xfe, 0x3f, 0x12, 0xc1, 0xf0, 0x09, 0x21, 0xbc, 0xd2, 0x02, 
+        0x22, 0x18, 0xbc, 0x80, 0x42, 0x02, 0x14, 0x40, 0x47, 0x41, 0xbc, 0x04, 0x58, 0x73, 0x52, 0x05, 
+        0x04, 0x50, 0x50, 0x34, 0x5a, 0x52, 0x52, 0x05, 0x0c, 0x66, 0x15, 0x21, 0x39, 0x11, 0x62, 0x00, 
+        0x0a, 0x29, 0x01, 0xf6, 0x46, 0x17, 0x21, 0xf3, 0xff, 0x01, 0x69, 0xcf, 0xc0, 0x00, 0x00, 0x38, 
+        0x11, 0x38, 0x73, 0x32, 0x03, 0x04, 0x28, 0x01, 0x30, 0x30, 0x34, 0x45, 0x49, 0xff, 0x08, 0x21, 
+        0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x12, 0xc1, 0xf0, 0x29, 0x01, 0x39, 0x11, 0x09, 
+        0x21, 0x01, 0x2c, 0xd3, 0xc0, 0x00, 0x00, 0x28, 0x01, 0x08, 0x11, 0x02, 0x42, 0x09, 0x01, 0x2a, 
+        0xd3, 0xc0, 0x00, 0x00, 0x08, 0x21, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x0c, 0x13, 0x42, 0x02, 
+        0x09, 0x0c, 0x02, 0x42, 0xc4, 0xfe, 0x40, 0x23, 0x83, 0x0d, 0xf0, 0x00, 0xf0, 0x8d, 0xfe, 0x3f, 
+        0xf8, 0x8d, 0xfe, 0x3f, 0x0c, 0x19, 0x81, 0x3e, 0xff, 0x12, 0xc1, 0xe0, 0xd9, 0x41, 0x39, 0x01, 
+        0xf9, 0x61, 0x09, 0x21, 0xe9, 0x51, 0xc9, 0x31, 0x72, 0xc8, 0xa0, 0xcd, 0x04, 0xe2, 0xc8, 0xf0, 
+        0xea, 0xe2, 0x00, 0x0c, 0x40, 0x4d, 0x05, 0x02, 0x07, 0x0c, 0x49, 0x11, 0x00, 0x50, 0x91, 0x07, 
+        0x65, 0x2b, 0xf2, 0x0e, 0x00, 0xf0, 0xf0, 0x91, 0x07, 0x6f, 0x7f, 0x0c, 0x64, 0xd2, 0xa0, 0x78, 
+        0xc0, 0xdd, 0xc1, 0xda, 0xd8, 0xf2, 0xcd, 0x1a, 0x2d, 0x0f, 0x01, 0xd6, 0xf0, 0xc0, 0x00, 0x00, 
+        0x56, 0x72, 0x06, 0x71, 0xe8, 0xfb, 0x0c, 0x19, 0x02, 0x07, 0x0c, 0x06, 0x03, 0x00, 0x22, 0xc8, 
+        0x1a, 0xf2, 0xa0, 0x78, 0xc0, 0xff, 0xc1, 0x8a, 0xdf, 0x2a, 0xff, 0x00, 0x1c, 0x40, 0x00, 0x29, 
+        0xa1, 0x00, 0x32, 0x20, 0x32, 0x47, 0x0c, 0x02, 0x0e, 0x00, 0x32, 0xa0, 0x78, 0x20, 0x00, 0x20, 
+        0x2d, 0x0d, 0x02, 0x4e, 0x00, 0x01, 0x0d, 0xd2, 0xc0, 0x00, 0x00, 0x2d, 0x0f, 0xc2, 0x4d, 0x76, 
+        0x48, 0x11, 0x38, 0x01, 0x42, 0x5d, 0x10, 0x0c, 0x64, 0x01, 0x68, 0xd2, 0xc0, 0x00, 0x00, 0x3d, 
+        0x0c, 0x21, 0xd6, 0xff, 0x01, 0x2b, 0xcf, 0xc0, 0x00, 0x00, 0x08, 0x21, 0xc8, 0x31, 0xe8, 0x51, 
+        0x2d, 0x0d, 0xf8, 0x61, 0xd8, 0x41, 0x12, 0xc1, 0x20, 0x0d, 0xf0, 0x21, 0xd1, 0xff, 0x01, 0x24, 
+        0xcf, 0xc0, 0x00, 0x00, 0x0c, 0x0d, 0x06, 0xf8, 0xff, 0x00, 0x00, 0x00, 0x21, 0xca, 0xfb, 0x22, 
+        0x02, 0x0c, 0x0d, 0xf0, 0x60, 0x2c, 0xff, 0x3f, 0x08, 0x8e, 0xfe, 0x3f, 0x14, 0x8e, 0xfe, 0x3f, 
+        0x12, 0xc1, 0xf0, 0x09, 0x11, 0xc9, 0x21, 0x01, 0xfb, 0xff, 0xcd, 0x04, 0x0a, 0x42, 0x49, 0x01, 
+        0x42, 0x04, 0x00, 0x00, 0x0c, 0x40, 0x40, 0x40, 0x91, 0x07, 0x64, 0x47, 0x22, 0xc0, 0x10, 0x42, 
+        0xa0, 0x78, 0xc0, 0x44, 0xd1, 0x4a, 0x22, 0x22, 0xc2, 0x1a, 0x0c, 0x64, 0x01, 0xa6, 0xf0, 0xc0, 
+        0x00, 0x00, 0xec, 0xe2, 0x21, 0xf1, 0xff, 0x98, 0x01, 0x7c, 0xf8, 0x61, 0xb6, 0xfb, 0x00, 0x1c, 
+        0x40, 0x0c, 0x17, 0x00, 0x77, 0xa1, 0x52, 0x06, 0x0c, 0x80, 0x77, 0x30, 0x82, 0x09, 0x00, 0x70, 
+        0x55, 0x10, 0x52, 0x46, 0x0c, 0x70, 0x88, 0x10, 0x82, 0x49, 0x00, 0x01, 0x05, 0xcf, 0xc0, 0x00, 
+        0x00, 0x06, 0x02, 0x00, 0x21, 0xe6, 0xff, 0x01, 0x02, 0xcf, 0xc0, 0x00, 0x00, 0xc8, 0x21, 0x08, 
+        0x11, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0x61, 0xa7, 0xfb, 0x0c, 0x03, 0x72, 0x06, 0x0c, 
+        0x42, 0xc6, 0x50, 0x4a, 0x42, 0x52, 0x04, 0x00, 0x32, 0x44, 0x00, 0x70, 0x55, 0x30, 0x52, 0x46, 
+        0x0c, 0x0d, 0xf0, 0x00, 0x12, 0xc1, 0xf0, 0x02, 0x61, 0x01, 0x01, 0xd6, 0xff, 0x00, 0x02, 0x80, 
+        0x22, 0x00, 0x00, 0x22, 0x61, 0x00, 0x05, 0xe0, 0x02, 0x52, 0xa0, 0x78, 0x48, 0x01, 0x08, 0x11, 
+        0x40, 0x30, 0x60, 0x12, 0xc1, 0x10, 0x40, 0x33, 0x10, 0x0b, 0x42, 0x30, 0xf3, 0x40, 0x30, 0x30, 
+        0x60, 0x21, 0xd7, 0xfe, 0x32, 0xc3, 0x1f, 0x50, 0x33, 0x82, 0x3a, 0x22, 0x0c, 0x03, 0x40, 0x23, 
+        0x93, 0x0d, 0xf0, 0x00, 0x12, 0xc1, 0xe0, 0xd9, 0x21, 0xf9, 0x41, 0x09, 0x01, 0xc9, 0x11, 0xc1, 
+        0xc5, 0xff, 0xe9, 0x31, 0xca, 0xc2, 0xc2, 0x0c, 0x00, 0xed, 0x03, 0xc0, 0xd0, 0x60, 0xc0, 0xdd, 
+        0x10, 0xd0, 0xfd, 0x40, 0xd0, 0xd0, 0x60, 0xd2, 0xcd, 0x1f, 0x96, 0xfd, 0x02, 0x3d, 0x0e, 0x0c, 
+        0x64, 0xf1, 0xc7, 0xfe, 0x02, 0xa0, 0x78, 0x00, 0x0d, 0x82, 0x0a, 0xff, 0x22, 0xcf, 0x1a, 0x01, 
+        0x6d, 0xf0, 0xc0, 0x00, 0x00, 0xac, 0x52, 0x7c, 0xf0, 0x00, 0x1d, 0x40, 0x0c, 0x1f, 0x00, 0xff, 
+        0xa1, 0x00, 0xff, 0x30, 0xf0, 0xcc, 0x10, 0xc0, 0xc0, 0x74, 0x46, 0xef, 0xff, 0x0c, 0x02, 0xc8, 
+        0x11, 0xd8, 0x21, 0xe8, 0x31, 0xf8, 0x41, 0x08, 0x01, 0x12, 0xc1, 0x20, 0x0d, 0xf0, 0x2d, 0x0f, 
+        0xc6, 0xfa, 0xff, 0x00, 0x41, 0x74, 0xfb, 0x00, 0x02, 0x40, 0x32, 0x04, 0x0c, 0x52, 0xc4, 0x60, 
+        0x30, 0x30, 0x91, 0x07, 0x63, 0x09, 0x32, 0xa0, 0x78, 0x20, 0x23, 0xc1, 0x2a, 0x25, 0x0d, 0xf0, 
+        0x0c, 0x02, 0x0d, 0xf0, 0x21, 0x6c, 0xfb, 0x12, 0xc1, 0xf0, 0x02, 0x61, 0x00, 0x22, 0x02, 0x0c, 
+        0x45, 0xd3, 0x02, 0x02, 0x21, 0x00, 0x66, 0x12, 0x10, 0x41, 0x66, 0xfb, 0x32, 0xa0, 0x01, 0x42, 
+        0x04, 0x50, 0x0c, 0x02, 0x40, 0x23, 0x83, 0x46, 0x00, 0x00, 0x7c, 0xf2, 0x12, 0xc1, 0x10, 0x0d, 
+        0xf0, 0x00, 0x00, 0x00, 0x64, 0x89, 0xfe, 0x3f, 0x24, 0x8e, 0xfe, 0x3f, 0x60, 0x83, 0xfe, 0x3f, 
+        0x12, 0xc1, 0xe0, 0x32, 0x61, 0x01, 0x42, 0x61, 0x02, 0x52, 0x61, 0x03, 0x69, 0x41, 0x29, 0x01, 
+        0x09, 0x51, 0x0c, 0x72, 0x85, 0xc2, 0xf8, 0xdc, 0x02, 0x21, 0xf6, 0xff, 0x31, 0xf7, 0xff, 0x42, 
+        0xa0, 0xe7, 0x01, 0xab, 0xce, 0xc0, 0x00, 0x00, 0x06, 0xff, 0xff, 0x92, 0x21, 0x03, 0xb2, 0x21, 
+        0x04, 0x01, 0xf2, 0xff, 0x32, 0x22, 0x07, 0x48, 0x01, 0x49, 0x23, 0x08, 0x00, 0x48, 0x21, 0xa2, 
+        0x10, 0x00, 0x88, 0x10, 0xb9, 0x13, 0x90, 0xaa, 0xc0, 0xa2, 0x50, 0x00, 0x49, 0x12, 0x89, 0x02, 
+        0x92, 0x52, 0x04, 0x88, 0x18, 0x89, 0x32, 0x62, 0xa0, 0xbf, 0x0c, 0x08, 0xc0, 0x20, 0x00, 0x72, 
+        0x04, 0x03, 0x60, 0x77, 0x10, 0xc0, 0x20, 0x00, 0x38, 0x11, 0x72, 0x44, 0x03, 0x58, 0x24, 0x59, 
+        0x10, 0x89, 0x24, 0x16, 0x33, 0x08, 0x52, 0x00, 0x02, 0x98, 0x30, 0x0b, 0x55, 0x78, 0x29, 0x79, 
+        0x30, 0x52, 0x40, 0x02, 0x89, 0x29, 0x38, 0x12, 0xc0, 0x20, 0x00, 0x42, 0x13, 0x00, 0x40, 0x40, 
+        0xb4, 0x51, 0xfc, 0xd0, 0x40, 0x44, 0x11, 0xc0, 0x20, 0x00, 0xb2, 0x13, 0x01, 0x00, 0xbb, 0x11, 
+        0xc0, 0x20, 0x00, 0x72, 0x13, 0x00, 0x70, 0xbb, 0x20, 0x50, 0xbb, 0x10, 0x40, 0xbb, 0x20, 0xc0, 
+        0x20, 0x00, 0xb2, 0x53, 0x00, 0xb0, 0xb0, 0xf5, 0xc0, 0x20, 0x00, 0xa8, 0x12, 0xb2, 0x53, 0x01, 
+        0x99, 0x2a, 0x99, 0x12, 0xc0, 0x20, 0x00, 0x72, 0x09, 0x03, 0x60, 0x77, 0x10, 0x80, 0x77, 0x20, 
+        0xc0, 0x20, 0x00, 0x31, 0x6f, 0xe3, 0x72, 0x49, 0x03, 0x52, 0x12, 0x04, 0x48, 0x72, 0x1b, 0x55, 
+        0x52, 0x52, 0x04, 0x52, 0x14, 0x00, 0x1c, 0x07, 0x30, 0x35, 0x10, 0x50, 0x50, 0xb4, 0x70, 0x55, 
+        0x20, 0x50, 0x50, 0xb4, 0x50, 0x33, 0x20, 0x32, 0x54, 0x00, 0x85, 0x72, 0xfa, 0x08, 0x51, 0x12, 
+        0xc1, 0x20, 0x0d, 0xf0, 0xd0, 0x2e, 0xff, 0x3f, 0x6d, 0x02, 0x71, 0xfe, 0xff, 0x4d, 0x03, 0x12, 
+        0xc1, 0xf0, 0x09, 0x01, 0x31, 0xba, 0xff, 0x58, 0x22, 0x38, 0x03, 0x28, 0x17, 0x59, 0x17, 0x02, 
+        0x13, 0x00, 0x0c, 0x05, 0x40, 0x00, 0xc0, 0x59, 0x26, 0x02, 0x53, 0x00, 0x3d, 0x06, 0xc5, 0xba, 
+        0x00, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x12, 0xc1, 0xe0, 0x32, 0x61, 0x06, 0xc2, 0x61, 
+        0x03, 0x42, 0x61, 0x01, 0xc1, 0xae, 0xff, 0x09, 0x21, 0xc8, 0x0c, 0xe9, 0x51, 0xc8, 0x1c, 0xd9, 
+        0x41, 0xc8, 0x1c, 0xdd, 0x02, 0xe2, 0x0c, 0x13, 0xcb, 0xcc, 0xe0, 0xe3, 0x04, 0x45, 0xfd, 0x01, 
+        0xdc, 0x02, 0x21, 0xa4, 0xff, 0x31, 0xa4, 0xff, 0x42, 0xa1, 0x2e, 0x01, 0x59, 0xce, 0xc0, 0x00, 
+        0x00, 0x06, 0xff, 0xff, 0x91, 0xe4, 0xff, 0x82, 0x1c, 0x06, 0xa2, 0xa0, 0xf0, 0x29, 0x01, 0x32, 
+        0x0c, 0x0a, 0x22, 0x02, 0x06, 0xa0, 0x33, 0x10, 0x20, 0x20, 0x34, 0x30, 0x22, 0x20, 0x22, 0x4c, 
+        0x0a, 0xbc, 0xce, 0x01, 0xb2, 0xea, 0xc0, 0x20, 0x00, 0x42, 0x20, 0x88, 0x38, 0x39, 0x47, 0x13, 
+        0x11, 0x21, 0x94, 0xff, 0x31, 0x95, 0xff, 0x42, 0xa1, 0x35, 0x01, 0x49, 0xce, 0xc0, 0x00, 0x00, 
+        0x06, 0xff, 0xff, 0xc0, 0x20, 0x00, 0x52, 0x20, 0x89, 0x66, 0x15, 0x02, 0xc6, 0x22, 0x00, 0x21, 
+        0x8d, 0xff, 0x31, 0x8d, 0xff, 0x42, 0xa1, 0x37, 0x01, 0x42, 0xce, 0xc0, 0x00, 0x00, 0x06, 0xff, 
+        0xff, 0x02, 0x0c, 0x03, 0x47, 0xe0, 0x02, 0x57, 0x60, 0x7d, 0x80, 0x00, 0x34, 0x16, 0x00, 0x0c, 
+        0x62, 0xc0, 0xfc, 0x16, 0xb6, 0x09, 0x72, 0xc0, 0xf8, 0x16, 0xa7, 0x0d, 0x82, 0x29, 0x5b, 0x0c, 
+        0x10, 0x1b, 0x88, 0x82, 0x69, 0x5b, 0x8c, 0x80, 0x2d, 0x0d, 0x38, 0x61, 0x85, 0xf0, 0xff, 0xc6, 
+        0x0e, 0x00, 0xa1, 0x9f, 0xd0, 0xc0, 0x20, 0x00, 0x92, 0x1d, 0x01, 0x00, 0x99, 0x11, 0xc0, 0x20, 
+        0x00, 0xb2, 0x1d, 0x00, 0xb0, 0x99, 0x20, 0xa0, 0x99, 0x10, 0x90, 0x9c, 0x41, 0xdc, 0x09, 0x21, 
+        0x75, 0xff, 0x31, 0x75, 0xff, 0x42, 0xa1, 0xb7, 0x01, 0x2a, 0xce, 0xc0, 0x00, 0x00, 0x06, 0xff, 
+        0xff, 0x4d, 0x0d, 0x3d, 0x0e, 0x28, 0x01, 0x58, 0x61, 0x68, 0x11, 0x45, 0xdc, 0xff, 0xc8, 0x31, 
+        0xd8, 0x41, 0xe8, 0x51, 0x08, 0x21, 0x12, 0xc1, 0x20, 0x0d, 0xf0, 0xa2, 0x29, 0x52, 0x1b, 0xaa, 
+        0xa2, 0x69, 0x52, 0x0c, 0x00, 0x46, 0xe7, 0xff, 0x67, 0xe0, 0x05, 0x00, 0xb7, 0x41, 0x16, 0x8b, 
+        0x07, 0x22, 0x29, 0x59, 0x80, 0x00, 0x34, 0x16, 0x10, 0x04, 0x26, 0x40, 0x0a, 0x26, 0x80, 0x51, 
+        0xc2, 0x29, 0x5b, 0x1b, 0xcc, 0xc2, 0x69, 0x5b, 0x0c, 0x10, 0x1b, 0x22, 0x22, 0x69, 0x59, 0xc6, 
+        0xdc, 0xff, 0xa0, 0x08, 0x10, 0x26, 0xe0, 0x56, 0x32, 0xa0, 0x90, 0x37, 0x10, 0x68, 0x42, 0xa0, 
+        0xa0, 0x47, 0x10, 0x55, 0x52, 0x29, 0x56, 0x1b, 0x55, 0x52, 0x69, 0x56, 0x0c, 0x10, 0x06, 0xd5, 
+        0xff, 0x62, 0x29, 0x57, 0x1b, 0x66, 0x62, 0x69, 0x57, 0x86, 0xe9, 0xff, 0x80, 0x00, 0x74, 0x26, 
+        0xd0, 0x0f, 0x5c, 0x07, 0x77, 0x10, 0xc0, 0x66, 0xe0, 0xbd, 0x82, 0x29, 0x5a, 0x1b, 0x88, 0x82, 
+        0x69, 0x5a, 0x0c, 0x00, 0x86, 0xec, 0xff, 0xa2, 0x29, 0x58, 0x2d, 0x0c, 0x1b, 0xaa, 0xa2, 0x69, 
+        0x58, 0x05, 0xbd, 0xfe, 0xc6, 0xde, 0xff, 0x00, 0x00, 0x00, 0x0c, 0x10, 0x86, 0xc5, 0xff, 0xb2, 
+        0x29, 0x53, 0x1b, 0xbb, 0xb2, 0x69, 0x53, 0x46, 0xec, 0xff, 0xc2, 0x29, 0x55, 0x0c, 0x00, 0x1b, 
+        0xcc, 0xc2, 0x69, 0x55, 0x86, 0xbf, 0xff, 0x02, 0x29, 0x54, 0x1b, 0x00, 0x02, 0x69, 0x54, 0x46, 
+        0xe6, 0xff, 0x00, 0x00, 0x50, 0x30, 0xff, 0x3f, 0x0c, 0xc3, 0x52, 0xa1, 0x00, 0x62, 0xa1, 0x00, 
+        0x0c, 0x17, 0x12, 0xc1, 0xe0, 0x09, 0x61, 0x22, 0xc1, 0x10, 0x29, 0x01, 0x02, 0xc1, 0x14, 0x21, 
+        0xf9, 0xff, 0x09, 0x11, 0x42, 0xc2, 0x60, 0x01, 0x28, 0xd0, 0xc0, 0x00, 0x00, 0x28, 0x41, 0x38, 
+        0x51, 0x27, 0x13, 0x11, 0x21, 0x30, 0xff, 0x31, 0x30, 0xff, 0x42, 0xa1, 0xf1, 0x01, 0xe4, 0xcd, 
+        0xc0, 0x00, 0x00, 0x06, 0xff, 0xff, 0x48, 0x22, 0x08, 0x61, 0x9c, 0x04, 0x21, 0x2a, 0xff, 0x31, 
+        0x2a, 0xff, 0x42, 0xa1, 0xf2, 0x01, 0xde, 0xcd, 0xc0, 0x00, 0x00, 0x06, 0xff, 0xff, 0x12, 0xc1, 
+        0x20, 0x0d, 0xf0, 0x00, 0x00, 0xa0, 0x80, 0x00, 0xf7, 0xbf, 0xdf, 0x7f, 0x91, 0xfe, 0xff, 0x81, 
+        0x17, 0xee, 0x31, 0x45, 0xd0, 0xc0, 0x20, 0x00, 0x72, 0x23, 0xa2, 0x90, 0x77, 0x20, 0xc0, 0x20, 
+        0x00, 0x72, 0x63, 0xa2, 0x61, 0xf9, 0xff, 0xc0, 0x20, 0x00, 0x52, 0x23, 0xa2, 0x60, 0x55, 0x10, 
+        0xc0, 0x20, 0x00, 0x52, 0x63, 0xa2, 0x0c, 0x84, 0xc0, 0x20, 0x00, 0x22, 0x23, 0xa4, 0x40, 0x22, 
+        0x20, 0xc0, 0x20, 0x00, 0x22, 0x63, 0xa4, 0x0c, 0x3b, 0xc0, 0x20, 0x00, 0xa2, 0x23, 0xa5, 0xb0, 
+        0xaa, 0x20, 0xc0, 0x20, 0x00, 0xa2, 0x63, 0xa5, 0x92, 0xaf, 0x0f, 0xc0, 0x20, 0x00, 0x78, 0x28, 
+        0x90, 0x77, 0x10, 0xc0, 0x20, 0x00, 0x79, 0x28, 0x62, 0xaf, 0x00, 0x0c, 0x45, 0xc0, 0x20, 0x00, 
+        0x42, 0x23, 0x9b, 0x60, 0x44, 0x10, 0x50, 0x44, 0x20, 0xc0, 0x20, 0x00, 0x42, 0x63, 0x9b, 0x21, 
+        0xa6, 0xda, 0xb2, 0xa4, 0x00, 0xc0, 0x20, 0x00, 0xa2, 0x23, 0x9b, 0x20, 0xaa, 0x10, 0xb0, 0xaa, 
+        0x20, 0xc0, 0x20, 0x00, 0xa2, 0x63, 0x9b, 0x91, 0x43, 0xd3, 0x82, 0xa0, 0xf0, 0xc0, 0x20, 0x00, 
+        0x72, 0x23, 0x85, 0x90, 0x77, 0x10, 0x80, 0x77, 0x20, 0xc0, 0x20, 0x00, 0x72, 0x63, 0x85, 0x61, 
+        0x87, 0xd9, 0xc0, 0x20, 0x00, 0x52, 0x23, 0x85, 0x60, 0x55, 0x20, 0xc0, 0x20, 0x00, 0x52, 0x63, 
+        0x85, 0x41, 0xb2, 0xdc, 0xc0, 0x20, 0x00, 0x22, 0x23, 0x85, 0x40, 0x22, 0x20, 0xc0, 0x20, 0x00, 
+        0x22, 0x63, 0x85, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0xa0, 0x3b, 0xff, 0x3f, 0xe0, 0x7f, 0x00, 0x00, 
+        0xb0, 0x38, 0xff, 0x3f, 0x5c, 0x30, 0xff, 0x3f, 0x80, 0xbb, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x20, 
+        0x32, 0xa2, 0xe8, 0x41, 0xf9, 0xff, 0x51, 0xf9, 0xff, 0x62, 0xa2, 0x10, 0x0c, 0x17, 0x21, 0xf8, 
+        0xff, 0x12, 0xc1, 0xd0, 0xc9, 0x61, 0xf9, 0x91, 0xd9, 0x71, 0xf1, 0xe4, 0xfe, 0x09, 0x51, 0x88, 
+        0x0f, 0xe9, 0x81, 0x8b, 0x08, 0x09, 0x11, 0x4b, 0x88, 0x89, 0x01, 0x01, 0xd3, 0xcf, 0xc0, 0x00, 
+        0x00, 0x08, 0x0f, 0x3c, 0xe9, 0xc8, 0x10, 0x92, 0x50, 0x00, 0x16, 0x5c, 0x06, 0xd1, 0x80, 0xe2, 
+        0xe1, 0xfd, 0xcf, 0xc0, 0x20, 0x00, 0x22, 0x1c, 0x00, 0x20, 0x20, 0xb4, 0x22, 0xc2, 0xfc, 0x20, 
+        0x20, 0xb4, 0xc0, 0x20, 0x00, 0x02, 0x1c, 0x00, 0xd0, 0x00, 0x10, 0x20, 0x00, 0x20, 0xc0, 0x20, 
+        0x00, 0x02, 0x5c, 0x00, 0xc0, 0x20, 0x00, 0xb2, 0x1c, 0x00, 0xb0, 0xb0, 0xb4, 0x40, 0xbb, 0x11, 
+        0xc0, 0x20, 0x00, 0xa2, 0x1c, 0x01, 0x00, 0xaa, 0x11, 0xc0, 0x20, 0x00, 0x02, 0x1c, 0x00, 0x00, 
+        0xaa, 0x20, 0xe0, 0xaa, 0x10, 0xb0, 0xaa, 0x20, 0xc0, 0x20, 0x00, 0xa2, 0x5c, 0x00, 0xa0, 0xa0, 
+        0xf5, 0xc0, 0x20, 0x00, 0xa2, 0x5c, 0x01, 0x2d, 0x0c, 0x05, 0xd0, 0x00, 0xc8, 0x2c, 0x56, 0x1c, 
+        0xfa, 0x08, 0x0f, 0x21, 0xd4, 0xff, 0x52, 0xa7, 0x00, 0x62, 0xa1, 0x00, 0x0c, 0x17, 0xd1, 0xd0, 
+        0xff, 0xcb, 0x40, 0x32, 0xc0, 0x10, 0x39, 0x11, 0x49, 0x01, 0x5c, 0x43, 0x42, 0xdd, 0xf9, 0x01, 
+        0xae, 0xcf, 0xc0, 0x00, 0x00, 0x3c, 0x03, 0x52, 0xc1, 0x10, 0x68, 0x0f, 0xc1, 0xcb, 0xff, 0x0c, 
+        0x77, 0x2d, 0x0c, 0x72, 0x46, 0x02, 0x42, 0xcc, 0x30, 0x0c, 0x17, 0x59, 0x11, 0x62, 0xc6, 0x14, 
+        0x69, 0x01, 0x52, 0xa1, 0x00, 0x4c, 0x06, 0x01, 0xa4, 0xcf, 0xc0, 0x00, 0x00, 0xb8, 0x0f, 0x48, 
+        0x41, 0x38, 0x5b, 0x39, 0x24, 0x91, 0xc5, 0xe9, 0xc0, 0x20, 0x00, 0xd2, 0x69, 0xa0, 0xc0, 0x20, 
+        0x00, 0xc2, 0x69, 0x9f, 0x21, 0x6c, 0xff, 0xc0, 0x20, 0x00, 0x22, 0x69, 0xa2, 0xc0, 0x20, 0x00, 
+        0xd2, 0x69, 0xa1, 0x02, 0xaf, 0x00, 0x0c, 0xcf, 0xc0, 0x20, 0x00, 0xe2, 0x29, 0x80, 0x00, 0xee, 
+        0x10, 0xf0, 0xee, 0x20, 0xc0, 0x20, 0x00, 0xe2, 0x69, 0x80, 0xd8, 0x1b, 0xc0, 0x20, 0x00, 0xd2, 
+        0x69, 0x82, 0xc8, 0x3b, 0xc0, 0x20, 0x00, 0xc2, 0x69, 0x83, 0xb8, 0x5b, 0xc0, 0x20, 0x00, 0xb2, 
+        0x69, 0x84, 0xa1, 0xae, 0xff, 0xc0, 0x20, 0x00, 0x82, 0x29, 0x80, 0xa0, 0x88, 0x20, 0xc0, 0x20, 
+        0x00, 0x82, 0x69, 0x80, 0xc8, 0x61, 0xd8, 0x71, 0xe8, 0x81, 0xf8, 0x91, 0x08, 0x51, 0x12, 0xc1, 
+        0x30, 0x0d, 0xf0, 0x00, 0x10, 0x32, 0x50, 0x76, 0x21, 0xff, 0xff, 0x31, 0xc4, 0xe9, 0xc0, 0x20, 
+        0x00, 0x22, 0x63, 0x80, 0x0d, 0xf0, 0x00, 0x00, 0x12, 0xc1, 0xf0, 0x09, 0x01, 0x72, 0xa7, 0x07, 
+        0x21, 0xa3, 0xe9, 0xc0, 0x20, 0x00, 0x62, 0x22, 0x9b, 0x70, 0x66, 0x20, 0xc0, 0x20, 0x00, 0x62, 
+        0x62, 0x9b, 0x51, 0x74, 0xce, 0xc0, 0x20, 0x00, 0x42, 0x22, 0x9b, 0x50, 0x44, 0x20, 0xc0, 0x20, 
+        0x00, 0x42, 0x62, 0x9b, 0x1c, 0x03, 0xc0, 0x20, 0x00, 0x02, 0x22, 0x9b, 0x30, 0x00, 0x20, 0xc0, 
+        0x20, 0x00, 0x0c, 0x03, 0x02, 0x62, 0x9b, 0x0c, 0x04, 0x0c, 0x02, 0x45, 0x46, 0x00, 0x0c, 0x02, 
+        0x0c, 0x13, 0x0c, 0x04, 0x85, 0x45, 0x00, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 
+        0x00, 0x03, 0x9f, 0x00, 0x12, 0xc1, 0xf0, 0x09, 0x01, 0x0c, 0x03, 0x21, 0x97, 0xcf, 0xc0, 0x20, 
+        0x00, 0x32, 0x62, 0x86, 0x7c, 0xf0, 0xc0, 0x20, 0x00, 0x02, 0x62, 0x89, 0xc5, 0xd2, 0xff, 0x85, 
+        0xa3, 0x00, 0xc5, 0xe0, 0xff, 0x05, 0xf7, 0xff, 0xc5, 0xf7, 0xff, 0x91, 0xf5, 0xff, 0x51, 0x83, 
+        0xe9, 0xc0, 0x20, 0x00, 0xa1, 0x8d, 0xcf, 0x92, 0x6a, 0x86, 0x0c, 0x28, 0xc0, 0x20, 0x00, 0x72, 
+        0x25, 0xde, 0x80, 0x77, 0x20, 0xc0, 0x20, 0x00, 0x72, 0x65, 0xde, 0x61, 0xa5, 0xd2, 0xc0, 0x20, 
+        0x00, 0x42, 0x25, 0x81, 0x60, 0x44, 0x10, 0xc0, 0x20, 0x00, 0x42, 0x65, 0x81, 0x08, 0x01, 0x12, 
+        0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x0b, 0x07, 0x00, 0x07, 0x0c, 0x07, 0x00, 0x41, 0x90, 0xe9, 0x8c, 
+        0x92, 0x31, 0xfc, 0xff, 0xc0, 0x20, 0x00, 0x32, 0x64, 0x83, 0x0d, 0xf0, 0x21, 0xfb, 0xff, 0xc0, 
+        0x20, 0x00, 0x22, 0x64, 0x83, 0x0d, 0xf0, 0x00, 0xff, 0xff, 0xfb, 0xff, 0xf0, 0x2e, 0xff, 0x3f, 
+        0x12, 0xc1, 0xd0, 0xc9, 0x51, 0xe9, 0x71, 0xf9, 0x81, 0xd9, 0x61, 0xd1, 0x73, 0xcf, 0x09, 0x41, 
+        0xc0, 0x20, 0x00, 0xc2, 0x2d, 0x88, 0xcc, 0xdc, 0xc8, 0x51, 0xd8, 0x61, 0xe8, 0x71, 0xf8, 0x81, 
+        0x08, 0x41, 0x12, 0xc1, 0x30, 0x0d, 0xf0, 0xc0, 0x20, 0x00, 0xe2, 0x2d, 0xa1, 0xc0, 0x20, 0x00, 
+        0xc2, 0x6d, 0x89, 0xc0, 0x9c, 0x05, 0x56, 0xb9, 0x19, 0x87, 0x6c, 0x6b, 0xc0, 0x20, 0x00, 0x21, 
+        0x5b, 0xe9, 0xa1, 0x84, 0xfe, 0x22, 0x22, 0x87, 0xa8, 0x1a, 0x20, 0xaa, 0xc0, 0x56, 0x2a, 0x17, 
+        0xc0, 0x20, 0x00, 0x31, 0x56, 0xe9, 0xf2, 0x23, 0x85, 0xc0, 0x20, 0x00, 0x41, 0x30, 0xed, 0x42, 
+        0x24, 0xbf, 0x49, 0x21, 0xc0, 0x20, 0x00, 0x32, 0x23, 0x86, 0x30, 0x30, 0x74, 0x39, 0x31, 0x01, 
+        0xce, 0xef, 0xc0, 0x00, 0x00, 0xf0, 0x52, 0xc0, 0x56, 0x35, 0x1b, 0x16, 0x2f, 0x1c, 0x68, 0x2f, 
+        0x16, 0xf6, 0x1c, 0xc0, 0x20, 0x00, 0x72, 0x0f, 0x03, 0x70, 0x70, 0x64, 0x70, 0x76, 0x41, 0x0b, 
+        0x77, 0x56, 0x67, 0x17, 0x2d, 0x0f, 0x38, 0x31, 0x48, 0x21, 0xc5, 0x9e, 0xff, 0x91, 0x6d, 0xfe, 
+        0x82, 0x29, 0x51, 0x1b, 0x88, 0x82, 0x69, 0x51, 0x91, 0x4f, 0xe0, 0xc7, 0x09, 0x17, 0xb2, 0xaf, 
+        0xe8, 0xe0, 0x2c, 0x34, 0xb0, 0xb2, 0x82, 0xd0, 0xbb, 0x80, 0xc0, 0x20, 0x00, 0xa2, 0xa0, 0x00, 
+        0xa2, 0x6b, 0xf0, 0x45, 0xc5, 0xf9, 0x37, 0xfc, 0x02, 0x06, 0x2d, 0x00, 0xc0, 0x20, 0x00, 0x01, 
+        0x13, 0xed, 0x08, 0x10, 0xe0, 0xfc, 0x34, 0x87, 0x70, 0x05, 0x00, 0x00, 0x75, 0x86, 0x00, 0x00, 
+        0x02, 0xa0, 0xff, 0x02, 0x61, 0x01, 0xb6, 0x8f, 0x07, 0x09, 0x11, 0x32, 0xcf, 0xf6, 0x56, 0x53, 
+        0x0f, 0x85, 0x7e, 0xf8, 0x51, 0x05, 0xce, 0x50, 0x5c, 0x10, 0x59, 0x01, 0xdc, 0x72, 0x61, 0x02, 
+        0xce, 0x67, 0x0c, 0x12, 0x2d, 0x0f, 0x85, 0xd8, 0xf8, 0x81, 0xbb, 0xff, 0x71, 0xff, 0xcd, 0x80, 
+        0xcc, 0x10, 0x70, 0x7c, 0x10, 0x79, 0x01, 0xe0, 0x0c, 0x35, 0x16, 0x10, 0x05, 0x26, 0x10, 0x3e, 
+        0x26, 0x20, 0x2e, 0x26, 0x40, 0x1d, 0x92, 0xc0, 0xfb, 0x56, 0x09, 0x0f, 0xf9, 0x91, 0x45, 0xb9, 
+        0xf9, 0x31, 0xb2, 0xff, 0xb8, 0x91, 0x30, 0xbb, 0xa0, 0xa8, 0xcb, 0x08, 0x01, 0x1b, 0xaa, 0xa9, 
+        0xcb, 0x86, 0x10, 0x00, 0xe0, 0x20, 0x75, 0xc5, 0xc6, 0xf9, 0xf9, 0x91, 0x46, 0xf8, 0xff, 0x00, 
+        0x00, 0x00, 0x2d, 0x0f, 0x45, 0xb2, 0xf9, 0xf9, 0x91, 0x06, 0xf5, 0xff, 0x00, 0x00, 0x00, 0xe0, 
+        0x20, 0x75, 0x3d, 0x0f, 0xc5, 0xbb, 0xf9, 0xf9, 0x91, 0x06, 0xf1, 0xff, 0x00, 0x00, 0x00, 0x32, 
+        0x21, 0x01, 0xf0, 0x2f, 0x20, 0x30, 0x30, 0x74, 0x05, 0xf2, 0xf8, 0xf2, 0x61, 0x09, 0xc6, 0xeb, 
+        0xff, 0x01, 0xe1, 0xcd, 0x00, 0x0c, 0x10, 0x8c, 0xd0, 0xe0, 0x2c, 0x34, 0xb6, 0x82, 0x02, 0x66, 
+        0x92, 0x66, 0x10, 0x11, 0x20, 0x85, 0xcf, 0xf8, 0x47, 0x7c, 0x05, 0x10, 0x11, 0x20, 0x45, 0x62, 
+        0xf9, 0x97, 0x6c, 0x0a, 0x41, 0x2c, 0xfe, 0x32, 0x24, 0x5d, 0x1b, 0x33, 0x32, 0x64, 0x5d, 0xc0, 
+        0x47, 0x05, 0x16, 0xa4, 0xe5, 0x61, 0x27, 0xfe, 0x52, 0x26, 0x5e, 0x1b, 0x55, 0x52, 0x66, 0x5e, 
+        0x06, 0x93, 0xff, 0x21, 0xe0, 0xfd, 0x31, 0xe0, 0xfd, 0x42, 0xa2, 0xf2, 0x01, 0x95, 0xcc, 0xc0, 
+        0x00, 0x00, 0x06, 0xff, 0xff, 0x21, 0xdb, 0xfd, 0x31, 0xdc, 0xfd, 0x42, 0xa2, 0xeb, 0x01, 0x90, 
+        0xcc, 0xc0, 0x00, 0x00, 0x06, 0xff, 0xff, 0x21, 0xd7, 0xfd, 0x31, 0xd7, 0xfd, 0x42, 0xa3, 0x1a, 
+        0x01, 0x8c, 0xcc, 0xc0, 0x00, 0x00, 0x06, 0xff, 0xff, 0x21, 0xd2, 0xfd, 0x31, 0xd3, 0xfd, 0x42, 
+        0xa3, 0x39, 0x01, 0x87, 0xcc, 0xc0, 0x00, 0x00, 0x06, 0xff, 0xff, 0x21, 0xce, 0xfd, 0x31, 0xce, 
+        0xfd, 0x42, 0xa3, 0x01, 0x01, 0x83, 0xcc, 0xc0, 0x00, 0x00, 0x06, 0xff, 0xff, 0x21, 0xc9, 0xfd, 
+        0x31, 0xca, 0xfd, 0x42, 0xa3, 0x32, 0x01, 0x7e, 0xcc, 0xc0, 0x00, 0x00, 0x06, 0xff, 0xff, 0x21, 
+        0xc5, 0xfd, 0x31, 0xc5, 0xfd, 0x42, 0xa2, 0xf7, 0x01, 0x7a, 0xcc, 0xc0, 0x00, 0x00, 0x06, 0xff, 
+        0xff, 0x21, 0xc0, 0xfd, 0x31, 0xc1, 0xfd, 0x42, 0xa2, 0xff, 0x01, 0x75, 0xcc, 0xc0, 0x00, 0x00, 
+        0x06, 0xff, 0xff, 0x21, 0xbc, 0xfd, 0x31, 0xbc, 0xfd, 0x42, 0xa3, 0x00, 0x01, 0x71, 0xcc, 0xc0, 
+        0x00, 0x00, 0x06, 0xff, 0xff, 0x00, 0x00, 0x00, 0x91, 0xdc, 0xce, 0x6c, 0x88, 0x30, 0xa0, 0x34, 
+        0x40, 0xb0, 0x94, 0x40, 0xbb, 0x11, 0x80, 0xaa, 0x01, 0x20, 0x88, 0xd1, 0x9a, 0x88, 0xb0, 0xaa, 
+        0x20, 0xc0, 0x20, 0x00, 0xa2, 0x68, 0xf0, 0x91, 0xd9, 0xd6, 0xc0, 0x20, 0x00, 0x72, 0x28, 0xf1, 
+        0x90, 0x77, 0x20, 0xc0, 0x20, 0x00, 0x61, 0x59, 0xff, 0x60, 0x62, 0xa0, 0x58, 0x06, 0x72, 0x68, 
+        0xf1, 0x1b, 0x55, 0x59, 0x06, 0x0d, 0xf0, 0x00, 0xff, 0xff, 0xff, 0x3f, 0x6c, 0x84, 0x51, 0xca, 
+        0xce, 0x20, 0x44, 0xd1, 0x5a, 0x44, 0x51, 0xfc, 0xff, 0xc0, 0x20, 0x00, 0x32, 0x24, 0xf1, 0x50, 
+        0x33, 0x10, 0xc0, 0x20, 0x00, 0x32, 0x64, 0xf1, 0x0d, 0xf0, 0x00, 0x00, 0x7c, 0xf9, 0x81, 0xc0, 
+        0xe7, 0x72, 0x03, 0x03, 0x52, 0x03, 0x01, 0x62, 0x03, 0x00, 0x80, 0x55, 0x11, 0x60, 0x55, 0x20, 
+        0x62, 0x03, 0x02, 0x80, 0x77, 0x01, 0x00, 0x66, 0x11, 0x70, 0x66, 0x20, 0x71, 0x02, 0xf5, 0x60, 
+        0x55, 0x20, 0x61, 0xb9, 0xce, 0xbc, 0x32, 0xc0, 0x20, 0x00, 0x52, 0x66, 0x94, 0xb2, 0x03, 0x05, 
+        0xa2, 0x03, 0x04, 0x80, 0xbb, 0x11, 0xb0, 0xaa, 0x20, 0xc0, 0x20, 0x00, 0xa2, 0x66, 0x95, 0xc0, 
+        0x20, 0x00, 0x92, 0x66, 0x98, 0xc0, 0x20, 0x00, 0x72, 0x66, 0x99, 0xc0, 0x20, 0x00, 0x42, 0x26, 
+        0x99, 0x80, 0x44, 0x20, 0xc0, 0x20, 0x00, 0x42, 0x66, 0x99, 0x0d, 0xf0, 0xc0, 0x20, 0x00, 0x52, 
+        0x66, 0x92, 0x22, 0x03, 0x05, 0xb2, 0x03, 0x04, 0x80, 0x22, 0x11, 0x20, 0xbb, 0x20, 0xc0, 0x20, 
+        0x00, 0xb2, 0x66, 0x93, 0xc0, 0x20, 0x00, 0x92, 0x66, 0x96, 0xc0, 0x20, 0x00, 0x72, 0x66, 0x97, 
+        0xc0, 0x20, 0x00, 0xa2, 0x26, 0x97, 0x80, 0xaa, 0x20, 0xc0, 0x20, 0x00, 0xa2, 0x66, 0x97, 0x0d, 
+        0xf0, 0x00, 0x00, 0x00, 0x71, 0xd1, 0xff, 0x6c, 0x84, 0x31, 0x9b, 0xce, 0x20, 0x44, 0xd1, 0x3a, 
+        0x44, 0xc0, 0x20, 0x00, 0x82, 0x23, 0xb7, 0x70, 0x88, 0x10, 0xc0, 0x20, 0x00, 0x82, 0x64, 0xf1, 
+        0xc0, 0x20, 0x00, 0x62, 0x23, 0xb8, 0x70, 0x66, 0x10, 0xc0, 0x20, 0x00, 0x62, 0x64, 0xf2, 0xc0, 
+        0x20, 0x00, 0x52, 0x23, 0xb9, 0xc0, 0x20, 0x00, 0x52, 0x64, 0xf3, 0xc0, 0x20, 0x00, 0x32, 0x23, 
+        0xba, 0xc0, 0x20, 0x00, 0x32, 0x64, 0xf4, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x0c, 0x02, 0x31, 0x8a, 
+        0xce, 0xc0, 0x20, 0x00, 0x22, 0x63, 0x82, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x68, 0x83, 0xfe, 0x3f, 
+        0x12, 0xc1, 0xf0, 0x09, 0x01, 0xdc, 0x82, 0x01, 0x8a, 0xcd, 0x21, 0x83, 0xce, 0xfc, 0x13, 0xc0, 
+        0x20, 0x00, 0x32, 0x22, 0x8f, 0x00, 0x33, 0x10, 0xc0, 0x20, 0x00, 0x32, 0x62, 0x8f, 0x46, 0x06, 
+        0x00, 0x66, 0x12, 0x0a, 0x2d, 0x03, 0x31, 0xf5, 0xff, 0x85, 0x02, 0x00, 0xc6, 0x02, 0x00, 0x66, 
+        0x22, 0x08, 0x8c, 0x54, 0x2d, 0x03, 0x3d, 0x04, 0x85, 0x01, 0x00, 0x08, 0x01, 0x12, 0xc1, 0x10, 
+        0x0d, 0xf0, 0xc0, 0x20, 0x00, 0x42, 0x22, 0x91, 0x00, 0x44, 0x10, 0xc0, 0x20, 0x00, 0x42, 0x62, 
+        0x91, 0x86, 0xf9, 0xff, 0x7c, 0xfa, 0x81, 0x6e, 0xe7, 0x71, 0xb6, 0xf4, 0x51, 0x75, 0xcd, 0x61, 
+        0x6e, 0xce, 0x16, 0x12, 0x06, 0xc0, 0x20, 0x00, 0xb2, 0x26, 0x91, 0x50, 0xbb, 0x10, 0xc0, 0x20, 
+        0x00, 0xb2, 0x66, 0x91, 0xb2, 0x03, 0x03, 0x92, 0x03, 0x01, 0x42, 0x03, 0x00, 0x80, 0x99, 0x11, 
+        0x90, 0x44, 0x20, 0x92, 0x03, 0x02, 0x80, 0xbb, 0x01, 0x00, 0x99, 0x11, 0xb0, 0x99, 0x20, 0x90, 
+        0x44, 0x20, 0xc0, 0x20, 0x00, 0x42, 0x66, 0x8c, 0x22, 0x03, 0x05, 0xb2, 0x03, 0x04, 0x80, 0x22, 
+        0x11, 0x20, 0xbb, 0x20, 0xc0, 0x20, 0x00, 0xb2, 0x66, 0x8d, 0xc0, 0x20, 0x00, 0xa2, 0x66, 0x90, 
+        0xc0, 0x20, 0x00, 0x72, 0x66, 0x91, 0xc0, 0x20, 0x00, 0x92, 0x26, 0x91, 0x80, 0x99, 0x20, 0xc0, 
+        0x20, 0x00, 0x92, 0x66, 0x91, 0x0d, 0xf0, 0xc0, 0x20, 0x00, 0x42, 0x26, 0x8f, 0x50, 0x44, 0x10, 
+        0xc0, 0x20, 0x00, 0x42, 0x66, 0x8f, 0x42, 0x03, 0x03, 0x22, 0x03, 0x01, 0xb2, 0x03, 0x00, 0x80, 
+        0x22, 0x11, 0x20, 0xbb, 0x20, 0x22, 0x03, 0x02, 0x80, 0x44, 0x01, 0x00, 0x22, 0x11, 0x40, 0x22, 
+        0x20, 0x20, 0xbb, 0x20, 0xc0, 0x20, 0x00, 0xb2, 0x66, 0x8a, 0x92, 0x03, 0x05, 0x42, 0x03, 0x04, 
+        0x80, 0x99, 0x11, 0x90, 0x44, 0x20, 0xc0, 0x20, 0x00, 0x42, 0x66, 0x8b, 0xc0, 0x20, 0x00, 0xa2, 
+        0x66, 0x8e, 0xc0, 0x20, 0x00, 0x72, 0x66, 0x8f, 0xc0, 0x20, 0x00, 0x22, 0x26, 0x8f, 0x80, 0x22, 
+        0x20, 0xc0, 0x20, 0x00, 0x22, 0x66, 0x8f, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x41, 0x41, 0xcd, 0x51, 
+        0x3a, 0xce, 0x8c, 0xf2, 0xc0, 0x20, 0x00, 0x32, 0x25, 0x91, 0x40, 0x33, 0x10, 0xc0, 0x20, 0x00, 
+        0x32, 0x65, 0x91, 0x0d, 0xf0, 0xc0, 0x20, 0x00, 0x22, 0x25, 0x8f, 0x40, 0x22, 0x10, 0xc0, 0x20, 
+        0x00, 0x22, 0x65, 0x8f, 0x0d, 0xf0, 0x00, 0x00, 0x12, 0xc1, 0xf0, 0xc9, 0x11, 0x09, 0x01, 0xcd, 
+        0x02, 0x85, 0xd8, 0xff, 0x21, 0xb6, 0xfe, 0x20, 0x2c, 0xa0, 0x02, 0x22, 0x18, 0xc8, 0x11, 0x1b, 
+        0x00, 0x02, 0x62, 0x18, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x21, 0x27, 0xce, 0xc0, 
+        0x20, 0x00, 0x22, 0x22, 0xb0, 0x20, 0x20, 0xb4, 0x0d, 0xf0, 0x00, 0x00, 0x41, 0x42, 0xd1, 0x31, 
+        0x22, 0xce, 0xc0, 0x20, 0x00, 0x22, 0x23, 0xb0, 0x40, 0x22, 0x10, 0xc0, 0x20, 0x00, 0x22, 0x63, 
+        0xb0, 0x0d, 0xf0, 0x00, 0x7c, 0x08, 0x20, 0x70, 0x34, 0x51, 0x1b, 0xce, 0xc0, 0x20, 0x00, 0x62, 
+        0x25, 0xac, 0x80, 0x66, 0x10, 0x70, 0x66, 0x20, 0xc0, 0x20, 0x00, 0x62, 0x65, 0xac, 0x6c, 0xc4, 
+        0x20, 0x44, 0xd1, 0x71, 0x33, 0xd1, 0x5a, 0x44, 0xc0, 0x20, 0x00, 0x62, 0x24, 0xe9, 0x70, 0x66, 
+        0x10, 0xc0, 0x20, 0x00, 0x62, 0x64, 0xe9, 0x51, 0xa9, 0xda, 0xc0, 0x20, 0x00, 0x32, 0x24, 0xe9, 
+        0x50, 0x33, 0x20, 0xc0, 0x20, 0x00, 0x32, 0x64, 0xe9, 0x0d, 0xf0, 0x00, 0x6c, 0xc4, 0x51, 0x0a, 
+        0xce, 0x20, 0x44, 0xd1, 0x5a, 0x44, 0x51, 0x20, 0xd5, 0xc0, 0x20, 0x00, 0x32, 0x24, 0xe9, 0x50, 
+        0x33, 0x10, 0xc0, 0x20, 0x00, 0x32, 0x64, 0xe9, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xf2, 0x3f, 
+        0x20, 0x84, 0x34, 0x20, 0x72, 0x14, 0x80, 0x83, 0x41, 0x80, 0x77, 0x90, 0x81, 0xfc, 0xff, 0x70, 
+        0x70, 0x74, 0xe0, 0x77, 0x11, 0x8a, 0x77, 0x42, 0xd7, 0x0c, 0x0c, 0xf8, 0xc0, 0x20, 0x00, 0x72, 
+        0xd7, 0x0c, 0x42, 0x24, 0x26, 0x7c, 0xf9, 0x20, 0x64, 0x24, 0x1c, 0xc5, 0xe0, 0x66, 0x11, 0x60, 
+        0x55, 0xc0, 0x50, 0x50, 0x74, 0x00, 0x15, 0x40, 0x00, 0x88, 0xa1, 0x00, 0x15, 0x40, 0x90, 0x88, 
+        0x30, 0x80, 0x84, 0x10, 0x00, 0x63, 0xa1, 0x80, 0x66, 0x20, 0xc0, 0x20, 0x00, 0x62, 0x67, 0x26, 
+        0x00, 0x05, 0x40, 0x40, 0x20, 0x91, 0x20, 0x20, 0x34, 0x0d, 0xf0, 0x00, 0x12, 0xc1, 0xd0, 0x09, 
+        0x21, 0x49, 0x81, 0x29, 0x01, 0x29, 0x71, 0x39, 0x11, 0xc9, 0x31, 0xe9, 0x51, 0xd9, 0x41, 0xf9, 
+        0x61, 0xdd, 0x02, 0x0c, 0x0f, 0x16, 0xb2, 0x08, 0xe1, 0xe3, 0xcd, 0xcd, 0x0f, 0xc0, 0x20, 0x00, 
+        0xa2, 0x0d, 0x03, 0xb2, 0xa0, 0x80, 0xa0, 0xa0, 0x64, 0xb0, 0xaa, 0x20, 0xc0, 0x20, 0x00, 0xa2, 
+        0x4d, 0x03, 0xc0, 0x20, 0x00, 0x82, 0x0d, 0x03, 0x92, 0xa0, 0xbf, 0x90, 0x88, 0x10, 0xf0, 0x88, 
+        0x20, 0xc0, 0x20, 0x00, 0x82, 0x4d, 0x03, 0xc0, 0x20, 0x00, 0x62, 0x0d, 0x03, 0x72, 0xa0, 0xdf, 
+        0x70, 0x66, 0x10, 0xf0, 0x66, 0x20, 0xc0, 0x20, 0x00, 0x62, 0x4d, 0x03, 0xc0, 0x20, 0x00, 0x52, 
+        0x1d, 0x00, 0x50, 0x50, 0xb4, 0x40, 0x55, 0x11, 0xc0, 0x20, 0x00, 0x42, 0x1d, 0x01, 0x00, 0x44, 
+        0x11, 0xc0, 0x20, 0x00, 0x62, 0x1d, 0x00, 0x60, 0x44, 0x20, 0xe0, 0x44, 0x10, 0x50, 0x44, 0x20, 
+        0xc0, 0x20, 0x00, 0x42, 0x5d, 0x00, 0x40, 0x40, 0xf5, 0xc0, 0x20, 0x00, 0x42, 0x5d, 0x01, 0xd0, 
+        0x2d, 0x20, 0x85, 0x47, 0x00, 0xc2, 0xcc, 0x01, 0xd2, 0x2d, 0x02, 0xc0, 0xc0, 0xf4, 0x56, 0xbd, 
+        0xf7, 0x46, 0x00, 0x00, 0xcd, 0x0f, 0xd8, 0x81, 0xc7, 0x1d, 0x11, 0x21, 0x9a, 0xfc, 0x31, 0x9a, 
+        0xfc, 0x42, 0xa4, 0x1b, 0x01, 0x4f, 0xcb, 0xc0, 0x00, 0x00, 0x06, 0xff, 0xff, 0x22, 0x21, 0x00, 
+        0x32, 0xa0, 0x00, 0x85, 0xd1, 0xfb, 0x16, 0x42, 0x01, 0x08, 0x11, 0xe8, 0x01, 0x28, 0x01, 0x07, 
+        0x1e, 0x63, 0x48, 0x81, 0x38, 0x22, 0x39, 0x71, 0xf9, 0x22, 0x0b, 0x44, 0x49, 0x81, 0x22, 0x21, 
+        0x07, 0x32, 0xa0, 0x01, 0x20, 0xc2, 0x20, 0x45, 0xcf, 0xfb, 0x8c, 0xf2, 0x58, 0x11, 0x57, 0x1c, 
+        0x44, 0x78, 0x81, 0x68, 0x2c, 0x69, 0x71, 0xf9, 0x2c, 0x0b, 0x77, 0x79, 0x81, 0x01, 0x09, 0xcf, 
+        0xc0, 0x00, 0x00, 0x01, 0x86, 0xfc, 0x08, 0x00, 0x48, 0x71, 0x88, 0x10, 0x58, 0x20, 0xcc, 0xe8, 
+        0x28, 0x71, 0x29, 0x10, 0x31, 0x9a, 0xe7, 0xc0, 0x20, 0x00, 0x22, 0x63, 0x82, 0x46, 0x00, 0x00, 
+        0x49, 0x25, 0x78, 0x81, 0x62, 0x10, 0x00, 0x88, 0x11, 0x89, 0x20, 0x7a, 0x66, 0x62, 0x50, 0x00, 
+        0x01, 0xfe, 0xce, 0xc0, 0x00, 0x00, 0xc8, 0x31, 0xd8, 0x41, 0xe8, 0x51, 0xf8, 0x61, 0x08, 0x21, 
+        0x12, 0xc1, 0x30, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x12, 0xc1, 0xf0, 0x39, 0x01, 0x09, 0x11, 0xd9, 
+        0x31, 0xc9, 0x21, 0xdd, 0x04, 0xcd, 0x02, 0x16, 0x52, 0x08, 0x0c, 0x08, 0x92, 0xa0, 0xdf, 0xa2, 
+        0xa0, 0xbf, 0xb2, 0xa0, 0x80, 0x61, 0x8f, 0xcd, 0x0c, 0x00, 0xc0, 0x20, 0x00, 0x32, 0x02, 0x03, 
+        0x30, 0x30, 0x64, 0xb0, 0x33, 0x20, 0xc0, 0x20, 0x00, 0x32, 0x42, 0x03, 0xc0, 0x20, 0x00, 0x72, 
+        0x02, 0x03, 0xa0, 0x77, 0x10, 0x80, 0x77, 0x20, 0xc0, 0x20, 0x00, 0x72, 0x42, 0x03, 0xc0, 0x20, 
+        0x00, 0x52, 0x02, 0x03, 0x90, 0x55, 0x10, 0x80, 0x55, 0x20, 0xc0, 0x20, 0x00, 0x52, 0x42, 0x03, 
+        0xc0, 0x20, 0x00, 0x42, 0x12, 0x00, 0x40, 0x40, 0xb4, 0x40, 0x44, 0x11, 0xc0, 0x20, 0x00, 0x32, 
+        0x12, 0x01, 0x00, 0x33, 0x11, 0xc0, 0x20, 0x00, 0x52, 0x12, 0x00, 0x50, 0x33, 0x20, 0x60, 0x33, 
+        0x10, 0x40, 0x33, 0x20, 0xc0, 0x20, 0x00, 0x32, 0x52, 0x00, 0x30, 0x30, 0xf5, 0xc0, 0x20, 0x00, 
+        0x1b, 0x00, 0x32, 0x52, 0x01, 0x28, 0x22, 0x00, 0x00, 0xf4, 0x56, 0xc2, 0xf8, 0x46, 0x00, 0x00, 
+        0x0c, 0x00, 0x07, 0x1d, 0x11, 0x21, 0x4b, 0xfc, 0x31, 0x4c, 0xfc, 0x42, 0xa4, 0x51, 0x01, 0x00, 
+        0xcb, 0xc0, 0x00, 0x00, 0x06, 0xff, 0xff, 0x01, 0xcb, 0xce, 0xc0, 0x00, 0x00, 0x01, 0x47, 0xfc, 
+        0x08, 0x00, 0x48, 0x30, 0x38, 0x40, 0xcc, 0xc4, 0xc9, 0x30, 0x21, 0x5c, 0xe7, 0xc0, 0x20, 0x00, 
+        0xc2, 0x62, 0x83, 0x46, 0x00, 0x00, 0xc9, 0x23, 0x42, 0x00, 0x02, 0x58, 0x01, 0x59, 0x40, 0xda, 
+        0x44, 0x42, 0x40, 0x02, 0x01, 0xc1, 0xce, 0xc0, 0x00, 0x00, 0xc8, 0x21, 0xd8, 0x31, 0x08, 0x11, 
+        0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x12, 0xf2, 0x3f, 0x00, 0x06, 0xf2, 0x3f, 
+        0x08, 0x14, 0xf2, 0x3f, 0x12, 0xc1, 0xf0, 0x09, 0x01, 0xb2, 0x05, 0x05, 0xa2, 0x05, 0x04, 0x80, 
+        0xbb, 0x11, 0xba, 0xaa, 0x66, 0x52, 0x06, 0x0c, 0x19, 0x0c, 0x12, 0x46, 0x00, 0x00, 0x0c, 0x09, 
+        0x79, 0x21, 0x81, 0xf5, 0xff, 0x72, 0x05, 0x01, 0xb2, 0x05, 0x00, 0x80, 0x77, 0x11, 0x7a, 0xbb, 
+        0x72, 0x05, 0x03, 0x52, 0x05, 0x02, 0x80, 0x77, 0x01, 0x00, 0x55, 0x11, 0x7a, 0x55, 0x5a, 0xbb, 
+        0x60, 0x56, 0xa0, 0xd0, 0x55, 0x11, 0x8a, 0x85, 0x26, 0x12, 0x09, 0x0c, 0x60, 0xa6, 0x66, 0x06, 
+        0x0c, 0x20, 0x46, 0x00, 0x00, 0x0c, 0x70, 0xc0, 0x20, 0x00, 0x20, 0x74, 0x01, 0x00, 0x00, 0x24, 
+        0xb2, 0x68, 0x80, 0x90, 0x90, 0x14, 0xa0, 0xb0, 0xf4, 0x00, 0x99, 0x11, 0xba, 0x99, 0xb0, 0x00, 
+        0x01, 0x20, 0xb0, 0x24, 0xe0, 0xbb, 0x01, 0x0a, 0xbb, 0xba, 0x99, 0x30, 0xb0, 0x04, 0x80, 0xbb, 
+        0x01, 0xba, 0x77, 0x9a, 0x77, 0xc0, 0x20, 0x00, 0x72, 0x68, 0x81, 0x00, 0x16, 0x40, 0x0c, 0x10, 
+        0x00, 0x00, 0xa1, 0xc0, 0x20, 0x00, 0x81, 0xd9, 0xff, 0x72, 0x28, 0x83, 0x00, 0x77, 0x20, 0xc0, 
+        0x20, 0x00, 0x72, 0x68, 0x83, 0x98, 0x11, 0x78, 0x21, 0xf6, 0x23, 0x11, 0xa6, 0x26, 0x0e, 0x91, 
+        0x0b, 0xfc, 0x98, 0x09, 0x90, 0x93, 0xa0, 0x88, 0x69, 0x80, 0x80, 0x20, 0x89, 0x69, 0x3d, 0x07, 
+        0x21, 0xd0, 0xff, 0x48, 0x41, 0x2a, 0x25, 0x01, 0xf5, 0xcd, 0xc0, 0x00, 0x00, 0x08, 0x01, 0x12, 
+        0xc1, 0x10, 0x0d, 0xf0, 0xff, 0xff, 0x1f, 0xff, 0x71, 0xc9, 0xff, 0x00, 0x12, 0x40, 0x0c, 0x18, 
+        0x7c, 0xf9, 0x00, 0x88, 0xa1, 0x90, 0x88, 0x30, 0xc0, 0x20, 0x00, 0x62, 0x27, 0x83, 0x80, 0x66, 
+        0x10, 0xc0, 0x20, 0x00, 0x62, 0x67, 0x83, 0x51, 0xc0, 0xff, 0x20, 0x42, 0xa0, 0x50, 0x44, 0xb0, 
+        0x51, 0xf5, 0xff, 0xc0, 0x20, 0x00, 0x32, 0x24, 0x81, 0x50, 0x33, 0x10, 0xc0, 0x20, 0x00, 0x32, 
+        0x64, 0x81, 0x0d, 0xf0, 0x03, 0x03, 0x03, 0x00, 0x61, 0xff, 0xff, 0x71, 0x78, 0xd6, 0x51, 0xb7, 
+        0xff, 0xdc, 0x72, 0xc0, 0x20, 0x00, 0x62, 0x65, 0x80, 0xec, 0x63, 0xc0, 0x20, 0x00, 0x22, 0x25, 
+        0x80, 0x70, 0x22, 0x20, 0xc0, 0x20, 0x00, 0x22, 0x65, 0x80, 0x0d, 0xf0, 0xc0, 0x20, 0x00, 0x62, 
+        0x65, 0x81, 0xcc, 0xd3, 0xc0, 0x20, 0x00, 0x32, 0x25, 0x81, 0x70, 0x33, 0x20, 0xc0, 0x20, 0x00, 
+        0x32, 0x65, 0x81, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x12, 0xc1, 0xe0, 0x09, 0x41, 0x71, 0x7b, 0xfe, 
+        0x21, 0x05, 0xde, 0x31, 0xa6, 0xff, 0xc0, 0x20, 0x00, 0x22, 0x63, 0x80, 0xc0, 0x20, 0x00, 0x0c, 
+        0x04, 0x5d, 0x07, 0x0c, 0x06, 0x22, 0x63, 0x81, 0x0c, 0x60, 0x0c, 0x32, 0x0c, 0x03, 0x09, 0x01, 
+        0x05, 0xe8, 0xff, 0x0c, 0x32, 0x0c, 0x13, 0x0c, 0x16, 0x71, 0x70, 0xfe, 0x0c, 0x64, 0x49, 0x01, 
+        0x5d, 0x07, 0x0c, 0x04, 0xc5, 0xe6, 0xff, 0x0c, 0x05, 0xc0, 0x20, 0x00, 0x61, 0x98, 0xff, 0x08, 
+        0x41, 0x12, 0xc1, 0x20, 0x52, 0x66, 0x82, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x61, 0xcc, 0xfb, 0x41, 
+        0x93, 0xff, 0x68, 0x06, 0x51, 0xf0, 0xdd, 0x60, 0x62, 0xa0, 0x68, 0x66, 0xcc, 0x72, 0xc0, 0x20, 
+        0x00, 0x52, 0x64, 0x80, 0x46, 0x01, 0x00, 0xc0, 0x20, 0x00, 0x52, 0x64, 0x81, 0x7c, 0xf8, 0x80, 
+        0x86, 0x30, 0xc0, 0x20, 0x00, 0x72, 0x24, 0x83, 0x80, 0x77, 0x10, 0xc0, 0x20, 0x00, 0x72, 0x64, 
+        0x83, 0x0d, 0xf0, 0x00, 0x05, 0x00, 0x00, 0xc0, 0xb2, 0x03, 0x03, 0xa2, 0x03, 0x01, 0x6c, 0x88, 
+        0x91, 0xd3, 0xe6, 0x20, 0x88, 0xd1, 0x9a, 0x88, 0x92, 0x03, 0x00, 0x80, 0xaa, 0x11, 0xa0, 0x99, 
+        0x20, 0xa2, 0x03, 0x02, 0x80, 0xbb, 0x01, 0x00, 0xaa, 0x11, 0xb0, 0xaa, 0x20, 0xa0, 0x99, 0x20, 
+        0xc0, 0x20, 0x00, 0x92, 0x68, 0xd5, 0x72, 0x03, 0x05, 0xb2, 0x03, 0x04, 0x80, 0x77, 0x11, 0x70, 
+        0xbb, 0x20, 0xc0, 0x20, 0x00, 0xb2, 0x68, 0xd4, 0x60, 0xa0, 0x64, 0x50, 0x90, 0xb4, 0x30, 0xaa, 
+        0x11, 0xa0, 0x99, 0x20, 0xc0, 0x20, 0x00, 0x40, 0x70, 0x34, 0x92, 0x68, 0xd6, 0x91, 0xe9, 0xff, 
+        0x40, 0x77, 0x11, 0x90, 0x77, 0x20, 0xc0, 0x20, 0x00, 0x72, 0x68, 0xd3, 0x0d, 0xf0, 0x00, 0x00, 
+        0x4c, 0x01, 0xf2, 0x3f, 0x0c, 0x03, 0x6c, 0x84, 0x51, 0xfe, 0xff, 0x20, 0x44, 0xd1, 0x5a, 0x44, 
+        0xc0, 0x20, 0x00, 0x39, 0x04, 0x0d, 0xf0, 0x00, 0x61, 0xb5, 0xe6, 0xc0, 0x20, 0x00, 0x92, 0x26, 
+        0xdd, 0x90, 0x9c, 0x34, 0x92, 0x42, 0x00, 0xc0, 0x20, 0x00, 0x82, 0x26, 0xdd, 0x80, 0x80, 0xb4, 
+        0x82, 0x53, 0x00, 0xc0, 0x20, 0x00, 0x72, 0x26, 0xda, 0x79, 0x04, 0xc0, 0x20, 0x00, 0x62, 0x26, 
+        0xd9, 0x69, 0x05, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x41, 0xd2, 0xcf, 0x31, 0xa8, 0xe6, 0xc0, 0x20, 
+        0x00, 0x22, 0x23, 0x81, 0x40, 0x22, 0x10, 0xc0, 0x20, 0x00, 0x22, 0x63, 0x81, 0x0d, 0xf0, 0x00, 
+        0x41, 0x17, 0xd6, 0x31, 0xa2, 0xe6, 0xc0, 0x20, 0x00, 0x22, 0x23, 0x81, 0x40, 0x22, 0x20, 0xc0, 
+        0x20, 0x00, 0x22, 0x63, 0x81, 0x0d, 0xf0, 0x00, 0xef, 0xbe, 0xad, 0xde, 0x68, 0x12, 0x31, 0xfe, 
+        0xff, 0x39, 0x06, 0xc0, 0x20, 0x00, 0x52, 0x12, 0x00, 0x48, 0x12, 0x50, 0x50, 0xb4, 0x5a, 0x44, 
+        0x39, 0x04, 0x0d, 0xf0, 0x12, 0xc1, 0xf0, 0x09, 0x01, 0xc0, 0x20, 0x00, 0x48, 0x22, 0x32, 0x12, 
+        0x00, 0x08, 0x12, 0x30, 0x30, 0xb4, 0x3a, 0x00, 0x31, 0xf4, 0xff, 0x08, 0x00, 0x48, 0x14, 0x37, 
+        0x10, 0x11, 0x21, 0x74, 0xfb, 0x31, 0x74, 0xfb, 0x42, 0xa5, 0x16, 0x01, 0x29, 0xca, 0xc0, 0x00, 
+        0x00, 0x06, 0xff, 0xff, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x12, 0xc1, 0xf0, 0xc9, 
+        0x11, 0x09, 0x01, 0x08, 0x72, 0xd9, 0x21, 0x02, 0x10, 0x00, 0xdd, 0x02, 0x00, 0x00, 0xb4, 0x47, 
+        0x60, 0x16, 0xc8, 0x02, 0x28, 0x12, 0x38, 0x2c, 0x37, 0x12, 0x0d, 0x2d, 0x0c, 0x45, 0xfa, 0xff, 
+        0xc8, 0x2c, 0x48, 0x1d, 0x58, 0x2c, 0x57, 0x94, 0xf1, 0xc8, 0x11, 0xd8, 0x21, 0x08, 0x01, 0x12, 
+        0xc1, 0x10, 0x0d, 0xf0, 0x92, 0xa2, 0x83, 0x72, 0xa0, 0x83, 0x81, 0xb5, 0xda, 0x62, 0xc2, 0x3c, 
+        0x0c, 0xe3, 0x52, 0xc2, 0x78, 0x12, 0xc1, 0xd0, 0xd9, 0x31, 0x09, 0x11, 0xc9, 0x21, 0xf9, 0x51, 
+        0xe9, 0x41, 0x59, 0x61, 0xe1, 0xb3, 0xda, 0x0c, 0x0f, 0xcd, 0x02, 0x02, 0xa0, 0x9c, 0xdd, 0x02, 
+        0x39, 0xcd, 0x0a, 0x0d, 0x32, 0xa0, 0x83, 0x22, 0xa0, 0xa8, 0x2a, 0x2d, 0x29, 0x01, 0x79, 0xdc, 
+        0xd7, 0x1c, 0x23, 0x67, 0x1c, 0x09, 0xa8, 0x61, 0xa7, 0x1c, 0x04, 0x99, 0xdc, 0x32, 0xa2, 0x83, 
+        0xd7, 0x1c, 0x13, 0x67, 0x1c, 0x10, 0xb8, 0x61, 0x28, 0x01, 0xb7, 0x1c, 0x09, 0x27, 0x1c, 0x06, 
+        0x7c, 0xd4, 0x40, 0x33, 0x10, 0x39, 0xdc, 0x69, 0x71, 0x52, 0x0c, 0x3a, 0x09, 0x81, 0xc7, 0x30, 
+        0x08, 0xe2, 0x5c, 0x1c, 0x07, 0x9c, 0x02, 0x82, 0x5c, 0x1c, 0xdc, 0x45, 0x22, 0x1c, 0x1c, 0x45, 
+        0x08, 0x00, 0x08, 0x81, 0x68, 0x71, 0x72, 0xa0, 0x83, 0x81, 0x95, 0xda, 0x92, 0xa2, 0x83, 0x22, 
+        0x4c, 0x3a, 0x5b, 0xee, 0x32, 0xa0, 0x83, 0xa2, 0x0c, 0x3b, 0x1b, 0xff, 0xcc, 0xda, 0xb2, 0x0c, 
+        0x3d, 0x80, 0xbb, 0x01, 0xb0, 0xb8, 0x31, 0xf0, 0xbb, 0x11, 0xb2, 0x4c, 0x3b, 0x28, 0xcd, 0xcb, 
+        0xcc, 0x27, 0x2f, 0x89, 0xc8, 0x21, 0xd8, 0x31, 0xe8, 0x41, 0xf8, 0x51, 0x08, 0x11, 0x12, 0xc1, 
+        0x30, 0x0d, 0xf0, 0x00, 0x12, 0xc1, 0xf0, 0xc9, 0x11, 0x09, 0x01, 0xcd, 0x02, 0x0c, 0x00, 0x09, 
+        0x12, 0x02, 0x42, 0x28, 0xc5, 0xf2, 0xff, 0x2d, 0x0c, 0x85, 0xe7, 0x01, 0x2d, 0x0c, 0x85, 0x61, 
+        0x00, 0x21, 0xa2, 0xca, 0xc5, 0xc0, 0x00, 0x2d, 0x0c, 0x45, 0x65, 0x00, 0xc8, 0x11, 0x08, 0x01, 
+        0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0xb3, 0x09, 0x00, 0x00, 0x99, 0xf6, 0xff, 0xff, 
+        0x30, 0xf6, 0xff, 0xff, 0x61, 0xfd, 0xff, 0x71, 0xfd, 0xff, 0x12, 0xc1, 0xf0, 0x02, 0x61, 0x00, 
+        0x01, 0x74, 0xda, 0x77, 0x63, 0x11, 0x07, 0x12, 0x3c, 0x27, 0x36, 0x27, 0x70, 0x22, 0x80, 0x32, 
+        0xa0, 0x05, 0x45, 0xe3, 0x01, 0x06, 0x05, 0x00, 0x07, 0x12, 0x2a, 0x27, 0x36, 0x0c, 0x7a, 0x22, 
+        0x0c, 0x53, 0x45, 0xe2, 0x01, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xf2, 0x08, 0x01, 0x12, 
+        0xc1, 0x10, 0x0d, 0xf0, 0x01, 0xef, 0xff, 0x32, 0xa0, 0x14, 0x00, 0x22, 0x80, 0xc5, 0xeb, 0x01, 
+        0x22, 0xc2, 0x0f, 0x86, 0xf9, 0xff, 0x0c, 0xe2, 0x46, 0xf8, 0xff, 0x00, 0xcc, 0x22, 0x0c, 0x02, 
+        0x0d, 0xf0, 0x51, 0x74, 0xf2, 0x57, 0x12, 0x04, 0x22, 0x02, 0x06, 0x0d, 0xf0, 0x2d, 0x05, 0x0d, 
+        0xf0, 0x00, 0x00, 0x00, 0x67, 0x09, 0x00, 0x00, 0xa4, 0x08, 0x00, 0x00, 0x88, 0x13, 0x00, 0x00, 
+        0x0c, 0xe7, 0x0c, 0xd8, 0x61, 0xfc, 0xff, 0x91, 0xfc, 0xff, 0x77, 0x63, 0x0d, 0x77, 0x12, 0x1f, 
+        0x27, 0xb8, 0x15, 0x20, 0x22, 0xa0, 0x90, 0x22, 0xa0, 0x0d, 0xf0, 0x77, 0x12, 0x11, 0x27, 0xb8, 
+        0x07, 0x1c, 0xa3, 0x27, 0xb3, 0xec, 0x61, 0xf5, 0xff, 0x20, 0x22, 0xa0, 0x6a, 0x22, 0x0d, 0xf0, 
+        0x21, 0x4c, 0xda, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x68, 0xc2, 0xa6, 0x16, 0x1a, 0x60, 0x76, 0x90, 
+        0x20, 0x77, 0xa0, 0x82, 0x12, 0x1c, 0x98, 0xd2, 0x87, 0x93, 0x07, 0x47, 0x09, 0x04, 0x22, 0xc2, 
+        0x34, 0x0d, 0xf0, 0xcb, 0x22, 0x77, 0x92, 0xea, 0x0c, 0x02, 0x0d, 0xf0, 0x68, 0xc2, 0xa6, 0x16, 
+        0x1a, 0x60, 0x76, 0x90, 0x20, 0x77, 0xa0, 0x82, 0x02, 0x3a, 0x98, 0xd2, 0x87, 0x93, 0x07, 0x47, 
+        0x09, 0x04, 0x22, 0xc2, 0x34, 0x0d, 0xf0, 0xcb, 0x22, 0x77, 0x92, 0xea, 0x0c, 0x02, 0x0d, 0xf0, 
+        0x12, 0xc1, 0xf0, 0x52, 0x61, 0x01, 0x02, 0x61, 0x02, 0xc9, 0x31, 0x49, 0x01, 0xcd, 0x02, 0x21, 
+        0x57, 0xca, 0xc0, 0x4c, 0x11, 0x4a, 0x22, 0x9b, 0x22, 0x0c, 0x64, 0x01, 0xcc, 0xcc, 0xc0, 0x00, 
+        0x00, 0x2d, 0x0c, 0x38, 0x01, 0x48, 0x11, 0x45, 0x08, 0x00, 0x00, 0x1c, 0x40, 0x51, 0x4f, 0xca, 
+        0x0c, 0x13, 0x22, 0x05, 0x28, 0x00, 0x33, 0xa1, 0x30, 0x22, 0x20, 0x20, 0x20, 0x74, 0x22, 0x45, 
+        0x28, 0x45, 0x85, 0x01, 0x20, 0x20, 0x74, 0xc8, 0x31, 0x08, 0x21, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 
+        0x31, 0x47, 0xca, 0x32, 0x03, 0x28, 0x00, 0x02, 0x40, 0x30, 0x20, 0x91, 0x20, 0x20, 0x04, 0x0d, 
+        0xf0, 0x00, 0x00, 0x00, 0x12, 0xc1, 0xf0, 0x02, 0x61, 0x00, 0x01, 0x40, 0xca, 0x42, 0xa0, 0x01, 
+        0x02, 0x00, 0x28, 0x00, 0x02, 0x40, 0x00, 0x30, 0x91, 0x07, 0x63, 0x1d, 0x00, 0x12, 0x40, 0x00, 
+        0x34, 0xa1, 0x42, 0xaf, 0xff, 0x40, 0x33, 0x30, 0x41, 0x39, 0xca, 0x30, 0x30, 0x10, 0x32, 0x44, 
+        0x28, 0x45, 0x9d, 0xfe, 0x01, 0x36, 0xca, 0x02, 0x00, 0x28, 0x00, 0x20, 0x20, 0x85, 0x7f, 0x01, 
+        0x20, 0x20, 0x74, 0x02, 0x21, 0x00, 0x12, 0xc1, 0x10, 0x80, 0x00, 0x00, 0x51, 0x30, 0xca, 0xc0, 
+        0x62, 0x11, 0x6a, 0x55, 0x39, 0x45, 0x42, 0x45, 0x14, 0x0d, 0xf0, 0x00, 0x41, 0x2c, 0xca, 0xc0, 
+        0x52, 0x11, 0x5a, 0x44, 0x38, 0x44, 0x0c, 0x02, 0x26, 0x13, 0x07, 0x72, 0x04, 0x14, 0x0c, 0x16, 
+        0x70, 0x26, 0x83, 0x20, 0x20, 0x74, 0x0d, 0xf0, 0x31, 0x25, 0xca, 0xc0, 0x22, 0x11, 0x2a, 0x23, 
+        0x22, 0x02, 0x15, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x31, 0x21, 0xca, 0xc0, 0x22, 0x11, 0x2a, 0x23, 
+        0x22, 0x02, 0x16, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x41, 0x1d, 0xca, 0xc0, 0x52, 0x11, 0x5a, 0x44, 
+        0x32, 0x44, 0x15, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x41, 0x19, 0xca, 0xc0, 0x52, 0x11, 0x5a, 0x44, 
+        0x32, 0x44, 0x16, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x31, 0x15, 0xca, 0xc0, 0x22, 0x11, 0x2a, 0x23, 
+        0x22, 0x02, 0x14, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x2c, 0x8e, 0xfe, 0x3f, 0xc0, 0x87, 0xfe, 0x3f, 
+        0x12, 0xc1, 0xf0, 0x09, 0x01, 0x58, 0x02, 0x02, 0xa0, 0xc0, 0x07, 0x45, 0x14, 0x32, 0xa4, 0x80, 
+        0x37, 0x45, 0x0e, 0x42, 0xa0, 0xa0, 0x47, 0xc5, 0x0d, 0x0c, 0x12, 0x08, 0x01, 0x12, 0xc1, 0x10, 
+        0x0d, 0xf0, 0x0c, 0x22, 0xc6, 0xfc, 0xff, 0x42, 0x12, 0x02, 0x31, 0xf4, 0xff, 0x21, 0xf2, 0xff, 
+        0x01, 0x40, 0xc9, 0xc0, 0x00, 0x00, 0xc6, 0xf7, 0xff, 0x00, 0x00, 0x00, 0x12, 0xc1, 0xf0, 0x09, 
+        0x11, 0xc9, 0x21, 0x29, 0x01, 0xcd, 0x03, 0x4a, 0x23, 0x0c, 0x43, 0x01, 0x10, 0xef, 0xc0, 0x00, 
+        0x00, 0x4d, 0x02, 0x02, 0xa1, 0x00, 0x27, 0xb0, 0x04, 0x0c, 0x02, 0x06, 0x07, 0x00, 0x32, 0xa0, 
+        0x04, 0x22, 0xa0, 0x41, 0x27, 0xb4, 0x02, 0x32, 0xa0, 0x05, 0x0c, 0x02, 0xc5, 0x6c, 0xf7, 0x8c, 
+        0x82, 0x38, 0x02, 0x38, 0x13, 0x48, 0x01, 0x3a, 0x3c, 0x39, 0x04, 0xc8, 0x21, 0x08, 0x11, 0x12, 
+        0xc1, 0x10, 0x0d, 0xf0, 0x12, 0xc1, 0xd0, 0xc9, 0x41, 0x59, 0x11, 0x09, 0x31, 0xf9, 0x71, 0xd9, 
+        0x51, 0xe9, 0x61, 0xdd, 0x07, 0xed, 0x02, 0xf8, 0xc1, 0x2d, 0x03, 0x29, 0x21, 0x08, 0x02, 0x3d, 
+        0x06, 0x39, 0x01, 0x68, 0x72, 0x0c, 0xc3, 0x68, 0x06, 0x30, 0x34, 0x10, 0x87, 0x76, 0x06, 0xc8, 
+        0x10, 0x4b, 0xcc, 0x46, 0x00, 0x00, 0xc8, 0x10, 0x0c, 0x10, 0x42, 0x4c, 0x00, 0x4b, 0x2c, 0x52, 
+        0xcc, 0x10, 0xab, 0x6c, 0x69, 0x81, 0x59, 0x91, 0x66, 0x83, 0x27, 0x3d, 0x0f, 0x0c, 0x64, 0x02, 
+        0x4c, 0x01, 0x01, 0x52, 0xcc, 0xc0, 0x00, 0x00, 0x28, 0x81, 0x38, 0x01, 0x0c, 0x64, 0x01, 0x4f, 
+        0xcc, 0xc0, 0x00, 0x00, 0x28, 0x91, 0x3d, 0x0d, 0x0c, 0x64, 0x01, 0x4c, 0xcc, 0xc0, 0x00, 0x00, 
+        0x86, 0x09, 0x00, 0x0c, 0x04, 0x3d, 0x0d, 0x42, 0x4c, 0x01, 0x0c, 0x64, 0x01, 0x48, 0xcc, 0xc0, 
+        0x00, 0x00, 0x28, 0x81, 0x38, 0x01, 0x0c, 0x64, 0x01, 0x45, 0xcc, 0xc0, 0x00, 0x00, 0x3d, 0x0f, 
+        0x28, 0x91, 0x0c, 0x64, 0x01, 0x42, 0xcc, 0xc0, 0x00, 0x00, 0x0c, 0x05, 0x52, 0x5c, 0x01, 0x9c, 
+        0x1e, 0x88, 0x11, 0xe0, 0x88, 0x90, 0x62, 0x18, 0x03, 0x1b, 0x76, 0x72, 0x58, 0x03, 0xc0, 0x66, 
+        0x11, 0x62, 0x5c, 0x0b, 0x92, 0x0d, 0x00, 0x08, 0x31, 0x07, 0x69, 0x2a, 0xb8, 0x21, 0xb8, 0x7b, 
+        0xd2, 0xa4, 0x00, 0xe8, 0x0b, 0x0c, 0x2f, 0xe0, 0xc0, 0x54, 0xe0, 0xe6, 0x41, 0xf0, 0xee, 0x20, 
+        0xa0, 0xee, 0x11, 0xe0, 0xcc, 0x20, 0xc0, 0xa0, 0x54, 0xc0, 0xc6, 0x41, 0xd0, 0xcc, 0x20, 0xa0, 
+        0xcc, 0x11, 0xc0, 0xaa, 0x20, 0xa9, 0x0b, 0xc8, 0x41, 0xd8, 0x51, 0xe8, 0x61, 0xf8, 0x71, 0x12, 
+        0xc1, 0x30, 0x0d, 0xf0, 0x60, 0x8e, 0xfe, 0x3f, 0x12, 0xc1, 0xf0, 0x48, 0x72, 0x09, 0x01, 0x38, 
+        0x04, 0x08, 0x02, 0x87, 0x73, 0x06, 0x08, 0x10, 0x4b, 0x00, 0x46, 0x00, 0x00, 0x08, 0x10, 0x42, 
+        0x04, 0x0f, 0x21, 0xf8, 0xff, 0x32, 0x10, 0x00, 0x01, 0xe6, 0xc8, 0xc0, 0x00, 0x00, 0x08, 0x01, 
+        0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x12, 0xc1, 0xf0, 0xd9, 0x21, 0xc9, 0x11, 0x09, 
+        0x01, 0xcd, 0x02, 0x0c, 0x10, 0x02, 0x42, 0x00, 0x02, 0x03, 0x00, 0x0c, 0x8d, 0x07, 0x2d, 0x01, 
+        0xdd, 0x00, 0xd2, 0x4c, 0x01, 0x1b, 0x33, 0x2b, 0x2c, 0x4d, 0x0d, 0x01, 0x14, 0xcc, 0xc0, 0x00, 
+        0x00, 0xca, 0x2d, 0x08, 0x01, 0xc8, 0x11, 0xd8, 0x21, 0x2b, 0x22, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 
+        0x12, 0xc1, 0xf0, 0xc9, 0x21, 0x09, 0x11, 0xcd, 0x02, 0x02, 0x03, 0x00, 0x0c, 0x82, 0x07, 0xb2, 
+        0x1c, 0x9b, 0x33, 0x2b, 0x2c, 0x3c, 0x25, 0x42, 0xc0, 0xf8, 0x49, 0x01, 0x52, 0x4c, 0x00, 0x42, 
+        0x4c, 0x01, 0x01, 0x06, 0xcc, 0xc0, 0x00, 0x00, 0x08, 0x01, 0xca, 0xc0, 0x2b, 0xcc, 0x2d, 0x0c, 
+        0x08, 0x11, 0xc8, 0x21, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x12, 0xc1, 0xf0, 0x42, 
+        0x42, 0x01, 0x09, 0x01, 0xd9, 0x21, 0xc9, 0x11, 0xdd, 0x02, 0xcd, 0x04, 0x0c, 0x00, 0x02, 0x42, 
+        0x00, 0x8c, 0x64, 0x2b, 0x22, 0x01, 0xf9, 0xcb, 0xc0, 0x00, 0x00, 0xca, 0x2d, 0x08, 0x01, 0xc8, 
+        0x11, 0xd8, 0x21, 0x2b, 0x22, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0x78, 0x8e, 0xfe, 0x3f, 
+        0x12, 0xc1, 0xc0, 0xc9, 0xd1, 0x39, 0x81, 0x59, 0x61, 0x69, 0x51, 0x09, 0xc1, 0x01, 0x77, 0xc9, 
+        0x79, 0x91, 0x22, 0x20, 0x38, 0x49, 0x71, 0xcc, 0x32, 0x3c, 0x54, 0x46, 0x01, 0x00, 0x42, 0x12, 
+        0x00, 0x42, 0xc4, 0x35, 0x22, 0xc1, 0x10, 0x32, 0xa0, 0x18, 0x05, 0xdc, 0xff, 0x20, 0xc2, 0x20, 
+        0x56, 0xd2, 0x01, 0x21, 0x6e, 0xc9, 0x22, 0x22, 0x38, 0x0c, 0x03, 0xcc, 0x12, 0x86, 0x00, 0x00, 
+        0x32, 0x12, 0x00, 0x21, 0xee, 0xff, 0x01, 0xa6, 0xc8, 0xc0, 0x00, 0x00, 0x0c, 0x12, 0x86, 0x45, 
+        0x00, 0x38, 0x51, 0x48, 0x91, 0x28, 0x41, 0x45, 0xf7, 0xff, 0x0d, 0x02, 0x29, 0xa1, 0x31, 0x63, 
+        0xc9, 0x29, 0x41, 0x32, 0x23, 0x38, 0x39, 0xb1, 0x9c, 0x83, 0x48, 0xb1, 0x28, 0xa1, 0x2b, 0x34, 
+        0x42, 0x14, 0x00, 0x01, 0xd6, 0xcb, 0xc0, 0x00, 0x00, 0x08, 0xb1, 0x28, 0xa1, 0x02, 0x10, 0x00, 
+        0x2a, 0x00, 0x09, 0x41, 0x52, 0x2c, 0x00, 0x62, 0x25, 0x01, 0x60, 0x60, 0xc0, 0x62, 0x5c, 0x08, 
+        0x02, 0xa0, 0x80, 0xc0, 0x20, 0x00, 0xb2, 0x05, 0x03, 0xb0, 0xb0, 0x64, 0x00, 0xbb, 0x20, 0xc0, 
+        0x20, 0x00, 0xb2, 0x45, 0x03, 0xa2, 0xa0, 0xbf, 0x42, 0xa0, 0x40, 0xc0, 0x20, 0x00, 0x92, 0x05, 
+        0x03, 0xa0, 0x99, 0x10, 0x40, 0x99, 0x20, 0xc0, 0x20, 0x00, 0x92, 0x45, 0x03, 0x82, 0xa0, 0xdf, 
+        0xc0, 0x20, 0x00, 0x72, 0x05, 0x03, 0x80, 0x77, 0x10, 0xc0, 0x20, 0x00, 0x72, 0x45, 0x03, 0x60, 
+        0x60, 0xb4, 0x40, 0x66, 0x11, 0x71, 0xef, 0xca, 0xc0, 0x20, 0x00, 0x32, 0x15, 0x01, 0x00, 0x33, 
+        0x11, 0xc0, 0x20, 0x00, 0x82, 0x15, 0x00, 0x80, 0x33, 0x20, 0x70, 0x33, 0x10, 0x60, 0x33, 0x20, 
+        0xc0, 0x20, 0x00, 0x32, 0x55, 0x00, 0x30, 0x30, 0xf5, 0xc0, 0x20, 0x00, 0x68, 0x81, 0x78, 0x71, 
+        0x32, 0x55, 0x01, 0x28, 0x61, 0x3d, 0x0c, 0x1c, 0x05, 0x29, 0x01, 0x0c, 0x02, 0x45, 0xd2, 0xff, 
+        0x0c, 0x19, 0x22, 0xa0, 0xf0, 0xa2, 0x01, 0x40, 0x48, 0x7c, 0x72, 0xa0, 0x8f, 0x58, 0x04, 0x62, 
+        0x04, 0x06, 0x50, 0x30, 0x54, 0x70, 0x66, 0x10, 0x50, 0x56, 0x41, 0x62, 0x44, 0x06, 0x08, 0x7c, 
+        0x1c, 0x06, 0x60, 0x55, 0x20, 0xa0, 0x55, 0x11, 0x50, 0x33, 0x20, 0x39, 0x04, 0xb2, 0x00, 0x04, 
+        0x00, 0x1a, 0x40, 0x20, 0xbb, 0x10, 0x0c, 0x72, 0x20, 0xbb, 0x20, 0xb2, 0x40, 0x04, 0x88, 0x7c, 
+        0x00, 0x99, 0xa1, 0x92, 0x48, 0x0e, 0x71, 0xd0, 0xca, 0x2d, 0x0c, 0xc0, 0x20, 0x00, 0x72, 0x27, 
+        0x80, 0x79, 0x48, 0xc5, 0xba, 0xfa, 0x0c, 0x02, 0xc8, 0xd1, 0x08, 0xc1, 0x12, 0xc1, 0x40, 0x0d, 
+        0xf0, 0x00, 0x00, 0x00, 0xb8, 0xdc, 0x10, 0x40, 0x32, 0xa0, 0x02, 0x41, 0x93, 0xc9, 0x12, 0xc1, 
+        0xf0, 0x20, 0x52, 0x20, 0x02, 0x61, 0x00, 0x08, 0xb5, 0x21, 0xfa, 0xff, 0x40, 0x00, 0x20, 0x09, 
+        0xb5, 0x05, 0xca, 0xfa, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x98, 0xbd, 0xff, 0x3f, 
+        0xe8, 0xe3, 0x10, 0x40, 0xdc, 0xbd, 0xff, 0x3f, 0xfc, 0xe3, 0x10, 0x40, 0xa0, 0xbd, 0xff, 0x3f, 
+        0x88, 0xe4, 0x10, 0x40, 0xb4, 0xbd, 0xff, 0x3f, 0x60, 0xe4, 0x10, 0x40, 0x30, 0xe3, 0x10, 0x40, 
+        0x42, 0xa0, 0x14, 0x32, 0xa1, 0x68, 0x52, 0xa0, 0x78, 0x12, 0xc1, 0xf0, 0x62, 0xa0, 0xff, 0x02, 
+        0x61, 0x00, 0x01, 0xf2, 0xff, 0x02, 0x62, 0x00, 0x62, 0x40, 0xc3, 0x52, 0x60, 0x17, 0x22, 0xc0, 
+        0x30, 0x32, 0x60, 0x19, 0x42, 0x60, 0x18, 0x31, 0xee, 0xff, 0x0c, 0x04, 0x01, 0x14, 0xcc, 0xc0, 
+        0x00, 0x00, 0x21, 0xec, 0xff, 0x31, 0xec, 0xff, 0x0c, 0x04, 0x01, 0x10, 0xcc, 0xc0, 0x00, 0x00, 
+        0x21, 0xeb, 0xff, 0x31, 0xeb, 0xff, 0x42, 0xc2, 0xfc, 0x01, 0x0c, 0xcc, 0xc0, 0x00, 0x00, 0x21, 
+        0xe9, 0xff, 0x31, 0xe9, 0xff, 0x0c, 0x04, 0x01, 0x09, 0xcc, 0xc0, 0x00, 0x00, 0x21, 0xe7, 0xff, 
+        0x0c, 0x13, 0x05, 0xc1, 0xfa, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0xc0, 0xe1, 0x10, 0x40, 
+        0x12, 0xc1, 0xf0, 0x52, 0x61, 0x01, 0x02, 0x61, 0x02, 0xc2, 0x61, 0x03, 0x49, 0x01, 0xcd, 0x02, 
+        0x0c, 0x04, 0x2d, 0x03, 0x31, 0xfa, 0xff, 0x05, 0x57, 0x00, 0x66, 0x32, 0x04, 0x7c, 0xf2, 0x46, 
+        0x0d, 0x00, 0x0c, 0x10, 0x28, 0x11, 0x31, 0xd1, 0xff, 0x48, 0x01, 0xc9, 0x13, 0x42, 0x63, 0x1b, 
+        0x22, 0x63, 0x1c, 0x02, 0x43, 0x75, 0xc7, 0xec, 0x10, 0x0c, 0x06, 0x52, 0x03, 0xc3, 0x72, 0xa1, 
+        0x00, 0x70, 0x7c, 0x10, 0x70, 0x56, 0x93, 0x52, 0x43, 0x74, 0x22, 0xa0, 0x00, 0x85, 0x0d, 0xfe, 
+        0x22, 0xa0, 0x00, 0x85, 0x3e, 0x00, 0x0c, 0x02, 0xc8, 0x31, 0x08, 0x21, 0x12, 0xc1, 0x10, 0x0d, 
+        0xf0, 0x00, 0x00, 0x00, 0x12, 0xc1, 0xf0, 0x09, 0x11, 0x01, 0xc0, 0xff, 0x22, 0x00, 0x75, 0x07, 
+        0x62, 0x16, 0x22, 0xc0, 0x44, 0x29, 0x01, 0x01, 0xe4, 0xcb, 0xc0, 0x00, 0x00, 0x28, 0x01, 0x0c, 
+        0x03, 0x0c, 0x04, 0x01, 0xe3, 0xcb, 0xc0, 0x00, 0x00, 0x08, 0x11, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 
+        0x12, 0xc1, 0xf0, 0x09, 0x01, 0x85, 0x2e, 0x00, 0x8c, 0x42, 0xc5, 0x01, 0x00, 0x86, 0x01, 0x00, 
+        0x0c, 0x02, 0x0c, 0x03, 0x85, 0x15, 0x00, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 
+        0xc0, 0xe0, 0x10, 0x40, 0x00, 0xe1, 0x10, 0x40, 0x12, 0xc1, 0xf0, 0x09, 0x01, 0x01, 0xab, 0xff, 
+        0x6d, 0x02, 0x28, 0x10, 0x51, 0xbe, 0xc8, 0xe7, 0xe2, 0x10, 0x42, 0x20, 0x18, 0x58, 0x15, 0x32, 
+        0x20, 0x17, 0x52, 0xc5, 0xfb, 0x50, 0x34, 0x83, 0x86, 0x00, 0x00, 0x32, 0x20, 0x19, 0x60, 0x26, 
+        0x20, 0x41, 0xf3, 0xff, 0x51, 0xf4, 0xff, 0x72, 0x00, 0x75, 0x82, 0xa0, 0x08, 0x80, 0x77, 0x20, 
+        0x72, 0x40, 0x75, 0xc5, 0x4e, 0x00, 0x02, 0x21, 0x00, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 
+        0x0c, 0x24, 0x52, 0xa0, 0xf7, 0x61, 0x99, 0xff, 0x12, 0xc1, 0xf0, 0x09, 0x01, 0x32, 0x06, 0x75, 
+        0x08, 0x16, 0x50, 0x33, 0x10, 0x32, 0x46, 0x75, 0x40, 0x33, 0x20, 0x32, 0x46, 0x75, 0xe7, 0xe0, 
+        0x12, 0x78, 0x02, 0x97, 0xe7, 0x0d, 0x00, 0x8d, 0x04, 0x0c, 0x09, 0x92, 0x46, 0xc2, 0x82, 0x46, 
+        0xc2, 0x45, 0x1a, 0x00, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0xc8, 0xbd, 0xff, 0x3f, 
+        0x21, 0xff, 0xff, 0x12, 0xc1, 0xf0, 0x39, 0x11, 0x09, 0x01, 0x01, 0xaf, 0xcb, 0xc0, 0x00, 0x00, 
+        0x31, 0x87, 0xff, 0x08, 0x11, 0x22, 0x03, 0x75, 0x52, 0xa0, 0xf7, 0x37, 0x62, 0x57, 0x50, 0x42, 
+        0x10, 0x42, 0x43, 0x75, 0x21, 0x84, 0xff, 0x16, 0x00, 0x02, 0x01, 0xa7, 0xcb, 0xc0, 0x00, 0x00, 
+        0x22, 0xa0, 0x00, 0x61, 0x7e, 0xff, 0x32, 0xa0, 0x01, 0x52, 0x06, 0x75, 0x72, 0xa0, 0xfb, 0x70, 
+        0x55, 0x10, 0x52, 0x46, 0x75, 0x85, 0x07, 0x00, 0x86, 0x08, 0x00, 0x08, 0x13, 0x87, 0x60, 0x0b, 
+        0x01, 0x9e, 0xcb, 0xc0, 0x00, 0x00, 0x85, 0xef, 0xff, 0x46, 0x04, 0x00, 0x97, 0xe0, 0x05, 0x01, 
+        0x9a, 0xcb, 0xc0, 0x00, 0x00, 0x22, 0xa0, 0x00, 0x32, 0xa0, 0x00, 0x45, 0x05, 0x00, 0x02, 0x21, 
+        0x00, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x17, 0x62, 0xaa, 0x52, 0xa0, 0xfd, 0x86, 0xe7, 0xff, 0x00, 
+        0x12, 0xc1, 0xf0, 0x02, 0x61, 0x01, 0x01, 0x69, 0xff, 0x02, 0x00, 0x75, 0x07, 0x60, 0x23, 0x85, 
+        0x4e, 0x00, 0x21, 0x68, 0xff, 0x22, 0x61, 0x00, 0x01, 0x8c, 0xcb, 0xc0, 0x00, 0x00, 0x22, 0x21, 
+        0x00, 0x0c, 0x03, 0x0c, 0x04, 0x01, 0x8a, 0xcb, 0xc0, 0x00, 0x00, 0x31, 0x60, 0xff, 0x0c, 0x02, 
+        0x22, 0x43, 0x75, 0x08, 0x11, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0x98, 0x8e, 0xfe, 0x3f, 
+        0x21, 0xff, 0xff, 0x12, 0xc1, 0xf0, 0x32, 0x61, 0x00, 0xd9, 0x31, 0xc9, 0x21, 0xd1, 0x57, 0xff, 
+        0x09, 0x11, 0xc2, 0x2d, 0x1b, 0x01, 0xa6, 0xc7, 0xc0, 0x00, 0x00, 0x05, 0x4d, 0x00, 0xc5, 0x3a, 
+        0x00, 0x32, 0xa0, 0xfa, 0x22, 0x0d, 0x75, 0x0c, 0x00, 0x09, 0x1d, 0x30, 0x22, 0x10, 0x22, 0x4d, 
+        0x75, 0x21, 0x50, 0xff, 0x01, 0x75, 0xcb, 0xc0, 0x00, 0x00, 0x41, 0x60, 0xc8, 0x0c, 0x05, 0x48, 
+        0x14, 0x52, 0x6d, 0x1b, 0x66, 0x54, 0x0b, 0x0c, 0x22, 0x0c, 0x03, 0x0c, 0x04, 0x05, 0xe0, 0xfe, 
+        0xc6, 0x02, 0x00, 0x22, 0xa0, 0x00, 0x32, 0xa0, 0x00, 0x42, 0xa0, 0x00, 0x05, 0xdf, 0xfe, 0x8c, 
+        0x6c, 0x22, 0x2d, 0x1c, 0x38, 0x01, 0xc0, 0x0c, 0x00, 0x22, 0xa0, 0x00, 0x85, 0xed, 0xfd, 0x22, 
+        0xa0, 0x00, 0x45, 0xbf, 0xf2, 0xc8, 0x21, 0xd8, 0x31, 0x08, 0x11, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 
+        0x12, 0xc1, 0xf0, 0x09, 0x01, 0xc9, 0x11, 0xd9, 0x21, 0xcd, 0x02, 0xdd, 0x05, 0xf6, 0x32, 0x21, 
+        0x01, 0x37, 0xff, 0x66, 0x15, 0x16, 0x5d, 0x00, 0x20, 0x22, 0xb0, 0x50, 0x22, 0xa0, 0x42, 0x62, 
+        0x1e, 0x22, 0xc2, 0x7c, 0x01, 0xbe, 0xca, 0xc0, 0x00, 0x00, 0x01, 0x30, 0xff, 0x0a, 0x6c, 0xd2, 
+        0x46, 0xc0, 0xc8, 0x11, 0xd8, 0x21, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0x00, 
+        0xf6, 0x32, 0x12, 0x0c, 0x03, 0x51, 0x29, 0xff, 0x20, 0x42, 0xb0, 0x50, 0x44, 0xa0, 0x5a, 0x52, 
+        0x32, 0x45, 0xc0, 0x32, 0x64, 0x1e, 0x0d, 0xf0, 0x12, 0xc1, 0xe0, 0xc9, 0x51, 0xc1, 0x23, 0xff, 
+        0x09, 0x41, 0x02, 0x0c, 0xc2, 0x51, 0x59, 0xfb, 0xf6, 0x20, 0x16, 0xca, 0x20, 0x22, 0x02, 0xc0, 
+        0x8c, 0x32, 0x0c, 0x13, 0x46, 0x03, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x74, 0x02, 0x4c, 0xc2, 0x66, 
+        0x20, 0xe8, 0x32, 0xa0, 0x00, 0x16, 0xc3, 0x05, 0xc0, 0x30, 0x80, 0x32, 0x03, 0xc0, 0x91, 0x2b, 
+        0xc8, 0x66, 0x23, 0x1c, 0x50, 0x45, 0x20, 0x0c, 0x02, 0x0c, 0x06, 0x0c, 0x07, 0x32, 0x09, 0xe4, 
+        0x0c, 0x18, 0x89, 0x01, 0xc0, 0x33, 0x11, 0x3a, 0x39, 0x9b, 0x33, 0x45, 0xaa, 0xff, 0xc6, 0x0a, 
+        0x00, 0x66, 0x13, 0x28, 0x00, 0x30, 0xb0, 0xc0, 0x33, 0xa0, 0x02, 0x23, 0x1e, 0x16, 0xc0, 0x01, 
+        0x50, 0x45, 0x20, 0x22, 0xa0, 0x00, 0x00, 0x70, 0x74, 0x62, 0xc3, 0x7c, 0x0c, 0x18, 0x32, 0x09, 
+        0xe4, 0x89, 0x01, 0xc0, 0x33, 0x11, 0x3a, 0x39, 0x9b, 0x33, 0x45, 0xa7, 0xff, 0x92, 0x0c, 0xc2, 
+        0x1b, 0x99, 0x92, 0x4c, 0xc2, 0xc8, 0x51, 0x08, 0x41, 0x12, 0xc1, 0x20, 0x0d, 0xf0, 0x00, 0x00, 
+        0x12, 0xc1, 0xf0, 0x09, 0x01, 0x05, 0xf6, 0xff, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 
+        0x0c, 0xd2, 0x0c, 0x03, 0x71, 0x0e, 0xc8, 0x52, 0xa0, 0xff, 0x61, 0xf8, 0xfe, 0x12, 0xc1, 0xf0, 
+        0xd9, 0x21, 0xc9, 0x11, 0x09, 0x01, 0x42, 0x06, 0xc3, 0x02, 0x06, 0x74, 0x40, 0xc4, 0x90, 0x50, 
+        0x44, 0xc0, 0x70, 0xcc, 0xa0, 0xc2, 0xcc, 0x34, 0x40, 0xc3, 0x83, 0x07, 0x32, 0x39, 0xa2, 0x27, 
+        0x37, 0x0c, 0xe8, 0x21, 0xab, 0xe2, 0xb1, 0xb1, 0xc8, 0xd8, 0x16, 0x91, 0x8e, 0xe9, 0xb0, 0xbd, 
+        0x10, 0x90, 0x9d, 0x10, 0x20, 0xdd, 0x10, 0x00, 0x20, 0x90, 0x70, 0x22, 0xa0, 0x58, 0xd2, 0x22, 
+        0xc2, 0x34, 0x07, 0x65, 0x07, 0x17, 0x65, 0x04, 0x9c, 0x99, 0xa7, 0x92, 0x17, 0x1b, 0x00, 0x00, 
+        0x00, 0x74, 0x02, 0x46, 0x74, 0x87, 0x90, 0xde, 0x0c, 0x02, 0xc8, 0x11, 0xd8, 0x21, 0x08, 0x01, 
+        0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x8c, 0x1b, 0xc7, 0x92, 0xe2, 0x8c, 0x1d, 0x97, 0xe5, 0xdd, 0x1b, 
+        0x30, 0x32, 0x46, 0x74, 0x86, 0xf8, 0xff, 0x00, 0x0c, 0x04, 0x71, 0xec, 0xc7, 0x7c, 0xd6, 0x0c, 
+        0xe5, 0x1b, 0x84, 0x40, 0x34, 0x90, 0x70, 0x33, 0xa0, 0x28, 0xd3, 0x80, 0x40, 0x74, 0x60, 0x22, 
+        0x10, 0x29, 0xd3, 0x57, 0x94, 0xea, 0x0d, 0xf0, 0x22, 0xa0, 0x00, 0x12, 0xc1, 0xf0, 0x02, 0x61, 
+        0x00, 0xc5, 0x23, 0x00, 0x02, 0x21, 0x00, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x12, 0xc1, 0xf0, 0x61, 
+        0xcb, 0xfe, 0x09, 0x01, 0x02, 0x06, 0x75, 0x22, 0xc6, 0x44, 0x07, 0x60, 0x24, 0x0c, 0xa3, 0x07, 
+        0x03, 0x0c, 0x0c, 0x03, 0x0c, 0x04, 0x01, 0xee, 0xca, 0xc0, 0x00, 0x00, 0x86, 0x04, 0x00, 0x48, 
+        0x16, 0x97, 0x64, 0x0a, 0x32, 0x26, 0x16, 0x0c, 0x04, 0x01, 0xe9, 0xca, 0xc0, 0x00, 0x00, 0x05, 
+        0xc2, 0xff, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x12, 0xc1, 0xf0, 0x02, 
+        0x61, 0x00, 0x85, 0x2c, 0x00, 0x01, 0xb9, 0xfe, 0x22, 0x40, 0xc3, 0x02, 0x21, 0x00, 0x12, 0xc1, 
+        0x10, 0x80, 0x00, 0x00, 0x21, 0xb6, 0xfe, 0x28, 0x12, 0x0d, 0xf0, 0x00, 0xff, 0xbf, 0xff, 0xff, 
+        0x12, 0xc1, 0xf0, 0x41, 0xc6, 0xc7, 0x02, 0x61, 0x00, 0x02, 0x24, 0x0b, 0xe7, 0x60, 0x0d, 0x31, 
+        0xfb, 0xff, 0x22, 0xa0, 0x03, 0x30, 0x00, 0x10, 0x09, 0xb4, 0xc5, 0x9a, 0xf2, 0x08, 0x01, 0x12, 
+        0xc1, 0x10, 0x0d, 0xf0, 0xa4, 0x8e, 0xfe, 0x3f, 0x12, 0xc1, 0xf0, 0x02, 0x61, 0x01, 0x02, 0x22, 
+        0x00, 0x22, 0xa0, 0x01, 0x09, 0x01, 0x45, 0x7c, 0xfa, 0x41, 0xb8, 0xc7, 0x31, 0x77, 0xdb, 0x08, 
+        0xb4, 0xec, 0x82, 0x28, 0x04, 0x31, 0xed, 0xff, 0x22, 0xc2, 0x1c, 0x30, 0x30, 0x10, 0x39, 0xb4, 
+        0x01, 0xc6, 0xca, 0xc0, 0x00, 0x00, 0x21, 0xf3, 0xff, 0x01, 0xed, 0xc6, 0xc0, 0x00, 0x00, 0x28, 
+        0x01, 0x0c, 0x33, 0x0c, 0x04, 0x0c, 0x05, 0x85, 0xaf, 0xff, 0x06, 0x01, 0x00, 0x30, 0x30, 0x20, 
+        0x39, 0xb4, 0x08, 0x11, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x12, 0xc1, 0xf0, 0x09, 
+        0x01, 0x01, 0xa6, 0xc7, 0x28, 0xb0, 0xe7, 0x62, 0x06, 0x28, 0x00, 0x4b, 0x22, 0x85, 0xf9, 0xff, 
+        0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x5c, 0xbe, 0xff, 0x3f, 0x7c, 0xbe, 0xff, 0x3f, 
+        0x64, 0xe6, 0x10, 0x40, 0x12, 0xc1, 0xf0, 0x02, 0x61, 0x01, 0xc2, 0x61, 0x02, 0x01, 0xfa, 0xff, 
+        0x20, 0xc2, 0x20, 0x29, 0x00, 0x01, 0xa3, 0xca, 0xc0, 0x00, 0x00, 0x22, 0xcc, 0x34, 0x29, 0x01, 
+        0x22, 0x6c, 0x37, 0x01, 0xa1, 0xca, 0xc0, 0x00, 0x00, 0x28, 0x01, 0x05, 0x1b, 0x00, 0x21, 0xf3, 
+        0xff, 0x31, 0xf3, 0xff, 0x0c, 0x04, 0x01, 0xa5, 0xca, 0xc0, 0x00, 0x00, 0xc8, 0x21, 0x08, 0x11, 
+        0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x12, 0xc1, 0xf0, 0xc9, 0x11, 0x09, 0x01, 0xcd, 
+        0x02, 0x01, 0xe9, 0xff, 0x2d, 0x04, 0x42, 0x00, 0x38, 0x52, 0x00, 0x39, 0x9c, 0x44, 0x29, 0x31, 
+        0x39, 0x21, 0xc7, 0xb5, 0x04, 0x0c, 0x32, 0xc6, 0x05, 0x00, 0xc5, 0x10, 0x00, 0x28, 0x31, 0x01, 
+        0xe2, 0xff, 0x38, 0x21, 0xc2, 0x40, 0x39, 0x39, 0x60, 0x29, 0x70, 0x0c, 0x16, 0x0c, 0x02, 0x62, 
+        0x40, 0x38, 0xc8, 0x11, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x31, 0xdb, 0xff, 0x0c, 
+        0x02, 0x29, 0x73, 0x29, 0x63, 0x22, 0x43, 0x38, 0x22, 0x43, 0x39, 0x0d, 0xf0, 0x00, 0x00, 0x00, 
+        0x12, 0xc1, 0xf0, 0x09, 0x01, 0x01, 0xd4, 0xff, 0x78, 0x10, 0x8c, 0x37, 0x0c, 0x32, 0x86, 0x03, 
+        0x00, 0x29, 0x10, 0x39, 0x20, 0x49, 0x40, 0x59, 0x50, 0x69, 0x30, 0x05, 0x01, 0x00, 0x0c, 0x02, 
+        0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x60, 0xbe, 0xff, 0x3f, 0x12, 0xc1, 0xe0, 0xd9, 
+        0x41, 0xc9, 0x31, 0xd1, 0xc9, 0xff, 0x09, 0x21, 0xc8, 0x4d, 0x08, 0x3d, 0x09, 0x01, 0x45, 0x0f, 
+        0x00, 0x3d, 0x02, 0x28, 0x1d, 0x32, 0x13, 0x02, 0x42, 0x12, 0x02, 0x47, 0x13, 0x02, 0xc5, 0x0e, 
+        0x00, 0x48, 0x2d, 0xcc, 0xc4, 0x21, 0xf4, 0xff, 0x1c, 0x43, 0x01, 0x78, 0xc9, 0xc0, 0x00, 0x00, 
+        0x86, 0x05, 0x00, 0x21, 0xbe, 0xff, 0x29, 0x11, 0x01, 0x70, 0xca, 0xc0, 0x00, 0x00, 0x28, 0x11, 
+        0x38, 0x2d, 0x0c, 0x04, 0x01, 0x6f, 0xca, 0xc0, 0x00, 0x00, 0x8c, 0x5c, 0x28, 0x01, 0x0c, 0x03, 
+        0xc0, 0x0c, 0x00, 0xc8, 0x31, 0xd8, 0x41, 0x08, 0x21, 0x12, 0xc1, 0x20, 0x0d, 0xf0, 0x00, 0x00, 
+        0x7c, 0xc3, 0x12, 0xc1, 0xf0, 0x09, 0x11, 0x01, 0xb0, 0xff, 0x29, 0x01, 0x37, 0x10, 0x1d, 0x2d, 
+        0x00, 0x38, 0x52, 0x39, 0x21, 0x4b, 0x22, 0x1c, 0x43, 0x01, 0x64, 0xc9, 0xc0, 0x00, 0x00, 0x58, 
+        0x21, 0x8c, 0x85, 0x21, 0xa9, 0xff, 0x38, 0x01, 0x28, 0x32, 0xc0, 0x05, 0x00, 0x08, 0x11, 0x12, 
+        0xc1, 0x10, 0x0d, 0xf0, 0x0c, 0x02, 0x12, 0xc1, 0xf0, 0x09, 0x01, 0x45, 0xfc, 0xff, 0x08, 0x01, 
+        0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x12, 0xc1, 0xf0, 0x09, 0x01, 0x01, 0x9e, 0xff, 
+        0x28, 0x10, 0x9c, 0x12, 0x2d, 0x00, 0x22, 0xc2, 0x20, 0x01, 0x4f, 0xca, 0xc0, 0x00, 0x00, 0x0c, 
+        0x42, 0xc5, 0xf9, 0xff, 0x01, 0x99, 0xff, 0x58, 0x60, 0x8c, 0x55, 0x0c, 0x43, 0x28, 0x70, 0xc0, 
+        0x05, 0x00, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x12, 0xc1, 0xf0, 0xc9, 
+        0x11, 0xc1, 0x32, 0xc7, 0x09, 0x01, 0xc2, 0x2c, 0x37, 0x85, 0x01, 0x00, 0x02, 0x12, 0x02, 0x22, 
+        0x1c, 0x02, 0x27, 0x10, 0x04, 0x2d, 0x0c, 0x45, 0x01, 0x00, 0xc8, 0x11, 0x08, 0x01, 0x12, 0xc1, 
+        0x10, 0x0d, 0xf0, 0x00, 0x21, 0x89, 0xff, 0x28, 0xd2, 0x0d, 0xf0, 0x00, 0x32, 0xa0, 0x01, 0x42, 
+        0xa0, 0x00, 0x12, 0xc1, 0xf0, 0xc2, 0x61, 0x01, 0x09, 0x01, 0xcd, 0x02, 0x22, 0x12, 0x02, 0x45, 
+        0x61, 0xf3, 0x01, 0x2c, 0xca, 0xc0, 0x00, 0x00, 0x01, 0x80, 0xff, 0xc9, 0xd0, 0x01, 0x2a, 0xca, 
+        0xc0, 0x00, 0x00, 0xc8, 0x11, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 0x0c, 0x05, 0x61, 0x7a, 
+        0xff, 0x0c, 0xe7, 0x68, 0x06, 0x50, 0x85, 0x90, 0x60, 0x88, 0xa0, 0x82, 0x18, 0x1c, 0x27, 0x98, 
+        0x03, 0x2d, 0x05, 0x0d, 0xf0, 0x1b, 0x55, 0x50, 0x50, 0x74, 0x77, 0x95, 0xe7, 0x22, 0xa0, 0xff, 
+        0x0d, 0xf0, 0x00, 0x00, 0x70, 0x87, 0xfe, 0x3f, 0x2d, 0xf4, 0x51, 0x58, 0x2d, 0x7f, 0x95, 0x4c, 
+        0x00, 0x00, 0x80, 0x7f, 0x00, 0x00, 0xf0, 0x7f, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x38, 
+        0xe0, 0x87, 0xfe, 0x3f, 0x41, 0xf8, 0xff, 0x48, 0x04, 0x0c, 0x03, 0x22, 0x64, 0x2a, 0x32, 0x64, 
+        0x2b, 0x0d, 0xf0, 0x00, 0x51, 0xf5, 0xff, 0x41, 0xf5, 0xff, 0x21, 0xf2, 0xff, 0x12, 0xc1, 0xf0, 
+        0x02, 0x61, 0x00, 0x22, 0x22, 0x00, 0x22, 0x61, 0x01, 0x32, 0x22, 0x2b, 0x22, 0x22, 0x2a, 0x05, 
+        0xaf, 0x00, 0x08, 0x11, 0x4d, 0x02, 0x1b, 0x22, 0x47, 0xb2, 0x14, 0x22, 0x60, 0x2a, 0x41, 0xc4, 
+        0xcb, 0x1b, 0x23, 0x22, 0x60, 0x2b, 0x40, 0x22, 0x10, 0x08, 0x01, 0x12, 0xc1, 0x10, 0x0d, 0xf0, 
+        0x22, 0x60, 0x2a, 0x32, 0x60, 0x2b, 0x21, 0xbe, 0xcb, 0x08, 0x01, 0x20, 0x23, 0x10, 0x12, 0xc1, 
+        0x10, 0x0d, 0xf0, 0x00, 0x67, 0xc3, 0x04, 0x70, 0x72, 0x11, 0x8c, 0x07, 0x0d, 0xf0, 0x2d, 0x03, 
+        0x0d, 0xf0, 0x00, 0x00, 0x80, 0x76, 0x11, 0x70, 0x33, 0x30, 0xc6, 0x3c, 0x00, 0x00, 0x00, 0x00, 
+        0x61, 0xdc, 0xff, 0x30, 0x72, 0x30, 0x96, 0xa7, 0xfe, 0x67, 0x42, 0xd7, 0x67, 0x43, 0xde, 0x20, 
+        0x77, 0x85, 0x30, 0x87, 0x85, 0x87, 0x37, 0x4c, 0x67, 0x03, 0x28, 0x60, 0x33, 0x20, 0x80, 0x33, 
+        0x11, 0x30, 0x38, 0x41, 0x80, 0xa7, 0xc0, 0xf6, 0xca, 0x29, 0x00, 0x0a, 0x40, 0x0c, 0x09, 0x90, 
+        0x93, 0x81, 0x30, 0x30, 0x91, 0x3a, 0x22, 0x20, 0xa7, 0x85, 0x77, 0x1a, 0x4a, 0x8d, 0x07, 0x46, 
+        0x15, 0x00, 0x00, 0x00, 0x70, 0x33, 0x11, 0x30, 0x39, 0x41, 0x67, 0x02, 0x04, 0x1b, 0x88, 0x46, 
+        0xf4, 0xff, 0x3a, 0x22, 0x0d, 0xf0, 0x00, 0x00, 0x70, 0x22, 0x11, 0x20, 0x29, 0x41, 0x1b, 0x77, 
+        0x46, 0x03, 0x00, 0x00, 0x00, 0x67, 0x02, 0xef, 0x60, 0x22, 0x20, 0x80, 0x22, 0x11, 0x20, 0x28, 
+        0x41, 0x70, 0xa8, 0xc0, 0xf6, 0xca, 0x1c, 0x00, 0x0a, 0x40, 0x00, 0x92, 0xa1, 0x20, 0x20, 0x91, 
+        0x3a, 0x22, 0x20, 0xa7, 0x85, 0x87, 0x9a, 0x0f, 0xd6, 0x69, 0x00, 0x1b, 0x22, 0xf0, 0x99, 0x11, 
+        0xac, 0xc9, 0x0d, 0xf0, 0x2d, 0x03, 0x0d, 0xf0, 0xad, 0x02, 0x20, 0x21, 0x41, 0x1b, 0x88, 0xa0, 
+        0x88, 0x01, 0x8a, 0x22, 0x67, 0x42, 0x08, 0x07, 0x6a, 0x03, 0x1b, 0x22, 0x9c, 0x09, 0x0d, 0xf0, 
+        0x20, 0x27, 0x85, 0x90, 0x22, 0x01, 0xf0, 0x88, 0x11, 0x80, 0x22, 0x20, 0x0d, 0xf0, 0x00, 0x00, 
+        0x20, 0x21, 0x41, 0xf0, 0x22, 0x11, 0x0d, 0xf0, 0x67, 0xc3, 0x05, 0x41, 0x54, 0xdb, 0x40, 0x22, 
+        0x20, 0x0d, 0xf0, 0x00, 0x80, 0x76, 0x11, 0x70, 0x23, 0x30, 0x0d, 0xf0, 0x80, 0x76, 0x11, 0x70, 
+        0x33, 0x30, 0xc6, 0xc8, 0xff, 0x00, 0x00, 0x00, 0x61, 0xa2, 0xff, 0x30, 0x72, 0x30, 0x96, 0xa7, 
+        0xfe, 0x67, 0x42, 0xd3, 0x67, 0x43, 0xdc, 0x20, 0x77, 0x75, 0x30, 0x87, 0x75, 0x37, 0x32, 0x4b, 
+        0x67, 0x03, 0x2d, 0x60, 0x33, 0x20, 0x80, 0x33, 0x11, 0x30, 0x38, 0x41, 0x80, 0xa7, 0xc0, 0xf6, 
+        0xca, 0x37, 0x00, 0x0a, 0x40, 0x0c, 0x09, 0x90, 0x93, 0x81, 0x30, 0x30, 0x91, 0x30, 0x22, 0xc0, 
+        0x90, 0x90, 0x60, 0x0b, 0xa2, 0x90, 0x2a, 0x93, 0x20, 0xa7, 0x75, 0x77, 0x1a, 0x51, 0xc6, 0x1b, 
+        0x00, 0x37, 0x12, 0x68, 0x70, 0x33, 0x11, 0x30, 0x39, 0x41, 0x67, 0x02, 0xce, 0x1b, 0x88, 0x46, 
+        0xf2, 0xff, 0x00, 0x00, 0x80, 0x76, 0x11, 0x70, 0x23, 0x30, 0x0d, 0xf0, 0x67, 0x02, 0x3c, 0x60, 
+        0x22, 0x20, 0x80, 0x22, 0x11, 0x20, 0x28, 0x41, 0x70, 0xa8, 0xc0, 0xf6, 0xca, 0xe5, 0x00, 0x0a, 
+        0x40, 0x0c, 0x09, 0x90, 0x92, 0x81, 0x20, 0x20, 0x91, 0x80, 0xb6, 0x11, 0xb0, 0x33, 0x30, 0x20, 
+        0x23, 0xc0, 0x90, 0x90, 0x60, 0x0b, 0xa2, 0x90, 0x2a, 0x93, 0x20, 0xa7, 0x75, 0x87, 0x9a, 0x20, 
+        0xd6, 0x69, 0x00, 0x1b, 0x22, 0xf0, 0x99, 0x11, 0xbc, 0xc9, 0x0d, 0xf0, 0x37, 0x12, 0x0d, 0x70, 
+        0x22, 0x11, 0x20, 0x29, 0x41, 0x67, 0x03, 0xbf, 0x1b, 0x77, 0x86, 0xee, 0xff, 0x0c, 0x02, 0x0d, 
+        0xf0, 0x70, 0x82, 0x11, 0xac, 0x88, 0x60, 0xf8, 0x40, 0x80, 0x89, 0x41, 0xa7, 0xa6, 0x2e, 0x1b, 
+        0x66, 0x00, 0x16, 0x40, 0x90, 0x88, 0x81, 0x00, 0x99, 0xa1, 0x20, 0x27, 0x85, 0x60, 0x22, 0xc0, 
+        0x90, 0x22, 0x01, 0x8a, 0x22, 0xc6, 0xed, 0xff, 0x20, 0x21, 0x41, 0xf0, 0x22, 0x11, 0x0d, 0xf0, 
+        0x16, 0x99, 0xfc, 0xb2, 0xca, 0xe8, 0x1c, 0x86, 0xb0, 0x6a, 0xa3, 0x86, 0xf4, 0xff, 0x6d, 0x0a, 
+        0x46, 0xf3, 0xff, 0x00, 0xf0, 0x22, 0x11, 0x20, 0x21, 0x41, 0xac, 0xe2, 0xa0, 0xf2, 0x40, 0xa2, 
+        0xca, 0xf8, 0x00, 0x1a, 0x40, 0x00, 0x22, 0xa1, 0x0c, 0x18, 0xa0, 0x88, 0xc0, 0xc6, 0x1e, 0x00, 
+        0xf0, 0x33, 0x11, 0x30, 0x31, 0x41, 0x9c, 0x23, 0xa0, 0xf3, 0x40, 0xa2, 0xca, 0xf8, 0x00, 0x1a, 
+        0x40, 0x00, 0x33, 0xa1, 0x0c, 0x19, 0xa0, 0x99, 0xc0, 0x86, 0x18, 0x00, 0x70, 0x2f, 0x05, 0x10, 
+        0x22, 0x01, 0x06, 0x34, 0x00, 0xf0, 0x83, 0x11, 0xcc, 0x88, 0x41, 0xfc, 0xda, 0x40, 0x22, 0x20, 
+        0x86, 0x30, 0x00, 0x00, 0x67, 0xc3, 0x06, 0x70, 0x83, 0x11, 0x8c, 0x08, 0x2d, 0x03, 0x70, 0x7f, 
+        0x05, 0xf0, 0x22, 0x11, 0x00, 0x41, 0x40, 0x20, 0x27, 0x81, 0x06, 0x2a, 0x00, 0xf0, 0x82, 0x11, 
+        0x56, 0x88, 0xfe, 0x71, 0xf2, 0xda, 0x70, 0x23, 0x20, 0x46, 0x26, 0x00, 0x12, 0xc1, 0xe0, 0xc9, 
+        0x41, 0xd9, 0x51, 0xe9, 0x61, 0xf9, 0x71, 0x61, 0x42, 0xff, 0x30, 0x72, 0x30, 0x67, 0x42, 0xb4, 
+        0x67, 0x43, 0xd9, 0x20, 0x87, 0x75, 0x30, 0x97, 0x75, 0x16, 0x78, 0xf6, 0x16, 0x09, 0xf8, 0x9a, 
+        0x88, 0xa1, 0xf3, 0xc7, 0x60, 0x22, 0x20, 0xa0, 0x22, 0x10, 0x60, 0x33, 0x20, 0xa0, 0x33, 0x10, 
+        0x20, 0x40, 0xf5, 0x30, 0x50, 0xf5, 0x50, 0x62, 0xc1, 0x30, 0xb4, 0xc1, 0x0c, 0x09, 0xba, 0x66, 
+        0xb7, 0xb6, 0x01, 0x1b, 0x99, 0x10, 0x40, 0x40, 0x60, 0x99, 0x81, 0x30, 0xb2, 0xc1, 0x00, 0x66, 
+        0xa1, 0xba, 0x66, 0xb7, 0xb6, 0x01, 0x1b, 0x99, 0x50, 0x24, 0xc1, 0x9a, 0x22, 0x0c, 0x94, 0x20, 
+        0x5f, 0x41, 0x8c, 0x25, 0x0b, 0x44, 0x1b, 0x88, 0x00, 0x14, 0x40, 0x60, 0x22, 0x81, 0x00, 0x66, 
+        0xa1, 0x42, 0xa0, 0x80, 0x40, 0x88, 0xc0, 0x42, 0xa0, 0xfe, 0x47, 0xb8, 0x2f, 0xd6, 0x76, 0x00, 
+        0x1b, 0x22, 0xf0, 0x66, 0x11, 0x16, 0xb6, 0x01, 0x90, 0x88, 0x01, 0x8a, 0x22, 0x70, 0x7f, 0x05, 
+        0x10, 0x77, 0x01, 0x70, 0x22, 0x20, 0xc8, 0x41, 0xd8, 0x51, 0xe8, 0x61, 0xf8, 0x71, 0x12, 0xc1, 
+        0x20, 0x0d, 0xf0, 0x00, 0x20, 0x21, 0x41, 0xf0, 0x22, 0x11, 0x86, 0xf6, 0xff, 0x96, 0x88, 0x00, 
+        0x82, 0xa0, 0xff, 0x90, 0x28, 0x01, 0xc6, 0xf4, 0xff, 0x80, 0x80, 0x60, 0x9d, 0x06, 0x00, 0x08, 
+        0x40, 0xf6, 0xc8, 0x13, 0x00, 0x62, 0xa1, 0x20, 0x20, 0x91, 0x0c, 0x08, 0x16, 0xd9, 0xfa, 0x0c, 
+        0x19, 0x90, 0x66, 0x20, 0x46, 0xe9, 0xff, 0x00, 0x70, 0x2f, 0x05, 0x10, 0x22, 0x01, 0x06, 0xed, 
+        0xff, 0x00, 0x00, 0x00, 0xf0, 0x33, 0x11, 0x30, 0x31, 0x41, 0x9c, 0x33, 0xa0, 0xf3, 0x40, 0xa2, 
+        0xca, 0xf8, 0x00, 0x1a, 0x40, 0x00, 0x33, 0xa1, 0x0c, 0x19, 0xa0, 0x99, 0xc0, 0x06, 0x1d, 0x00, 
+        0x00, 0xf0, 0x42, 0x11, 0x40, 0x41, 0x41, 0x70, 0x2f, 0x05, 0x10, 0x22, 0x01, 0x60, 0x22, 0x20, 
+        0xcc, 0x44, 0x41, 0xaa, 0xda, 0x40, 0x22, 0x20, 0x0d, 0xf0, 0x00, 0x00, 0xf0, 0x22, 0x11, 0x20, 
+        0x21, 0x41, 0x9c, 0x22, 0xa0, 0xf2, 0x40, 0xa2, 0xca, 0xf8, 0x00, 0x1a, 0x40, 0x00, 0x22, 0xa1, 
+        0x0c, 0x18, 0xa0, 0x88, 0xc0, 0xc6, 0x0f, 0x00, 0x70, 0x2f, 0x05, 0x10, 0x22, 0x01, 0x0d, 0xf0, 
+        0x30, 0x7f, 0x05, 0x10, 0x77, 0x01, 0x70, 0x22, 0x30, 0x67, 0xc3, 0x05, 0x41, 0x9c, 0xda, 0x40, 
+        0x22, 0x20, 0x0d, 0xf0, 0x70, 0x83, 0x11, 0x16, 0xd8, 0xfd, 0x2d, 0x03, 0x0d, 0xf0, 0x00, 0x00, 
+        0x61, 0xec, 0xfe, 0x30, 0x72, 0x30, 0x67, 0x42, 0xd6, 0x67, 0x43, 0xe7, 0x20, 0x87, 0x75, 0x30, 
+        0x97, 0x75, 0x16, 0xe9, 0xf6, 0x16, 0x38, 0xfa, 0x90, 0x88, 0xc0, 0xa1, 0x9d, 0xc7, 0x60, 0x22, 
+        0x20, 0xa0, 0x22, 0x10, 0x60, 0x33, 0x20, 0xa0, 0x33, 0x10, 0x27, 0x33, 0x04, 0xf0, 0x22, 0x11, 
+        0x0b, 0x88, 0x30, 0x22, 0xc0, 0xf0, 0x22, 0x11, 0x0c, 0x1a, 0x92, 0xa0, 0x17, 0xf0, 0xaa, 0x11, 
+        0x37, 0x32, 0x04, 0x1b, 0xaa, 0x30, 0x22, 0xc0, 0xf0, 0x22, 0x11, 0x0b, 0x99, 0x56, 0xc9, 0xfe, 
+        0x82, 0xc8, 0x7e, 0x42, 0xa0, 0xfe, 0x47, 0xb8, 0x17, 0x37, 0x32, 0x04, 0x1b, 0xaa, 0x37, 0x12, 
+        0x1a, 0x90, 0x88, 0x01, 0x8a, 0x2a, 0x70, 0x7f, 0x05, 0x10, 0x77, 0x01, 0x70, 0x22, 0x20, 0x0d, 
+        0xf0, 0x96, 0x08, 0x01, 0x1b, 0x84, 0x90, 0x28, 0x01, 0x46, 0xfa, 0xff, 0xa0, 0xa1, 0x41, 0xf0, 
+        0xaa, 0x11, 0xc6, 0xf6, 0xff, 0x80, 0x80, 0x60, 0x00, 0x08, 0x40, 0xf6, 0xc8, 0x22, 0x00, 0x6a, 
+        0xa1, 0xa0, 0xa0, 0x91, 0x0c, 0x08, 0x8c, 0x32, 0x0c, 0x19, 0x90, 0x66, 0x20, 0xd6, 0x06, 0xfc, 
+        0x1b, 0xaa, 0xf0, 0x66, 0x11, 0x56, 0x86, 0xfb, 0xa0, 0xa1, 0x41, 0xf0, 0xaa, 0x11, 0xc6, 0xeb, 
+        0xff, 0x70, 0x2f, 0x05, 0x10, 0x22, 0x01, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x61, 0xbd, 0xfe, 0x67, 
+        0x42, 0x22, 0x20, 0x47, 0x75, 0x42, 0xc4, 0x82, 0xe6, 0xc4, 0x20, 0xa6, 0x14, 0x29, 0x60, 0x72, 
+        0x20, 0x80, 0x57, 0x11, 0x00, 0x14, 0x40, 0x50, 0x50, 0x91, 0x50, 0x20, 0x60, 0x70, 0x25, 0xb3, 
+        0x0d, 0xf0, 0x00, 0x00, 0x00, 0x70, 0x42, 0x11, 0x8c, 0x04, 0x0c, 0x02, 0x80, 0x46, 0x11, 0x0b, 
+        0x54, 0x20, 0x45, 0xb3, 0x2d, 0x04, 0x0d, 0xf0, 0x0c, 0x02, 0x0d, 0xf0, 0x61, 0xad, 0xfe, 0x67, 
+        0x42, 0x25, 0x20, 0x47, 0x75, 0x42, 0xc4, 0x81, 0xe6, 0xc4, 0x25, 0x96, 0xe4, 0x02, 0x60, 0x72, 
+        0x20, 0x80, 0x57, 0x11, 0x1b, 0x44, 0x26, 0xc4, 0x27, 0x00, 0x14, 0x40, 0x50, 0x50, 0x91, 0x50, 
+        0x20, 0x60, 0x70, 0x25, 0xb3, 0x0d, 0xf0, 0x00, 0x70, 0x42, 0x11, 0x8c, 0x24, 0x7c, 0xf2, 0x0d, 
+        0xf0, 0x80, 0x46, 0x11, 0x7c, 0xf5, 0x20, 0x45, 0xb3, 0x2d, 0x04, 0x0d, 0xf0, 0x0c, 0x02, 0x0d, 
+        0xf0, 0x96, 0x32, 0x00, 0x2d, 0x05, 0x0d, 0xf0, 0x80, 0x26, 0x11, 0x0d, 0xf0, 0x00, 0x00, 0x00, 
+        0xf0, 0x33, 0x11, 0x30, 0x31, 0x41, 0x20, 0xa3, 0x20, 0x16, 0x4a, 0x08, 0x9c, 0x53, 0xa0, 0xf3, 
+        0x40, 0xa2, 0xca, 0xf5, 0x00, 0x1a, 0x40, 0x20, 0x33, 0x81, 0x00, 0x22, 0xa1, 0x0c, 0x18, 0xa0, 
+        0x88, 0xc0, 0x86, 0x36, 0x00, 0xa0, 0xf2, 0x40, 0xa2, 0xca, 0xf5, 0x6c, 0x18, 0xa0, 0x88, 0xc0, 
+        0x00, 0x1a, 0x40, 0x96, 0x9a, 0x00, 0x00, 0x32, 0xa1, 0x0c, 0x02, 0x46, 0x30, 0x00, 0x00, 0x00, 
+        0x20, 0x30, 0x91, 0x00, 0x22, 0xa1, 0x86, 0x2d, 0x00, 0xf0, 0x55, 0x11, 0x50, 0x51, 0x41, 0x40, 
+        0xa5, 0x20, 0xbc, 0xba, 0x9c, 0x55, 0xa0, 0xf5, 0x40, 0xa2, 0xca, 0xf5, 0x00, 0x1a, 0x40, 0x40, 
+        0x55, 0x81, 0x00, 0x44, 0xa1, 0x0c, 0x19, 0xa0, 0x99, 0xc0, 0x46, 0x25, 0x00, 0xa0, 0xf4, 0x40, 
+        0xa2, 0xca, 0xf5, 0x6c, 0x19, 0xa0, 0x99, 0xc0, 0x00, 0x1a, 0x40, 0x96, 0x9a, 0x00, 0x00, 0x54, 
+        0xa1, 0x0c, 0x04, 0x06, 0x1f, 0x00, 0x00, 0x00, 0x40, 0x50, 0x91, 0x00, 0x44, 0xa1, 0x46, 0x1c, 
+        0x00, 0x70, 0x3f, 0x05, 0x10, 0x33, 0x01, 0x0c, 0x02, 0x46, 0x64, 0x00, 0xcc, 0xd4, 0xf0, 0x85, 
+        0x11, 0xcc, 0x88, 0x41, 0xf2, 0xc5, 0x40, 0x33, 0x20, 0x46, 0x60, 0x00, 0x00, 0x67, 0xc5, 0x0b, 
+        0x40, 0x85, 0x11, 0x40, 0x88, 0x20, 0x8c, 0x28, 0x3d, 0x05, 0x2d, 0x04, 0x70, 0x7f, 0x05, 0xf0, 
+        0x33, 0x11, 0x00, 0x41, 0x40, 0x30, 0x37, 0x81, 0x86, 0x58, 0x00, 0x00, 0x56, 0x82, 0xfe, 0xf0, 
+        0x83, 0x11, 0x56, 0x28, 0xfe, 0x71, 0xe5, 0xc5, 0x70, 0x35, 0x20, 0xc6, 0x53, 0x00, 0x00, 0x00, 
+        0x12, 0xc1, 0xe0, 0xc9, 0x41, 0xd9, 0x51, 0xe9, 0x61, 0xf9, 0x71, 0x61, 0x5e, 0xfe, 0x50, 0x73, 
+        0x30, 0x67, 0x43, 0xa7, 0x67, 0x45, 0xd4, 0x30, 0x84, 0xa5, 0x50, 0x94, 0xa5, 0x16, 0xf8, 0xef, 
+        0x16, 0x59, 0xf4, 0x9a, 0x88, 0xa1, 0x58, 0xfe, 0x60, 0x33, 0x20, 0xa0, 0x33, 0x10, 0x60, 0x55, 
+        0x20, 0xa0, 0x55, 0x10, 0x79, 0x11, 0x20, 0xc0, 0xf5, 0x40, 0xd0, 0xf5, 0x30, 0xe0, 0xf5, 0x50, 
+        0xf0, 0xf5, 0xd0, 0xa2, 0xc1, 0x40, 0xbc, 0xc1, 0x0c, 0x09, 0xba, 0xaa, 0xb7, 0xba, 0x01, 0x1b, 
+        0x99, 0x10, 0x40, 0x40, 0xa0, 0x69, 0x81, 0x40, 0xb2, 0xc1, 0x00, 0xaa, 0xa1, 0xba, 0xaa, 0xb7, 
+        0xba, 0x02, 0x62, 0xc6, 0x01, 0x0c, 0x09, 0x50, 0xb2, 0xc1, 0xba, 0x66, 0xb7, 0xb6, 0x01, 0x1b, 
+        0x99, 0xd0, 0xbc, 0xc1, 0xb0, 0x66, 0x80, 0xb7, 0xb6, 0x01, 0x1b, 0x99, 0x40, 0xb3, 0xc1, 0xba, 
+        0x66, 0xb7, 0xb6, 0x01, 0x1b, 0x99, 0x8c, 0x3a, 0x0c, 0x1b, 0xb0, 0x66, 0x20, 0xf0, 0x72, 0xc1, 
+        0x40, 0xbe, 0xc1, 0x0c, 0x0a, 0x7a, 0xbb, 0x77, 0xbb, 0x02, 0xa2, 0xca, 0x01, 0x50, 0x7c, 0xc1, 
+        0x70, 0xbb, 0x80, 0x77, 0xbb, 0x02, 0xa2, 0xca, 0x01, 0xd0, 0x73, 0xc1, 0x70, 0xbb, 0x80, 0x77, 
+        0xbb, 0x02, 0xa2, 0xca, 0x01, 0xb0, 0xaa, 0x81, 0x9a, 0xaa, 0x00, 0xbb, 0xa1, 0xba, 0x66, 0xb7, 
+        0xb6, 0x02, 0xa2, 0xca, 0x01, 0x0c, 0x09, 0xf0, 0x2c, 0xc1, 0xaa, 0x22, 0xa7, 0xb2, 0x01, 0x1b, 
+        0x99, 0x50, 0xa3, 0xc1, 0xa0, 0x22, 0x80, 0xa7, 0xb2, 0x02, 0x92, 0xc9, 0x01, 0xd0, 0xae, 0xc1, 
+        0xaa, 0x22, 0xa7, 0xb2, 0x02, 0x92, 0xc9, 0x01, 0xf0, 0xb3, 0xc1, 0x50, 0x7e, 0xc1, 0x0c, 0x0a, 
+        0x70, 0xbb, 0x80, 0x77, 0xbb, 0x02, 0xa2, 0xca, 0x01, 0xb0, 0xaa, 0x81, 0x9a, 0xaa, 0x00, 0xbb, 
+        0xa1, 0xba, 0x22, 0xb7, 0xb2, 0x01, 0x1b, 0xaa, 0xf0, 0x3e, 0xc1, 0xaa, 0x33, 0x78, 0x11, 0x0c, 
+        0xb4, 0x30, 0x59, 0x41, 0xcc, 0x45, 0x42, 0xc4, 0x01, 0x82, 0xc8, 0xff, 0x00, 0x14, 0x40, 0x20, 
+        0x33, 0x81, 0x60, 0x22, 0x81, 0x00, 0x66, 0xa1, 0x42, 0xa3, 0xff, 0x40, 0x88, 0xc0, 0xf0, 0x44, 
+        0x11, 0x47, 0xb8, 0x37, 0xd6, 0x86, 0x00, 0x1b, 0x22, 0xac, 0x82, 0xf0, 0x66, 0x11, 0x9c, 0xa6, 
+        0xc0, 0x88, 0x01, 0x8a, 0x33, 0x70, 0x7f, 0x05, 0x10, 0x77, 0x01, 0x70, 0x33, 0x20, 0xc8, 0x41, 
+        0xd8, 0x51, 0xe8, 0x61, 0xf8, 0x71, 0x12, 0xc1, 0x20, 0x0d, 0xf0, 0x00, 0x20, 0x21, 0x41, 0xf0, 
+        0x22, 0x11, 0x86, 0xf6, 0xff, 0x1b, 0x33, 0x46, 0xf5, 0xff, 0x00, 0x00, 0x96, 0x98, 0x00, 0x1b, 
+        0x84, 0xc0, 0x38, 0x01, 0x0c, 0x02, 0xc6, 0xf2, 0xff, 0x80, 0x80, 0x60, 0x9d, 0x06, 0x00, 0x08, 
+        0x40, 0xf6, 0xc8, 0x0b, 0x00, 0x62, 0xa1, 0x20, 0x23, 0x81, 0x30, 0x30, 0x91, 0x06, 0x04, 0x00, 
+        0xf6, 0xd8, 0x1c, 0x00, 0xa2, 0xa1, 0x20, 0x63, 0x81, 0x30, 0x20, 0x91, 0x0c, 0x03, 0xa0, 0x99, 
+        0x20, 0x0c, 0x08, 0x16, 0xd9, 0xf8, 0x0c, 0x19, 0x90, 0x66, 0x20, 0x46, 0xe1, 0xff, 0x00, 0x00, 
+        0x70, 0x3f, 0x05, 0x10, 0x33, 0x01, 0x0c, 0x02, 0x86, 0xe4, 0xff, 0x00, 0xf0, 0x55, 0x11, 0x50, 
+        0x51, 0x41, 0x40, 0xa5, 0x20, 0xbc, 0xba, 0x9c, 0x55, 0xa0, 0xf5, 0x40, 0xa2, 0xca, 0xf5, 0x00, 
+        0x1a, 0x40, 0x40, 0x55, 0x81, 0x00, 0x44, 0xa1, 0x0c, 0x19, 0xa0, 0x99, 0xc0, 0x06, 0x36, 0x00, 
+        0xa0, 0xf4, 0x40, 0xa2, 0xca, 0xf5, 0x6c, 0x19, 0xa0, 0x99, 0xc0, 0x00, 0x1a, 0x40, 0x96, 0x7a, 
+        0x00, 0x00, 0x54, 0xa1, 0x0c, 0x04, 0xc6, 0x2f, 0x00, 0x40, 0x50, 0x91, 0x00, 0x44, 0xa1, 0x86, 
+        0x2d, 0x00, 0x00, 0x00, 0xf0, 0x33, 0x11, 0x30, 0x31, 0x41, 0x30, 0x22, 0x20, 0x70, 0x3f, 0x05, 
+        0x10, 0x33, 0x01, 0x60, 0x33, 0x20, 0xcc, 0x42, 0x41, 0x5d, 0xc5, 0x40, 0x33, 0x20, 0x0c, 0x02, 
+        0x0d, 0xf0, 0x00, 0x00, 0xf0, 0x33, 0x11, 0x30, 0x31, 0x41, 0x20, 0xa3, 0x20, 0xbc, 0xba, 0x9c, 
+        0x53, 0xa0, 0xf3, 0x40, 0xa2, 0xca, 0xf5, 0x00, 0x1a, 0x40, 0x20, 0x33, 0x81, 0x00, 0x22, 0xa1, 
+        0x0c, 0x18, 0xa0, 0x88, 0xc0, 0xc6, 0x1c, 0x00, 0xa0, 0xf2, 0x40, 0xa2, 0xca, 0xf5, 0x6c, 0x18, 
+        0xa0, 0x88, 0xc0, 0x00, 0x1a, 0x40, 0x96, 0x7a, 0x00, 0x00, 0x32, 0xa1, 0x0c, 0x02, 0x86, 0x16, 
+        0x00, 0x20, 0x30, 0x91, 0x00, 0x22, 0xa1, 0x46, 0x14, 0x00, 0x00, 0x00, 0x70, 0x3f, 0x05, 0x10, 
+        0x33, 0x01, 0x0c, 0x02, 0x0d, 0xf0, 0x00, 0x00, 0x50, 0x7f, 0x05, 0x10, 0x77, 0x01, 0x70, 0x33, 
+        0x30, 0x67, 0xc5, 0x05, 0x41, 0x42, 0xc5, 0x40, 0x33, 0x20, 0x0d, 0xf0, 0x40, 0x85, 0x11, 0x40, 
+        0x88, 0x20, 0x16, 0x68, 0xfd, 0x3d, 0x05, 0x2d, 0x04, 0x0d, 0xf0, 0x00, 0x47, 0x32, 0x37, 0x46, 
+        0x0f, 0x00, 0x00, 0x00, 0x61, 0xb8, 0xfd, 0x50, 0x73, 0x30, 0x67, 0x43, 0xca, 0x67, 0x45, 0xdb, 
+        0x30, 0x84, 0xa5, 0x50, 0x94, 0xa5, 0x16, 0x29, 0xf0, 0x16, 0x78, 0xf6, 0x90, 0x88, 0xc0, 0xa1, 
+        0xb2, 0xfd, 0x60, 0x33, 0x20, 0xa0, 0x33, 0x10, 0x60, 0x55, 0x20, 0xa0, 0x55, 0x10, 0x10, 0x4f, 
+        0x40, 0x37, 0x35, 0x0b, 0x37, 0x15, 0xc4, 0x20, 0x33, 0x81, 0x00, 0x22, 0xa1, 0x82, 0xc8, 0xff, 
+        0x50, 0x33, 0xc0, 0x47, 0xb2, 0x02, 0x32, 0xc3, 0xff, 0x40, 0x22, 0xc0, 0x20, 0x33, 0x81, 0x00, 
+        0x22, 0xa1, 0x0c, 0x0a, 0x0c, 0x1b, 0x3c, 0x49, 0xb0, 0xaa, 0x81, 0x00, 0xbb, 0xa1, 0x57, 0x33, 
+        0x0f, 0x57, 0x13, 0x3f, 0x1b, 0xbb, 0x50, 0x33, 0xc0, 0x47, 0xb2, 0x01, 0x0b, 0x33, 0x40, 0x22, 
+        0xc0, 0x20, 0x33, 0x81, 0x00, 0x22, 0xa1, 0x0b, 0x99, 0x56, 0xb9, 0xfd, 0x92, 0xa3, 0xfe, 0x9a, 
+        0x88, 0x92, 0xd9, 0x04, 0x97, 0xb8, 0x38, 0x57, 0x33, 0x07, 0x57, 0x13, 0x1e, 0x1b, 0xbb, 0x16, 
+        0x5b, 0x08, 0x2d, 0x0b, 0xc0, 0x88, 0x01, 0x8a, 0x3a, 0x70, 0x7f, 0x05, 0x10, 0x77, 0x01, 0x70, 
+        0x33, 0x20, 0x0d, 0xf0, 0x47, 0xb2, 0xbc, 0x86, 0xf1, 0xff, 0x00, 0x00, 0x47, 0x32, 0xe2, 0x47, 
+        0x92, 0xda, 0x1b, 0xbb, 0x16, 0x0b, 0x06, 0xb0, 0xb1, 0x41, 0xf0, 0xbb, 0x11, 0x46, 0xf4, 0xff, 
+        0x96, 0x98, 0x00, 0x1b, 0x89, 0xc0, 0x38, 0x01, 0x0c, 0x02, 0xc6, 0xf2, 0xff, 0x80, 0x80, 0x60, 
+        0x00, 0x08, 0x40, 0xf6, 0xc8, 0x0d, 0x00, 0x6b, 0xa1, 0xb0, 0xba, 0x81, 0xa0, 0xa0, 0x91, 0x86, 
+        0x04, 0x00, 0x00, 0x00, 0xf6, 0xd8, 0x35, 0x00, 0x9b, 0xa1, 0xb0, 0x6a, 0x81, 0xa0, 0xb0, 0x91, 
+        0x0c, 0x0a, 0x90, 0x22, 0x20, 0x0c, 0x08, 0x20, 0x33, 0x20, 0x8c, 0x33, 0x0c, 0x19, 0x90, 0x66, 
+        0x20, 0xd6, 0xd6, 0xf8, 0x1b, 0xbb, 0x8c, 0xeb, 0xf0, 0x66, 0x11, 0x56, 0x36, 0xf8, 0xb0, 0xb1, 
+        0x41, 0xf0, 0xbb, 0x11, 0x86, 0xde, 0xff, 0x00, 0x1b, 0xaa, 0x06, 0xdd, 0xff, 0x70, 0x3f, 0x05, 
+        0x10, 0x33, 0x01, 0x0c, 0x02, 0x0d, 0xf0, 0x00, 0x61, 0x6f, 0xfd, 0x67, 0x43, 0x25, 0x30, 0x44, 
+        0xa5, 0x60, 0x53, 0x95, 0x50, 0x44, 0xc0, 0xe6, 0xc4, 0x25, 0xa6, 0x14, 0x2e, 0x60, 0x73, 0x20, 
+        0x10, 0x45, 0x40, 0x20, 0x57, 0x81, 0x00, 0x14, 0x40, 0x50, 0x50, 0x91, 0x50, 0x20, 0x60, 0x70, 
+        0x25, 0xb3, 0x0d, 0xf0, 0x40, 0x43, 0x11, 0x20, 0x44, 0x20, 0x16, 0x24, 0x00, 0x32, 0xa0, 0x00, 
+        0x50, 0x46, 0x11, 0x0b, 0x54, 0x30, 0x45, 0xb3, 0x2d, 0x04, 0x0d, 0xf0, 0x0c, 0x02, 0x0d, 0xf0, 
+        0x41, 0x5f, 0xfd, 0x40, 0x53, 0xc0, 0x50, 0x63, 0x30, 0x96, 0x36, 0x05, 0x50, 0x64, 0xa5, 0x16, 
+        0xd6, 0x04, 0x42, 0xa0, 0xff, 0x47, 0xa6, 0x27, 0x10, 0x4d, 0x40, 0x20, 0x55, 0x81, 0x00, 0x42, 
+        0xa1, 0x30, 0x6f, 0x05, 0x10, 0x66, 0x01, 0x50, 0x26, 0x20, 0xd6, 0x64, 0x00, 0x1b, 0x22, 0xf0, 
+        0x44, 0x11, 0x8c, 0x24, 0x0d, 0xf0, 0x00, 0x00, 0x20, 0x21, 0x41, 0xf0, 0x22, 0x11, 0x0d, 0xf0, 
+        0x41, 0x4d, 0xfd, 0x47, 0xc3, 0x0a, 0x40, 0x53, 0x11, 0x20, 0x55, 0x20, 0x8c, 0x15, 0x40, 0x41, 
+        0x41, 0xc0, 0x44, 0x11, 0x30, 0x6f, 0x05, 0x00, 0x41, 0x40, 0x40, 0x26, 0x81, 0x0d, 0xf0, 0x00, 
+        0x30, 0x64, 0xa5, 0x52, 0xa3, 0x80, 0x60, 0x65, 0xc0, 0x1b, 0x66, 0xf6, 0xc6, 0x29, 0x30, 0x55, 
+        0x11, 0x30, 0x55, 0x20, 0x50, 0x55, 0x11, 0x50, 0x5b, 0x41, 0x10, 0x4d, 0x40, 0x20, 0x55, 0x81, 
+        0x00, 0x42, 0xa1, 0x00, 0x06, 0x40, 0x00, 0x74, 0xa1, 0x40, 0x45, 0x81, 0x50, 0x50, 0x91, 0x16, 
+        0xe7, 0xf8, 0x60, 0x44, 0x20, 0x06, 0xe2, 0xff, 0x30, 0x2f, 0x05, 0x10, 0x22, 0x01, 0x0d, 0xf0, 
+        0x12, 0xc1, 0xd0, 0x22, 0x61, 0x00, 0x52, 0x61, 0x03, 0x42, 0x61, 0x02, 0x09, 0x61, 0x39, 0x11, 
+        0xc9, 0x71, 0xd9, 0x81, 0xcd, 0x02, 0xdd, 0x04, 0x3d, 0x04, 0x45, 0x69, 0x00, 0x48, 0x31, 0x08, 
+        0x11, 0xc0, 0x44, 0x82, 0xd0, 0x00, 0x82, 0xc8, 0x71, 0xd8, 0x81, 0x4a, 0x00, 0x0a, 0x33, 0x08, 
+        0x61, 0x12, 0xc1, 0x30, 0x0d, 0xf0, 0x00, 0x00, 0x1c, 0x89, 0x1c, 0x0a, 0x71, 0x29, 0xfd, 0x0c, 
+        0x04, 0x0c, 0x88, 0x00, 0x04, 0x40, 0x20, 0x60, 0x91, 0x00, 0x08, 0x40, 0x60, 0x60, 0x74, 0x6a, 
+        0x67, 0x20, 0x80, 0x91, 0x80, 0x80, 0x74, 0x00, 0x0a, 0x40, 0x20, 0x50, 0x91, 0x50, 0x50, 0x74, 
+        0x00, 0x09, 0x40, 0x20, 0x30, 0x91, 0x62, 0x06, 0x00, 0x8a, 0x87, 0x30, 0x30, 0x74, 0x5a, 0x57, 
+        0x52, 0x05, 0x00, 0x3a, 0x37, 0x82, 0x08, 0x00, 0x32, 0x03, 0x00, 0x8a, 0x26, 0x5a, 0x22, 0x3a, 
+        0x22, 0x0d, 0xf0, 0x00, 0x62, 0xa0, 0xb0, 0x60, 0x11, 0xc0, 0x59, 0x31, 0x49, 0x21, 0x39, 0x11, 
+        0x02, 0x61, 0x1f, 0xd2, 0x61, 0x21, 0xc2, 0x61, 0x20, 0xe2, 0x61, 0x22, 0xf2, 0x61, 0x23, 0xed, 
+        0x02, 0xfd, 0x04, 0xcd, 0x03, 0xdd, 0x03, 0x0d, 0x02, 0x09, 0x01, 0x40, 0x34, 0x20, 0x16, 0xb5, 
+        0x1e, 0x57, 0xbc, 0x02, 0x06, 0x73, 0x00, 0x42, 0x61, 0x29, 0x02, 0x61, 0x2a, 0xf0, 0xf5, 0x40, 
+        0x56, 0x5f, 0x04, 0xc7, 0x35, 0x05, 0x47, 0xb2, 0x02, 0xc6, 0x03, 0x01, 0x30, 0x20, 0xc0, 0x27, 
+        0x30, 0x1a, 0xd2, 0x21, 0x21, 0xe2, 0x21, 0x22, 0xf2, 0x21, 0x23, 0x50, 0x0c, 0xc0, 0x42, 0xa0, 
+        0xb0, 0xc2, 0x21, 0x20, 0x3d, 0x00, 0x02, 0x21, 0x1f, 0x4a, 0x11, 0x0d, 0xf0, 0xd2, 0x21, 0x21, 
+        0xe2, 0x21, 0x22, 0xf2, 0x21, 0x23, 0x50, 0x0c, 0xc0, 0x42, 0xa0, 0xb0, 0xc2, 0x21, 0x20, 0x0b, 
+        0x30, 0x02, 0x21, 0x1f, 0x4a, 0x11, 0x0d, 0xf0, 0x00, 0xd2, 0x21, 0x29, 0xed, 0x02, 0x2c, 0x04, 
+        0xf0, 0x44, 0xc0, 0x00, 0x04, 0x40, 0x42, 0x61, 0x17, 0xc0, 0x20, 0x91, 0x00, 0x1f, 0x40, 0x22, 
+        0x61, 0x18, 0xd0, 0x35, 0x81, 0x32, 0x61, 0x1d, 0x30, 0x30, 0xf5, 0x32, 0x61, 0x1e, 0xc5, 0x47, 
+        0x00, 0x32, 0x21, 0x17, 0x22, 0x61, 0x1a, 0x22, 0x61, 0x26, 0x00, 0x1f, 0x40, 0x00, 0xcc, 0xa1, 
+        0x22, 0x21, 0x18, 0x00, 0x03, 0x40, 0xe0, 0x00, 0x91, 0x32, 0x21, 0x1e, 0x00, 0xcc, 0x20, 0xc2, 
+        0x61, 0x19, 0xc0, 0xc0, 0xf5, 0xc5, 0x51, 0x00, 0x00, 0x42, 0x11, 0x02, 0x21, 0x26, 0x22, 0x21, 
+        0x1d, 0x40, 0x4c, 0x20, 0xcd, 0x04, 0x20, 0x20, 0xf4, 0x22, 0x61, 0x1b, 0x00, 0x22, 0x82, 0x27, 
+        0xb4, 0x1b, 0x0b, 0x60, 0x52, 0x21, 0x1d, 0x62, 0x61, 0x1a, 0x4a, 0xc5, 0x57, 0x3c, 0x0e, 0x27, 
+        0xbc, 0x0b, 0x82, 0xc0, 0xfe, 0x72, 0x21, 0x1d, 0x82, 0x61, 0x1a, 0xc0, 0xc7, 0x80, 0x32, 0x21, 
+        0x1e, 0x20, 0xcc, 0xc0, 0xc0, 0x2c, 0x20, 0x45, 0x41, 0x00, 0x32, 0x21, 0x1e, 0x22, 0x61, 0x28, 
+        0x22, 0x61, 0x27, 0x92, 0x21, 0x19, 0x2d, 0x0c, 0x90, 0x90, 0xf4, 0x92, 0x61, 0x1c, 0x45, 0x4c, 
+        0x00, 0x02, 0x21, 0x28, 0x42, 0x21, 0x1a, 0x32, 0x21, 0x27, 0x00, 0x62, 0x11, 0x52, 0x21, 0x1c, 
+        0x22, 0x21, 0x1b, 0x60, 0x55, 0x20, 0xcd, 0x05, 0x30, 0x22, 0x82, 0x27, 0xb5, 0x11, 0x72, 0x21, 
+        0x1d, 0x0b, 0x03, 0x5a, 0xc7, 0x77, 0x3c, 0x07, 0x27, 0xbc, 0x04, 0x02, 0xc3, 0xfe, 0xca, 0xc7, 
+        0x20, 0xcc, 0xc0, 0x00, 0x1f, 0x40, 0x00, 0x24, 0x11, 0x00, 0xdd, 0xa1, 0x3d, 0x0d, 0x20, 0x20, 
+        0x20, 0xc5, 0x4b, 0x00, 0x5d, 0x02, 0x0d, 0x03, 0x37, 0x3c, 0x10, 0x00, 0x1f, 0x40, 0x00, 0x4e, 
+        0xa1, 0x37, 0x9c, 0x20, 0x27, 0xb4, 0x1d, 0xc6, 0x01, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x40, 0x00, 
+        0x4e, 0xa1, 0x0c, 0x13, 0xd0, 0x25, 0xc0, 0x27, 0x35, 0x01, 0x0c, 0x03, 0x52, 0x21, 0x1d, 0x50, 
+        0x50, 0xc0, 0x30, 0x35, 0xc0, 0x30, 0x3c, 0xc0, 0x02, 0x21, 0x17, 0x20, 0x54, 0xc0, 0x57, 0x34, 
+        0x27, 0xe2, 0x21, 0x22, 0xd2, 0x21, 0x21, 0xc2, 0x21, 0x20, 0x00, 0x10, 0x40, 0x00, 0x43, 0xa1, 
+        0x02, 0x21, 0x1f, 0x00, 0x0f, 0x40, 0x30, 0x30, 0x91, 0x50, 0x20, 0x91, 0xf2, 0x21, 0x23, 0x40, 
+        0x22, 0x20, 0x42, 0xa0, 0xb0, 0x4a, 0x11, 0x0d, 0xf0, 0xc2, 0x21, 0x20, 0xd2, 0x21, 0x21, 0xe2, 
+        0x21, 0x22, 0x00, 0x10, 0x40, 0x0b, 0x33, 0x02, 0x21, 0x1f, 0x00, 0x43, 0xa1, 0x00, 0x0f, 0x40, 
+        0x30, 0x30, 0x91, 0x50, 0x20, 0x91, 0xf2, 0x21, 0x23, 0x40, 0x22, 0x20, 0x42, 0xa0, 0xb0, 0x4a, 
+        0x11, 0x0d, 0xf0, 0x00, 0x02, 0x21, 0x1f, 0xd2, 0x21, 0x21, 0xe2, 0x21, 0x22, 0xf2, 0x21, 0x23, 
+        0x3d, 0x0c, 0x42, 0xa0, 0xb0, 0xc2, 0x21, 0x20, 0x4a, 0x11, 0x0d, 0xf0, 0x00, 0x47, 0x3c, 0x02, 
+        0x06, 0x2a, 0x00, 0x20, 0xf4, 0x40, 0x29, 0xb1, 0x8c, 0xc2, 0x29, 0xb1, 0x00, 0x12, 0x40, 0x00, 
+        0xf4, 0xa1, 0x00, 0xdc, 0x81, 0x00, 0xe0, 0xa1, 0x2d, 0x0d, 0xe0, 0x40, 0xf5, 0xf0, 0x30, 0xf5, 
+        0x32, 0x61, 0x14, 0x42, 0x61, 0x12, 0xc5, 0x3a, 0x00, 0x32, 0x21, 0x14, 0xc2, 0x21, 0x12, 0x00, 
+        0x02, 0x11, 0xf0, 0x50, 0xf4, 0x52, 0x61, 0x11, 0x2d, 0x0d, 0x00, 0xcc, 0x20, 0xc9, 0xe1, 0xc5, 
+        0x2c, 0x00, 0x02, 0x21, 0x11, 0x20, 0x00, 0x82, 0x07, 0xbc, 0x0b, 0xc8, 0xe1, 0xfa, 0xcc, 0xf7, 
+        0x3c, 0x04, 0x07, 0xbc, 0x01, 0xca, 0xcf, 0xe0, 0xd0, 0xf4, 0x32, 0x21, 0x14, 0x00, 0xcc, 0xc0, 
+        0x2d, 0x0c, 0x05, 0x37, 0x00, 0x00, 0xe2, 0x11, 0x32, 0x21, 0x14, 0x2d, 0x0c, 0xe0, 0xed, 0x20, 
+        0xdd, 0x0e, 0x85, 0x29, 0x00, 0x02, 0x21, 0x11, 0x20, 0x00, 0x82, 0x07, 0xbe, 0x09, 0xfa, 0xde, 
+        0xf7, 0x3d, 0x04, 0x07, 0xbd, 0x01, 0xda, 0xdf, 0xc2, 0x21, 0x20, 0xe2, 0x21, 0x22, 0xf2, 0x21, 
+        0x23, 0x42, 0xa0, 0xb0, 0x00, 0x2d, 0xc0, 0x38, 0xb1, 0x02, 0x21, 0x1f, 0xd2, 0x21, 0x21, 0x00, 
+        0x03, 0x40, 0x20, 0x20, 0x91, 0x0c, 0x03, 0x4a, 0x11, 0x0d, 0xf0, 0x00, 0x02, 0x61, 0x2a, 0x56, 
+        0xb4, 0x00, 0x22, 0xa0, 0x01, 0x45, 0x25, 0x00, 0x02, 0x21, 0x2a, 0x20, 0xf2, 0x20, 0x40, 0xff, 
+        0x40, 0xdc, 0x14, 0x49, 0xb1, 0xf0, 0xd0, 0xf4, 0xf0, 0x4c, 0xc0, 0x42, 0x61, 0x15, 0xf0, 0xc0, 
+        0xf5, 0xc6, 0x28, 0x00, 0x00, 0x00, 0x49, 0xb1, 0x2c, 0x03, 0x00, 0x14, 0x40, 0x00, 0xff, 0xa1, 
+        0x40, 0x33, 0xc0, 0x00, 0x03, 0x40, 0xc0, 0x20, 0x91, 0x29, 0xc1, 0x00, 0x14, 0x40, 0x00, 0xe0, 
+        0xa1, 0x00, 0xdc, 0x81, 0xd2, 0x61, 0x15, 0xf0, 0xc0, 0xf5, 0xd0, 0xd0, 0xf5, 0x3d, 0x0c, 0x45, 
+        0x2d, 0x00, 0x00, 0x42, 0x11, 0x3d, 0x0c, 0x28, 0xc1, 0x40, 0x4d, 0x20, 0x49, 0x91, 0x42, 0x61, 
+        0x10, 0xf0, 0xd0, 0xf4, 0x45, 0x1f, 0x00, 0x52, 0x21, 0x10, 0x20, 0x0d, 0x82, 0x07, 0xb5, 0x11, 
+        0x68, 0x91, 0xfa, 0x66, 0x62, 0x61, 0x10, 0xf7, 0x36, 0x07, 0x07, 0xb6, 0x04, 0x6a, 0x8f, 0x82, 
+        0x61, 0x10, 0x3d, 0x0c, 0x92, 0x21, 0x15, 0x22, 0x21, 0x10, 0x90, 0x90, 0xf4, 0x00, 0x22, 0xc0, 
+        0x22, 0x61, 0x10, 0x99, 0xd1, 0xc5, 0x28, 0x00, 0x3d, 0x0c, 0x00, 0xb2, 0x11, 0xa8, 0xd1, 0x22, 
+        0x21, 0x10, 0xb0, 0xaa, 0x20, 0xa9, 0xa1, 0xa2, 0x61, 0x25, 0x05, 0x1b, 0x00, 0x02, 0x21, 0x25, 
+        0x20, 0x2d, 0x82, 0x27, 0xb0, 0x0b, 0x08, 0xa1, 0xfa, 0x00, 0xf7, 0x30, 0x04, 0x27, 0xb0, 0x01, 
+        0x0a, 0x0f, 0x20, 0x30, 0xc0, 0x32, 0x61, 0x15, 0x22, 0x21, 0x15, 0x3d, 0x0c, 0xe0, 0x40, 0xf5, 
+        0x42, 0x61, 0x12, 0x05, 0x25, 0x00, 0x3d, 0x0c, 0x00, 0x62, 0x11, 0x52, 0x21, 0x12, 0x22, 0x21, 
+        0x15, 0x60, 0x55, 0x20, 0x59, 0xf1, 0x52, 0x61, 0x16, 0x05, 0x17, 0x00, 0x72, 0x21, 0x16, 0x20, 
+        0x0d, 0x82, 0x07, 0xb7, 0x12, 0x88, 0xf1, 0xfa, 0x88, 0x82, 0x61, 0x16, 0xf7, 0x38, 0x08, 0x07, 
+        0xb8, 0x05, 0x80, 0xaf, 0x80, 0xa2, 0x61, 0x16, 0x3d, 0x0c, 0x22, 0x21, 0x16, 0xe0, 0xb0, 0xf4, 
+        0xb2, 0x61, 0x13, 0x00, 0x22, 0xc0, 0x22, 0x61, 0x16, 0x85, 0x20, 0x00, 0xe8, 0xb1, 0x00, 0x22, 
+        0x11, 0x02, 0x21, 0x13, 0x3d, 0x0c, 0x20, 0x00, 0x20, 0x22, 0x21, 0x16, 0x09, 0x81, 0x02, 0x61, 
+        0x24, 0x85, 0x12, 0x00, 0x02, 0x21, 0x24, 0x20, 0x2d, 0x82, 0x27, 0xb0, 0x2c, 0x08, 0x81, 0xfa, 
+        0x00, 0xf7, 0x30, 0x25, 0x27, 0xb0, 0x22, 0x0c, 0x03, 0xc2, 0x21, 0x20, 0xd2, 0x21, 0x21, 0x42, 
+        0xa0, 0xb0, 0x00, 0x0e, 0x40, 0x0a, 0x0f, 0xe2, 0x21, 0x22, 0xf2, 0x21, 0x23, 0x20, 0x20, 0xc0, 
+        0x20, 0x20, 0x91, 0x02, 0x21, 0x1f, 0x4a, 0x11, 0x0d, 0xf0, 0x0c, 0x03, 0xc2, 0x21, 0x20, 0xd2, 
+        0x21, 0x21, 0xf2, 0x21, 0x23, 0x42, 0xa0, 0xb0, 0x20, 0x20, 0xc0, 0x00, 0x0e, 0x40, 0x02, 0x21, 
+        0x1f, 0xe2, 0x21, 0x22, 0x20, 0x20, 0x91, 0x4a, 0x11, 0x0d, 0xf0, 0x00, 0x02, 0x21, 0x1f, 0xc2, 
+        0x21, 0x20, 0xe2, 0x21, 0x22, 0xf2, 0x21, 0x23, 0x3d, 0x0d, 0x42, 0xa0, 0xb0, 0xd2, 0x21, 0x21, 
+        0x4a, 0x11, 0x0d, 0xf0, 0x0d, 0xf0, 0x00, 0x00, 0x30, 0x72, 0x30, 0x20, 0x61, 0x60, 0x30, 0x31, 
+        0x60, 0xb6, 0x23, 0x37, 0x60, 0x51, 0x41, 0x37, 0x35, 0x3d, 0x50, 0xf6, 0x40, 0x40, 0xf3, 0x40, 
+        0x50, 0x44, 0xc0, 0x00, 0x14, 0x40, 0x00, 0x33, 0xa1, 0x22, 0xa0, 0x00, 0x37, 0x36, 0x04, 0x30, 
+        0x66, 0xc0, 0x1b, 0x22, 0xf0, 0x22, 0x11, 0x30, 0x31, 0x41, 0x0b, 0x44, 0x56, 0xc4, 0xfe, 0x37, 
+        0x36, 0x01, 0x1b, 0x22, 0x20, 0x50, 0x60, 0x70, 0x25, 0xa3, 0x0d, 0xf0, 0x9c, 0x53, 0x60, 0x20, 
+        0x60, 0x70, 0x26, 0xb3, 0x0d, 0xf0, 0x00, 0x00, 0x37, 0x36, 0x10, 0x0c, 0x12, 0x7c, 0xf4, 0x70, 
+        0x24, 0xa3, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x44, 0x49, 0x56, 0x30, 0x0c, 0x02, 0x0d, 0xf0, 
+        0x7d, 0x02, 0x20, 0x21, 0x60, 0x30, 0x31, 0x60, 0xb6, 0x23, 0x30, 0x50, 0xf2, 0x40, 0x40, 0xf3, 
+        0x40, 0x47, 0xb5, 0x17, 0x50, 0x44, 0xc0, 0x00, 0x14, 0x40, 0x00, 0x33, 0xa1, 0x37, 0x32, 0x02, 
+        0x30, 0x22, 0xc0, 0x30, 0x31, 0x41, 0x42, 0xc4, 0xff, 0x56, 0x04, 0xff, 0x37, 0x32, 0x02, 0x30, 
+        0x22, 0xc0, 0xd6, 0x27, 0x00, 0x20, 0x20, 0x60, 0x0d, 0xf0, 0x00, 0x00, 0xcc, 0x53, 0x00, 0x00, 
+        0x00, 0x44, 0x49, 0x56, 0x30, 0x0c, 0x02, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0xb6, 0x23, 0x30, 0x6d, 
+        0x02, 0x50, 0xf6, 0x40, 0x40, 0xf3, 0x40, 0x47, 0xb5, 0x29, 0x50, 0x44, 0xc0, 0x00, 0x14, 0x40, 
+        0x00, 0x33, 0xa1, 0x0c, 0x02, 0x37, 0x36, 0x04, 0x30, 0x66, 0xc0, 0x1b, 0x22, 0xf0, 0x22, 0x11, 
+        0x30, 0x31, 0x41, 0x0b, 0x44, 0x56, 0xc4, 0xfe, 0x37, 0x36, 0x01, 0x1b, 0x22, 0x0d, 0xf0, 0x00, 
+        0x8c, 0x93, 0x0d, 0xf0, 0x37, 0x36, 0x0c, 0x0c, 0x12, 0x0d, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x44, 0x49, 0x56, 0x30, 0x0c, 0x02, 0x0d, 0xf0, 0xbc, 0x62, 0x0c, 0x07, 0x06, 0x02, 0x00, 0x00, 
+        0xac, 0xe2, 0x20, 0x7f, 0x05, 0x20, 0x21, 0x60, 0x40, 0xf2, 0x40, 0x00, 0x14, 0x40, 0x00, 0x52, 
+        0xa1, 0x50, 0x28, 0x41, 0x80, 0x65, 0x01, 0x52, 0xa0, 0x9d, 0x40, 0x55, 0xc0, 0x90, 0x55, 0x01, 
+        0x5a, 0x22, 0x10, 0x77, 0x01, 0x70, 0x22, 0x20, 0xd6, 0x66, 0x00, 0x1b, 0x22, 0xf0, 0x66, 0x11, 
+        0x8c, 0x06, 0x0d, 0xf0, 0x20, 0x21, 0x41, 0xf0, 0x22, 0x11, 0x0d, 0xf0, 0xac, 0xe2, 0x0c, 0x07, 
+        0x06, 0x02, 0x00, 0x00, 0xac, 0x62, 0x20, 0x7f, 0x05, 0x20, 0x21, 0x60, 0x40, 0xf2, 0x40, 0x00, 
+        0x14, 0x40, 0x00, 0x52, 0xa1, 0x50, 0x3b, 0x41, 0xb0, 0x25, 0x01, 0x52, 0xa4, 0x1d, 0x40, 0x55, 
+        0xc0, 0xc0, 0x55, 0x01, 0x5a, 0x33, 0x10, 0x77, 0x01, 0x70, 0x33, 0x20, 0x0d, 0xf0, 0x0c, 0x03, 
+        0x0d, 0xf0, 0x00, 0x00, 0xb6, 0x23, 0x28, 0x50, 0xf2, 0x40, 0x40, 0xf3, 0x40, 0x47, 0xb5, 0x17, 
+        0x50, 0x44, 0xc0, 0x00, 0x14, 0x40, 0x00, 0x33, 0xa1, 0x37, 0x32, 0x02, 0x30, 0x22, 0xc0, 0x30, 
+        0x31, 0x41, 0x42, 0xc4, 0xff, 0x56, 0x04, 0xff, 0x37, 0x32, 0x02, 0x30, 0x22, 0xc0, 0x0d, 0xf0, 
+        0xcc, 0x53, 0x00, 0x00, 0x00, 0x44, 0x49, 0x56, 0x30, 0x0c, 0x02, 0x0d, 0xf0, 0x00, 0x00, 0x00, 
+        0x12, 0xc1, 0xe0, 0xc9, 0x41, 0xd9, 0x51, 0xe9, 0x61, 0xf9, 0x71, 0x20, 0x40, 0xf5, 0x30, 0x50, 
+        0xf5, 0x50, 0x62, 0xc1, 0x30, 0xb4, 0xc1, 0x0c, 0x09, 0xba, 0x66, 0xb7, 0xb6, 0x02, 0x92, 0xc9, 
+        0x01, 0x10, 0x40, 0x40, 0x60, 0x99, 0x81, 0x30, 0xb2, 0xc1, 0x00, 0x66, 0xa1, 0xba, 0x66, 0xb7, 
+        0xb6, 0x01, 0x1b, 0x99, 0x50, 0x34, 0xc1, 0x9a, 0x33, 0x2d, 0x06, 0xc8, 0x41, 0xd8, 0x51, 0xe8, 
+        0x61, 0xf8, 0x71, 0x12, 0xc1, 0x20, 0x0d, 0xf0, 0x00, 0x80, 0xfe, 0x3f, 0x74, 0x07, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x5a, 0x00, 0xf0, 0x0b, 0xf0, 0x48, 0x10, 0x40, 0x9c, 0x22, 0x10, 0x40, 0xa0, 0x48, 0x10, 0x40, 
+        0xd0, 0x51, 0x10, 0x40, 0xec, 0x60, 0x00, 0x40, 0xd0, 0x60, 0x00, 0x40, 0xb8, 0x37, 0x10, 0x40, 
+        0xc8, 0x51, 0x10, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x00, 0x24, 0x00, 0x28, 0x00, 0x2c, 0x00, 0x30, 0x00, 0x34, 
+        0x00, 0x40, 0x00, 0x60, 0x00, 0x64, 0x00, 0x68, 0x00, 0x70, 0x00, 0x74, 0x00, 0x78, 0x00, 0x7c, 
+        0xfa, 0x01, 0xfa, 0x01, 0xfa, 0x01, 0xfa, 0x01, 0xfa, 0x01, 0xfa, 0x01, 0xfa, 0x01, 0xfa, 0x01, 
+        0xf8, 0x01, 0xfa, 0x01, 0xfa, 0x01, 0xfa, 0x01, 0xf8, 0x01, 0xfa, 0x01, 0xfa, 0x01, 0xfa, 0x01, 
+        0xfa, 0x01, 0xfa, 0x01, 0xfa, 0x01, 0xfa, 0x01, 0xfa, 0x01, 0xfa, 0x01, 0xf8, 0x01, 0xf8, 0x01, 
+        0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x24, 0xff, 0x3f, 0x01, 0x01, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x3a, 0x01, 0x02, 0x01, 0xdf, 0x00, 0xd5, 0x00, 0x3a, 0x01, 0xa2, 0x00, 0x7f, 0x00, 0x75, 0x00, 
+        0x2c, 0x00, 0x2c, 0x00, 0x30, 0x00, 0x3c, 0x00, 0x2c, 0x00, 0x2c, 0x00, 0x30, 0x00, 0x3c, 0x00, 
+        0x3c, 0x00, 0x30, 0x00, 0x30, 0x00, 0x2c, 0x00, 0x2c, 0x00, 0x2c, 0x00, 0x2c, 0x00, 0x2c, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x0b, 0x02, 0x0b, 0x01, 0x0b, 0x02, 0x0b, 0x02, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x1f, 0x02, 0x16, 0x02, 0x11, 0x01, 0x10, 0x02, 0x07, 0x72, 0x00, 0x00, 0x17, 0x02, 0x15, 0x02, 
+        0x11, 0x01, 0x10, 0x02, 0x07, 0x72, 0x00, 0x00, 0x16, 0x02, 0x14, 0x02, 0x11, 0x01, 0x10, 0x02, 
+        0x07, 0x72, 0x00, 0x00, 0x15, 0x02, 0x13, 0x02, 0x11, 0x01, 0x10, 0x02, 0x07, 0x60, 0x00, 0x00, 
+        0x14, 0x02, 0x12, 0x02, 0x11, 0x01, 0x10, 0x02, 0x07, 0x55, 0x00, 0x00, 0x13, 0x02, 0x12, 0x01, 
+        0x11, 0x02, 0x10, 0x02, 0x07, 0x4b, 0x00, 0x00, 0x12, 0x02, 0x11, 0x01, 0x10, 0x02, 0x10, 0x02, 
+        0x07, 0x40, 0x00, 0x00, 0x11, 0x02, 0x10, 0x01, 0x10, 0x02, 0x10, 0x02, 0x07, 0x3b, 0x00, 0x00, 
+        0x10, 0x02, 0x10, 0x01, 0x10, 0x01, 0x10, 0x03, 0x07, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x1f, 0x02, 0x16, 0x02, 0x11, 0x01, 0x10, 0x02, 0x07, 0x72, 0x00, 0x00, 0x17, 0x02, 0x15, 0x02, 
+        0x11, 0x01, 0x10, 0x02, 0x07, 0x72, 0x00, 0x00, 0x16, 0x02, 0x14, 0x02, 0x11, 0x01, 0x10, 0x02, 
+        0x07, 0x72, 0x00, 0x00, 0x15, 0x02, 0x13, 0x02, 0x11, 0x01, 0x10, 0x02, 0x07, 0x60, 0x00, 0x00, 
+        0x14, 0x02, 0x12, 0x02, 0x11, 0x01, 0x10, 0x02, 0x07, 0x55, 0x00, 0x00, 0x13, 0x02, 0x12, 0x01, 
+        0x11, 0x02, 0x10, 0x02, 0x07, 0x4b, 0x00, 0x00, 0x12, 0x02, 0x11, 0x01, 0x10, 0x02, 0x00, 0x02, 
+        0x07, 0x40, 0x00, 0x00, 0x11, 0x02, 0x10, 0x01, 0x05, 0x02, 0x00, 0x02, 0x07, 0x3b, 0x00, 0x00, 
+        0x10, 0x02, 0x05, 0x01, 0x05, 0x01, 0x00, 0x03, 0x07, 0x32, 0x00, 0x00, 0x01, 0x02, 0x00, 0x01, 
+        0x00, 0x01, 0x00, 0x03, 0x07, 0x39, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x04, 
+        0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x0c, 0x02, 0x08, 0x01, 0x0d, 0x02, 0x0b, 0x02, 0x07, 0x72, 0x00, 0x00, 0x08, 0x02, 0x0d, 0x02, 
+        0x09, 0x01, 0x0b, 0x02, 0x07, 0x65, 0x00, 0x00, 0x0d, 0x02, 0x09, 0x02, 0x0e, 0x01, 0x0b, 0x02, 
+        0x07, 0x5c, 0x00, 0x00, 0x09, 0x02, 0x0e, 0x01, 0x0a, 0x02, 0x0b, 0x02, 0x07, 0x58, 0x00, 0x00, 
+        0x0e, 0x02, 0x0a, 0x02, 0x0f, 0x01, 0x0b, 0x02, 0x07, 0x52, 0x00, 0x00, 0x0a, 0x02, 0x0f, 0x01, 
+        0x0b, 0x02, 0x0b, 0x02, 0x07, 0x4b, 0x00, 0x00, 0x0f, 0x02, 0x0b, 0x02, 0x0b, 0x01, 0x0b, 0x02, 
+        0x07, 0x38, 0x00, 0x00, 0x0b, 0x02, 0x0b, 0x01, 0x0b, 0x02, 0x0b, 0x02, 0x07, 0x40, 0x00, 0x00, 
+        0x0c, 0x02, 0x08, 0x01, 0x0d, 0x02, 0x0b, 0x02, 0x07, 0x72, 0x00, 0x00, 0x08, 0x02, 0x0d, 0x02, 
+        0x09, 0x01, 0x0b, 0x02, 0x07, 0x65, 0x00, 0x00, 0x0d, 0x02, 0x09, 0x02, 0x0e, 0x01, 0x0b, 0x02, 
+        0x07, 0x5c, 0x00, 0x00, 0x09, 0x02, 0x0e, 0x01, 0x0a, 0x02, 0x0b, 0x02, 0x07, 0x58, 0x00, 0x00, 
+        0x0e, 0x02, 0x0a, 0x02, 0x0f, 0x01, 0x0b, 0x02, 0x07, 0x52, 0x00, 0x00, 0x0a, 0x02, 0x07, 0x01, 
+        0x06, 0x02, 0x00, 0x02, 0x07, 0x4b, 0x00, 0x00, 0x0f, 0x02, 0x0b, 0x02, 0x06, 0x01, 0x00, 0x02, 
+        0x07, 0x38, 0x00, 0x00, 0x0b, 0x02, 0x06, 0x01, 0x05, 0x02, 0x00, 0x02, 0x07, 0x40, 0x00, 0x00, 
+        0x01, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x03, 0x07, 0x39, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 
+        0x00, 0x01, 0x00, 0x04, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x07, 0x02, 0x06, 0x02, 0x05, 0x02, 0x00, 0x01, 0x07, 0x40, 0x00, 0x00, 0x06, 0x02, 0x01, 0x02, 
+        0x00, 0x02, 0x00, 0x01, 0x07, 0x39, 0x00, 0x00, 0x01, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x03, 
+        0x07, 0x39, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x04, 0x07, 0x00, 0x00, 0x00, 
+        0x03, 0x03, 0x02, 0x01, 0x01, 0x01, 0x00, 0x02, 0x07, 0x00, 0x00, 0x00, 0x1f, 0x02, 0x1d, 0x02, 
+        0x1b, 0x01, 0x19, 0x02, 0x07, 0x00, 0x00, 0x00, 0x17, 0x02, 0x15, 0x02, 0x13, 0x01, 0x11, 0x02, 
+        0x07, 0x00, 0x00, 0x00, 0x0c, 0x02, 0x0d, 0x02, 0x0b, 0x01, 0x00, 0x02, 0x07, 0x00, 0x00, 0x00, 
+        0xd0, 0x2e, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x5c, 0x86, 0xfe, 0x3f, 0xb8, 0x86, 0xfe, 0x3f, 0x14, 0x87, 0xfe, 0x3f, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0xa8, 0x8e, 0xfe, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        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, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x0e, 0x33, 0xcd, 0xab, 0x34, 0x12, 0x6d, 0xe6, 0xec, 0xde, 0x05, 0x00, 0x0b, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x70, 0x83, 0xfe, 0x3f, 0x80, 0x87, 0xfe, 0x3f, 0x70, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x20, 0x41, 0x00, 0x00, 0x20, 0x42, 0x00, 0x00, 0x80, 0x43, 0x69, 0x65, 0x65, 0x65, 
+        0x38, 0x30, 0x32, 0x31, 0x31, 0x5f, 0x68, 0x64, 0x72, 0x73, 0x69, 0x7a, 0x65, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x69, 0x65, 0x65, 0x65, 
+        0x38, 0x30, 0x32, 0x31, 0x31, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x32, 0x6d, 0x6f, 0x64, 0x65, 0x00, 
+        0x70, 0x83, 0xfe, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02, 
+        0x01, 0x02, 0x02, 0x03, 0x01, 0x02, 0x02, 0x03, 0x02, 0x03, 0x03, 0x04, 0x01, 0x02, 0x02, 0x03, 
+        0x02, 0x03, 0x03, 0x04, 0x02, 0x03, 0x03, 0x04, 0x03, 0x04, 0x04, 0x05, 0x01, 0x02, 0x02, 0x03, 
+        0x02, 0x03, 0x03, 0x04, 0x02, 0x03, 0x03, 0x04, 0x03, 0x04, 0x04, 0x05, 0x02, 0x03, 0x03, 0x04, 
+        0x03, 0x04, 0x04, 0x05, 0x03, 0x04, 0x04, 0x05, 0x04, 0x05, 0x05, 0x06, 0x01, 0x02, 0x02, 0x03, 
+        0x02, 0x03, 0x03, 0x04, 0x02, 0x03, 0x03, 0x04, 0x03, 0x04, 0x04, 0x05, 0x02, 0x03, 0x03, 0x04, 
+        0x03, 0x04, 0x04, 0x05, 0x03, 0x04, 0x04, 0x05, 0x04, 0x05, 0x05, 0x06, 0x02, 0x03, 0x03, 0x04, 
+        0x03, 0x04, 0x04, 0x05, 0x03, 0x04, 0x04, 0x05, 0x04, 0x05, 0x05, 0x06, 0x03, 0x04, 0x04, 0x05, 
+        0x04, 0x05, 0x05, 0x06, 0x04, 0x05, 0x05, 0x06, 0x05, 0x06, 0x06, 0x07, 0x01, 0x02, 0x02, 0x03, 
+        0x02, 0x03, 0x03, 0x04, 0x02, 0x03, 0x03, 0x04, 0x03, 0x04, 0x04, 0x05, 0x02, 0x03, 0x03, 0x04, 
+        0x03, 0x04, 0x04, 0x05, 0x03, 0x04, 0x04, 0x05, 0x04, 0x05, 0x05, 0x06, 0x02, 0x03, 0x03, 0x04, 
+        0x03, 0x04, 0x04, 0x05, 0x03, 0x04, 0x04, 0x05, 0x04, 0x05, 0x05, 0x06, 0x03, 0x04, 0x04, 0x05, 
+        0x04, 0x05, 0x05, 0x06, 0x04, 0x05, 0x05, 0x06, 0x05, 0x06, 0x06, 0x07, 0x02, 0x03, 0x03, 0x04, 
+        0x03, 0x04, 0x04, 0x05, 0x03, 0x04, 0x04, 0x05, 0x04, 0x05, 0x05, 0x06, 0x03, 0x04, 0x04, 0x05, 
+        0x04, 0x05, 0x05, 0x06, 0x04, 0x05, 0x05, 0x06, 0x05, 0x06, 0x06, 0x07, 0x03, 0x04, 0x04, 0x05, 
+        0x04, 0x05, 0x05, 0x06, 0x04, 0x05, 0x05, 0x06, 0x05, 0x06, 0x06, 0x07, 0x04, 0x05, 0x05, 0x06, 
+        0x05, 0x06, 0x06, 0x07, 0x05, 0x06, 0x06, 0x07, 0x06, 0x07, 0x07, 0x08, 0x65, 0x6d, 0x70, 0x74, 
+        0x79, 0x20, 0x6f, 0x74, 0x70, 0x0a, 0x00, 0x00, 0x62, 0x6f, 0x6f, 0x74, 0x69, 0x6e, 0x67, 0x20, 
+        0x6f, 0x6b, 0x0a, 0x00, 0x41, 0x70, 0x72, 0x20, 0x31, 0x32, 0x20, 0x32, 0x30, 0x31, 0x34, 0x00, 
+        0x31, 0x36, 0x3a, 0x30, 0x35, 0x3a, 0x34, 0x38, 0x00, 0x00, 0x00, 0x00, 0x73, 0x65, 0x6e, 0x74, 
+        0x20, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x6f, 0x6e, 0x0a, 0x00, 0x00, 0x76, 0x65, 0x72, 0x3a, 
+        0x25, 0x73, 0x0a, 0x00, 0x30, 0x61, 0x39, 0x39, 0x37, 0x62, 0x33, 0x65, 0x31, 0x62, 0x36, 0x63, 
+        0x00, 0x00, 0x00, 0x00, 0x65, 0x74, 0x73, 0x20, 0x25, 0x73, 0x20, 0x25, 0x73, 0x0a, 0x00, 0x00, 
+        0x62, 0x73, 0x73, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x25, 0x70, 0x2c, 0x65, 0x6e, 0x64, 
+        0x20, 0x25, 0x70, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x6f, 0x6f, 0x62, 0x0a, 0x00, 0x00, 0x00, 0x00, 
+        0x25, 0x73, 0x20, 0x25, 0x75, 0x0a, 0x00, 0x00, 0x61, 0x70, 0x70, 0x5f, 0x6d, 0x61, 0x69, 0x6e, 
+        0x2e, 0x63, 0x00, 0x00, 0x6e, 0x65, 0x77, 0x20, 0x70, 0x75, 0x74, 0x63, 0x21, 0x0a, 0x00, 0x00, 
+        0x64, 0x65, 0x6c, 0x20, 0x69, 0x66, 0x25, 0x64, 0x0a, 0x00, 0x00, 0x00, 0x50, 0x52, 0x45, 0x20, 
+        0x44, 0x4f, 0x57, 0x4e, 0x0a, 0x00, 0x00, 0x00, 0x73, 0x64, 0x69, 0x6f, 0x20, 0x77, 0x61, 0x6b, 
+        0x65, 0x2c, 0x20, 0x63, 0x68, 0x6b, 0x3a, 0x25, 0x64, 0x0a, 0x00, 0x00, 0x73, 0x65, 0x74, 0x20, 
+        0x70, 0x74, 0x6b, 0x20, 0x25, 0x64, 0x21, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x73, 0x65, 0x74, 0x20, 
+        0x77, 0x65, 0x70, 0x20, 0x6b, 0x65, 0x79, 0x25, 0x64, 0x21, 0x0a, 0x00, 0x73, 0x65, 0x74, 0x20, 
+        0x67, 0x74, 0x6b, 0x25, 0x64, 0x0a, 0x00, 0x00, 0x72, 0x6d, 0x20, 0x67, 0x74, 0x6b, 0x25, 0x64, 
+        0x0a, 0x00, 0x00, 0x00, 0x72, 0x6d, 0x20, 0x70, 0x74, 0x6b, 0x25, 0x64, 0x0a, 0x00, 0x00, 0x00, 
+        0x62, 0x63, 0x6e, 0x20, 0x25, 0x64, 0x0a, 0x00, 0x63, 0x6e, 0x74, 0x20, 0x0a, 0x00, 0x00, 0x00, 
+        0x75, 0x6e, 0x63, 0x6e, 0x74, 0x20, 0x0a, 0x00, 0x69, 0x66, 0x25, 0x64, 0x20, 0x61, 0x64, 0x64, 
+        0x20, 0x73, 0x74, 0x61, 0x25, 0x64, 0x3a, 0x25, 0x30, 0x32, 0x78, 0x3a, 0x25, 0x30, 0x32, 0x78, 
+        0x3a, 0x25, 0x30, 0x32, 0x78, 0x3a, 0x25, 0x30, 0x32, 0x78, 0x3a, 0x25, 0x30, 0x32, 0x78, 0x3a, 
+        0x25, 0x30, 0x32, 0x78, 0x0a, 0x00, 0x00, 0x00, 0x69, 0x66, 0x25, 0x64, 0x20, 0x72, 0x6d, 0x20, 
+        0x73, 0x74, 0x61, 0x3a, 0x25, 0x30, 0x32, 0x78, 0x3a, 0x25, 0x30, 0x32, 0x78, 0x3a, 0x25, 0x30, 
+        0x32, 0x78, 0x3a, 0x25, 0x30, 0x32, 0x78, 0x3a, 0x25, 0x30, 0x32, 0x78, 0x3a, 0x25, 0x30, 0x32, 
+        0x78, 0x0a, 0x00, 0x00, 0x63, 0x68, 0x67, 0x20, 0x69, 0x66, 0x25, 0x64, 0x0a, 0x00, 0x00, 0x00, 
+        0x61, 0x64, 0x64, 0x20, 0x69, 0x66, 0x25, 0x64, 0x0a, 0x00, 0x00, 0x00, 0x73, 0x73, 0x70, 0x20, 
+        0x25, 0x64, 0x0a, 0x00, 0x48, 0x42, 0x20, 0x72, 0x65, 0x71, 0x0a, 0x00, 0x52, 0x53, 0x54, 0x20, 
+        0x4d, 0x41, 0x43, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x72, 0x78, 0x20, 0x73, 0x65, 0x6e, 0x73, 0x65, 
+        0x20, 0x73, 0x65, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x25, 0x64, 0x0a, 0x00, 0x74, 0x78, 0x20, 0x72, 
+        0x61, 0x74, 0x65, 0x20, 0x66, 0x69, 0x78, 0x20, 0x74, 0x6f, 0x20, 0x25, 0x64, 0x0a, 0x00, 0x00, 
+        0x73, 0x65, 0x74, 0x20, 0x66, 0x72, 0x65, 0x71, 0x20, 0x74, 0x6f, 0x20, 0x25, 0x64, 0x0a, 0x00, 
+        0x67, 0x74, 0x6b, 0x20, 0x74, 0x6b, 0x69, 0x70, 0x20, 0x6d, 0x69, 0x63, 0x20, 0x65, 0x72, 0x72, 
+        0x6f, 0x72, 0x20, 0x73, 0x65, 0x74, 0x21, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x70, 0x74, 0x6b, 0x20, 
+        0x74, 0x6b, 0x69, 0x70, 0x20, 0x6d, 0x69, 0x63, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x73, 
+        0x65, 0x74, 0x21, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x72, 0x69, 0x66, 0x73, 0x20, 0x73, 0x65, 0x74, 
+        0x20, 0x6f, 0x6b, 0x21, 0x0a, 0x00, 0x00, 0x00, 0x72, 0x69, 0x66, 0x73, 0x20, 0x64, 0x69, 0x73, 
+        0x61, 0x62, 0x6c, 0x65, 0x21, 0x0a, 0x00, 0x00, 0x62, 0x61, 0x63, 0x6b, 0x6f, 0x66, 0x66, 0x20, 
+        0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x20, 0x73, 0x65, 0x74, 0x21, 0x0a, 0x00, 0x00, 0x00, 0x00, 
+        0x62, 0x61, 0x63, 0x6b, 0x6f, 0x66, 0x66, 0x20, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x20, 0x66, 
+        0x61, 0x69, 0x6c, 0x20, 0x74, 0x6f, 0x20, 0x73, 0x65, 0x74, 0x21, 0x0a, 0x00, 0x00, 0x00, 0x00, 
+        0x6f, 0x6e, 0x0a, 0x00, 0x6f, 0x66, 0x66, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x69, 0x6e, 0x64, 0x65, 
+        0x78, 0x3a, 0x20, 0x25, 0x64, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x20, 0x30, 0x78, 0x25, 
+        0x78, 0x20, 0x30, 0x78, 0x25, 0x78, 0x20, 0x30, 0x78, 0x25, 0x78, 0x20, 0x30, 0x78, 0x25, 0x78, 
+        0x0a, 0x00, 0x00, 0x00, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x3a, 0x20, 0x70, 0x6c, 0x6c, 0x5f, 0x63, 
+        0x61, 0x6c, 0x20, 0x65, 0x78, 0x63, 0x65, 0x65, 0x64, 0x73, 0x20, 0x35, 0x6d, 0x73, 0x21, 0x21, 
+        0x21, 0x0a, 0x00, 0x00, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x3a, 0x20, 0x70, 0x6c, 0x6c, 0x5f, 0x63, 
+        0x61, 0x6c, 0x20, 0x65, 0x78, 0x63, 0x65, 0x65, 0x64, 0x73, 0x20, 0x32, 0x6d, 0x73, 0x21, 0x21, 
+        0x21, 0x0a, 0x00, 0x00, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x3d, 0x25, 0x64, 0x2c, 0x20, 
+        0x66, 0x72, 0x65, 0x71, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x3d, 0x25, 0x64, 0x2c, 0x20, 
+        0x00, 0x00, 0x00, 0x00, 0x25, 0x64, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 
+        0x00, 0x00, 0x00, 0x00, 0x6c, 0x6d, 0x61, 0x63, 0x2e, 0x63, 0x00, 0x00, 0x74, 0x78, 0x20, 0x72, 
+        0x74, 0x73, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x30, 0x78, 0x25, 0x78, 0x0a, 0x00, 0x00, 
+        0x74, 0x78, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x30, 0x78, 0x25, 0x78, 0x0a, 0x00, 0x00, 
+        0x57, 0x44, 0x45, 0x56, 0x44, 0x49, 0x41, 0x47, 0x38, 0x20, 0x30, 0x78, 0x25, 0x30, 0x38, 0x78, 
+        0x20, 0x57, 0x44, 0x45, 0x56, 0x44, 0x49, 0x41, 0x47, 0x35, 0x20, 0x30, 0x78, 0x25, 0x30, 0x38, 
+        0x78, 0x20, 0x0a, 0x00, 0x70, 0x6d, 0x2e, 0x63, 0x00, 0x00, 0x00, 0x00, 0x71, 0x75, 0x69, 0x74, 
+        0x53, 0x6c, 0x70, 0x50, 0x6f, 0x72, 0x63, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x73, 0x73, 0x0a, 0x00, 
+        0x77, 0x68, 0x79, 0x20, 0x25, 0x75, 0x20, 0x25, 0x75, 0x20, 0x25, 0x75, 0x20, 0x25, 0x75, 0x0a, 
+        0x00, 0x00, 0x00, 0x00, 0x70, 0x6d, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x20, 0x25, 0x64, 0x20, 
+        0x25, 0x64, 0x20, 0x25, 0x75, 0x2f, 0x25, 0x75, 0x0a, 0x00, 0x00, 0x00, 0x70, 0x6d, 0x20, 0x6f, 
+        0x70, 0x65, 0x6e, 0x20, 0x25, 0x64, 0x20, 0x25, 0x64, 0x0a, 0x00, 0x00, 0x58, 0x25, 0x64, 0x20, 
+        0x25, 0x64, 0x20, 0x25, 0x64, 0x0a, 0x00, 0x00, 0x6f, 0x66, 0x66, 0x53, 0x54, 0x25, 0x64, 0x00, 
+        0x6f, 0x6e, 0x53, 0x54, 0x25, 0x64, 0x0a, 0x00, 0x6e, 0x4f, 0x4e, 0x66, 0x61, 0x69, 0x6c, 0x65, 
+        0x64, 0x2c, 0x20, 0x68, 0x63, 0x68, 0x20, 0x25, 0x64, 0x20, 0x63, 0x63, 0x68, 0x20, 0x25, 0x64, 
+        0x20, 0x30, 0x78, 0x25, 0x30, 0x38, 0x78, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x4f, 0x46, 0x46, 
+        0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x2c, 0x20, 0x68, 0x63, 0x68, 0x20, 0x25, 0x64, 0x20, 0x63, 
+        0x63, 0x68, 0x20, 0x25, 0x64, 0x20, 0x30, 0x78, 0x25, 0x30, 0x38, 0x78, 0x0a, 0x00, 0x00, 0x00, 
+        0x77, 0x0a, 0x00, 0x00, 0x6e, 0x64, 0x61, 0x74, 0x61, 0x20, 0x74, 0x6f, 0x75, 0x74, 0x2c, 0x20, 
+        0x68, 0x63, 0x68, 0x20, 0x25, 0x64, 0x20, 0x63, 0x63, 0x68, 0x20, 0x25, 0x64, 0x20, 0x30, 0x78, 
+        0x25, 0x30, 0x38, 0x78, 0x0a, 0x00, 0x00, 0x00, 0x20, 0x30, 0x78, 0x25, 0x30, 0x38, 0x78, 0x20, 
+        0x00, 0x00, 0x00, 0x00, 0x73, 0x6c, 0x0a, 0x00, 0x73, 0x75, 0x6c, 0x20, 0x25, 0x64, 0x20, 0x25, 
+        0x64, 0x0a, 0x00, 0x00, 0x70, 0x70, 0x2e, 0x63, 0x00, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 
+        0x6d, 0x61, 0x70, 0x20, 0x66, 0x61, 0x69, 0x6c, 0x0a, 0x00, 0x00, 0x00, 0x25, 0x73, 0x3a, 0x20, 
+        0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x00, 0x00, 0x00, 
+        0x72, 0x62, 0x6b, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x74, 0x72, 0x63, 0x2e, 0x63, 0x00, 0x00, 0x00, 
+        0x61, 0x6d, 0x20, 0x6f, 0x6e, 0x20, 0x25, 0x64, 0x0a, 0x00, 0x00, 0x00, 0x66, 0x31, 0x73, 0x25, 
+        0x64, 0x0a, 0x00, 0x00, 0x61, 0x6d, 0x20, 0x6f, 0x66, 0x66, 0x20, 0x25, 0x64, 0x0a, 0x00, 0x00, 
+        0x66, 0x32, 0x73, 0x25, 0x64, 0x0a, 0x00, 0x00, 0x4e, 0x61, 0x6d, 0x0a, 0x00, 0x00, 0x00, 0x00, 
+        0x3d, 0x3d, 0x64, 0x6c, 0x0a, 0x00, 0x00, 0x00, 0x74, 0x69, 0x64, 0x20, 0x25, 0x64, 0x20, 0x67, 
+        0x65, 0x74, 0x3f, 0x20, 0x25, 0x64, 0x0a, 0x00, 0x74, 0x72, 0x63, 0x20, 0x30, 0x37, 0x31, 0x31, 
+        0x0a, 0x00, 0x00, 0x00, 0x47, 0x6f, 0x61, 0x6d, 0x0a, 0x00, 0x00, 0x00, 0x61, 0x64, 0x64, 0x20, 
+        0x25, 0x64, 0x0a, 0x00, 0x61, 0x64, 0x64, 0x20, 0x6d, 0x69, 0x73, 0x6d, 0x61, 0x74, 0x63, 0x68, 
+        0x0a, 0x00, 0x00, 0x00, 0x72, 0x6d, 0x20, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x0a, 0x00, 0x00, 0x00, 
+        0x72, 0x6d, 0x20, 0x6d, 0x69, 0x73, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x0a, 0x00, 0x00, 0x00, 0x00, 
+        0x77, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x00, 0x00, 0x25, 0x73, 0x3a, 0x20, 0x63, 0x61, 0x6e, 0x6e, 
+        0x6f, 0x74, 0x20, 0x6d, 0x61, 0x70, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x20, 0x74, 
+        0x6f, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x3b, 0x20, 0x66, 0x72, 0x65, 0x71, 0x20, 0x25, 0x75, 0x20, 
+        0x66, 0x6c, 0x61, 0x67, 0x73, 0x20, 0x30, 0x78, 0x25, 0x78, 0x0a, 0x00, 0x66, 0x63, 0x20, 0x30, 
+        0x78, 0x25, 0x30, 0x34, 0x78, 0x2c, 0x20, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x20, 0x25, 0x64, 
+        0x0a, 0x00, 0x00, 0x00, 0x6e, 0x6f, 0x20, 0x62, 0x75, 0x66, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x70, 
+        0x72, 0x6f, 0x62, 0x65, 0x2c, 0x20, 0x69, 0x65, 0x20, 0x6c, 0x65, 0x6e, 0x20, 0x25, 0x64, 0x0a, 
+        0x00, 0x00, 0x00, 0x00, 0x73, 0x63, 0x61, 0x6e, 0x64, 0x6f, 0x6e, 0x65, 0x0a, 0x00, 0x00, 0x00, 
+        0x62, 0x67, 0x0a, 0x00, 0x43, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x01, 0x00, 0x01, 0x7c, 0x00, 0x0c, 0x01, 0x00, 0x08, 0x01, 0x08, 0x0c, 0x08, 0x0d, 0x08, 0x0e, 
+        0x08, 0x0f, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0xf4, 0xf2, 0x10, 0x40, 
+        0x70, 0x04, 0x00, 0x00, 0x0e, 0xb0, 0x01, 0x80, 0x0d, 0x8c, 0x0c, 0x8d, 0x0b, 0x8e, 0x0a, 0x8f, 
+        0x09, 0x00, 0x00, 0x00, 0xf0, 0x8e, 0xfe, 0x3f, 0x98, 0xbe, 0xff, 0x3f, 0x00, 0x00, 0x00, 0xe6, 
+        
+       };
+
+ // const static int eagle_fw2_size = 67696;
diff --git a/drivers/net/wireless/rockchip_wlan/esp8089/esp_android.c b/drivers/net/wireless/rockchip_wlan/esp8089/esp_android.c
new file mode 100755 (executable)
index 0000000..95ca47b
--- /dev/null
@@ -0,0 +1,408 @@
+#include <linux/fs.h>
+#include <linux/vmalloc.h>
+#include <linux/kernel.h>
+#include <linux/version.h>
+#include <linux/moduleparam.h>
+#include <linux/firmware.h>
+#include <linux/netdevice.h>
+#include <linux/aio.h>
+
+#include "esp_android.h"
+#include "esp_debug.h"
+#include "esp_sif.h"
+
+#ifdef ANDROID
+#include "esp_path.h"
+#include "esp_conf.h"
+
+int android_readwrite_file(const char *filename, char *rbuf, const char *wbuf, size_t length)
+{
+        int ret = 0;
+        struct file *filp = (struct file *)-ENOENT;
+        mm_segment_t oldfs;
+        oldfs = get_fs();
+        set_fs(KERNEL_DS);
+        do {
+                int mode = (wbuf) ? O_RDWR | O_CREAT : O_RDONLY;
+                filp = filp_open(filename, mode, S_IRUSR);
+                if (IS_ERR(filp) || !filp->f_op) {
+                        esp_dbg(ESP_DBG_ERROR, "%s: file %s filp_open error\n", __FUNCTION__, filename);
+                        ret = -ENOENT;
+                        break;
+                }
+
+                if (length==0) {
+                        /* Read the length of the file only */
+                        struct inode    *inode;
+
+                        inode = GET_INODE_FROM_FILEP(filp);
+                        if (!inode) {
+                                esp_dbg(ESP_DBG_ERROR, "%s: Get inode from %s failed\n", __FUNCTION__, filename);
+                                ret = -ENOENT;
+                                break;
+                        }
+                        ret = i_size_read(inode->i_mapping->host);
+                        break;
+                }
+
+                if (wbuf) {
+                        if ( (ret=filp->f_op->write(filp, wbuf, length, &filp->f_pos)) < 0) {
+                                esp_dbg(ESP_DBG_ERROR, "%s: Write %u bytes to file %s error %d\n", __FUNCTION__,
+                                        length, filename, ret);
+                                break;
+                        }
+                } else {
+                        if ( (ret=filp->f_op->read(filp, rbuf, length, &filp->f_pos)) < 0) {
+                                esp_dbg(ESP_DBG_ERROR, "%s: Read %u bytes from file %s error %d\n", __FUNCTION__,
+                                        length, filename, ret);
+                                break;
+                        }
+                }
+        } while (0);
+
+        if (!IS_ERR(filp)) {
+                filp_close(filp, NULL);
+        }
+        set_fs(oldfs);
+
+        return ret;
+}
+
+int android_request_firmware(const struct firmware **firmware_p, const char *name,
+                             struct device *device)
+{
+        int ret = 0;
+        struct firmware *firmware;
+        char filename[256];
+        const char *raw_filename = name;
+        *firmware_p = firmware = kmalloc((sizeof(*firmware)), GFP_KERNEL);
+        if (!firmware)
+                return -ENOMEM;
+
+        memset(firmware, 0, sizeof(*firmware));
+
+       if (mod_eagle_path_get() == NULL)
+               sprintf(filename, "%s/%s", FWPATH, raw_filename);
+       else 
+               sprintf(filename, "%s/%s", mod_eagle_path_get(), raw_filename);
+
+        do {
+                size_t length, bufsize, bmisize;
+
+                if ( (ret=android_readwrite_file(filename, NULL, NULL, 0)) < 0) {
+                        break;
+                } else {
+                        length = ret;
+                }
+
+                bufsize = ALIGN(length, PAGE_SIZE);
+                bmisize = E_ROUND_UP(length, 4);
+                bufsize = max(bmisize, bufsize);
+                firmware->data = vmalloc(bufsize);
+                firmware->size = length;
+                if (!firmware->data) {
+                        esp_dbg(ESP_DBG_ERROR, "%s: Cannot allocate buffer for firmware\n", __FUNCTION__);
+                        ret = -ENOMEM;
+                        break;
+                }
+
+                if ( (ret=android_readwrite_file(filename, (char*)firmware->data, NULL, length)) != length) {
+                        esp_dbg(ESP_DBG_ERROR, "%s: file read error, ret %d request %d\n", __FUNCTION__, ret, length);
+                        ret = -1;
+                        break;
+                }
+
+        } while (0);
+
+        if (ret<0) {
+                if (firmware) {
+                        if (firmware->data)
+                                vfree(firmware->data);
+
+                        kfree(firmware);
+                }
+                *firmware_p = NULL;
+        } else {
+                ret = 0;
+        }
+
+        return ret;
+}
+
+void android_release_firmware(const struct firmware *firmware)
+{
+        if (firmware) {
+                if (firmware->data)
+                        vfree(firmware->data);
+
+                kfree((struct firmware *)firmware);
+        }
+}
+
+int logger_write( const unsigned char prio,
+                  const char __kernel * const tag,
+                  const char __kernel * const fmt,
+                  ...)
+{
+        int ret = 0;
+        va_list vargs;
+        struct file *filp = (struct file *)-ENOENT;
+        mm_segment_t oldfs;
+        struct iovec vec[3];
+        int tag_bytes = strlen(tag) + 1, msg_bytes;
+        char *msg;
+        va_start(vargs, fmt);
+        msg = kvasprintf(GFP_ATOMIC, fmt, vargs);
+        va_end(vargs);
+        if (!msg)
+                return -ENOMEM;
+        if (in_interrupt()) {
+                /* we have no choice since aio_write may be blocked */
+                printk(KERN_ALERT "%s", msg);
+                goto out_free_message;
+        }
+        msg_bytes = strlen(msg) + 1;
+        if (msg_bytes <= 1) /* empty message? */
+                goto out_free_message; /* don't bother, then */
+        if ((msg_bytes + tag_bytes + 1) > 2048) {
+                ret = -E2BIG;
+                goto out_free_message;
+        }
+
+        vec[0].iov_base  = (unsigned char *) &prio;
+        vec[0].iov_len    = 1;
+        vec[1].iov_base   = (void *) tag;
+        vec[1].iov_len    = strlen(tag) + 1;
+        vec[2].iov_base   = (void *) msg;
+        vec[2].iov_len    = strlen(msg) + 1;
+
+        oldfs = get_fs();
+        set_fs(KERNEL_DS);
+        do {
+                filp = filp_open("/dev/log/main", O_WRONLY, S_IRUSR);
+                if (IS_ERR(filp) || !filp->f_op) {
+
+                        esp_dbg(ESP_DBG_ERROR, "%s: filp open /dev/log/main error\n", __FUNCTION__);
+                        ret = -ENOENT;
+                        break;
+                }
+
+                if (filp->f_op->aio_write) {
+                        int nr_segs = sizeof(vec) / sizeof(vec[0]);
+                        int len = vec[0].iov_len + vec[1].iov_len + vec[2].iov_len;
+                        struct kiocb kiocb;
+                        init_sync_kiocb(&kiocb, filp);
+                        kiocb.ki_pos = 0;
+                        kiocb.ki_left = len;
+                        kiocb.ki_nbytes = len;
+                        ret = filp->f_op->aio_write(&kiocb, vec, nr_segs, kiocb.ki_pos);
+                }
+
+        } while (0);
+
+        if (!IS_ERR(filp)) {
+                filp_close(filp, NULL);
+        }
+        set_fs(oldfs);
+out_free_message:
+        if (msg) {
+                kfree(msg);
+        }
+        return ret;
+}
+
+
+
+struct esp_init_table_elem esp_init_table[MAX_ATTR_NUM] = {
+       {"crystal_26M_en",      48, -1}, 
+       {"test_xtal",           49, -1},
+       {"sdio_configure",      50, -1},
+       {"bt_configure",        51, -1},
+       {"bt_protocol",         52, -1},
+       {"dual_ant_configure",  53, -1},
+       {"test_uart_configure", 54, -1},
+       {"share_xtal",          55, -1},
+       {"gpio_wake",           56, -1},
+       {"no_auto_sleep",       57, -1},
+       {"attr10",              -1, -1},
+       {"attr11",              -1, -1},
+       {"attr12",              -1, -1},
+       {"attr13",              -1, -1},
+       {"attr14",              -1, -1},
+       {"attr15",              -1, -1},
+       //attr that is not send to target
+       {"ext_rst",              -1, -1},
+       {"wakeup_gpio",         -1, -1},
+        {"attr18",              -1, -1},
+        {"attr19",              -1, -1},
+        {"attr20",              -1, -1},
+        {"attr21",              -1, -1},
+        {"attr22",              -1, -1},
+        {"attr23",              -1, -1},
+       
+};
+
+int esp_atoi(char *str)
+{
+        int num = 0;
+        int ng_flag = 0;
+
+        if (*str == '-') {
+                str++;
+                ng_flag = 1;
+        }
+
+        while(*str != '\0') {
+                num = num * 10 + *str++ - '0';
+        }
+
+        return ng_flag ? 0-num : num;
+}
+
+void show_esp_init_table(struct esp_init_table_elem *econf)
+{
+       int i;
+       for (i = 0; i < MAX_ATTR_NUM; i++)
+               if (esp_init_table[i].offset > -1)
+                       esp_dbg(ESP_DBG_ERROR, "%s: esp_init_table[%d] attr[%s] offset[%d] value[%d]\n", 
+                               __FUNCTION__, i,
+                               esp_init_table[i].attr,
+                               esp_init_table[i].offset,
+                               esp_init_table[i].value);
+}
+       
+int android_request_init_conf(void)
+{
+
+       u8 *conf_buf;
+       u8 *pbuf;
+       int flag;
+       int str_len;    
+       int length;
+       int ret;
+       int i;
+       char attr_name[CONF_ATTR_LEN];
+       char num_buf[CONF_VAL_LEN];
+#ifdef INIT_DATA_CONF
+       char filename[256];
+
+       if (mod_eagle_path_get() == NULL)
+               sprintf(filename, "%s/%s", FWPATH, INIT_CONF_FILE);
+       else
+               sprintf(filename, "%s/%s", mod_eagle_path_get(), INIT_CONF_FILE);
+
+       if ((ret=android_readwrite_file(filename, NULL, NULL, 0)) < 0 || ret > MAX_BUF_LEN) {
+               esp_dbg(ESP_DBG_ERROR, "%s: file read length error, ret %d\n", __FUNCTION__, ret);
+               return -1;
+       } else {
+                length = ret;
+        }
+#endif /* INIT_DATA_CONF */
+       conf_buf = (u8 *)kmalloc(MAX_BUF_LEN, GFP_KERNEL);
+        if (conf_buf == NULL) {
+                esp_dbg(ESP_DBG_ERROR, "%s: failed kmalloc memory for read init_data_conf", __func__);
+                return -ENOMEM;
+        }
+
+#ifdef INIT_DATA_CONF
+       if ((ret=android_readwrite_file(filename, conf_buf, NULL, length)) != length) {
+               esp_dbg(ESP_DBG_ERROR, "%s: file read error, ret %d request %d\n", __FUNCTION__, ret, length);
+               goto failed;
+       }
+#else
+       length = strlen(INIT_DATA_CONF_BUF);
+       strncpy(conf_buf, INIT_DATA_CONF_BUF, length); 
+#endif
+       conf_buf[length] = '\0';
+
+       flag = 0;
+       str_len = 0;
+       for (pbuf = conf_buf; *pbuf != '$' && *pbuf != '\n'; pbuf++) {
+               if (*pbuf == '=') {
+                       flag = 1;
+                       *(attr_name+str_len) = '\0';
+                       str_len = 0;
+                       continue;
+               }
+
+               if (*pbuf == ';') {
+                       int value;
+                       flag = 0;
+                       *(num_buf+str_len) = '\0';
+                       if((value = esp_atoi(num_buf)) > 255 || value < 0){
+                               esp_dbg(ESP_DBG_ERROR, "%s: value is too big", __FUNCTION__);
+                               goto failed;
+                       }
+
+                       for (i = 0; i < MAX_ATTR_NUM; i++) {
+                               if (esp_init_table[i].value > -1)
+                                       continue;
+                               if (strcmp(esp_init_table[i].attr, attr_name) == 0) {
+                                       esp_dbg(ESP_DBG_TRACE, "%s: attr_name[%s]", __FUNCTION__, attr_name); /* add by th */
+                                       esp_init_table[i].value = value;
+                               }
+                               if(strcmp(esp_init_table[i].attr, "share_xtal") == 0){
+                                       sif_record_bt_config(esp_init_table[i].value);
+                               }
+
+                               if(strcmp(esp_init_table[i].attr, "ext_rst") == 0){
+                                       sif_record_rst_config(esp_init_table[i].value);
+                               }
+
+                               if(strcmp(esp_init_table[i].attr, "wakeup_gpio") == 0){
+                                       sif_record_wakeup_gpio_config(esp_init_table[i].value);
+                               }
+                       }
+                       str_len = 0;
+                       continue;
+               }
+
+               if (flag == 0) {
+                       *(attr_name+str_len) = *pbuf;
+                       if (++str_len > CONF_ATTR_LEN) {
+                               esp_dbg(ESP_DBG_ERROR, "%s: attr len is too long", __FUNCTION__);
+                               goto failed;
+                       }
+               } else {
+                       *(num_buf+str_len) = *pbuf;
+                       if (++str_len > CONF_VAL_LEN) {
+                               esp_dbg(ESP_DBG_ERROR, "%s: value len is too long", __FUNCTION__);
+                               goto failed;
+                       }       
+               }
+       }
+
+       //show_esp_init_table(esp_init_table);
+
+       ret = 0;
+failed:
+       if (conf_buf)
+               kfree(conf_buf);
+       return ret;
+}
+
+void fix_init_data(u8 *init_data_buf, int buf_size)
+{
+       int i;
+
+       for (i = 0; i < MAX_FIX_ATTR_NUM; i++) {
+               if (esp_init_table[i].offset > -1 && esp_init_table[i].offset < buf_size && esp_init_table[i].value > -1) {
+                       *(u8 *)(init_data_buf + esp_init_table[i].offset) = esp_init_table[i].value;
+                } else if (esp_init_table[i].offset > buf_size) {
+                       esp_dbg(ESP_DBG_ERROR, "%s: offset[%d] longer than init_data_buf len[%d] Ignore\n", __FUNCTION__, esp_init_table[i].offset, buf_size);
+               }
+        }
+
+}
+
+void show_init_buf(u8 *buf, int size)
+{
+       int i = 0;
+       
+       for (i = 0; i < size; i++)
+                       printk(KERN_ERR "offset[%d] [0x%02x]", i, buf[i]);
+       printk(KERN_ERR "\n");
+               
+}
+
+#endif //ANDROID
diff --git a/drivers/net/wireless/rockchip_wlan/esp8089/esp_android.h b/drivers/net/wireless/rockchip_wlan/esp8089/esp_android.h
new file mode 100755 (executable)
index 0000000..ddd9a7d
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ESP_ANDROID_H
+#define _ESP_ANDROID_H
+
+#include <linux/version.h>
+#include <linux/firmware.h>
+
+
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,20)
+#define GET_INODE_FROM_FILEP(filp) \
+    (filp)->f_path.dentry->d_inode
+#else
+#define GET_INODE_FROM_FILEP(filp) \
+    (filp)->f_dentry->d_inode
+#endif
+
+#define E_ROUND_UP(x, y)  ((((x) + ((y) - 1)) / (y)) * (y))
+
+#ifdef ANDROID
+int android_readwrite_file(const char *filename, char *rbuf, const char *wbuf, size_t length);
+
+int android_request_firmware(const struct firmware **firmware_p, const char *name, struct device *device);
+
+void android_release_firmware(const struct firmware *firmware);
+
+#ifdef INIT_DATA_CONF
+#define INIT_CONF_FILE "init_data.conf"
+#endif /* def INIT_DATA_CONF */
+
+#define CONF_ATTR_LEN 24
+#define CONF_VAL_LEN 3
+#define MAX_ATTR_NUM 24
+#define MAX_FIX_ATTR_NUM 16
+#define MAX_BUF_LEN ((CONF_ATTR_LEN + CONF_VAL_LEN + 2) * MAX_ATTR_NUM + 2)
+
+struct esp_init_table_elem {
+       char attr[CONF_ATTR_LEN];
+       int offset;
+       short value;
+};
+
+int android_request_init_conf(void);
+void fix_init_data(u8 *init_data_buf, int buf_size);
+void show_init_buf(u8 *buf, int size);
+
+
+#endif
+
+#if defined(ANDROID) && defined(ESP_ANDROID_LOGGER)
+extern int logger_write( const unsigned char prio,
+                         const char __kernel * const tag,
+                         const char __kernel * const fmt,
+                         ...);
+
+
+#endif // ANDROID
+#endif
diff --git a/drivers/net/wireless/rockchip_wlan/esp8089/esp_cfg80211.c b/drivers/net/wireless/rockchip_wlan/esp8089/esp_cfg80211.c
new file mode 100755 (executable)
index 0000000..cdada7d
--- /dev/null
@@ -0,0 +1,301 @@
+/*
+ * Copyright (c) 2010 - 2012 Espressif System.
+ */
+#if 0
+#define RATETAB_ENT(_rate, _rateid, _flags) {   \
+       .bitrate    = (_rate),                  \
+       .flags      = (_flags),                 \
+       .hw_value   = (_rateid),                \
+}
+
+#define CHAN2G(_channel, _freq, _flags) {   \
+       .band           = IEEE80211_BAND_2GHZ,  \
+       .hw_value       = (_channel),           \
+       .center_freq    = (_freq),              \
+       .flags          = (_flags),             \
+       .max_antenna_gain   = 0,                \
+       .max_power      = 30,                   \
+}
+
+static struct ieee80211_channel esp_2ghz_channels[] = {
+        CHAN2G(1, 2412, 0),
+        CHAN2G(2, 2417, 0),
+        CHAN2G(3, 2422, 0),
+        CHAN2G(4, 2427, 0),
+        CHAN2G(5, 2432, 0),
+        CHAN2G(6, 2437, 0),
+        CHAN2G(7, 2442, 0),
+        CHAN2G(8, 2447, 0),
+        CHAN2G(9, 2452, 0),
+        CHAN2G(10, 2457, 0),
+        CHAN2G(11, 2462, 0),
+        CHAN2G(12, 2467, 0),
+        CHAN2G(13, 2472, 0),
+        CHAN2G(14, 2484, 0),
+};
+
+static int esp_cfg80211_change_iface(struct wiphy *wiphy,
+                                     struct net_device *ndev,
+                                     enum nl80211_iftype type, u32 *flags,
+                                     struct vif_params *params)
+{
+        struct esp_pub *epub = wdev_priv(dev->ieee80211_ptr);
+        struct wireless_dev *wdev = epub->wdev;
+
+
+        /* only support STA mode for now */
+        if (type != NL80211_IFTYPE_STATION)
+                return -EOPNOTSUPP;
+}
+
+wdev->iftype = type;
+
+return 0;
+}
+
+static int esp_cfg80211_scan(struct wiphy *wiphy, struct net_device *ndev,
+                             struct cfg80211_scan_request *request)
+{
+        struct esp_pub *epub = wdev_priv(dev->ieee80211_ptr);
+        int ret = 0;
+
+        if (!esp_ready(ar))
+                return -EIO;
+
+        if (request->n_ssids && request->ssids[0].ssid_len) {
+                u8 i;
+
+                if (request->n_ssids > (MAX_PROBED_SSID_INDEX - 1))
+                        request->n_ssids = MAX_PROBED_SSID_INDEX - 1;
+
+                for (i = 0; i < request->n_ssids; i++)
+                        esp_wl_probedssid_cmd(epub->wl, i + 1,
+                                              SPECIFIC_SSID_FLAG,
+                                              request->ssids[i].ssid_len,
+                                              request->ssids[i].ssid);
+        }
+
+        if (esp_wl_startscan_cmd(epub->wl, WL_LONG_SCAN, 0,
+                                 false, 0, 0, 0, NULL) != 0) {
+                esp_dbg(ESP_DBG_ERROR, "wl_startscan_cmd failed\n");
+                ret = -EIO;
+        }
+
+        epub->wl->scan_req = request;
+
+        return ret;
+}
+
+static struct cfg80211_ops esp_cfg80211_ops = {
+        .change_virtual_intf = esp_cfg80211_change_iface,
+        .scan = esp_cfg80211_scan,
+        .connect = esp_cfg80211_connect,
+        .disconnect = esp_cfg80211_disconnect,
+        .add_key = esp_cfg80211_add_key,
+        .get_key = esp_cfg80211_get_key,
+        .del_key = esp_cfg80211_del_key,
+        .set_default_key = esp_cfg80211_set_default_key,
+        .set_wiphy_params = esp_cfg80211_set_wiphy_params,
+        .set_tx_power = esp_cfg80211_set_txpower,
+        .get_tx_power = esp_cfg80211_get_txpower,
+        .set_power_mgmt = esp_cfg80211_set_power_mgmt,
+        .join_ibss = esp_cfg80211_join_ibss,
+        .leave_ibss = esp_cfg80211_leave_ibss,
+        .get_station = esp_get_station,
+        .set_pmksa = esp_set_pmksa,
+        .del_pmksa = esp_del_pmksa,
+        .flush_pmksa = esp_flush_pmksa,
+};
+
+static struct ieee80211_ops esp_ieee80211_ops = {
+}
+
+static struct cfg80211_ops esp_cfg80211_ops = {0};
+
+static struct ieee80211_rate esp_g_rates[] = {
+        RATETAB_ENT(10, 0x1, 0),
+        RATETAB_ENT(20, 0x2, 0),
+        RATETAB_ENT(55, 0x4, 0),
+        RATETAB_ENT(110, 0x8, 0),
+        RATETAB_ENT(60, 0x10, 0),
+        RATETAB_ENT(90, 0x20, 0),
+        RATETAB_ENT(120, 0x40, 0),
+        RATETAB_ENT(180, 0x80, 0),
+        RATETAB_ENT(240, 0x100, 0),
+        RATETAB_ENT(360, 0x200, 0),
+        RATETAB_ENT(480, 0x400, 0),
+        RATETAB_ENT(540, 0x800, 0),
+};
+
+#define esp_g_rates_size 12
+static struct ieee80211_supported_band esp_band_2ghz = {
+        .n_channels = ARRAY_SIZE(esp_2ghz_channels),
+        .channels = esp_2ghz_channels,
+        .n_bitrates = esp_g_rates_size,
+        .bitrates = esp_g_rates,
+};
+
+static const u32 cipher_suites[] = {
+        WLAN_CIPHER_SUITE_WEP40,
+        WLAN_CIPHER_SUITE_WEP104,
+        WLAN_CIPHER_SUITE_TKIP,
+        WLAN_CIPHER_SUITE_CCMP,
+};
+
+static struct wireless_dev *
+esp_cfg80211_init(struct device *dev) {
+        int ret = 0;
+        struct wireless_dev *wdev;
+
+        wdev = kzalloc(sizeof(struct wireless_dev), GFP_KERNEL);
+
+        if (!wdev) {
+                esp_dbg(ESP_DBG_ERROR, "couldn't allocate wireless device\n");
+                return NULL;
+        }
+
+        wdev->wiphy = wiphy_new(&esp_cfg80211_ops, sizeof(struct esp_pub));
+
+        if (!wdev->wiphy) {
+                esp_dbg(ESP_DBG_ERROR, "couldn't allocate wiphy device\n");
+                kfree(wdev);
+                return NULL;
+        }
+
+        set_wiphy_dev(wdev->wiphy, dev);
+
+        wdev->wiphy->interface_modes = BIT(NL80211_IFTYPE_STATION);
+        wdev->wiphy->max_scan_ssids = MAX_PROBED_SSID_INDEX;
+        wdev->wiphy->bands[IEEE80211_BAND_2GHZ] = &esp_band_2ghz;
+        //wdev->wiphy->bands[IEEE80211_BAND_5GHZ] = &esp_band_5ghz;
+        wdev->wiphy->signal_type = CFG80211_SIGNAL_TYPE_MBM;
+
+        wdev->wiphy->cipher_suites = cipher_suites;
+        wdev->wiphy->n_cipher_suites = ARRAY_SIZE(cipher_suites);
+
+        ret = wiphy_register(wdev->wiphy);
+
+        if (ret < 0) {
+                esp_dbg(ESP_DBG_ERROR, "couldn't register wiphy device\n");
+                wiphy_free(wdev->wiphy);
+                kfree(wdev);
+                return NULL;
+        }
+
+        return wdev;
+}
+
+static void
+esp_cfg80211_descory(struct esp_pub *pub)
+{
+        return;
+}
+
+static int esp_open(struct net_device *dev)
+{
+        return 0;
+}
+
+static struct net_device_stats *
+esp_get_stats(struct net_device *dev) {
+        struct net_device_stats *stats = NULL;
+        return stats;
+}
+
+static int esp_close(struct net_device *dev)
+{
+        return 0;
+}
+
+
+static int esp_data_tx(struct sk_buff *skb, struct net_device *dev)
+{
+        return 0;
+}
+
+static struct net_device_ops esp_netdev_ops = {
+        .ndo_open               = esp_open,
+        .ndo_stop               = esp_close,
+        .ndo_start_xmit         = esp_data_tx,
+        .ndo_get_stats          = esp_get_stats,
+};
+
+static inline void
+esp_init_netdev(struct net_device *dev)
+{
+        dev->netdev_ops = &esp_netdev_ops;
+        dev->watchdog_timeo = 10;
+
+        dev->needed_headroom = ETH_HLEN + sizeof(struct llc_snap_hdr) + SIP_HDR_LEN;
+
+        return;
+}
+
+static void
+esp_disconnect(struct esp_pub *epub)
+{
+        return;
+}
+
+static void
+esp_disconnect_timeout_handler(unsigned long ptr)
+{
+        struct net_device *netdev = (struct net_device *)ptr;
+        struct esp_pub *epub = wdev_priv(netdev->ieee80211_ptr);
+
+        //esp_init_profile(epub);
+        esp_disconnect(epub);
+}
+
+struct esp_pub *
+esp_pub_alloc_cfg80211(struct device *dev) {
+        struct net_device *netdev;
+        struct wireless_dev *wdev;
+        struct esp_pub *epub;
+        struct esp_wl *wl;
+
+        wdev = esp_cfg80211_init(dev);
+
+        if (wdev == NULL) {
+                esp_dbg(ESP_DBG_ERROR, "%s: cfg80211_init failed \n", __func__);
+                return NULL;
+        }
+
+        epub = wdev_priv(wdev);
+        epub->dev = dev;
+        epub->wdev = wdev;
+        wdev->iftype = NL80211_IFTYPE_STATION;
+
+        /* Still register ethernet device */
+        netdev = alloc_netdev(0, "wlan%d", ether_setup);
+
+        if (!netdev) {
+                esp_dbg(ESP_DBG_ERROR, "%s: alloc_netdev failed \n", __func__);
+                esp_cfg80211_descory(epub);
+                return NULL;
+        }
+
+        netdev->ieee80211_ptr = wdev;
+        SET_NETDEV_DEV(netdev, wiphy_dev(wdev->wiphy));
+        wdev->netdev = netdev;
+
+        esp_init_netdev(netdev);
+
+        epub->net_dev = netdev;
+
+        //spin_lock_init(&epub->lock);
+
+        wl = &epub->wl;
+        //esp_init_wl(wl);
+        init_waitqueue_head(&epub->ev_waitq);
+        //sema_init(epub->sem, 1);
+
+        INIT_LIST_HEAD(&wl->amsdu_rx_buffer_queue);
+
+        setup_timer(&wl->disconnect_timer, esp_disconnect_timeout_handler,
+                    (unsigned long) netdev);
+
+        return epub;
+}
+
+#endif
diff --git a/drivers/net/wireless/rockchip_wlan/esp8089/esp_conf.h b/drivers/net/wireless/rockchip_wlan/esp8089/esp_conf.h
new file mode 100755 (executable)
index 0000000..f21c921
--- /dev/null
@@ -0,0 +1,6 @@
+#ifndef _ESP_CONF_H_
+#define _ESP_CONF_H_
+
+#define INIT_DATA_CONF_BUF "crystal_26M_en=1;test_xtal=0;sdio_configure=2;bt_configure=0;bt_protocol=0;dual_ant_configure=0;test_uart_configure=2;share_xtal=0;gpio_wake=0;no_auto_sleep=0;ext_rst=0;$"
+
+#endif /*_ESP_CONF_H_ */
diff --git a/drivers/net/wireless/rockchip_wlan/esp8089/esp_config.mk b/drivers/net/wireless/rockchip_wlan/esp8089/esp_config.mk
new file mode 100755 (executable)
index 0000000..2026cdf
--- /dev/null
@@ -0,0 +1 @@
+EXTRA_CFLAGS += -DP2P_CONCURRENT -DESP_ACK_INTERRUPT -DESP_USE_SDIO
diff --git a/drivers/net/wireless/rockchip_wlan/esp8089/esp_ctrl.c b/drivers/net/wireless/rockchip_wlan/esp8089/esp_ctrl.c
new file mode 100755 (executable)
index 0000000..8c7c555
--- /dev/null
@@ -0,0 +1,740 @@
+/*
+ * Copyright (c) 2009 - 2012 Espressif System.
+ */
+
+#include <net/mac80211.h>
+#include <net/cfg80211.h>
+#include <linux/skbuff.h>
+#include <linux/bitops.h>
+#include <linux/firmware.h>
+
+#include "esp_pub.h"
+#include "esp_sip.h"
+#include "esp_ctrl.h"
+#include "esp_sif.h"
+#include "esp_debug.h"
+#include "slc_host_register.h"
+#include "esp_wmac.h"
+#include "esp_utils.h"
+#include "esp_wl.h"
+#ifdef ANDROID
+#include "esp_android.h"
+#include "esp_path.h"
+#endif /* ANDROID */
+#ifdef TEST_MODE
+#include "testmode.h"
+#endif /* TEST_MODE */
+#include "esp_version.h"
+
+extern struct completion *gl_bootup_cplx; 
+
+#ifdef ESP_RX_COPYBACK_TEST
+static void sip_show_copyback_buf(void)
+{
+        //show_buf(copyback_buf, copyback_offset);
+}
+#endif /* ESP_RX_COPYBACK_TEST */
+
+static void esp_tx_ba_session_op(struct esp_sip *sip, struct esp_node *node, trc_ampdu_state_t state, u8 tid )
+{
+        struct esp_tx_tid *txtid;
+
+        txtid = &node->tid[tid];
+        if (state == TRC_TX_AMPDU_STOPPED) {
+                if (txtid->state == ESP_TID_STATE_OPERATIONAL) {
+                        esp_dbg(ESP_DBG_TXAMPDU, "%s tid %d TXAMPDU GOT STOP EVT\n", __func__, tid);
+
+                        spin_lock_bh(&sip->epub->tx_ampdu_lock);
+                        txtid->state = ESP_TID_STATE_WAIT_STOP;
+                        spin_unlock_bh(&sip->epub->tx_ampdu_lock);
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 28))
+                        ieee80211_stop_tx_ba_session(sip->epub->hw, node->addr, (u16)tid, WLAN_BACK_INITIATOR);
+#elif (LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 32))
+                        ieee80211_stop_tx_ba_session(sip->epub->hw, node->sta->addr, (u16)tid, WLAN_BACK_INITIATOR);
+#elif (LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 35))
+                        ieee80211_stop_tx_ba_session(node->sta, (u16)tid, WLAN_BACK_INITIATOR);
+#else
+                        ieee80211_stop_tx_ba_session(node->sta, (u16)tid);
+#endif /* KERNEL_VERSION 2.6.39 */
+                } else {
+                        esp_dbg(ESP_DBG_TXAMPDU, "%s tid %d TXAMPDU GOT STOP EVT IN WRONG STATE %d\n", __func__, tid, txtid->state);
+                }
+        } else if (state == TRC_TX_AMPDU_OPERATIONAL) {
+                if (txtid->state == ESP_TID_STATE_STOP) {
+                        esp_dbg(ESP_DBG_TXAMPDU, "%s tid %d TXAMPDU GOT OPERATIONAL\n", __func__, tid);
+
+                        spin_lock_bh(&sip->epub->tx_ampdu_lock);
+                        txtid->state = ESP_TID_STATE_TRIGGER;
+                        spin_unlock_bh(&sip->epub->tx_ampdu_lock);
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 28))
+                        ieee80211_start_tx_ba_session(sip->epub->hw, node->addr, tid);
+#elif (LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 32))
+                        ieee80211_start_tx_ba_session(sip->epub->hw, node->sta->addr, tid);
+#elif (LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 37))
+                        ieee80211_start_tx_ba_session(node->sta, (u16)tid);
+#else
+                        ieee80211_start_tx_ba_session(node->sta, (u16)tid, 0);
+#endif /* KERNEL_VERSION 2.6.39 */
+
+                } else if(txtid->state == ESP_TID_STATE_OPERATIONAL) {
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 28))
+                       sip_send_ampdu_action(sip->epub, SIP_AMPDU_TX_OPERATIONAL, node->addr, tid, node->ifidx, 0);
+#else
+                       sip_send_ampdu_action(sip->epub, SIP_AMPDU_TX_OPERATIONAL, node->sta->addr, tid, node->ifidx, 0);
+#endif
+               } else {
+                        esp_dbg(ESP_DBG_TXAMPDU, "%s tid %d TXAMPDU GOT OPERATIONAL EVT IN WRONG STATE %d\n", __func__, tid, txtid->state);
+                }
+        }
+}
+
+int sip_parse_events(struct esp_sip *sip, u8 *buf)
+{
+        struct sip_hdr *hdr = (struct sip_hdr *)buf;
+
+        switch (hdr->c_evtid) {
+       case SIP_EVT_TARGET_ON: {
+               /* use rx work queue to send... */
+               if (atomic_read(&sip->state) == SIP_PREPARE_BOOT || atomic_read(&sip->state) == SIP_BOOT) {
+                       atomic_set(&sip->state, SIP_SEND_INIT);
+                       queue_work(sip->epub->esp_wkq, &sip->rx_process_work);
+               } else {
+                       esp_dbg(ESP_DBG_ERROR, "%s boot during wrong state %d\n", __func__, atomic_read(&sip->state));
+               }
+                break;
+       }
+
+        case SIP_EVT_BOOTUP: {
+               struct sip_evt_bootup2 *bootup_evt = (struct sip_evt_bootup2 *)(buf + SIP_CTRL_HDR_LEN);
+               if (sip->rawbuf)
+                       kfree(sip->rawbuf);
+               
+               sip_post_init(sip, bootup_evt);
+               
+               if (gl_bootup_cplx)     
+                       complete(gl_bootup_cplx);
+                
+               break;
+        }
+       case SIP_EVT_RESETTING:{
+               if (gl_bootup_cplx)     
+                       complete(gl_bootup_cplx);
+               break;
+       }
+       case SIP_EVT_SLEEP:{
+               //atomic_set(&sip->epub->ps.state, ESP_PM_ON);
+               break;
+       }
+       case SIP_EVT_TXIDLE:{
+               //struct sip_evt_txidle *txidle = (struct sip_evt_txidle *)(buf + SIP_CTRL_HDR_LEN);
+               //sip_txdone_clear(sip, txidle->last_seq);
+               break;
+       }
+#ifndef FAST_TX_STATUS
+        case SIP_EVT_TX_STATUS: {
+                struct sip_evt_tx_report *report = (struct sip_evt_tx_report *)(buf + SIP_CTRL_HDR_LEN);
+                sip_txdoneq_process(sip, report);
+
+                break;
+        }
+#endif /* FAST_TX_STATUS */
+
+        case SIP_EVT_SCAN_RESULT: {
+                struct sip_evt_scan_report *report = (struct sip_evt_scan_report *)(buf + SIP_CTRL_HDR_LEN);
+                if (atomic_read(&sip->epub->wl.off)) {
+                        esp_dbg(ESP_DBG_ERROR, "%s scan result while wlan off\n", __func__);
+                        return 0;
+                }
+                sip_scandone_process(sip, report);
+
+                break;
+        }
+
+               case SIP_EVT_ROC: {
+                struct sip_evt_roc* report = (struct sip_evt_roc *)(buf + SIP_CTRL_HDR_LEN);
+                esp_rocdone_process(sip->epub->hw, report);
+                break;
+        }
+
+
+#ifdef ESP_RX_COPYBACK_TEST
+
+        case SIP_EVT_COPYBACK: {
+                u32 len = hdr->len - SIP_CTRL_HDR_LEN;
+
+                esp_dbg(ESP_DBG_TRACE, "%s copyback len %d   seq %u\n", __func__, len, hdr->seq);
+
+                memcpy(copyback_buf + copyback_offset, pkt->buf + SIP_CTRL_HDR_LEN, len);
+                copyback_offset += len;
+
+                //show_buf(pkt->buf, 256);
+
+                //how about totlen % 256 == 0??
+                if (hdr->hdr.len < 256) {
+                        //sip_show_copyback_buf();
+                        kfree(copyback_buf);
+                }
+        }
+        break;
+#endif /* ESP_RX_COPYBACK_TEST */
+        case SIP_EVT_CREDIT_RPT:
+                break;
+
+#ifdef TEST_MODE
+        case SIP_EVT_WAKEUP: {
+                u8 check_str[12];
+                struct sip_evt_wakeup* wakeup_evt=  (struct sip_evt_wakeup *)(buf + SIP_CTRL_HDR_LEN);
+                sprintf((char *)&check_str, "%d", wakeup_evt->check_data);
+                esp_test_cmd_event(TEST_CMD_WAKEUP, (char *)&check_str);
+                break;
+        }
+
+        case SIP_EVT_DEBUG: {
+                u8 check_str[100];
+                int i;
+                char * ptr_str = (char *)& check_str;
+                struct sip_evt_debug* debug_evt =  (struct sip_evt_debug *)(buf + SIP_CTRL_HDR_LEN);
+                for(i = 0; i < debug_evt->len; i++)
+                        ptr_str += sprintf(ptr_str, "0x%x%s", debug_evt->results[i], i == debug_evt->len -1 ? "":" " );
+                esp_test_cmd_event(TEST_CMD_DEBUG, (char *)&check_str);
+                break;
+        }
+
+        case SIP_EVT_LOOPBACK: {
+                u8 check_str[12];
+                struct sip_evt_loopback *loopback_evt = (struct sip_evt_loopback *)(buf + SIP_CTRL_HDR_LEN);
+                esp_dbg(ESP_DBG_LOG, "%s loopback len %d seq %u\n", __func__,hdr->len, hdr->seq);
+
+                if(loopback_evt->pack_id!=get_loopback_id()) {
+                        sprintf((char *)&check_str, "seq id error %d, expect %d", loopback_evt->pack_id, get_loopback_id());
+                        esp_test_cmd_event(TEST_CMD_LOOPBACK, (char *)&check_str);
+                }
+
+                if((loopback_evt->pack_id+1) <get_loopback_num()) {
+                        inc_loopback_id();
+                        sip_send_loopback_mblk(sip, loopback_evt->txlen, loopback_evt->rxlen, get_loopback_id());
+                } else {
+                        sprintf((char *)&check_str, "test over!");
+                        esp_test_cmd_event(TEST_CMD_LOOPBACK, (char *)&check_str);
+                }
+                break;
+        }
+#endif  /*TEST_MODE*/
+
+        case SIP_EVT_SNPRINTF_TO_HOST: {
+                u8 *p = (buf + sizeof(struct sip_hdr) + sizeof(u16));
+                u16 *len = (u16 *)(buf + sizeof(struct sip_hdr));
+               char test_res_str[560];
+               sprintf(test_res_str, "esp_host:%llx\nesp_target: %.*s", DRIVER_VER, *len, p);
+               
+                esp_dbg(ESP_SHOW, "%s\n", test_res_str);
+#ifdef ANDROID
+               if(*len && sip->epub->sdio_state == ESP_SDIO_STATE_FIRST_INIT){
+                       char filename[256];
+                       if (mod_eagle_path_get() == NULL)
+                               sprintf(filename, "%s/%s", FWPATH, "test_results");
+                       else
+                               sprintf(filename, "%s/%s", mod_eagle_path_get(), "test_results");
+                       android_readwrite_file(filename, NULL, test_res_str, strlen(test_res_str));
+               }
+#endif
+                break;
+        }
+        case SIP_EVT_TRC_AMPDU: {
+                struct sip_evt_trc_ampdu *ep = (struct sip_evt_trc_ampdu*)(buf + SIP_CTRL_HDR_LEN);
+                struct esp_node *node = NULL;
+                int i = 0;
+
+                if (atomic_read(&sip->epub->wl.off)) {
+                        esp_dbg(ESP_DBG_ERROR, "%s scan result while wlan off\n", __func__);
+                        return 0;
+                }
+               
+               node = esp_get_node_by_addr(sip->epub, ep->addr);
+               if(node == NULL)
+                       break;
+#if 0
+                esp_tx_ba_session_op(sip, node, ep->state, ep->tid);
+#else
+                for (i = 0; i < 8; i++) {
+                        if (ep->tid & (1<<i)) {
+                                esp_tx_ba_session_op(sip, node, ep->state, i);
+                        }
+                }
+#endif
+                break;
+        }
+
+        default:
+                break;
+        }
+
+        return 0;
+}
+
+#ifdef HAS_INIT_DATA
+#include "esp_init_data.h"
+#else
+#define ESP_INIT_NAME "esp_init_data.bin"
+#endif /* HAS_INIT_DATA */
+
+void sip_send_chip_init(struct esp_sip *sip)
+{
+       size_t size = 0;
+#ifndef HAS_INIT_DATA
+        const struct firmware *fw_entry;
+        u8 * esp_init_data = NULL;
+        int ret = 0;
+  #ifdef ANDROID
+        ret = android_request_firmware(&fw_entry, ESP_INIT_NAME, sip->epub->dev);
+  #else
+        ret = request_firmware(&fw_entry, ESP_INIT_NAME, sip->epub->dev);
+  #endif /* ANDROID */
+        
+        if (ret) {
+                esp_dbg(ESP_DBG_ERROR, "%s =============ERROR! NO INIT DATA!!=================\n", __func__);
+               return;
+        }
+        esp_init_data = kmemdup(fw_entry->data, fw_entry->size, GFP_KERNEL);
+
+       size = fw_entry->size;
+
+  #ifdef ANDROID
+        android_release_firmware(fw_entry);
+  #else
+        release_firmware(fw_entry);
+  #endif /* ANDROID */
+
+        if (esp_init_data == NULL) {
+                esp_dbg(ESP_DBG_ERROR, "%s =============ERROR! NO MEMORY!!=================\n", __func__);
+               return;
+        }
+#else
+       size = sizeof(esp_init_data);
+
+#endif /* !HAS_INIT_DATA */
+
+#ifdef ANDROID
+       //show_init_buf(esp_init_data,size); 
+       fix_init_data(esp_init_data, size);
+       //show_init_buf(esp_init_data,size);
+#endif
+       atomic_sub(1, &sip->tx_credits);
+       
+       sip_send_cmd(sip, SIP_CMD_INIT, size, (void *)esp_init_data);
+
+#ifndef HAS_INIT_DATA
+        kfree(esp_init_data);
+#endif /* !HAS_INIT_DATA */
+}
+
+int sip_send_config(struct esp_pub *epub, struct ieee80211_conf * conf)
+{
+        struct sk_buff *skb = NULL;
+        struct sip_cmd_config *configcmd;
+
+        skb = sip_alloc_ctrl_skbuf(epub->sip, sizeof(struct sip_cmd_config) + sizeof(struct sip_hdr), SIP_CMD_CONFIG);
+        if (!skb)
+                return -1;
+       // esp_dbg(ESP_DBG_TRACE, "%s config center freq %d\n", __func__, conf->channel->center_freq); add libing
+        configcmd = (struct sip_cmd_config *)(skb->data + sizeof(struct sip_hdr));
+       // configcmd->center_freq= conf->chandef.chan->center_freq; //add libing
+               configcmd->duration= 0;
+        return sip_cmd_enqueue(epub->sip, skb);
+}
+
+int  sip_send_bss_info_update(struct esp_pub *epub, struct esp_vif *evif, u8 *bssid, int assoc)
+{
+        struct sk_buff *skb = NULL;
+        struct sip_cmd_bss_info_update*bsscmd;
+
+        skb = sip_alloc_ctrl_skbuf(epub->sip, sizeof(struct sip_cmd_bss_info_update) + sizeof(struct sip_hdr), SIP_CMD_BSS_INFO_UPDATE);
+        if (!skb)
+                return -1;
+
+        bsscmd = (struct sip_cmd_bss_info_update *)(skb->data + sizeof(struct sip_hdr));
+        if (assoc == 2) { //hack for softAP mode
+                       bsscmd->beacon_int = evif->beacon_interval;
+               } else if (assoc == 1) {
+                       set_bit(ESP_WL_FLAG_CONNECT, &epub->wl.flags);
+        } else {
+                       clear_bit(ESP_WL_FLAG_CONNECT, &epub->wl.flags);
+        }
+               bsscmd->bssid_no = evif->index;
+               bsscmd->isassoc= assoc;
+        memcpy(bsscmd->bssid, bssid, ETH_ALEN);
+        return sip_cmd_enqueue(epub->sip, skb);
+}
+
+int  sip_send_wmm_params(struct esp_pub *epub, u8 aci, const struct ieee80211_tx_queue_params *params)
+{
+        struct sk_buff *skb = NULL;
+        struct sip_cmd_set_wmm_params* bsscmd;
+        skb = sip_alloc_ctrl_skbuf(epub->sip, sizeof(struct sip_cmd_set_wmm_params) + sizeof(struct sip_hdr), SIP_CMD_SET_WMM_PARAM);
+        if (!skb)
+                return -1;
+
+        bsscmd = (struct sip_cmd_set_wmm_params *)(skb->data + sizeof(struct sip_hdr));
+        bsscmd->aci= aci;
+        bsscmd->aifs=params->aifs;
+        bsscmd->txop_us=params->txop*32;
+
+        bsscmd->ecw_min = 32 - __builtin_clz(params->cw_min);
+        bsscmd->ecw_max= 32 -__builtin_clz(params->cw_max);
+
+        return sip_cmd_enqueue(epub->sip, skb);
+}
+
+//since we only support ba for only one ta for each tid, so index = tid
+static u8 find_empty_index(struct esp_pub *epub)
+{
+        return 0;
+}
+
+int sip_send_ampdu_action(struct esp_pub *epub, u8 action_num, const u8 * addr, u16 tid, u16 ssn, u8 buf_size)
+{
+        u8 index = find_empty_index(epub);
+        struct sk_buff *skb = NULL;
+        struct sip_cmd_ampdu_action * action;
+        if(index < 0)
+                return -1;
+        skb = sip_alloc_ctrl_skbuf(epub->sip, sizeof(struct sip_cmd_ampdu_action) + sizeof(struct sip_hdr), SIP_CMD_AMPDU_ACTION);
+        if(!skb)
+                return -1;
+
+        action = (struct sip_cmd_ampdu_action *)(skb->data + sizeof(struct sip_hdr));
+        action->action = action_num;
+       //for TX, it means interface index
+       action->index = ssn;
+
+        switch(action_num) {
+        case SIP_AMPDU_RX_START:
+                action->ssn = ssn;
+        case SIP_AMPDU_RX_STOP:
+                action->index = tid;
+        case SIP_AMPDU_TX_OPERATIONAL:
+        case SIP_AMPDU_TX_STOP:
+                action->win_size = buf_size;
+                action->tid = tid;
+                memcpy(action->addr, addr, ETH_ALEN);
+                break;
+        }
+
+        return sip_cmd_enqueue(epub->sip, skb);
+}
+
+#ifdef HW_SCAN
+/*send cmd to target, if aborted is true, inform target stop scan, report scan complete imediately
+  return 1: complete over, 0: success, still have next scan, -1: hardware failure
+  */
+int sip_send_scan(struct esp_pub *epub)
+{
+        struct cfg80211_scan_request *scan_req = epub->wl.scan_req;
+        struct sk_buff *skb = NULL;
+        struct sip_cmd_scan *scancmd;
+        u8 *ptr = NULL;
+        int i;
+       u8 append_len, ssid_len;
+
+        ASSERT(scan_req != NULL);
+        ssid_len = scan_req->n_ssids == 0 ? 0:
+                (scan_req->n_ssids == 1 ? scan_req->ssids->ssid_len: scan_req->ssids->ssid_len + (scan_req->ssids + 1)->ssid_len);
+        append_len = ssid_len + scan_req->n_channels + scan_req->ie_len;
+
+        skb = sip_alloc_ctrl_skbuf(epub->sip, sizeof(struct sip_cmd_scan) + sizeof(struct sip_hdr) + append_len, SIP_CMD_SCAN);
+
+        if (!skb)
+                return -1;
+
+        ptr = skb->data;
+        scancmd = (struct sip_cmd_scan *)(ptr + sizeof(struct sip_hdr));
+        ptr += sizeof(struct sip_hdr);
+
+        scancmd->aborted= false;
+
+        if (scancmd->aborted==false) {
+               ptr += sizeof(struct sip_cmd_scan);
+                if (scan_req->n_ssids <=0 || (scan_req->n_ssids == 1&& ssid_len == 0)) {
+                        scancmd->ssid_len = 0;
+                } else { 
+                        scancmd->ssid_len = ssid_len;
+                       if(scan_req->ssids->ssid_len == ssid_len)
+                               memcpy(ptr, scan_req->ssids->ssid, scancmd->ssid_len);
+                       else
+                               memcpy(ptr, (scan_req->ssids + 1)->ssid, scancmd->ssid_len);
+                }
+
+               ptr += scancmd->ssid_len;
+                scancmd->n_channels=scan_req->n_channels;
+                for (i=0; i<scan_req->n_channels; i++)
+                        ptr[i] = scan_req->channels[i]->hw_value;
+               
+               ptr += scancmd->n_channels;
+               if (scan_req->ie_len && scan_req->ie != NULL) {
+                        scancmd->ie_len=scan_req->ie_len;
+                        memcpy(ptr, scan_req->ie, scan_req->ie_len);
+                } else {
+                       scancmd->ie_len = 0;
+               }
+               //add a flag that support two ssids,
+               if(scan_req->n_ssids > 1)
+                       scancmd->ssid_len |= 0x80;
+
+        }
+        
+        return sip_cmd_enqueue(epub->sip, skb);
+}
+#endif
+
+int sip_send_suspend_config(struct esp_pub *epub, u8 suspend)
+{
+        struct sip_cmd_suspend *cmd = NULL;
+       struct sk_buff *skb = NULL;
+
+        skb = sip_alloc_ctrl_skbuf(epub->sip, sizeof(struct sip_cmd_suspend) + sizeof(struct sip_hdr), SIP_CMD_SUSPEND);
+
+        if (!skb)
+                return -1;
+
+        cmd = (struct sip_cmd_suspend *)(skb->data + sizeof(struct sip_hdr));
+       cmd->suspend = suspend;
+        return sip_cmd_enqueue(epub->sip, skb);
+}
+
+int sip_send_ps_config(struct esp_pub *epub, struct esp_ps *ps)
+{
+        struct sip_cmd_ps *pscmd = NULL;
+        struct sk_buff *skb = NULL;
+        struct sip_hdr *shdr = NULL;
+
+        skb = sip_alloc_ctrl_skbuf(epub->sip, sizeof(struct sip_cmd_ps) + sizeof(struct sip_hdr), SIP_CMD_PS);
+
+        if (!skb)
+               return -1;
+
+        shdr = (struct sip_hdr *)skb->data;
+        pscmd = (struct sip_cmd_ps *)(skb->data + sizeof(struct sip_hdr));
+
+        pscmd->dtim_period = ps->dtim_period;
+        pscmd->max_sleep_period = ps->max_sleep_period;
+#if 0
+        if (atomic_read(&ps->state) == ESP_PM_TURNING_ON) {
+                pscmd->on = 1;
+                SIP_HDR_SET_PM_TURNING_ON(shdr);
+        } else if (atomic_read(&ps->state) == ESP_PM_TURNING_OFF) {
+                pscmd->on = 0;
+                SIP_HDR_SET_PM_TURNING_OFF(shdr);
+        } else {
+                esp_dbg(ESP_DBG_ERROR, "%s PM WRONG STATE %d\n", __func__, atomic_read(&ps->state));
+                ASSERT(0);
+        }
+#endif
+
+        return sip_cmd_enqueue(epub->sip, skb);
+}
+
+void sip_scandone_process(struct esp_sip *sip, struct sip_evt_scan_report *scan_report)
+{
+        struct esp_pub *epub = sip->epub;
+
+        esp_dbg(ESP_DBG_TRACE, "eagle hw scan report\n");
+
+        if (epub->wl.scan_req) {
+                hw_scan_done(epub, scan_report->aborted);
+                epub->wl.scan_req = NULL;
+        }
+}
+
+int sip_send_setkey(struct esp_pub *epub, u8 bssid_no, u8 *peer_addr, struct ieee80211_key_conf *key, u8 isvalid)
+{
+        struct sip_cmd_setkey *setkeycmd;
+        struct sk_buff *skb = NULL;
+
+        skb = sip_alloc_ctrl_skbuf(epub->sip, sizeof(struct sip_cmd_setkey) + sizeof(struct sip_hdr), SIP_CMD_SETKEY);
+
+        if (!skb)
+                return -1;
+
+        setkeycmd = (struct sip_cmd_setkey *)(skb->data + sizeof(struct sip_hdr));
+
+        if (peer_addr) {
+                memcpy(setkeycmd->addr, peer_addr, ETH_ALEN);
+        } else {
+                memset(setkeycmd->addr, 0, ETH_ALEN);
+        }
+
+               setkeycmd->bssid_no = bssid_no;
+        setkeycmd->hw_key_idx= key->hw_key_idx;
+
+        if (isvalid) {
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 39))
+                setkeycmd->alg= key->alg;
+#else
+                setkeycmd->alg= esp_cipher2alg(key->cipher);
+#endif /* NEW_KERNEL */
+                setkeycmd->keyidx = key->keyidx;
+                setkeycmd->keylen = key->keylen;
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 39))
+                if (key->alg == ALG_TKIP) {
+#else
+                if (key->cipher == WLAN_CIPHER_SUITE_TKIP) {
+#endif /* NEW_KERNEL */
+                        memcpy(setkeycmd->key, key->key, 16);
+                        memcpy(setkeycmd->key+16,key->key+24,8);
+                        memcpy(setkeycmd->key+24,key->key+16,8);
+                } else {
+                        memcpy(setkeycmd->key, key->key, key->keylen);
+                }
+
+                setkeycmd->flags=1;
+        } else {
+                setkeycmd->flags=0;
+        }
+        return sip_cmd_enqueue(epub->sip, skb);
+}
+
+#ifdef FPGA_LOOPBACK
+#define LOOPBACK_PKT_LEN 200
+int sip_send_loopback_cmd_mblk(struct esp_sip *sip)
+{
+        int cnt, ret;
+
+        for (cnt = 0; cnt < 4; cnt++) {
+                if (0!=(ret=sip_send_loopback_mblk(sip, LOOPBACK_PKT_LEN, LOOPBACK_PKT_LEN, 0)))
+                        return ret;
+        }
+        return 0;
+}
+#endif /* FPGA_LOOPBACK */
+
+int sip_send_loopback_mblk(struct esp_sip *sip, int txpacket_len, int rxpacket_len, int packet_id)
+{
+        struct sk_buff *skb = NULL;
+        struct sip_cmd_loopback *cmd;
+        u8 *ptr = NULL;
+        int i, ret;
+
+        //send 100 loopback pkt
+        if(txpacket_len)
+                skb = sip_alloc_ctrl_skbuf(sip, sizeof(struct sip_cmd_loopback) + sizeof(struct sip_hdr) +  txpacket_len, SIP_CMD_LOOPBACK);
+        else
+                skb = sip_alloc_ctrl_skbuf(sip, sizeof(struct sip_cmd_loopback) + sizeof(struct sip_hdr), SIP_CMD_LOOPBACK);
+
+        if (!skb)
+                return -ENOMEM;
+
+        ptr = skb->data;
+        cmd = (struct sip_cmd_loopback *)(ptr + sizeof(struct sip_hdr));
+        ptr += sizeof(struct sip_hdr);
+        cmd->txlen = txpacket_len;
+        cmd->rxlen = rxpacket_len;
+        cmd->pack_id = packet_id;
+
+        if (txpacket_len) {
+                ptr += sizeof(struct sip_cmd_loopback);
+                /* fill up pkt payload */
+                for (i = 0; i < txpacket_len; i++) {
+                        ptr[i] = i;
+                }
+        }
+
+        ret = sip_cmd_enqueue(sip, skb);
+        if (ret <0)
+                return ret;
+
+        return 0;
+}
+
+//remain_on_channel 
+int sip_send_roc(struct esp_pub *epub, u16 center_freq, u16 duration)
+{
+        struct sk_buff *skb = NULL;
+        struct sip_cmd_config *configcmd;
+
+        skb = sip_alloc_ctrl_skbuf(epub->sip, sizeof(struct sip_cmd_config) + sizeof(struct sip_hdr), SIP_CMD_CONFIG);
+        if (!skb)
+                return -1;
+
+        configcmd = (struct sip_cmd_config *)(skb->data + sizeof(struct sip_hdr));
+        configcmd->center_freq= center_freq;
+        configcmd->duration= duration;
+        return sip_cmd_enqueue(epub->sip, skb);
+}
+
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 28))
+int sip_send_set_sta(struct esp_pub *epub, u8 ifidx, u8 set, struct ieee80211_sta *sta, struct ieee80211_vif *vif, u8 index)
+#else
+int sip_send_set_sta(struct esp_pub *epub, u8 ifidx, u8 set, struct esp_node *node, struct ieee80211_vif *vif, u8 index)
+#endif
+{
+       struct sk_buff *skb = NULL;
+       struct sip_cmd_setsta *setstacmd;
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 28))
+       struct ieee80211_ht_info ht_info = node->ht_info;
+#endif
+       skb = sip_alloc_ctrl_skbuf(epub->sip, sizeof(struct sip_cmd_setsta) + sizeof(struct sip_hdr), SIP_CMD_SETSTA);
+       if (!skb)
+       return -1;
+
+       setstacmd = (struct sip_cmd_setsta *)(skb->data + sizeof(struct sip_hdr));
+       setstacmd->ifidx = ifidx;
+       setstacmd->index = index;
+       setstacmd->set = set;
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 28))
+       if(sta->aid == 0)
+               setstacmd->aid = vif->bss_conf.aid;
+       else
+               setstacmd->aid = sta->aid;
+       memcpy(setstacmd->mac, sta->addr, ETH_ALEN);
+       if(set){
+               if(sta->ht_cap.ht_supported){
+                       if(sta->ht_cap.cap & IEEE80211_HT_CAP_SGI_20)
+                               setstacmd->phymode = ESP_IEEE80211_T_HT20_S;
+                       else
+                               setstacmd->phymode = ESP_IEEE80211_T_HT20_L;
+                       setstacmd->ampdu_factor = sta->ht_cap.ampdu_factor;
+                       setstacmd->ampdu_density = sta->ht_cap.ampdu_density;
+               } else {
+                       if(sta->supp_rates[IEEE80211_BAND_2GHZ] & (~(u32)CONF_HW_BIT_RATE_11B_MASK)){
+                               setstacmd->phymode = ESP_IEEE80211_T_OFDM;
+                       } else {
+                               setstacmd->phymode = ESP_IEEE80211_T_CCK;
+                       }
+               }
+       }
+#else
+    setstacmd->aid = node->aid;
+    memcpy(setstacmd->mac, node->addr, ETH_ALEN);
+    if(set){
+        if(ht_info.ht_supported){
+            if(ht_info.cap & IEEE80211_HT_CAP_SGI_20)
+                setstacmd->phymode = ESP_IEEE80211_T_HT20_S;
+            else
+                setstacmd->phymode = ESP_IEEE80211_T_HT20_L;
+            setstacmd->ampdu_factor = ht_info.ampdu_factor;
+            setstacmd->ampdu_density = ht_info.ampdu_density;
+        } else {
+            //note supp_rates is u64[] in 2.6.27
+            if(node->supp_rates[IEEE80211_BAND_2GHZ] & (~(u64)CONF_HW_BIT_RATE_11B_MASK)){
+                setstacmd->phymode = ESP_IEEE80211_T_OFDM;
+            } else {
+                setstacmd->phymode = ESP_IEEE80211_T_CCK;
+            }   
+        }   
+    }   
+#endif
+        return sip_cmd_enqueue(epub->sip, skb);
+}
+
+int sip_cmd(struct esp_pub *epub, enum sip_cmd_id cmd_id, u8 *cmd_buf, u8 cmd_len)
+{
+       struct sk_buff *skb = NULL;
+
+       skb = sip_alloc_ctrl_skbuf(epub->sip, cmd_len + sizeof(struct sip_hdr), cmd_id);
+       if (!skb)
+               return -1;
+
+       memcpy(skb->data + sizeof(struct sip_hdr), cmd_buf, cmd_len);
+
+       return sip_cmd_enqueue(epub->sip, skb);
+}
diff --git a/drivers/net/wireless/rockchip_wlan/esp8089/esp_ctrl.h b/drivers/net/wireless/rockchip_wlan/esp8089/esp_ctrl.h
new file mode 100755 (executable)
index 0000000..7523e2d
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+ *  Copyright (c) 2009- 2012 Espressif System.
+ *
+ */
+#ifndef _ESP_CTRL_H_
+#define _ESP_CTRL_H_
+
+int sip_send_loopback_mblk(struct esp_sip *sip, int txpacket_len, int rxpacket_len, int packet_id);
+
+int sip_send_config(struct esp_pub *epub, struct ieee80211_conf * conf);
+
+int sip_send_setkey(struct esp_pub *epub, u8 bssid_no, u8 *peer_addr, struct ieee80211_key_conf *key, u8 isvalid);
+
+int sip_send_scan(struct esp_pub *epub);
+
+void sip_scandone_process(struct esp_sip *sip, struct sip_evt_scan_report *scan_report);
+
+int sip_send_bss_info_update(struct esp_pub *epub, struct esp_vif *evif, u8 *bssid, int assoc);
+
+int  sip_send_wmm_params(struct esp_pub *epub, u8 aci, const struct ieee80211_tx_queue_params *params);
+
+int sip_send_ampdu_action(struct esp_pub *epub, u8 action_num, const u8 * addr, u16 tid, u16 ssn, u8 buf_size);
+
+int sip_send_roc(struct esp_pub *epub, u16 center_freq, u16 duration);
+
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 28))
+int sip_send_set_sta(struct esp_pub *epub, u8 ifidx, u8 set, struct ieee80211_sta *sta, struct ieee80211_vif *vif, u8 index);
+#else
+int sip_send_set_sta(struct esp_pub *epub, u8 ifidx, u8 set, struct esp_node *node,  struct ieee80211_vif *vif, u8 index);
+#endif
+
+int sip_send_suspend_config(struct esp_pub *epub, u8 suspend);
+
+int sip_send_ps_config(struct esp_pub *epub, struct esp_ps *ps);
+
+int sip_parse_events(struct esp_sip *sip, u8 *buf);
+
+int sip_cmd(struct esp_pub *epub, enum sip_cmd_id cmd_id, u8 *cmd_buf, u8 cmd_len);
+
+#ifdef ESP_RX_COPYBACK_TEST
+int sip_show_copyback_buf(void);
+#endif /* ESP_RX_COPYBACK_TEST */
+
+#endif /* _ESP_CTRL_H_ */
+
diff --git a/drivers/net/wireless/rockchip_wlan/esp8089/esp_debug.c b/drivers/net/wireless/rockchip_wlan/esp8089/esp_debug.c
new file mode 100755 (executable)
index 0000000..ecc3d92
--- /dev/null
@@ -0,0 +1,285 @@
+/*
+ * Copyright (c) 2011 Espressif System.
+ */
+
+#include <linux/types.h>
+#include <linux/kernel.h>
+
+#include <net/mac80211.h>
+#include "sip2_common.h"
+
+#include "esp_debug.h"
+
+#if defined(CONFIG_DEBUG_FS) && defined(DEBUG_FS)
+
+static struct dentry *esp_debugfs_root = NULL;
+
+static int esp_debugfs_open(struct inode *inode, struct file *filp)
+{
+        filp->private_data = inode->i_private;
+        return 0;
+}
+
+static ssize_t esp_debugfs_read(struct file *filp, char __user *buffer,
+                                size_t count, loff_t *ppos)
+{
+        if (*ppos >= 32)
+                return 0;
+        if (*ppos + count > 32)
+                count = 32 - *ppos;
+
+        if (copy_to_user(buffer, filp->private_data + *ppos, count))
+                return -EFAULT;
+
+        *ppos += count;
+
+        return count;
+}
+
+static ssize_t esp_debugfs_write(struct file *filp, const char __user *buffer,
+                                 size_t count, loff_t *ppos)
+{
+        if (*ppos >= 32)
+                return 0;
+        if (*ppos + count > 32)
+                count = 32 - *ppos;
+
+        if (copy_from_user(filp->private_data + *ppos, buffer, count))
+                return -EFAULT;
+
+        *ppos += count;
+
+        return count;
+}
+
+struct file_operations esp_debugfs_fops = {
+        .owner = THIS_MODULE,
+        .open = esp_debugfs_open,
+        .read = esp_debugfs_read,
+        .write = esp_debugfs_write,
+};
+
+
+struct dentry *esp_dump_var(const char *name, struct dentry *parent, void *value, esp_type type) {
+        struct dentry *rc = NULL;
+        umode_t mode = 0644;
+
+        if(!esp_debugfs_root)
+                return NULL;
+
+        if(!parent)
+                parent = esp_debugfs_root;
+
+        switch(type) {
+        case ESP_U8:
+                rc = debugfs_create_u8(name, mode, parent, (u8*)value);
+                break;
+        case ESP_U16:
+                rc = debugfs_create_u16(name, mode, parent, (u16*)value);
+                break;
+        case ESP_U32:
+                rc = debugfs_create_u32(name, mode, parent, (u32*)value);
+                break;
+        case ESP_U64:
+                rc = debugfs_create_u64(name, mode, parent, (u64*)value);
+                break;
+        case ESP_BOOL:
+                rc = debugfs_create_bool(name, mode, parent, (u32*)value);
+                break;
+        default: //32
+                rc = debugfs_create_u32(name, mode, parent, (u32*)value);
+        }
+
+        if (!rc)
+                goto Fail;
+        else
+                return rc;
+Fail:
+        debugfs_remove_recursive(esp_debugfs_root);
+        esp_debugfs_root = NULL;
+        esp_dbg(ESP_DBG_ERROR, "%s failed, debugfs root removed; var name: %s\n", __FUNCTION__, name);
+        return NULL;
+}
+
+struct dentry *esp_dump_array(const char *name, struct dentry *parent, struct debugfs_blob_wrapper *blob) {
+        struct dentry * rc = NULL;
+        umode_t mode = 0644;
+
+        if(!esp_debugfs_root)
+                return NULL;
+
+        if(!parent)
+                parent = esp_debugfs_root;
+
+        rc = debugfs_create_blob(name, mode, parent, blob);
+
+        if (!rc)
+                goto Fail;
+        else
+                return rc;
+
+Fail:
+        debugfs_remove_recursive(esp_debugfs_root);
+        esp_debugfs_root = NULL;
+        esp_dbg(ESP_DBG_ERROR, "%s failed, debugfs root removed; var name: %s\n", __FUNCTION__, name);
+        return NULL;
+}
+
+struct dentry *esp_dump(const char *name, struct dentry *parent, void *data, int size) {
+        struct dentry *rc;
+        umode_t mode = 0644;
+
+        if(!esp_debugfs_root)
+                return NULL;
+
+        if(!parent)
+                parent = esp_debugfs_root;
+
+        rc = debugfs_create_file(name, mode, parent, data, &esp_debugfs_fops);
+
+        if (!rc)
+                goto Fail;
+        else
+                return rc;
+
+Fail:
+        debugfs_remove_recursive(esp_debugfs_root);
+        esp_debugfs_root = NULL;
+        esp_dbg(ESP_DBG_ERROR, "%s failed, debugfs root removed; var name: %s\n", __FUNCTION__, name);
+        return NULL;
+}
+
+struct dentry *esp_debugfs_add_sub_dir(const char *name) {
+        struct dentry *sub_dir = NULL;
+
+        sub_dir = debugfs_create_dir(name, esp_debugfs_root);
+
+        if (!sub_dir)
+                goto Fail;
+
+        return sub_dir;
+
+Fail:
+        debugfs_remove_recursive(esp_debugfs_root);
+        esp_debugfs_root = NULL;
+        esp_dbg(ESP_DBG_ERROR, "%s failed, debugfs root removed; dir name: %s\n", __FUNCTION__, name);
+        return NULL;
+
+}
+
+int esp_debugfs_init(void)
+{
+        esp_dbg(ESP_DBG, "esp debugfs init\n");
+        esp_debugfs_root = debugfs_create_dir("esp_debug", NULL);
+
+        if (!esp_debugfs_root || IS_ERR_OR_NULL(esp_debugfs_root)) {
+                return -ENOENT;
+        }
+
+        return 0;
+}
+
+void esp_debugfs_exit(void)
+{
+        esp_dbg(ESP_DBG, "esp debugfs exit");
+
+        debugfs_remove_recursive(esp_debugfs_root);
+
+        return;
+}
+
+#else
+
+inline struct dentry *esp_dump_var(const char *name, struct dentry *parent, void *value, esp_type type) {
+        return NULL;
+}
+
+inline struct dentry *esp_dump_array(const char *name, struct dentry *parent, struct debugfs_blob_wrapper *blob) {
+        return NULL;
+}
+
+inline struct dentry *esp_dump(const char *name, struct dentry *parent, void *data, int size) {
+        return NULL;
+}
+
+struct dentry *esp_debugfs_add_sub_dir(const char *name) {
+        return NULL;
+}
+
+inline int esp_debugfs_init(void)
+{
+        return -1;
+}
+
+inline void esp_debugfs_exit(void)
+{
+
+}
+
+#endif
+
+
+void show_buf(u8 *buf, u32 len)
+{
+//     print_hex_dump(KERN_DEBUG, "",  DUMP_PREFIX_OFFSET, 16, 1, buf, len, true);
+#if 1
+        int i = 0, j;
+
+        printk(KERN_INFO "\n++++++++++++++++show rbuf+++++++++++++++\n");
+        for (i = 0; i < (len / 16); i++) {
+                j = i * 16;
+                printk(KERN_INFO "0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x \n", buf[j], buf[j+1],buf[j+2],buf[j+3],buf[j+4],buf[j+5],buf[j+6],buf[j+7],buf[j+8],buf[j+9],buf[j+10],buf[j+11],buf[j+12],buf[j+13],buf[j+14],buf[j+15]);
+        }
+        printk(KERN_INFO "\n++++++++++++++++++++++++++++++++++++++++\n");
+#endif//0000
+}
+
+#ifdef HOST_RC
+static u8 get_cnt(u32 cnt_store, int idx)
+{
+        int shift = idx << 2;
+
+        return (u8)((cnt_store>>shift) & 0xf);
+}
+
+void esp_show_rcstatus(struct sip_rc_status *rcstatus)
+{
+        int i;
+        char msg[82];
+        char rcstr[16];
+        u32 cnt_store = rcstatus->rc_cnt_store;
+
+        memset(msg, 0 ,sizeof(msg));
+        memset(rcstr, 0 ,sizeof(rcstr));
+
+        printk(KERN_INFO "rcstatus map 0x%08x cntStore 0x%08x\n", rcstatus->rc_map, rcstatus->rc_cnt_store);
+
+        for (i = 0; i < IEEE80211_TX_MAX_RATES; i++) {
+                if (rcstatus->rc_map & BIT(i)) {
+                        sprintf(rcstr, "rcIdx %d, cnt %d ", i, get_cnt(cnt_store, i));
+                        strcat(msg, rcstr);
+                }
+        }
+        printk(KERN_INFO "%s \n", msg);
+}
+
+void esp_show_tx_rates(struct ieee80211_tx_rate* rates)
+{
+        int i;
+        char msg[128];
+        char rcstr[32];
+
+        memset(msg, 0 ,sizeof(msg));
+        memset(rcstr, 0 ,sizeof(rcstr));
+
+        for (i = 0; i < IEEE80211_TX_MAX_RATES; i++) {
+                if (rates->idx != -1 ) {
+                        sprintf(rcstr, "Idx %d, cnt %d, flag %02x ", rates->idx, rates->count, rates->flags);
+                        strcat(msg, rcstr);
+                }
+                rates++;
+        }
+        strcat(msg, "\n");
+        printk(KERN_INFO "%s \n", msg);
+}
+#endif /* HOST_RC */
diff --git a/drivers/net/wireless/rockchip_wlan/esp8089/esp_debug.h b/drivers/net/wireless/rockchip_wlan/esp8089/esp_debug.h
new file mode 100755 (executable)
index 0000000..7f19892
--- /dev/null
@@ -0,0 +1,83 @@
+/*
+ * Copyright (c) 2011 Espressif System.
+ *
+ */
+
+#ifndef _DEBUG_H_
+
+#define assert(v) BUG_ON(!(v))
+
+#define ASSERT(v) BUG_ON(!(v))
+
+#include <linux/slab.h>
+#include <linux/debugfs.h>
+#include <asm/uaccess.h>
+
+typedef enum esp_type {
+        ESP_BOOL,
+        ESP_U8,
+        ESP_U16,
+        ESP_U32,
+        ESP_U64
+} esp_type;
+
+struct dentry *esp_dump_var(const char *name, struct dentry *parent, void *value, esp_type type);
+
+struct dentry *esp_dump_array(const char *name, struct dentry *parent, struct debugfs_blob_wrapper *blob);
+
+struct dentry *esp_dump(const char *name, struct dentry *parent, void *data, int size);
+
+struct dentry *esp_debugfs_add_sub_dir(const char *name);
+
+int esp_debugfs_init(void);
+
+void esp_debugfs_exit(void);
+
+enum {
+        ESP_DBG_ERROR = BIT(0),
+        ESP_DBG_TRACE = BIT(1),
+        ESP_DBG_LOG = BIT(2),
+        ESP_DBG = BIT(3),
+        ESP_SHOW = BIT(4),
+        ESP_DBG_TXAMPDU = BIT(5),
+        ESP_DBG_OP = BIT(6),
+       ESP_DBG_PS = BIT(7),
+        ESP_DBG_ALL = 0xffffffff
+};
+
+extern unsigned int esp_msg_level;
+
+#ifdef ESP_ANDROID_LOGGER
+extern bool log_off;
+#endif /* ESP_ANDROID_LOGGER */
+
+#if defined(ANDROID) && defined(ESP_ANDROID_LOGGER)
+#include "esp_android.h"
+#define esp_dbg(mask, fmt, args...) do {                  \
+        if (esp_msg_level & mask)                        \
+       {                                                 \
+               if (log_off)                              \
+                       printk(fmt, ##args);              \
+               else                                                  \
+                       logger_write(4, "esp_wifi", fmt, ##args);     \
+       }                                                             \
+    } while (0)
+#else
+#define esp_dbg(mask, fmt, args...) do {                  \
+        if (esp_msg_level & mask)                         \
+            printk(fmt, ##args);                          \
+    } while (0)
+#endif /* ANDROID && ESP_ANDROID_LOGGER */
+
+void show_buf(u8 *buf, u32 len);
+
+#ifdef HOST_RC
+struct sip_rc_status;
+struct ieee80211_tx_rate;
+
+void esp_show_rcstatus(struct sip_rc_status *rcstatus);
+
+void esp_show_tx_rates(struct ieee80211_tx_rate *rates);
+#endif /* HOST_RC */
+
+#endif /* _DEBUG_H_ */
diff --git a/drivers/net/wireless/rockchip_wlan/esp8089/esp_ext.c b/drivers/net/wireless/rockchip_wlan/esp8089/esp_ext.c
new file mode 100755 (executable)
index 0000000..72003ff
--- /dev/null
@@ -0,0 +1,457 @@
+#ifdef USE_EXT_GPIO
+
+#include <net/cfg80211.h>
+#include <linux/skbuff.h>
+#include <linux/bitops.h>
+#include <linux/version.h>
+#include <linux/mmc/card.h>
+#include <linux/mmc/mmc.h>
+#include <linux/mmc/host.h>
+#include <linux/mmc/sdio_func.h>
+#include <linux/mmc/sdio_ids.h>
+#include <linux/mmc/sdio.h>
+#include <linux/mmc/sd.h>
+#include <linux/completion.h>
+
+#include "esp_ext.h"
+#include "esp_debug.h"
+#include "esp_sip.h"
+#include "esp_sif.h"
+
+#ifdef EXT_GPIO_OPS
+extern void register_ext_gpio_ops(struct esp_ext_gpio_ops *ops);
+extern void unregister_ext_gpio_ops(void);
+
+static struct esp_ext_gpio_ops ext_gpio_ops = {
+        .gpio_request    = ext_gpio_request,                             /* gpio_request gpio_no from 0x0 to 0xf*/
+        .gpio_release    = ext_gpio_release,                             /* gpio_release */
+        .gpio_set_mode   = ext_gpio_set_mode,                            /* gpio_set_mode, data is irq_func of irq_mode , default level of output_mode */
+        .gpio_get_mode   = ext_gpio_get_mode,                            /* gpio_get_mode, current mode */
+        .gpio_set_state  = ext_gpio_set_output_state,                    /* only output state, high level or low level */
+        .gpio_get_state  = ext_gpio_get_state,                           /* current state */
+        .irq_ack         = ext_irq_ack,                                  /* ack interrupt */
+};
+
+
+#endif
+
+static struct esp_pub *ext_epub = NULL;
+
+static u16 intr_mask_reg = 0x0000;
+struct workqueue_struct *ext_irq_wkq;
+struct work_struct ext_irq_work;
+static struct mutex ext_mutex_lock;
+
+static struct ext_gpio_info gpio_list[EXT_GPIO_MAX_NUM] = {
+       { 0, EXT_GPIO_MODE_DISABLE, EXT_GPIO_STATE_IDLE, NULL},
+       { 1, EXT_GPIO_MODE_DISABLE, EXT_GPIO_STATE_IDLE, NULL},
+       { 2, EXT_GPIO_MODE_DISABLE, EXT_GPIO_STATE_IDLE, NULL},
+       { 3, EXT_GPIO_MODE_DISABLE, EXT_GPIO_STATE_IDLE, NULL},
+       { 4, EXT_GPIO_MODE_DISABLE, EXT_GPIO_STATE_IDLE, NULL},
+       { 5, EXT_GPIO_MODE_DISABLE, EXT_GPIO_STATE_IDLE, NULL},
+       { 6, EXT_GPIO_MODE_DISABLE, EXT_GPIO_STATE_IDLE, NULL},
+       { 7, EXT_GPIO_MODE_DISABLE, EXT_GPIO_STATE_IDLE, NULL},
+       { 8, EXT_GPIO_MODE_DISABLE, EXT_GPIO_STATE_IDLE, NULL},
+       { 9, EXT_GPIO_MODE_DISABLE, EXT_GPIO_STATE_IDLE, NULL},
+       {10, EXT_GPIO_MODE_DISABLE, EXT_GPIO_STATE_IDLE, NULL},
+       {11, EXT_GPIO_MODE_DISABLE, EXT_GPIO_STATE_IDLE, NULL},
+       {12, EXT_GPIO_MODE_DISABLE, EXT_GPIO_STATE_IDLE, NULL},
+       {13, EXT_GPIO_MODE_DISABLE, EXT_GPIO_STATE_IDLE, NULL},
+       {14, EXT_GPIO_MODE_DISABLE, EXT_GPIO_STATE_IDLE, NULL},
+       {15, EXT_GPIO_MODE_DISABLE, EXT_GPIO_STATE_IDLE, NULL},
+};
+
+static struct pending_intr_list_info esp_pending_intr_list = {
+       .start_pos = 0,
+       .end_pos = 0,
+       .curr_num = 0,
+};
+
+u16 ext_gpio_get_int_mask_reg(void)
+{
+       return intr_mask_reg;
+}
+
+int ext_gpio_request(int gpio_no)
+{
+       mutex_lock(&ext_mutex_lock);
+
+       ASSERT(ext_epub != NULL);
+
+       if (atomic_read(&ext_epub->sip->state) != SIP_RUN) {
+               mutex_unlock(&ext_mutex_lock);
+               esp_dbg(ESP_DBG_ERROR, "%s esp state is not ok\n", __func__);
+               return -3;
+       }
+
+       if (gpio_no >= EXT_GPIO_MAX_NUM || gpio_no < 0) {
+               mutex_unlock(&ext_mutex_lock);
+               esp_dbg(ESP_DBG_ERROR, "%s unkown gpio num\n", __func__);
+               return -1;
+       }
+
+       if (gpio_list[gpio_no].gpio_mode != EXT_GPIO_MODE_DISABLE) {
+               mutex_unlock(&ext_mutex_lock);
+               esp_dbg(ESP_DBG_ERROR, "%s gpio is already in used by other\n", __func__);
+               return -2;
+       } else {
+               gpio_list[gpio_no].gpio_mode = EXT_GPIO_MODE_MAX;
+               mutex_unlock(&ext_mutex_lock);
+               return 0;
+       }
+}
+EXPORT_SYMBOL(ext_gpio_request);
+       
+int ext_gpio_release(int gpio_no)
+{
+       int ret;
+
+       mutex_lock(&ext_mutex_lock);
+
+       ASSERT(ext_epub != NULL);
+
+       if (atomic_read(&ext_epub->sip->state) != SIP_RUN) {
+               mutex_unlock(&ext_mutex_lock);
+               esp_dbg(ESP_DBG_ERROR, "%s esp state is not ok\n", __func__);
+               return -3;
+       }
+
+       if (gpio_no >= EXT_GPIO_MAX_NUM || gpio_no < 0) {
+               mutex_unlock(&ext_mutex_lock);
+               esp_dbg(ESP_DBG_ERROR, "%s unkown gpio num\n", __func__);
+               return -1;
+       }
+       sif_lock_bus(ext_epub);
+       sif_raw_dummy_read(ext_epub);
+       ret = sif_config_gpio_mode(ext_epub, (u8)gpio_no, EXT_GPIO_MODE_DISABLE);
+       sif_unlock_bus(ext_epub);       
+       if (ret) {
+               esp_dbg(ESP_DBG_ERROR, "%s gpio release error\n", __func__);
+               mutex_unlock(&ext_mutex_lock);
+               return ret;
+       }
+
+       gpio_list[gpio_no].gpio_mode  = EXT_GPIO_MODE_DISABLE;
+       gpio_list[gpio_no].gpio_state  = EXT_GPIO_STATE_IDLE;
+       gpio_list[gpio_no].irq_handler = NULL;
+       intr_mask_reg &= ~(1<<gpio_no);
+       
+       mutex_unlock(&ext_mutex_lock);
+
+       return 0;
+}
+EXPORT_SYMBOL(ext_gpio_release);
+
+int ext_gpio_set_mode(int gpio_no, int mode, void *data)
+{
+       u8 gpio_mode;
+       int ret;
+       struct ext_gpio_info backup_info;
+
+       ASSERT(ext_epub);
+
+       mutex_lock(&ext_mutex_lock);
+
+       if (gpio_no >= EXT_GPIO_MAX_NUM || gpio_no < 0) {
+               mutex_unlock(&ext_mutex_lock);
+               esp_dbg(ESP_DBG_ERROR, "%s unkown gpio num\n", __func__);
+               return -1;
+       }
+
+       if (gpio_list[gpio_no].gpio_mode == EXT_GPIO_MODE_DISABLE) {
+               mutex_unlock(&ext_mutex_lock);
+               esp_dbg(ESP_DBG_ERROR, "%s gpio is not in occupy, please request gpio\n", __func__);
+               return -2;
+       }
+
+       if (mode <= EXT_GPIO_MODE_OOB || mode >= EXT_GPIO_MODE_MAX) {
+               mutex_unlock(&ext_mutex_lock);
+               esp_dbg(ESP_DBG_ERROR, "%s gpio mode unknown\n", __func__);
+               return -3;
+       }
+
+       memcpy(&backup_info, &gpio_list[gpio_no], sizeof(struct ext_gpio_info));
+
+       gpio_list[gpio_no].gpio_mode = mode;
+       gpio_mode = (u8)mode;
+
+       switch (mode) {
+               case EXT_GPIO_MODE_INTR_POSEDGE:
+               case EXT_GPIO_MODE_INTR_NEGEDGE:
+               case EXT_GPIO_MODE_INTR_LOLEVEL:
+               case EXT_GPIO_MODE_INTR_HILEVEL:
+                       if (!data) {
+                               memcpy(&gpio_list[gpio_no], &backup_info, sizeof(struct ext_gpio_info));
+                               esp_dbg(ESP_DBG_ERROR, "%s irq_handler is NULL\n", __func__);
+                               mutex_unlock(&ext_mutex_lock);
+                               return -4;
+                       }
+                       gpio_list[gpio_no].irq_handler = (ext_irq_handler_t)data;
+                       intr_mask_reg |= (1<<gpio_no);
+                       break;
+               case EXT_GPIO_MODE_OUTPUT:
+                       if (!data) {
+                               memcpy(&gpio_list[gpio_no], &backup_info, sizeof(struct ext_gpio_info));
+                               esp_dbg(ESP_DBG_ERROR, "%s output default value is NULL\n", __func__);
+                               mutex_unlock(&ext_mutex_lock);
+                               return -4;
+                       }
+                       *(int *)data = (*(int *)data == 0 ? 0 : 1);
+                       gpio_mode = (u8)(((*(int *)data)<<4) | gpio_mode);
+               default:
+                       gpio_list[gpio_no].irq_handler = NULL;
+                       intr_mask_reg &= ~(1<<gpio_no);
+                       break;
+       }
+
+       sif_lock_bus(ext_epub);
+       sif_raw_dummy_read(ext_epub);
+       ret = sif_config_gpio_mode(ext_epub, (u8)gpio_no, gpio_mode);
+       sif_unlock_bus(ext_epub);
+       if (ret) {
+               memcpy(&gpio_list[gpio_no], &backup_info, sizeof(struct ext_gpio_info));
+               esp_dbg(ESP_DBG_ERROR, "%s gpio set error\n", __func__);
+               mutex_unlock(&ext_mutex_lock);
+               return ret;
+       }
+
+       mutex_unlock(&ext_mutex_lock);
+       return 0;
+}
+EXPORT_SYMBOL(ext_gpio_set_mode);
+
+int ext_gpio_get_mode(int gpio_no)
+{
+       int gpio_mode;
+
+       mutex_lock(&ext_mutex_lock);
+
+       if (gpio_no >= EXT_GPIO_MAX_NUM || gpio_no < 0) {
+               esp_dbg(ESP_DBG_ERROR, "%s unkown gpio num\n", __func__);
+               mutex_unlock(&ext_mutex_lock);
+               return -1;
+       }
+
+       gpio_mode = gpio_list[gpio_no].gpio_mode;
+
+       mutex_unlock(&ext_mutex_lock);
+
+       return gpio_mode;
+}
+EXPORT_SYMBOL(ext_gpio_get_mode);
+
+
+int ext_gpio_set_output_state(int gpio_no, int state)
+{
+       int ret;
+
+       mutex_lock(&ext_mutex_lock);
+
+       if (gpio_no >= EXT_GPIO_MAX_NUM || gpio_no < 0) {
+               mutex_unlock(&ext_mutex_lock);
+               esp_dbg(ESP_DBG_ERROR, "%s unkown gpio num\n", __func__);
+               return -1;
+       }
+
+       if (gpio_list[gpio_no].gpio_mode != EXT_GPIO_MODE_OUTPUT) {
+               mutex_unlock(&ext_mutex_lock);
+               esp_dbg(ESP_DBG_ERROR, "%s gpio is not in output state, please request gpio or set output state\n", __func__);
+               return -2;
+       }
+
+       if (state != EXT_GPIO_STATE_LOW && state != EXT_GPIO_STATE_HIGH) {
+               mutex_unlock(&ext_mutex_lock);
+               esp_dbg(ESP_DBG_ERROR, "%s gpio state unknown\n", __func__);
+               return -3;
+       }
+
+       sif_lock_bus(ext_epub);
+       sif_raw_dummy_read(ext_epub);
+       ret = sif_set_gpio_output(ext_epub, 1<<gpio_no, state<<gpio_no);
+       sif_unlock_bus(ext_epub);       
+       if (ret) {
+               esp_dbg(ESP_DBG_ERROR, "%s gpio state set error\n", __func__);
+               mutex_unlock(&ext_mutex_lock);
+               return ret;
+       }
+       gpio_list[gpio_no].gpio_state = state;
+       
+       mutex_unlock(&ext_mutex_lock);
+
+       return 0;
+}
+EXPORT_SYMBOL(ext_gpio_set_output_state);
+
+int ext_gpio_get_state(int gpio_no)
+{
+       int ret;
+       u16 state;
+       u16 mask;
+
+       mutex_lock(&ext_mutex_lock);
+       if (gpio_no >= EXT_GPIO_MAX_NUM || gpio_no < 0) {
+               esp_dbg(ESP_DBG_ERROR, "%s unkown gpio num\n", __func__);
+               mutex_unlock(&ext_mutex_lock);
+               return -1;
+       }
+
+       if (gpio_list[gpio_no].gpio_mode == EXT_GPIO_MODE_OUTPUT) {
+               state = gpio_list[gpio_no].gpio_state;
+        } else if (gpio_list[gpio_no].gpio_mode == EXT_GPIO_MODE_INPUT) {
+               sif_lock_bus(ext_epub);
+               sif_raw_dummy_read(ext_epub);
+               ret = sif_get_gpio_input(ext_epub, &mask, &state);
+               sif_unlock_bus(ext_epub);
+               if (ret) {
+                       esp_dbg(ESP_DBG_ERROR, "%s get gpio_input state error\n", __func__);
+                       mutex_unlock(&ext_mutex_lock);
+                       return ret;
+               }       
+        } else {
+               esp_dbg(ESP_DBG_ERROR, "%s gpio_state is not input or output\n", __func__);
+               mutex_unlock(&ext_mutex_lock);
+               return -2;
+       }
+       mutex_unlock(&ext_mutex_lock);
+
+       return (state & (1<<gpio_no)) ? 1 : 0;
+}
+EXPORT_SYMBOL(ext_gpio_get_state);
+
+int ext_irq_ack(int gpio_no)
+{
+       int ret;
+
+       mutex_lock(&ext_mutex_lock);
+       if (gpio_no >= EXT_GPIO_MAX_NUM || gpio_no < 0) {
+               esp_dbg(ESP_DBG_ERROR, "%s unkown gpio num\n", __func__);
+               mutex_unlock(&ext_mutex_lock);
+               return -1;
+       }
+
+       if (gpio_list[gpio_no].gpio_mode != EXT_GPIO_MODE_INTR_POSEDGE 
+                       && gpio_list[gpio_no].gpio_mode != EXT_GPIO_MODE_INTR_NEGEDGE
+                       && gpio_list[gpio_no].gpio_mode != EXT_GPIO_MODE_INTR_LOLEVEL
+                       && gpio_list[gpio_no].gpio_mode != EXT_GPIO_MODE_INTR_HILEVEL) {
+               esp_dbg(ESP_DBG_ERROR, "%s gpio mode is not intr mode\n", __func__);
+               mutex_unlock(&ext_mutex_lock);
+               return -2;
+       }
+
+       sif_lock_bus(ext_epub);
+       sif_raw_dummy_read(ext_epub);
+       ret = sif_set_gpio_output(ext_epub, 0x00, 1<<gpio_no);
+       sif_unlock_bus(ext_epub);
+       if (ret) {
+               esp_dbg(ESP_DBG_ERROR, "%s gpio intr ack error\n", __func__);
+               mutex_unlock(&ext_mutex_lock);
+               return ret;
+       }
+
+       mutex_unlock(&ext_mutex_lock);
+       return 0;
+}
+EXPORT_SYMBOL(ext_irq_ack);
+
+void show_status(void)
+{
+       int i=0;
+       for (i = 0; i < MAX_PENDING_INTR_LIST;i++)
+               esp_dbg(ESP_DBG_ERROR, "status[%d] = [0x%04x]\n", i, esp_pending_intr_list.pending_intr_list[i]);
+
+       esp_dbg(ESP_DBG_ERROR, "start_pos[%d]\n",esp_pending_intr_list.start_pos);
+       esp_dbg(ESP_DBG_ERROR, "end_pos[%d]\n",esp_pending_intr_list.end_pos);
+       esp_dbg(ESP_DBG_ERROR, "curr_num[%d]\n",esp_pending_intr_list.curr_num);
+       
+}
+void esp_tx_work(struct work_struct *work)
+{
+       int i;
+       u16 tmp_intr_status_reg;
+
+       esp_dbg(ESP_DBG_TRACE, "%s enter\n", __func__);
+
+       spin_lock(&esp_pending_intr_list.spin_lock);
+       /* assert cycle queue is not empty */   
+       ASSERT(esp_pending_intr_list.curr_num > 0);
+
+       tmp_intr_status_reg = esp_pending_intr_list.pending_intr_list[esp_pending_intr_list.start_pos];
+       
+       esp_pending_intr_list.pending_intr_list[esp_pending_intr_list.start_pos] = 0x0000;
+       esp_pending_intr_list.start_pos = (esp_pending_intr_list.start_pos + 1) % MAX_PENDING_INTR_LIST;
+       esp_pending_intr_list.curr_num--;
+       
+       spin_unlock(&esp_pending_intr_list.spin_lock);
+       
+       for (i = 0; i < EXT_GPIO_MAX_NUM; i++) {
+               if (tmp_intr_status_reg & (1<<i) && (gpio_list[i].irq_handler))
+                       gpio_list[i].irq_handler();
+       }
+
+       spin_lock(&esp_pending_intr_list.spin_lock);
+       if (esp_pending_intr_list.curr_num > 0)
+               queue_work(ext_irq_wkq, &ext_irq_work);
+       spin_unlock(&esp_pending_intr_list.spin_lock);
+}
+
+void ext_gpio_int_process(u16 value) {
+       if (value == 0x00)
+               return;
+
+       esp_dbg(ESP_DBG_TRACE, "%s enter\n", __func__);
+
+       /* intr cycle queue is full, wait */
+       while (esp_pending_intr_list.curr_num >= MAX_PENDING_INTR_LIST)
+       {
+               udelay(1);
+       }
+
+       spin_lock(&esp_pending_intr_list.spin_lock);
+       
+       ASSERT(esp_pending_intr_list.curr_num < MAX_PENDING_INTR_LIST);
+       
+       esp_pending_intr_list.pending_intr_list[esp_pending_intr_list.end_pos] = value;
+       esp_pending_intr_list.end_pos = (esp_pending_intr_list.end_pos + 1) % MAX_PENDING_INTR_LIST;
+       esp_pending_intr_list.curr_num++;
+
+       queue_work(ext_irq_wkq, &ext_irq_work);
+       
+       spin_unlock(&esp_pending_intr_list.spin_lock);
+}
+
+int ext_gpio_init(struct esp_pub *epub)
+{
+       esp_dbg(ESP_DBG_LOG, "%s enter\n", __func__);
+
+       ext_epub = epub;
+       ASSERT(ext_epub != NULL);
+
+       ext_irq_wkq = create_singlethread_workqueue("esp_ext_irq_wkq");
+       if (ext_irq_wkq == NULL) {
+               esp_dbg(ESP_DBG_ERROR, "%s create workqueue error\n", __func__);
+               return -2;
+       }
+
+#ifdef EXT_GPIO_OPS
+       register_ext_gpio_ops(&ext_gpio_ops);
+#endif
+       
+       INIT_WORK(&ext_irq_work, esp_tx_work);
+       mutex_init(&ext_mutex_lock);
+
+       return 0;
+}
+
+void ext_gpio_deinit(void)
+{
+       esp_dbg(ESP_DBG_LOG, "%s enter\n", __func__);
+
+       ext_epub = NULL;
+#ifdef EXT_GPIO_OPS
+       unregister_ext_gpio_ops();
+#endif
+        cancel_work_sync(&ext_irq_work);
+       destroy_workqueue(ext_irq_wkq);
+}
+
+#endif /* USE_EXT_GPIO */
diff --git a/drivers/net/wireless/rockchip_wlan/esp8089/esp_ext.h b/drivers/net/wireless/rockchip_wlan/esp8089/esp_ext.h
new file mode 100755 (executable)
index 0000000..9385c54
--- /dev/null
@@ -0,0 +1,100 @@
+#ifdef USE_EXT_GPIO
+
+#ifndef _ESP_EXT_H_
+#define _ESP_EXT_H_
+
+#include <linux/interrupt.h>
+#include <linux/module.h>
+#include "esp_sip.h"
+
+#define MAX_PENDING_INTR_LIST 16
+
+#ifdef EXT_GPIO_OPS
+typedef struct esp_ext_gpio_ops {
+        int (*gpio_request)(int gpio_no);                             /* gpio_request gpio_no from 0x0 to 0xf*/
+        int (*gpio_release)(int gpio_no);                             /* gpio_release */
+        int (*gpio_set_mode)(int gpio_no, int mode , void *data);     /* gpio_set_mode, data is irq_func of irq_mode , default level of output_mode */
+        int (*gpio_get_mode)(int gpio_no);                            /* gpio_get_mode, current mode */
+        int (*gpio_set_state)(int gpio_no, int state);                /* only output state, high level or low level */
+        int (*gpio_get_state)(int gpio_no);                           /* current state */
+       int (*irq_ack)(int gpio_no);                                  /* ack interrupt */
+} esp_ext_gpio_ops_t;
+#endif
+
+typedef enum EXT_GPIO_NO {
+       EXT_GPIO_GPIO0 = 0,
+       EXT_GPIO_U0TXD,
+       EXT_GPIO_GPIO2,
+       EXT_GPIO_U0RXD,
+       EXT_GPIO_GPIO4,
+       EXT_GPIO_GPIO5,
+       EXT_GPIO_SD_CLK,
+       EXT_GPIO_SD_DATA0,
+       EXT_GPIO_SD_DATA1,
+       EXT_GPIO_SD_DATA2,
+       EXT_GPIO_SD_DATA3,
+       EXT_GPIO_SD_CMD,
+       EXT_GPIO_MTDI,
+       EXT_GPIO_MTCK,
+       EXT_GPIO_MTMS,
+       EXT_GPIO_MTDO,
+       EXT_GPIO_MAX_NUM
+} EXT_GPIO_NO_T;
+       
+typedef enum EXT_GPIO_MODE {           //dir           def     pullup  mode    wake
+       EXT_GPIO_MODE_OOB = 0,          //output        1       0       n/a     n/a
+       EXT_GPIO_MODE_OUTPUT,           //output        /       0       n/a     n/a
+       EXT_GPIO_MODE_DISABLE,          //input         n/a     0       DIS     n/a
+       EXT_GPIO_MODE_INTR_POSEDGE,     //input         n/a     0       POS     1
+       EXT_GPIO_MODE_INTR_NEGEDGE,     //input         n/a     1       NEG     1
+       EXT_GPIO_MODE_INPUT,            //input         n/a     0       ANY     1
+       EXT_GPIO_MODE_INTR_LOLEVEL,     //input         n/a     1       LOW     1
+       EXT_GPIO_MODE_INTR_HILEVEL,     //input         n/a     0       HIGH    1
+       EXT_GPIO_MODE_MAX,
+} EXT_GPIO_MODE_T;
+
+typedef enum EXT_GPIO_STATE {
+       EXT_GPIO_STATE_LOW,
+       EXT_GPIO_STATE_HIGH,
+       EXT_GPIO_STATE_IDLE
+} EXT_GPIO_STATE_T;
+
+typedef irqreturn_t (*ext_irq_handler_t)(void);
+
+struct ext_gpio_info {
+       int gpio_no;
+       int gpio_mode;
+       int gpio_state;
+       ext_irq_handler_t irq_handler;
+};
+
+struct pending_intr_list_info {
+       u16 pending_intr_list[MAX_PENDING_INTR_LIST];
+       int start_pos;
+       int end_pos;
+       int curr_num;
+       spinlock_t spin_lock;
+};
+
+u16 ext_gpio_get_int_mask_reg(void);
+
+/* for extern user start */
+int ext_gpio_request(int gpio_no);
+int ext_gpio_release(int gpio_no);
+
+int ext_gpio_set_mode(int gpio_no, int mode, void *data);
+int ext_gpio_get_mode(int gpio_no);
+
+int ext_gpio_set_output_state(int gpio_no, int state);
+int ext_gpio_get_state(int gpio_no);
+
+int ext_irq_ack(int gpio_no);
+/* for extern user end */
+
+void ext_gpio_int_process(u16 value);
+
+int ext_gpio_init(struct esp_pub *epub);
+void ext_gpio_deinit(void);
+#endif /* _ESP_EXT_H_ */
+
+#endif /* USE_EXT_GPIO */
diff --git a/drivers/net/wireless/rockchip_wlan/esp8089/esp_init_data.h b/drivers/net/wireless/rockchip_wlan/esp8089/esp_init_data.h
new file mode 100755 (executable)
index 0000000..38a349d
--- /dev/null
@@ -0,0 +1 @@
+static char esp_init_data[] = {0x5,0x0,4,2,5,5,5,2,5,0,4,5,5,4,5,5,4,-2,-3,-1,-16,-16,-16,-32,-32,-32,204,1,0xff,0xff,0,0,0,0,82,78,74,68,64,56,0,0,1,1,2,3,4,5,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,240,10,0x0,0x0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
\ No newline at end of file
diff --git a/drivers/net/wireless/rockchip_wlan/esp8089/esp_io.c b/drivers/net/wireless/rockchip_wlan/esp8089/esp_io.c
new file mode 100755 (executable)
index 0000000..3c0dd73
--- /dev/null
@@ -0,0 +1,596 @@
+#include <linux/mmc/sdio_func.h>
+#include "esp_sif.h"
+#include "slc_host_register.h"
+#include "esp_debug.h"
+
+#ifdef SIF_DEBUG_DSR_DUMP_REG
+static void dump_slc_regs(struct slc_host_regs *regs);
+#endif /* SIF_DEBUG_DSR_DUMP_REG */
+
+int esp_common_read(struct esp_pub *epub, u8 *buf, u32 len, int sync, bool noround)
+{
+       if (sync) {
+#ifdef ESP_USE_SDIO
+               return sif_lldesc_read_sync(epub, buf, len);
+#endif
+#ifdef ESP_USE_SPI
+               //return sif_spi_read_sync(epub, buf, len, NOT_CHECK_IDLE);
+               return sif_spi_read_sync(epub, buf, len, CHECK_IDLE);
+#endif
+       } else {
+#ifdef ESP_USE_SDIO
+               return sif_lldesc_read_raw(epub, buf, len, noround);
+#endif
+#ifdef ESP_USE_SPI
+               //return sif_spi_read_nosync(epub, buf, len, NOT_CHECK_IDLE, noround);
+               return sif_spi_read_nosync(epub, buf, len, CHECK_IDLE, noround);
+#endif
+       }
+}
+
+
+int esp_common_write(struct esp_pub *epub, u8 *buf, u32 len, int sync)
+{
+       if (sync) {
+#ifdef ESP_USE_SDIO
+               return sif_lldesc_write_sync(epub, buf, len);
+#endif
+#ifdef ESP_USE_SPI
+               //return sif_spi_write_sync(epub, buf, len, NOT_CHECK_IDLE);
+               return sif_spi_write_sync(epub, buf, len, CHECK_IDLE);
+#endif
+       } else {
+#ifdef ESP_USE_SDIO
+               return sif_lldesc_write_raw(epub, buf, len);
+#endif
+#ifdef ESP_USE_SPI
+               //return sif_spi_write_nosync(epub, buf, len, NOT_CHECK_IDLE);
+               return sif_spi_write_nosync(epub, buf, len, CHECK_IDLE);
+#endif
+       }
+}
+
+
+int esp_common_read_with_addr(struct esp_pub *epub, u32 addr, u8 *buf, u32 len, int sync)
+{
+       if (sync) {
+#ifdef ESP_USE_SDIO
+               return sif_io_sync(epub, addr, buf, len, SIF_FROM_DEVICE | SIF_SYNC | SIF_BYTE_BASIS | SIF_INC_ADDR);
+#endif
+#ifdef ESP_USE_SPI
+               return sif_spi_epub_read_mix_sync(epub, addr, buf, len, CHECK_IDLE);
+#endif
+       } else {
+#ifdef ESP_USE_SDIO
+               return sif_io_raw(epub, addr, buf, len, SIF_FROM_DEVICE | SIF_BYTE_BASIS | SIF_INC_ADDR);
+#endif
+#ifdef ESP_USE_SPI
+               return sif_spi_epub_read_mix_nosync(epub, addr, buf, len, CHECK_IDLE);
+#endif
+       }
+
+}
+
+
+int esp_common_write_with_addr(struct esp_pub *epub, u32 addr, u8 *buf, u32 len, int sync)
+{
+       if (sync) {
+#ifdef ESP_USE_SDIO
+               return sif_io_sync(epub, addr, buf, len, SIF_TO_DEVICE | SIF_SYNC | SIF_BYTE_BASIS | SIF_INC_ADDR);
+#endif
+#ifdef ESP_USE_SPI
+               return sif_spi_epub_write_mix_sync(epub, addr, buf, len, CHECK_IDLE);
+#endif
+       } else {
+#ifdef ESP_USE_SDIO
+               return sif_io_raw(epub, addr, buf, len, SIF_TO_DEVICE | SIF_BYTE_BASIS | SIF_INC_ADDR);
+#endif
+#ifdef ESP_USE_SPI
+               return sif_spi_epub_write_mix_nosync(epub, addr, buf, len, CHECK_IDLE);
+#endif
+       }
+}
+
+int esp_common_readbyte_with_addr(struct esp_pub *epub, u32 addr, u8 *buf, int sync)
+{
+       if(sync){
+#ifdef ESP_USE_SDIO
+       int res;
+       sif_lock_bus(epub);
+       *buf = sdio_io_readb(epub, addr, &res);
+       sif_unlock_bus(epub);
+       return res;
+#endif
+#ifdef ESP_USE_SPI
+       return sif_spi_epub_read_mix_sync(epub, addr, buf, 1, CHECK_IDLE);
+#endif
+       } else {
+#ifdef ESP_USE_SDIO
+       int res;
+       *buf = sdio_io_readb(epub, addr, &res);
+       return res;
+#endif
+#ifdef ESP_USE_SPI
+       return sif_spi_epub_read_mix_nosync(epub, addr, buf, 1, CHECK_IDLE);
+#endif
+       }
+
+}
+
+
+
+int esp_common_writebyte_with_addr(struct esp_pub *epub, u32 addr, u8 buf, int sync)
+{
+       if(sync){
+#ifdef ESP_USE_SDIO
+               int res;
+               sif_lock_bus(epub);
+               sdio_io_writeb(epub, buf, addr, &res);
+               sif_unlock_bus(epub);
+               return res;
+#endif
+#ifdef ESP_USE_SPI
+               return sif_spi_epub_write_mix_sync(epub, addr, &buf, 1, CHECK_IDLE);
+#endif
+       } else {
+#ifdef ESP_USE_SDIO
+               int res;
+               sdio_io_writeb(epub, buf, addr, &res);
+               return res;
+#endif
+#ifdef ESP_USE_SPI
+               return sif_spi_epub_write_mix_nosync(epub, addr, &buf, 1, CHECK_IDLE);
+#endif
+       }
+}
+
+typedef enum _SDIO_INTR_MODE {
+       SDIO_INTR_IB = 0,
+       SDIO_INTR_OOB_TOGGLE,
+       SDIO_INTR_OOB_HIGH_LEVEL,
+       SDIO_INTR_OOB_LOW_LEVEL,
+} SDIO_INTR_MODE;
+
+#define GEN_GPIO_SEL(_gpio_num, _sel_func, _intr_mode, _offset) (((_offset)<< 9 ) |((_intr_mode) << 7)|((_sel_func) << 4)|(_gpio_num))
+//bit[3:0] = gpio num, 2
+//bit[6:4] = gpio sel func, 0
+//bit[8:7] = gpio intr mode, SDIO_INTR_OOB_TOGGLE
+//bit[15:9] = register offset, 0x38
+
+u16 gpio_sel_sets[17] = {
+       GEN_GPIO_SEL(0, 0, SDIO_INTR_OOB_TOGGLE, 0x34),//GPIO0
+       GEN_GPIO_SEL(1, 3, SDIO_INTR_OOB_TOGGLE, 0x18),//U0TXD
+       GEN_GPIO_SEL(2, 0, SDIO_INTR_OOB_TOGGLE, 0x38),//GPIO2
+       GEN_GPIO_SEL(3, 3, SDIO_INTR_OOB_TOGGLE, 0x14),//U0RXD
+       GEN_GPIO_SEL(4, 0, SDIO_INTR_OOB_TOGGLE, 0x3C),//GPIO4
+       GEN_GPIO_SEL(5, 0, SDIO_INTR_OOB_TOGGLE, 0x40),//GPIO5
+       GEN_GPIO_SEL(6, 3, SDIO_INTR_OOB_TOGGLE, 0x1C),//SD_CLK
+       GEN_GPIO_SEL(7, 3, SDIO_INTR_OOB_TOGGLE, 0x20),//SD_DATA0
+       GEN_GPIO_SEL(8, 3, SDIO_INTR_OOB_TOGGLE, 0x24),//SD_DATA1
+       GEN_GPIO_SEL(9, 3, SDIO_INTR_OOB_TOGGLE, 0x28),//SD_DATA2
+       GEN_GPIO_SEL(10, 3, SDIO_INTR_OOB_TOGGLE, 0x2C),//SD_DATA3
+       GEN_GPIO_SEL(11, 3, SDIO_INTR_OOB_TOGGLE, 0x30),//SD_CMD
+       GEN_GPIO_SEL(12, 3, SDIO_INTR_OOB_TOGGLE, 0x04),//MTDI
+       GEN_GPIO_SEL(13, 3, SDIO_INTR_OOB_TOGGLE, 0x08),//MTCK
+       GEN_GPIO_SEL(14, 3, SDIO_INTR_OOB_TOGGLE, 0x0C),//MTMS
+       GEN_GPIO_SEL(15, 3, SDIO_INTR_OOB_TOGGLE, 0x10),//MTDO
+       //pls do not change sel before, if you want to change intr mode,change the one blow
+       //GEN_GPIO_SEL(2, 0, SDIO_INTR_OOB_TOGGLE, 0x38)
+       GEN_GPIO_SEL(2, 0, SDIO_INTR_OOB_LOW_LEVEL, 0x38)
+};
+#if defined(USE_EXT_GPIO)
+u16 gpio_forbidden = 0;
+#endif
+
+int sif_interrupt_target(struct esp_pub *epub, u8 index)
+{
+       u8 low_byte = BIT(index);
+       return esp_common_writebyte_with_addr(epub, SLC_HOST_CONF_W4 + 2, low_byte, ESP_SIF_NOSYNC);
+       
+}
+
+#ifdef USE_EXT_GPIO
+int sif_config_gpio_mode(struct esp_pub *epub, u8 gpio_num, u8 gpio_mode)
+{
+       u32 *p_tbuf = NULL;
+       int err;
+    
+       if((BIT(gpio_num) & gpio_forbidden) || gpio_num > 15)
+               return 1;    
+
+       p_tbuf = kzalloc(sizeof(u32), GFP_KERNEL);
+       ASSERT(p_tbuf != NULL);
+       *p_tbuf = (gpio_mode << 16) | gpio_sel_sets[gpio_num];
+       err = esp_common_write_with_addr(epub, SLC_HOST_CONF_W1, (u8*)p_tbuf, sizeof(u32), ESP_SIF_NOSYNC);
+       if (err)
+               return err;
+
+       kfree(p_tbuf);
+       
+       return sif_interrupt_target(epub, 4);
+}
+
+int sif_set_gpio_output(struct esp_pub *epub, u16 mask, u16 value)
+{
+       u32 *p_tbuf = NULL;
+       int err;
+        
+       mask &= ~gpio_forbidden;
+       p_tbuf = kzalloc(sizeof(u32), GFP_KERNEL);
+       ASSERT(p_tbuf != NULL);
+       *p_tbuf = (mask << 16) | value;
+       err = esp_common_write_with_addr(epub, SLC_HOST_CONF_W2, (u8*)p_tbuf, sizeof(u32), ESP_SIF_NOSYNC);
+       if (err)
+               return err;
+
+       kfree(p_tbuf);
+       
+       return sif_interrupt_target(epub, 5);
+}
+
+int sif_get_gpio_intr(struct esp_pub *epub, u16 intr_mask, u16 *value)
+{
+       u32 *p_tbuf = NULL;
+       int err;
+        
+       p_tbuf = kzalloc(sizeof(u32), GFP_KERNEL);
+       ASSERT(p_tbuf != NULL);
+       *p_tbuf = 0;
+       err = esp_common_write_with_addr(epub, SLC_HOST_CONF_W3, (u8*)p_tbuf, sizeof(u32), ESP_SIF_NOSYNC);
+       if (err)
+               return err;
+
+       *value = *p_tbuf & intr_mask;
+       kfree(p_tbuf);
+       if(*value == 0)
+               return 0;
+       return sif_interrupt_target(epub, 6);
+}
+
+int sif_get_gpio_input(struct esp_pub *epub, u16 *mask, u16 *value)
+{
+       u32 *p_tbuf = NULL;
+       int err;
+        
+       err = sif_interrupt_target(epub, 3);
+       if (err)
+               return err;
+
+       udelay(20);
+       p_tbuf = kzalloc(sizeof(u32), GFP_KERNEL);
+       ASSERT(p_tbuf != NULL);
+       *p_tbuf = 0;
+       err = esp_common_write_with_addr(epub, SLC_HOST_CONF_W3, (u8*)p_tbuf, sizeof(u32), ESP_SIF_NOSYNC);
+       if (err)
+               return err;
+
+       *mask = *p_tbuf >> 16;
+       *value = *p_tbuf & *mask;
+       kfree(p_tbuf);
+       
+       return 0;
+}
+#endif
+
+void sif_raw_dummy_read(struct esp_pub *epub)
+{
+       int retry = 0;
+        u32 *p_tbuf = NULL;
+       static u32 read_err_cnt = 0;
+       static u32 write_err_cnt = 0;
+       static u32 unknow_err_cnt = 0;
+       static u32 check_cnt = 0;
+       int ext_cnt = 0;      
+
+       if (atomic_read(&epub->ps.state) == ESP_PM_ON) {
+               atomic_set(&epub->ps.state, ESP_PM_OFF);
+        } else {
+               return ;
+       }
+
+
+       p_tbuf = kzalloc(sizeof(u32), GFP_KERNEL);
+       ASSERT(p_tbuf != NULL);
+       *p_tbuf = 0;
+               
+       *p_tbuf = 0x010001ff;
+
+       esp_common_write_with_addr(epub, SLC_HOST_CONF_W4, (u8 *)p_tbuf, sizeof(u32), ESP_SIF_NOSYNC);
+
+        do {
+               *p_tbuf = 0xffffffff;
+               udelay(20);
+               esp_common_read_with_addr(epub, SLC_HOST_CONF_W4, (u8 *)p_tbuf, sizeof(u32), ESP_SIF_NOSYNC);
+
+               if(*p_tbuf == 0x020001ff){
+#ifdef ESP_USE_SPI
+                       if(--ext_cnt >= 0){
+                               mdelay(10);
+                               esp_common_write_with_addr(epub, SLC_HOST_CONF_W4, (u8 *)p_tbuf, sizeof(u32), ESP_SIF_NOSYNC);
+                               retry = -1;
+                               continue;
+                       }
+#endif
+                       break;
+               }
+               
+               if(*p_tbuf == 0x010001ff){
+                       if(retry < 5)
+                               continue;
+               }else if(*p_tbuf == 0x000001ff){
+                       write_err_cnt++;
+                       ext_cnt = 3;
+               }else if(*p_tbuf == 0xffffffff){
+                       read_err_cnt++;
+                       write_err_cnt++;
+                       ext_cnt = 3;
+               }else {
+                       unknow_err_cnt++;
+                       ext_cnt = 3;
+               }
+
+               *p_tbuf = 0x010001ff;
+               udelay(20);
+               esp_common_write_with_addr(epub, SLC_HOST_CONF_W4, (u8 *)p_tbuf, sizeof(u32), ESP_SIF_NOSYNC);
+
+        } while (retry++ < 1000);
+       
+       kfree(p_tbuf);
+
+       if(read_err_cnt || write_err_cnt || unknow_err_cnt){
+               if((check_cnt & 0xf) == 0)
+                       //esp_dbg(ESP_DBG_ERROR, "==============sdio err===============\n,read:%u, write:%u, unknow:%u\n", read_err_cnt,write_err_cnt,unknow_err_cnt);
+                       esp_dbg(ESP_DBG_ERROR, "r%u,w%u,u%u\n", read_err_cnt,write_err_cnt,unknow_err_cnt);
+               check_cnt++;
+       }
+
+        if (retry > 1) {
+                esp_dbg(ESP_DBG_ERROR, "=========%s tried %d times===========\n", __func__, retry - 1);
+                //if (retry>=100)
+                //        ASSERT(0);
+        }
+}
+
+void check_target_id(struct esp_pub *epub)
+{
+       u32 date;
+        int err = 0;
+        int i;
+
+       EPUB_CTRL_CHECK(epub);
+
+       sif_lock_bus(epub);
+
+        for(i = 0; i < 4; i++) {
+                err = esp_common_readbyte_with_addr(epub, SLC_HOST_DATE + i, (u8 *)&date + i, ESP_SIF_NOSYNC);
+                err = esp_common_readbyte_with_addr(epub, SLC_HOST_ID + i, (u8 *)&EPUB_TO_CTRL(epub)->target_id + i, ESP_SIF_NOSYNC);
+        }
+
+       sif_unlock_bus(epub);
+
+        esp_dbg(ESP_DBG_LOG, "\n\n \t\t SLC data 0x%08x, ID 0x%08x\n\n", date, EPUB_TO_CTRL(epub)->target_id);
+
+        switch(EPUB_TO_CTRL(epub)->target_id) {
+        case 0x100:
+                EPUB_TO_CTRL(epub)->slc_window_end_addr = 0x20000;
+                break;
+        case 0x600:
+                EPUB_TO_CTRL(epub)->slc_window_end_addr = 0x20000 - 0x800;
+
+               do{
+                       u16 gpio_sel;
+                       u8 low_byte = 0;
+                       u8 high_byte = 0;
+                       u8 byte2 = 0;
+                       u8 byte3 = 0;
+#ifdef USE_OOB_INTR 
+                       gpio_sel = gpio_sel_sets[16];
+                       low_byte = gpio_sel;
+                       high_byte = gpio_sel >> 8;
+#ifdef USE_EXT_GPIO
+                       gpio_forbidden |= BIT(gpio_sel & 0xf);
+#endif /* USE_EXT_GPIO */
+#endif /* USE_OOB_INTR */
+
+                       if(sif_get_bt_config() == 1 && sif_get_rst_config() != 1){
+                               u8 gpio_num = sif_get_wakeup_gpio_config();
+                               gpio_sel = gpio_sel_sets[gpio_num];
+                               byte2 = gpio_sel;
+                               byte3 = gpio_sel >> 8;
+#ifdef USE_EXT_GPIO
+                               gpio_forbidden |= BIT(gpio_num);
+#endif
+                       }
+                       sif_lock_bus(epub);
+                       err = esp_common_writebyte_with_addr(epub, SLC_HOST_CONF_W1, low_byte, ESP_SIF_NOSYNC);
+                       err = esp_common_writebyte_with_addr(epub, SLC_HOST_CONF_W1 + 1, high_byte, ESP_SIF_NOSYNC);
+                       err = esp_common_writebyte_with_addr(epub, SLC_HOST_CONF_W1 + 2, byte2, ESP_SIF_NOSYNC);
+                       err = esp_common_writebyte_with_addr(epub, SLC_HOST_CONF_W1 + 3, byte3, ESP_SIF_NOSYNC);
+                       sif_unlock_bus(epub);
+               }while(0);
+                break;
+        default:
+                EPUB_TO_CTRL(epub)->slc_window_end_addr = 0x20000;
+                break;
+        }
+
+       return;
+}
+
+u32 sif_get_blksz(struct esp_pub *epub)
+{
+        EPUB_CTRL_CHECK(epub);
+
+        return EPUB_TO_CTRL(epub)->slc_blk_sz;
+}
+
+u32 sif_get_target_id(struct esp_pub *epub)
+{
+        EPUB_CTRL_CHECK(epub);
+
+        return EPUB_TO_CTRL(epub)->target_id;
+}
+
+
+#ifdef SIF_CHECK_FIRST_INTR
+static bool first_intr_checked = false;
+#endif //SIF_CHECK_FIRST_INTR
+
+#ifdef ESP_USE_SDIO
+void sif_dsr(struct sdio_func *func)
+{
+        struct esp_sdio_ctrl *sctrl = sdio_get_drvdata(func);
+#else
+void sif_dsr(struct spi_device *spi)
+{
+        struct esp_spi_ctrl *sctrl = spi_get_drvdata(spi);
+#endif
+#ifdef SIF_DSR_WAR
+        static int dsr_cnt = 0, real_intr_cnt = 0, bogus_intr_cnt = 0;
+        struct slc_host_regs *regs = &(sctrl->slc_regs);
+       esp_dbg(ESP_DBG_TRACE, " %s enter %d \n", __func__, dsr_cnt++);
+#endif /* SIF_DSR_WAR */
+
+        atomic_set(&sctrl->irq_handling, 1);
+
+#ifdef ESP_USE_SDIO
+        sdio_release_host(sctrl->func);
+#endif
+
+#ifdef SIF_DSR_WAR
+        do {
+#ifdef SIF_CHECK_FIRST_INTR 
+                if (likely(first_intr_checked)) {
+                        esp_dsr(sctrl->epub);
+                        break;
+                } 
+#endif //SIF_CHECK_FIRST_INTR
+          
+                memset(regs, 0x0, sizeof(struct slc_host_regs));
+                esp_common_read_with_addr(sctrl->epub, REG_SLC_HOST_BASE + 8, (u8 *)regs, sizeof(struct slc_host_regs), ESP_SIF_SYNC);
+
+                if (regs->intr_status & SLC_HOST_RX_ST) {
+#ifdef SIF_CHECK_FIRST_INTR 
+                       first_intr_checked = true;
+#endif //SIF_CHECK_FIRST_INTR
+                        esp_dbg(ESP_DBG_TRACE, "%s eal intr cnt: %d", __func__, ++real_intr_cnt);
+               
+                       esp_dsr(sctrl->epub);
+
+                } else {
+#ifdef ESP_ACK_INTERRUPT
+                       sif_lock_bus(sctrl->epub);
+                       sif_platform_ack_interrupt(sctrl->epub);
+                       sif_unlock_bus(sctrl->epub);
+#endif //ESP_ACK_INTERRUPT
+
+                        esp_dbg(ESP_DBG_TRACE, "%s bogus_intr_cnt %d\n", __func__, ++bogus_intr_cnt);
+                }
+
+#ifdef SIF_DEBUG_DSR_DUMP_REG
+                dump_slc_regs(regs);
+#endif /* SIF_DEBUG_DUMP_DSR */
+
+        } while (0);
+
+#else
+               esp_dsr(sctrl->epub);
+#endif /* SIF_DSR_WAR */
+
+#ifdef ESP_USE_SDIO
+        sdio_claim_host(func);
+#endif
+
+        atomic_set(&sctrl->irq_handling, 0);
+}
+
+
+struct slc_host_regs * sif_get_regs(struct esp_pub *epub) 
+{
+        EPUB_CTRL_CHECK(epub);
+
+        return &EPUB_TO_CTRL(epub)->slc_regs;
+}
+
+void sif_disable_target_interrupt(struct esp_pub *epub)
+{
+       EPUB_FUNC_CHECK(epub);
+       sif_lock_bus(epub);
+#ifdef HOST_RESET_BUG
+       mdelay(10);
+#endif
+       sif_raw_dummy_read(epub);
+       memset(EPUB_TO_CTRL(epub)->dma_buffer, 0x00, sizeof(u32));
+       esp_common_write_with_addr(epub, SLC_HOST_INT_ENA, EPUB_TO_CTRL(epub)->dma_buffer, sizeof(u32), ESP_SIF_NOSYNC);
+#ifdef HOST_RESET_BUG
+       mdelay(10);
+#endif
+
+       sif_unlock_bus(epub);
+}
+
+#ifdef SIF_DEBUG_DSR_DUMP_REG
+static void dump_slc_regs(struct slc_host_regs *regs) 
+{
+        esp_dbg(ESP_DBG_TRACE, "\n\n ------- %s --------------\n", __func__);
+
+        esp_dbg(ESP_DBG_TRACE, " \
+                        intr_raw 0x%08X \t \n  \
+                        state_w0 0x%08X \t state_w1 0x%08X \n  \
+                        config_w0 0x%08X \t config_w1 0x%08X \n \
+                        intr_status 0x%08X \t config_w2 0x%08X \n \
+                        config_w3 0x%08X \t config_w4 0x%08X \n \
+                        token_wdata 0x%08X \t intr_clear 0x%08X \n \
+                        intr_enable 0x%08X \n\n", regs->intr_raw, \
+                        regs->state_w0, regs->state_w1, regs->config_w0, regs->config_w1, \
+                        regs->intr_status, \
+                        regs->config_w2, regs->config_w3, regs->config_w4, regs->token_wdata, \
+                        regs->intr_clear, regs->intr_enable);
+}
+#endif /* SIF_DEBUG_DSR_DUMP_REG */
+
+static int bt_config = 0;
+void sif_record_bt_config(int value)
+{
+       bt_config = value;
+}
+
+int sif_get_bt_config(void)
+{
+       return bt_config;
+}
+
+static int rst_config = 0;
+void sif_record_rst_config(int value)
+{
+        rst_config = value;
+}
+
+int sif_get_rst_config(void)
+{
+        return rst_config;
+}
+
+static int retry_reset = 0;
+void sif_record_retry_config(void)
+{
+       retry_reset = 1;
+}
+
+int sif_get_retry_config(void)
+{
+       return retry_reset;
+}
+
+static int wakeup_gpio = 12;
+void sif_record_wakeup_gpio_config(int value)
+{
+       wakeup_gpio = value;
+}
+
+int sif_get_wakeup_gpio_config(void)
+{
+       return wakeup_gpio;
+}
+
+
diff --git a/drivers/net/wireless/rockchip_wlan/esp8089/esp_mac80211.c b/drivers/net/wireless/rockchip_wlan/esp8089/esp_mac80211.c
new file mode 100755 (executable)
index 0000000..85ecf56
--- /dev/null
@@ -0,0 +1,2008 @@
+/*
+ * Copyright (c) 2011 Espressif System.
+ *
+ *     MAC80211 support module
+ */
+#include <linux/etherdevice.h>
+#include <linux/workqueue.h>
+#include <linux/nl80211.h>
+#include <linux/ieee80211.h>
+#include <linux/slab.h>
+#include <net/cfg80211.h>
+#include <net/mac80211.h>
+#include <linux/version.h>
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 31))
+#include <net/regulatory.h>
+#endif
+/* for support scan in p2p concurrent */
+#include <../net/mac80211/ieee80211_i.h>
+#include "esp_pub.h"
+#include "esp_sip.h"
+#include "esp_ctrl.h"
+#include "esp_sif.h"
+#include "esp_debug.h"
+#include "esp_wl.h"
+#include "esp_utils.h"
+
+#define ESP_IEEE80211_DBG esp_dbg
+
+#define GET_NEXT_SEQ(seq) (((seq) +1) & 0x0fff)
+
+#ifdef P2P_CONCURRENT
+static u8 esp_mac_addr[ETH_ALEN * 2];
+#endif
+static u8 getaddr_index(u8 * addr, struct esp_pub *epub);
+#if 1
+/*
+static
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 39))
+void
+#else
+int
+#endif  NEW_KERNEL */
+//static void esp_op_tx(struct ieee80211_hw *hw, struct sk_buff *skb)
+static void esp_op_tx(struct ieee80211_hw *hw, struct ieee80211_tx_control *control, struct sk_buff *skb)
+{
+       struct esp_pub *epub = (struct esp_pub *)hw->priv;
+
+       ESP_IEEE80211_DBG(ESP_DBG_LOG, "%s enter\n", __func__);
+       if (!mod_support_no_txampdu() /*&&
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 29))
+                       hw->conf.channel_type != NL80211_CHAN_NO_HT
+#else
+                       !(hw->conf.flags&IEEE80211_CONF_SUPPORT_HT_MODE) add libing
+#endif   */        
+          ) {
+               struct ieee80211_tx_info * tx_info = IEEE80211_SKB_CB(skb);
+               
+               struct ieee80211_hdr * wh = (struct ieee80211_hdr *)skb->data;
+               if(ieee80211_is_data_qos(wh->frame_control)) {
+                       if(!(tx_info->flags & IEEE80211_TX_CTL_AMPDU)) {
+                               u8 tidno = ieee80211_get_qos_ctl(wh)[0] & IEEE80211_QOS_CTL_TID_MASK;
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 28))
+                               struct ieee80211_sta *sta; // = tx_info->control.sta  add libing
+                               struct esp_node * node = (struct esp_node *)sta->drv_priv; 
+#else
+                               struct esp_node * node = esp_get_node_by_addr(epub, wh->addr1);
+#endif
+                               struct esp_tx_tid *tid = &node->tid[tidno];
+                               //record ssn
+                               spin_lock_bh(&epub->tx_ampdu_lock);
+                               tid->ssn = GET_NEXT_SEQ(le16_to_cpu(wh->seq_ctrl)>>4);
+                               ESP_IEEE80211_DBG(ESP_DBG_TRACE, "tidno:%u,ssn:%u\n", tidno, tid->ssn);
+                               spin_unlock_bh(&epub->tx_ampdu_lock);
+                       } else {
+                               ESP_IEEE80211_DBG(ESP_DBG_TRACE, "tx ampdu pkt, sn:%u, %u\n", le16_to_cpu(wh->seq_ctrl)>>4, skb->len);
+                       }
+               }
+       }
+
+#ifdef GEN_ERR_CHECKSUM
+       esp_gen_err_checksum(skb);
+#endif
+
+       sip_tx_data_pkt_enqueue(epub, skb);
+       if (epub)
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 32))
+               ieee80211_queue_work(hw, &epub->tx_work);
+#else
+               queue_work(hw->workqueue,&epub->tx_work);    
+#endif
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 39))
+       //return NETDEV_TX_OK;
+#endif /*2.6.39*/
+}
+#endif
+static int esp_op_start(struct ieee80211_hw *hw)
+{
+       struct esp_pub *epub;
+
+       ESP_IEEE80211_DBG(ESP_DBG_OP, "%s\n", __func__);
+
+       if (!hw) {
+               ESP_IEEE80211_DBG(ESP_DBG_ERROR, "%s no hw!\n", __func__);
+               return -1;
+       }
+
+       epub = (struct esp_pub *)hw->priv;
+
+       if (!epub) {
+               ESP_IEEE80211_DBG(ESP_DBG_ERROR, "%s no epub!\n", __func__);
+               return -1;
+       }
+       /*add rfkill poll function*/
+
+       atomic_set(&epub->wl.off, 0);
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 31))
+       wiphy_rfkill_start_polling(hw->wiphy);
+#endif
+       return 0;
+}
+
+static void esp_op_stop(struct ieee80211_hw *hw)
+{
+       struct esp_pub *epub;
+
+       ESP_IEEE80211_DBG(ESP_DBG_OP, "%s\n", __func__);
+
+       if (!hw) {
+               ESP_IEEE80211_DBG(ESP_DBG_ERROR, "%s no hw!\n", __func__);
+               return;
+       }
+
+       epub = (struct esp_pub *)hw->priv;
+
+       if (!epub) {
+               ESP_IEEE80211_DBG(ESP_DBG_ERROR, "%s no epub!\n", __func__);
+               return;
+       }
+
+       atomic_set(&epub->wl.off, 1);
+
+#ifdef HOST_RESET_BUG
+       mdelay(200);
+#endif
+
+       if (epub->wl.scan_req) {
+               hw_scan_done(epub, true);
+               epub->wl.scan_req=NULL;
+               //msleep(2);
+       }
+}
+
+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 39))        
+#ifdef CONFIG_PM
+static int esp_op_suspend(struct ieee80211_hw *hw, struct cfg80211_wowlan *wowlan)
+{
+       esp_dbg(ESP_DBG_OP, "%s\n", __func__);
+
+       return 0;
+}
+
+static int esp_op_resume(struct ieee80211_hw *hw)
+{
+       esp_dbg(ESP_DBG_OP, "%s\n", __func__);
+
+       return 0;
+}
+#endif //CONFIG_PM
+#endif
+
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 34))
+static int esp_op_add_interface(struct ieee80211_hw *hw,
+               struct ieee80211_if_init_conf *conf)
+#else
+static int esp_op_add_interface(struct ieee80211_hw *hw,
+               struct ieee80211_vif *vif)
+#endif
+{
+       struct esp_pub *epub = (struct esp_pub *)hw->priv;
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 34))
+       struct ieee80211_vif *vif = conf->vif;
+#endif
+       struct esp_vif *evif = (struct esp_vif *)vif->drv_priv;
+       struct sip_cmd_setvif svif;
+
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 34))
+       ESP_IEEE80211_DBG(ESP_DBG_OP, "%s enter: type %d, addr %pM\n", __func__, vif->type, conf->mac_addr);
+#else
+       ESP_IEEE80211_DBG(ESP_DBG_OP, "%s enter: type %d, addr %pM\n", __func__, vif->type, vif->addr);
+#endif
+
+       memset(&svif, 0, sizeof(struct sip_cmd_setvif));
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 34))
+       memcpy(svif.mac, conf->mac_addr, ETH_ALEN);
+       evif->index = svif.index = getaddr_index(conf->mac_addr, epub);
+#else
+       memcpy(svif.mac, vif->addr, ETH_ALEN);
+       evif->index = svif.index = getaddr_index(vif->addr, epub);
+#endif
+       evif->epub = epub;
+       epub->vif = vif;
+       svif.set = 1;
+       if((1 << svif.index) & epub->vif_slot){
+               ESP_IEEE80211_DBG(ESP_DBG_ERROR, "%s interface %d already used\n", __func__, svif.index);
+               return -EOPNOTSUPP;
+       }
+       epub->vif_slot |= 1 << svif.index;
+
+       if (svif.index == ESP_PUB_MAX_VIF) {
+               ESP_IEEE80211_DBG(ESP_DBG_ERROR, "%s only support MAX %d interface\n", __func__, ESP_PUB_MAX_VIF);
+               return -EOPNOTSUPP;
+       }
+
+       switch (vif->type) {
+               case NL80211_IFTYPE_STATION:
+                       //if (svif.index == 1)
+                       //      vif->type = NL80211_IFTYPE_UNSPECIFIED;
+                       ESP_IEEE80211_DBG(ESP_SHOW, "%s STA \n", __func__);
+                       svif.op_mode = 0;
+                       svif.is_p2p = 0;
+                       break;
+               case NL80211_IFTYPE_AP:
+                       ESP_IEEE80211_DBG(ESP_SHOW, "%s AP \n", __func__);
+                       svif.op_mode = 1;
+                       svif.is_p2p = 0;
+                       break;
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 37))
+               case NL80211_IFTYPE_P2P_CLIENT:
+                       ESP_IEEE80211_DBG(ESP_SHOW, "%s P2P_CLIENT \n", __func__);
+                       svif.op_mode = 0;
+                       svif.is_p2p = 1;
+                       break;
+               case NL80211_IFTYPE_P2P_GO:
+                       ESP_IEEE80211_DBG(ESP_SHOW, "%s P2P_GO \n", __func__);
+                       svif.op_mode = 1;
+                       svif.is_p2p = 1;
+                       break;
+#endif
+               case NL80211_IFTYPE_UNSPECIFIED:
+               case NL80211_IFTYPE_ADHOC:
+               case NL80211_IFTYPE_AP_VLAN:
+               case NL80211_IFTYPE_WDS:
+               case NL80211_IFTYPE_MONITOR:
+               default:
+                       ESP_IEEE80211_DBG(ESP_DBG_ERROR, "%s does NOT support type %d\n", __func__, vif->type);
+                       return -EOPNOTSUPP;
+       }
+
+       sip_cmd(epub, SIP_CMD_SETVIF, (u8 *)&svif, sizeof(struct sip_cmd_setvif));
+       return 0;
+}
+
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 37))
+static int esp_op_change_interface(struct ieee80211_hw *hw,
+                                   struct ieee80211_vif *vif,
+                                   enum nl80211_iftype new_type, bool p2p)
+{
+       struct esp_pub *epub = (struct esp_pub *)hw->priv;
+       struct esp_vif *evif = (struct esp_vif *)vif->drv_priv;
+       struct sip_cmd_setvif svif;
+       ESP_IEEE80211_DBG(ESP_DBG_OP, "%s enter,change to if:%d \n", __func__, new_type);
+       
+       if (new_type == NL80211_IFTYPE_AP) {
+               ESP_IEEE80211_DBG(ESP_SHOW, "%s enter,change to AP \n", __func__);
+       }
+
+       if (vif->type != new_type) {
+               ESP_IEEE80211_DBG(ESP_SHOW, "%s type from %d to %d\n", __func__, vif->type, new_type);
+       }
+       
+       memset(&svif, 0, sizeof(struct sip_cmd_setvif));
+       memcpy(svif.mac, vif->addr, ETH_ALEN);
+       svif.index = evif->index;
+       svif.set = 2;
+       
+       switch (new_type) {
+        case NL80211_IFTYPE_STATION:
+                svif.op_mode = 0;
+                svif.is_p2p = p2p;
+                break;
+        case NL80211_IFTYPE_AP:
+                svif.op_mode = 1;
+                svif.is_p2p = p2p;
+                break;
+        case NL80211_IFTYPE_P2P_CLIENT:
+                svif.op_mode = 0;
+                svif.is_p2p = 1;
+                break;
+        case NL80211_IFTYPE_P2P_GO:
+                svif.op_mode = 1;
+                svif.is_p2p = 1;
+                break;
+        case NL80211_IFTYPE_UNSPECIFIED:
+        case NL80211_IFTYPE_ADHOC:
+        case NL80211_IFTYPE_AP_VLAN:
+        case NL80211_IFTYPE_WDS:
+        case NL80211_IFTYPE_MONITOR:
+        default:
+                ESP_IEEE80211_DBG(ESP_DBG_ERROR, "%s does NOT support type %d\n", __func__, vif->type);
+                return -EOPNOTSUPP;
+        }
+       sip_cmd(epub, SIP_CMD_SETVIF, (u8 *)&svif, sizeof(struct sip_cmd_setvif));
+        return 0;
+}
+#endif
+
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 34))
+static void esp_op_remove_interface(struct ieee80211_hw *hw,
+                                    struct ieee80211_if_init_conf *conf)
+#else
+static void esp_op_remove_interface(struct ieee80211_hw *hw,
+                                    struct ieee80211_vif *vif)
+#endif
+{
+       struct esp_pub *epub = (struct esp_pub *)hw->priv;
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 34))
+       struct ieee80211_vif *vif = conf->vif;
+#endif
+       struct esp_vif *evif = (struct esp_vif *)vif->drv_priv;
+       struct sip_cmd_setvif svif;
+
+#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 30))
+       ESP_IEEE80211_DBG(ESP_DBG_OP, "%s enter, vif addr %pM\n", __func__, conf->mac_addr);
+#elif (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 34))
+       ESP_IEEE80211_DBG(ESP_DBG_OP, "%s enter, vif addr %pM, beacon enable %x\n", __func__, conf->mac_addr, vif->bss_conf.enable_beacon);
+#else
+       ESP_IEEE80211_DBG(ESP_DBG_OP, "%s enter, vif addr %pM, beacon enable %x\n", __func__, vif->addr, vif->bss_conf.enable_beacon);
+#endif
+
+       memset(&svif, 0, sizeof(struct sip_cmd_setvif));
+       svif.index = evif->index;
+       epub->vif_slot &= ~(1 << svif.index);
+
+       if(evif->ap_up){
+               evif->beacon_interval = 0;
+               del_timer_sync(&evif->beacon_timer);
+               evif->ap_up = false;
+       }
+       epub->vif = NULL;
+       evif->epub = NULL;
+
+       sip_cmd(epub, SIP_CMD_SETVIF, (u8 *)&svif, sizeof(struct sip_cmd_setvif));
+
+       /* clean up tx/rx queue */
+
+}
+
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 29))
+static void drv_handle_beacon(unsigned long data)
+{
+       struct ieee80211_vif *vif = (struct ieee80211_vif *) data;
+       struct esp_vif *evif = (struct esp_vif *)vif->drv_priv;
+       struct sk_buff *beacon;
+       struct sk_buff *skb;
+       static int dbgcnt = 0;
+
+       if(evif->epub == NULL)
+               return;
+       beacon = ieee80211_beacon_get(evif->epub->hw, vif);
+
+       if (beacon && !(dbgcnt++ % 600)) {
+               ESP_IEEE80211_DBG(ESP_SHOW, " beacon length:%d,fc:0x%x\n", beacon->len,
+                       ((struct ieee80211_mgmt *)(beacon->data))->frame_control);
+
+       }
+
+       sip_tx_data_pkt_enqueue(evif->epub, beacon);
+
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 28))    
+       mod_timer(&evif->beacon_timer, jiffies+msecs_to_jiffies(vif->bss_conf.beacon_int));
+#else
+    mod_timer(&evif->beacon_timer, jiffies+msecs_to_jiffies(evif->beacon_interval));
+#endif
+       //FIXME:the packets must be sent at home channel
+       //send buffer mcast frames
+       skb = ieee80211_get_buffered_bc(evif->epub->hw, vif);
+       while (skb) {
+               sip_tx_data_pkt_enqueue(evif->epub, skb);
+               skb = ieee80211_get_buffered_bc(evif->epub->hw, vif);
+       }
+}
+
+static void init_beacon_timer(struct ieee80211_vif *vif)
+{
+       struct esp_vif *evif = (struct esp_vif *)vif->drv_priv;
+
+       ESP_IEEE80211_DBG(ESP_DBG_OP, " %s enter: beacon interval %x\n", __func__, evif->beacon_interval);
+
+       init_timer(&evif->beacon_timer);  //TBD, not init here...
+       evif->beacon_timer.expires=jiffies+msecs_to_jiffies(evif->beacon_interval*1024/1000);
+       evif->beacon_timer.data = (unsigned long) vif;
+       evif->beacon_timer.function = drv_handle_beacon;
+       add_timer(&evif->beacon_timer);
+}
+#endif
+
+/*
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 28))
+    static void init_beacon_timer(struct ieee80211_vif *vif)
+#else
+    static void init_beacon_timer(struct ieee80211_conf *conf)
+#endif
+{
+       struct esp_vif *evif = (struct esp_vif *)vif->drv_priv;
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 28))
+       ESP_IEEE80211_DBG(ESP_DBG_OP, " %s enter: beacon interval %x\n", __func__, vif->bss_conf.beacon_int);
+#else
+       ESP_IEEE80211_DBG(ESP_DBG_OP, " %s enter: beacon interval %x\n", __func__, conf->beacon_int);
+#endif
+       init_timer(&evif->beacon_timer);  //TBD, not init here...
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 28))
+       evif->beacon_timer.expires=jiffies+msecs_to_jiffies(vif->bss_conf.beacon_int*102/100);
+       evif->beacon_timer.data = (unsigned long) vif;
+#else
+       evif->beacon_timer.expires=jiffies+msecs_to_jiffies(conf->beacon_int*102/100);
+       evif->beacon_timer.data = (unsigned long) conf;
+#endif
+       //evif->beacon_timer.data = (unsigned long) vif;
+       evif->beacon_timer.function = drv_handle_beacon;
+       add_timer(&evif->beacon_timer);
+}
+*/
+
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 29))
+static int esp_op_config(struct ieee80211_hw *hw, u32 changed)
+#else
+static int esp_op_config(struct ieee80211_hw *hw, struct ieee80211_conf *conf)
+#endif
+{
+       //struct ieee80211_conf *conf = &hw->conf;
+
+       struct esp_pub *epub = (struct esp_pub *)hw->priv;
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 29))
+       //struct esp_vif *evif = (struct esp_vif *)epub->vif->drv_priv;
+#endif
+
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 29))
+        ESP_IEEE80211_DBG(ESP_DBG_TRACE, "%s enter 0x%08x\n", __func__, changed);
+
+        if (changed&IEEE80211_CONF_CHANGE_CHANNEL) {
+                sip_send_config(epub, &hw->conf);
+       }
+#else
+        ESP_IEEE80211_DBG(ESP_DBG_TRACE, "%s enter 0x%08x\n", __func__, conf->flags);
+        sip_send_config(epub, &hw->conf);
+#endif
+
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 29))
+       //evif->beacon_interval = conf->beacon_int;
+       //init_beacon_timer(epub->vif);
+#endif
+
+
+#if 0
+       if (changed & IEEE80211_CONF_CHANGE_PS) {
+               struct esp_ps *ps = &epub->ps;
+
+               ps->dtim_period = conf->ps_dtim_period;
+               ps->max_sleep_period = conf->max_sleep_period;
+               esp_ps_config(epub, ps, (conf->flags & IEEE80211_CONF_PS));
+       }
+#endif
+    return 0;
+}
+
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 28))
+static int esp_op_config_interface (struct ieee80211_hw *hw, 
+                                    struct ieee80211_vif *vif,
+                                    struct ieee80211_if_conf *conf)
+{
+       // assoc = 2 means AP
+       struct esp_pub *epub = (struct esp_pub *)hw->priv;
+       struct esp_vif *evif = (struct esp_vif *)vif->drv_priv;
+       //struct ieee80211_sub_if_data *sdata = vif_to_sdata(vif);
+       ESP_IEEE80211_DBG(ESP_DBG_OP, " %s enter: changed %x, bssid %pM,vif->type = %d\n", __func__, conf->changed, conf->bssid,vif->type);
+
+       if(conf->bssid)
+               memcpy(epub->wl.bssid, conf->bssid, ETH_ALEN);
+       else
+               memset(epub->wl.bssid, 0, ETH_ALEN);
+
+       if(vif->type == NL80211_IFTYPE_AP){
+               if((conf->changed & IEEE80211_IFCC_BEACON)){
+                       sip_send_bss_info_update(epub, evif, (u8*)conf->bssid, 2);
+                       //evif->beacon_interval = conf->beacon_int;
+               }
+               else{
+                       ESP_IEEE80211_DBG(ESP_DBG_ERROR, "%s op----1-- mode unspecified\n", __func__);
+               }
+       }
+       else{
+               ESP_IEEE80211_DBG(ESP_DBG_ERROR, "%s op----2-- mode unspecified\n", __func__);
+       }
+       return 0;
+}
+#endif
+
+
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 28))
+static void esp_op_bss_info_changed(struct ieee80211_hw *hw,
+                                    struct ieee80211_vif *vif,
+                                    struct ieee80211_bss_conf *info,
+                                    u32 changed)
+{
+        struct esp_pub *epub = (struct esp_pub *)hw->priv;
+        struct esp_vif *evif = (struct esp_vif *)vif->drv_priv;
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 37))
+       struct ieee80211_sub_if_data *sdata = vif_to_sdata(vif);
+#endif
+
+       // ieee80211_bss_conf(include/net/mac80211.h) is included in ieee80211_sub_if_data(net/mac80211/ieee80211_i.h) , does bssid=ieee80211_if_ap's ssid ?
+       // in 2.6.27, ieee80211_sub_if_data has ieee80211_bss_conf while in 2.6.32 ieee80211_sub_if_data don't have ieee80211_bss_conf
+       // in 2.6.27, ieee80211_bss_conf->enable_beacon don't exist, does it mean it support beacon always?
+       // ESP_IEEE80211_DBG(ESP_DBG_OP, " %s enter: vif addr %pM, changed %x, assoc %x, bssid %pM\n", __func__, vif->addr, changed, info->assoc, info->bssid);
+       // sdata->u.sta.bssid
+
+        ESP_IEEE80211_DBG(ESP_DBG_OP, " %s enter: changed %x, assoc %x, bssid %pM\n", __func__, changed, info->assoc, info->bssid);
+
+        if (vif->type == NL80211_IFTYPE_STATION) {
+               if ((changed & BSS_CHANGED_BSSID) ||
+                               ((changed & BSS_CHANGED_ASSOC) && (info->assoc)))
+               {
+                       ESP_IEEE80211_DBG(ESP_DBG_TRACE, " %s STA change bssid or assoc\n", __func__);
+                       memcpy(epub->wl.bssid, (u8*)info->bssid, ETH_ALEN);
+                       sip_send_bss_info_update(epub, evif, (u8*)info->bssid, info->assoc);
+               } else if ((changed & BSS_CHANGED_ASSOC) && (!info->assoc)) {
+                       ESP_IEEE80211_DBG(ESP_DBG_TRACE, " %s STA change disassoc\n", __func__);
+                       memset(epub->wl.bssid, 0, ETH_ALEN);
+                       sip_send_bss_info_update(epub, evif, (u8*)info->bssid, info->assoc);
+               } else {
+                       ESP_IEEE80211_DBG(ESP_DBG_TRACE, "%s wrong mode of STA mode\n", __func__);
+               }
+       } else if (vif->type == NL80211_IFTYPE_AP) {
+               if ((changed & BSS_CHANGED_BEACON_ENABLED) ||
+                               (changed & BSS_CHANGED_BEACON_INT)) {
+                       ESP_IEEE80211_DBG(ESP_DBG_TRACE, " %s AP change enable %d, interval is %d, bssid %pM\n", __func__, info->enable_beacon, info->beacon_int, info->bssid);
+                       if (info->enable_beacon && evif->ap_up != true) {
+                               evif->beacon_interval = info->beacon_int;
+                               init_beacon_timer(vif);
+                               sip_send_bss_info_update(epub, evif, (u8*)info->bssid, 2);
+                               evif->ap_up = true;
+                       } else if (!info->enable_beacon && evif->ap_up &&
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 37))
+                    !test_bit(SDATA_STATE_OFFCHANNEL, &sdata->state)
+#else
+                    true
+#endif
+                    ) {
+                               ESP_IEEE80211_DBG(ESP_DBG_TRACE, " %s AP disable beacon, interval is %d\n", __func__, info->beacon_int);
+                               evif->beacon_interval = 0;
+                               del_timer_sync(&evif->beacon_timer);
+                               sip_send_bss_info_update(epub, evif, (u8*)info->bssid, 2);
+                               evif->ap_up = false;
+                       }
+               }
+       } else {
+               ESP_IEEE80211_DBG(ESP_DBG_ERROR, "%s op mode unspecified\n", __func__);
+       }
+}
+#endif
+
+
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 32))
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 35))
+static u64 esp_op_prepare_multicast(struct ieee80211_hw *hw,
+                                    int mc_count, struct dev_addr_list *mc_list)
+{
+        ESP_IEEE80211_DBG(ESP_DBG_TRACE, "%s enter \n", __func__);
+
+        return 0;
+}
+#else
+static u64 esp_op_prepare_multicast(struct ieee80211_hw *hw,
+                                    struct netdev_hw_addr_list *mc_list)
+{
+        ESP_IEEE80211_DBG(ESP_DBG_TRACE, "%s enter \n", __func__);
+
+        return 0;
+}
+
+#endif /* NEW_KERNEL && KERNEL_35 */
+#endif
+
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 32))
+static void esp_op_configure_filter(struct ieee80211_hw *hw,
+                                    unsigned int changed_flags,
+                                    unsigned int *total_flags,
+                                    u64 multicast)
+#else
+static void esp_op_configure_filter(struct ieee80211_hw *hw,
+                                    unsigned int changed_flags,
+                                    unsigned int *total_flags,
+                                    int mc_count,
+                                    struct dev_addr_list *mc_list)
+#endif
+{
+        struct esp_pub *epub = (struct esp_pub *)hw->priv;
+
+        ESP_IEEE80211_DBG(ESP_DBG_TRACE, "%s enter \n", __func__);
+
+        epub->rx_filter = 0;
+
+        if (*total_flags & FIF_PROMISC_IN_BSS)
+                epub->rx_filter |= FIF_PROMISC_IN_BSS;
+
+        if (*total_flags & FIF_ALLMULTI)
+                epub->rx_filter |= FIF_ALLMULTI;
+
+        *total_flags = epub->rx_filter;
+}
+
+#if 0
+static int esp_op_set_tim(struct ieee80211_hw *hw, struct ieee80211_sta *sta,
+                          bool set)
+{
+        ESP_IEEE80211_DBG(ESP_DBG_TRACE, "%s enter \n", __func__);
+
+        return 0;
+}
+#endif
+
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 30))
+static int esp_op_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd,
+                          struct ieee80211_vif *vif, struct ieee80211_sta *sta,
+                          struct ieee80211_key_conf *key)
+#else
+static int esp_op_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd,
+                          const u8 *local_address,const u8 *address,
+                          struct ieee80211_key_conf *key)
+#endif
+{
+        u8 i;
+        int  ret;
+        struct esp_pub *epub = (struct esp_pub *)hw->priv;
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 30))
+        struct esp_vif *evif = (struct esp_vif *)vif->drv_priv;
+        u8 ifidx = evif->index;
+#else
+        u8 ifidx = getaddr_index((u8 *)(local_address), epub); 
+#endif
+        u8 *peer_addr,isvalid;
+
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 37))
+        ESP_IEEE80211_DBG(ESP_DBG_OP, "%s enter, flags = %x keyindx = %x cmd = %x mac = %pM cipher = %x\n", __func__, key->flags, key->keyidx, cmd, vif->addr, key->cipher);
+#else
+        ESP_IEEE80211_DBG(ESP_DBG_OP, "%s enter, flags = %x keyindx = %x cmd = %x cipher = %x\n", __func__, key->flags, key->keyidx, cmd, key->alg);
+#endif
+
+        key->flags= key->flags|IEEE80211_KEY_FLAG_GENERATE_IV;
+
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 30))
+        if (sta) {
+                if (memcmp(sta->addr, epub->wl.bssid, ETH_ALEN))
+                        peer_addr = sta->addr;
+                else
+                        peer_addr = epub->wl.bssid;
+        } else {
+                peer_addr=epub->wl.bssid;
+        }
+#else
+        peer_addr = (u8 *)address;
+#endif
+        isvalid = (cmd==SET_KEY) ? 1 : 0;
+
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 37))
+        if ((key->flags&IEEE80211_KEY_FLAG_PAIRWISE) || (key->cipher == WLAN_CIPHER_SUITE_WEP40 || key->cipher == WLAN_CIPHER_SUITE_WEP104))
+#else
+        if ((key->flags&IEEE80211_KEY_FLAG_PAIRWISE) || (key->alg == ALG_WEP))
+#endif
+           {
+               if (isvalid) {
+                       for (i = 0; i < 19; i++) {
+                               if (epub->hi_map[i].flag == 0) {
+                                       epub->hi_map[i].flag = 1;
+                                       key->hw_key_idx = i + 6;
+                                       memcpy(epub->hi_map[i].mac, peer_addr, ETH_ALEN);
+                                       break;
+                               }
+                       }
+               } else {
+                       u8 index = key->hw_key_idx - 6;
+                       epub->hi_map[index].flag = 0;
+                       memset(epub->hi_map[index].mac, 0, ETH_ALEN);
+               }
+        } else {
+               if(isvalid){
+                       for(i = 0; i < 2; i++)
+                               if (epub->low_map[ifidx][i].flag == 0) {
+                                       epub->low_map[ifidx][i].flag = 1;
+                                        key->hw_key_idx = i + ifidx * 2 + 2;
+                                        memcpy(epub->low_map[ifidx][i].mac, peer_addr, ETH_ALEN);
+                                        break;
+                                }
+               } else {
+                       u8 index = key->hw_key_idx - 2 - ifidx * 2;
+                               epub->low_map[ifidx][index].flag = 0;
+                               memset(epub->low_map[ifidx][index].mac, 0, ETH_ALEN);
+               }
+               //key->hw_key_idx = key->keyidx + ifidx * 2 + 1;
+        }
+
+        if (key->hw_key_idx >= 6) {
+               /*send sub_scan task to target*/
+               //epub->wl.ptk = (cmd==SET_KEY) ? key : NULL;
+               if(isvalid)
+                       atomic_inc(&epub->wl.ptk_cnt);
+               else
+                       atomic_dec(&epub->wl.ptk_cnt);
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 37))
+               if (key->cipher == WLAN_CIPHER_SUITE_WEP40 || key->cipher == WLAN_CIPHER_SUITE_WEP104)
+#else
+               if (key->alg == ALG_WEP)
+#endif
+               {
+                       if(isvalid)
+                               atomic_inc(&epub->wl.gtk_cnt);
+                       else
+                               atomic_dec(&epub->wl.gtk_cnt);
+               }
+        } else {
+               /*send sub_scan task to target*/
+               if(isvalid)
+                       atomic_inc(&epub->wl.gtk_cnt);
+               else
+                       atomic_dec(&epub->wl.gtk_cnt);
+
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 37))
+               if((key->cipher == WLAN_CIPHER_SUITE_WEP40 || key->cipher == WLAN_CIPHER_SUITE_WEP104))
+#else
+        if((key->alg == ALG_WEP))
+#endif
+               {
+                       if(isvalid)
+                               atomic_inc(&epub->wl.ptk_cnt);
+                       else
+                               atomic_dec(&epub->wl.ptk_cnt);
+                       //epub->wl.ptk = (cmd==SET_KEY) ? key : NULL;
+               }
+        }
+
+        ret = sip_send_setkey(epub, ifidx, peer_addr, key, isvalid);
+
+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 35))
+       if((key->cipher == WLAN_CIPHER_SUITE_TKIP || key->cipher == WLAN_CIPHER_SUITE_TKIP))
+#else
+       if((key->alg == ALG_TKIP))
+#endif
+       {
+               if(ret == 0)
+                       atomic_set(&epub->wl.tkip_key_set, 1);
+       }
+
+       ESP_IEEE80211_DBG(ESP_DBG_OP, "%s exit\n", __func__);
+        return ret;
+}
+
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 34))
+static void esp_op_update_tkip_key(struct ieee80211_hw *hw,
+                                   struct ieee80211_key_conf *conf, const u8 *address,
+                                   u32 iv32, u16 *phase1key)
+{
+        ESP_IEEE80211_DBG(ESP_DBG_TRACE, "%s enter \n", __func__);
+
+}
+#else
+static void esp_op_update_tkip_key(struct ieee80211_hw *hw,
+                                   struct ieee80211_vif *vif,
+                                   struct ieee80211_key_conf *conf,
+                                   struct ieee80211_sta *sta,
+                                   u32 iv32, u16 *phase1key)
+{
+        ESP_IEEE80211_DBG(ESP_DBG_TRACE, "%s enter \n", __func__);
+
+}
+#endif /* KERNEL_35 NEW_KERNEL*/
+
+
+void hw_scan_done(struct esp_pub *epub, bool aborted)
+{
+        cancel_delayed_work_sync(&epub->scan_timeout_work);
+
+        ASSERT(epub->wl.scan_req != NULL);
+
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 30))
+        ieee80211_scan_completed(epub->hw, aborted);
+#else
+        ieee80211_scan_completed(epub->hw);
+#endif
+        if (test_and_clear_bit(ESP_WL_FLAG_STOP_TXQ, &epub->wl.flags)) {
+                sip_trigger_txq_process(epub->sip);
+        }
+}
+
+static void hw_scan_timeout_report(struct work_struct *work)
+{
+        struct esp_pub *epub =
+                container_of(work, struct esp_pub, scan_timeout_work.work);
+        bool aborted;
+
+        ESP_IEEE80211_DBG(ESP_DBG_TRACE, "eagle hw scan done\n");
+
+        if (test_and_clear_bit(ESP_WL_FLAG_STOP_TXQ, &epub->wl.flags)) {
+                sip_trigger_txq_process(epub->sip);
+        }
+        /*check if normally complete or aborted like timeout/hw error */
+        aborted = (epub->wl.scan_req) ? true : false;
+
+        if (aborted==true) {
+                epub->wl.scan_req = NULL;
+        }
+
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 30))
+        ieee80211_scan_completed(epub->hw, aborted);
+#else
+        ieee80211_scan_completed(epub->hw);
+#endif  
+}
+
+#if 0
+static void esp_op_sw_scan_start(struct ieee80211_hw *hw)
+{}
+
+static void esp_op_sw_scan_complete(struct ieee80211_hw *hw)
+{
+        ESP_IEEE80211_DBG(ESP_DBG_TRACE, "%s enter \n", __func__);
+}
+#endif
+
+#if 0
+static int esp_op_get_stats(struct ieee80211_hw *hw,
+                            struct ieee80211_low_level_stats *stats)
+{
+        ESP_IEEE80211_DBG(ESP_DBG_TRACE, "%s enter \n", __func__);
+
+        return 0;
+}
+
+static void esp_op_get_tkip_seq(struct ieee80211_hw *hw, u8 hw_key_idx,
+                                u32 *iv32, u16 *iv16)
+{
+        ESP_IEEE80211_DBG(ESP_DBG_TRACE, "%s enter \n", __func__);
+}
+#endif
+
+static int esp_op_set_rts_threshold(struct ieee80211_hw *hw, u32 value)
+{
+        ESP_IEEE80211_DBG(ESP_DBG_TRACE, "%s enter \n", __func__);
+
+        return 0;
+}
+
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 28))
+static int esp_node_attach(struct ieee80211_hw *hw, u8 ifidx, struct ieee80211_sta *sta)
+#else
+static int esp_node_attach(struct ieee80211_hw *hw, u8 ifidx, const u8 *addr)
+#endif
+{
+        struct esp_pub *epub = (struct esp_pub *)hw->priv;
+        struct esp_node *node;
+        u8 tidno;
+        struct esp_tx_tid *tid;
+           int i;
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 28))
+        struct sta_info *info = sta_info_get(container_of(hw,struct ieee80211_local,hw),(u8 *)addr);
+        struct ieee80211_ht_info *ht_info = &info->ht_info;
+#endif
+
+       spin_lock_bh(&epub->tx_ampdu_lock);
+
+       if(hweight32(epub->enodes_maps[ifidx]) < ESP_PUB_MAX_STA && (i = ffz(epub->enodes_map)) < ESP_PUB_MAX_STA + 1){
+               epub->enodes_map |= (1 << i);
+               epub->enodes_maps[ifidx] |= (1 << i);
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 28))
+               node = (struct esp_node *)sta->drv_priv;
+        epub->enodes[i] = node;
+               node->sta = sta;
+#else
+               node = &epub->nodes[i];
+        epub->enodes[i] = node;
+               memcpy(node->addr, addr, ETH_ALEN);
+        memcpy(&node->aid, &info->aid, sizeof(node->aid)); 
+        memcpy(node->supp_rates, info->supp_rates, sizeof(node->supp_rates));
+        memcpy(&node->ht_info.cap, &ht_info->cap, sizeof(node->ht_info.cap));
+        memcpy(&node->ht_info.ht_supported, &ht_info->ht_supported, sizeof(node->ht_info.ht_supported));
+        memcpy(&node->ht_info.ampdu_factor, &ht_info->ampdu_factor, sizeof(node->ht_info.ampdu_factor));
+        memcpy(&node->ht_info.ampdu_density, &ht_info->ampdu_density, sizeof(node->ht_info.ampdu_density));
+#endif
+               node->ifidx = ifidx;
+               node->index = i;
+
+               for(tidno = 0, tid = &node->tid[tidno]; tidno < WME_NUM_TID; tidno++) {
+                tid->ssn = 0;
+                tid->cnt = 0;
+                tid->state = ESP_TID_STATE_INIT;
+        }
+
+
+       } else {
+               i = -1;
+       }
+
+       spin_unlock_bh(&epub->tx_ampdu_lock);
+       return i;
+}
+
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 28))
+static int esp_node_detach(struct ieee80211_hw *hw, u8 ifidx, struct ieee80211_sta *sta)
+#else
+static int esp_node_detach(struct ieee80211_hw *hw, u8 ifidx, const u8 *addr)
+#endif
+{
+    struct esp_pub *epub = (struct esp_pub *)hw->priv;
+       u8 map;
+       int i;
+    struct esp_node *node = NULL;
+
+       spin_lock_bh(&epub->tx_ampdu_lock);
+       map = epub->enodes_maps[ifidx];
+       while(map != 0){
+               i = ffs(map) - 1;
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 28))
+               if(epub->enodes[i]->sta == sta){
+                       epub->enodes[i]->sta = NULL;
+#else
+               if(memcmp(epub->enodes[i]->addr, addr, ETH_ALEN) == 0){
+#endif
+            node = epub->enodes[i];
+                       epub->enodes[i] = NULL;
+                       epub->enodes_map &= ~(1 << i);
+                       epub->enodes_maps[ifidx] &= ~(1 << i);
+                       
+                       spin_unlock_bh(&epub->tx_ampdu_lock);
+                       return i;
+               }
+               map &= ~(1 << i);
+       }
+
+       spin_unlock_bh(&epub->tx_ampdu_lock);
+       return -1;
+}
+
+struct esp_node * esp_get_node_by_addr(struct esp_pub * epub, const u8 *addr)
+{
+       int i;
+       u8 map;
+       struct esp_node *node = NULL;
+       if(addr == NULL)
+               return NULL;
+       spin_lock_bh(&epub->tx_ampdu_lock);
+       map = epub->enodes_map;
+       while(map != 0){
+               i = ffs(map) - 1;
+               map &= ~(1 << i);
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 28))
+               if(memcmp(epub->enodes[i]->sta->addr, addr, ETH_ALEN) == 0)
+#else
+               if(memcmp(epub->enodes[i]->addr, addr, ETH_ALEN) == 0)
+#endif
+               {
+                       node = epub->enodes[i];
+                       break;
+               }
+       }
+
+       spin_unlock_bh(&epub->tx_ampdu_lock);
+       return node;
+}
+
+
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 28))
+static int esp_op_sta_add(struct ieee80211_hw *hw, struct ieee80211_vif *vif, struct ieee80211_sta *sta)
+#else
+static int esp_op_sta_add(struct ieee80211_hw *hw, struct ieee80211_vif *vif, const u8 *addr)
+#endif
+{
+       struct esp_pub *epub = (struct esp_pub *)hw->priv;
+       struct esp_vif *evif = (struct esp_vif *)vif->drv_priv;
+       int index;
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 28))
+       struct esp_node *node;
+       ESP_IEEE80211_DBG(ESP_DBG_OP, "%s enter, addr %pM\n", __func__, addr);
+       index = esp_node_attach(hw, evif->index, addr);
+
+#else
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 34))
+       ESP_IEEE80211_DBG(ESP_DBG_OP, "%s enter, sta addr %pM\n", __func__, sta->addr);
+#else 
+       ESP_IEEE80211_DBG(ESP_DBG_OP, "%s enter, vif addr %pM, sta addr %pM\n", __func__, vif->addr, sta->addr);
+#endif
+       index = esp_node_attach(hw, evif->index, sta);
+#endif
+
+       if(index < 0)
+               return -1;
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 28))
+       sip_send_set_sta(epub, evif->index, 1, sta, vif, (u8)index);
+#else
+       node = esp_get_node_by_addr(epub, addr);
+       sip_send_set_sta(epub, evif->index, 1, node, vif, (u8)index);
+#endif
+    return 0;
+}
+
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 28))
+static int esp_op_sta_remove(struct ieee80211_hw *hw, struct ieee80211_vif *vif, struct ieee80211_sta *sta)
+#else
+static int esp_op_sta_remove(struct ieee80211_hw *hw, struct ieee80211_vif *vif, const u8 *addr)
+#endif
+{      
+       struct esp_pub *epub = (struct esp_pub *)hw->priv;
+       struct esp_vif *evif = (struct esp_vif *)vif->drv_priv;
+       int index;
+
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 28))
+       struct esp_node *node;
+       ESP_IEEE80211_DBG(ESP_DBG_OP, "%s enter, addr %pM\n", __func__, addr);
+#elif (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 34))
+       ESP_IEEE80211_DBG(ESP_DBG_OP, "%s enter, sta addr %pM\n", __func__, sta->addr);
+#else 
+       ESP_IEEE80211_DBG(ESP_DBG_OP, "%s enter, vif addr %pM, sta addr %pM\n", __func__, vif->addr, sta->addr);
+#endif
+       
+       //remove a connect in target
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 28))
+       index = esp_node_detach(hw, evif->index, sta);
+       sip_send_set_sta(epub, evif->index, 0, sta, vif, (u8)index);
+#else
+       node = esp_get_node_by_addr(epub, addr);
+       index = esp_node_detach(hw, evif->index, addr);
+       sip_send_set_sta(epub, evif->index, 0, node, vif, node->index);
+#endif
+
+       return 0;
+}
+
+
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 28))
+static void esp_op_sta_notify(struct ieee80211_hw *hw, struct ieee80211_vif *vif, enum sta_notify_cmd cmd, struct ieee80211_sta *sta)
+#else
+static void esp_op_sta_notify(struct ieee80211_hw *hw, struct ieee80211_vif *vif, enum sta_notify_cmd cmd, const u8 *addr)
+#endif
+{
+        //struct esp_pub *epub = (struct esp_pub *)hw->priv;
+
+        ESP_IEEE80211_DBG(ESP_DBG_TRACE, "%s enter \n", __func__);
+
+        switch (cmd) {
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 39))
+        case STA_NOTIFY_ADD:
+            ESP_IEEE80211_DBG(ESP_DBG_ERROR, "%s cmd add\n", __func__);
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 28))
+            esp_op_sta_add(hw, vif, sta);
+#else
+            esp_op_sta_add(hw, vif, addr);
+#endif
+            break;
+
+        case STA_NOTIFY_REMOVE:
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 28))
+            esp_op_sta_remove(hw, vif, sta);
+#else
+            esp_op_sta_remove(hw, vif, addr);
+#endif
+            break;
+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 29))
+        case STA_NOTIFY_SLEEP:
+                break;
+
+        case STA_NOTIFY_AWAKE:
+                break;
+#endif /* NEW_KERNEL */
+
+        default:
+                break;
+        }
+}
+
+
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 2, 0))
+static int esp_op_conf_tx(struct ieee80211_hw *hw, 
+                         struct ieee80211_vif *vif,
+                         u16 queue,
+                          const struct ieee80211_tx_queue_params *params)
+
+#else
+static int esp_op_conf_tx(struct ieee80211_hw *hw, u16 queue,
+                          const struct ieee80211_tx_queue_params *params)
+#endif
+{
+        struct esp_pub *epub = (struct esp_pub *)hw->priv;
+        ESP_IEEE80211_DBG(ESP_DBG_TRACE, "%s enter \n", __func__);
+        return sip_send_wmm_params(epub, queue, params);
+}
+
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 35))
+static int esp_op_get_tx_stats(struct ieee80211_hw *hw,
+                               struct ieee80211_tx_queue_stats *stats)
+{
+        ESP_IEEE80211_DBG(ESP_DBG_TRACE, "%s enter \n", __func__);
+
+        return 0;
+}
+#endif /* !NEW_KERNEL && !KERNEL_35*/
+
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 2, 0))
+static u64 esp_op_get_tsf(struct ieee80211_hw *hw, struct ieee80211_vif *vif)
+#else
+static u64 esp_op_get_tsf(struct ieee80211_hw *hw)
+#endif
+{
+        ESP_IEEE80211_DBG(ESP_DBG_TRACE, "%s enter \n", __func__);
+
+        return 0;
+}
+
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 30))
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 2, 0))
+static void esp_op_set_tsf(struct ieee80211_hw *hw, struct ieee80211_vif *vif, u64 tsf)
+#else
+static void esp_op_set_tsf(struct ieee80211_hw *hw, u64 tsf)
+#endif
+{
+        ESP_IEEE80211_DBG(ESP_DBG_TRACE, "%s enter \n", __func__);
+}
+#endif
+
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 2, 0))
+static void esp_op_reset_tsf(struct ieee80211_hw *hw, struct ieee80211_vif *vif)
+#else
+static void esp_op_reset_tsf(struct ieee80211_hw *hw)
+#endif
+{
+        ESP_IEEE80211_DBG(ESP_DBG_TRACE, "%s enter \n", __func__);
+
+}
+
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 31))
+static void esp_op_rfkill_poll(struct ieee80211_hw *hw)
+{
+        struct esp_pub *epub = (struct esp_pub *)hw->priv;
+
+        ESP_IEEE80211_DBG(ESP_DBG_TRACE, "%s enter \n", __func__);
+
+        wiphy_rfkill_set_hw_state(hw->wiphy,
+                                  test_bit(ESP_WL_FLAG_RFKILL, &epub->wl.flags) ? true : false);
+}
+#endif
+
+#ifdef HW_SCAN
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 35))
+static int esp_op_hw_scan(struct ieee80211_hw *hw,
+                          struct cfg80211_scan_request *req)
+#else
+static int esp_op_hw_scan(struct ieee80211_hw *hw,
+                          struct ieee80211_vif *vif,
+                          struct cfg80211_scan_request *req)
+#endif /* NEW_KERNEL && KERNEL_35 */
+{
+        struct esp_pub *epub = (struct esp_pub *)hw->priv;
+        int i, ret;
+        bool scan_often = true;
+
+        ESP_IEEE80211_DBG(ESP_DBG_OP, "%s\n", __func__);
+
+        ESP_IEEE80211_DBG(ESP_DBG_TRACE, "scan, %d\n", req->n_ssids);
+        ESP_IEEE80211_DBG(ESP_DBG_TRACE, "scan, len 1:%d,ssid 1:%s\n", req->ssids->ssid_len, req->ssids->ssid_len == 0? "":(char *)req->ssids->ssid);
+        if(req->n_ssids > 1)
+                ESP_IEEE80211_DBG(ESP_DBG_TRACE, "scan, len 2:%d,ssid 2:%s\n", (req->ssids+1)->ssid_len, (req->ssids+1)->ssid_len == 0? "":(char *)(req->ssids + 1)->ssid);
+
+        /*scan_request is keep allocate untill scan_done,record it
+          to split request into multi sdio_cmd*/
+       if (atomic_read(&epub->wl.off)) {
+               esp_dbg(ESP_DBG_ERROR, "%s scan but wl off \n", __func__);
+               return -1;
+       }
+
+        if(req->n_ssids > 1){
+                struct cfg80211_ssid *ssid2 = req->ssids + 1;
+                if((req->ssids->ssid_len > 0 && ssid2->ssid_len > 0) || req->n_ssids > 2){
+                        ESP_IEEE80211_DBG(ESP_DBG_ERROR, "scan ssid num: %d, ssid1:%s, ssid2:%s,not support\n", req->n_ssids, 
+                                       req->ssids->ssid_len == 0 ? "":(char *)req->ssids->ssid, ssid2->ssid_len == 0? "":(char *)ssid2->ssid);
+                               return -1;
+                       }
+        }
+
+        epub->wl.scan_req = req;
+
+        for (i = 0; i < req->n_channels; i++)
+                ESP_IEEE80211_DBG(ESP_DBG_TRACE, "eagle hw_scan freq %d\n",
+                                  req->channels[i]->center_freq);
+#if 0
+        for (i = 0; i < req->n_ssids; i++) {
+                if (req->ssids->ssid_len> 0) {
+                        req->ssids->ssid[req->ssids->ssid_len]='\0';
+                        ESP_IEEE80211_DBG(ESP_DBG_TRACE, "scan_ssid %d:%s\n",
+                                          i, req->ssids->ssid);
+                }
+        }
+#endif
+
+        /*in connect state, suspend tx data*/
+        if(epub->sip->support_bgscan &&
+               test_bit(ESP_WL_FLAG_CONNECT, &epub->wl.flags) &&
+               req->n_channels > 0)
+       {
+
+                scan_often = epub->scan_permit_valid && time_before(jiffies, epub->scan_permit);
+                epub->scan_permit_valid = true;
+
+                if (!scan_often) {
+/*                        epub->scan_permit = jiffies + msecs_to_jiffies(900);
+                        set_bit(ESP_WL_FLAG_STOP_TXQ, &epub->wl.flags);
+                        if (atomic_read(&epub->txq_stopped) == false) {
+                                atomic_set(&epub->txq_stopped, true);
+                                ieee80211_stop_queues(hw);
+                        }
+*/
+                } else {
+                        ESP_IEEE80211_DBG(ESP_DBG_LOG, "scan too often\n");
+                       return -1;
+                }
+        } else {
+               scan_often = false;
+       }
+
+        /*send sub_scan task to target*/
+        ret = sip_send_scan(epub);
+
+        if (ret) {
+                ESP_IEEE80211_DBG(ESP_DBG_ERROR, "fail to send scan_cmd\n");
+               return -1;
+        } else {
+               if(!scan_often) {
+                       epub->scan_permit = jiffies + msecs_to_jiffies(900);
+                        set_bit(ESP_WL_FLAG_STOP_TXQ, &epub->wl.flags);
+                        if (atomic_read(&epub->txq_stopped) == false) {
+                                atomic_set(&epub->txq_stopped, true);
+                                ieee80211_stop_queues(hw);
+                        }
+                       /*force scan complete in case target fail to report in time*/
+                       ieee80211_queue_delayed_work(hw, &epub->scan_timeout_work, req->n_channels * HZ / 4);
+               }
+        }
+
+        return 0;
+}
+
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 38))
+static int esp_op_remain_on_channel(struct ieee80211_hw *hw,
+                                    struct ieee80211_channel *chan,
+                                    enum nl80211_channel_type channel_type,
+                                    int duration)
+{
+      struct esp_pub *epub = (struct esp_pub *)hw->priv;
+
+      ESP_IEEE80211_DBG(ESP_DBG_OP, "%s enter, center_freq = %d duration = %d\n", __func__, chan->center_freq, duration);
+      sip_send_roc(epub, chan->center_freq, duration);
+      return 0;
+}
+
+static int esp_op_cancel_remain_on_channel(struct ieee80211_hw *hw)
+{
+      struct esp_pub *epub = (struct esp_pub *)hw->priv;
+
+      ESP_IEEE80211_DBG(ESP_DBG_OP, "%s enter \n", __func__);
+      epub->roc_flags= 0;  // to disable roc state
+      sip_send_roc(epub, 0, 0);
+     return 0;
+}
+#endif /* > 2.6.38 */
+#endif
+
+void esp_rocdone_process(struct ieee80211_hw *hw, struct sip_evt_roc *report)
+{    
+      struct esp_pub *epub = (struct esp_pub *)hw->priv;
+
+      ESP_IEEE80211_DBG(ESP_DBG_OP, "%s enter, state = %d is_ok = %d\n", __func__, report->state, report->is_ok);
+
+      //roc process begin 
+      if((report->state==1)&&(report->is_ok==1)) 
+      {
+           epub->roc_flags=1;  //flags in roc state, to fix channel, not change
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 38))
+           ieee80211_ready_on_channel(hw);
+#endif
+      }
+      else if ((report->state==0)&&(report->is_ok==1))    //roc process timeout
+      {
+           epub->roc_flags= 0;  // to disable roc state
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 38))
+           ieee80211_remain_on_channel_expired(hw);     
+#endif
+       }
+}
+
+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 39))        
+static int esp_op_set_bitrate_mask(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
+                               const struct cfg80211_bitrate_mask *mask)
+{
+        ESP_IEEE80211_DBG(ESP_DBG_OP, "%s enter \n", __func__);
+        ESP_IEEE80211_DBG(ESP_DBG_OP, "%s vif->macaddr[%pM], mask[%d]\n", __func__, vif->addr, mask->control[0].legacy);
+
+       return 0;
+}
+#endif
+
+//void esp_op_flush(struct ieee80211_hw *hw, bool drop)
+void esp_op_flush(struct ieee80211_hw *hw, u32 queues, bool drop)      
+{
+       
+        ESP_IEEE80211_DBG(ESP_DBG_OP, "%s enter \n", __func__);
+       do{
+               
+               struct esp_pub *epub = (struct esp_pub *)hw->priv;
+               unsigned long time = jiffies + msecs_to_jiffies(15);
+               while(atomic_read(&epub->sip->tx_data_pkt_queued)){
+                       if(!time_before(jiffies, time)){
+                               break;
+                       }
+#if  !defined(FPGA_LOOPBACK) && (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 32))
+            ieee80211_queue_work(epub->hw, &epub->tx_work);
+#else
+            queue_work(epub->esp_wkq, &epub->tx_work);
+#endif
+                       //sip_txq_process(epub);
+               }
+               mdelay(10);
+               
+       }while(0);
+}
+
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 33))
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 28))
+static int esp_op_ampdu_action(struct ieee80211_hw *hw,
+                enum ieee80211_ampdu_mlme_action action,
+                           struct ieee80211_sta *sta, u16 tid, u16 *ssn)
+#else
+static int esp_op_ampdu_action(struct ieee80211_hw *hw,
+                enum ieee80211_ampdu_mlme_action action,
+                           const u8 *addr, u16 tid, u16 *ssn)
+#endif
+#else
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 39))
+static int esp_op_ampdu_action(struct ieee80211_hw *hw,
+                struct ieee80211_vif *vif,
+                               enum ieee80211_ampdu_mlme_action action,
+                               struct ieee80211_sta *sta, u16 tid, u16 *ssn)
+#else
+static int esp_op_ampdu_action(struct ieee80211_hw *hw,
+                               struct ieee80211_vif *vif,
+                               enum ieee80211_ampdu_mlme_action action,
+                               struct ieee80211_sta *sta, u16 tid, u16 *ssn,
+                               u8 buf_size)
+#endif
+#endif /* NEW_KERNEL && KERNEL_35 */
+{
+        int ret = -EOPNOTSUPP;
+        struct esp_pub *epub = (struct esp_pub *)hw->priv;
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 28))
+        struct esp_node * node = (struct esp_node *)sta->drv_priv;
+#else
+        struct esp_node * node = esp_get_node_by_addr(epub, addr);
+#endif
+        struct esp_tx_tid * tid_info = &node->tid[tid];
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 39))
+       u8 buf_size = 64;
+#endif
+
+        ESP_IEEE80211_DBG(ESP_DBG_OP, "%s enter \n", __func__);
+        switch(action) {
+        case IEEE80211_AMPDU_TX_START:
+                if (mod_support_no_txampdu() /*||
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 29))
+                       hw->conf.channel_type == NL80211_CHAN_NO_HT 
+#else
+                        !(hw->conf.flags&IEEE80211_CONF_SUPPORT_HT_MODE)
+#endif*/ //add libing
+                            )
+                        return ret;
+
+               //if (vif->p2p || vif->type != NL80211_IFTYPE_STATION)
+               //      return ret;
+
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 28))
+                ESP_IEEE80211_DBG(ESP_DBG_ERROR, "%s TX START, addr:%pM,tid:%u\n", __func__, addr, tid);
+#else
+                ESP_IEEE80211_DBG(ESP_DBG_ERROR, "%s TX START, addr:%pM,tid:%u,state:%d\n", __func__, sta->addr, tid, tid_info->state);
+#endif
+                spin_lock_bh(&epub->tx_ampdu_lock);
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 28))                
+                ASSERT(tid_info->state == ESP_TID_STATE_TRIGGER);
+                *ssn = tid_info->ssn;
+                tid_info->state = ESP_TID_STATE_PROGRESS;
+#endif
+
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 28))
+                ieee80211_start_tx_ba_cb_irqsafe(hw, addr, tid);
+#elif (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 33))
+                ieee80211_start_tx_ba_cb_irqsafe(hw, sta->addr, tid);
+#else
+                ieee80211_start_tx_ba_cb_irqsafe(vif, sta->addr, tid);
+#endif
+                spin_unlock_bh(&epub->tx_ampdu_lock);
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 29))
+                ret = 0;
+#else
+                spin_lock_bh(&epub->tx_ampdu_lock);
+               
+                if (tid_info->state != ESP_TID_STATE_PROGRESS) {
+                        if (tid_info->state == ESP_TID_STATE_INIT) {
+                                               printk(KERN_ERR "%s WIFI RESET, IGNORE\n", __func__);
+                                spin_unlock_bh(&epub->tx_ampdu_lock);
+                                               return -ENETRESET;
+                        } else {
+                                               ASSERT(0);
+                        }
+                }
+                       
+                tid_info->state = ESP_TID_STATE_OPERATIONAL;
+                spin_unlock_bh(&epub->tx_ampdu_lock);
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 28))
+                ret = sip_send_ampdu_action(epub, SIP_AMPDU_TX_OPERATIONAL, sta->addr, tid, node->ifidx, buf_size);
+#else
+                ret = sip_send_ampdu_action(epub, SIP_AMPDU_TX_OPERATIONAL, addr, tid, node->ifidx, buf_size);
+#endif
+#endif
+                break;
+  /*      case IEEE80211_AMPDU_TX_STOP:
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 28))
+                ESP_IEEE80211_DBG(ESP_DBG_ERROR, "%s TX STOP, addr:%pM,tid:%u\n", __func__, addr, tid);
+#else
+                ESP_IEEE80211_DBG(ESP_DBG_ERROR, "%s TX STOP, addr:%pM,tid:%u,state:%d\n", __func__, sta->addr, tid, tid_info->state);
+#endif
+                spin_lock_bh(&epub->tx_ampdu_lock);
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 28))
+                if(tid_info->state == ESP_TID_STATE_WAIT_STOP)
+                        tid_info->state = ESP_TID_STATE_STOP;
+                else
+                        tid_info->state = ESP_TID_STATE_INIT;
+#endif
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 28))
+                ieee80211_stop_tx_ba_cb_irqsafe(hw, addr, tid);
+#elif (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 33))
+                ieee80211_stop_tx_ba_cb_irqsafe(hw, sta->addr, tid);
+#else
+                ieee80211_stop_tx_ba_cb_irqsafe(vif, sta->addr, tid);
+#endif
+                spin_unlock_bh(&epub->tx_ampdu_lock);
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 28))
+                ret = sip_send_ampdu_action(epub, SIP_AMPDU_TX_STOP, addr, tid, node->ifidx, 0);
+#else
+                ret = sip_send_ampdu_action(epub, SIP_AMPDU_TX_STOP, sta->addr, tid, node->ifidx, 0);
+#endif
+                break;*/ //add libing
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 29))
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 30))
+        case IEEE80211_AMPDU_TX_OPERATIONAL:
+#else
+        case IEEE80211_AMPDU_TX_RESUME:
+#endif
+                ESP_IEEE80211_DBG(ESP_DBG_ERROR, "%s TX OPERATION, addr:%pM,tid:%u,state:%d\n", __func__, sta->addr, tid, tid_info->state);
+                spin_lock_bh(&epub->tx_ampdu_lock);
+               
+                if (tid_info->state != ESP_TID_STATE_PROGRESS) {
+                        if (tid_info->state == ESP_TID_STATE_INIT) {
+                                               printk(KERN_ERR "%s WIFI RESET, IGNORE\n", __func__);
+                                spin_unlock_bh(&epub->tx_ampdu_lock);
+                                               return -ENETRESET;
+                        } else {
+                                               ASSERT(0);
+                        }
+                }
+                       
+                tid_info->state = ESP_TID_STATE_OPERATIONAL;
+                spin_unlock_bh(&epub->tx_ampdu_lock);
+                ret = sip_send_ampdu_action(epub, SIP_AMPDU_TX_OPERATIONAL, sta->addr, tid, node->ifidx, buf_size);
+                break;
+#endif
+        case IEEE80211_AMPDU_RX_START:
+                if(mod_support_no_rxampdu() /*||
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 29))
+                        hw->conf.channel_type == NL80211_CHAN_NO_HT
+#else
+                        !(hw->conf.flags&IEEE80211_CONF_SUPPORT_HT_MODE)
+#endif*/// add libing
+                        )
+                        return ret;
+
+               if (
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 37))
+                vif->p2p 
+#else
+                false
+#endif
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 33))
+                || false
+#else
+                || vif->type != NL80211_IFTYPE_STATION
+#endif
+           )
+                       return ret;
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 28))
+                ESP_IEEE80211_DBG(ESP_DBG_ERROR, "%s RX START %pM tid %u %u\n", __func__, addr, tid, *ssn);
+                ret = sip_send_ampdu_action(epub, SIP_AMPDU_RX_START, addr, tid, *ssn, 64);
+#else
+                ESP_IEEE80211_DBG(ESP_DBG_ERROR, "%s RX START %pM tid %u %u\n", __func__, sta->addr, tid, *ssn);
+                ret = sip_send_ampdu_action(epub, SIP_AMPDU_RX_START, sta->addr, tid, *ssn, 64);
+#endif
+                break;
+        case IEEE80211_AMPDU_RX_STOP:
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 28))
+                ESP_IEEE80211_DBG(ESP_DBG_ERROR, "%s RX STOP %pM tid %u\n", __func__, addr, tid);
+                ret = sip_send_ampdu_action(epub, SIP_AMPDU_RX_STOP, addr, tid, 0, 0);
+#else
+                ESP_IEEE80211_DBG(ESP_DBG_ERROR, "%s RX STOP %pM tid %u\n", __func__, sta->addr, tid);
+                ret = sip_send_ampdu_action(epub, SIP_AMPDU_RX_STOP, sta->addr, tid, 0, 0);
+#endif
+                break;
+        default:
+                break;
+        }
+        return ret;
+}
+
+#if 0
+static int esp_op_tx_last_beacon(struct ieee80211_hw *hw)
+{
+
+        ESP_IEEE80211_DBG(ESP_DBG_TRACE, "%s enter \n", __func__);
+
+        return 0;
+}
+
+#ifdef CONFIG_NL80211_TESTMODE
+static int esp_op_testmode_cmd(struct ieee80211_hw *hw, void *data, int len)
+{
+        ESP_IEEE80211_DBG(ESP_DBG_TRACE, "%s enter \n", __func__);
+
+        return 0;
+}
+#endif /* CONFIG_NL80211_TESTMODE */
+#endif
+
+static void
+esp_tx_work(struct work_struct *work)
+{
+        struct esp_pub *epub = container_of(work, struct esp_pub, tx_work);
+
+        mutex_lock(&epub->tx_mtx);
+        sip_txq_process(epub);
+        mutex_unlock(&epub->tx_mtx);
+}
+
+#ifndef RX_SENDUP_SYNC
+//for debug
+static int data_pkt_dequeue_cnt = 0;
+static void _esp_flush_rxq(struct esp_pub *epub)
+{
+        struct sk_buff *skb = NULL;
+
+        while ((skb = skb_dequeue(&epub->rxq))) {
+                esp_dbg(ESP_DBG_TRACE, "%s call ieee80211_rx \n", __func__);
+                //local_bh_disable();
+                ieee80211_rx(epub->hw, skb);
+                //local_bh_enable();
+        }
+}
+
+static void
+esp_sendup_work(struct work_struct *work)
+{
+        struct esp_pub *epub = container_of(work, struct esp_pub, sendup_work);
+        spin_lock_bh(&epub->rx_lock);
+        _esp_flush_rxq(epub);
+        spin_unlock_bh(&epub->rx_lock);
+}
+#endif /* !RX_SENDUP_SYNC */
+
+static struct ieee80211_ops esp_mac80211_ops = {
+        .tx = esp_op_tx,
+        .start = esp_op_start,
+        .stop = esp_op_stop,
+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 39))        
+#ifdef CONFIG_PM
+        .suspend = esp_op_suspend,
+        .resume = esp_op_resume,
+#endif
+#endif
+        .add_interface = esp_op_add_interface,
+        .remove_interface = esp_op_remove_interface,
+        .config = esp_op_config,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 28))
+        .bss_info_changed = esp_op_bss_info_changed,
+#else
+        .config_interface = esp_op_config_interface,
+#endif
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 32))
+        .prepare_multicast = esp_op_prepare_multicast,
+#endif
+        .configure_filter = esp_op_configure_filter,
+        .set_key = esp_op_set_key,
+        .update_tkip_key = esp_op_update_tkip_key,
+        //.sched_scan_start = esp_op_sched_scan_start,
+        //.sched_scan_stop = esp_op_sched_scan_stop,
+        .set_rts_threshold = esp_op_set_rts_threshold,
+        .sta_notify = esp_op_sta_notify,
+        .conf_tx = esp_op_conf_tx,
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 35))
+        .get_tx_stats = esp_op_get_tx_stats,
+#endif /* KERNEL_VERSION < 2.6.35*/
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 37))
+       .change_interface = esp_op_change_interface,
+#endif
+        .get_tsf = esp_op_get_tsf,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 30))
+        .set_tsf = esp_op_set_tsf,
+#endif
+        .reset_tsf = esp_op_reset_tsf,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 31))
+        .rfkill_poll= esp_op_rfkill_poll,
+#endif
+#ifdef HW_SCAN
+        .hw_scan = esp_op_hw_scan,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 38))
+        .remain_on_channel= esp_op_remain_on_channel,
+        .cancel_remain_on_channel=esp_op_cancel_remain_on_channel,
+#endif /* >=2.6.38 */
+#endif
+        .ampdu_action = esp_op_ampdu_action,
+        //.get_survey = esp_op_get_survey,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 34))
+        .sta_add = esp_op_sta_add,
+        .sta_remove = esp_op_sta_remove,
+#endif /* >= 2.6.34 */
+#ifdef CONFIG_NL80211_TESTMODE
+        //CFG80211_TESTMODE_CMD(esp_op_tm_cmd)
+#endif
+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 39))
+       .set_bitrate_mask = esp_op_set_bitrate_mask,
+#endif
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 34))
+       .flush = esp_op_flush,
+#endif
+};
+
+struct esp_pub * esp_pub_alloc_mac80211(struct device *dev)
+{
+        struct ieee80211_hw *hw;
+        struct esp_pub *epub;
+        int ret = 0;
+
+        hw = ieee80211_alloc_hw(sizeof(struct esp_pub), &esp_mac80211_ops);
+
+        if (hw == NULL) {
+                esp_dbg(ESP_DBG_ERROR, "ieee80211 can't alloc hw!\n");
+                ret = -ENOMEM;
+                return ERR_PTR(ret);
+        }
+
+        epub = hw->priv;
+        memset(epub, 0, sizeof(*epub));
+        epub->hw = hw;
+        SET_IEEE80211_DEV(hw, dev);
+        epub->dev = dev;
+
+        skb_queue_head_init(&epub->txq);
+        skb_queue_head_init(&epub->txdoneq);
+        skb_queue_head_init(&epub->rxq);
+
+       spin_lock_init(&epub->tx_ampdu_lock);
+        spin_lock_init(&epub->tx_lock);
+        mutex_init(&epub->tx_mtx);
+        spin_lock_init(&epub->rx_lock);
+
+        INIT_WORK(&epub->tx_work, esp_tx_work);
+#ifndef RX_SENDUP_SYNC
+        INIT_WORK(&epub->sendup_work, esp_sendup_work);
+#endif //!RX_SENDUP_SYNC
+
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 39))
+        //epub->esp_wkq = create_freezeable_workqueue("esp_wkq"); 
+        epub->esp_wkq = create_singlethread_workqueue("esp_wkq");
+#else
+        //epub->esp_wkq = create_freezable_workqueue("esp_wkq"); 
+        epub->esp_wkq = create_singlethread_workqueue("esp_wkq");
+#endif /* NEW_KERNEL */
+
+        if (epub->esp_wkq == NULL) {
+                ret = -ENOMEM;
+                return ERR_PTR(ret);
+        }
+        epub->scan_permit_valid = false;
+        INIT_DELAYED_WORK(&epub->scan_timeout_work, hw_scan_timeout_report);
+
+        return epub;
+}
+
+
+int esp_pub_dealloc_mac80211(struct esp_pub *epub)
+{
+        set_bit(ESP_WL_FLAG_RFKILL, &epub->wl.flags);
+
+        destroy_workqueue(epub->esp_wkq);
+        mutex_destroy(&epub->tx_mtx);
+
+#ifdef ESP_NO_MAC80211
+        free_netdev(epub->net_dev);
+        wiphy_free(epub->wdev->wiphy);
+        kfree(epub->wdev);
+#else
+        if (epub->hw) {
+                ieee80211_free_hw(epub->hw);
+        }
+#endif
+
+        return 0;
+}
+
+#if 0
+static int esp_reg_notifier(struct wiphy *wiphy,
+                            struct regulatory_request *request)
+{
+        struct ieee80211_supported_band *sband;
+        struct ieee80211_channel *ch;
+        int i;
+
+        ESP_IEEE80211_DBG(ESP_DBG_TRACE, "%s enter %d\n", __func__, request->initiator
+                         );
+
+        //TBD
+}
+#endif
+
+/* 2G band channels */
+static struct ieee80211_channel esp_channels_2ghz[] = {
+        { .hw_value = 1, .center_freq = 2412, .max_power = 25 },
+        { .hw_value = 2, .center_freq = 2417, .max_power = 25 },
+        { .hw_value = 3, .center_freq = 2422, .max_power = 25 },
+        { .hw_value = 4, .center_freq = 2427, .max_power = 25 },
+        { .hw_value = 5, .center_freq = 2432, .max_power = 25 },
+        { .hw_value = 6, .center_freq = 2437, .max_power = 25 },
+        { .hw_value = 7, .center_freq = 2442, .max_power = 25 },
+        { .hw_value = 8, .center_freq = 2447, .max_power = 25 },
+        { .hw_value = 9, .center_freq = 2452, .max_power = 25 },
+        { .hw_value = 10, .center_freq = 2457, .max_power = 25 },
+        { .hw_value = 11, .center_freq = 2462, .max_power = 25 },
+        { .hw_value = 12, .center_freq = 2467, .max_power = 25 },
+        { .hw_value = 13, .center_freq = 2472, .max_power = 25 },
+        //{ .hw_value = 14, .center_freq = 2484, .max_power = 25 },
+};
+
+/* 11G rate */
+static struct ieee80211_rate esp_rates_2ghz[] = {
+        {
+                .bitrate = 10,
+                .hw_value = CONF_HW_BIT_RATE_1MBPS,
+                .hw_value_short = CONF_HW_BIT_RATE_1MBPS,
+        },
+        {
+                .bitrate = 20,
+                .hw_value = CONF_HW_BIT_RATE_2MBPS,
+                .hw_value_short = CONF_HW_BIT_RATE_2MBPS,
+                .flags = IEEE80211_RATE_SHORT_PREAMBLE
+        },
+        {
+                .bitrate = 55,
+                .hw_value = CONF_HW_BIT_RATE_5_5MBPS,
+                .hw_value_short = CONF_HW_BIT_RATE_5_5MBPS,
+                .flags = IEEE80211_RATE_SHORT_PREAMBLE
+        },
+        {
+                .bitrate = 110,
+                .hw_value = CONF_HW_BIT_RATE_11MBPS,
+                .hw_value_short = CONF_HW_BIT_RATE_11MBPS,
+                .flags = IEEE80211_RATE_SHORT_PREAMBLE
+        },
+        {
+                .bitrate = 60,
+                .hw_value = CONF_HW_BIT_RATE_6MBPS,
+                .hw_value_short = CONF_HW_BIT_RATE_6MBPS,
+        },
+        {
+                .bitrate = 90,
+                .hw_value = CONF_HW_BIT_RATE_9MBPS,
+                .hw_value_short = CONF_HW_BIT_RATE_9MBPS,
+        },
+        {
+                .bitrate = 120,
+                .hw_value = CONF_HW_BIT_RATE_12MBPS,
+                .hw_value_short = CONF_HW_BIT_RATE_12MBPS,
+        },
+        {
+                .bitrate = 180,
+                .hw_value = CONF_HW_BIT_RATE_18MBPS,
+                .hw_value_short = CONF_HW_BIT_RATE_18MBPS,
+        },
+        {
+                .bitrate = 240,
+                .hw_value = CONF_HW_BIT_RATE_24MBPS,
+                .hw_value_short = CONF_HW_BIT_RATE_24MBPS,
+        },
+        {
+                .bitrate = 360,
+                .hw_value = CONF_HW_BIT_RATE_36MBPS,
+                .hw_value_short = CONF_HW_BIT_RATE_36MBPS,
+        },
+        {
+                .bitrate = 480,
+                .hw_value = CONF_HW_BIT_RATE_48MBPS,
+                .hw_value_short = CONF_HW_BIT_RATE_48MBPS,
+        },
+        {
+                .bitrate = 540,
+                .hw_value = CONF_HW_BIT_RATE_54MBPS,
+                .hw_value_short = CONF_HW_BIT_RATE_54MBPS,
+        },
+};
+
+static void
+esp_pub_init_mac80211(struct esp_pub *epub)
+{
+        struct ieee80211_hw *hw = epub->hw;
+
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 31))
+        static const u32 cipher_suites[] = {
+                WLAN_CIPHER_SUITE_WEP40,
+                WLAN_CIPHER_SUITE_WEP104,
+                WLAN_CIPHER_SUITE_TKIP,
+                WLAN_CIPHER_SUITE_CCMP,
+        };
+#endif
+
+        hw->channel_change_time = 420000; /* in us */
+        hw->max_listen_interval = 10;
+
+        hw->flags = IEEE80211_HW_SIGNAL_DBM |
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 33))
+                    IEEE80211_HW_HAS_RATE_CONTROL |
+#endif /* >= 2.6.33 */
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 30))
+                    IEEE80211_HW_SUPPORTS_PS |
+#endif
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 29))
+                IEEE80211_HW_AMPDU_AGGREGATION |
+#endif
+                               IEEE80211_HW_HOST_BROADCAST_PS_BUFFERING;
+   //IEEE80211_HW_PS_NULLFUNC_STACK |  
+        //IEEE80211_HW_CONNECTION_MONITOR |
+        //IEEE80211_HW_BEACON_FILTER |
+        //IEEE80211_HW_AMPDU_AGGREGATION |
+        //IEEE80211_HW_REPORTS_TX_ACK_STATUS;
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 39))
+        hw->max_rx_aggregation_subframes = 0x40;
+        hw->max_tx_aggregation_subframes = 0x40;
+#endif /* >= 2.6.39 */
+        
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 31))
+        hw->wiphy->cipher_suites = cipher_suites;
+        hw->wiphy->n_cipher_suites = ARRAY_SIZE(cipher_suites);
+        hw->wiphy->max_scan_ie_len = epub->sip->tx_blksz - sizeof(struct sip_hdr) - sizeof(struct sip_cmd_scan);
+#endif
+
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 28))
+        /* ONLY station for now, support P2P soon... */
+        hw->wiphy->interface_modes = 
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 37))
+            BIT(NL80211_IFTYPE_P2P_GO) |
+                   BIT(NL80211_IFTYPE_P2P_CLIENT) |
+#endif
+            BIT(NL80211_IFTYPE_STATION) |
+                   BIT(NL80211_IFTYPE_AP);
+#endif
+
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 30))
+        hw->wiphy->max_scan_ssids = 2;
+        //hw->wiphy->max_sched_scan_ssids = 16;
+        //hw->wiphy->max_match_sets = 16;
+#endif
+
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 38))
+               hw->wiphy->max_remain_on_channel_duration = 5000;
+#endif
+
+        epub->wl.sbands[IEEE80211_BAND_2GHZ].band = IEEE80211_BAND_2GHZ;
+        epub->wl.sbands[IEEE80211_BAND_2GHZ].channels = esp_channels_2ghz;
+        epub->wl.sbands[IEEE80211_BAND_2GHZ].bitrates = esp_rates_2ghz;
+        epub->wl.sbands[IEEE80211_BAND_2GHZ].n_channels = ARRAY_SIZE(esp_channels_2ghz);
+        epub->wl.sbands[IEEE80211_BAND_2GHZ].n_bitrates = ARRAY_SIZE(esp_rates_2ghz);
+        /*add to support 11n*/
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 29))
+        epub->wl.sbands[IEEE80211_BAND_2GHZ].ht_cap.ht_supported = true;
+        epub->wl.sbands[IEEE80211_BAND_2GHZ].ht_cap.cap = 0x116C;//IEEE80211_HT_CAP_RX_STBC; //IEEE80211_HT_CAP_SGI_20;
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 32))
+        epub->wl.sbands[IEEE80211_BAND_2GHZ].ht_cap.ampdu_factor = IEEE80211_HT_MAX_AMPDU_16K;
+        epub->wl.sbands[IEEE80211_BAND_2GHZ].ht_cap.ampdu_density = IEEE80211_HT_MPDU_DENSITY_NONE;
+#else
+        epub->wl.sbands[IEEE80211_BAND_2GHZ].ht_cap.ampdu_factor = 1;//IEEE80211_HT_MAX_AMPDU_16K;
+        epub->wl.sbands[IEEE80211_BAND_2GHZ].ht_cap.ampdu_density = 0;//IEEE80211_HT_MPDU_DENSITY_NONE;
+#endif
+        memset(&epub->wl.sbands[IEEE80211_BAND_2GHZ].ht_cap.mcs, 0,
+               sizeof(epub->wl.sbands[IEEE80211_BAND_2GHZ].ht_cap.mcs));
+        epub->wl.sbands[IEEE80211_BAND_2GHZ].ht_cap.mcs.rx_mask[0] = 0xff;
+        //epub->wl.sbands[IEEE80211_BAND_2GHZ].ht_cap.mcs.rx_highest = 7;
+        //epub->wl.sbands[IEEE80211_BAND_2GHZ].ht_cap.mcs.tx_params = IEEE80211_HT_MCS_TX_DEFINED;
+#else
+        epub->wl.sbands[IEEE80211_BAND_2GHZ].ht_info.ht_supported = true;
+        epub->wl.sbands[IEEE80211_BAND_2GHZ].ht_info.cap = 0x116C;//IEEE80211_HT_CAP_RX_STBC; //IEEE80211_HT_CAP_SGI_20;
+        epub->wl.sbands[IEEE80211_BAND_2GHZ].ht_info.ampdu_factor = 1;//IEEE80211_HT_MAX_AMPDU_16K;
+        epub->wl.sbands[IEEE80211_BAND_2GHZ].ht_info.ampdu_density = 0;//IEEE80211_HT_MPDU_DENSITY_NONE;
+        memset(&epub->wl.sbands[IEEE80211_BAND_2GHZ].ht_info.supp_mcs_set, 0,
+               sizeof(epub->wl.sbands[IEEE80211_BAND_2GHZ].ht_info.supp_mcs_set));
+        epub->wl.sbands[IEEE80211_BAND_2GHZ].ht_info.supp_mcs_set[0] = 0xff;
+#endif
+
+
+        /* BAND_5GHZ TBD */
+
+        hw->wiphy->bands[IEEE80211_BAND_2GHZ] =
+                &epub->wl.sbands[IEEE80211_BAND_2GHZ];
+        /* BAND_5GHZ TBD */
+
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 31))
+        /*no fragment*/
+        hw->wiphy->frag_threshold = IEEE80211_MAX_FRAG_THRESHOLD;
+#endif
+
+        /* handle AC queue in f/w */
+        hw->queues = 4;
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 28))
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 30))
+        hw->max_rates = 4;
+#else
+        hw->max_altrates = 4;
+#endif
+#endif
+        //hw->wiphy->reg_notifier = esp_reg_notify;
+
+        hw->vif_data_size = sizeof(struct esp_vif);
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 28))
+        hw->sta_data_size = sizeof(struct esp_node);
+#endif
+
+        //hw->max_rx_aggregation_subframes = 8;
+}
+
+int
+esp_register_mac80211(struct esp_pub *epub)
+{
+        int ret = 0;
+#ifdef P2P_CONCURRENT
+       u8 *paddr;
+#endif
+
+        esp_pub_init_mac80211(epub);
+
+#ifdef P2P_CONCURRENT
+       epub->hw->wiphy->addresses = (struct mac_address *)esp_mac_addr;
+       memcpy(&epub->hw->wiphy->addresses[0], epub->mac_addr, ETH_ALEN);
+       memcpy(&epub->hw->wiphy->addresses[1], epub->mac_addr, ETH_ALEN);
+       paddr = (u8 *)&epub->hw->wiphy->addresses[1];
+       (*paddr) |= 0x02;
+       epub->hw->wiphy->n_addresses = 2;
+#else
+
+        SET_IEEE80211_PERM_ADDR(epub->hw, epub->mac_addr);
+#endif
+
+        ret = ieee80211_register_hw(epub->hw);
+
+        if (ret < 0) {
+                ESP_IEEE80211_DBG(ESP_DBG_ERROR, "unable to register mac80211 hw: %d\n", ret);
+                return ret;
+        } else {
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 37))
+#ifdef MAC80211_NO_CHANGE
+               rtnl_lock();
+               if (epub->hw->wiphy->interface_modes &
+                (BIT(NL80211_IFTYPE_P2P_GO) | BIT(NL80211_IFTYPE_P2P_CLIENT))) {
+                ret = ieee80211_if_add(hw_to_local(epub->hw), "p2p%d", NULL,
+                                          NL80211_IFTYPE_STATION, NULL);
+                if (ret)
+                        wiphy_warn(epub->hw->wiphy,
+                                   "Failed to add default virtual iface\n");
+               }
+
+               rtnl_unlock();
+#endif
+#endif
+       }
+
+        set_bit(ESP_WL_FLAG_HW_REGISTERED, &epub->wl.flags);
+
+        return ret;
+}
+
+static u8 getaddr_index(u8 * addr, struct esp_pub *epub)
+{
+#ifdef P2P_CONCURRENT
+       int i;
+       for(i = 0; i < ESP_PUB_MAX_VIF; i++)
+               if(memcmp(addr, (u8 *)&epub->hw->wiphy->addresses[i], ETH_ALEN) == 0)
+                       return i;
+       return ESP_PUB_MAX_VIF;
+#else
+       return 0;
+#endif
+}
+
diff --git a/drivers/net/wireless/rockchip_wlan/esp8089/esp_main.c b/drivers/net/wireless/rockchip_wlan/esp8089/esp_main.c
new file mode 100755 (executable)
index 0000000..5d0629f
--- /dev/null
@@ -0,0 +1,266 @@
+/*
+ * Copyright (c) 2010 - 2012 Espressif System.
+ */
+
+#include <linux/netdevice.h>
+#include <linux/etherdevice.h>
+#include <linux/rtnetlink.h>
+#include <linux/firmware.h>
+#include <linux/sched.h>
+#include <net/cfg80211.h>
+#include <net/mac80211.h>
+#include <linux/time.h>
+#include <linux/moduleparam.h>
+
+#include "esp_pub.h"
+#include "esp_sip.h"
+#include "esp_sif.h"
+#include "esp_debug.h"
+#ifdef ANDROID
+#include "esp_android.h"
+#endif /* ANDROID */
+#include "esp_wl.h"
+#include "slc_host_register.h"
+#include "esp_android.h"
+
+struct completion *gl_bootup_cplx = NULL;
+
+#ifndef FPGA_DEBUG
+static int esp_download_fw(struct esp_pub * epub);
+#endif /* !FGPA_DEBUG */
+
+static bool modparam_no_txampdu = false;
+static bool modparam_no_rxampdu = false;
+module_param_named(no_txampdu, modparam_no_txampdu, bool, 0444);
+MODULE_PARM_DESC(no_txampdu, "Disable tx ampdu.");
+module_param_named(no_rxampdu, modparam_no_rxampdu, bool, 0444);
+MODULE_PARM_DESC(no_rxampdu, "Disable rx ampdu.");
+
+static char *modparam_eagle_path = "";
+module_param_named(eagle_path, modparam_eagle_path, charp, 0444);
+MODULE_PARM_DESC(eagle_path, "eagle path");
+
+bool mod_support_no_txampdu()
+{
+        return modparam_no_txampdu;
+}
+
+bool mod_support_no_rxampdu()
+{
+        return modparam_no_rxampdu;
+}
+
+void mod_support_no_txampdu_set(bool value)
+{
+       modparam_no_txampdu = value;
+}
+
+char *mod_eagle_path_get(void)
+{
+       if (modparam_eagle_path[0] == '\0')
+               return NULL;
+
+       return modparam_eagle_path;
+}
+
+int esp_pub_init_all(struct esp_pub *epub)
+{
+        int ret = 0;
+        
+       /* completion for bootup event poll*/
+       DECLARE_COMPLETION_ONSTACK(complete);
+       atomic_set(&epub->ps.state, ESP_PM_OFF);
+       if(epub->sdio_state == ESP_SDIO_STATE_FIRST_INIT){
+               epub->sip = sip_attach(epub);
+
+               esp_dump_var("esp_msg_level", NULL, &esp_msg_level, ESP_U32);
+
+#if defined(ANDROID) && defined (ESP_ANDROID_LOGGER)
+               esp_dump_var("log_off", NULL, &log_off, ESP_U32);
+#endif /* ESP_ANDROID_LOGGER */
+
+               ret = sip_prepare_boot(epub->sip);
+               if (ret)
+                       return ret;
+       } else {
+               atomic_set(&epub->sip->state, SIP_PREPARE_BOOT);
+               atomic_set(&epub->sip->tx_credits, 0);
+       }
+
+#ifndef FPGA_DEBUG
+        ret = esp_download_fw(epub);
+
+        if (ret) {
+                esp_dbg(ESP_DBG_ERROR, "download firmware failed\n");
+                return ret;
+        }
+
+        esp_dbg(ESP_DBG_TRACE, "download firmware OK \n");
+#else
+#ifndef SDIO_TEST
+        sip_send_bootup(epub->sip);
+#endif /* !SDIO_TEST */
+
+#endif /* FPGA_DEBUG */
+
+       gl_bootup_cplx = &complete;
+
+       sif_enable_irq(epub);
+       
+       if(epub->sdio_state == ESP_SDIO_STATE_SECOND_INIT){
+               sip_poll_bootup_event(epub->sip);
+       } else {
+               sip_poll_resetting_event(epub->sip);
+       }
+
+       gl_bootup_cplx = NULL;
+
+        return ret;
+}
+
+#if 0
+void esp_ps_config(struct esp_pub *epub, struct esp_ps *ps, bool on)
+{
+        unsigned long time = jiffies - ps->last_config_time;
+        u32 time_msec = jiffies_to_msecs(time);
+
+        ps->last_config_time = jiffies;
+
+        if (on && (atomic_read(&ps->state) == ESP_PM_TURNING_ON || atomic_read(&ps->state) == ESP_PM_ON)) {
+                esp_dbg(ESP_DBG_PS, "%s same state\n", __func__);
+                return;
+        }
+
+       ps->nulldata_pm_on = false;
+
+        esp_dbg(ESP_DBG_PS, "%s PS %s, dtim %u maxslp %u period %u\n", __func__, on?"ON":"OFF", ps->dtim_period, ps->max_sleep_period, time_msec);
+
+        //NB: turn on ps may need additional check, make sure don't hurt iperf downlink since pkt may be sparse during rx
+
+        if (on) {
+                esp_dbg(ESP_DBG_PS, "%s ps state %d => turning ON\n", __func__, atomic_read(&ps->state));
+                atomic_set(&ps->state, ESP_PM_TURNING_ON);
+        } else {
+                esp_dbg(ESP_DBG_PS, "%s ps state %d => turning OFF\n", __func__, atomic_read(&ps->state));
+                atomic_set(&ps->state, ESP_PM_TURNING_OFF);
+        }
+
+        sip_send_ps_config(epub, ps);
+}
+#endif
+
+void
+esp_dsr(struct esp_pub *epub)
+{
+        sip_rx(epub);
+}
+
+
+struct esp_fw_hdr {
+        u8 magic;
+        u8 blocks;
+        u8 pad[2];
+        u32 entry_addr;
+} __packed;
+
+struct esp_fw_blk_hdr {
+        u32 load_addr;
+        u32 data_len;
+} __packed;
+
+#define ESP_FW_NAME1 "eagle_fw1.bin"
+#define ESP_FW_NAME2 "eagle_fw2.bin"
+
+#ifndef FPGA_DEBUG
+static int esp_download_fw(struct esp_pub * epub)
+{
+#ifndef HAS_FW
+        const struct firmware *fw_entry;
+#endif /* !HAS_FW */
+        u8 * fw_buf = NULL;
+        u32 offset = 0;
+        int ret = 0;
+        u8 blocks;
+        struct esp_fw_hdr *fhdr;
+        struct esp_fw_blk_hdr *bhdr=NULL;
+        struct sip_cmd_bootup bootcmd;
+
+#ifndef HAS_FW
+
+char * esp_fw_name = epub->sdio_state == ESP_SDIO_STATE_FIRST_INIT ? ESP_FW_NAME1 : ESP_FW_NAME2;
+
+#ifdef ANDROID
+        ret = android_request_firmware(&fw_entry, esp_fw_name, epub->dev);
+#else
+        ret = request_firmware(&fw_entry, esp_fw_name, epub->dev);
+#endif //ANDROID
+
+        if (ret)
+                return ret;
+
+        fw_buf = kmemdup(fw_entry->data, fw_entry->size, GFP_KERNEL);
+
+#ifdef ANDROID
+        android_release_firmware(fw_entry);
+#else
+        release_firmware(fw_entry);
+#endif //ANDROID
+
+        if (fw_buf == NULL) {
+                return -ENOMEM;
+        }
+#else
+
+#include "eagle_fw1.h"
+#include "eagle_fw2.h"
+        fw_buf = epub->sdio_state == ESP_SDIO_STATE_FIRST_INIT ? &eagle_fw1[0] : &eagle_fw2[0];
+
+#endif /* HAS_FW */
+
+        fhdr = (struct esp_fw_hdr *)fw_buf;
+
+        if (fhdr->magic != 0xE9) {
+                esp_dbg(ESP_DBG_ERROR, "%s wrong magic! \n", __func__);
+                goto _err;
+        }
+
+        blocks = fhdr->blocks;
+        offset += sizeof(struct esp_fw_hdr);
+
+        while (blocks) {
+
+                bhdr = (struct esp_fw_blk_hdr *)(&fw_buf[offset]);
+                offset += sizeof(struct esp_fw_blk_hdr);
+
+                ret = sip_write_memory(epub->sip, bhdr->load_addr, &fw_buf[offset], bhdr->data_len);
+
+                if (ret) {
+                        esp_dbg(ESP_DBG_ERROR, "%s Failed to write fw, err: %d\n", __func__, ret);
+                        goto _err;
+                }
+
+                blocks--;
+                offset += bhdr->data_len;
+        }
+
+        /* TODO: last byte should be the checksum and skip checksum for now */
+
+        bootcmd.boot_addr = fhdr->entry_addr;
+        ret = sip_send_cmd(epub->sip, SIP_CMD_BOOTUP, sizeof(struct sip_cmd_bootup), &bootcmd);
+
+        if (ret)
+                goto _err;
+
+_err:
+#ifndef HAS_FW
+        kfree(fw_buf);
+#endif /* !HAS_FW */
+
+        return ret;
+
+}
+#endif /* !FPGA_DEBUG */
+
+
+
+
diff --git a/drivers/net/wireless/rockchip_wlan/esp8089/esp_os.h b/drivers/net/wireless/rockchip_wlan/esp8089/esp_os.h
new file mode 100755 (executable)
index 0000000..4128725
--- /dev/null
@@ -0,0 +1,14 @@
+/*
+ *  Copyright (c) 2012 Espressif System
+ */
+
+#ifndef _ESP_OS_H_
+#define _ESP_OS_H_
+
+#ifndef __packed
+#define __packed __attribute__ ((packed))
+#endif /* __packed */
+
+#include "net/mac80211.h"
+
+#endif /*__ESP_OS_H_*/
diff --git a/drivers/net/wireless/rockchip_wlan/esp8089/esp_path.h b/drivers/net/wireless/rockchip_wlan/esp8089/esp_path.h
new file mode 100755 (executable)
index 0000000..514f79c
--- /dev/null
@@ -0,0 +1,6 @@
+#ifndef _ESP_PATH_H_
+#define _ESP_PATH_H_
+#define FWPATH "/system/lib/modules"
+//module_param_string(fwpath, fwpath, sizeof(fwpath), 0644);
+
+#endif /* _ESP_PATH_H_ */
diff --git a/drivers/net/wireless/rockchip_wlan/esp8089/esp_pm.c b/drivers/net/wireless/rockchip_wlan/esp8089/esp_pm.c
new file mode 100755 (executable)
index 0000000..5b68fde
--- /dev/null
@@ -0,0 +1,76 @@
+/*
+ * Copyright (c) 2010 -2013 Espressif System.
+ *
+ */
+#ifdef CONFIG_HAS_WAKELOCK
+#include <linux/wakelock.h>
+#endif
+#ifdef CONFIG_HAS_EARLYSUSPEND
+#include <linux/earlysuspend.h>
+#endif
+#include "esp_pub.h"
+
+#ifdef CONFIG_HAS_EARLYSUSPEND
+
+static void esp_early_suspend(struct early_suspend *h)
+{
+        printk("%s\n", __func__);
+}
+
+static void esp_late_resume(struct early_suspend*h)
+{
+        printk("%s\n", __func__);
+}
+
+static struct early_suspend esp_early_suspend_ctrl =  {
+        .suspend = esp_early_suspend,
+        .resume = esp_late_resume,
+        .level = EARLY_SUSPEND_LEVEL_BLANK_SCREEN - 20,
+};
+#endif /* EARLYSUSPEND */
+
+void esp_register_early_suspend(void)
+{
+#ifdef CONFIG_HAS_EARLYSUSPEND
+        register_early_suspend(&esp_early_suspend_ctrl);
+#endif
+}
+
+void esp_unregister_early_suspend(void)
+{
+#ifdef CONFIG_HAS_EARLYSUSPEND
+        unregister_early_suspend(&esp_early_suspend_ctrl);
+#endif  
+}
+
+#ifdef CONFIG_HAS_WAKELOCK
+static struct wake_lock esp_wake_lock_;
+#endif /* WAKELOCK */
+
+void esp_wakelock_init(void)
+{
+#ifdef CONFIG_HAS_WAKELOCK
+        wake_lock_init(&esp_wake_lock_, WAKE_LOCK_SUSPEND, "eagle");
+#endif
+}
+
+void esp_wakelock_destroy(void)
+{
+#ifdef CONFIG_HAS_WAKELOCK
+        wake_lock_destroy(&esp_wake_lock_);
+#endif
+}
+
+void esp_wake_lock(void)
+{
+#ifdef CONFIG_HAS_WAKELOCK
+        wake_lock(&esp_wake_lock_);
+#endif
+}
+
+void esp_wake_unlock(void)
+{
+#ifdef CONFIG_HAS_WAKELOCK
+        wake_unlock(&esp_wake_lock_);
+#endif
+}
diff --git a/drivers/net/wireless/rockchip_wlan/esp8089/esp_pub.h b/drivers/net/wireless/rockchip_wlan/esp8089/esp_pub.h
new file mode 100755 (executable)
index 0000000..74853f1
--- /dev/null
@@ -0,0 +1,238 @@
+/*
+ * Copyright (c) 2011-2012 Espressif System.
+ *
+ *   wlan device header file
+ */
+
+#ifndef _ESP_PUB_H_
+#define _ESP_PUB_H_
+
+#include <linux/etherdevice.h>
+#include <linux/rtnetlink.h>
+#include <linux/firmware.h>
+#include <linux/sched.h>
+#include <net/mac80211.h>
+#include <net/cfg80211.h>
+#include <linux/version.h>
+#include "sip2_common.h"
+
+// to support kernel < 2.6.28 there's no ieee80211_sta
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 28))
+#include <net/wireless.h>
+#endif
+
+enum esp_sdio_state{
+       ESP_SDIO_STATE_FIRST_INIT,
+       ESP_SDIO_STATE_FIRST_NORMAL_EXIT,
+       ESP_SDIO_STATE_FIRST_ERROR_EXIT,
+       ESP_SDIO_STATE_SECOND_INIT,
+       ESP_SDIO_STATE_SECOND_ERROR_EXIT,
+};
+
+enum esp_tid_state {
+        ESP_TID_STATE_INIT,
+        ESP_TID_STATE_TRIGGER,
+        ESP_TID_STATE_PROGRESS,
+        ESP_TID_STATE_OPERATIONAL,
+        ESP_TID_STATE_WAIT_STOP,
+        ESP_TID_STATE_STOP,
+};
+
+struct esp_tx_tid {
+        u8 state;
+       u8 cnt;
+        u16 ssn;
+};
+
+#define WME_NUM_TID 16
+struct esp_node {
+        struct esp_tx_tid tid[WME_NUM_TID];
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 28))
+        struct ieee80211_sta *sta;
+#else
+       u8 addr[ETH_ALEN];
+    u16 aid;
+    u64 supp_rates[IEEE80211_NUM_BANDS];
+    struct ieee80211_ht_info ht_info;
+#endif
+       u8 ifidx;
+       u8 index;
+};
+
+#define WME_AC_BE 2
+#define WME_AC_BK 3
+#define WME_AC_VI 1
+#define WME_AC_VO 0
+
+struct llc_snap_hdr {
+        u8 dsap;
+        u8 ssap;
+        u8 cntl;
+        u8 org_code[3];
+        __be16 eth_type;
+} __packed;
+
+struct esp_vif {
+       struct esp_pub *epub;
+       u8 index;
+       u32 beacon_interval;
+       bool ap_up;
+       struct timer_list beacon_timer;
+};
+
+/* WLAN related, mostly... */
+/*struct hw_scan_timeout {
+        struct delayed_work w;
+        struct ieee80211_hw *hw;
+};*/
+
+typedef struct esp_wl {
+        u8 ssid[IEEE80211_MAX_SSID_LEN];
+        u8 dot11_auth_mode;
+        u8 auth_mode;
+        u8 prwise_crypto;
+        u8 prwise_crypto_len;
+        u8 grp_crypto;
+        u8 grp_crpto_len;
+        u8 def_txkey_index;
+        u32 used_key_entries;   //each bit represent an entry, 0: avail 1: used
+
+        u8 bssid[ETH_ALEN];
+        u8 req_bssid[ETH_ALEN];
+        u16 ch_hint;
+        u16 bss_ch;
+        u16 listen_intvl_b;
+        u16 listen_intvl_t;
+
+        //struct hw_scan_timeout *hsd;
+        struct cfg80211_scan_request *scan_req;
+       atomic_t ptk_cnt;
+       atomic_t gtk_cnt;
+       atomic_t tkip_key_set;
+        //struct ieee80211_key_conf *ptk;
+        //struct ieee80211_key_conf *gtk[4];
+
+        struct list_head amsdu_rx_buffer_queue;
+        struct timer_list disconnect_timer;
+
+        /* so far only 2G band */
+        struct ieee80211_supported_band sbands[IEEE80211_NUM_BANDS];
+
+        unsigned long flags;
+        atomic_t off;
+} esp_wl_t;
+
+typedef struct esp_hw_idx_map {
+       u8 mac[ETH_ALEN];
+       u8 flag;
+} esp_hw_idx_map_t;
+
+#define ESP_TXQ_MAX_LEN 64 /* TBD: better #? */
+#define ESP_PUB_F_TXPAUSE  0x1
+
+#define ESP_WL_FLAG_RFKILL                     BIT(0)
+#define ESP_WL_FLAG_HW_REGISTERED              BIT(1)
+#define ESP_WL_FLAG_CONNECT                            BIT(2)
+#define ESP_WL_FLAG_STOP_TXQ                   BIT(3)
+
+#define ESP_PUB_MAX_VIF                2
+#define ESP_PUB_MAX_STA                4 //for one interface
+
+enum {
+        ESP_PM_OFF = 0,
+        ESP_PM_TURNING_ON,
+        ESP_PM_ON,
+        ESP_PM_TURNING_OFF,  /* Do NOT change the order */
+};
+
+struct esp_ps {
+       u32 dtim_period;
+       u32 max_sleep_period;
+       unsigned long last_config_time;
+        atomic_t state;
+        bool nulldata_pm_on;
+};
+
+struct esp_pub {
+        struct device *dev;
+#ifdef ESP_NO_MAC80211
+        struct net_device *net_dev;
+        struct wireless_dev *wdev;
+        struct net_device_stats *net_stats;
+#else
+        struct ieee80211_hw *hw;
+        struct ieee80211_vif *vif;
+        u8 vif_slot;
+#endif /* ESP_MAC80211 */
+
+        void *sif; /* serial interface control block, e.g. sdio */
+        enum esp_sdio_state sdio_state;
+        struct esp_sip *sip;
+        struct esp_wl wl;
+        struct esp_hw_idx_map hi_map[19];
+        struct esp_hw_idx_map low_map[ESP_PUB_MAX_VIF][2];
+        u32 flags; //flags to represent rfkill switch,start
+        u8 roc_flags;   //0: not in remain on channel state, 1: in roc state
+
+        struct work_struct tx_work; /* attach to ieee80211 workqueue */
+        /* latest mac80211 has multiple tx queue, but we stick with single queue now */
+        spinlock_t rx_lock;
+        spinlock_t tx_ampdu_lock;
+       spinlock_t tx_lock;
+        struct mutex tx_mtx;
+        struct sk_buff_head txq;
+        atomic_t txq_stopped;
+
+        struct work_struct sendup_work; /* attach to ieee80211 workqueue */
+        struct sk_buff_head txdoneq;
+        struct sk_buff_head rxq;
+
+        struct workqueue_struct *esp_wkq;
+
+        u8 bssid[ETH_ALEN];
+        u8 mac_addr[ETH_ALEN];
+
+        u32 rx_filter;
+        unsigned long scan_permit;
+        bool scan_permit_valid;
+        struct delayed_work scan_timeout_work;
+       u8 enodes_map;
+       u8 enodes_maps[ESP_PUB_MAX_VIF];
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 28))
+        struct esp_node nodes[ESP_PUB_MAX_STA + 1];
+#endif
+        struct esp_node * enodes[ESP_PUB_MAX_STA + 1];
+       struct esp_ps ps;
+};
+
+typedef struct esp_pub esp_pub_t;
+
+struct esp_pub *esp_pub_alloc_mac80211(struct device *dev);
+int esp_pub_dealloc_mac80211(struct esp_pub  *epub);
+int esp_register_mac80211(struct esp_pub *epub);
+
+int esp_pub_init_all(struct esp_pub *epub);
+
+char *mod_eagle_path_get(void);
+
+void esp_dsr(struct esp_pub *epub);
+void hw_scan_done(struct esp_pub *epub, bool aborted);
+void esp_rocdone_process(struct ieee80211_hw *hw, struct sip_evt_roc *report);
+
+void esp_ps_config(struct esp_pub *epub, struct esp_ps *ps, bool on);
+
+
+void esp_register_early_suspend(void);
+void esp_unregister_early_suspend(void);
+void esp_wakelock_init(void);
+void esp_wakelock_destroy(void);
+void esp_wake_lock(void);
+void esp_wake_unlock(void);
+struct esp_node * esp_get_node_by_addr(struct esp_pub * epub, const u8 *addr);
+
+#ifdef TEST_MODE
+int test_init_netlink(struct esp_sip *sip);
+void test_exit_netlink(void);
+void esp_test_cmd_event(u32 cmd_type, char *reply_info);
+#endif
+#endif /* _ESP_PUB_H_ */
diff --git a/drivers/net/wireless/rockchip_wlan/esp8089/esp_sif.h b/drivers/net/wireless/rockchip_wlan/esp8089/esp_sif.h
new file mode 100755 (executable)
index 0000000..940cecf
--- /dev/null
@@ -0,0 +1,274 @@
+/*
+ * Copyright (c) 2011 - 2013 Espressif System.
+ *
+ *   Serial I/F wrapper layer for eagle WLAN device,
+ *    abstraction of buses like SDIO/SIP, and provides
+ *    flow control for tx/rx layer
+ *
+ */
+
+#ifndef _ESP_SIF_H_
+#define _ESP_SIF_H_
+
+#include "esp_pub.h"
+#include <linux/mmc/host.h>
+#include <linux/spi/spi.h>
+
+/*
+ *  H/W SLC module definitions
+ */
+
+#define SIF_SLC_BLOCK_SIZE                512
+
+#define SIF_DMA_BUFFER_SIZE (64 * 1024)
+
+/* to make the last byte located at :xffff, increase 1 byte here */
+//#define SIF_SLC_WINDOW_END_ADDR  (0xffff + 1)
+//#define SIF_SLC_WINDOW_END_ADDR  (0x1ffff + 1 - 0x800)
+
+#define SIF_MAX_SCATTER_REQUESTS             4
+#define SIF_MAX_SCATTER_ENTRIES_PER_REQ      16
+#define SIF_MAX_SCATTER_REQ_TRANSFER_SIZE    (32 * 1024)
+
+
+/* SIF bus request */
+#define SIF_REQ_MAX_NUM                64
+
+/* S/W struct mapping to slc registers */
+typedef struct slc_host_regs {
+        /* do NOT read token_rdata
+         *
+                u32 pf_data;
+                u32 token_rdata;
+        */
+        u32 intr_raw;
+        u32 state_w0;
+        u32 state_w1;
+        u32 config_w0;
+        u32 config_w1;
+        u32 intr_status;
+        u32 config_w2;
+        u32 config_w3;
+        u32 config_w4;
+        u32 token_wdata;
+        u32 intr_clear;
+        u32 intr_enable;
+} sif_slc_reg_t;
+
+
+struct sif_req {
+        struct list_head list;
+
+        u32 address;
+
+        u8 *buffer;
+        u32 length;
+        u32 flag;
+        int status;
+        void * context;
+};
+
+enum io_sync_type {    
+       ESP_SIF_NOSYNC = 0,
+       ESP_SIF_SYNC, 
+};
+
+#ifdef ESP_USE_SDIO
+typedef struct esp_sdio_ctrl {
+        struct sdio_func *func;
+#else
+typedef struct esp_spi_ctrl {
+        struct spi_device *spi;
+#endif
+        struct esp_pub *epub;
+
+
+        struct list_head free_req;
+        struct sif_req reqs[SIF_REQ_MAX_NUM];
+
+        u8 *dma_buffer;
+
+        spinlock_t scat_lock;
+        struct list_head scat_req;
+
+        bool off;
+        atomic_t irq_handling;
+#ifdef ESP_USE_SDIO
+        const struct sdio_device_id *id;
+#else
+        const struct spi_device_id *id;
+#endif
+        u32 slc_blk_sz;
+        u32 target_id;
+        u32 slc_window_end_addr;
+
+        struct slc_host_regs slc_regs;
+        atomic_t       irq_installed;
+
+#ifdef ESP_USE_SDIO
+} esp_sdio_ctrl_t;
+#else
+} esp_spi_ctrl_t;
+#endif
+
+#define SIF_TO_DEVICE                    0x1
+#define SIF_FROM_DEVICE                    0x2
+
+#define SIF_SYNC             0x00000010
+#define SIF_ASYNC           0x00000020
+
+#define SIF_BYTE_BASIS              0x00000040
+#define SIF_BLOCK_BASIS             0x00000080
+
+#define SIF_FIXED_ADDR           0x00000100
+#define SIF_INC_ADDR     0x00000200
+
+#ifdef ESP_USE_SDIO
+#define EPUB_CTRL_CHECK(_epub) do{\
+ASSERT((_epub) != NULL);\
+ASSERT((_epub)->sif != NULL);\
+}while(0)
+
+#define EPUB_FUNC_CHECK(_epub) do{\
+ASSERT((_epub) != NULL);\
+ASSERT((_epub)->sif != NULL);\
+ASSERT(((struct esp_sdio_ctrl *)(_epub)->sif)->func != NULL);\
+}while(0)
+
+#define EPUB_TO_CTRL(_epub) (((struct esp_sdio_ctrl *)(_epub)->sif))
+
+#define EPUB_TO_FUNC(_epub) (((struct esp_sdio_ctrl *)(_epub)->sif)->func)
+#endif
+
+
+#ifdef ESP_USE_SPI
+#define EPUB_CTRL_CHECK(_epub) do{\
+ASSERT((_epub) != NULL);\
+ASSERT((_epub)->sif != NULL);\
+}while(0)
+
+#define EPUB_FUNC_CHECK(_epub) do{\
+ASSERT((_epub) != NULL);\
+ASSERT((_epub)->sif != NULL);\
+ASSERT(((struct esp_spi_ctrl *)(_epub)->sif)->spi != NULL);\
+}while(0)
+
+#define EPUB_TO_CTRL(_epub) (((struct esp_spi_ctrl *)(_epub)->sif))
+
+#define EPUB_TO_FUNC(_epub) (((struct esp_spi_ctrl *)(_epub)->sif)->spi)
+#endif
+
+static void inline sif_setup_req(struct sif_req *req, u32 addr, u32 flag, u32 len,
+                                 u8 * buf, void *context)
+{
+        req->address = addr;
+        req->flag = flag;
+        req->length = len;
+        req->buffer = buf;
+        req->context = context;
+}
+
+void sdio_io_writeb(struct esp_pub *epub, u8 value, int addr, int *res);
+u8 sdio_io_readb(struct esp_pub *epub, int addr, int *res);
+
+
+void sif_enable_irq(struct esp_pub *epub);
+void sif_disable_irq(struct esp_pub *epub);
+void sif_disable_target_interrupt(struct esp_pub *epub);
+
+u32 sif_get_blksz(struct esp_pub *epub);
+u32 sif_get_target_id(struct esp_pub *epub);
+
+#ifdef ESP_USE_SDIO
+void sif_dsr(struct sdio_func *func);
+int sif_io_raw(struct esp_pub *epub, u32 addr, u8 *buf, u32 len, u32 flag);
+int sif_io_sync(struct esp_pub *epub, u32 addr, u8 *buf, u32 len, u32 flag);
+int sif_io_async(struct esp_pub *epub, u32 addr, u8 *buf, u32 len, u32 flag, void * context);
+int sif_lldesc_read_sync(struct esp_pub *epub, u8 *buf, u32 len);
+int sif_lldesc_write_sync(struct esp_pub *epub, u8 *buf, u32 len);
+int sif_lldesc_read_raw(struct esp_pub *epub, u8 *buf, u32 len, bool noround);
+int sif_lldesc_write_raw(struct esp_pub *epub, u8 *buf, u32 len);
+void sif_platform_check_r1_ready(struct esp_pub *epub);
+#endif 
+
+#ifdef ESP_USE_SPI
+enum if_check_idle {
+       NOT_CHECK_IDLE = 0,
+       CHECK_IDLE,
+};
+
+#ifdef REGISTER_SPI_BOARD_INFO
+void sif_platform_register_board_info(void);
+#endif
+
+void sif_dsr(struct spi_device *spi);
+int sif_spi_read_mix_nosync(struct spi_device *spi, unsigned int addr, unsigned char *buf, int len, int check_idle);
+int sif_spi_epub_read_mix_sync(struct esp_pub *epub, unsigned int addr,unsigned char *buf, int len, int check_idle);
+int sif_spi_epub_read_mix_nosync(struct esp_pub *epub, unsigned int addr,unsigned char *buf, int len, int check_idle);
+int sif_spi_read_sync(struct esp_pub *epub, unsigned char *buf, int len, int check_idle);
+int sif_spi_read_nosync(struct esp_pub *epub, unsigned char *buf, int len, int check_idle, bool noround);
+
+int sif_spi_write_mix_nosync(struct spi_device *spi, unsigned int addr, unsigned char *buf, int len, int check_idle);
+int sif_spi_epub_write_mix_sync(struct esp_pub *epub, unsigned int addr,unsigned char *buf, int len, int check_idle);
+int sif_spi_epub_write_mix_nosync(struct esp_pub *epub, unsigned int addr,unsigned char *buf, int len, int check_idle);
+int sif_spi_write_sync(struct esp_pub *epub, unsigned char *buf, int len, int check_idle);
+int sif_spi_write_nosync(struct esp_pub *epub, unsigned char *buf, int len, int check_idle);
+
+int sif_platform_get_irq_no(void);
+int sif_platform_is_irq_occur(void);
+void sif_platform_irq_clear(void);
+void sif_platform_irq_mask(int enable_mask);
+int sif_platform_irq_init(void);
+void sif_platform_irq_deinit(void);
+#endif
+
+int esp_common_read(struct esp_pub *epub, u8 *buf, u32 len, int sync, bool noround);
+int esp_common_write(struct esp_pub *epub, u8 *buf, u32 len, int sync);
+int esp_common_read_with_addr(struct esp_pub *epub, u32 addr, u8 *buf, u32 len, int sync);
+int esp_common_write_with_addr(struct esp_pub *epub, u32 addr, u8 *buf, u32 len, int sync);
+
+int esp_common_readbyte_with_addr(struct esp_pub *epub, u32 addr, u8 *buf, int sync);
+int esp_common_writebyte_with_addr(struct esp_pub *epub, u32 addr, u8 buf, int sync);
+
+struct slc_host_regs * sif_get_regs(struct esp_pub *epub);
+
+void sif_lock_bus(struct esp_pub *epub);
+void sif_unlock_bus(struct esp_pub *epub);
+
+void sif_platform_target_poweroff(void);
+void sif_platform_target_poweron(void);
+void sif_platform_target_speed(int high_speed);
+
+void sif_platform_reset_target(void);
+void sif_platform_rescan_card(unsigned insert);
+
+int sif_interrupt_target(struct esp_pub *epub, u8 index);
+#ifdef USE_EXT_GPIO
+int sif_config_gpio_mode(struct esp_pub *epub, u8 gpio_num, u8 gpio_mode);
+int sif_set_gpio_output(struct esp_pub *epub, u16 mask, u16 value);
+int sif_get_gpio_intr(struct esp_pub *epub, u16 intr_mask, u16 *value);
+int sif_get_gpio_input(struct esp_pub *epub, u16 *mask, u16 *value);
+#endif
+
+void sif_raw_dummy_read(struct esp_pub *epub);
+void check_target_id(struct esp_pub *epub);
+
+void sif_record_bt_config(int value);
+int sif_get_bt_config(void);
+void sif_record_rst_config(int value);
+int sif_get_rst_config(void);
+void sif_record_retry_config(void);
+int sif_get_retry_config(void);
+void sif_record_wakeup_gpio_config(int value);
+int sif_get_wakeup_gpio_config(void);
+
+#ifdef ESP_ACK_INTERRUPT
+//extern void sif_platform_ack_interrupt(struct mmc_host *mmc);
+extern void sif_platform_ack_interrupt(struct esp_pub *epub);
+#endif //ESP_ACK_INTERRUPT
+
+#define sif_reg_read_sync(epub, addr, buf, len) sif_io_sync((epub), (addr), (buf), (len), SIF_FROM_DEVICE | SIF_BYTE_BASIS | SIF_INC_ADDR)
+
+#define sif_reg_write_sync(epub, addr, buf, len) sif_io_sync((epub), (addr), (buf), (len), SIF_TO_DEVICE | SIF_BYTE_BASIS | SIF_INC_ADDR)
+
+#endif /* _ESP_SIF_H_ */
diff --git a/drivers/net/wireless/rockchip_wlan/esp8089/esp_sip.c b/drivers/net/wireless/rockchip_wlan/esp8089/esp_sip.c
new file mode 100755 (executable)
index 0000000..35ec99d
--- /dev/null
@@ -0,0 +1,2354 @@
+/*
+ * Copyright (c) 2009 - 2013 Espressif System.
+ */
+
+#include <linux/ieee80211.h>
+#include <net/mac80211.h>
+#include <net/cfg80211.h>
+#include <linux/skbuff.h>
+#include <linux/bitops.h>
+#include <linux/version.h>
+#include <linux/mmc/card.h>
+#include <linux/mmc/mmc.h>
+#include <linux/mmc/host.h>
+#include <linux/mmc/sdio_func.h>
+#include <linux/mmc/sdio_ids.h>
+#include <linux/mmc/sdio.h>
+#include <linux/mmc/sd.h>
+#include <linux/completion.h> 
+
+#include "esp_pub.h"
+#include "esp_sip.h"
+#include "esp_ctrl.h"
+#include "esp_sif.h"
+#include "esp_debug.h"
+#include "slc_host_register.h"
+#include "esp_wmac.h"
+#include "esp_utils.h"
+#ifdef TEST_MODE
+#include "testmode.h"
+#endif
+
+#ifdef USE_EXT_GPIO
+#include "esp_ext.h"
+#endif /* USE_EXT_GPIO */
+
+extern struct completion *gl_bootup_cplx; 
+static u32 bcn_counter = 0;
+static u32 probe_rsp_counter = 0;
+
+#define TID_TO_AC(_tid) ((_tid)== 0||((_tid)==3)?WME_AC_BE:((_tid)<3)?WME_AC_BK:((_tid)<6)?WME_AC_VI:WME_AC_VO)
+
+#ifdef SIP_DEBUG
+#define esp_sip_dbg esp_dbg
+struct sip_trace {
+        u32 tx_data;
+        u32 tx_cmd;
+        u32 rx_data;
+        u32 rx_evt;
+        u32 rx_tx_status;
+        u32 tx_out_of_credit;
+        u32 tx_one_shot_overflow;
+};
+static struct sip_trace str;
+#define STRACE_TX_DATA_INC() (str.tx_data++)
+#define STRACE_TX_CMD_INC()  (str.tx_cmd++)
+#define STRACE_RX_DATA_INC() (str.rx_data++)
+#define STRACE_RX_EVENT_INC() (str.rx_evt++)
+#define STRACE_RX_TXSTATUS_INC() (str.rx_tx_status++)
+#define STRACE_TX_OUT_OF_CREDIT_INC() (str.tx_out_of_credit++)
+#define STRACE_TX_ONE_SHOT_INC() (str.tx_one_shot_overflow++)
+
+#if 0
+static void sip_show_trace(struct esp_sip *sip);
+#endif //0000
+
+#define STRACE_SHOW(sip)  sip_show_trace(sip)
+#else
+#define esp_sip_dbg(...)
+#define STRACE_TX_DATA_INC()
+#define STRACE_TX_CMD_INC()
+#define STRACE_RX_DATA_INC()
+#define STRACE_RX_EVENT_INC()
+#define STRACE_RX_TXSTATUS_INC()
+#define STRACE_TX_OUT_OF_CREDIT_INC()
+#define STRACE_TX_ONE_SHOT_INC()
+#define STRACE_SHOW(sip)
+#endif /* SIP_DEBUG */
+
+#define SIP_STOP_QUEUE_THRESHOLD 48
+#define SIP_RESUME_QUEUE_THRESHOLD  12
+#ifndef FAST_TX_STATUS
+#define SIP_PENDING_STOP_TX_THRESHOLD 6
+#define SIP_PENDING_RESUME_TX_THRESHOLD 6
+#endif /* !FAST_TX_STATUS */
+
+#define SIP_MIN_DATA_PKT_LEN    (sizeof(struct esp_mac_rx_ctrl) + 24) //24 is min 80211hdr
+#define TARGET_RX_SIZE 524
+
+static struct sip_pkt *sip_get_ctrl_buf(struct esp_sip *sip, SIP_BUF_TYPE bftype);
+
+static void sip_reclaim_ctrl_buf(struct esp_sip *sip, struct sip_pkt *pkt, SIP_BUF_TYPE bftype);
+
+static void sip_free_init_ctrl_buf(struct esp_sip *sip);
+
+static void sip_dec_credit(struct esp_sip *sip);
+
+
+static int sip_pack_pkt(struct esp_sip *sip, struct sk_buff *skb, int *pm_state);
+
+static struct esp_mac_rx_ctrl *sip_parse_normal_mac_ctrl(struct sk_buff *skb, int * pkt_len_enc, int *buf_len, int *pulled_len);
+
+static struct sk_buff * sip_parse_data_rx_info(struct esp_sip *sip, struct sk_buff *skb, int pkt_len_enc, int buf_len, struct esp_mac_rx_ctrl *mac_ctrl, int *pulled_len);
+
+#ifndef RX_SYNC
+static inline void sip_rx_pkt_enqueue(struct esp_sip *sip, struct sk_buff *skb);
+
+static inline struct sk_buff * sip_rx_pkt_dequeue(struct esp_sip *sip);
+#endif /* RX_SYNC */
+#ifndef FAST_TX_STATUS
+static void sip_after_tx_status_update(struct esp_sip *sip);
+#endif /* !FAST_TX_STATUS */
+
+static void sip_after_write_pkts(struct esp_sip *sip);
+
+//static void show_data_seq(u8 *pkt);
+
+static void sip_update_tx_credits(struct esp_sip *sip, u16 recycled_credits);
+
+//static void sip_trigger_txq_process(struct esp_sip *sip);
+
+#ifndef RX_SYNC
+static bool sip_rx_pkt_process(struct esp_sip * sip, struct sk_buff *skb);
+#else
+static void sip_rx_pkt_process_sync(struct esp_sip *sip, struct sk_buff *skb);
+#endif /* RX_SYNC */
+
+#ifdef FAST_TX_STATUS
+static void sip_tx_status_report(struct esp_sip *sip, struct sk_buff *skb, struct ieee80211_tx_info* tx_info, bool success);
+#endif /* FAST_TX_STATUS */
+
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 35))
+static void sip_check_skb_alignment(struct sk_buff *skb);
+#endif /* NEW_KERNEL */
+
+#ifdef ESP_RX_COPYBACK_TEST
+/* only for rx test */
+static u8 *copyback_buf;
+static u32 copyback_offset = 0;
+#endif /* ESP_RX_COPYBACK_TEST */
+
+#ifdef FPGA_TXDATA
+int sip_send_tx_data(struct esp_sip *sip);
+#endif/* FPGA_TXDATA */
+
+#ifdef FPGA_LOOPBACK
+int sip_send_loopback_cmd_mblk(struct esp_sip *sip);
+#endif /* FPGA_LOOPBACK */
+
+#ifdef SIP_DEBUG
+#if 0
+static void sip_show_trace(struct esp_sip *sip)
+{
+        esp_sip_dbg(ESP_DBG_TRACE, "\n \t tx_data %u \t tx_cmd %u \t rx_data %u \t rx_evt %u \t rx_tx_status %u \n\n", \
+                    str.tx_data, str.tx_cmd, str.rx_data, str.rx_evt, str.rx_tx_status);
+}
+#endif //0000
+#endif //SIP_DEBUG
+
+#if 0
+static void show_data_seq(u8 *pkt)
+{
+        struct ieee80211_hdr * wh = (struct ieee80211_hdr *)pkt;
+        u16 seq = 0;
+
+        if (ieee80211_is_data(wh->frame_control)) {
+                seq = (le16_to_cpu(wh->seq_ctrl) >> 4);
+                esp_sip_dbg(ESP_DBG_TRACE, " ieee80211 seq %u addr1 %pM\n", seq, wh->addr1);
+        } else if (ieee80211_is_beacon(wh->frame_control) || ieee80211_is_probe_resp(wh->frame_control))
+                esp_sip_dbg(ESP_DBG_TRACE, " ieee80211 probe resp or beacon 0x%04x\n", wh->frame_control);
+        else
+                esp_sip_dbg(ESP_DBG_TRACE, " ieee80211 other mgmt pkt 0x%04x\n", wh->frame_control);
+}
+#endif //0000
+
+//#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 35))
+static bool check_ac_tid(u8 *pkt, u8 ac, u8 tid)
+{
+        struct ieee80211_hdr * wh = (struct ieee80211_hdr *)pkt;
+#ifdef TID_DEBUG
+        u16 real_tid = 0;
+#endif //TID_DEBUG
+
+        if (ieee80211_is_data_qos(wh->frame_control)) {
+#ifdef TID_DEBUG
+               real_tid = *ieee80211_get_qos_ctl(wh) & IEEE80211_QOS_CTL_TID_MASK;
+
+                esp_sip_dbg(ESP_SHOW, "ac:%u, tid:%u, tid in pkt:%u\n", ac, tid, real_tid);
+                if (tid != real_tid) {
+                        esp_sip_dbg(ESP_DBG_ERROR, "111 ac:%u, tid:%u, tid in pkt:%u\n", ac, tid, real_tid);
+                }
+                if (TID_TO_AC(tid) != ac) {
+                        esp_sip_dbg(ESP_DBG_ERROR, "222 ac:%u, tid:%u, tid in pkt:%u\n", ac, tid, real_tid);
+                }
+
+                //ASSERT(tid == real_tid);
+                //ASSERT(TID_TO_AC(tid) == ac);
+#endif /* TID_DEBUG*/
+        } else if (ieee80211_is_mgmt(wh->frame_control)) {
+#ifdef TID_DEBUG
+                esp_sip_dbg(ESP_SHOW, "ac:%u, tid:%u\n", ac, tid);
+                if (tid != 7 || ac != WME_AC_VO) {
+                        esp_sip_dbg(ESP_DBG_ERROR, "333 ac:%u, tid:%u\n", ac, tid);
+                }
+                //ASSERT(tid == 7);
+                //ASSERT(ac == WME_AC_VO);
+#endif /* TID_DEBUG*/
+        } else {
+                if (ieee80211_is_ctl(wh->frame_control)) {
+#ifdef TID_DEBUG
+                        esp_sip_dbg(ESP_SHOW, "%s is ctrl pkt fc 0x%04x ac:%u, tid:%u, tid in pkt:%u\n", __func__, wh->frame_control, ac, tid, real_tid);
+#endif /* TID_DEBUG*/
+                } else {
+                        if (tid != 0 || ac != WME_AC_BE) {
+                                //show_buf(pkt, 24);
+                                esp_sip_dbg(ESP_DBG_LOG, "444 ac:%u, tid:%u \n", ac, tid);
+                                if (tid == 7 && ac == WME_AC_VO)
+                                        return false;
+                        }
+                        return true; //hack to modify non-qos null data.
+
+                }
+                //ASSERT(tid == 0);
+                //ASSERT(ac = WME_AC_BE);
+        }
+
+        return false;
+}
+//#endif /* NEW_KERNEL || KERNEL_35 */
+
+static void sip_update_tx_credits(struct esp_sip *sip, u16 recycled_credits)
+{
+        esp_sip_dbg(ESP_DBG_TRACE, "%s:before add, credits is %d\n", __func__, atomic_read(&sip->tx_credits));
+        atomic_add(recycled_credits, &sip->tx_credits);
+        esp_sip_dbg(ESP_DBG_TRACE, "%s:after add %d, credits is %d\n", __func__, recycled_credits, atomic_read(&sip->tx_credits));
+}
+
+void sip_trigger_txq_process(struct esp_sip *sip)
+{
+        if (atomic_read(&sip->tx_credits) <= sip->credit_to_reserve)  //no credits, do nothing
+                return;
+
+        if (sip_queue_may_resume(sip)) {
+                /* wakeup upper queue only if we have sufficient credits */
+                esp_sip_dbg(ESP_DBG_TRACE, "%s wakeup ieee80211 txq \n", __func__);
+                atomic_set(&sip->epub->txq_stopped, false);
+                ieee80211_wake_queues(sip->epub->hw);
+        } else if (atomic_read(&sip->epub->txq_stopped) ) {
+                esp_sip_dbg(ESP_DBG_TRACE, "%s can't wake txq, credits: %d \n", __func__, atomic_read(&sip->tx_credits) );
+        }
+
+        if (!skb_queue_empty(&sip->epub->txq)) {
+                /* try to send out pkt already in sip queue once we have credits */
+                esp_sip_dbg(ESP_DBG_TRACE, "%s resume sip txq \n", __func__);
+#if !defined(FPGA_LOOPBACK) && !defined(FPGA_TXDATA) && (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 32))
+                ieee80211_queue_work(sip->epub->hw, &sip->epub->tx_work);
+#else
+                queue_work(sip->epub->esp_wkq, &sip->epub->tx_work);
+#endif
+        }
+}
+
+static bool sip_ampdu_occupy_buf(struct esp_sip *sip, struct esp_rx_ampdu_len * ampdu_len)
+{
+        return (ampdu_len->substate == 0 || esp_wmac_rxsec_error(ampdu_len->substate) || (sip->dump_rpbm_err && ampdu_len->substate == RX_RPBM_ERR));
+}
+
+#ifdef RX_SYNC
+static void sip_rx_pkt_process_sync(struct esp_sip *sip, struct sk_buff *skb)
+#else
+static bool sip_rx_pkt_process(struct esp_sip * sip, struct sk_buff *skb)
+#endif /* RX_SYNC */
+{
+#define DO_NOT_COPY false
+#define DO_COPY true
+
+       struct sip_hdr * hdr = NULL;
+       struct sk_buff * rskb = NULL;
+       int remains_len = 0;
+       int first_pkt_len = 0;
+       u8 *bufptr = NULL;
+       int ret = 0;
+       bool trigger_rxq = false;
+#ifdef RX_SYNC
+       bool trigger_txq = false;
+#endif/* RX_SYNC */
+
+       if (skb == NULL) {
+               esp_sip_dbg(ESP_DBG_ERROR, "%s NULL SKB!!!!!!!! \n", __func__);
+#ifdef RX_SYNC
+               return;
+#else
+               return trigger_rxq;
+#endif /* RX_SYNC */
+       }
+
+       hdr = (struct sip_hdr *)skb->data;
+       bufptr = skb->data;
+
+
+       esp_sip_dbg(ESP_DBG_TRACE, "%s Hcredits 0x%08x, realCredits %d\n", __func__, hdr->h_credits, hdr->h_credits & SIP_CREDITS_MASK);
+       if (hdr->h_credits & SIP_CREDITS_MASK) {
+               sip_update_tx_credits(sip, hdr->h_credits & SIP_CREDITS_MASK);
+#ifdef RX_SYNC
+               trigger_txq = true;
+#endif/* RX_SYNC */
+       }
+
+       hdr->h_credits &= ~SIP_CREDITS_MASK; /* clean credits in sip_hdr, prevent over-add */
+
+       esp_sip_dbg(ESP_DBG_TRACE, "%s credits %d\n", __func__, hdr->h_credits);
+
+       /*
+        * first pkt's length is stored in  recycled_credits first 20 bits
+        * config w3 [31:12]
+        * repair hdr->len of first pkt
+        */
+       remains_len = hdr->len;
+       first_pkt_len = hdr->h_credits >> 12;
+       hdr->len = first_pkt_len;
+
+       esp_dbg(ESP_DBG_TRACE, "%s first_pkt_len %d, whole pkt len %d \n", __func__, first_pkt_len, remains_len);
+       if (first_pkt_len > remains_len) {
+               printk("first_pkt_len %d, whole pkt len %d\n", first_pkt_len, remains_len);
+               show_buf((u8 *)hdr, first_pkt_len);
+               ASSERT(0);
+       }
+
+       /*
+        * pkts handling, including the first pkt, should alloc new skb for each data pkt.
+        * free the original whole skb after parsing is done.
+        */
+       while (remains_len) {
+               ASSERT(remains_len >= sizeof(struct sip_hdr));
+               hdr = (struct sip_hdr *)bufptr;
+               ASSERT(hdr->len > 0);
+               if((hdr->len & 3) != 0) {
+                       show_buf((u8 *)hdr, 512);
+               }
+               ASSERT((hdr->len & 3) == 0);
+               if (unlikely(hdr->seq != sip->rxseq++)) {
+                       esp_dbg(ESP_DBG_ERROR, "%s seq mismatch! got %u, expect %u\n", __func__, hdr->seq, sip->rxseq-1);
+                       show_buf(bufptr, 32);
+                       ASSERT(0);
+               }
+
+               if (SIP_HDR_IS_CTRL(hdr)) {
+                       STRACE_RX_EVENT_INC();
+                       esp_sip_dbg(ESP_DBG_TRACE, "seq %u \n", hdr->seq);
+
+                       ret = sip_parse_events(sip, bufptr);
+
+                       skb_pull(skb, hdr->len);
+
+               } else if (SIP_HDR_IS_DATA(hdr)) {
+                       struct esp_mac_rx_ctrl * mac_ctrl = NULL;
+                       int pkt_len_enc = 0, buf_len = 0, pulled_len = 0;
+
+                       STRACE_RX_DATA_INC();
+                       esp_sip_dbg(ESP_DBG_TRACE, "seq %u \n", hdr->seq);
+                       mac_ctrl = sip_parse_normal_mac_ctrl(skb, &pkt_len_enc, &buf_len, &pulled_len);
+                       rskb = sip_parse_data_rx_info(sip, skb, pkt_len_enc, buf_len, mac_ctrl, &pulled_len);
+
+                       if(rskb == NULL)
+                               goto _move_on;
+
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 35))
+                       sip_check_skb_alignment(rskb);
+#endif /* !NEW_KERNEL */
+                       if (likely(atomic_read(&sip->epub->wl.off) == 0)) {
+#ifndef RX_SENDUP_SYNC
+                               skb_queue_tail(&sip->epub->rxq, rskb);
+                               trigger_rxq = true;
+#else
+#ifdef RX_CHECKSUM_TEST
+                               esp_rx_checksum_test(rskb);
+#endif
+                               local_bh_disable();
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 32))
+                               ieee80211_rx(sip->epub->hw, rskb);
+#else
+                //simulate IEEE80211_SKB_RXCB in 2.6.32 
+                ieee80211_rx(sip->epub->hw, rskb ,(struct ieee80211_rx_status *)rskb->cb);
+#endif
+                               local_bh_enable();
+#endif /* RX_SENDUP_SYNC */
+                       } else {
+                               /* still need go thro parsing as skb_pull should invoke */
+                               kfree_skb(rskb);
+                       }
+               } else if (SIP_HDR_IS_AMPDU(hdr)) {
+                       struct esp_mac_rx_ctrl * mac_ctrl = NULL;
+                       struct esp_mac_rx_ctrl new_mac_ctrl;
+                       struct esp_rx_ampdu_len *ampdu_len;
+                       int pkt_num;
+                       int pulled_len = 0;
+                       static int pkt_dropped = 0;
+                       static int pkt_total = 0;
+                       bool have_rxabort = false;
+                       bool have_goodpkt = false;
+                       static u8 frame_head[16];
+                       static u8 frame_buf_ttl = 0;
+
+                       ampdu_len = (struct esp_rx_ampdu_len *)(skb->data + hdr->len/sip->rx_blksz * sip->rx_blksz);
+                       esp_sip_dbg(ESP_DBG_TRACE, "%s rx ampdu total len %u\n", __func__, hdr->len);
+                       if(skb->data != (u8 *)hdr) {
+                               printk("%p %p\n", skb->data, hdr);
+                               show_buf(skb->data, 512);
+                               show_buf((u8 *)hdr, 512);
+                       }
+                       ASSERT(skb->data == (u8 *)hdr);
+                       mac_ctrl = sip_parse_normal_mac_ctrl(skb, NULL, NULL, &pulled_len);
+                       memcpy(&new_mac_ctrl, mac_ctrl, sizeof(struct esp_mac_rx_ctrl));
+                       mac_ctrl = &new_mac_ctrl;
+                       pkt_num = mac_ctrl->ampdu_cnt;
+                       esp_sip_dbg(ESP_DBG_TRACE, "%s %d rx ampdu %u pkts, %d pkts dumped, first len %u\n",
+                                       __func__, __LINE__, (unsigned int)((hdr->len % sip->rx_blksz) / sizeof(struct esp_rx_ampdu_len)), pkt_num, (unsigned int)ampdu_len->sublen);
+
+                       pkt_total += mac_ctrl->ampdu_cnt;
+                       //esp_sip_dbg(ESP_DBG_ERROR, "%s ampdu dropped %d/%d\n", __func__, pkt_dropped, pkt_total);
+                       while (pkt_num > 0) {
+                               esp_sip_dbg(ESP_DBG_TRACE, "%s %d ampdu sub state %02x,\n", __func__, __LINE__, ampdu_len->substate);
+
+                               if (sip_ampdu_occupy_buf(sip, ampdu_len)) { //pkt is dumped
+
+                                       rskb = sip_parse_data_rx_info(sip, skb, ampdu_len->sublen - FCS_LEN, 0, mac_ctrl, &pulled_len);
+                                       assert(rskb != NULL);
+
+                                       if (likely(atomic_read(&sip->epub->wl.off) == 0) &&
+                                                       (ampdu_len->substate == 0 || ampdu_len->substate == RX_TKIPMIC_ERR ||
+                                                        (sip->sendup_rpbm_pkt && ampdu_len->substate == RX_RPBM_ERR)) &&
+                                                       (sip->rxabort_fixed || !have_rxabort) ) 
+                                       {
+                                               if(!have_goodpkt) {
+                                                       have_goodpkt = true;
+                                                       memcpy(frame_head, rskb->data, 16);
+                                                       frame_head[1] &= ~0x80;
+                                                       frame_buf_ttl = 3;
+                                               }
+#ifndef RX_SENDUP_SYNC
+                                               skb_queue_tail(&sip->epub->rxq, rskb);
+                                               trigger_rxq = true;
+#else
+#ifdef RX_CHECKSUM_TEST
+                                               esp_rx_checksum_test(rskb);
+#endif
+                                               local_bh_disable();
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 32))
+                               ieee80211_rx(sip->epub->hw, rskb);
+#else
+                //simulate IEEE80211_SKB_RXCB in 2.6.32 
+                ieee80211_rx(sip->epub->hw, rskb ,(struct ieee80211_rx_status *)rskb->cb);
+#endif
+                                               local_bh_enable();
+#endif /* RX_SENDUP_SYNC */
+
+                                       } else {
+                                               kfree_skb(rskb);
+                                       }
+                               } else {
+                                       if (ampdu_len->substate == RX_ABORT) {
+                                               u8 * a;
+                                               have_rxabort = true;
+                                               esp_sip_dbg(ESP_DBG_TRACE, "rx abort %d %d\n", frame_buf_ttl, pkt_num);
+                                               if(frame_buf_ttl && !sip->rxabort_fixed) {
+                                                       struct esp_rx_ampdu_len * next_good_ampdu_len = ampdu_len + 1;
+                                                       a = frame_head;
+                                                       esp_sip_dbg(ESP_DBG_TRACE, "frame:%02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x\n",
+                                                                       a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], a[14], a[15]);
+                                                       while(!sip_ampdu_occupy_buf(sip, next_good_ampdu_len)) {
+                                                               if(next_good_ampdu_len > ampdu_len + pkt_num - 1)
+                                                                       break;
+                                                               next_good_ampdu_len++;
+
+                                                       }
+                                                       if(next_good_ampdu_len <= ampdu_len + pkt_num -1) {
+                                                               bool b0, b10, b11;
+                                                               a = skb->data;
+                                                               esp_sip_dbg(ESP_DBG_TRACE, "buf:%02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x\n",
+                                                                               a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], a[14], a[15]);
+                                                               b0 = memcmp(frame_head + 4, skb->data + 4, 12) == 0;
+                                                               b10 = memcmp(frame_head + 10, skb->data, 6) == 0;
+                                                               b11 = memcpy(frame_head + 11, skb->data, 5) == 0;
+                                                               esp_sip_dbg(ESP_DBG_TRACE, "com %d %d %d\n", b0, b10, b11);
+                                                               if(b0 && !b10 && !b11) {
+                                                                       have_rxabort = false;
+                                                                       esp_sip_dbg(ESP_DBG_TRACE, "repair 0\n");
+                                                               } else if(!b0 && b10 && !b11) {
+                                                                       skb_push(skb, 10);
+                                                                       memcpy(skb->data, frame_head, 10);
+                                                                       have_rxabort = false;
+                                                                       pulled_len -= 10;
+                                                                       esp_sip_dbg(ESP_DBG_TRACE, "repair 10\n");
+                                                               } else if(!b0 && !b10 && b11) {
+                                                                       skb_push(skb, 11);
+                                                                       memcpy(skb->data, frame_head, 11);
+                                                                       have_rxabort = false;
+                                                                       pulled_len -= 11;
+                                                                       esp_sip_dbg(ESP_DBG_TRACE, "repair 11\n");
+                                                               }
+                                                       }
+                                               }
+                                       }
+                                       pkt_dropped++;
+                                       esp_sip_dbg(ESP_DBG_LOG, "%s ampdu dropped %d/%d\n", __func__, pkt_dropped, pkt_total);
+                               }
+                               pkt_num--;
+                               ampdu_len++;
+                       }
+                       if(frame_buf_ttl)
+                               frame_buf_ttl--;
+                       skb_pull(skb, hdr->len - pulled_len);
+               } else {
+                       esp_sip_dbg(ESP_DBG_ERROR, "%s %d unknown type\n", __func__, __LINE__);
+               }
+
+_move_on:
+               if (hdr->len < remains_len) {
+                       remains_len -= hdr->len;
+               } else {
+                       break;
+               }
+               bufptr += hdr->len;
+       }
+
+       do {
+               ASSERT(skb != rskb);
+               kfree_skb(skb);
+       } while (0);
+
+#ifdef RX_SYNC
+       if (trigger_rxq) {
+               queue_work(sip->epub->esp_wkq, &sip->epub->sendup_work);
+       }
+       if (trigger_txq) {
+               sip_trigger_txq_process(sip);
+       }
+#else
+       return trigger_rxq;
+#endif /* RX_SYNC */
+
+#undef DO_NOT_COPY
+#undef DO_COPY
+}
+
+#ifndef RX_SYNC
+static void _sip_rxq_process(struct esp_sip *sip)
+{
+        struct sk_buff *skb = NULL;
+        bool sendup = false;
+
+        while ((skb = skb_dequeue(&sip->rxq))) {
+                if (sip_rx_pkt_process(sip, skb))
+                        sendup = true;
+        }
+#ifndef RX_SENDUP_SYNC
+        if (sendup) {
+                queue_work(sip->epub->esp_wkq, &sip->epub->sendup_work);
+        }
+#endif /* !RX_SENDUP_SYNC */
+
+        /* probably tx_credit is updated, try txq */
+        sip_trigger_txq_process(sip);
+}
+
+void sip_rxq_process(struct work_struct *work)
+{
+        struct esp_sip *sip = container_of(work, struct esp_sip, rx_process_work);
+        ASSERT(sip != NULL);
+
+       if (unlikely(atomic_read(&sip->state) == SIP_SEND_INIT)) {
+               sip_send_chip_init(sip);
+               atomic_set(&sip->state, SIP_WAIT_BOOTUP);
+               return;
+       }
+
+        spin_lock(&sip->rx_lock);
+        _sip_rxq_process(sip);
+        spin_unlock(&sip->rx_lock);
+}
+
+static inline void sip_rx_pkt_enqueue(struct esp_sip *sip, struct sk_buff *skb)
+{
+        skb_queue_tail(&sip->rxq, skb);
+}
+
+static inline struct sk_buff * sip_rx_pkt_dequeue(struct esp_sip *sip) {
+        return skb_dequeue(&sip->rxq);
+}
+#endif /* RX_SYNC */
+
+static u32 sip_rx_count = 0;
+void sip_debug_show(struct esp_sip *sip)
+{
+       esp_sip_dbg(ESP_DBG_ERROR, "txq left %d %d\n", skb_queue_len(&sip->epub->txq), atomic_read(&sip->tx_data_pkt_queued));
+       esp_sip_dbg(ESP_DBG_ERROR, "tx queues stop ? %d\n", atomic_read(&sip->epub->txq_stopped));
+       esp_sip_dbg(ESP_DBG_ERROR, "txq stop?  %d\n", test_bit(ESP_WL_FLAG_STOP_TXQ, &sip->epub->wl.flags));
+       esp_sip_dbg(ESP_DBG_ERROR, "tx credit %d\n", atomic_read(&sip->tx_credits));
+       esp_sip_dbg(ESP_DBG_ERROR, "rx collect %d\n", sip_rx_count);
+       sip_rx_count = 0;
+}
+
+#ifndef LOOKAHEAD
+int sip_rx(struct esp_pub *epub)
+{
+        struct sip_hdr *shdr = NULL;
+        struct esp_sip *sip = epub->sip;
+        int err = 0;
+        struct sk_buff *first_skb = NULL;
+        struct sk_buff *next_skb = NULL;
+        u8 *rx_buf = NULL;
+        u32 rx_blksz;
+        u32 first_sz = 4;
+        struct sk_buff *rx_skb = NULL;
+
+        esp_sip_dbg(ESP_DBG_LOG, "%s enter\n", __func__);
+
+
+        /* first read one block out, if we luck enough, that's it
+         *
+         *  To make design as simple as possible, we allocate skb(s)
+         *  separately for each sif read operation to avoid global
+         *  read_buf_pointe access.  It coule be optimized late.
+         */
+        rx_blksz = sif_get_blksz(epub);
+        first_skb = __dev_alloc_skb(first_sz, GFP_KERNEL);
+        if (first_skb == NULL) {
+                esp_sip_dbg(ESP_DBG_ERROR, "%s first no memory \n", __func__);
+                goto _err;
+        }
+        rx_buf = skb_put(first_skb, first_sz);
+        esp_sip_dbg(ESP_DBG_LOG, "%s rx_buf ptr %p, first_sz %d\n", __func__, rx_buf, first_sz);
+
+        sif_lock_bus(epub);
+
+#ifdef USE_EXT_GPIO
+       do{
+               int err2;
+               u16 value = 0;
+               u16 intr_mask = ext_gpio_get_int_mask_reg();
+               if(!intr_mask)
+                       break;
+               err2 = sif_get_gpio_intr(epub, intr_mask, &value);
+               if(!err2 && value) {
+                       esp_sip_dbg(ESP_DBG_TRACE, "%s intr_mask[0x%04x] value[0x%04x]\n", __func__, intr_mask, value);
+                       ext_gpio_int_process(value);
+               }
+       }while(0);
+#endif
+#ifdef ESP_ACK_INTERRUPT
+#ifdef ESP_ACK_LATER
+               err = esp_common_read(epub, rx_buf, first_sz, ESP_SIF_NOSYNC, true);
+        sif_platform_ack_interrupt(epub);
+#else
+        sif_platform_ack_interrupt(epub);
+               err = esp_common_read(epub, rx_buf, first_sz, ESP_SIF_NOSYNC, true);
+#endif /* ESP_ACK_LATER */
+#else
+        err = esp_common_read(epub, rx_buf, first_sz, ESP_SIF_NOSYNC, true);
+#endif //ESP_ACK_INTERRUPT
+
+       sip_rx_count++;
+        if (unlikely(err)) {
+                esp_dbg(ESP_DBG_ERROR, " %s first read err %d %d\n", __func__, err, sif_get_regs(epub)->config_w0);
+                kfree_skb(first_skb);
+               sif_unlock_bus(epub);
+                goto _err;
+        }
+
+        shdr = (struct sip_hdr *)rx_buf;
+       if(SIP_HDR_IS_CTRL(shdr) && (shdr->c_evtid == SIP_EVT_SLEEP)) {
+               atomic_set(&sip->epub->ps.state, ESP_PM_ON);
+               esp_dbg(ESP_DBG_TRACE, "s\n");
+       }
+
+        ASSERT((shdr->len & 3) == 0);
+        //ASSERT(shdr->len >= SIP_HDR_LEN && shdr->len <= SIP_PKT_MAX_LEN);
+        if (shdr->len > first_sz)  {
+                /* larger than one blk, fetch the rest */
+                next_skb = __dev_alloc_skb(roundup(shdr->len, rx_blksz) + first_sz, GFP_KERNEL);
+                if (unlikely(next_skb == NULL)) {
+                        sif_unlock_bus(epub);
+                        esp_sip_dbg(ESP_DBG_ERROR, "%s next no memory \n", __func__);
+                        kfree_skb(first_skb);
+                        goto _err;
+                }
+                rx_buf = skb_put(next_skb, shdr->len);
+                rx_buf += first_sz; /* skip the first block */
+
+               err = esp_common_read(epub, rx_buf, (shdr->len - first_sz), ESP_SIF_NOSYNC, false);
+               sif_unlock_bus(epub);
+
+                if (unlikely(err)) {
+                        esp_sip_dbg(ESP_DBG_ERROR, "%s next read err %d \n", __func__, err);
+                        kfree(first_skb);
+                        kfree(next_skb);
+                        goto _err;
+                }
+                /* merge two skbs, TBD: could be optimized by skb_linearize*/
+                memcpy(next_skb->data, first_skb->data, first_sz);
+                esp_dbg(ESP_DBG_TRACE, " %s  next skb\n", __func__);
+
+                rx_skb = next_skb;
+                kfree_skb(first_skb);
+        } else {
+               sif_unlock_bus(epub);
+                skb_trim(first_skb, shdr->len);
+                esp_dbg(ESP_DBG_TRACE, " %s first_skb only\n", __func__);
+
+                rx_skb = first_skb;
+        }
+        if (atomic_read(&sip->state) == SIP_STOP) {
+               kfree_skb(rx_skb);
+                esp_sip_dbg(ESP_DBG_ERROR, "%s when sip stopped\n", __func__);
+                return 0;
+        }
+#ifndef RX_SYNC
+        sip_rx_pkt_enqueue(sip, rx_skb);
+        queue_work(sip->epub->esp_wkq, &sip->rx_process_work);
+#else
+        sip_rx_pkt_process_sync(sip, rx_skb);
+#endif /* RX_SYNC */
+
+_err:
+
+        return err;
+}
+
+#else
+
+int sip_rx(struct esp_pub *epub)
+{
+        struct sip_hdr *shdr = NULL;
+        struct esp_sip *sip = epub->sip;
+        int err = 0;
+        struct sk_buff *rx_skb = NULL;
+        u8 *rx_buf = NULL;
+        u32 lookahead = 0;
+        struct slc_host_regs *regs = sif_get_regs(epub);
+        bool free_skb = false;
+
+        esp_sip_dbg(ESP_DBG_LOG, "%s enter\n", __func__);
+
+        lookahead = regs->config_w0;
+
+        esp_sip_dbg(ESP_DBG_TRACE, "%s lookahead %u \n", __func__, lookahead);
+        rx_skb = __dev_alloc_skb(lookahead, GFP_KERNEL);
+        if (rx_skb == NULL) {
+                esp_sip_dbg(ESP_DBG_ERROR, "%s no memory \n", __func__);
+                goto __out;
+        }
+        rx_buf = skb_put(rx_skb, lookahead);
+        err = sif_lldesc_read_raw(epub, rx_buf, lookahead);
+        if (unlikely(err)) {
+                esp_dbg(ESP_DBG_ERROR, " %s read err %d \n", __func__, err);
+                goto __out;
+        }
+
+        shdr = (struct sip_hdr *)rx_buf;
+        esp_sip_dbg(ESP_DBG_TRACE, "%s len %d totlen %d\n", __func__, shdr->len, (shdr->h_credits >> 12));
+        show_buf(rx_buf, 32);
+        //ASSERT(shdr->len >= SIP_HDR_LEN && shdr->len <= SIP_PKT_MAX_LEN);
+
+        esp_sip_dbg(ESP_DBG_TRACE, "%s credits %d\n", __func__, shdr->h_credits);
+        if (shdr->h_credits & SIP_CREDITS_MASK) {
+                sip_update_tx_credits(sip, shdr->h_credits & SIP_CREDITS_MASK);
+        }
+#if 0
+        if (SIP_HDR_IS_CREDIT_RPT(shdr)) {
+                esp_sip_dbg(ESP_DBG_TRACE, "%s credit update %d\n", __func__, shdr->h_credits & SIP_CREDITS_MASK);
+                if (unlikely(shdr->seq != sip->rxseq++)) {
+                        esp_sip_dbg(ESP_DBG_ERROR, "%s seq mismatch! got %u, expect %u\n", __func__, shdr->seq, sip->rxseq-1);
+                }
+
+                free_skb = true;
+                goto __out;
+        }
+#endif
+        shdr->h_credits &= ~SIP_CREDITS_MASK; /* clean credits in sip_hdr, prevent over-add */
+
+        /* we need some place to store the total length of the pkt chain, the simple way is make it consistent with
+         * non-lookahead case
+         */
+        shdr->h_credits = (shdr->len << 12);
+        shdr->len = lookahead;
+
+        sip_rx_pkt_enqueue(sip, rx_skb);
+        queue_work(sip->epub->esp_wkq, &sip->rx_process_work);
+
+__out:
+        if (free_skb)
+                kfree_skb(rx_skb);
+
+        sip_trigger_txq_process(sip);
+
+        return err;
+}
+#endif /* LOOKAHEAD */
+
+int sip_get_raw_credits(struct esp_sip *sip)
+{
+#if 1
+        unsigned long timeout;
+        int err = 0;
+
+        esp_dbg(ESP_DBG_TRACE, "%s entern \n", __func__);
+
+        /* 1s timeout */
+        timeout = jiffies + msecs_to_jiffies(1000);
+
+        while (time_before(jiffies, timeout) && !sip->boot_credits) {
+
+               err = esp_common_read_with_addr(sip->epub, SLC_HOST_TOKEN_RDATA, (u8 *)&sip->boot_credits, 4, ESP_SIF_SYNC);
+
+                if (err) {
+                        esp_dbg(ESP_DBG_ERROR, "Can't read credits\n");
+                        return err;
+                }
+                sip->boot_credits &= SLC_HOST_TOKEN0_MASK;
+#ifdef SIP_DEBUG
+                if (sip->boot_credits == 0) {
+                        esp_dbg(ESP_DBG_ERROR, "no credit, try again\n");
+                        mdelay(50);
+                }
+#endif /* SIP_DEBUG */
+        }
+
+        if (!sip->boot_credits) {
+                esp_dbg(ESP_DBG_ERROR, "read credits timeout\n");
+                return -1;
+        }
+
+        esp_dbg(ESP_DBG_TRACE, "%s got credits: %d\n", __func__, sip->boot_credits);
+#endif //0000
+
+        return 0;
+}
+
+
+/* Only cooperate with get_raw_credits */
+static void
+sip_dec_credit(struct esp_sip *sip)
+{
+#if 0
+        u32 reg = 0;
+        int err = 0;
+
+        reg = SLC_HOST_TOKEN0_WR | SLC_HOST_TOKEN0_DEC;
+        memcpy(sip->rawbuf, &reg, sizeof(u32));
+        err = sif_io_sync(sip->epub, SLC_HOST_INT_CLR, sip->rawbuf, sizeof(u32), SIF_TO_DEVICE | SIF_SYNC | SIF_BYTE_BASIS | SIF_INC_ADDR);
+
+        if (err)
+                esp_dbg(ESP_DBG_ERROR, "%s can't clear target token0 \n", __func__);
+
+#endif //0000
+        /* SLC 2.0, token reg is read-to-clean, thus no need to access target */
+        sip->boot_credits--;
+}
+
+int sip_post_init(struct esp_sip *sip, struct sip_evt_bootup2 *bevt)
+{
+        struct esp_pub *epub;
+        int po = 0;
+
+        ASSERT(sip != NULL);
+
+        epub = sip->epub;
+
+        po = get_order(SIP_TX_AGGR_BUF_SIZE);
+        sip->tx_aggr_buf = (u8 *)__get_free_pages(GFP_ATOMIC, po);
+        if (sip->tx_aggr_buf == NULL) {
+                esp_dbg(ESP_DBG_ERROR, "no mem for tx_aggr_buf! \n");
+                return -ENOMEM;
+        }
+#if 0
+        po = get_order(SIP_RX_AGGR_BUF_SIZE);
+        sip->rx_aggr_buf = (u8 *)__get_free_pages(GFP_ATOMIC, po);
+
+        if (sip->rx_aggr_buf == NULL) {
+                po = get_order(SIP_TX_AGGR_BUF_SIZE);
+                free_pages((unsigned long)sip->tx_aggr_buf, po);
+                esp_dbg(ESP_DBG_ERROR, "no mem for rx_aggr_buf! \n");
+                return -ENOMEM;
+        }
+#endif
+
+        sip->tx_aggr_write_ptr = sip->tx_aggr_buf;
+
+        sip->tx_blksz = bevt->tx_blksz;
+        sip->rx_blksz = bevt->rx_blksz;
+        sip->credit_to_reserve = bevt->credit_to_reserve;
+
+        sip->dump_rpbm_err = (bevt->options & SIP_DUMP_RPBM_ERR);
+        sip->rxabort_fixed = (bevt->options & SIP_RXABORT_FIXED);
+        sip->support_bgscan = (bevt->options & SIP_SUPPORT_BGSCAN);
+
+        sip->sendup_rpbm_pkt = sip->dump_rpbm_err && false;
+
+        /* print out MAC addr... */
+        memcpy(epub->mac_addr, bevt->mac_addr, ETH_ALEN);
+       sip->noise_floor = bevt->noise_floor;
+
+        esp_sip_dbg(ESP_DBG_TRACE, "%s tx_blksz %d rx_blksz %d mac addr %pM\n", __func__, sip->tx_blksz, sip->rx_blksz, epub->mac_addr);
+
+               return 0;
+}
+
+/* write pkts in aggr buf to target memory */
+static void sip_write_pkts(struct esp_sip *sip, int pm_state)
+{
+        int tx_aggr_len = 0;
+        struct sip_hdr *first_shdr = NULL;
+       int err = 0;
+
+        tx_aggr_len = sip->tx_aggr_write_ptr - sip->tx_aggr_buf;
+        if (tx_aggr_len < sizeof(struct sip_hdr)) {
+                printk("%s tx_aggr_len %d \n", __func__, tx_aggr_len);
+                ASSERT(0);
+        }
+        //ASSERT(tx_aggr_len >= sizeof(struct sip_hdr));
+        ASSERT((tx_aggr_len & 0x3) == 0);
+
+        first_shdr = (struct sip_hdr *)sip->tx_aggr_buf;
+
+        if (atomic_read(&sip->tx_credits) <= SIP_CREDITS_LOW_THRESHOLD) {
+                first_shdr->fc[1] |= SIP_HDR_F_NEED_CRDT_RPT;
+        }
+
+        ASSERT(tx_aggr_len == sip->tx_tot_len);
+
+        /* still use lock bus instead of sif_lldesc_write_sync since we want to protect several global varibles assignments */
+        sif_lock_bus(sip->epub);
+
+        /* add a dummy read in power saving mode, although target may not really in
+         * sleep
+         */
+        //if (atomic_read(&sip->epub->ps.state) == ESP_PM_ON) {
+       //      atomic_set(&sip->epub->ps.state, ESP_PM_OFF);
+                sif_raw_dummy_read(sip->epub);
+        //}
+       //esp_dbg(ESP_DBG_ERROR, "%s write len %u\n", __func__, tx_aggr_len);
+
+               err = esp_common_write(sip->epub, sip->tx_aggr_buf, tx_aggr_len, ESP_SIF_NOSYNC);
+
+        sip->tx_aggr_write_ptr = sip->tx_aggr_buf;
+        sip->tx_tot_len = 0;
+
+#if 0
+        if (pm_state == ESP_PM_TURNING_ON) {
+                ASSERT(atomic_read(&sip->epub->ps.state) == ESP_PM_TURNING_ON);
+                atomic_set(&sip->epub->ps.state, ESP_PM_ON);
+        } else if (pm_state == ESP_PM_TURNING_OFF) {
+                ASSERT(atomic_read(&sip->epub->ps.state) == ESP_PM_TURNING_OFF);
+                atomic_set(&sip->epub->ps.state, ESP_PM_OFF);
+                esp_dbg(ESP_DBG_PS, "----beacon %d, probe rsp %d -------\n", bcn_counter, probe_rsp_counter);
+                bcn_counter = 0; probe_rsp_counter = 0;
+        } else if (pm_state && atomic_read(&sip->epub->ps.state)) {
+                esp_dbg(ESP_DBG_ERROR, "%s wrong pm_state %d ps.state %d \n", __func__, pm_state, atomic_read(&sip->epub->ps.state));
+        }
+#endif
+        sif_unlock_bus(sip->epub);
+
+       if (err)
+               esp_sip_dbg(ESP_DBG_ERROR, "func %s err!!!!!!!!!: %d\n", __func__, err);
+
+}
+
+/* setup sip header and tx info, copy pkt into aggr buf */
+static int sip_pack_pkt(struct esp_sip *sip, struct sk_buff *skb, int *pm_state)
+{
+        struct ieee80211_tx_info *itx_info;
+        struct sip_hdr *shdr;
+        u32 tx_len = 0, offset = 0;
+        bool is_data = true;
+
+        itx_info = IEEE80211_SKB_CB(skb);
+
+        if (itx_info->flags == 0xffffffff) {
+                shdr = (struct sip_hdr *)skb->data;
+                is_data = false;
+                tx_len = skb->len;
+        } else {
+                struct ieee80211_hdr * wh = (struct ieee80211_hdr *)skb->data;
+                struct esp_vif *evif = (struct esp_vif *)itx_info->control.vif->drv_priv;
+                u8 sta_index;
+                struct esp_node *node; 
+                /* update sip header */
+                shdr = (struct sip_hdr *)sip->tx_aggr_write_ptr;
+                
+                shdr->fc[0] = 0;
+                shdr->fc[1] = 0;
+
+                if ((itx_info->flags & IEEE80211_TX_CTL_AMPDU) && (true || esp_is_ip_pkt(skb)))
+                        SIP_HDR_SET_TYPE(shdr->fc[0], SIP_DATA_AMPDU);
+                else
+                        SIP_HDR_SET_TYPE(shdr->fc[0], SIP_DATA);
+
+               if(evif->epub == NULL){
+#ifndef FAST_TX_STATUS
+                       /* TBD */
+#else
+                       sip_tx_status_report(sip, skb, itx_info, false);
+                       atomic_dec(&sip->tx_data_pkt_queued);
+                       return -1;
+#endif /* FAST_TX_STATUS */
+               }
+
+                /* make room for encrypted pkt */
+                if (itx_info->control.hw_key) {
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 39))
+                        shdr->d_enc_flag= itx_info->control.hw_key->alg+1;
+#else
+                        int alg = esp_cipher2alg(itx_info->control.hw_key->cipher);
+                        if (unlikely(alg == -1)) {
+#ifndef FAST_TX_STATUS
+                                /* TBD */
+#else
+                                sip_tx_status_report(sip, skb, itx_info, false);
+                                atomic_dec(&sip->tx_data_pkt_queued);
+                                return -1;
+#endif /* FAST_TX_STATUS */
+                        } else {
+                                shdr->d_enc_flag = alg + 1;
+                        }
+
+#endif /* NEW_KERNEL */
+                         shdr->d_hw_kid =  itx_info->control.hw_key->hw_key_idx | (evif->index<<7);
+                } else {
+                        shdr->d_enc_flag=0;
+                        shdr->d_hw_kid = (evif->index << 7 | evif->index);
+                }
+
+                /* update sip tx info */
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 28))
+               /* if(itx_info->control.sta == NULL){
+                        node = NULL;
+                } else {
+                        node = esp_get_node_by_addr(sip->epub, itx_info->control.sta->addr);
+                }*/
+#else
+               
+                node = esp_get_node_by_addr(sip->epub, wh->addr1);
+#endif
+                if(node != NULL)
+                        sta_index = node->index;
+                else
+                        sta_index = ESP_PUB_MAX_STA + 1;
+                SIP_HDR_SET_IFIDX(shdr->fc[0], evif->index << 3 | sta_index);
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 37))
+                shdr->d_p2p = itx_info->control.vif->p2p;
+                if(evif->index == 1)
+                        shdr->d_p2p = 1;
+#endif
+                shdr->d_ac = skb_get_queue_mapping(skb);
+                shdr->d_tid = skb->priority & IEEE80211_QOS_CTL_TAG1D_MASK;
+                wh = (struct ieee80211_hdr *)skb->data;
+                if (ieee80211_is_mgmt(wh->frame_control)) {
+               /* addba/delba/bar may use different tid/ac */
+                        if (ieee80211_is_beacon(wh->frame_control)||shdr->d_ac == WME_AC_VO) {
+                                shdr->d_tid = 7;
+                        }
+                }
+//#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 35))
+                if (check_ac_tid(skb->data, shdr->d_ac, shdr->d_tid)) {
+                        shdr->d_ac = WME_AC_BE;
+                        shdr->d_tid = 0;
+                }
+//#endif  /* NEW_KERNEL || KERNEL_35 */
+
+
+                /* make sure data is start at 4 bytes aligned addr. */
+                offset = roundup(sizeof(struct sip_hdr), 4);
+
+#ifdef HOST_RC
+                esp_sip_dbg(ESP_DBG_TRACE, "%s offset0 %d \n", __func__, offset);
+                memcpy(sip->tx_aggr_write_ptr + offset, (void *)&itx_info->control,
+                       sizeof(struct sip_tx_rc));
+
+                offset += roundup(sizeof(struct sip_tx_rc), 4);
+                esp_show_tx_rates(&itx_info->control.rates[0]);
+
+#endif /* HOST_RC */
+
+                if (SIP_HDR_IS_AMPDU(shdr)) {
+                        memset(sip->tx_aggr_write_ptr + offset, 0, sizeof(struct esp_tx_ampdu_entry));
+                        offset += roundup(sizeof(struct esp_tx_ampdu_entry), 4);
+                }
+
+                tx_len = offset + skb->len;
+                shdr->len = tx_len;  /* actual len */
+
+                esp_sip_dbg(ESP_DBG_TRACE, "%s offset %d skblen %d txlen %d\n", __func__, offset, skb->len, tx_len);
+
+        }
+
+        shdr->seq = sip->txseq++;
+        //esp_sip_dbg(ESP_DBG_ERROR, "%s seq %u, %u %u\n", __func__, shdr->seq, SIP_HDR_GET_TYPE(shdr->fc[0]),shdr->c_cmdid);
+
+        /* copy skb to aggr buf */
+        memcpy(sip->tx_aggr_write_ptr + offset, skb->data, skb->len);
+
+        if (is_data) {
+                       spin_lock_bh(&sip->epub->tx_lock);
+                       sip->txdataseq = shdr->seq;
+                       spin_unlock_bh(&sip->epub->tx_lock);
+#ifndef FAST_TX_STATUS
+                /* store seq in driver data, need seq to pick pkt during tx status report */
+                *(u32 *)itx_info->driver_data = shdr->seq;
+                atomic_inc(&sip->pending_tx_status);
+#else
+                /* fake a tx_status and report to mac80211 stack to speed up tx, may affect
+                 *  1) rate control (now it's all in target, so should be OK)
+                 *  2) ps mode, mac80211 want to check ACK of ps/nulldata to see if AP is awake
+                 *  3) BAR, mac80211 do BAR by checking ACK
+                 */
+                /*
+                 *  XXX: need to adjust for 11n, e.g. report tx_status according to BA received in target
+                 *
+                 */
+                sip_tx_status_report(sip, skb, itx_info, true);
+                atomic_dec(&sip->tx_data_pkt_queued);
+
+#endif /* FAST_TX_STATUS */
+                STRACE_TX_DATA_INC();
+        } else {
+                /* check pm state here */
+#if 0
+                if (*pm_state == 0) {
+                        if (SIP_HDR_IS_PM_TURNING_ON(shdr))
+                                *pm_state = ESP_PM_TURNING_ON;
+                        else if (SIP_HDR_IS_PM_TURNING_OFF(shdr))
+                                *pm_state = ESP_PM_TURNING_OFF;
+                } else {
+                        if (SIP_HDR_IS_PM_TURNING_ON(shdr) || SIP_HDR_IS_PM_TURNING_OFF(shdr)) {
+                                esp_dbg(ESP_DBG_ERROR, "%s two pm states in one bunch - prev: %d; curr %d\n", __func__,
+                                        *pm_state, SIP_HDR_IS_PM_TURNING_ON(shdr)?ESP_PM_TURNING_ON:ESP_PM_TURNING_OFF);
+                                if (*pm_state == ESP_PM_TURNING_ON && SIP_HDR_IS_PM_TURNING_OFF(shdr)) {
+                                        *pm_state = 0;
+                                        atomic_set(&sip->epub->ps.state, ESP_PM_OFF);
+                                } else if (*pm_state == ESP_PM_TURNING_OFF && SIP_HDR_IS_PM_TURNING_ON(shdr)) {
+                                        *pm_state = 0;
+                                        atomic_set(&sip->epub->ps.state, ESP_PM_ON);
+                                } else {
+                                        ASSERT(0);
+                                }
+                        }
+                }
+#endif
+                /* no need to hold ctrl skb */
+                sip_free_ctrl_skbuff(sip, skb);
+                STRACE_TX_CMD_INC();
+        }
+
+        /* TBD: roundup here or whole aggr-buf */
+        tx_len = roundup(tx_len, sip->tx_blksz);
+
+        sip->tx_aggr_write_ptr += tx_len;
+        sip->tx_tot_len += tx_len;
+
+        return 0;
+}
+
+#ifndef FAST_TX_STATUS
+static void
+sip_after_tx_status_update(struct esp_sip *sip)
+{
+        if (atomic_read(&sip->data_tx_stopped) == true && sip_tx_data_may_resume(sip)) {
+                atomic_set(&sip->data_tx_stopped, false);
+                if (sip_is_tx_mblk_avail(sip) == false) {
+                        esp_sip_dbg(ESP_DBG_ERROR, "%s mblk still unavail \n", __func__);
+                } else {
+                        esp_sip_dbg(ESP_DBG_TRACE, "%s trigger txq \n", __func__);
+                        sip_trigger_txq_process(sip);
+                }
+        } else if (!sip_tx_data_may_resume(sip)) { //JLU: this is redundant
+                STRACE_SHOW(sip);
+        }
+}
+#endif /* !FAST_TX_STATUS */
+
+#ifdef HOST_RC
+static void sip_set_tx_rate_status(struct sip_rc_status *rcstatus, struct ieee80211_tx_rate *irates)
+{
+        int i;
+        u8 shift = 0;
+        u32 cnt = 0;
+
+        for (i = 0; i < IEEE80211_TX_MAX_RATES; i++) {
+                if (rcstatus->rc_map & BIT(i)) {
+                        shift = i << 2;
+                        cnt = (rcstatus->rc_cnt_store >> shift) & RC_CNT_MASK;
+                        irates[i].idx = i;
+                        irates[i].count = (u8)cnt;
+                } else {
+                        irates[i].idx = -1;
+                        irates[i].count = 0;
+                }
+        }
+
+        esp_show_rcstatus(rcstatus);
+        esp_show_tx_rates(irates);
+}
+#endif /* HOST_RC */
+
+#ifndef FAST_TX_STATUS
+static void
+sip_txdoneq_process(struct esp_sip *sip, struct sip_evt_tx_report *tx_report)
+{
+        struct sk_buff *skb, *tmp;
+        struct esp_pub *epub = sip->epub;
+        int matchs = 0;
+        struct ieee80211_tx_info *tx_info;
+        struct sip_tx_status *tx_status;
+        int i;
+
+        esp_sip_dbg(ESP_DBG_LOG, "%s enter, report->pkts %d, pending tx_status %d\n", __func__, tx_report->pkts, atomic_read(&sip->pending_tx_status));
+
+        /* traversal the txdone queue, find out matched skb by seq, hand over
+         * to up layer stack
+         */
+        for (i = 0; i < tx_report->pkts; i++) {
+                //esp_sip_dbg(ESP_DBG_TRACE, "%s status %d seq %u\n", __func__, i, tx_report->status[i].sip_seq);
+                skb_queue_walk_safe(&epub->txdoneq, skb, tmp) {
+                        tx_info = IEEE80211_SKB_CB(skb);
+
+                        //esp_sip_dbg(ESP_DBG_TRACE, "%s skb seq %u\n", __func__, *(u32 *)tx_info->driver_data);
+                        if (tx_report->status[i].sip_seq == *(u32 *)tx_info->driver_data) {
+                                tx_status = &tx_report->status[i];
+                                __skb_unlink(skb, &epub->txdoneq);
+
+                                //fill up ieee80211_tx_info
+                                //TBD: lock ??
+                                if (tx_status->errno == SIP_TX_ST_OK &&
+                                    !(tx_info->flags & IEEE80211_TX_CTL_NO_ACK)) {
+                                        tx_info->flags |= IEEE80211_TX_STAT_ACK;
+                                }
+#ifdef HOST_RC
+                                sip_set_tx_rate_status(&tx_report->status[i].rcstatus, &tx_info->status.rates[0]);
+                                esp_sip_dbg(ESP_DBG_TRACE, "%s idx0 %d, cnt0 %d, flags0 0x%02x\n", __func__, tx_info->status.rates[0].idx,tx_info->status.rates[0].count, tx_info->status.rates[0].flags);
+
+#else
+                                /* manipulate rate status... */
+                                tx_info->status.rates[0].idx = 0;
+                                tx_info->status.rates[0].count = 1;
+                                tx_info->status.rates[0].flags = 0;
+                                tx_info->status.rates[1].idx = -1;
+#endif /* HOST_RC */
+
+                                ieee80211_tx_status(epub->hw, skb);
+                                matchs++;
+                                atomic_dec(&sip->pending_tx_status);
+                                STRACE_RX_TXSTATUS_INC();
+                        }
+                }
+        }
+
+        if (matchs < tx_report->pkts) {
+                esp_sip_dbg(ESP_DBG_ERROR, "%s tx report mismatch! \n", __func__);
+        } else {
+                //esp_sip_dbg(ESP_DBG_TRACE, "%s tx report %d pkts! \n", __func__, matchs);
+        }
+
+        sip_after_tx_status_update(sip);
+}
+#else
+#ifndef FAST_TX_NOWAIT
+
+static void
+sip_txdoneq_process(struct esp_sip *sip)
+{
+        struct esp_pub *epub = sip->epub;
+        struct sk_buff *skb;
+        while ((skb = skb_dequeue(&epub->txdoneq))) {
+                ieee80211_tx_status(epub->hw, skb);
+        }
+}
+#endif
+#endif /* !FAST_TX_STATUS */
+
+#ifdef FAST_TX_STATUS
+static void sip_tx_status_report(struct esp_sip *sip, struct sk_buff *skb, struct ieee80211_tx_info *tx_info, bool success)
+{
+        if(!(tx_info->flags & IEEE80211_TX_CTL_AMPDU)) {
+                if (likely(success))
+                        tx_info->flags |= IEEE80211_TX_STAT_ACK;
+                else
+                        tx_info->flags &= ~IEEE80211_TX_STAT_ACK;
+
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 29))
+                /* manipulate rate status... */
+                tx_info->status.rates[0].idx = 11;
+                tx_info->status.rates[0].count = 1;
+                tx_info->status.rates[0].flags = 0;
+                tx_info->status.rates[1].idx = -1;
+#else
+                tx_info->status.retry_count = 1;
+                tx_info->status.excessive_retries = false;
+#endif
+
+        } else {
+                tx_info->flags |= IEEE80211_TX_STAT_AMPDU | IEEE80211_TX_STAT_ACK;
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 39))
+                tx_info->status.ampdu_ack_map = 1;
+#else
+                tx_info->status.ampdu_len = 1;
+#endif
+                tx_info->status.ampdu_ack_len = 1;
+
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 29))
+                /* manipulate rate status... */
+                tx_info->status.rates[0].idx = 7;
+                tx_info->status.rates[0].count = 1;
+                tx_info->status.rates[0].flags = IEEE80211_TX_RC_MCS | IEEE80211_TX_RC_SHORT_GI;
+                tx_info->status.rates[1].idx = -1;
+#else
+                tx_info->status.retry_count = 1;
+                tx_info->status.excessive_retries = false;
+#endif
+
+        }
+
+        if(tx_info->flags & IEEE80211_TX_STAT_AMPDU)
+                esp_sip_dbg(ESP_DBG_TRACE, "%s ampdu status! \n", __func__);
+
+        if (!mod_support_no_txampdu() /*&&
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 29))
+                sip->epub->hw->conf.channel_type != NL80211_CHAN_NO_HT
+#else
+                !(sip->epub->hw->conf.flags&IEEE80211_CONF_SUPPORT_HT_MODE)
+#endif*/ //add libing
+                ) {
+                struct ieee80211_tx_info * tx_info = IEEE80211_SKB_CB(skb);
+                struct ieee80211_hdr * wh = (struct ieee80211_hdr *)skb->data;
+                if(ieee80211_is_data_qos(wh->frame_control)) {
+                        if(!(tx_info->flags & IEEE80211_TX_CTL_AMPDU)) {
+                                u8 tidno = ieee80211_get_qos_ctl(wh)[0] & IEEE80211_QOS_CTL_TID_MASK;
+                                struct esp_node * node;
+                                struct esp_tx_tid *tid;
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 28))
+ /*                               struct ieee80211_sta *sta;
+                                sta = tx_info->control.sta;
+                                if(sta == NULL)
+                                        goto _exit;
+                                node = (struct esp_node *)sta->drv_priv;
+                                ASSERT(node != NULL);
+                                if(node->sta == NULL) 
+                                        goto _exit;*/ //add libing
+#else
+                                node = esp_get_node_by_addr(sip->epub, wh->addr1);
+                                if(node == NULL)
+                                        goto _exit;
+#endif
+                                tid = &node->tid[tidno];
+                                spin_lock_bh(&sip->epub->tx_ampdu_lock);
+                                //start session
+                                ASSERT(tid != NULL);
+                                if ((tid->state == ESP_TID_STATE_INIT) && 
+                                               (TID_TO_AC(tidno) != WME_AC_VO) && tid->cnt >= 10) {
+                                        tid->state = ESP_TID_STATE_TRIGGER;
+                                        esp_sip_dbg(ESP_DBG_ERROR, "start tx ba session,addr:%pM,tid:%u\n", wh->addr1, tidno);
+                                        spin_unlock_bh(&sip->epub->tx_ampdu_lock);
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 28))
+                                        ieee80211_start_tx_ba_session(sip->epub->hw, wh->addr1, tidno);
+#elif (LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 32))
+                                        ieee80211_start_tx_ba_session(sip->epub->hw, sta->addr, tidno);
+#elif (LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 37))
+                                        ieee80211_start_tx_ba_session(sta, tidno);
+#else
+                                       // ieee80211_start_tx_ba_session(sta, tidno, 0);
+#endif
+                                } else {
+                                       if(tid->state == ESP_TID_STATE_INIT)
+                                               tid->cnt++;
+                                       else
+                                               tid->cnt = 0;
+                                        spin_unlock_bh(&sip->epub->tx_ampdu_lock);
+                                }
+                        }
+                }
+        }
+/*_exit:
+#ifndef FAST_TX_NOWAIT 
+        skb_queue_tail(&sip->epub->txdoneq, skb);
+#else
+        ieee80211_tx_status(sip->epub->hw, skb);
+#endif*/ //add libing
+}
+#endif /* FAST_TX_STATUS */
+
+/*
+ *  NB: this routine should be locked when calling
+ */
+void
+sip_txq_process(struct esp_pub *epub)
+{
+        struct sk_buff *skb;
+        struct esp_sip *sip = epub->sip;
+        u32 pkt_len = 0, tx_len = 0, blknum = 0;
+        bool queued_back = false;
+        bool out_of_credits = false;
+        struct ieee80211_tx_info *itx_info;
+        int pm_state = 0;
+       
+        while ((skb = skb_dequeue(&epub->txq))) {
+
+                /* cmd skb->len does not include sip_hdr too */
+                pkt_len = skb->len;
+                itx_info = IEEE80211_SKB_CB(skb);
+                if (itx_info->flags != 0xffffffff) {
+                        pkt_len += roundup(sizeof(struct sip_hdr), 4);
+                        if ((itx_info->flags & IEEE80211_TX_CTL_AMPDU) && (true || esp_is_ip_pkt(skb)))
+                                pkt_len += roundup(sizeof(struct esp_tx_ampdu_entry), 4);
+                }
+
+                /* current design simply requires every sip_hdr must be at the begin of mblk, that definitely
+                 * need to be optimized, e.g. calulate remain length in the previous mblk, if it larger than
+                 * certain threshold (e.g, whole pkt or > 50% of pkt or 2 x sizeof(struct sip_hdr), append pkt
+                 * to the previous mblk.  This might be done in sip_pack_pkt()
+                 */
+                pkt_len = roundup(pkt_len, sip->tx_blksz);
+                blknum = pkt_len / sip->tx_blksz;
+                esp_dbg(ESP_DBG_TRACE, "%s skb_len %d pkt_len %d blknum %d\n", __func__, skb->len, pkt_len, blknum);
+
+                if (unlikely(blknum > atomic_read(&sip->tx_credits) - sip->credit_to_reserve)) {
+                        esp_dbg(ESP_DBG_TRACE, "%s out of credits!\n", __func__);
+                        STRACE_TX_OUT_OF_CREDIT_INC();
+                        queued_back = true;
+                        out_of_credits = true;
+                       /*
+                        if (epub->hw) {
+                                ieee80211_stop_queues(epub->hw);
+                                atomic_set(&epub->txq_stopped, true);
+                        }
+                       */
+                        /* we will be back */
+                        break;
+                }
+
+                tx_len += pkt_len;
+                if (tx_len >= SIP_TX_AGGR_BUF_SIZE) {
+                        /* do we need to have limitation likemax 8 pkts in a row? */
+                        esp_dbg(ESP_DBG_TRACE, "%s too much pkts in one shot!\n", __func__);
+                        STRACE_TX_ONE_SHOT_INC();
+                        tx_len -= pkt_len;
+                        queued_back = true;
+                        break;
+                }
+
+                if (sip_pack_pkt(sip, skb, &pm_state) != 0) {
+                        /* wrong pkt, won't send to target */
+                        tx_len -= pkt_len;
+                        continue;
+                }
+
+                esp_sip_dbg(ESP_DBG_TRACE, "%s:before sub, credits is %d\n", __func__, atomic_read(&sip->tx_credits));
+                atomic_sub(blknum, &sip->tx_credits);
+                esp_sip_dbg(ESP_DBG_TRACE, "%s:after sub %d,credits remains %d\n", __func__, blknum, atomic_read(&sip->tx_credits));
+
+        }
+
+        if (queued_back) {
+                skb_queue_head(&epub->txq, skb);
+        }
+
+        if (atomic_read(&sip->state) == SIP_STOP 
+#ifdef HOST_RESET_BUG
+               || atomic_read(&epub->wl.off) == 1
+#endif
+               )
+       {
+               queued_back = 1;
+               tx_len = 0;
+                sip_after_write_pkts(sip);
+       }
+
+        if (tx_len) {
+       
+               sip_write_pkts(sip, pm_state);
+
+                sip_after_write_pkts(sip);
+        }
+
+        if (queued_back && !out_of_credits) {
+
+                /* skb pending, do async process again */
+                //     if (!skb_queue_empty(&epub->txq))
+                sip_trigger_txq_process(sip);
+        }
+}
+
+static void sip_after_write_pkts(struct esp_sip *sip)
+{
+        //enable txq
+#if 0
+        if (atomic_read(&sip->epub->txq_stopped) == true && sip_queue_may_resume(sip)) {
+                atomic_set(&sip->epub->txq_stopped, false);
+                ieee80211_wake_queues(sip->epub->hw);
+                esp_sip_dbg(ESP_DBG_TRACE, "%s resume ieee80211 tx \n", __func__);
+        }
+#endif
+
+#ifndef FAST_TX_NOWAIT
+        sip_txdoneq_process(sip);
+#endif
+        //disable tx_data
+#ifndef FAST_TX_STATUS
+        if (atomic_read(&sip->data_tx_stopped) == false && sip_tx_data_need_stop(sip)) {
+                esp_sip_dbg(ESP_DBG_TRACE, "%s data_tx_stopped \n", __func__);
+                atomic_set(&sip->data_tx_stopped, true);
+        }
+#endif /* FAST_TX_STATUS */
+}
+
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 35))
+/*
+ * old mac80211 (2.6.32.x) needs payload is 4 byte aligned, thus we need this hack.
+ * TBD: However, the latest mac80211 stack does not need this. we may
+ * need to check kernel version here...
+ */
+static void sip_check_skb_alignment(struct sk_buff *skb)
+{
+        struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data;
+        int hdrlen;
+
+        hdrlen = ieee80211_hdrlen(hdr->frame_control);
+
+#if 0
+
+        /* TBD */
+        if (rx->flags & IEEE80211_RX_AMSDU)
+                hdrlen += ETH_HLEN;
+
+#endif
+
+        if (unlikely(((unsigned long)(skb->data + hdrlen)) & 3)) {
+
+                esp_sip_dbg(ESP_DBG_TRACE, "%s adjust skb data postion \n", __func__);
+                skb_push(skb, 2);
+                memmove(skb->data, skb->data+2, skb->len-2);
+                skb_trim(skb, skb->len-2);
+        }
+}
+#endif /* !NEW_KERNEL */
+
+int sip_channel_value_inconsistency(u8 *start, size_t len, unsigned channel)
+{
+        size_t left = len;
+        u8 *pos = start;
+        u8 *DS_Param = NULL;
+        u8 channel_parsed = 0xff;
+        bool found = false;
+        u8 ssid[33];
+
+        while(left >=2 && !found) {
+                u8 id, elen;
+                id = *pos++;
+                elen = *pos++;
+                left -= 2;
+
+                if(elen > left)
+                        break;
+
+                switch (id) {
+                case WLAN_EID_SSID:
+                        ASSERT(elen < 33);
+                        memcpy(ssid, pos, elen);
+                        ssid[elen] = 0;
+                        esp_sip_dbg(ESP_DBG_TRACE, "ssid:%s\n", ssid);
+                        break;
+                case WLAN_EID_SUPP_RATES:
+                        break;
+                case WLAN_EID_FH_PARAMS:
+                        break;
+                case WLAN_EID_DS_PARAMS:
+                        DS_Param = pos;
+                        found = true;
+                        break;
+                default:
+                        break;
+                }
+
+                left -= elen;
+                pos += elen;
+        }
+
+        if (DS_Param) {
+                channel_parsed = DS_Param[0];
+        } else {
+                esp_dbg(ESP_DBG_ERROR, "DS_Param not found\n");
+                return -1;
+        }
+
+        return channel_parsed != channel;
+}
+
+/*  parse mac_rx_ctrl and return length */
+static int sip_parse_mac_rx_info(struct esp_sip *sip, struct esp_mac_rx_ctrl * mac_ctrl, struct sk_buff *skb)
+{
+        struct ieee80211_rx_status *rx_status = NULL;
+
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 32))
+        rx_status = IEEE80211_SKB_RXCB(skb);
+#else
+        rx_status = (struct ieee80211_rx_status *)skb->cb;
+#endif
+        rx_status->freq = esp_ieee2mhz(mac_ctrl->channel);
+
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 39))
+        rx_status->signal = mac_ctrl->rssi + sip->noise_floor;  /* snr actually, need to offset noise floor e.g. -85 */
+#else
+        rx_status->signal = mac_ctrl->rssi;  /* snr actually, need to offset noise floor e.g. -85 */
+#endif /* NEW_KERNEL */
+
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 35))
+#define ESP_RSSI_MIN_RSSI (-90)
+#define ESP_RSSI_MAX_RSSI (-45)
+        rx_status->noise = 0;  /* TBD */
+        rx_status->qual = (mac_ctrl->rssi - ESP_RSSI_MIN_RSSI)* 100/(ESP_RSSI_MAX_RSSI - ESP_RSSI_MIN_RSSI);
+        rx_status->qual = min(rx_status->qual, 100);
+        rx_status->qual = max(rx_status->qual, 0);
+#undef ESP_RSSI_MAX_RSSI
+#undef ESP_RSSI_MIN_RSSI
+#endif /* !NEW_KERNEL && KERNEL_35*/
+        rx_status->antenna = 0;  /* one antenna for now */
+        rx_status->band = IEEE80211_BAND_2GHZ;
+        rx_status->flag = RX_FLAG_DECRYPTED | RX_FLAG_MMIC_STRIPPED;
+        if (mac_ctrl->sig_mode) {
+            // 2.6.27 has RX_FLAG_RADIOTAP in enum mac80211_rx_flags in include/net/mac80211.h
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 29))                
+                rx_status->flag |= RX_FLAG_HT;
+                rx_status->rate_idx = mac_ctrl->MCS;
+                if(mac_ctrl->SGI)
+                        rx_status->flag |= RX_FLAG_SHORT_GI;
+#else
+                rx_status->rate_idx = esp_wmac_rate2idx(0xc);//ESP_RATE_54
+#endif
+        } else {
+                rx_status->rate_idx = esp_wmac_rate2idx(mac_ctrl->rate);
+        }
+        if (mac_ctrl->rxend_state == RX_FCS_ERR)
+                rx_status->flag |= RX_FLAG_FAILED_FCS_CRC;
+
+        /* Mic error frame flag */
+        if (mac_ctrl->rxend_state == RX_TKIPMIC_ERR || mac_ctrl->rxend_state == RX_CCMPMIC_ERR){
+                if(atomic_read(&sip->epub->wl.tkip_key_set) == 1){
+                       rx_status->flag|= RX_FLAG_MMIC_ERROR;
+                       atomic_set(&sip->epub->wl.tkip_key_set, 0);
+                       printk("mic err\n");
+               } else {
+                       printk("mic err discard\n");
+               }
+       }
+
+        //esp_dbg(ESP_DBG_LOG, "%s freq: %u; signal: %d;  rate_idx %d; flag: %d \n", __func__, rx_status->freq, rx_status->signal, rx_status->rate_idx, rx_status->flag);
+
+        do {
+                struct ieee80211_hdr * wh = (struct ieee80211_hdr *)((u8 *)skb->data);
+
+                if (ieee80211_is_beacon(wh->frame_control) || ieee80211_is_probe_resp(wh->frame_control)) {
+                        struct ieee80211_mgmt * mgmt = (struct ieee80211_mgmt *)((u8 *)skb->data);
+                        u8 *start = NULL;
+                        size_t baselen, len = skb->len;
+                        int inconsistency = 0;
+
+                        if (ieee80211_is_beacon(wh->frame_control)) {
+                                start = mgmt->u.beacon.variable;
+                                baselen = (u8 *) mgmt->u.beacon.variable - (u8 *) mgmt;
+                                bcn_counter++;
+                        } else if(ieee80211_is_probe_resp(wh->frame_control)) {
+                                start = mgmt->u.probe_resp.variable;
+                                baselen = (u8 *) mgmt->u.probe_resp.variable - (u8 *) mgmt;
+                                probe_rsp_counter++;
+                        }
+
+                        if (baselen > len)
+                                return -1;
+
+                        inconsistency = sip_channel_value_inconsistency(start, len-baselen, mac_ctrl->channel);
+
+                        if (inconsistency) {
+                                return -1;
+                        }
+                }
+
+#ifdef KERNEL_IV_WAR
+               /* some kernel e.g. 3.0.8 wrongly handles non-encrypted pkt like eapol */
+               if (ieee80211_is_data(wh->frame_control)) {
+                        if( !ieee80211_has_protected(wh->frame_control)) {
+                                esp_sip_dbg(ESP_DBG_TRACE, "%s kiv_war, add iv_stripped flag \n", __func__);
+                                rx_status->flag |= RX_FLAG_IV_STRIPPED;
+                        } else {
+                                if ((atomic_read(&sip->epub->wl.ptk_cnt) == 0 && !(wh->addr1[0] & 0x1)) || 
+                                       (atomic_read(&sip->epub->wl.gtk_cnt) == 0 && (wh->addr1[0] & 0x1))) 
+                               {
+                                        esp_dbg(ESP_DBG_TRACE, "%s ==kiv_war, got bogus enc pkt==\n", __func__);
+                                        rx_status->flag |= RX_FLAG_IV_STRIPPED;
+                                        //show_buf(skb->data, 32);
+                                }
+
+                                esp_sip_dbg(ESP_DBG_TRACE, "%s kiv_war, got enc pkt \n", __func__);
+                        }
+                }
+#endif /* KERNEL_IV_WAR*/
+        } while (0);
+
+        return 0;
+}
+
+static struct esp_mac_rx_ctrl *sip_parse_normal_mac_ctrl(struct sk_buff *skb, int * pkt_len_enc, int *buf_len, int *pulled_len) 
+{
+        struct esp_mac_rx_ctrl *mac_ctrl = NULL;
+        struct sip_hdr *hdr =(struct sip_hdr *)skb->data;
+        int len_in_hdr = hdr->len;
+
+        ASSERT(skb != NULL);
+        ASSERT(skb->len > SIP_MIN_DATA_PKT_LEN);
+
+        skb_pull(skb, sizeof(struct sip_hdr));
+        *pulled_len += sizeof(struct sip_hdr);
+        mac_ctrl = (struct esp_mac_rx_ctrl *)skb->data;
+        if(!mac_ctrl->Aggregation) {
+                ASSERT(pkt_len_enc != NULL);
+                ASSERT(buf_len != NULL);
+                *pkt_len_enc = (mac_ctrl->sig_mode?mac_ctrl->HT_length:mac_ctrl->legacy_length) - FCS_LEN;
+                *buf_len = len_in_hdr - sizeof(struct sip_hdr) - sizeof(struct esp_mac_rx_ctrl);
+        }
+        skb_pull(skb, sizeof(struct esp_mac_rx_ctrl));
+        *pulled_len += sizeof(struct esp_mac_rx_ctrl);
+
+        return mac_ctrl;
+}
+
+/*
+ * for one MPDU (including subframe in AMPDU)
+ *
+ */
+static struct sk_buff * sip_parse_data_rx_info(struct esp_sip *sip, struct sk_buff *skb, int pkt_len_enc, int buf_len, struct esp_mac_rx_ctrl *mac_ctrl, int *pulled_len) {
+        /*
+         *   | mac_rx_ctrl | real_data_payload | ampdu_entries |
+         */
+        //without enc
+        int pkt_len = 0;
+        struct sk_buff *rskb = NULL;
+        int ret;
+
+        if (mac_ctrl->Aggregation) {
+                struct ieee80211_hdr * wh = (struct ieee80211_hdr *)skb->data;
+                pkt_len = pkt_len_enc;
+                if (ieee80211_has_protected(wh->frame_control))//ampdu, it is CCMP enc
+                        pkt_len -= 8;
+                buf_len = roundup(pkt_len, 4);
+        } else
+                pkt_len  = buf_len - 3 + ((pkt_len_enc - 1) & 0x3);
+        esp_dbg(ESP_DBG_TRACE, "%s pkt_len %u, pkt_len_enc %u!, delta %d \n", __func__, pkt_len, pkt_len_enc, pkt_len_enc - pkt_len);
+        do {
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 39))
+                rskb = __dev_alloc_skb(pkt_len_enc + 2, GFP_ATOMIC);
+#else
+                rskb = __dev_alloc_skb(pkt_len_enc, GFP_ATOMIC);
+#endif/* NEW_KERNEL */
+                if (unlikely(rskb == NULL)) {
+                        esp_sip_dbg(ESP_DBG_ERROR, "%s no mem for rskb\n", __func__);
+                        return NULL;
+                }
+                skb_put(rskb, pkt_len_enc);
+        } while(0);
+
+        do {
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 39))
+                do {
+                        struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data;
+                        int hdrlen;
+
+                        hdrlen = ieee80211_hdrlen(hdr->frame_control);
+                        if (unlikely(((unsigned long)(rskb->data + hdrlen)) & 3)) {
+                                skb_put(rskb, 2);
+                                skb_pull(rskb, 2);
+                        }
+                } while(0);
+#endif /* < KERNEL_VERSION(2, 6, 39) */
+                memcpy(rskb->data, skb->data, pkt_len);
+                if (pkt_len_enc > pkt_len) {
+                        memset(rskb->data + pkt_len, 0, pkt_len_enc - pkt_len);
+                }
+                /* strip out current pkt, move to the next one */
+                skb_pull(skb, buf_len);
+                *pulled_len += buf_len;
+        } while (0);
+
+        ret = sip_parse_mac_rx_info(sip, mac_ctrl, rskb);
+        if(ret == -1 && !mac_ctrl->Aggregation) {
+                kfree_skb(rskb);
+                return NULL;
+        }
+
+        esp_dbg(ESP_DBG_LOG, "%s after pull headers, skb->len %d rskb->len %d \n", __func__, skb->len, rskb->len);
+
+        return rskb;
+}
+
+struct esp_sip * sip_attach(struct esp_pub *epub) 
+{
+        struct esp_sip *sip = NULL;
+        struct sip_pkt *pkt = NULL;
+        int i;
+
+        sip = kzalloc(sizeof(struct esp_sip), GFP_KERNEL);
+        ASSERT(sip != NULL);
+
+#ifdef ESP_RX_COPYBACK_TEST
+        /* alloc 64KB for rx test */
+        copyback_buf = kzalloc(0x10000, GFP_KERNEL);
+#endif /* ESP_RX_COPYBACK_TEST */
+
+        spin_lock_init(&sip->lock);
+
+        INIT_LIST_HEAD(&sip->free_ctrl_txbuf);
+        INIT_LIST_HEAD(&sip->free_ctrl_rxbuf);
+
+        for (i = 0; i < SIP_CTRL_BUF_N; i++) {
+                pkt = kzalloc(sizeof(struct sip_pkt), GFP_KERNEL);
+
+                if (!pkt) break;
+
+                pkt->buf_begin = kzalloc(SIP_CTRL_BUF_SZ, GFP_KERNEL);
+
+                if (pkt->buf_begin == NULL) {
+                        kfree(pkt);
+                        break;
+                }
+
+                pkt->buf_len = SIP_CTRL_BUF_SZ;
+                pkt->buf = pkt->buf_begin;
+
+                if (i < SIP_CTRL_TXBUF_N) {
+                        list_add_tail(&pkt->list, &sip->free_ctrl_txbuf);
+                } else {
+                        list_add_tail(&pkt->list, &sip->free_ctrl_rxbuf);
+                }
+        }
+
+        spin_lock_init(&sip->rx_lock);
+        skb_queue_head_init(&sip->rxq);
+#ifndef RX_SYNC
+        INIT_WORK(&sip->rx_process_work, sip_rxq_process);
+#endif/* RX_SYNC */
+
+        sip->epub = epub;
+       sip->noise_floor = -96;
+
+        atomic_set(&sip->state, SIP_INIT);
+       atomic_set(&sip->tx_credits, 0);
+
+        return sip;
+}
+
+static void sip_free_init_ctrl_buf(struct esp_sip *sip)
+{
+        struct sip_pkt *pkt, *tpkt;
+
+        list_for_each_entry_safe(pkt, tpkt,
+                                 &sip->free_ctrl_txbuf, list) {
+                list_del(&pkt->list);
+                kfree(pkt->buf_begin);
+                kfree(pkt);
+        }
+
+        list_for_each_entry_safe(pkt, tpkt,
+                                 &sip->free_ctrl_rxbuf, list) {
+                list_del(&pkt->list);
+                kfree(pkt->buf_begin);
+                kfree(pkt);
+        }
+}
+
+void sip_detach(struct esp_sip *sip)
+{
+        int po;
+
+        sip_free_init_ctrl_buf(sip);
+
+        if (atomic_read(&sip->state) == SIP_RUN) {
+
+                sif_disable_target_interrupt(sip->epub);
+
+                atomic_set(&sip->state, SIP_STOP);
+
+                /* disable irq here */
+                sif_disable_irq(sip->epub);
+#ifndef RX_SYNC
+                cancel_work_sync(&sip->rx_process_work);
+#endif/* RX_SYNC */
+
+                skb_queue_purge(&sip->rxq);
+                cancel_work_sync(&sip->epub->sendup_work);
+                skb_queue_purge(&sip->epub->rxq);
+
+#ifdef ESP_NO_MAC80211
+                unregister_netdev(sip->epub->net_dev);
+                wiphy_unregister(sip->epub->wdev->wiphy);
+#else
+                if (test_and_clear_bit(ESP_WL_FLAG_HW_REGISTERED, &sip->epub->wl.flags)) {
+                        ieee80211_unregister_hw(sip->epub->hw);
+                }
+#endif
+
+                /* cancel all worker/timer */
+                cancel_work_sync(&sip->epub->tx_work);
+                skb_queue_purge(&sip->epub->txq);
+                skb_queue_purge(&sip->epub->txdoneq);
+
+                po = get_order(SIP_TX_AGGR_BUF_SIZE);
+                free_pages((unsigned long)sip->tx_aggr_buf, po);
+                sip->tx_aggr_buf = NULL;
+#if 0
+                po = get_order(SIP_RX_AGGR_BUF_SIZE);
+                free_pages((unsigned long)sip->rx_aggr_buf, po);
+                sip->rx_aggr_buf = NULL;
+#endif
+                atomic_set(&sip->state, SIP_INIT);
+        } else if (atomic_read(&sip->state) >= SIP_BOOT && atomic_read(&sip->state) <= SIP_WAIT_BOOTUP) {
+
+                sif_disable_target_interrupt(sip->epub);
+                atomic_set(&sip->state, SIP_STOP);
+                sif_disable_irq(sip->epub);
+
+                if (sip->rawbuf)
+                        kfree(sip->rawbuf);
+
+                if (atomic_read(&sip->state) == SIP_SEND_INIT) {
+#ifndef RX_SYNC
+                        cancel_work_sync(&sip->rx_process_work);
+#endif/* RX_SYNC */
+                        skb_queue_purge(&sip->rxq);
+                        cancel_work_sync(&sip->epub->sendup_work);
+                        skb_queue_purge(&sip->epub->rxq);
+                }
+
+#ifdef ESP_NO_MAC80211
+                unregister_netdev(sip->epub->net_dev);
+                wiphy_unregister(sip->epub->wdev->wiphy);
+#else
+                if (test_and_clear_bit(ESP_WL_FLAG_HW_REGISTERED, &sip->epub->wl.flags)) {
+                        ieee80211_unregister_hw(sip->epub->hw);
+                }
+#endif
+                        atomic_set(&sip->state, SIP_INIT);
+        } else
+                esp_dbg(ESP_DBG_ERROR, "%s wrong state %d\n", __func__, atomic_read(&sip->state));
+
+        kfree(sip);
+}
+
+int sip_prepare_boot(struct esp_sip *sip)
+{
+        if (atomic_read(&sip->state) != SIP_INIT) {
+                esp_dbg(ESP_DBG_ERROR, "%s wrong state %d\n", __func__, atomic_read(&sip->state));
+                return -1;
+        }
+
+        if (sip->rawbuf == NULL) {
+                sip->rawbuf = kzalloc(SIP_BOOT_BUF_SIZE, GFP_KERNEL);
+
+                if (sip->rawbuf == NULL)
+                        return -ENOMEM;
+        }
+
+        atomic_set(&sip->state, SIP_PREPARE_BOOT);
+        
+       return 0;
+}
+
+int sip_write_memory(struct esp_sip *sip, u32 addr, u8 *buf, u16 len)
+{
+        struct sip_cmd_write_memory *cmd;
+        struct sip_hdr *chdr;
+        u16 remains, hdrs, bufsize;
+        u32 loadaddr;
+        u8 *src;
+        int err = 0;
+        u32 *t = 0;
+
+        ASSERT(sip->rawbuf != NULL);
+
+        memset(sip->rawbuf, 0, SIP_BOOT_BUF_SIZE);
+
+        chdr = (struct sip_hdr *)sip->rawbuf;
+        SIP_HDR_SET_TYPE(chdr->fc[0], SIP_CTRL);
+        chdr->c_cmdid = SIP_CMD_WRITE_MEMORY;
+
+        remains = len;
+        hdrs = sizeof(struct sip_hdr) + sizeof(struct sip_cmd_write_memory);
+
+        while (remains) {
+                src = &buf[len - remains];
+                loadaddr = addr + (len - remains);
+
+                if (remains < (SIP_BOOT_BUF_SIZE - hdrs)) {
+                        /* aligned with 4 bytes */
+                        bufsize = roundup(remains, 4);
+                        memset(sip->rawbuf + hdrs, 0, bufsize);
+                        remains = 0;
+                } else {
+                        bufsize = SIP_BOOT_BUF_SIZE - hdrs;
+                        remains -=  bufsize;
+                }
+
+                chdr->len = bufsize + hdrs;
+                chdr->seq = sip->txseq++;
+                cmd = (struct sip_cmd_write_memory *)(sip->rawbuf + SIP_CTRL_HDR_LEN);
+                cmd->len = bufsize;
+                cmd->addr = loadaddr;
+                memcpy(sip->rawbuf+hdrs, src, bufsize);
+
+                t = (u32 *)sip->rawbuf;
+                esp_dbg(ESP_DBG_TRACE, "%s t0: 0x%08x t1: 0x%08x t2:0x%08x loadaddr 0x%08x \n", __func__, t[0], t[1], t[2], loadaddr);
+
+                               err = esp_common_write(sip->epub, sip->rawbuf, chdr->len, ESP_SIF_SYNC);
+
+                if (err) {
+                        esp_dbg(ESP_DBG_ERROR, "%s send buffer failed\n", __func__);
+                        return err;
+                }
+
+                // 1ms is enough, in fact on dell-d430, need not delay at all.
+                mdelay(1);
+
+                sip_dec_credit(sip);
+        }
+
+        return err;
+}
+
+int sip_send_cmd(struct esp_sip *sip, int cid, u32 cmdlen, void *cmd)
+{
+        struct sip_hdr *chdr;
+        struct sip_pkt *pkt = NULL;
+        int ret = 0;
+
+        pkt = sip_get_ctrl_buf(sip, SIP_TX_CTRL_BUF);
+
+        if (pkt == NULL)
+                return -ENOMEM;
+
+        chdr = (struct sip_hdr *)pkt->buf_begin;
+        chdr->len = SIP_CTRL_HDR_LEN + cmdlen;
+        chdr->seq = sip->txseq++;
+        chdr->c_cmdid = cid;
+       
+
+       if (cmd) {
+               memset(pkt->buf, 0, cmdlen);
+               memcpy(pkt->buf, (u8 *)cmd, cmdlen);
+       }
+
+        esp_dbg(ESP_DBG_TRACE, "cid %d, len %u, seq %u \n", chdr->c_cmdid, chdr->len, chdr->seq);
+
+        esp_dbg(ESP_DBG_TRACE, "c1 0x%08x   c2 0x%08x\n", *(u32 *)&pkt->buf[0], *(u32 *)&pkt->buf[4]);
+
+               ret = esp_common_write(sip->epub, pkt->buf_begin, chdr->len, ESP_SIF_SYNC);
+
+        if (ret)
+                esp_dbg(ESP_DBG_ERROR, "%s send cmd %d failed \n", __func__, cid);
+
+        sip_dec_credit(sip);
+
+        sip_reclaim_ctrl_buf(sip, pkt, SIP_TX_CTRL_BUF);
+
+        /*
+         *  Hack here: reset tx/rx seq before target ram code is up...
+         */
+        if (cid == SIP_CMD_BOOTUP) {
+                sip->rxseq = 0;
+                sip->txseq = 0;
+               sip->txdataseq = 0;
+        }
+
+        return ret;
+}
+
+struct sk_buff *
+sip_alloc_ctrl_skbuf(struct esp_sip *sip, u16 len, u32 cid) {
+        struct sip_hdr *si = NULL;
+        struct ieee80211_tx_info *ti = NULL;
+        struct sk_buff *skb = NULL;
+
+        ASSERT(len <= sip->tx_blksz);
+
+        /* no need to reserve space for net stack */
+        skb = __dev_alloc_skb(len, GFP_KERNEL);
+
+        if (skb == NULL) {
+                esp_dbg(ESP_DBG_ERROR, "no skb for ctrl !\n");
+                return NULL;
+        }
+
+        skb->len = len;
+
+        ti = IEEE80211_SKB_CB(skb);
+        /* set tx_info flags to 0xffffffff to indicate sip_ctrl pkt */
+        ti->flags = 0xffffffff;
+        si = (struct sip_hdr *)skb->data;
+        memset(si, 0, sizeof(struct sip_hdr));
+        SIP_HDR_SET_TYPE(si->fc[0], SIP_CTRL);
+        si->len = len;
+        si->c_cmdid = cid;
+
+        return skb;
+}
+
+void
+sip_free_ctrl_skbuff(struct esp_sip *sip, struct sk_buff *skb)
+{
+        memset(IEEE80211_SKB_CB(skb), 0, sizeof(struct ieee80211_tx_info));
+        kfree_skb(skb);
+}
+
+static struct sip_pkt *
+sip_get_ctrl_buf(struct esp_sip *sip, SIP_BUF_TYPE bftype) {
+        struct sip_pkt *pkt = NULL;
+        struct list_head *bflist;
+        struct sip_hdr *chdr;
+
+        bflist = (bftype == SIP_TX_CTRL_BUF) ? &sip->free_ctrl_txbuf :&sip->free_ctrl_rxbuf;
+
+        spin_lock_bh(&sip->lock);
+
+        if (list_empty(bflist)) {
+                spin_unlock_bh(&sip->lock);
+                return NULL;
+        }
+
+        pkt = list_first_entry(bflist, struct sip_pkt, list);
+        list_del(&pkt->list);
+        spin_unlock_bh(&sip->lock);
+
+        if (bftype == SIP_TX_CTRL_BUF) {
+                chdr = (struct sip_hdr *)pkt->buf_begin;
+                SIP_HDR_SET_TYPE(chdr->fc[0], SIP_CTRL);
+                pkt->buf = pkt->buf_begin + SIP_CTRL_HDR_LEN;
+        } else {
+                pkt->buf = pkt->buf_begin;
+        }
+
+        return pkt;
+}
+
+static void
+sip_reclaim_ctrl_buf(struct esp_sip *sip, struct sip_pkt *pkt, SIP_BUF_TYPE bftype)
+{
+        struct list_head *bflist = NULL;
+
+        if (bftype == SIP_TX_CTRL_BUF)
+                bflist = &sip->free_ctrl_txbuf;
+        else if (bftype == SIP_RX_CTRL_BUF)
+                bflist = &sip->free_ctrl_rxbuf;
+        else return;
+
+        pkt->buf = pkt->buf_begin;
+        pkt->payload_len = 0;
+
+        spin_lock_bh(&sip->lock);
+        list_add_tail(&pkt->list, bflist);
+        spin_unlock_bh(&sip->lock);
+}
+
+int
+sip_poll_bootup_event(struct esp_sip *sip)
+{
+       int ret = 0;
+
+        esp_dbg(ESP_DBG_TRACE, "polling bootup event... \n");
+
+       if (gl_bootup_cplx)
+               ret = wait_for_completion_timeout(gl_bootup_cplx, 2 * HZ);
+
+       esp_dbg(ESP_DBG_TRACE, "******time remain****** = [%d]\n", ret);
+       if (ret <= 0) {
+               esp_dbg(ESP_DBG_ERROR, "bootup event timeout\n");
+               return ret;
+       }       
+
+#ifndef FPGA_LOOPBACK
+        ret = esp_register_mac80211(sip->epub);
+#endif /* !FPGA_LOOPBACK */
+
+#ifdef TEST_MODE
+        ret = test_init_netlink(sip);
+        if (ret < 0) {
+                esp_sip_dbg(ESP_DBG_TRACE, "esp_sdio: failed initializing netlink\n");
+               return ret;
+       }
+#endif
+        
+       atomic_set(&sip->state, SIP_RUN);
+        esp_dbg(ESP_DBG_TRACE, "target booted up\n");
+
+       return ret;
+}
+
+int
+sip_poll_resetting_event(struct esp_sip *sip)
+{
+       int ret = 0;
+
+        esp_dbg(ESP_DBG_TRACE, "polling resetting event... \n");
+
+       if (gl_bootup_cplx)
+               ret = wait_for_completion_timeout(gl_bootup_cplx, 10 * HZ);
+
+       esp_dbg(ESP_DBG_TRACE, "******time remain****** = [%d]\n", ret);
+       if (ret <= 0) {
+               esp_dbg(ESP_DBG_ERROR, "resetting event timeout\n");
+               return ret;
+       }       
+      
+        esp_dbg(ESP_DBG_TRACE, "target resetting %d %p\n", ret, gl_bootup_cplx);
+
+       return ret;
+}
+
+
+#ifdef FPGA_DEBUG
+
+/* bogus bootup cmd for FPGA debugging */
+int
+sip_send_bootup(struct esp_sip *sip)
+{
+        int ret;
+        struct sip_cmd_bootup bootcmd;
+
+        esp_dbg(ESP_DBG_LOG, "sending bootup\n");
+
+        bootcmd.boot_addr = 0;
+        ret = sip_send_cmd(sip, SIP_CMD_BOOTUP, sizeof(struct sip_cmd_bootup), &bootcmd);
+
+        return ret;
+}
+
+#endif /* FPGA_DEBUG */
+
+bool
+sip_queue_need_stop(struct esp_sip *sip)
+{
+        return atomic_read(&sip->tx_data_pkt_queued) >= SIP_STOP_QUEUE_THRESHOLD
+               || (atomic_read(&sip->tx_credits) < 8
+               && atomic_read(&sip->tx_data_pkt_queued) >= SIP_STOP_QUEUE_THRESHOLD / 4 * 3);
+}
+
+bool
+sip_queue_may_resume(struct esp_sip *sip)
+{
+       return atomic_read(&sip->epub->txq_stopped)
+               && !test_bit(ESP_WL_FLAG_STOP_TXQ, &sip->epub->wl.flags)
+               && ((atomic_read(&sip->tx_credits) >= 16
+               && atomic_read(&sip->tx_data_pkt_queued) < SIP_RESUME_QUEUE_THRESHOLD * 2)
+               || atomic_read(&sip->tx_data_pkt_queued) < SIP_RESUME_QUEUE_THRESHOLD);
+}
+
+#ifndef FAST_TX_STATUS
+bool
+sip_tx_data_need_stop(struct esp_sip *sip)
+{
+        return atomic_read(&sip->pending_tx_status) >= SIP_PENDING_STOP_TX_THRESHOLD;
+}
+
+bool
+sip_tx_data_may_resume(struct esp_sip *sip)
+{
+        return atomic_read(&sip->pending_tx_status) < SIP_PENDING_RESUME_TX_THRESHOLD;
+}
+#endif /* FAST_TX_STATUS */
+
+int
+sip_cmd_enqueue(struct esp_sip *sip, struct sk_buff *skb)
+{
+       if (!sip || !sip->epub) {
+               esp_dbg(ESP_DBG_ERROR, "func %s, sip->epub->txq is NULL\n", __func__);
+               return -1;
+       }
+       
+       if (!skb) {
+               esp_dbg(ESP_DBG_ERROR, "func %s, skb is NULL\n", __func__);
+               return -2;
+       }
+
+        skb_queue_tail(&sip->epub->txq, skb);
+
+#if  !defined(FPGA_LOOPBACK) && (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 32))
+        ieee80211_queue_work(sip->epub->hw, &sip->epub->tx_work);
+#else
+        queue_work(sip->epub->esp_wkq, &sip->epub->tx_work);
+#endif
+        return 0;
+}
+
+void sip_tx_data_pkt_enqueue(struct esp_pub *epub, struct sk_buff *skb)
+{
+       if(!epub || !epub->sip) {
+               if (!epub)
+                       esp_dbg(ESP_DBG_ERROR, "func %s, epub is NULL\n", __func__);
+               else
+                       esp_dbg(ESP_DBG_ERROR, "func %s, epub->sip is NULL\n", __func__);
+
+               return;
+       }
+       if (!skb) {
+                esp_dbg(ESP_DBG_ERROR, "func %s, skb is NULL\n", __func__);
+                return;
+        }
+        skb_queue_tail(&epub->txq, skb);
+        atomic_inc(&epub->sip->tx_data_pkt_queued);
+       if(sip_queue_need_stop(epub->sip)){
+               if (epub->hw) {
+                       ieee80211_stop_queues(epub->hw);
+                       atomic_set(&epub->txq_stopped, true);
+               }
+
+       }
+}
+
+#ifdef FPGA_TXDATA
+int sip_send_tx_data(struct esp_sip *sip)
+{
+        struct sk_buff *skb = NULL;
+        struct sip_cmd_bss_info_update*bsscmd;
+
+        skb = sip_alloc_ctrl_skbuf(epub->sip, sizeof(struct sip_cmd_bss_info_update), SIP_CMD_BSS_INFO_UPDATE);
+        if (!skb)
+                return -1;
+
+        bsscmd = (struct sip_cmd_bss_info_update *)(skb->data + sizeof(struct sip_tx_info));
+        bsscmd->isassoc= (assoc==true)? 1: 0;
+        memcpy(bsscmd->bssid, bssid, ETH_ALEN);
+        STRACE_SHOW(epub->sip);
+        return sip_cmd_enqueue(epub->sip, skb);
+}
+#endif /* FPGA_TXDATA */
+
+#ifdef SIP_DEBUG
+void sip_dump_pending_data(struct esp_pub *epub)
+{
+#if 0
+        struct sk_buff *tskb, *tmp;
+
+        skb_queue_walk_safe(&epub->txdoneq, tskb, tmp) {
+                show_buf(tskb->data, 32);
+        }
+#endif //0000
+}
+#else
+void sip_dump_pending_data(struct esp_pub *epub)
+{}
+#endif /* SIP_DEBUG */
+
diff --git a/drivers/net/wireless/rockchip_wlan/esp8089/esp_sip.h b/drivers/net/wireless/rockchip_wlan/esp8089/esp_sip.h
new file mode 100755 (executable)
index 0000000..118d863
--- /dev/null
@@ -0,0 +1,172 @@
+/*
+ *  Copyright (c) 2009- 2012 Espressif System.
+ *
+ *    Serial Interconnctor Protocol
+ */
+
+#ifndef _ESP_SIP_H
+#define _ESP_SIP_H
+
+#include "sip2_common.h"
+
+#define SIP_PKT_MAX_LEN (1024*16)
+
+/* 16KB on normal X86 system, should check before porting to orhters */
+
+#define SIP_TX_AGGR_BUF_SIZE (4 * PAGE_SIZE)
+#define SIP_RX_AGGR_BUF_SIZE (4 * PAGE_SIZE)
+
+struct sk_buff;
+
+struct sip_pkt {
+        struct list_head list;
+
+        u8 * buf_begin;
+        u32  buf_len;
+        u8 * buf;
+        u32  payload_len;
+#if 0
+        union {
+                struct sip_tx_pkt_info tx;
+                struct sip_rx_pkt_info rx;
+        } info;
+#endif
+        void *context;
+        int status;
+        //void (* completion)(struct esp_sip *sip, struct sip_pkt *pkt);
+};
+
+typedef enum SIP_STATE {
+        SIP_INIT = 0,
+       SIP_PREPARE_BOOT,
+        SIP_BOOT,
+       SIP_SEND_INIT,
+       SIP_WAIT_BOOTUP,
+        SIP_RUN,
+        SIP_SUSPEND,
+        SIP_STOP
+} SIP_STATE;
+
+enum sip_notifier {
+        SIP_TX_DONE = 1,
+        SIP_RX_DONE = 2,
+};
+
+#define SIP_CREDITS_LOW_THRESHOLD  64  //i.e. 4k
+
+struct esp_sip {
+        struct list_head free_ctrl_txbuf;
+        struct list_head free_ctrl_rxbuf;
+
+        u32 rxseq; /* sip pkt seq, should match target side */
+        u32 txseq;
+       u32 txdataseq;
+
+        atomic_t state;
+        spinlock_t lock;
+        int boot_credits;
+        atomic_t tx_credits;
+
+        atomic_t tx_ask_credit_update;
+
+        u8 * rawbuf;  /* used in boot stage, free once chip is fully up */
+        u8 * tx_aggr_buf;
+        u8 * tx_aggr_write_ptr;  /* update after insertion of each pkt */
+        u8 * tx_aggr_lastpkt_ptr;
+#if 0
+        u8 * rx_aggr_buf;
+        u8 * rx_aggr_write_ptr;
+        u8 * rx_aggr_lastpkt_ptr;
+#endif
+
+        spinlock_t rx_lock;
+        struct sk_buff_head rxq;
+#ifndef RX_SYNC
+        struct work_struct rx_process_work;
+#endif/* RX_SYNC */
+
+        u16 tx_blksz;
+        u16 rx_blksz;
+
+        bool dump_rpbm_err;
+        bool sendup_rpbm_pkt;
+        bool rxabort_fixed;
+        bool support_bgscan;
+        u8 credit_to_reserve;
+       s16 noise_floor;
+
+        u32 tx_tot_len; /* total len for one transaction */
+        u32 rx_tot_len;
+
+        atomic_t rx_handling;
+        atomic_t tx_data_pkt_queued;
+
+#ifndef FAST_TX_STATUS
+        atomic_t pending_tx_status;
+#endif /* !FAST_TX_STATUS */
+
+        atomic_t data_tx_stopped;
+        atomic_t tx_stopped;
+
+        struct esp_pub *epub;
+};
+
+int sip_rx(struct esp_pub * epub);
+//int sip_download_fw(struct esp_sip *sip, u32 load_addr, u32 boot_addr);
+
+/* tx must pad as 4-byte aligned */
+int sip_tx(struct esp_pub * epub, struct sip_pkt *pkt);
+
+int sip_get_raw_credits(struct esp_sip *);
+
+int sip_write_memory(struct esp_sip *, u32 addr, u8* buf, u16 len);
+
+void sip_credit_process(struct esp_pub *, u8 credits);
+
+int sip_prepare_boot(struct esp_sip *sip);
+
+int sip_send_cmd(struct esp_sip *sip, int cid, u32 cmdlen, void * cmd);
+
+struct esp_sip * sip_attach(struct esp_pub *);
+
+int sip_post_init(struct esp_sip *sip, struct sip_evt_bootup2 *bevt);
+
+void sip_detach(struct esp_sip *sip);
+
+void sip_txq_process(struct esp_pub *epub);
+
+struct sk_buff * sip_alloc_ctrl_skbuf(struct esp_sip *sip, u16 len, u32 cid);
+
+void sip_free_ctrl_skbuff(struct esp_sip *sip, struct sk_buff* skb);
+
+bool sip_queue_need_stop(struct esp_sip *sip);
+bool sip_queue_may_resume(struct esp_sip *sip);
+bool sip_tx_data_need_stop(struct esp_sip *sip);
+bool sip_tx_data_may_resume(struct esp_sip *sip);
+
+void sip_tx_data_pkt_enqueue(struct esp_pub *epub, struct sk_buff *skb);
+void sip_rx_data_pkt_enqueue(struct esp_pub *epub, struct sk_buff *skb);
+
+int sip_cmd_enqueue(struct esp_sip *sip, struct sk_buff *skb);
+
+void sip_dump_pending_data(struct esp_pub *epub);
+
+int sip_poll_bootup_event(struct esp_sip *sip);
+
+int sip_poll_resetting_event(struct esp_sip *sip);
+
+void sip_trigger_txq_process(struct esp_sip *sip);
+
+void sip_send_chip_init(struct esp_sip *sip);
+
+bool mod_support_no_txampdu(void);
+
+bool mod_support_no_rxampdu(void);
+
+void mod_support_no_txampdu_set(bool value);
+
+#ifdef FPGA_DEBUG
+int sip_send_bootup(struct esp_sip *sip);
+#endif /* FPGA_DEBUG */
+void sip_debug_show(struct esp_sip *sip);
+#endif
diff --git a/drivers/net/wireless/rockchip_wlan/esp8089/esp_utils.c b/drivers/net/wireless/rockchip_wlan/esp8089/esp_utils.c
new file mode 100755 (executable)
index 0000000..aa697bd
--- /dev/null
@@ -0,0 +1,232 @@
+/*
+ * Copyright (c) 2012 Espressif System.
+ */
+
+#include "linux/types.h"
+#include "linux/kernel.h"
+#include <linux/ieee80211.h>
+#include <net/mac80211.h>
+#include <linux/skbuff.h>
+
+#include <net/tcp.h>
+#include <linux/ip.h>
+#include <asm/checksum.h>
+
+#include "esp_pub.h"
+#include "esp_utils.h"
+#include "esp_wmac.h"
+#include "esp_debug.h"
+
+/*
+ * Convert IEEE channel number to MHz frequency.
+ */
+u32
+esp_ieee2mhz(u8 chan)
+{
+        if (chan == 14)
+                return 2484;
+
+        if (chan < 14)
+                return 2407 + chan*5;
+        else
+                return 2512 + ((chan-15)*20);
+}
+enum {
+        ESP_RATE_1_LONG = 0x0,
+        ESP_RATE_2_LONG = 0x1,
+        ESP_RATE_2_SHORT = 0x5,
+        ESP_RATE_5_SHORT = 0x6,
+        ESP_RATE_5_LONG = 0x2,
+        ESP_RATE_11_SHORT = 0x7,
+        ESP_RATE_11_LONG = 0x3,
+        ESP_RATE_6 = 0xb,
+        ESP_RATE_9 = 0xf,
+        ESP_RATE_12 = 0xa,
+        ESP_RATE_18 = 0xe,
+        ESP_RATE_24 = 0x9,
+        ESP_RATE_36 = 0xd,
+        ESP_RATE_48 = 0x8,
+        ESP_RATE_54 = 0xc,
+        /*        ESP_RATE_MCS0 =0x10,
+                ESP_RATE_MCS1 =0x11,
+                ESP_RATE_MCS2 =0x12,
+                ESP_RATE_MCS3 =0x13,
+                ESP_RATE_MCS4 =0x14,
+                ESP_RATE_MCS5 =0x15,
+                ESP_RATE_MCS6 =0x16,
+                ESP_RATE_MCS7 =0x17,
+        */
+};
+
+static u8 esp_rate_table[20] = {
+        ESP_RATE_1_LONG,
+        ESP_RATE_2_SHORT,
+        ESP_RATE_5_SHORT,
+        ESP_RATE_11_SHORT,
+        ESP_RATE_6,
+        ESP_RATE_9,
+        ESP_RATE_12,
+        ESP_RATE_18,
+        ESP_RATE_24,
+        ESP_RATE_36,
+        ESP_RATE_48,
+        ESP_RATE_54,
+        /*        ESP_RATE_MCS0,
+                ESP_RATE_MCS1,
+                ESP_RATE_MCS2,
+                ESP_RATE_MCS3,
+                ESP_RATE_MCS4,
+                ESP_RATE_MCS5,
+                ESP_RATE_MCS6,
+                ESP_RATE_MCS7,
+        */
+};
+
+s8 esp_wmac_rate2idx(u8 rate)
+{
+        int i;
+
+        for (i = 0; i < 20; i++) {
+                if (rate == esp_rate_table[i])
+                        return i;
+        }
+
+        if (rate == ESP_RATE_2_LONG)
+                return 1;
+        if (rate == ESP_RATE_5_LONG)
+                return 2;
+        if (rate == ESP_RATE_11_LONG)
+                return 3;
+
+        esp_dbg(ESP_DBG_ERROR,"%s unknown rate 0x%02x \n", __func__, rate);
+
+        return 0;
+}
+
+bool esp_wmac_rxsec_error(u8 error)
+{
+        return (error >= RX_SECOV_ERR && error <= RX_SECFIFO_TIMEOUT) || (error >= RX_WEPICV_ERR && error <= RX_WAPIMIC_ERR);
+}
+
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 39))
+int esp_cipher2alg(int cipher)
+{
+        if (cipher == WLAN_CIPHER_SUITE_TKIP)
+                return ALG_TKIP;
+
+        if (cipher == WLAN_CIPHER_SUITE_CCMP)
+                return ALG_CCMP;
+
+        if (cipher == WLAN_CIPHER_SUITE_WEP40 || cipher == WLAN_CIPHER_SUITE_WEP104)
+                return ALG_WEP;
+       
+       if (cipher == WLAN_CIPHER_SUITE_AES_CMAC)
+                       return ALG_AES_CMAC;
+
+        //printk("%s wrong cipher 0x%x!\n",__func__,cipher);
+
+        return -1;
+}
+#endif /* NEW_KERNEL */
+
+#ifdef RX_CHECKSUM_TEST
+atomic_t g_iv_len;
+void esp_rx_checksum_test(struct sk_buff *skb)
+{
+       static u32 ip_err = 0;
+       static u32 tcp_err = 0;
+       struct ieee80211_hdr *pwh = (struct ieee80211_hdr *)skb->data;
+       int hdrlen = ieee80211_hdrlen(pwh->frame_control);
+       
+       if(ieee80211_has_protected(pwh->frame_control))
+               hdrlen += atomic_read(&g_iv_len);
+
+       if (ieee80211_is_data(pwh->frame_control)) {
+               struct llc_snap_hdr * llc = (struct llc_snap_hdr *)(skb->data + hdrlen);
+               if (ntohs(llc->eth_type) == ETH_P_IP) {
+                       int llclen = sizeof(struct llc_snap_hdr);
+                       struct iphdr *iph = (struct iphdr *)(skb->data + hdrlen + llclen);
+                       __sum16 csum_bak = iph->check;
+
+                       iph->check = 0;
+                       iph->check = ip_fast_csum(iph, iph->ihl);
+                       if (iph->check != csum_bak) {
+                               esp_dbg(ESP_DBG_ERROR, "total ip checksum error %d\n", ++ip_err);
+                       }
+                       iph->check = csum_bak;
+
+                       if (iph->protocol == 0x06) {
+                               struct tcphdr *tcph = (struct tcphdr *)(skb->data + hdrlen + llclen + iph->ihl * 4);
+                               int datalen = skb->len - (hdrlen + llclen + iph->ihl * 4);
+                               csum_bak = tcph->check;
+
+                               tcph->check = 0;
+                               tcph->check = tcp_v4_check(datalen, iph->saddr, iph->daddr, csum_partial((char *)tcph, datalen, 0));
+                               if (tcph->check != csum_bak)
+                               {
+                                       esp_dbg(ESP_DBG_ERROR, "total tcp checksum error %d\n", ++tcp_err);
+                               }
+                               tcph->check = csum_bak;
+                       }
+        }
+       }
+}
+
+#endif
+
+#ifdef GEN_ERR_CHECKSUM
+
+void esp_gen_err_checksum(struct sk_buff *skb)
+{
+        static u32 tx_seq = 0;
+       if ((tx_seq++ % 16) == 0)
+       {
+               struct ieee80211_hdr * hdr = (struct ieee80211_hdr *)skb->data;
+               int hdrlen = ieee80211_hdrlen(hdr->frame_control);
+       
+               if(ieee80211_has_protected(pwh->frame_control))
+                       hdrlen += IEEE80211_SKB_CB(skb)->control.hw_key->iv_len;
+
+               struct llc_snap_hdr * llc = (struct llc_snap_hdr *)(skb->data + hdrlen);
+               if (ntohs(llc->eth_type) == ETH_P_IP) {
+                       int llclen = sizeof(struct llc_snap_hdr);
+                       struct iphdr *iph = (struct iphdr *)(skb->data + hdrlen + llclen);
+
+                       iph->check = ~iph->check;
+
+                       if (iph->protocol == 0x06) {
+                               struct tcphdr *tcph = (struct tcphdr *)(skb->data + hdrlen + llclen + iph->ihl * 4);
+                               tcph->check = ~tcph->check;
+                       }
+               }
+       }
+}
+#endif
+
+bool esp_is_ip_pkt(struct sk_buff *skb)
+{
+                struct ieee80211_hdr * hdr = (struct ieee80211_hdr *)skb->data;
+                int hdrlen;
+                struct llc_snap_hdr * llc;
+               
+               if (!ieee80211_is_data(hdr->frame_control))
+                       return false;
+               
+               hdrlen = ieee80211_hdrlen(hdr->frame_control);
+               if(ieee80211_has_protected(hdr->frame_control))
+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 27))
+                       hdrlen += IEEE80211_SKB_CB(skb)->control.hw_key->iv_len;
+#else
+                       hdrlen += IEEE80211_SKB_CB(skb)->control.iv_len;
+#endif
+#ifdef RX_CHECKSUM_TEST
+               atomic_set(&g_iv_len, IEEE80211_SKB_CB(skb)->control.hw_key->iv_len);
+#endif
+               if(skb->len < hdrlen + sizeof(struct llc_snap_hdr))
+                       return false;
+               llc = (struct llc_snap_hdr *)(skb->data + hdrlen);
+                if (ntohs(llc->eth_type) != ETH_P_IP)
+                       return false;
+               else
+                       return true;
+}
diff --git a/drivers/net/wireless/rockchip_wlan/esp8089/esp_utils.h b/drivers/net/wireless/rockchip_wlan/esp8089/esp_utils.h
new file mode 100755 (executable)
index 0000000..7de7463
--- /dev/null
@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 2011-2012 Espressif System.
+ */
+
+#ifndef _ESP_UTILS_H_
+#define _ESP_UTILS_H_
+
+#include "linux/types.h"
+#include <linux/version.h>
+
+#ifndef BIT
+#define BIT(x) (0x1 << (x))
+#endif
+
+u32 esp_ieee2mhz(u8 chan);
+
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 39))
+enum ieee80211_key_alg {
+        ALG_WEP,
+        ALG_TKIP,
+        ALG_CCMP,
+        ALG_AES_CMAC
+};
+
+int esp_cipher2alg(int cipher);
+
+void esp_rx_checksum_test(struct sk_buff *skb);
+void esp_gen_err_checksum(struct sk_buff *skb);
+
+#endif /* NEW_KERNEL */
+
+bool esp_is_ip_pkt(struct sk_buff *skb);
+
+#endif
diff --git a/drivers/net/wireless/rockchip_wlan/esp8089/esp_version.h b/drivers/net/wireless/rockchip_wlan/esp8089/esp_version.h
new file mode 100755 (executable)
index 0000000..635b80b
--- /dev/null
@@ -0,0 +1 @@
+#define DRIVER_VER 0x18a2bc815cc5ll
diff --git a/drivers/net/wireless/rockchip_wlan/esp8089/esp_wl.h b/drivers/net/wireless/rockchip_wlan/esp8089/esp_wl.h
new file mode 100755 (executable)
index 0000000..8bc5491
--- /dev/null
@@ -0,0 +1,61 @@
+#ifndef _ESP_WL_H_
+#define _ESP_WL_H_
+
+//#define MAX_PROBED_SSID_INDEX 9
+
+
+enum {
+        CONF_HW_BIT_RATE_1MBPS   = BIT(0),
+        CONF_HW_BIT_RATE_2MBPS   = BIT(1),
+        CONF_HW_BIT_RATE_5_5MBPS = BIT(2),
+        CONF_HW_BIT_RATE_11MBPS  = BIT(3),
+        CONF_HW_BIT_RATE_6MBPS   = BIT(4),
+        CONF_HW_BIT_RATE_9MBPS   = BIT(5),
+        CONF_HW_BIT_RATE_12MBPS  = BIT(6),
+        CONF_HW_BIT_RATE_18MBPS  = BIT(7),
+        CONF_HW_BIT_RATE_22MBPS  = BIT(8),
+        CONF_HW_BIT_RATE_24MBPS  = BIT(9),
+        CONF_HW_BIT_RATE_36MBPS  = BIT(10),
+        CONF_HW_BIT_RATE_48MBPS  = BIT(11),
+        CONF_HW_BIT_RATE_54MBPS  = BIT(12),
+       CONF_HW_BIT_RATE_11B_MASK = (CONF_HW_BIT_RATE_1MBPS | CONF_HW_BIT_RATE_2MBPS | CONF_HW_BIT_RATE_5_5MBPS | CONF_HW_BIT_RATE_11MBPS),
+};
+
+#if 0
+enum {
+        CONF_HW_RATE_INDEX_1MBPS   = 0,
+        CONF_HW_RATE_INDEX_2MBPS   = 1,
+        CONF_HW_RATE_INDEX_5_5MBPS = 2,
+        CONF_HW_RATE_INDEX_6MBPS   = 3,
+        CONF_HW_RATE_INDEX_9MBPS   = 4,
+        CONF_HW_RATE_INDEX_11MBPS  = 5,
+        CONF_HW_RATE_INDEX_12MBPS  = 6,
+        CONF_HW_RATE_INDEX_18MBPS  = 7,
+        CONF_HW_RATE_INDEX_22MBPS  = 8,
+        CONF_HW_RATE_INDEX_24MBPS  = 9,
+        CONF_HW_RATE_INDEX_36MBPS  = 10,
+        CONF_HW_RATE_INDEX_48MBPS  = 11,
+        CONF_HW_RATE_INDEX_54MBPS  = 12,
+        CONF_HW_RATE_INDEX_MAX,
+};
+
+enum {
+        CONF_HW_RXTX_RATE_54 = 0,
+        CONF_HW_RXTX_RATE_48,
+        CONF_HW_RXTX_RATE_36,
+        CONF_HW_RXTX_RATE_24,
+        CONF_HW_RXTX_RATE_22,
+        CONF_HW_RXTX_RATE_18,
+        CONF_HW_RXTX_RATE_12,
+        CONF_HW_RXTX_RATE_11,
+        CONF_HW_RXTX_RATE_9,
+        CONF_HW_RXTX_RATE_6,
+        CONF_HW_RXTX_RATE_5_5,
+        CONF_HW_RXTX_RATE_2,
+        CONF_HW_RXTX_RATE_1,
+        CONF_HW_RXTX_RATE_MAX,
+        CONF_HW_RXTX_RATE_UNSUPPORTED = 0xff
+};
+#endif
+
+#endif /* _ESP_WL_H_ */
diff --git a/drivers/net/wireless/rockchip_wlan/esp8089/esp_wmac.h b/drivers/net/wireless/rockchip_wlan/esp8089/esp_wmac.h
new file mode 100755 (executable)
index 0000000..3987314
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * Copyright (c) 2011-2012 Espressif System.
+ *
+ *   MAC header
+ */
+
+#ifndef _ESP_WMAC_H_
+#define _ESP_WMAC_H_
+
+struct esp_mac_rx_ctrl {
+        signed rssi:8;
+        unsigned rate:4;
+        unsigned is_group:1;
+        unsigned:1;
+        unsigned sig_mode:2;
+        unsigned legacy_length:12;
+        unsigned damatch0:1;
+        unsigned damatch1:1;
+        unsigned bssidmatch0:1;
+        unsigned bssidmatch1:1;
+        unsigned MCS:7;
+        unsigned CWB:1;
+        unsigned HT_length:16;
+        unsigned Smoothing:1;
+        unsigned Not_Sounding:1;
+        unsigned:1;
+        unsigned Aggregation:1;
+        unsigned STBC:2;
+        unsigned FEC_CODING:1;
+        unsigned SGI:1;
+        unsigned rxend_state:8;
+        unsigned ampdu_cnt:8;
+        unsigned channel:4;
+        unsigned:12;
+};
+
+struct esp_rx_ampdu_len {
+        unsigned substate:8;
+        unsigned sublen:12;
+        unsigned :12;
+};
+
+struct esp_tx_ampdu_entry {
+        u32 sub_len:12,
+            dili_num:7,
+            :1,
+            null_byte:2,
+            data:1,
+            enc:1,
+            seq:8;
+};
+
+//rxend_state flags
+#define RX_PYH_ERR_MIN 0x42
+#define RX_AGC_ERR_MIN 0x42
+#define RX_AGC_ERR_MAX 0x47
+#define RX_OFDM_ERR_MIN 0x50
+#define RX_OFDM_ERR_MAX 0x58
+#define RX_CCK_ERR_MIN 0x59
+#define RX_CCK_ERR_MAX 0x5F
+#define RX_ABORT 0x80
+#define RX_SF_ERR 0x40
+#define RX_FCS_ERR 0x41
+#define RX_AHBOV_ERR 0xC0
+#define RX_BUFOV_ERR 0xC1
+#define RX_BUFINV_ERR 0xC2
+#define RX_AMPDUSF_ERR 0xC3
+#define RX_AMPDUBUFOV_ERR 0xC4
+#define RX_MACBBFIFOOV_ERR 0xC5
+#define RX_RPBM_ERR 0xC6
+#define RX_BTFORCE_ERR 0xC7
+#define RX_SECOV_ERR 0xE1
+#define RX_SECPROT_ERR0 0xE2
+#define RX_SECPROT_ERR1 0xE3
+#define RX_SECKEY_ERR 0xE4
+#define RX_SECCRLEN_ERR 0xE5
+#define RX_SECFIFO_TIMEOUT 0xE6
+#define RX_WEPICV_ERR 0xF0
+#define RX_TKIPICV_ERR 0xF4
+#define RX_TKIPMIC_ERR 0xF5
+#define RX_CCMPMIC_ERR 0xF8
+#define RX_WAPIMIC_ERR 0xFC
+
+s8 esp_wmac_rate2idx(u8 rate);
+bool esp_wmac_rxsec_error(u8 error);
+
+#endif /* _ESP_WMAC_H_ */
diff --git a/drivers/net/wireless/rockchip_wlan/esp8089/init_data.conf b/drivers/net/wireless/rockchip_wlan/esp8089/init_data.conf
new file mode 100755 (executable)
index 0000000..d48a202
--- /dev/null
@@ -0,0 +1 @@
+crystal_26M_en=0;test_xtal=0;sdio_configure=2;bt_configure=0;bt_protocol=0;dual_ant_configure=0;test_uart_configure=2;share_xtal=0;gpio_wake=0;no_auto_sleep=0;ext_rst=0;$
diff --git a/drivers/net/wireless/rockchip_wlan/esp8089/rk2.env b/drivers/net/wireless/rockchip_wlan/esp8089/rk2.env
new file mode 100755 (executable)
index 0000000..ff1cf3a
--- /dev/null
@@ -0,0 +1,3 @@
+#export TOOLCHAIN_PREFIX=/cold/RK2/newsdk/sdk4_2_for_esp_20130723/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin/arm-eabi-
+export KERNEL_DIR=/cold/RK2/newsdk/sdk4_2_for_esp_20130723/kernel_ds1006h_v1.3
+export EAGLE_BASE_DIR=$(pwd)
diff --git a/drivers/net/wireless/rockchip_wlan/esp8089/sdio_sif_esp.c b/drivers/net/wireless/rockchip_wlan/esp8089/sdio_sif_esp.c
new file mode 100755 (executable)
index 0000000..3624e3f
--- /dev/null
@@ -0,0 +1,937 @@
+/*
+ * Copyright (c) 2010 -2013 Espressif System.
+ *
+ *   sdio serial i/f driver
+ *    - sdio device control routines
+ *    - sync/async DMA/PIO read/write
+ *
+ */
+#ifdef ESP_USE_SDIO
+#include <linux/mmc/card.h>
+#include <linux/mmc/mmc.h>
+#include <linux/mmc/core.h>
+#include <linux/mmc/host.h>
+#include <linux/mmc/sdio_func.h>
+#include <linux/mmc/sdio_ids.h>
+#include <linux/mmc/sdio.h>
+#include <linux/mmc/sd.h>
+#include <linux/module.h>
+#include <net/mac80211.h>
+#include <linux/time.h>
+#include <linux/pm.h>
+
+#include "esp_pub.h"
+#include "esp_sif.h"
+#include "esp_sip.h"
+#include "esp_debug.h"
+#include "slc_host_register.h"
+#include "esp_version.h"
+#include "esp_ctrl.h"
+#ifdef ANDROID
+#include "esp_android.h"
+#endif /* ANDROID */
+#ifdef USE_EXT_GPIO
+#include "esp_ext.h"
+#endif /* USE_EXT_GPIO */
+
+static int /*__init*/ esp_sdio_init(void);
+static void  /*__exit*/ esp_sdio_exit(void);
+
+
+#define ESP_DMA_IBUFSZ   2048
+
+//unsigned int esp_msg_level = 0;
+unsigned int esp_msg_level = ESP_DBG_ERROR | ESP_SHOW;
+
+static struct semaphore esp_powerup_sem;
+
+static enum esp_sdio_state sif_sdio_state;
+struct esp_sdio_ctrl *sif_sctrl = NULL;
+
+#ifdef ESP_ANDROID_LOGGER
+bool log_off = false;
+#endif /* ESP_ANDROID_LOGGER */
+
+static int esdio_power_off(struct esp_sdio_ctrl *sctrl);
+static int esdio_power_on(struct esp_sdio_ctrl *sctrl);
+
+void sif_set_clock(struct sdio_func *func, int clk);
+
+struct sif_req * sif_alloc_req(struct esp_sdio_ctrl *sctrl);
+
+#include "sdio_stub.c"
+
+void sif_lock_bus(struct esp_pub *epub)
+{
+        EPUB_FUNC_CHECK(epub);
+
+        sdio_claim_host(EPUB_TO_FUNC(epub));
+}
+
+void sif_unlock_bus(struct esp_pub *epub)
+{
+        EPUB_FUNC_CHECK(epub);
+
+        sdio_release_host(EPUB_TO_FUNC(epub));
+}
+
+#ifdef SDIO_TEST
+static void sif_test_tx(struct esp_sdio_ctrl *sctrl)
+{
+        int i, err = 0;
+
+        for (i = 0; i < 500; i++) {
+                sctrl->dma_buffer[i] = i;
+        }
+
+        sdio_claim_host(sctrl->func);
+        err = sdio_memcpy_toio(sctrl->func, 0x10001 - 500, sctrl->dma_buffer, 500);
+        sif_platform_check_r1_ready(sctrl->epub);
+        sdio_release_host(sctrl->func);
+
+        esp_dbg(ESP_DBG, "%s toio err %d\n", __func__, err);
+}
+
+static void sif_test_dsr(struct sdio_func *func)
+{
+        struct esp_sdio_ctrl *sctrl = sdio_get_drvdata(func);
+
+        sdio_release_host(sctrl->func);
+
+        /* no need to read out registers in normal operation any more */
+        //sif_io_sync(sctrl->epub, SIF_SLC_WINDOW_END_ADDR - 64, sctrl->dma_buffer, 64, SIF_FROM_DEVICE | SIF_INC_ADDR | SIF_SYNC | SIF_BYTE_BASIS);
+        //
+        esp_dsr(sctrl->epub);
+
+        sdio_claim_host(func);
+
+        //show_buf(sctrl->dma_buffer, 64);
+}
+
+void sif_test_rx(struct esp_sdio_ctrl *sctrl)
+{
+        int err = 0;
+
+        sdio_claim_host(sctrl->func);
+
+        err = sdio_claim_irq(sctrl->func, sif_test_dsr);
+
+        if (err)
+                esp_dbg(ESP_DBG_ERROR, "sif %s failed\n", __func__);
+
+        sdio_release_host(sctrl->func);
+}
+#endif //SDIO_TEST
+
+static inline bool bad_buf(u8 * buf)
+{
+       return ((unsigned long) buf & 0x3) || !virt_addr_valid(buf);
+}
+
+u8 sdio_io_readb(struct esp_pub *epub, int addr, int *res)
+{
+        struct esp_sdio_ctrl *sctrl = NULL;
+        struct sdio_func *func = NULL;
+        sctrl = (struct esp_sdio_ctrl *)epub->sif;
+        func = sctrl->func;
+
+       if(func->num == 0)
+               return sdio_f0_readb(func, addr, res);
+       else
+               return sdio_readb(func, addr, res);
+}
+
+void sdio_io_writeb(struct esp_pub *epub, u8 value, int addr, int *res)
+{
+        struct esp_sdio_ctrl *sctrl = NULL;
+        struct sdio_func *func = NULL;
+        sctrl = (struct esp_sdio_ctrl *)epub->sif;
+        func = sctrl->func;
+       
+       if(func->num == 0)
+               sdio_f0_writeb(func, value, addr, res);
+       else
+               sdio_writeb(func, value, addr, res);
+       sif_platform_check_r1_ready(epub);
+}
+
+int sif_io_raw(struct esp_pub *epub, u32 addr, u8 *buf, u32 len, u32 flag)
+{
+        int err = 0;
+        u8 *ibuf = NULL;
+        bool need_ibuf = false;
+        struct esp_sdio_ctrl *sctrl = NULL;
+        struct sdio_func *func = NULL;
+
+        ASSERT(epub != NULL);
+        ASSERT(buf != NULL);
+
+        sctrl = (struct esp_sdio_ctrl *)epub->sif;
+        func = sctrl->func;
+        ASSERT(func != NULL);
+
+        if (bad_buf(buf)) {
+                esp_dbg(ESP_DBG_TRACE, "%s dst 0x%08x, len %d badbuf\n", __func__, addr, len);
+                need_ibuf = true;
+                ibuf = sctrl->dma_buffer;
+        } else {
+                ibuf = buf;
+        }
+
+        if (flag & SIF_BLOCK_BASIS) {
+                /* round up for block data transcation */
+        }
+
+        if (flag & SIF_TO_DEVICE) {
+
+                if (need_ibuf)
+                        memcpy(ibuf, buf, len);
+
+                if (flag & SIF_FIXED_ADDR)
+                        err = sdio_writesb(func, addr, ibuf, len);
+                else if (flag & SIF_INC_ADDR) {
+                        err = sdio_memcpy_toio(func, addr, ibuf, len);
+                }
+                sif_platform_check_r1_ready(epub);
+        } else if (flag & SIF_FROM_DEVICE) {
+
+                if (flag & SIF_FIXED_ADDR)
+                        err = sdio_readsb(func, ibuf, addr, len);
+                else if (flag & SIF_INC_ADDR) {
+                        err = sdio_memcpy_fromio(func, ibuf, addr, len);
+                }
+
+
+                if (!err && need_ibuf)
+                        memcpy(buf, ibuf, len);
+        }
+
+       return err;
+}
+
+int sif_io_sync(struct esp_pub *epub, u32 addr, u8 *buf, u32 len, u32 flag)
+{
+        int err = 0;
+        u8 * ibuf = NULL;
+        bool need_ibuf = false;
+        struct esp_sdio_ctrl *sctrl = NULL;
+        struct sdio_func *func = NULL;
+
+        ASSERT(epub != NULL);
+        ASSERT(buf != NULL);
+
+        sctrl = (struct esp_sdio_ctrl *)epub->sif;
+        func = sctrl->func;
+        ASSERT(func != NULL);
+
+        if (bad_buf(buf)) {
+                esp_dbg(ESP_DBG_TRACE, "%s dst 0x%08x, len %d badbuf\n", __func__, addr, len);
+                need_ibuf = true;
+                ibuf = sctrl->dma_buffer;
+        } else {
+                ibuf = buf;
+        }
+
+        if (flag & SIF_BLOCK_BASIS) {
+                /* round up for block data transcation */
+        }
+
+        if (flag & SIF_TO_DEVICE) {
+
+                esp_dbg(ESP_DBG_TRACE, "%s to addr 0x%08x, len %d \n", __func__, addr, len);
+                if (need_ibuf)
+                        memcpy(ibuf, buf, len);
+
+                sdio_claim_host(func);
+
+                if (flag & SIF_FIXED_ADDR)
+                        err = sdio_writesb(func, addr, ibuf, len);
+                else if (flag & SIF_INC_ADDR) {
+                        err = sdio_memcpy_toio(func, addr, ibuf, len);
+                }
+                sif_platform_check_r1_ready(epub);
+                sdio_release_host(func);
+        } else if (flag & SIF_FROM_DEVICE) {
+
+                esp_dbg(ESP_DBG_TRACE, "%s from addr 0x%08x, len %d \n", __func__, addr, len);
+
+                sdio_claim_host(func);
+
+                if (flag & SIF_FIXED_ADDR)
+                        err = sdio_readsb(func, ibuf, addr, len);
+                else if (flag & SIF_INC_ADDR) {
+                        err = sdio_memcpy_fromio(func, ibuf, addr, len);
+                }
+
+                sdio_release_host(func);
+
+                if (!err && need_ibuf)
+                        memcpy(buf, ibuf, len);
+        }
+
+        return err;
+}
+
+int sif_lldesc_read_sync(struct esp_pub *epub, u8 *buf, u32 len)
+{
+        struct esp_sdio_ctrl *sctrl = NULL;
+        u32 read_len;
+
+        ASSERT(epub != NULL);
+        ASSERT(buf != NULL);
+
+        sctrl = (struct esp_sdio_ctrl *)epub->sif;
+
+        switch(sctrl->target_id) {
+        case 0x100:
+                read_len = len;
+                break;
+        case 0x600:
+                read_len = roundup(len, sctrl->slc_blk_sz);
+                break;
+        default:
+                read_len = len;
+                break;
+        }
+
+        return sif_io_sync((epub), (sctrl->slc_window_end_addr - 2 - (len)), (buf), (read_len), SIF_FROM_DEVICE | SIF_BYTE_BASIS | SIF_INC_ADDR);
+}
+
+int sif_lldesc_write_sync(struct esp_pub *epub, u8 *buf, u32 len)
+{
+        struct esp_sdio_ctrl *sctrl = NULL;
+        u32 write_len;
+
+        ASSERT(epub != NULL);
+        ASSERT(buf != NULL);
+
+        sctrl = (struct esp_sdio_ctrl *)epub->sif;
+
+        switch(sctrl->target_id) {
+        case 0x100:
+                write_len = len;
+                break;
+        case 0x600:
+                write_len = roundup(len, sctrl->slc_blk_sz);
+                break;
+        default:
+                write_len = len;
+                break;
+        }
+
+        return sif_io_sync((epub), (sctrl->slc_window_end_addr - (len)), (buf), (write_len), SIF_TO_DEVICE | SIF_BYTE_BASIS | SIF_INC_ADDR);
+}
+
+int sif_lldesc_read_raw(struct esp_pub *epub, u8 *buf, u32 len, bool noround)
+{
+        struct esp_sdio_ctrl *sctrl = NULL;
+        u32 read_len;
+
+        ASSERT(epub != NULL);
+        ASSERT(buf != NULL);
+
+        sctrl = (struct esp_sdio_ctrl *)epub->sif;
+
+        switch(sctrl->target_id) {
+        case 0x100:
+                read_len = len;
+                break;
+        case 0x600:
+               if(!noround)
+                       read_len = roundup(len, sctrl->slc_blk_sz);
+               else
+                       read_len = len;
+                break;
+        default:
+                read_len = len;
+                break;
+        }
+
+        return sif_io_raw((epub), (sctrl->slc_window_end_addr - 2 - (len)), (buf), (read_len), SIF_FROM_DEVICE | SIF_BYTE_BASIS | SIF_INC_ADDR);
+}
+
+int sif_lldesc_write_raw(struct esp_pub *epub, u8 *buf, u32 len)
+{
+        struct esp_sdio_ctrl *sctrl = NULL;
+        u32 write_len;
+
+        ASSERT(epub != NULL);
+        ASSERT(buf != NULL);
+
+        sctrl = (struct esp_sdio_ctrl *)epub->sif;
+
+        switch(sctrl->target_id) {
+        case 0x100:
+                write_len = len;
+                break;
+        case 0x600:
+                write_len = roundup(len, sctrl->slc_blk_sz);
+                break;
+        default:
+                write_len = len;
+                break;
+        }
+        return sif_io_raw((epub), (sctrl->slc_window_end_addr - (len)), (buf), (write_len), SIF_TO_DEVICE | SIF_BYTE_BASIS | SIF_INC_ADDR);
+
+}
+
+#define MANUFACTURER_ID_EAGLE_BASE        0x1110
+#define MANUFACTURER_ID_EAGLE_BASE_MASK     0xFF00
+#define MANUFACTURER_CODE                  0x6666
+
+static const struct sdio_device_id esp_sdio_devices[] = {
+        {SDIO_DEVICE(MANUFACTURER_CODE, (MANUFACTURER_ID_EAGLE_BASE | 0x1))},
+        {},
+};
+
+static int esdio_power_on(struct esp_sdio_ctrl *sctrl)
+{
+        int err = 0;
+
+        assert(sctrl != NULL);
+
+        if (sctrl->off == false)
+                return err;
+
+        sdio_claim_host(sctrl->func);
+        err = sdio_enable_func(sctrl->func);
+
+        if (err) {
+                esp_dbg(ESP_DBG_ERROR, "Unable to enable sdio func: %d\n", err);
+                sdio_release_host(sctrl->func);
+                return err;
+        }
+
+        sdio_release_host(sctrl->func);
+
+        /* ensure device is up */
+        msleep(5);
+
+        sctrl->off = false;
+
+        return err;
+}
+
+static int esdio_power_off(struct esp_sdio_ctrl *sctrl)
+{
+        int err;
+
+        if (sctrl->off)
+                return 0;
+
+        sdio_claim_host(sctrl->func);
+        err = sdio_disable_func(sctrl->func);
+        sdio_release_host(sctrl->func);
+
+        if (err)
+                return err;
+
+        sctrl->off = true;
+
+        return err;
+}
+
+void sif_enable_irq(struct esp_pub *epub) 
+{
+        int err;
+        struct esp_sdio_ctrl *sctrl = NULL;
+
+        sctrl = (struct esp_sdio_ctrl *)epub->sif;
+
+        sdio_claim_host(sctrl->func);
+
+        err = sdio_claim_irq(sctrl->func, sif_dsr);
+
+        if (err)
+                esp_dbg(ESP_DBG_ERROR, "sif %s failed\n", __func__);
+
+        atomic_set(&epub->sip->state, SIP_BOOT);
+
+        atomic_set(&sctrl->irq_installed, 1);
+
+        sdio_release_host(sctrl->func);
+}
+
+void sif_disable_irq(struct esp_pub *epub) 
+{
+        int err;
+        struct esp_sdio_ctrl *sctrl = (struct esp_sdio_ctrl *)epub->sif;
+        int i = 0;
+                
+        if (atomic_read(&sctrl->irq_installed) == 0)
+                return;
+        
+           sdio_claim_host(sctrl->func);
+
+        while (atomic_read(&sctrl->irq_handling)) {
+                sdio_release_host(sctrl->func);
+                schedule_timeout(HZ / 100);
+                sdio_claim_host(sctrl->func);
+                if (i++ >= 400) {
+                        esp_dbg(ESP_DBG_ERROR, "%s force to stop irq\n", __func__);
+                        break;
+                }
+        }
+
+        err = sdio_release_irq(sctrl->func);
+
+        if (err) {
+                esp_dbg(ESP_DBG_ERROR, "%s release irq failed\n", __func__);
+        }
+
+        atomic_set(&sctrl->irq_installed, 0);
+
+        sdio_release_host(sctrl->func);
+
+}
+
+void sif_set_clock(struct sdio_func *func, int clk)
+{
+       struct mmc_host *host = NULL;
+       struct mmc_card *card = NULL;
+       
+       card = func->card;
+       host = card->host;
+
+       sdio_claim_host(func);
+
+       //currently only set clock
+       host->ios.clock = clk * 1000000;
+
+       esp_dbg(ESP_SHOW, "%s clock is %u\n", __func__, host->ios.clock);
+       if (host->ios.clock > host->f_max) {
+               host->ios.clock = host->f_max;
+       }
+       host->ops->set_ios(host, &host->ios);
+
+       mdelay(2);
+
+       sdio_release_host(func);
+}
+
+static int esp_sdio_probe(struct sdio_func *func, const struct sdio_device_id *id);
+static void esp_sdio_remove(struct sdio_func *func);
+
+static int esp_sdio_probe(struct sdio_func *func, const struct sdio_device_id *id) 
+{
+        int err = 0;
+        struct esp_pub *epub;
+        struct esp_sdio_ctrl *sctrl;
+
+        esp_dbg(ESP_DBG_TRACE,
+                        "sdio_func_num: 0x%X, vendor id: 0x%X, dev id: 0x%X, block size: 0x%X/0x%X\n",
+                        func->num, func->vendor, func->device, func->max_blksize,
+                        func->cur_blksize);
+       if(sif_sdio_state == ESP_SDIO_STATE_FIRST_INIT){
+               sctrl = kzalloc(sizeof(struct esp_sdio_ctrl), GFP_KERNEL);
+
+               if (sctrl == NULL) {
+                       assert(0);
+                       return -ENOMEM;
+               }
+
+               /* temp buffer reserved for un-dma-able request */
+               sctrl->dma_buffer = kzalloc(ESP_DMA_IBUFSZ, GFP_KERNEL);
+
+               if (sctrl->dma_buffer == NULL) {
+                       assert(0);
+                       goto _err_last;
+               }
+               sif_sctrl = sctrl;
+               sctrl->slc_blk_sz = SIF_SLC_BLOCK_SIZE;
+               
+               epub = esp_pub_alloc_mac80211(&func->dev);
+
+               if (epub == NULL) {
+                       esp_dbg(ESP_DBG_ERROR, "no mem for epub \n");
+                       err = -ENOMEM;
+                       goto _err_dma;
+               }
+               epub->sif = (void *)sctrl;
+               sctrl->epub = epub;
+       
+#ifdef USE_EXT_GPIO    
+               err = ext_gpio_init(epub);
+               if (err) {
+                       esp_dbg(ESP_DBG_ERROR, "ext_irq_work_init failed %d\n", err);
+                       return err;
+               }
+#endif
+                       
+       } else {
+               ASSERT(sif_sctrl != NULL);
+               sctrl = sif_sctrl;
+               sif_sctrl = NULL;
+               epub = sctrl->epub;
+               SET_IEEE80211_DEV(epub->hw, &func->dev);
+               epub->dev = &func->dev;
+       }
+
+        epub->sdio_state = sif_sdio_state;
+
+        sctrl->func = func;
+        sdio_set_drvdata(func, sctrl);
+
+        sctrl->id = id;
+        sctrl->off = true;
+
+        /* give us some time to enable, in ms */
+        func->enable_timeout = 100;
+
+        err = esdio_power_on(sctrl);
+        esp_dbg(ESP_DBG_TRACE, " %s >> power_on err %d \n", __func__, err);
+
+        if (err){
+                if(sif_sdio_state == ESP_SDIO_STATE_FIRST_INIT)
+                       goto _err_epub;
+                 else
+                       goto _err_second_init;
+        }
+        check_target_id(epub);
+
+        sdio_claim_host(func);
+
+        err = sdio_set_block_size(func, sctrl->slc_blk_sz);
+
+        if (err) {
+                esp_dbg(ESP_DBG_ERROR, "Set sdio block size %d failed: %d)\n",
+                                sctrl->slc_blk_sz, err);
+                sdio_release_host(func);
+                goto _err_off;
+        }
+
+        sdio_release_host(func);
+
+#ifdef SDIO_TEST
+        sif_test_tx(sctrl);
+#else
+
+#ifdef LOWER_CLK 
+        /* fix clock for dongle */
+       sif_set_clock(func, 23);
+#endif //LOWER_CLK
+
+        err = esp_pub_init_all(epub);
+
+        if (err) {
+                esp_dbg(ESP_DBG_ERROR, "esp_init_all failed: %d\n", err);
+                if(sif_sdio_state == ESP_SDIO_STATE_SECOND_INIT)
+                       goto _err_second_init;
+        }
+
+#endif //SDIO_TEST
+        esp_dbg(ESP_DBG_TRACE, " %s return  %d\n", __func__, err);
+       if(sif_sdio_state == ESP_SDIO_STATE_FIRST_INIT){
+               esp_dbg(ESP_DBG_ERROR, "first normal exit\n");
+               sif_sdio_state = ESP_SDIO_STATE_FIRST_NORMAL_EXIT;
+               up(&esp_powerup_sem);
+       }
+
+        return err;
+
+_err_off:
+        esdio_power_off(sctrl);
+_err_epub:
+        esp_pub_dealloc_mac80211(epub);
+_err_dma:
+        kfree(sctrl->dma_buffer);
+_err_last:
+        kfree(sctrl);
+
+       if(sif_sdio_state == ESP_SDIO_STATE_FIRST_INIT){
+               sif_sdio_state = ESP_SDIO_STATE_FIRST_ERROR_EXIT;
+               up(&esp_powerup_sem);
+       }
+        return err;
+_err_second_init:
+       sif_sdio_state = ESP_SDIO_STATE_SECOND_ERROR_EXIT;
+       esp_sdio_remove(func);
+       return err;
+}
+
+static void esp_sdio_remove(struct sdio_func *func) 
+{
+        struct esp_sdio_ctrl *sctrl = NULL;
+
+        sctrl = sdio_get_drvdata(func);
+
+        if (sctrl == NULL) {
+                esp_dbg(ESP_DBG_ERROR, "%s no sctrl\n", __func__);
+                return;
+        }
+
+        do {
+                if (sctrl->epub == NULL) {
+                        esp_dbg(ESP_DBG_ERROR, "%s epub null\n", __func__);
+                        break;
+                }
+               sctrl->epub->sdio_state = sif_sdio_state;
+               if(sif_sdio_state != ESP_SDIO_STATE_FIRST_NORMAL_EXIT){
+                       do{
+                               int err;
+                               sif_lock_bus(sctrl->epub);
+                               sif_raw_dummy_read(sctrl->epub);
+                               err = sif_interrupt_target(sctrl->epub, 7);
+                               sif_unlock_bus(sctrl->epub);
+                       }while(0);
+       
+                       if (sctrl->epub->sip) {
+                               sip_detach(sctrl->epub->sip);
+                               sctrl->epub->sip = NULL;
+                               esp_dbg(ESP_DBG_TRACE, "%s sip detached \n", __func__);
+#ifdef USE_EXT_GPIO    
+                               ext_gpio_deinit();
+#endif
+                       }
+               } else {
+                       //sif_disable_target_interrupt(sctrl->epub);
+                       atomic_set(&sctrl->epub->sip->state, SIP_STOP);
+                       sif_disable_irq(sctrl->epub);
+               }
+
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 3, 0))
+                esdio_power_off(sctrl);
+                esp_dbg(ESP_DBG_TRACE, "%s power off \n", __func__);
+#endif /* kernel < 3.3.0 */
+
+#ifdef TEST_MODE
+                test_exit_netlink();
+#endif /* TEST_MODE */
+               if(sif_sdio_state != ESP_SDIO_STATE_FIRST_NORMAL_EXIT){
+                       esp_pub_dealloc_mac80211(sctrl->epub);
+                       esp_dbg(ESP_DBG_TRACE, "%s dealloc mac80211 \n", __func__);
+                       
+                       if (sctrl->dma_buffer) {
+                               kfree(sctrl->dma_buffer);
+                               sctrl->dma_buffer = NULL;
+                               esp_dbg(ESP_DBG_TRACE, "%s free dma_buffer \n", __func__);
+                       }
+
+                       kfree(sctrl);
+               }
+
+        } while (0);
+        
+       sdio_set_drvdata(func,NULL);
+       
+        esp_dbg(ESP_DBG_TRACE, "eagle sdio remove complete\n");
+}
+
+MODULE_DEVICE_TABLE(sdio, esp_sdio_devices);
+
+static int esp_sdio_suspend(struct device *dev)
+{
+    //#define dev_to_sdio_func(d)     container_of(d, struct sdio_func, dev)
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 32))
+    struct sdio_func *func = dev_to_sdio_func(dev);
+#else
+    struct sdio_func *func = container_of(dev, struct sdio_func, dev);
+#endif
+       struct esp_sdio_ctrl *sctrl = sdio_get_drvdata(func);
+       struct esp_pub *epub = sctrl->epub;     
+
+        printk("%s", __func__);
+#if 0
+       sip_send_suspend_config(epub, 1);
+#endif
+       atomic_set(&epub->ps.state, ESP_PM_ON);
+
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 34))
+    do{
+        u32 sdio_flags = 0;
+        int ret = 0;
+        sdio_flags = sdio_get_host_pm_caps(func);
+
+        if (!(sdio_flags & MMC_PM_KEEP_POWER)) {
+            printk("%s can't keep power while host is suspended\n", __func__);
+        }
+
+        /* keep power while host suspended */
+        ret = sdio_set_host_pm_flags(func, MMC_PM_KEEP_POWER);
+        if (ret) {
+                printk("%s error while trying to keep power\n", __func__);
+        }
+    }while(0);
+#endif
+
+
+        return 0;
+
+}
+
+static int esp_sdio_resume(struct device *dev)
+{
+        esp_dbg(ESP_DBG_ERROR, "%s", __func__);
+
+        return 0;
+}
+
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 29))
+static const struct dev_pm_ops esp_sdio_pm_ops = {
+        .suspend= esp_sdio_suspend,
+        .resume= esp_sdio_resume,
+};
+#else
+static struct pm_ops esp_sdio_pm_ops = {
+        .suspend= esp_sdio_suspend,
+        .resume= esp_sdio_resume,
+};
+#endif
+
+static struct sdio_driver esp_sdio_driver = {
+                .name = "eagle_sdio",
+                .id_table = esp_sdio_devices,
+                .probe = esp_sdio_probe,
+                .remove = esp_sdio_remove,
+                .drv = { .pm = &esp_sdio_pm_ops, },
+};
+
+static int esp_sdio_dummy_probe(struct sdio_func *func, const struct sdio_device_id *id)
+{
+        esp_dbg(ESP_DBG_ERROR, "%s enter\n", __func__);
+
+        up(&esp_powerup_sem);
+        
+        return 0;
+}
+
+static void esp_sdio_dummy_remove(struct sdio_func *func) 
+{
+        return;
+}
+
+static struct sdio_driver esp_sdio_dummy_driver = {
+                .name = "eagle_sdio_dummy",
+                .id_table = esp_sdio_devices,
+                .probe = esp_sdio_dummy_probe,
+                .remove = esp_sdio_dummy_remove,
+};
+
+static int /*__init*/ esp_sdio_init(void) 
+{
+#define ESP_WAIT_UP_TIME_MS 11000
+        int err;
+        u64 ver;
+        int retry = 3;
+        bool powerup = false;
+        int edf_ret = 0;
+
+        esp_dbg(ESP_DBG_TRACE, "%s \n", __func__);
+
+#ifdef DRIVER_VER
+        ver = DRIVER_VER;
+        esp_dbg(ESP_SHOW, "\n*****%s %s EAGLE DRIVER VER:%llx*****\n\n", __DATE__, __TIME__, ver);
+#endif
+        edf_ret = esp_debugfs_init();
+
+#ifdef ANDROID
+       android_request_init_conf();
+#endif /* defined(ANDROID)*/
+
+        esp_wakelock_init();
+        esp_wake_lock();
+
+        do {
+                sema_init(&esp_powerup_sem, 0);
+
+                sif_platform_target_poweron();
+
+                sif_platform_rescan_card(1);
+
+                err = sdio_register_driver(&esp_sdio_dummy_driver);
+                if (err) {
+                        esp_dbg(ESP_DBG_ERROR, "eagle sdio driver registration failed, error code: %d\n", err);
+                        goto _fail;
+                }
+
+                if (down_timeout(&esp_powerup_sem,
+                                 msecs_to_jiffies(ESP_WAIT_UP_TIME_MS)) == 0) 
+               {
+
+                        powerup = true;
+                       msleep(200);
+                        break;
+                }
+
+                esp_dbg(ESP_SHOW, "%s ------ RETRY ------ \n", __func__);
+
+               sif_record_retry_config();
+
+                sdio_unregister_driver(&esp_sdio_dummy_driver);
+
+                sif_platform_rescan_card(0);
+                
+                sif_platform_target_poweroff();
+                
+        } while (retry--);
+
+        if (!powerup) {
+                esp_dbg(ESP_DBG_ERROR, "eagle sdio can not power up!\n");
+
+                err = -ENODEV;
+                goto _fail;
+        }
+
+        esp_dbg(ESP_SHOW, "%s power up OK\n", __func__);
+
+        sdio_unregister_driver(&esp_sdio_dummy_driver);
+
+        sif_sdio_state = ESP_SDIO_STATE_FIRST_INIT;
+        sema_init(&esp_powerup_sem, 0);
+
+        sdio_register_driver(&esp_sdio_driver);
+
+        if (down_timeout(&esp_powerup_sem,
+                                 msecs_to_jiffies(ESP_WAIT_UP_TIME_MS)) == 0) 
+       {
+               if(sif_sdio_state == ESP_SDIO_STATE_FIRST_NORMAL_EXIT){
+                       sdio_unregister_driver(&esp_sdio_driver);
+
+                       sif_platform_rescan_card(0);
+
+                       msleep(80);
+                
+                       sif_platform_rescan_card(1);
+
+                       sif_sdio_state = ESP_SDIO_STATE_SECOND_INIT;
+               
+                       sdio_register_driver(&esp_sdio_driver);
+               }
+                
+        }
+
+
+        esp_register_early_suspend();
+       esp_wake_unlock();
+        return err;
+
+_fail:
+        esp_wake_unlock();
+        esp_wakelock_destroy();
+
+        return err;
+}
+
+static void  /*__exit*/ esp_sdio_exit(void) 
+{
+       esp_dbg(ESP_DBG_TRACE, "%s \n", __func__);
+
+       esp_debugfs_exit();
+       
+        esp_unregister_early_suspend();
+
+       sdio_unregister_driver(&esp_sdio_driver);
+       
+       sif_platform_rescan_card(0);
+
+#ifndef FPGA_DEBUG
+       sif_platform_target_poweroff();
+#endif /* !FPGA_DEBUG */
+
+        esp_wakelock_destroy();
+}
+
+MODULE_AUTHOR("Espressif System");
+MODULE_DESCRIPTION("Driver for SDIO interconnected eagle low-power WLAN devices");
+MODULE_LICENSE("GPL");
+#endif /* ESP_USE_SDIO */
diff --git a/drivers/net/wireless/rockchip_wlan/esp8089/sdio_stub.c b/drivers/net/wireless/rockchip_wlan/esp8089/sdio_stub.c
new file mode 100755 (executable)
index 0000000..4bd4107
--- /dev/null
@@ -0,0 +1,115 @@
+/*
+ * Copyright (c) 2013 Espressif System.
+ *
+ *  sdio stub code for RK
+ */
+
+//#include <mach/gpio.h> libing
+//#include <mach/iomux.h> libing
+
+#define ESP8089_DRV_VERSION "2.20"
+//extern int rk29sdk_wifi_power(int on); libing
+extern int rockchip_wifi_power(int on);
+//extern int rk29sdk_wifi_set_carddetect(int val); libing
+extern int rockchip_wifi_set_carddetect(int val);
+int rockchip_wifi_init_module(void)
+{
+               
+return esp_sdio_init();                
+}
+
+void rockchip_wifi_exit_module(void)
+{
+       esp_sdio_exit(); 
+                
+}
+void sif_platform_rescan_card(unsigned insert)
+{
+               //rk29sdk_wifi_set_carddetect(insert); libing
+        rockchip_wifi_set_carddetect(insert);
+}
+
+void sif_platform_reset_target(void)
+{
+       if(sif_get_bt_config() == 1 && sif_get_retry_config() == 0){
+               if(sif_get_rst_config() == 1){
+                       //TODO, use gpio to reset target
+               }// else {
+               //      iomux_set(GPIO3_D2);
+               //      gpio_request(RK30_PIN3_PD2, "esp8089-sdio-wifi");
+
+               //      mdelay(100);
+               //      gpio_direction_output(RK30_PIN3_PD2, 0);
+               //      mdelay(50);
+               //      gpio_direction_output(RK30_PIN3_PD2, 1);
+       //      }
+       } else {
+               //rk29sdk_wifi_set_carddetect(0);
+               //rk29sdk_wifi_power(0); //libing
+                       rockchip_wifi_power(0);
+               //rk29sdk_wifi_power(1); //libing
+               rockchip_wifi_power(1);
+               //rk29sdk_wifi_set_carddetect(1);
+       }
+}
+
+void sif_platform_target_poweroff(void)
+{
+       printk("=======================================================\n");
+       printk("==== Dislaunching Wi-Fi driver! (Powered by Rockchip) ====\n");
+       printk("=======================================================\n");
+       printk("Espressif ESP8089 SDIO WiFi driver (Powered by Rockchip,Ver %s) init.\n", ESP8089_DRV_VERSION);
+
+       //rk29sdk_wifi_set_carddetect(0);
+       if(sif_get_bt_config() != 1)
+               //rk29sdk_wifi_power(0); libing
+                       rockchip_wifi_power(0);
+}
+
+void sif_platform_target_poweron(void)
+{
+       printk("=======================================================\n");
+       printk("==== Launching Wi-Fi driver! (Powered by Rockchip) ====\n");
+       printk("=======================================================\n");
+       printk("Espressif ESP8089 SDIO WiFi driver (Powered by Rockchip,Ver %s) init.\n", ESP8089_DRV_VERSION);
+
+       if(sif_get_bt_config() == 1){
+               sif_platform_reset_target();
+       }
+       
+       //rk29sdk_wifi_power(1); libing
+       rockchip_wifi_power(1);
+        //rk29sdk_wifi_set_carddetect(1);
+}
+
+void sif_platform_target_speed(int high_speed)
+{
+}
+
+void sif_platform_check_r1_ready(struct esp_pub *epub)
+{
+}
+
+
+#ifdef ESP_ACK_INTERRUPT
+//extern void sdmmc_ack_interrupt(struct mmc_host *mmc); libing
+
+void sif_platform_ack_interrupt(struct esp_pub *epub)
+{
+        struct esp_sdio_ctrl *sctrl = NULL;
+        struct sdio_func *func = NULL;
+
+        ASSERT(epub != NULL);
+        sctrl = (struct esp_sdio_ctrl *)epub->sif;
+        func = sctrl->func;
+        ASSERT(func != NULL);
+
+        //sdmmc_ack_interrupt(func->card->host);libing
+
+}
+#endif //ESP_ACK_INTERRUPT
+ EXPORT_SYMBOL(rockchip_wifi_init_module);
+ EXPORT_SYMBOL(rockchip_wifi_exit_module);
+
+//late_initcall(esp_sdio_init);
+//module_exit(esp_sdio_exit);
diff --git a/drivers/net/wireless/rockchip_wlan/esp8089/sip2_common.h b/drivers/net/wireless/rockchip_wlan/esp8089/sip2_common.h
new file mode 100755 (executable)
index 0000000..9978f8c
--- /dev/null
@@ -0,0 +1,453 @@
+/*
+ *  Copyright (c) 2010 - 2012 Espressif System.
+ *
+ *   Common definitions of Serial Interconnctor Protocol
+ *
+ *   little endian
+ */
+
+#ifndef _SIP2_COMMON_H
+#define _SIP2_COMMON_H
+
+#ifdef __ets__
+#include "utils.h"
+#endif /*__ets__*/
+
+/* max 16 types */
+typedef enum {
+        SIP_CTRL = 0,
+        SIP_DATA,
+        SIP_DATA_AMPDU,
+} SIP_TYPE;
+
+typedef enum {
+        SIP_TX_CTRL_BUF = 0,  /* from host */
+        SIP_RX_CTRL_BUF,  /* to host */
+        SIP_TX_DATA_BUF, /* from host */
+        SIP_RX_DATA_BUF /* to host */
+} SIP_BUF_TYPE;
+
+enum sip_cmd_id {
+        SIP_CMD_GET_VER = 0,
+        SIP_CMD_WRITE_MEMORY,//1 ROM code
+        SIP_CMD_READ_MEMORY,//2
+        SIP_CMD_WRITE_REG,//3 ROM code
+        SIP_CMD_READ_REG,     //4
+        SIP_CMD_BOOTUP,//5 ROM code
+        SIP_CMD_COPYBACK,//6
+        SIP_CMD_INIT,          //7
+        SIP_CMD_SCAN,//8
+        SIP_CMD_SETKEY,//9
+        SIP_CMD_CONFIG,//10
+        SIP_CMD_BSS_INFO_UPDATE,//11
+        SIP_CMD_LOOPBACK,//12  ROM code
+        //do not add cmd before this line
+        SIP_CMD_SET_WMM_PARAM,
+        SIP_CMD_AMPDU_ACTION,
+        SIP_CMD_HB_REQ, //15
+        SIP_CMD_RESET_MAC, //16
+        SIP_CMD_PRE_DOWN,  //17
+        SIP_CMD_SLEEP,        /* for sleep testing */
+        SIP_CMD_WAKEUP,       /* for sleep testing */
+        SIP_CMD_DEBUG,          /* for general testing */
+        SIP_CMD_GET_FW_VER,  /* get fw rev. */
+        SIP_CMD_SETVIF,
+        SIP_CMD_SETSTA,
+        SIP_CMD_PS,
+       SIP_CMD_SUSPEND,
+        SIP_CMD_MAX
+};
+
+enum {
+        SIP_EVT_TARGET_ON = 0,    //
+        SIP_EVT_BOOTUP,//1 in ROM code
+        SIP_EVT_COPYBACK,//2
+        SIP_EVT_SCAN_RESULT,  //3
+        SIP_EVT_TX_STATUS,//4
+        SIP_EVT_CREDIT_RPT,     //5, in ROM code
+        SIP_EVT_ERROR,//6
+        SIP_EVT_LOOPBACK,//7, in ROM code
+        SIP_EVT_SNPRINTF_TO_HOST, //8  in ROM code
+        //do not add evt before this line
+        SIP_EVT_HB_ACK,  //9
+        SIP_EVT_RESET_MAC_ACK, //10
+        SIP_EVT_WAKEUP,//11        /* for sleep testing */
+        SIP_EVT_DEBUG,//12          /* for general testing */
+        SIP_EVT_PRINT_TO_HOST, //13
+        SIP_EVT_TRC_AMPDU, //14
+       SIP_EVT_ROC,              //15
+       SIP_EVT_RESETTING,
+       SIP_EVT_SLEEP,
+       SIP_EVT_TXIDLE,
+        SIP_EVT_MAX
+};
+
+#define SIP_IFIDX_MASK 0xf0
+#define SIP_IFIDX_S 4
+#define SIP_TYPE_MASK 0x0f
+#define SIP_TYPE_S 0
+
+#define SIP_HDR_GET_IFIDX(fc0) (((fc0) & SIP_IFIDX_MASK) >> SIP_IFIDX_S)
+#define SIP_HDR_SET_IFIDX(fc0, ifidx) ( (fc0) = ((fc0) & ~SIP_IFIDX_MASK) | ((ifidx) << SIP_IFIDX_S & SIP_IFIDX_MASK) )
+#define SIP_HDR_GET_TYPE(fc0) ((fc0) & SIP_TYPE_MASK )
+/* assume type field is cleared */
+#define SIP_HDR_SET_TYPE(fc0, type) ((fc0) = ((fc0) & ~ SIP_TYPE_MASK) | ((type) & SIP_TYPE_MASK))
+
+/* sip 2.0, not hybrid header so far */
+#define SIP_HDR_IS_CTRL(hdr) (SIP_HDR_GET_TYPE((hdr)->fc[0]) == SIP_CTRL)
+#define SIP_HDR_IS_DATA(hdr) (SIP_HDR_GET_TYPE((hdr)->fc[0]) == SIP_DATA)
+#define SIP_HDR_IS_AMPDU(hdr) (SIP_HDR_GET_TYPE((hdr)->fc[0]) == SIP_DATA_AMPDU)
+
+/* fc[1] flags, only for data pkt. Ctrl pkts use fc[1] as eventID */
+#define SIP_HDR_SET_FLAGS(hdr, flags) ((hdr)->fc[1] |= (flags))
+#define SIP_HDR_F_MORE_PKT 0x1
+#define SIP_HDR_F_NEED_CRDT_RPT 0x2
+#define SIP_HDR_F_SYNC 0x4
+#define SIP_HDR_F_SYNC_RESET 0x8
+#define SIP_HDR_F_PM_TURNING_ON 0x10
+#define SIP_HDR_F_PM_TURNING_OFF 0x20
+
+#define SIP_HDR_NEED_CREDIT_UPDATE(hdr) ((hdr)->fc[1] & SIP_HDR_F_NEED_CRDT_RPT)
+#define SIP_HDR_IS_MORE_PKT(hdr) ((hdr)->fc[1] & SIP_HDR_F_MORE_PKT)
+#define SIP_HDR_IS_CRDT_RPT(hdr) ((hdr)->fc[1] & SIP_HDR_F_CRDT_RPT)
+#define SIP_HDR_IS_SYNC(hdr) ((hdr)->fc[1] & SIP_HDR_F_SYNC)
+#define SIP_HDR_IS_SYNC_RESET(hdr) ((hdr)->fc[1] & SIP_HDR_F_SYNC_RESET)
+#define SIP_HDR_IS_SYNC_PKT(hdr) (SIP_HDR_IS_SYNC(hdr) | SIP_HDR_IS_SYNC_RESET(hdr))
+#define SIP_HDR_SET_SYNC(hdr) SIP_HDR_SET_FLAGS((hdr), SIP_HDR_F_SYNC)
+#define SIP_HDR_SET_SYNC_RESET(hdr) SIP_HDR_SET_FLAGS((hdr), SIP_HDR_F_SYNC_RESET)
+#define SIP_HDR_SET_MORE_PKT(hdr) SIP_HDR_SET_FLAGS((hdr), SIP_HDR_F_MORE_PKT)
+#define SIP_HDR_SET_PM_TURNING_ON(hdr) SIP_HDR_SET_FLAGS((hdr), SIP_HDR_F_PM_TURNING_ON)
+#define SIP_HDR_IS_PM_TURNING_ON(hdr) ((hdr)->fc[1] & SIP_HDR_F_PM_TURNING_ON)
+#define SIP_HDR_SET_PM_TURNING_OFF(hdr) SIP_HDR_SET_FLAGS((hdr), SIP_HDR_F_PM_TURNING_OFF)
+#define SIP_HDR_IS_PM_TURNING_OFF(hdr) ((hdr)->fc[1] & SIP_HDR_F_PM_TURNING_OFF)
+
+/*
+ * fc[0]: first 4bit: ifidx; last 4bit: type
+ * fc[1]: flags
+ *
+ *   Don't touch the header definitons
+ */
+struct sip_hdr_min {
+        u8 fc[2];
+        __le16 len;
+} __packed;
+
+/* not more than 4byte long */
+struct sip_tx_data_info {
+        u8 tid;
+        u8 ac;
+        u8 p2p:1,
+           enc_flag:7;
+        u8 hw_kid;
+}  __packed;
+
+/* NB: this structure should be not more than 4byte !! */
+struct sip_tx_info {
+        union {
+                u32 cmdid;
+                struct sip_tx_data_info dinfo;
+        } u;
+} __packed;
+
+struct sip_hdr {
+        u8 fc[2];  //fc[0]: type and ifidx ; fc[1] is eventID if the first ctrl pkt in the chain. data pkt still can use fc[1] to set flag
+        __le16 len;
+        union {
+                volatile u32 recycled_credits; /* last 12bits is credits, first 20 bits is actual length of the first pkt in the chain */
+                struct sip_tx_info tx_info;
+        } u;
+        u32 seq;
+} __packed;
+
+#define h_credits u.recycled_credits
+#define c_evtid fc[1]
+#define c_cmdid u.tx_info.u.cmdid
+#define d_ac u.tx_info.u.dinfo.ac
+#define d_tid  u.tx_info.u.dinfo.tid
+#define d_p2p   u.tx_info.u.dinfo.p2p
+#define d_enc_flag u.tx_info.u.dinfo.enc_flag
+#define d_hw_kid   u.tx_info.u.dinfo.hw_kid
+
+#define SIP_CREDITS_MASK  0xfff  /* last 12 bits */
+
+#ifdef HOST_RC
+
+#define RC_CNT_MASK 0xf
+
+struct sip_rc_status {
+        u32 rc_map;
+        union {
+                u32 rc_cnt1:4,
+                    rc_cnt2:4,
+                    rc_cnt3:4,
+                    rc_cnt4:4,
+                    rc_cnt5:4;
+
+                u32 rc_cnt_store;
+        };
+};
+
+/* copy from mac80211.h */
+struct sip_tx_rc {
+        struct ieee80211_tx_rate rates[IEEE80211_TX_MAX_RATES];
+        s8 rts_cts_rate_idx;
+};
+#endif /* HOST_RC */
+
+#define SIP_HDR_MIN_LEN 4
+#define SIP_HDR_LEN            sizeof(struct sip_hdr)
+#define SIP_CTRL_HDR_LEN       SIP_HDR_LEN  /* same as sip_hdr in sip2 design */
+#define SIP_BOOT_BUF_SIZE 256
+#define SIP_CTRL_BUF_SZ 256 /* too much?? */
+#define SIP_CTRL_BUF_N 6
+#define SIP_CTRL_TXBUF_N 2
+#define SIP_CTRL_RXBUF_N 4
+
+/* WAR for mblk */
+#define SIP_RX_ADDR_PREFIX_MASK 0xfc000000
+#define SIP_RX_ADDR_SHIFT 6  /* [31:5],  shift 6 bits*/
+
+struct sip_cmd_write_memory {
+        u32 addr;
+        u32 len;
+} __packed;
+
+struct sip_cmd_read_memory {
+        u32 addr;
+        u32 len;
+} __packed;
+
+struct sip_cmd_write_reg {
+        u32 addr;
+        u32 val;
+} __packed;
+
+struct sip_cmd_bootup {
+        u32 boot_addr;
+} __packed;
+
+struct sip_cmd_loopback {
+        u32 txlen;       //host to target packet len, 0 means no txpacket
+        u32 rxlen;      //target to host packet len, 0 means no rxpacket
+        u32 pack_id;   //sequence of packet
+} __packed;
+
+struct sip_evt_loopback {
+        u32 txlen;       //host to target packet len, 0 means no txpacket
+        u32 rxlen;      //target to host packet len, 0 means no rxpacket
+        u32 pack_id;   //sequence of packet
+} __packed;
+
+struct sip_cmd_copyback {
+        u32 addr;
+        u32 len;
+} __packed;
+
+struct sip_cmd_scan {
+//        u8  ssid[32];
+        u8 ssid_len;
+//        u8 hw_channel[14];
+        u8 n_channels;
+        u8 ie_len;
+        u8 aborted;
+} __packed; // ie[] append at the end
+
+
+#ifndef ETH_ALEN
+#define ETH_ALEN 6
+#endif /* ETH_ALEN */
+
+struct sip_cmd_setkey {
+        u8 bssid_no;
+        u8 addr[ETH_ALEN];
+        u8 alg;
+        u8 keyidx;
+        u8 hw_key_idx;
+        u8 flags;
+        u8 keylen;
+        u8 key[32];
+} __packed;
+
+struct sip_cmd_config {
+        u16  center_freq;
+        u16  duration;
+} __packed;
+
+struct sip_cmd_bss_info_update {
+        u8  bssid[ETH_ALEN];
+        u16 isassoc;
+        u32 beacon_int;
+        u8  bssid_no;
+} __packed;
+
+struct sip_evt_bootup {
+        u16 tx_blksz;
+        u8 mac_addr[ETH_ALEN];
+        /* anything else ? */
+} __packed;
+
+struct sip_cmd_setvif {
+        u8 index;
+        u8 mac[ETH_ALEN];
+        u8 set;
+        u8 op_mode;
+        u8 is_p2p;
+} __packed;
+
+enum esp_ieee80211_phytype{
+        ESP_IEEE80211_T_CCK = 0,
+        ESP_IEEE80211_T_OFDM = 1,
+        ESP_IEEE80211_T_HT20_L = 2,
+        ESP_IEEE80211_T_HT20_S = 3,
+};
+
+struct sip_cmd_setsta {
+        u8 ifidx;
+        u8 index;
+        u8 set;
+        u8 phymode;
+        u8 mac[ETH_ALEN];
+       u16 aid;
+        u8 ampdu_factor;
+        u8 ampdu_density;
+       u16 resv;
+} __packed;
+
+struct sip_cmd_ps {
+       u8 dtim_period;
+       u8 max_sleep_period;
+        u8 on;
+        u8 resv;
+} __packed;
+
+struct sip_cmd_suspend {
+       u8 suspend;
+       u8 resv[3];
+} __packed;
+
+#define SIP_DUMP_RPBM_ERR      BIT(0)
+#define SIP_RXABORT_FIXED      BIT(1)
+#define SIP_SUPPORT_BGSCAN     BIT(2)
+struct sip_evt_bootup2 {
+        u16 tx_blksz;
+        u8 mac_addr[ETH_ALEN];
+        u16 rx_blksz;
+        u8 credit_to_reserve;
+        u8 options;
+       s16 noise_floor;
+       u8 resv[2];
+        /* anything else ? */
+} __packed;
+
+typedef enum {
+        TRC_TX_AMPDU_STOPPED = 1,
+        TRC_TX_AMPDU_OPERATIONAL,
+        TRC_TX_AMPDU_WAIT_STOP,
+        TRC_TX_AMPDU_WAIT_OPERATIONAL,
+        TRC_TX_AMPDU_START,
+} trc_ampdu_state_t;
+
+struct sip_evt_trc_ampdu {
+        u8 state;
+        u8 tid;
+        u8 addr[ETH_ALEN];
+} __packed;
+
+struct sip_cmd_set_wmm_params {
+        u8 aci;
+        u8 aifs;
+        u8 ecw_min;
+        u8 ecw_max;
+        u16 txop_us;
+} __packed;
+
+#define SIP_AMPDU_RX_START 0
+#define SIP_AMPDU_RX_STOP 1
+#define SIP_AMPDU_TX_OPERATIONAL 2
+#define SIP_AMPDU_TX_STOP 3
+struct sip_cmd_ampdu_action {
+        u8 action;
+        u8 index;
+        u8 tid;
+        u8 win_size;
+        u16 ssn;
+        u8 addr[ETH_ALEN];
+} __packed;
+
+#define SIP_TX_ST_OK 0
+#define SIP_TX_ST_NOEB 1
+#define SIP_TX_ST_ACKTO 2
+#define SIP_TX_ST_ENCERR 3
+
+//NB: sip_tx_status must be 4 bytes aligned
+struct sip_tx_status {
+        u32 sip_seq;
+#ifdef HOST_RC
+        struct sip_rc_status rcstatus;
+#endif /* HOST_RC */
+        u8 errno;  /* success or failure code */
+        u8 rate_index;
+        char ack_signal;
+        u8 pad;
+} __packed;
+
+struct sip_evt_tx_report {
+        u32 pkts;
+        struct sip_tx_status status[0];
+} __packed;
+
+struct sip_evt_tx_mblk {
+        u32 mblk_map;
+} __packed;
+
+struct sip_evt_scan_report {
+        u16 scan_id;
+        u16 aborted;
+} __packed;
+
+struct sip_evt_roc {
+     u16    state;     //start:1, end :0
+     u16    is_ok;
+} __packed;
+
+struct sip_evt_txidle {
+       u32     last_seq;
+} __packed;
+
+/*
+ *  for mblk direct memory access, no need for sip_hdr. tx: first 2k for contrl msg,
+ *  rest of 14k for data.  rx, same.
+ */
+#ifdef TEST_MODE
+
+struct sip_cmd_sleep {
+        u32  sleep_mode;
+        u32  sleep_tm_ms;
+        u32  wakeup_tm_ms;            //zero: after receive bcn, then sleep, nozero: delay nozero ms to sleep
+        u32  sleep_times;                 //zero: always sleep, nozero: after nozero number sleep/wakeup, then end up sleep
+} __packed;
+
+struct sip_cmd_wakeup {
+        u32     check_data;            //0:copy to event
+} __packed;
+
+struct sip_evt_wakeup {
+        u32    check_data;
+} __packed;
+
+//general debug command
+struct sip_cmd_debug {
+        u32  cmd_type;
+        u32  para_num;
+        u32  para[10];
+} __packed;
+
+struct sip_evt_debug {
+        u16    len;
+        u32    results[8];
+        u16    pad;
+} __packed;
+
+#endif  //ifdef TEST_MODE
+
+#endif /* _SIP_COMMON_H_ */
diff --git a/drivers/net/wireless/rockchip_wlan/esp8089/slc_host_register.h b/drivers/net/wireless/rockchip_wlan/esp8089/slc_host_register.h
new file mode 100755 (executable)
index 0000000..c628dc3
--- /dev/null
@@ -0,0 +1,242 @@
+//Generated at 2012-10-23 20:11:08\r
+/*\r
+ *  Copyright (c) 2011 Espressif System\r
+ *\r
+ */\r
+\r
+#ifndef SLC_HOST_REGISTER_H_INCLUDED\r
+#define SLC_HOST_REGISTER_H_INCLUDED\r
+\r
+/* #define REG_SLC_HOST_BASE  0x00000000 */\r
+/* skip the token1, since reading it will clean the credit */\r
+#define REG_SLC_HOST_BASE  0x00000000\r
+\r
+\r
+#define SLC_HOST_PF                          (REG_SLC_HOST_BASE + 0x0)\r
+#define SLC_HOST_TOKEN_RDATA                 (REG_SLC_HOST_BASE + 0x4)\r
+#define SLC_HOST_RX_PF_EOF 0x0000000F\r
+#define SLC_HOST_RX_PF_EOF_S                 28\r
+#define SLC_HOST_TOKEN1 0x00000FFF\r
+#define SLC_HOST_TOKEN1_S 16\r
+#define SLC_HOST_RX_PF_VALID (BIT(15))\r
+#define SLC_HOST_TOKEN0               0x00000FFF\r
+#define SLC_HOST_TOKEN0_S 0\r
+\r
+#define SLC_HOST_TOKEN0_MASK SLC_HOST_TOKEN0\r
+\r
+#define SLC_HOST_INT_RAW                     (REG_SLC_HOST_BASE + 0x8)\r
+#define SLC_HOST_EXT_BIT3_INT_RAW (BIT(22))\r
+#define SLC_HOST_EXT_BIT2_INT_RAW (BIT(21))\r
+#define SLC_HOST_EXT_BIT1_INT_RAW (BIT(20))\r
+#define SLC_HOST_RXFIFO_NOT_EMPTY_INT_RAW (BIT(19))\r
+#define SLC_HOST_RX_PF_VALID_INT_RAW (BIT(18))\r
+#define SLC_HOST_TX_OVF_INT_RAW (BIT(17))\r
+#define SLC_HOST_RX_UDF_INT_RAW (BIT(16))\r
+#define SLC_HOST_TX_START_INT_RAW (BIT(15))\r
+#define SLC_HOST_RX_START_INT_RAW (BIT(14))\r
+#define SLC_HOST_RX_EOF_INT_RAW (BIT(13))\r
+#define SLC_HOST_RX_SOF_INT_RAW (BIT(12))\r
+#define SLC_HOST_TOKEN1_0TO1_INT_RAW (BIT(11))\r
+#define SLC_HOST_TOKEN0_0TO1_INT_RAW (BIT(10))\r
+#define SLC_HOST_TOKEN1_1TO0_INT_RAW (BIT(9))\r
+#define SLC_HOST_TOKEN0_1TO0_INT_RAW (BIT(8))\r
+#define SLC_HOST_TOHOST_BIT7_INT_RAW (BIT(7))\r
+#define SLC_HOST_TOHOST_BIT6_INT_RAW (BIT(6))\r
+#define SLC_HOST_TOHOST_BIT5_INT_RAW (BIT(5))\r
+#define SLC_HOST_TOHOST_BIT4_INT_RAW (BIT(4))\r
+#define SLC_HOST_TOHOST_BIT3_INT_RAW (BIT(3))\r
+#define SLC_HOST_TOHOST_BIT2_INT_RAW (BIT(2))\r
+#define SLC_HOST_TOHOST_BIT1_INT_RAW (BIT(1))\r
+#define SLC_HOST_TOHOST_BIT0_INT_RAW (BIT(0))\r
+\r
+#define SLC_HOST_STATE_W0                    (REG_SLC_HOST_BASE + 0xC)\r
+#define SLC_HOST_STATE3 0x000000FF\r
+#define SLC_HOST_STATE3_S 24\r
+#define SLC_HOST_STATE2 0x000000FF\r
+#define SLC_HOST_STATE2_S 16\r
+#define SLC_HOST_STATE1 0x000000FF\r
+#define SLC_HOST_STATE1_S 8\r
+#define SLC_HOST_STATE0 0x000000FF\r
+#define SLC_HOST_STATE0_S 0\r
+\r
+#define SLC_HOST_STATE_W1                    (REG_SLC_HOST_BASE + 0x10)\r
+#define SLC_HOST_STATE7 0x000000FF\r
+#define SLC_HOST_STATE7_S 24\r
+#define SLC_HOST_STATE6 0x000000FF\r
+#define SLC_HOST_STATE6_S 16\r
+#define SLC_HOST_STATE5 0x000000FF\r
+#define SLC_HOST_STATE5_S 8\r
+#define SLC_HOST_STATE4 0x000000FF\r
+#define SLC_HOST_STATE4_S 0\r
+\r
+#define SLC_HOST_CONF_W0                     (REG_SLC_HOST_BASE + 0x14)\r
+#define SLC_HOST_CONF3 0x000000FF\r
+#define SLC_HOST_CONF3_S 24\r
+#define SLC_HOST_CONF2 0x000000FF\r
+#define SLC_HOST_CONF2_S 16\r
+#define SLC_HOST_CONF1 0x000000FF\r
+#define SLC_HOST_CONF1_S 8\r
+#define SLC_HOST_CONF0 0x000000FF\r
+#define SLC_HOST_CONF0_S 0\r
+\r
+#define SLC_HOST_CONF_W1                     (REG_SLC_HOST_BASE + 0x18)\r
+#define SLC_HOST_CONF7 0x000000FF\r
+#define SLC_HOST_CONF7_S 24\r
+#define SLC_HOST_CONF6 0x000000FF\r
+#define SLC_HOST_CONF6_S 16\r
+#define SLC_HOST_CONF5 0x000000FF\r
+#define SLC_HOST_CONF5_S 8\r
+#define SLC_HOST_CONF4 0x000000FF\r
+#define SLC_HOST_CONF4_S 0\r
+\r
+#define SLC_HOST_INT_ST                      (REG_SLC_HOST_BASE + 0x1C)\r
+#define SLC_HOST_RX_ST (BIT(23))\r
+#define SLC_HOST_EXT_BIT3_INT_ST (BIT(22))\r
+#define SLC_HOST_EXT_BIT2_INT_ST (BIT(21))\r
+#define SLC_HOST_EXT_BIT1_INT_ST (BIT(20))\r
+#define SLC_HOST_RXFIFO_NOT_EMPTY_INT_ST (BIT(19))\r
+#define SLC_HOST_RX_PF_VALID_INT_ST (BIT(18))\r
+#define SLC_HOST_TX_OVF_INT_ST (BIT(17))\r
+#define SLC_HOST_RX_UDF_INT_ST (BIT(16))\r
+#define SLC_HOST_TX_START_INT_ST (BIT(15))\r
+#define SLC_HOST_RX_START_INT_ST (BIT(14))\r
+#define SLC_HOST_RX_EOF_INT_ST (BIT(13))\r
+#define SLC_HOST_RX_SOF_INT_ST (BIT(12))\r
+#define SLC_HOST_TOKEN1_0TO1_INT_ST (BIT(11))\r
+#define SLC_HOST_TOKEN0_0TO1_INT_ST (BIT(10))\r
+#define SLC_HOST_TOKEN1_1TO0_INT_ST (BIT(9))\r
+#define SLC_HOST_TOKEN0_1TO0_INT_ST (BIT(8))\r
+#define SLC_HOST_TOHOST_BIT7_INT_ST (BIT(7))\r
+#define SLC_HOST_TOHOST_BIT6_INT_ST (BIT(6))\r
+#define SLC_HOST_TOHOST_BIT5_INT_ST (BIT(5))\r
+#define SLC_HOST_TOHOST_BIT4_INT_ST (BIT(4))\r
+#define SLC_HOST_TOHOST_BIT3_INT_ST (BIT(3))\r
+#define SLC_HOST_TOHOST_BIT2_INT_ST (BIT(2))\r
+#define SLC_HOST_TOHOST_BIT1_INT_ST (BIT(1))\r
+#define SLC_HOST_TOHOST_BIT0_INT_ST (BIT(0))\r
+\r
+#define SLC_HOST_CONF_W2                     (REG_SLC_HOST_BASE + 0x20)\r
+#define SLC_HOST_CONF11 0x000000FF\r
+#define SLC_HOST_CONF11_S 24\r
+#define SLC_HOST_CONF10 0x000000FF\r
+#define SLC_HOST_CONF10_S 16\r
+#define SLC_HOST_CONF9 0x000000FF\r
+#define SLC_HOST_CONF9_S 8\r
+#define SLC_HOST_CONF8 0x000000FF\r
+#define SLC_HOST_CONF8_S 0\r
+\r
+#define SLC_HOST_CONF_W3                     (REG_SLC_HOST_BASE + 0x24)\r
+#define SLC_HOST_CONF15 0x000000FF\r
+#define SLC_HOST_CONF15_S 24\r
+#define SLC_HOST_CONF14 0x000000FF\r
+#define SLC_HOST_CONF14_S 16\r
+#define SLC_HOST_CONF13 0x000000FF\r
+#define SLC_HOST_CONF13_S 8\r
+#define SLC_HOST_CONF12 0x000000FF\r
+#define SLC_HOST_CONF12_S 0\r
+\r
+#define SLC_HOST_GEN_TXDONE_INT  BIT(16)\r
+#define SLC_HOST_GEN_RXDONE_INT  BIT(17)\r
+\r
+#define SLC_HOST_CONF_W4                     (REG_SLC_HOST_BASE + 0x28)\r
+#define SLC_HOST_CONF19 0x000000FF\r
+#define SLC_HOST_CONF19_S 24\r
+#define SLC_HOST_CONF18 0x000000FF\r
+#define SLC_HOST_CONF18_S 16\r
+#define SLC_HOST_CONF17 0x000000FF\r
+#define SLC_HOST_CONF17_S 8\r
+#define SLC_HOST_CONF16 0x000000FF\r
+#define SLC_HOST_CONF16_S 0\r
+\r
+#define SLC_HOST_TOKEN_WDATA                 (REG_SLC_HOST_BASE + 0x2C)\r
+#define SLC_HOST_TOKEN1_WD 0x00000FFF\r
+#define SLC_HOST_TOKEN1_WD_S 16\r
+#define SLC_HOST_TOKEN0_WD 0x00000FFF\r
+#define SLC_HOST_TOKEN0_WD_S 0\r
+\r
+#define SLC_HOST_INT_CLR                     (REG_SLC_HOST_BASE + 0x30)\r
+#define SLC_HOST_TOKEN1_WR (BIT(31))\r
+#define SLC_HOST_TOKEN0_WR (BIT(30))\r
+#define SLC_HOST_TOKEN1_DEC (BIT(29))\r
+#define SLC_HOST_TOKEN0_DEC (BIT(28))\r
+#define SLC_HOST_EXT_BIT3_INT_CLR (BIT(22))\r
+#define SLC_HOST_EXT_BIT2_INT_CLR (BIT(21))\r
+#define SLC_HOST_EXT_BIT1_INT_CLR (BIT(20))\r
+#define SLC_HOST_EXT_BIT0_INT_CLR (BIT(19))\r
+#define SLC_HOST_RX_PF_VALID_INT_CLR (BIT(18))\r
+#define SLC_HOST_TX_OVF_INT_CLR (BIT(17))\r
+#define SLC_HOST_RX_UDF_INT_CLR (BIT(16))\r
+#define SLC_HOST_TX_START_INT_CLR (BIT(15))\r
+#define SLC_HOST_RX_START_INT_CLR (BIT(14))\r
+#define SLC_HOST_RX_EOF_INT_CLR (BIT(13))\r
+#define SLC_HOST_RX_SOF_INT_CLR (BIT(12))\r
+#define SLC_HOST_TOKEN1_0TO1_INT_CLR (BIT(11))\r
+#define SLC_HOST_TOKEN0_0TO1_INT_CLR (BIT(10))\r
+#define SLC_HOST_TOKEN1_1TO0_INT_CLR (BIT(9))\r
+#define SLC_HOST_TOKEN0_1TO0_INT_CLR (BIT(8))\r
+#define SLC_HOST_TOHOST_BIT7_INT_CLR (BIT(7))\r
+#define SLC_HOST_TOHOST_BIT6_INT_CLR (BIT(6))\r
+#define SLC_HOST_TOHOST_BIT5_INT_CLR (BIT(5))\r
+#define SLC_HOST_TOHOST_BIT4_INT_CLR (BIT(4))\r
+#define SLC_HOST_TOHOST_BIT3_INT_CLR (BIT(3))\r
+#define SLC_HOST_TOHOST_BIT2_INT_CLR (BIT(2))\r
+#define SLC_HOST_TOHOST_BIT1_INT_CLR (BIT(1))\r
+#define SLC_HOST_TOHOST_BIT0_INT_CLR (BIT(0))\r
+\r
+#define SLC_HOST_INT_ENA                     (REG_SLC_HOST_BASE + 0x34)\r
+#define SLC_HOST_EXT_BIT3_INT_ENA (BIT(22))\r
+#define SLC_HOST_EXT_BIT2_INT_ENA (BIT(21))\r
+#define SLC_HOST_EXT_BIT1_INT_ENA (BIT(20))\r
+#define SLC_HOST_EXT_BIT0_INT_ENA (BIT(19))\r
+#define SLC_HOST_RX_PF_VALID_INT_ENA (BIT(18))\r
+#define SLC_HOST_TX_OVF_INT_ENA (BIT(17))\r
+#define SLC_HOST_RX_UDF_INT_ENA (BIT(16))\r
+#define SLC_HOST_TX_START_INT_ENA (BIT(15))\r
+#define SLC_HOST_RX_START_INT_ENA (BIT(14))\r
+#define SLC_HOST_RX_EOF_INT_ENA (BIT(13))\r
+#define SLC_HOST_RX_SOF_INT_ENA (BIT(12))\r
+#define SLC_HOST_TOKEN1_0TO1_INT_ENA (BIT(11))\r
+#define SLC_HOST_TOKEN0_0TO1_INT_ENA (BIT(10))\r
+#define SLC_HOST_TOKEN1_1TO0_INT_ENA (BIT(9))\r
+#define SLC_HOST_TOKEN0_1TO0_INT_ENA (BIT(8))\r
+#define SLC_HOST_TOHOST_BIT7_INT_ENA (BIT(7))\r
+#define SLC_HOST_TOHOST_BIT6_INT_ENA (BIT(6))\r
+#define SLC_HOST_TOHOST_BIT5_INT_ENA (BIT(5))\r
+#define SLC_HOST_TOHOST_BIT4_INT_ENA (BIT(4))\r
+#define SLC_HOST_TOHOST_BIT3_INT_ENA (BIT(3))\r
+#define SLC_HOST_TOHOST_BIT2_INT_ENA (BIT(2))\r
+#define SLC_HOST_TOHOST_BIT1_INT_ENA (BIT(1))\r
+#define SLC_HOST_TOHOST_BIT0_INT_ENA (BIT(0))\r
+\r
+#define SLC_HOST_CONF_W5                     (REG_SLC_HOST_BASE + 0x3C)\r
+#define SLC_HOST_CONF23 0x000000FF\r
+#define SLC_HOST_CONF23_S 24\r
+#define SLC_HOST_CONF22 0x000000FF\r
+#define SLC_HOST_CONF22_S 16\r
+#define SLC_HOST_CONF21 0x000000FF\r
+#define SLC_HOST_CONF21_S 8\r
+#define SLC_HOST_CONF20 0x000000FF\r
+#define SLC_HOST_CONF20_S 0\r
+\r
+\r
+#define SLC_HOST_DATE                         (REG_SLC_HOST_BASE + 0x78)\r
+#define SLC_HOST_ID                           (REG_SLC_HOST_BASE + 0x7C)\r
+\r
+#define SLC_ADDR_WINDOW_CLEAR_MASK   (~(0xf<<12))\r
+#define SLC_FROM_HOST_ADDR_WINDOW  (0x1<<12)\r
+#define SLC_TO_HOST_ADDR_WINDOW    (0x3<<12)\r
+\r
+#define SLC_SET_FROM_HOST_ADDR_WINDOW(v)   do { \\r
+        (v) &= 0xffff;    \\r
+       (v) &= SLC_ADDR_WINDOW_CLEAR_MASK; \\r
+       (v) |= SLC_FROM_HOST_ADDR_WINDOW; \\r
+} while (0);\r
+\r
+#define SLC_SET_TO_HOST_ADDR_WINDOW(v)   do { \\r
+        (v) &= 0xffff;    \\r
+       (v) &= SLC_ADDR_WINDOW_CLEAR_MASK; \\r
+       (v) |= SLC_TO_HOST_ADDR_WINDOW; \\r
+} while (0);\r
+\r
+\r
+#endif // SLC_HOST_REGISTER_H_INCLUDED\r
diff --git a/drivers/net/wireless/rockchip_wlan/esp8089/spi_sif_esp.c b/drivers/net/wireless/rockchip_wlan/esp8089/spi_sif_esp.c
new file mode 100755 (executable)
index 0000000..49571a8
--- /dev/null
@@ -0,0 +1,1938 @@
+/*
+ * Copyright (c) 2010 -2013 Espressif System.
+ *
+ *   sdio serial i/f driver
+ *    - sdio device control routines
+ *    - sync/async DMA/PIO read/write
+ *
+ */
+#ifdef ESP_USE_SPI
+
+#include <linux/module.h>
+#include <net/mac80211.h>
+#include <linux/time.h>
+#include <linux/pm.h>
+#include <linux/spi/spi.h>
+#include <linux/interrupt.h>
+#include <linux/kthread.h>
+
+
+#include "esp_pub.h"
+#include "esp_sif.h"
+#include "esp_sip.h"
+#include "esp_debug.h"
+#include "slc_host_register.h"
+#include "esp_version.h"
+#include "esp_ctrl.h"
+#ifdef ANDROID
+#include "esp_android.h"
+#endif /* ANDROID */
+#ifdef USE_EXT_GPIO
+#include "esp_ext.h"
+#endif /* USE_EXT_GPIO */
+
+static int __init esp_spi_init(void);
+static void __exit esp_spi_exit(void);
+
+#define SPI_BLOCK_SIZE              (512)
+
+#define MAX_BUF_SIZE        (48*1024)
+
+static unsigned char *buf_addr = NULL;
+static unsigned char *tx_cmd;
+static unsigned char *rx_cmd;
+
+struct task_struct *sif_irq_thread;
+
+#define ESP_DMA_IBUFSZ   2048
+
+//unsigned int esp_msg_level = 0;
+unsigned int esp_msg_level = ESP_DBG_ERROR | ESP_SHOW;
+
+static struct semaphore esp_powerup_sem;
+
+static enum esp_sdio_state sif_sdio_state;
+struct esp_spi_ctrl *sif_sctrl = NULL;
+
+#ifdef ESP_ANDROID_LOGGER
+bool log_off = false;
+#endif /* ESP_ANDROID_LOGGER */
+
+struct sif_req * sif_alloc_req(struct esp_spi_ctrl *sctrl);
+
+#include "spi_stub.c"
+
+void sif_lock_bus(struct esp_pub *epub)
+{
+        EPUB_FUNC_CHECK(epub);
+
+        spi_bus_lock(EPUB_TO_FUNC(epub)->master);
+}
+
+void sif_unlock_bus(struct esp_pub *epub)
+{
+        EPUB_FUNC_CHECK(epub);
+
+        spi_bus_unlock(EPUB_TO_FUNC(epub)->master);
+}
+
+int sif_spi_write_then_read(struct spi_device *spi, unsigned char* bufwrite, int sizesend, unsigned char* bufread, int sizeread)
+{
+       int error;
+
+        error = spi_write_then_read(spi, bufwrite,sizesend, bufread, sizeread);
+    
+       if (error) {
+               esp_dbg(ESP_DBG_ERROR, "%s: failed, error: %d\n",
+                       __func__, error);
+               return error;
+       }
+
+       return 0;
+}
+
+
+int sif_spi_write_async_read(struct spi_device *spi, unsigned char* bufwrite,unsigned char* bufread,int size)
+{
+       struct spi_transfer xfer = {
+              .rx_buf          = bufread,
+               .tx_buf         = bufwrite,
+               .len            = size,
+               .bits_per_word  = 8,
+               .speed_hz       = SPI_FREQ,
+       };
+       struct spi_message msg;
+       int error;
+
+       spi_message_init(&msg);
+       spi_message_add_tail(&xfer, &msg);
+
+       error = spi_sync_locked(spi, &msg);
+       if (error) {
+               esp_dbg(ESP_DBG_ERROR, "%s: failed, error: %d\n",
+                       __func__, error);
+               return error;
+       }
+
+       return 0;
+}
+
+int sif_spi_write_raw(struct spi_device *spi, unsigned char* buf, int size)
+{
+       int err;
+       struct spi_transfer xfer = {
+               .tx_buf         = buf,
+               .len            = size,
+               .bits_per_word  = 8,
+               .speed_hz       = SPI_FREQ,
+       };
+       struct spi_message msg;
+
+       spi_message_init(&msg);
+       spi_message_add_tail(&xfer, &msg);
+       
+       err = spi_sync_locked(spi, &msg);
+
+       if (err) {
+               esp_dbg(ESP_DBG_ERROR, "%s: failed, error: %d\n",
+                       __func__, err);
+               return err;
+       }
+
+       return 0;
+}
+
+int sif_spi_read_raw(struct spi_device *spi, unsigned char* buf, int size)
+{
+        memset(buf,0xff,size);
+        return sif_spi_write_async_read(spi,buf,buf,size);
+}
+
+int sif_spi_write_bytes(struct spi_device *spi, unsigned int addr, unsigned char *src,int count, int check_idle)
+{
+       int i;
+        int pos,len;       
+        unsigned char *tx_data = (unsigned char*)src;
+        int err_ret = 0;     
+
+       u32 timeout = 25000;
+       u32 busy_state = 0x00;
+       
+       ASSERT(spi != NULL);
+              
+       if (check_idle) {
+               timeout = 25000;
+               do {
+                       busy_state = 0x00;
+                       sif_spi_read_raw(spi, (u8 *)&busy_state, 4);
+            
+                    if(busy_state != 0xffffffff)
+                            esp_dbg(ESP_DBG_ERROR, "%s busy_state:%x\n", __func__, busy_state); 
+                        
+               } while (busy_state != 0xffffffff && --timeout > 0);
+       }
+
+       if (timeout < 24000)
+               esp_dbg(ESP_DBG_ERROR, "%s timeout[%d]\n", __func__, timeout); 
+
+
+         if(count > 512 )
+        {
+                err_ret = -1;
+                goto goto_err;
+        }
+        
+        tx_cmd[0]=0x75;
+
+        if( addr >= (1<<17) )
+        {
+                err_ret = -2;
+                goto goto_err;
+
+        }
+        else
+        {
+             tx_cmd[1]=0x90|0x04|(addr>>15);    //0x94;
+             tx_cmd[2]=addr>>7;    
+
+             if(count == 512 )
+            {
+                    tx_cmd[3]=( addr<<1|0x0 );
+                    tx_cmd[4]= 0x00;     //0x08;
+            }
+            else
+            {
+                    tx_cmd[3]=( addr<<1|count>>7 );
+                    tx_cmd[4]= count;     //0x08;
+            }
+        }
+        
+        tx_cmd[5]=0x01;
+        pos = 5+1;
+
+//Add cmd respon
+        memset(tx_cmd+pos,0xff,CMD_RESP_SIZE);
+        pos =pos+ CMD_RESP_SIZE;
+
+//Add token        
+        tx_cmd[pos]=0xFE;
+        pos = pos+1;
+
+//Add data  
+        memcpy(tx_cmd+pos,tx_data,count);
+        pos = pos+count;
+
+//Add data respon
+        memset(tx_cmd+pos,0xff,DATA_RESP_SIZE_W);
+        pos = pos+ DATA_RESP_SIZE_W;
+
+        
+        if( pos%8 )
+        {
+            len = (8 - pos%8);
+            memset(tx_cmd+pos,0xff,len);
+        }
+        else
+            len = 0;
+        sif_spi_write_async_read(spi, tx_cmd,tx_cmd,pos+len);
+        
+        
+
+        pos = 5+1;
+        for(i=0;i<CMD_RESP_SIZE;i++)
+        {
+                if(tx_cmd[pos+i] == 0x00 && tx_cmd[pos+i-1] == 0xff)
+                {
+                        if(tx_cmd[pos+i+1] == 0x00 && tx_cmd[pos+i+2] == 0xff)
+                            break;      
+                }
+        }
+        if(i>=CMD_RESP_SIZE)
+        {
+                esp_dbg(ESP_DBG_ERROR, "write data resp 0x00 no recv\n");
+               err_ret = -3;
+                goto goto_err;
+       }
+        
+        pos = pos+CMD_RESP_SIZE+count+1;
+        for(i=0;i<DATA_RESP_SIZE_W;i++)
+        {
+                if(tx_cmd[pos+i] == 0xE5)
+                {
+                       //esp_dbg(ESP_DBG_ERROR, "0xE5 pos:%d",i);
+                        for(i++;i<DATA_RESP_SIZE_W;i++)
+                        {
+                             if( tx_cmd[pos+i] == 0xFF)
+                             {
+                               //esp_dbg(ESP_DBG_ERROR, "0xFF pos:%d",i);
+                                  break;
+                             }
+                        }
+                        break;      
+                }
+        }
+        if(i>=DATA_RESP_SIZE_W)
+        {
+                esp_dbg(ESP_DBG_ERROR, "write data resp 0xE5 no recv\n");
+               err_ret = -3;
+                goto goto_err;
+       }
+
+goto_err:
+       return err_ret;
+}
+
+int sif_spi_write_blocks(struct spi_device *spi, unsigned int addr,unsigned char *src, int count, int check_idle)
+{
+       int err_ret = 0;
+        int i,j;
+        int n;
+        int pos,len; 
+        unsigned char *tx_data = (unsigned char*)src;
+       u32 busy_state = 0x00;
+       u32 timeout = 25000;    
+       //esp_dbg(ESP_DBG_ERROR, "Block Write ---------");    
+      
+       ASSERT(spi != NULL);
+       
+
+#if 1  
+       if (check_idle) {
+               timeout = 25000;
+               do {
+                       busy_state = 0x00;
+                       sif_spi_read_raw(spi, (u8 *)&busy_state, 4);
+            
+                    if(busy_state != 0xffffffff)
+                            esp_dbg(ESP_DBG_ERROR, "%s busy_state:%x\n", __func__, busy_state); 
+
+               } while (busy_state != 0xffffffff && --timeout > 0);
+       }
+
+       if (timeout < 24000)
+               esp_dbg(ESP_DBG_ERROR, "%s timeout[%d]\n", __func__, timeout);
+#endif
+
+//esp_dbg(ESP_DBG_ERROR, "Block Write ---------");    
+        tx_cmd[0]=0x75;
+
+        if( count <=0 )
+        {
+                err_ret = -1;
+                goto goto_err;
+        }
+
+        if( addr >= (1<<17) )
+        {
+                err_ret = -2;
+                goto goto_err;
+        }
+        else
+        {
+             tx_cmd[1]=0x90|0x0C|(addr>>15);   
+             tx_cmd[2]=addr>>7;    
+
+             if(count >= 512 )
+            {
+                    tx_cmd[3]=( addr<<1|0x0 );
+                    tx_cmd[4]= 0x00;     
+            }
+            else
+            {
+                    tx_cmd[3]=( addr<<1|count>>7 );
+                    tx_cmd[4]= count;     
+            }
+        }
+        tx_cmd[5]=0x01;
+        
+        pos = 5+1;
+//Add cmd respon
+       memset(tx_cmd+pos,0xff,CMD_RESP_SIZE);
+       pos =pos+ CMD_RESP_SIZE;
+
+         for(j=0;j<count;j++)
+         {
+//Add token   
+                tx_cmd[pos]=0xFC;
+                pos = pos+1;
+//Add data    
+                memcpy(tx_cmd+pos,tx_data+j*SPI_BLOCK_SIZE, SPI_BLOCK_SIZE);
+                pos = pos+SPI_BLOCK_SIZE;
+//Add data respon
+                if( j==(count- 1) )
+                {
+                        memset(tx_cmd+pos , 0xff , BLOCK_W_DATA_RESP_SIZE_FINAL);
+                        pos = pos+ BLOCK_W_DATA_RESP_SIZE_FINAL;
+                        continue;
+                }
+                memset(tx_cmd+pos , 0xff , BLOCK_W_DATA_RESP_SIZE_EACH);
+                pos = pos+ BLOCK_W_DATA_RESP_SIZE_EACH;
+         }
+         
+        if( pos%8 )
+        {
+            len = (8 - pos%8);
+            memset(tx_cmd+pos,0xff,len);
+        }
+        else
+            len = 0;
+        
+        sif_spi_write_async_read(spi, tx_cmd,tx_cmd,pos+len);
+//Judge Write cmd resp, and 1st block data resp.        
+        pos = 5+1;
+        for(i=0;i<CMD_RESP_SIZE;i++)
+        {
+               if(tx_cmd[pos+i] == 0x00 && tx_cmd[pos+i-1] == 0xff)
+                {
+                        if(tx_cmd[pos+i+1] == 0x00 && tx_cmd[pos+i+2] == 0xff)
+                            break;      
+                }
+
+        }
+        if(i>=CMD_RESP_SIZE)
+        {
+                esp_dbg(ESP_DBG_ERROR, "1st block write cmd resp 0x00 no recv, %d\n", count);
+                err_ret = -3;
+               goto goto_err;
+       }
+
+        pos = pos+CMD_RESP_SIZE;
+      
+        for(j=0;j<count;j++)
+        {
+//Judge block data resp
+                pos = pos+1;                   
+                pos = pos+SPI_BLOCK_SIZE;
+                
+                if( j==(count-1) )
+                    n = BLOCK_W_DATA_RESP_SIZE_FINAL;
+                else
+                    n= BLOCK_W_DATA_RESP_SIZE_EACH;
+                
+                for(i=0;i<n;i++)
+                {
+                       if (tx_cmd[pos+i] != 0xff && tx_cmd[pos+i] != 0xe5)
+                               esp_dbg(ESP_DBG_ERROR, " %s [0x%02x] %d block ,!0xff pos:%d\n", __func__, tx_cmd[pos+i], j,i);
+                        //if(tx_cmd[pos+i] == 0xE5)
+                        if( (tx_cmd[pos+i]&0x0F) == 0x05 )
+                        {
+//esp_dbg(ESP_DBG_ERROR, "%d block ,0xE5 pos:%d",j,i);
+                                for(i++;i<n;i++)
+                                {
+                                     if( tx_cmd[pos+i] == 0xFF)
+                                     {
+//esp_dbg(ESP_DBG_ERROR, "%d block ,0xFF pos:%d",j,i);
+                                          break;
+                                     }
+                                }
+                                break;     
+                        }
+                }
+                if(i>=n)
+                {      
+                       esp_dbg(ESP_DBG_ERROR, "%s block%d write data rsp error, %d\n", __func__, j+1, count);
+                        err_ret = -4;
+                       goto goto_err;
+               }
+                pos = pos+n;   
+        }
+#if 0
+//Add stop token     
+        pos = 0;
+        tx_cmd[pos]=0xFD;
+        pos = pos+1;
+//Add data respon
+        memset(tx_cmd+pos , 0xff , BLOCK_W_DATA_RESP_SIZE_FINAL);
+        pos = pos+ BLOCK_W_DATA_RESP_SIZE_FINAL;
+        eagle_spi_write_async_read(tx_cmd,tx_cmd,pos);
+
+//Judge Final busy bits.
+        pos = 1;
+        for(i=0;i<BLOCK_W_DATA_RESP_SIZE_FINAL;i++)
+        {
+                if(tx_cmd[pos+i] != 0xFF)
+                {
+//esp_dbg(ESP_DBG_ERROR, "Final 0x00 pos:%d",i);
+                        for(i++;i<BLOCK_W_DATA_RESP_SIZE_FINAL;i++)
+                        {
+                             if( tx_cmd[pos+i] == 0xFF)
+                             {
+//esp_dbg(ESP_DBG_ERROR, "Final 0xFF pos:%d",i);
+                                  break;
+                             }
+                        }
+                        break;
+                }
+        }
+
+        if(i>=BLOCK_W_DATA_RESP_SIZE_FINAL)
+        {
+                mutex_unlock(&RWMutex);
+                esp_dbg(ESP_DBG_ERROR, "blocks final busy bit no recv");
+                return -5;
+       }
+#endif
+
+goto_err:
+
+       return err_ret;
+}
+
+int sif_spi_write_mix_nosync(struct spi_device *spi, unsigned int addr, unsigned char *buf, int len, int check_idle)
+{
+       int blk_cnt;
+       int remain_len;
+       int err;
+
+       blk_cnt = len/SPI_BLOCK_SIZE;
+       remain_len = len%SPI_BLOCK_SIZE;
+
+       if (blk_cnt > 0) {
+               err  = sif_spi_write_blocks(spi, addr, buf, blk_cnt, check_idle);
+               if (err) 
+                       return err;
+       }
+
+       if (remain_len > 0) {
+               err = sif_spi_write_bytes(spi, addr, (buf + (blk_cnt*SPI_BLOCK_SIZE)), remain_len, check_idle);
+               if (err)
+                       return err;
+       }
+
+       return 0;
+
+}
+
+int sif_spi_write_mix_sync(struct spi_device *spi, unsigned int addr, unsigned char *buf, int len, int check_idle) 
+{
+       int err;
+
+       spi_bus_lock(spi->master);
+       err = sif_spi_write_mix_nosync(spi, addr, buf, len, check_idle);
+       spi_bus_unlock(spi->master);
+
+       return err;
+}
+
+int sif_spi_epub_write_mix_nosync(struct esp_pub *epub, unsigned int addr, unsigned char *buf,int len, int check_idle)
+{
+       struct esp_spi_ctrl *sctrl = NULL;
+        struct spi_device *spi = NULL;
+       
+       ASSERT(epub != NULL);
+        sctrl = (struct esp_spi_ctrl *)epub->sif;
+        spi = sctrl->spi;
+        ASSERT(spi != NULL);
+
+       return sif_spi_write_mix_nosync(spi, addr, buf, len, check_idle);
+}
+
+int sif_spi_epub_write_mix_sync(struct esp_pub *epub, unsigned int addr, unsigned char *buf,int len, int check_idle)
+{
+       struct esp_spi_ctrl *sctrl = NULL;
+        struct spi_device *spi = NULL;
+       
+       ASSERT(epub != NULL);
+        sctrl = (struct esp_spi_ctrl *)epub->sif;
+        spi = sctrl->spi;
+        ASSERT(spi != NULL);
+
+       return sif_spi_write_mix_sync(spi, addr, buf, len, check_idle);
+}
+
+int sif_spi_read_bytes(struct spi_device *spi, unsigned int addr,unsigned char *dst, int count, int check_idle)
+{      
+       int pos,total_num,len;
+        int i;
+        unsigned char *rx_data = (unsigned char *)dst;
+       int err_ret = 0;
+       
+       u32 timeout = 25000;
+       u32 busy_state = 0x00;
+
+       ASSERT(spi != NULL);
+        
+
+       rx_cmd[0]=0x75;
+        
+       if (check_idle) {       
+               timeout = 25000;
+               do {
+                       busy_state = 0x00;
+                       sif_spi_read_raw(spi, (u8 *)&busy_state, 4);
+            
+                    if(busy_state != 0xffffffff)
+                            esp_dbg(ESP_DBG_ERROR, "%s busy_state:%x\n", __func__, busy_state); 
+            
+               } while (busy_state != 0xffffffff && --timeout > 0);
+       }
+
+       if (timeout < 24000)
+               esp_dbg(ESP_DBG_ERROR, "%s timeout[%d]\n", __func__, timeout); 
+
+        if(count > 512 )
+        {
+               err_ret = -1;
+               goto goto_err;
+        }
+
+        if( addr >= (1<<17) )
+        {
+                err_ret = -2;
+               goto goto_err;
+        }
+        else
+        {
+             rx_cmd[1]=0x10|0x04|(addr>>15);    //0x94;
+             rx_cmd[2]=addr>>7;    
+
+             if(count == 512 )
+            {
+                    rx_cmd[3]=( addr<<1|0x0 );
+                    rx_cmd[4]= 0x00;     //0x08;
+            }
+            else
+            {
+                    rx_cmd[3]=( addr<<1|count>>7 );
+                    rx_cmd[4]= count;     //0x08;
+            }
+        }
+        
+        rx_cmd[5]=0x01;
+
+#if 1        // one shot read 
+        total_num = CMD_RESP_SIZE+DATA_RESP_SIZE_R+count+2;
+        memset(rx_cmd+6 , 0xFF ,total_num);
+
+
+        if( (6+total_num)%8 )
+        {
+            len = (8 - (6+total_num)%8);
+            memset(rx_cmd+6+total_num,0xff,len);
+        }
+        else
+            len = 0;
+        sif_spi_write_async_read(spi, rx_cmd,rx_cmd,6+total_num+len);
+
+        pos = 5+1;
+        for(i=0;i<CMD_RESP_SIZE;i++)
+        {
+               if(rx_cmd[pos+i] == 0x00 && rx_cmd[pos+i-1] == 0xff)
+                {
+                        if(rx_cmd[pos+i+1] == 0x00 && rx_cmd[pos+i+2] == 0xff)
+                            break;      
+                }
+        }
+        if(i>=CMD_RESP_SIZE)
+        {
+                esp_dbg(ESP_DBG_ERROR, "read cmd resp 0x00 no recv\n");
+/***********error info************************/
+/*
+       char t = pos;
+       while ( t < pos+32) {
+               printk(KERN_ERR "rx:[0x%02x] ", rx_cmd[t]);
+               t++;
+               if ((t-pos)%8 == 0)
+                       printk(KERN_ERR "\n");
+       }
+*/
+                err_ret = -3;
+               goto goto_err;
+       }
+//esp_dbg(ESP_DBG_ERROR, "0x00 pos:%d",pos+i);
+       pos = pos+i+2;
+       
+        for(i=0;i<DATA_RESP_SIZE_R;i++)
+        {
+                if(rx_cmd[pos+i]==0xFE)
+                    break;
+        }
+        if(i>=DATA_RESP_SIZE_R)
+        {
+                esp_dbg(ESP_DBG_ERROR, "read data resp 0xFE no recv\n");
+               err_ret = -4;
+               goto goto_err;
+       }
+//esp_dbg(ESP_DBG_ERROR, "0xFE pos:%d",pos+i);
+       pos = pos+i+1;
+        memcpy(rx_data,rx_cmd+pos,count);
+#else       //wait method
+  
+        memset(rx_cmd+6,0xFF,CMD_RESP_SIZE+DATA_RESP_SIZE_R+count+2);
+//printk(KERN_ERR "mark 1",pos+i);     
+        sif_spi_write_async_read(spi, rx_cmd,rx_cmd,6+CMD_RESP_SIZE+DATA_RESP_SIZE_R+count+2);
+//printk(KERN_ERR "mark 2",pos+i);
+        pos = 5+1;
+        for(i=0;i<CMD_RESP_SIZE;i++)
+        {
+               if(rx_cmd[pos+i] == 0x00 && rx_cmd[pos+i-1] == 0xff)
+                {
+                        if(rx_cmd[pos+i+1] == 0x00 && rx_cmd[pos+i+2] == 0xff)
+                            break;      
+                }
+        }
+        if(i>=CMD_RESP_SIZE)
+        {
+                printk(KERN_ERR "read cmd resp 0x00 no recv\n");
+                //kfree(rx_cmd);
+                err_ret = -3;
+               goto goto_err;
+       }
+//printk(KERN_ERR "0x00 pos:%d",pos+i);
+       pos = pos+i+2;
+       
+        for(i=0;i<DATA_RESP_SIZE_R;i++)
+        {
+                if(rx_cmd[pos+i]==0xFE)
+                    break;
+        }
+        if(i>=DATA_RESP_SIZE_R)
+        {
+                printk(KERN_ERR "read data resp 0xFE no recv\n");
+               err_ret = -4;
+               goto goto_err;
+       }
+//printk(KERN_ERR "0xFE pos:%d",pos+i);
+       pos = pos+i+1;
+
+        for(i=0;i<count;i++)
+        {
+                *(rx_data+i) = rx_cmd[pos+i];
+        }
+
+
+#endif
+goto_err:
+
+        return err_ret;
+}
+
+int sif_spi_read_blocks(struct spi_device *spi, unsigned int addr, unsigned char *dst, int count, int check_idle)
+{
+       int err_ret = 0;
+       int pos,len;
+       int i,j;
+       unsigned char *rx_data = (unsigned char *)dst;
+       int total_num;
+       u32 busy_state = 0x00;
+       u32 timeout = 25000;
+
+       //esp_dbg(ESP_DBG_ERROR, "Block Read ---------");               
+       ASSERT(spi != NULL);
+   
+
+#if 1 
+       if (check_idle) {
+               timeout = 25000;
+               do {
+                       busy_state = 0x00;
+                       sif_spi_read_raw(spi, (u8 *)&busy_state, 4);
+            
+                    if(busy_state != 0xffffffff)
+                            esp_dbg(ESP_DBG_ERROR, "%s busy_state:%x\n", __func__, busy_state); 
+               } while (busy_state != 0xffffffff && --timeout > 0);
+       }
+
+       if (timeout < 24000)
+               esp_dbg(ESP_DBG_ERROR, "%s timeout[%d]\n", __func__, timeout);
+#endif
+        rx_cmd[0]=0x75;
+
+        if( count <=0 )
+        {
+                err_ret = -1;
+                goto goto_err;
+        }
+        if( addr >= (1<<17) )
+        {
+                err_ret = -2;
+               goto goto_err;
+        }
+        else
+        {
+             rx_cmd[1]=0x10|0x0C|(addr>>15);   
+             rx_cmd[2]=addr>>7;    
+
+            if(count >= 512 )
+            {
+                    rx_cmd[3]=( addr<<1|0x0 );
+                    rx_cmd[4]= 0x00;     
+            }
+            else
+            {
+                    rx_cmd[3]=( addr<<1|count>>7 );
+                    rx_cmd[4]= count;     
+            }
+        }
+        rx_cmd[5]=0x01;
+       total_num = CMD_RESP_SIZE+BLOCK_R_DATA_RESP_SIZE_1ST+SPI_BLOCK_SIZE+ 2 + (count-1)*(BLOCK_R_DATA_RESP_SIZE_EACH+SPI_BLOCK_SIZE+2);
+       memset(rx_cmd+6, 0xFF ,total_num);
+    
+        if( (6+total_num)%8 )
+        {
+            len = (8 - (6+total_num)%8);
+            memset(rx_cmd+6+total_num,0xff,len);
+        }
+        else
+            len = 0;
+        
+        sif_spi_write_async_read(spi, rx_cmd,rx_cmd,6+total_num+len );
+        
+        pos = 5+1;
+        for(i=0;i<CMD_RESP_SIZE;i++)
+        {
+               if(rx_cmd[pos+i] == 0x00 && rx_cmd[pos+i-1] == 0xff)
+                {
+                        if(rx_cmd[pos+i+1] == 0x00 && rx_cmd[pos+i+2] == 0xff)
+                            break;      
+                }
+
+        }
+        if(i>=CMD_RESP_SIZE)
+        {
+               esp_dbg(ESP_DBG_ERROR, "block read cmd resp 0x00 no recv\n");
+#if 0
+       char t = pos;
+       while ( t < pos+32) {
+               printk(KERN_ERR "rx:[0x%02x] ", rx_cmd[t]);
+               t++;
+               if ((t-pos)%8 == 0)
+                       printk(KERN_ERR "\n");
+       }
+#endif
+
+                err_ret = -3;
+               goto goto_err;
+        }
+
+        pos = pos+i+2;
+
+       for(i=0;i<BLOCK_R_DATA_RESP_SIZE_1ST;i++)
+        {
+                if(rx_cmd[pos+i]==0xFE)
+                {
+//esp_dbg(ESP_DBG_ERROR, "0xFE pos:%d",i);
+                    break;
+                }
+        }
+        if(i>=BLOCK_R_DATA_RESP_SIZE_1ST)
+        {
+                esp_dbg(ESP_DBG_ERROR, "1st block read data resp 0xFE no recv\n");
+                err_ret = -4;
+               goto goto_err;
+        }
+
+        pos = pos+i+1;
+
+        memcpy(rx_data,rx_cmd+pos,SPI_BLOCK_SIZE);
+
+        pos = pos +SPI_BLOCK_SIZE + 2;
+
+        for(j=1;j<count;j++)
+        {
+
+               for(i=0;i<BLOCK_R_DATA_RESP_SIZE_EACH;i++)
+               {
+                               if(rx_cmd[pos+i]==0xFE)
+                       {
+                       //esp_dbg(ESP_DBG_ERROR, "0xFE pos:%d",i);
+                       break;
+                       }
+               }
+               if(i>=BLOCK_R_DATA_RESP_SIZE_EACH)
+               {
+                       esp_dbg(ESP_DBG_ERROR, "block%d read data resp 0xFE no recv,total:%d\n",j+1,count);
+                        err_ret = -4;
+                       goto goto_err;
+                }
+
+                pos = pos+i+1;
+                memcpy(rx_data+j*SPI_BLOCK_SIZE,rx_cmd+pos,SPI_BLOCK_SIZE);
+                
+               pos = pos +SPI_BLOCK_SIZE + 2;
+        }
+     
+goto_err:       
+
+       return err_ret;
+}
+
+int sif_spi_read_mix_nosync(struct spi_device *spi, unsigned int addr, unsigned char *buf, int len, int check_idle)
+{
+       int blk_cnt;
+       int remain_len;
+       int err;
+
+       blk_cnt = len/SPI_BLOCK_SIZE;
+       remain_len = len%SPI_BLOCK_SIZE;
+
+       if (blk_cnt > 0) {
+               err  = sif_spi_read_blocks(spi, addr, buf, blk_cnt, check_idle);
+               if (err) 
+                       return err;
+       }
+
+       if (remain_len > 0) {
+               err = sif_spi_read_bytes(spi, addr, (buf + (blk_cnt*SPI_BLOCK_SIZE)), remain_len, check_idle);
+               if (err)
+                       return err;
+       }
+
+       return 0;
+}
+
+int sif_spi_read_mix_sync(struct spi_device *spi, unsigned int addr, unsigned char *buf, int len, int check_idle)
+{
+       int err;
+       
+       spi_bus_lock(spi->master);
+       err = sif_spi_read_mix_nosync(spi, addr, buf, len, check_idle);
+       spi_bus_unlock(spi->master);
+
+       return err;
+}
+
+int sif_spi_epub_read_mix_nosync(struct esp_pub *epub, unsigned int addr, unsigned char *buf,int len, int check_idle)
+{
+       struct esp_spi_ctrl *sctrl = NULL;
+        struct spi_device *spi = NULL;
+       
+       ASSERT(epub != NULL);
+        sctrl = (struct esp_spi_ctrl *)epub->sif;
+        spi = sctrl->spi;
+        ASSERT(spi != NULL);
+
+       return sif_spi_read_mix_nosync(spi, addr, buf, len, check_idle);
+}
+
+int sif_spi_epub_read_mix_sync(struct esp_pub *epub, unsigned int addr, unsigned char *buf,int len, int check_idle)
+{
+       struct esp_spi_ctrl *sctrl = NULL;
+        struct spi_device *spi = NULL;
+       
+       ASSERT(epub != NULL);
+        sctrl = (struct esp_spi_ctrl *)epub->sif;
+        spi = sctrl->spi;
+        ASSERT(spi != NULL);
+
+       return sif_spi_read_mix_sync(spi, addr, buf, len, check_idle);
+}
+
+int sif_spi_read_sync(struct esp_pub *epub, unsigned char *buf, int len, int check_idle)
+{
+       struct esp_spi_ctrl *sctrl = NULL;
+        struct spi_device *spi = NULL;
+       u32 read_len;
+
+        ASSERT(epub != NULL);
+        ASSERT(buf != NULL);
+
+        sctrl = (struct esp_spi_ctrl *)epub->sif;
+        spi = sctrl->spi;
+        ASSERT(spi != NULL);
+
+        switch(sctrl->target_id) {
+        case 0x100:
+                read_len = len;
+                break;
+        case 0x600:
+                read_len = roundup(len, sctrl->slc_blk_sz);
+                break;
+        default:
+                read_len = len;
+                break;
+        }
+       
+       return sif_spi_read_mix_sync(spi, sctrl->slc_window_end_addr - 2 - (len), buf, read_len, check_idle);
+}
+
+int sif_spi_write_sync(struct esp_pub *epub, unsigned char *buf, int len, int check_idle)
+{
+       struct esp_spi_ctrl *sctrl = NULL;
+        struct spi_device *spi = NULL;
+        u32 write_len;
+
+        ASSERT(epub != NULL);
+        ASSERT(buf != NULL);
+
+        sctrl = (struct esp_spi_ctrl *)epub->sif;
+        spi = sctrl->spi;
+        ASSERT(spi != NULL);
+
+        switch(sctrl->target_id) {
+        case 0x100:
+                write_len = len;
+                break;
+        case 0x600:
+                write_len = roundup(len, sctrl->slc_blk_sz);
+                break;
+        default:
+                write_len = len;
+                break;
+        }
+       return sif_spi_write_mix_sync(spi, sctrl->slc_window_end_addr - (len), buf, write_len, check_idle);
+}
+
+int sif_spi_read_nosync(struct esp_pub *epub, unsigned char *buf, int len, int check_idle, bool noround)
+{
+       struct esp_spi_ctrl *sctrl = NULL;
+        struct spi_device *spi = NULL;
+       u32 read_len;
+
+        ASSERT(epub != NULL);
+        ASSERT(buf != NULL);
+
+        sctrl = (struct esp_spi_ctrl *)epub->sif;
+        spi = sctrl->spi;
+        ASSERT(spi != NULL);
+
+        switch(sctrl->target_id) {
+        case 0x100:
+                read_len = len;
+                break;
+        case 0x600:
+               if (!noround)
+                       read_len = roundup(len, sctrl->slc_blk_sz);
+               else
+                       read_len = len;
+                break;
+        default:
+                read_len = len;
+                break;
+        }
+       
+       return sif_spi_read_mix_nosync(spi, sctrl->slc_window_end_addr - 2 - (len), buf, read_len, check_idle);
+}
+
+int sif_spi_write_nosync(struct esp_pub *epub, unsigned char *buf, int len, int check_idle)
+{
+       struct esp_spi_ctrl *sctrl = NULL;
+        struct spi_device *spi = NULL;
+        u32 write_len;
+
+        ASSERT(epub != NULL);
+        ASSERT(buf != NULL);
+
+        sctrl = (struct esp_spi_ctrl *)epub->sif;
+        spi = sctrl->spi;
+        ASSERT(spi != NULL);
+
+        switch(sctrl->target_id) {
+        case 0x100:
+                write_len = len;
+                break;
+        case 0x600:
+                write_len = roundup(len, sctrl->slc_blk_sz);
+                break;
+        default:
+                write_len = len;
+                break;
+        }
+       return sif_spi_write_mix_nosync(spi, sctrl->slc_window_end_addr - (len), buf, write_len, check_idle);
+}
+
+void sif_spi_protocol_init(struct spi_device *spi)
+{
+       unsigned char spi_proto_ini_status = 0;
+        unsigned char rx_buf1[10];
+        unsigned char tx_buf1[10];
+        unsigned char dummy_tx_buf[10];
+        memset(dummy_tx_buf,0xff,sizeof(dummy_tx_buf));      
+        do
+        {            
+                 if( spi_proto_ini_status == 0 )
+                 {
+                        do
+                        { 
+                                tx_buf1[0]=0x40;
+                                tx_buf1[1]=0x00;
+                                tx_buf1[2]=0x00;
+                                tx_buf1[3]=0x00;
+                                tx_buf1[4]=0x00;
+                                tx_buf1[5]=0x95;
+                                //printf("CMD0 \n");
+                                sif_spi_write_raw(spi, tx_buf1, 6);
+                                sif_spi_write_async_read(spi,dummy_tx_buf, rx_buf1,10);
+                                            esp_dbg(ESP_DBG_ERROR, "rx:[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x]\n", rx_buf1[0],rx_buf1[1]
+                ,rx_buf1[2],rx_buf1[3],rx_buf1[4],rx_buf1[5],rx_buf1[6],rx_buf1[7],rx_buf1[8],rx_buf1[9]);
+                                mdelay(100);
+                        }while( rx_buf1[2] != 0x01 );
+                        //  }while(1);
+                 }
+                else if( spi_proto_ini_status == 1 )
+                {
+                        tx_buf1[0]=0x45;
+                        tx_buf1[1]=0x00;
+                        tx_buf1[2]=0x20;               //0x04;
+                        tx_buf1[3]=0x00;
+                        tx_buf1[4]=0x00;
+                        tx_buf1[5]=0x01;
+                        //spi_err("CMD 5 1st\n");
+                        sif_spi_write_raw(spi, tx_buf1, 6);
+                        sif_spi_write_async_read(spi,dummy_tx_buf, rx_buf1,10);
+                                       esp_dbg(ESP_DBG_ERROR, "rx:[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x]\n", rx_buf1[0],rx_buf1[1]
+                ,rx_buf1[2],rx_buf1[3],rx_buf1[4],rx_buf1[5],rx_buf1[6],rx_buf1[7],rx_buf1[8],rx_buf1[9]);
+                 }
+                else if( spi_proto_ini_status == 2 )
+                {
+                        tx_buf1[0]=0x45;
+                        tx_buf1[1]=0x00;
+                        tx_buf1[2]=0x20;               
+                        tx_buf1[3]=0x00;
+                        tx_buf1[4]=0x00;
+                        tx_buf1[5]=0x01;
+                        //spi_err("CMD5 2nd\n");
+                        sif_spi_write_raw(spi, tx_buf1, 6);
+                        sif_spi_write_async_read(spi,dummy_tx_buf, rx_buf1,10);
+                                       esp_dbg(ESP_DBG_ERROR, "rx:[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x]\n", rx_buf1[0],rx_buf1[1]
+                ,rx_buf1[2],rx_buf1[3],rx_buf1[4],rx_buf1[5],rx_buf1[6],rx_buf1[7],rx_buf1[8],rx_buf1[9]);
+               }
+               else if( spi_proto_ini_status == 3 )                  //CMD 52   addr 0x2,   data 0x02;
+                {
+                        tx_buf1[0]=0x74;
+                        tx_buf1[1]=0x80;
+                        tx_buf1[2]=0x00;               
+                        tx_buf1[3]=0x04;
+                        tx_buf1[4]=0x02;
+                        tx_buf1[5]=0x01;
+                        //spi_err("CMD52 Write  addr 02 \n");  
+                        sif_spi_write_raw(spi, tx_buf1, 6);
+                        sif_spi_write_async_read(spi,dummy_tx_buf, rx_buf1,10);
+                                       esp_dbg(ESP_DBG_ERROR, "rx:[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x]\n", rx_buf1[0],rx_buf1[1]
+                ,rx_buf1[2],rx_buf1[3],rx_buf1[4],rx_buf1[5],rx_buf1[6],rx_buf1[7],rx_buf1[8],rx_buf1[9]);
+                 }
+                else if( spi_proto_ini_status == 4 )           
+                {
+                        tx_buf1[0]=0x74;
+                        tx_buf1[1]=0x80;
+                        tx_buf1[2]=0x00;               
+                        tx_buf1[3]=0x08;
+                        tx_buf1[4]=0x03;
+                        tx_buf1[5]=0x01;
+                        //spi_err("CMD52 Write  addr 04 \n"); 
+                        sif_spi_write_raw(spi, tx_buf1, 6);
+                        sif_spi_write_async_read(spi,dummy_tx_buf, rx_buf1,10);
+                                       esp_dbg(ESP_DBG_ERROR, "rx:[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x]\n", rx_buf1[0],rx_buf1[1]
+                ,rx_buf1[2],rx_buf1[3],rx_buf1[4],rx_buf1[5],rx_buf1[6],rx_buf1[7],rx_buf1[8],rx_buf1[9]);
+                 } 
+                else if( spi_proto_ini_status == 5 )           
+                {
+                        tx_buf1[0]=0x74;
+                        tx_buf1[1]=0x00;
+                        tx_buf1[2]=0x00;               
+                        tx_buf1[3]=0x04;
+                        tx_buf1[4]=0x00;
+                        tx_buf1[5]=0x01;
+                        //spi_err("CMD52 Read  addr 0x2 \n");
+                        sif_spi_write_raw(spi, tx_buf1, 6);
+                        sif_spi_write_async_read(spi,dummy_tx_buf, rx_buf1,10);
+                                       esp_dbg(ESP_DBG_ERROR, "rx:[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x]\n", rx_buf1[0],rx_buf1[1]
+                ,rx_buf1[2],rx_buf1[3],rx_buf1[4],rx_buf1[5],rx_buf1[6],rx_buf1[7],rx_buf1[8],rx_buf1[9]);
+                                      
+                 }
+                 else if( spi_proto_ini_status == 6 )           
+                {
+                        tx_buf1[0]=0x74;
+                        tx_buf1[1]=0x00;
+                        tx_buf1[2]=0x00;               
+                        tx_buf1[3]=0x08;
+                        tx_buf1[4]=0x00;
+                        tx_buf1[5]=0x01;
+                        //spi_err("CMD52 Read addr 0x4 \n");
+                        sif_spi_write_raw(spi, tx_buf1, 6);
+                        sif_spi_write_async_read(spi,dummy_tx_buf, rx_buf1,10);
+                                       esp_dbg(ESP_DBG_ERROR, "rx:[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x]\n", rx_buf1[0],rx_buf1[1]
+                ,rx_buf1[2],rx_buf1[3],rx_buf1[4],rx_buf1[5],rx_buf1[6],rx_buf1[7],rx_buf1[8],rx_buf1[9]);
+                 }
+                 else if (spi_proto_ini_status>6 && spi_proto_ini_status<15)
+                {
+                        tx_buf1[0]=0x74;
+                        tx_buf1[1]=0x10;
+                        tx_buf1[2]=0x00;               
+                        tx_buf1[3]=0xF0+2*(spi_proto_ini_status-7);
+                        tx_buf1[4]=0x00;
+                        tx_buf1[5]=0x01;
+                        sif_spi_write_raw(spi, tx_buf1, 6);
+                        sif_spi_write_async_read(spi,dummy_tx_buf, rx_buf1,10);
+                                       esp_dbg(ESP_DBG_ERROR, "rx:[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x]\n", rx_buf1[0],rx_buf1[1]
+                ,rx_buf1[2],rx_buf1[3],rx_buf1[4],rx_buf1[5],rx_buf1[6],rx_buf1[7],rx_buf1[8],rx_buf1[9]);
+                 }
+                else if (spi_proto_ini_status==15)
+                {
+                        //spi_err("CMD52 Write  Reg addr 0x110 \n"); 
+                        tx_buf1[0]=0x74;
+                        tx_buf1[1]=0x80;              //func0 should be
+                        tx_buf1[2]=0x02;               
+                        tx_buf1[3]=0x20;
+                        tx_buf1[4]=(unsigned char)(SPI_BLOCK_SIZE & 0xff);                       //0x02;
+                        tx_buf1[5]=0x01;
+                        sif_spi_write_raw(spi, tx_buf1, 6);
+                        sif_spi_write_async_read(spi,dummy_tx_buf, rx_buf1,10);
+                                       esp_dbg(ESP_DBG_ERROR, "rx:[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x]\n", rx_buf1[0],rx_buf1[1]
+                ,rx_buf1[2],rx_buf1[3],rx_buf1[4],rx_buf1[5],rx_buf1[6],rx_buf1[7],rx_buf1[8],rx_buf1[9]);
+                        
+                        //spi_err("CMD52 Write Reg addr 0x111 \n");  
+                        tx_buf1[0]=0x74;
+                        tx_buf1[1]=0x80;
+                        tx_buf1[2]=0x02;               
+                        tx_buf1[3]=0x22;
+                        tx_buf1[4]=(unsigned char)(SPI_BLOCK_SIZE>>8);                      //0x00;
+                        tx_buf1[5]=0x01;
+                        sif_spi_write_raw(spi, tx_buf1, 6);
+                        sif_spi_write_async_read(spi,dummy_tx_buf, rx_buf1,10);
+                                       esp_dbg(ESP_DBG_ERROR, "rx:[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x]\n", rx_buf1[0],rx_buf1[1]
+                ,rx_buf1[2],rx_buf1[3],rx_buf1[4],rx_buf1[5],rx_buf1[6],rx_buf1[7],rx_buf1[8],rx_buf1[9]);
+
+                        //spi_err("CMD52 Write Reg addr 0x111 \n");   /* set boot mode */
+                        tx_buf1[0]=0x74;
+                        tx_buf1[1]=0x80;
+                        tx_buf1[2]=0x41;               
+                        tx_buf1[3]=0xe0;
+                        tx_buf1[4]=0x01;          //0x00;
+                        tx_buf1[5]=0x01;
+                        sif_spi_write_raw(spi, tx_buf1, 6);
+                        sif_spi_write_async_read(spi,dummy_tx_buf, rx_buf1,10);
+                                       esp_dbg(ESP_DBG_ERROR, "rx:[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x]\n", rx_buf1[0],rx_buf1[1]
+                ,rx_buf1[2],rx_buf1[3],rx_buf1[4],rx_buf1[5],rx_buf1[6],rx_buf1[7],rx_buf1[8],rx_buf1[9]);
+
+                }
+                else if (spi_proto_ini_status==16)
+                {
+#if 0                                                        
+                        //printf("CMD52 Write  Reg addr 0x40 \n"); 
+                        tx_buf1[0]=0x74;
+                        tx_buf1[1]=0x90;              
+                        tx_buf1[2]=0x00;               
+                        tx_buf1[3]=0x80;
+                        tx_buf1[4]=0x91;                       //0x02;
+                        tx_buf1[5]=0x01;
+                        sif_spi_write_raw(spi, tx_buf1, 6);
+                        sif_spi_write_async_read(spi,dummy_tx_buf, rx_buf1,10);
+                esp_dbg(ESP_DBG_ERROR, "rx:[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x]\n", rx_buf1[0],rx_buf1[1]
+                ,rx_buf1[2],rx_buf1[3],rx_buf1[4],rx_buf1[5],rx_buf1[6],rx_buf1[7],rx_buf1[8],rx_buf1[9]);
+                
+                        //sif_spi_read_bytes( 0x0c,rx_buf1, 4);
+
+                        //printf("CMD52 Write  Reg addr 0x3c \n"); 
+                        tx_buf1[0]=0x74;
+                        tx_buf1[1]=0x90;            
+                        tx_buf1[2]=0x00;               
+                        tx_buf1[3]=0x78;
+                        tx_buf1[4]=0x3f;                     
+                        tx_buf1[5]=0x01;
+                        sif_spi_write_raw(spi, tx_buf1, 6);
+                        sif_spi_write_async_read(spi,dummy_tx_buf, rx_buf1,10);
+                        esp_dbg(ESP_DBG_ERROR, "rx:[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x]\n", rx_buf1[0],rx_buf1[1]
+                ,rx_buf1[2],rx_buf1[3],rx_buf1[4],rx_buf1[5],rx_buf1[6],rx_buf1[7],rx_buf1[8],rx_buf1[9]);
+                        
+                                                                //printf("CMD52 Write  Reg addr 0x3d \n"); 
+                        tx_buf1[0]=0x74;
+                        tx_buf1[1]=0x90;              
+                        tx_buf1[2]=0x00;               
+                        tx_buf1[3]=0x7a;
+                        tx_buf1[4]=0x34;                        //0x02;
+                        tx_buf1[5]=0x01;
+                        sif_spi_write_raw(spi, tx_buf1, 6);
+                        sif_spi_write_async_read(spi,dummy_tx_buf, rx_buf1,10);
+                        esp_dbg(ESP_DBG_ERROR, "rx:[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x]\n", rx_buf1[0],rx_buf1[1]
+                ,rx_buf1[2],rx_buf1[3],rx_buf1[4],rx_buf1[5],rx_buf1[6],rx_buf1[7],rx_buf1[8],rx_buf1[9]);
+                        
+                                                               // printf("CMD52 Write  Reg addr 0x3e \n"); 
+                        tx_buf1[0]=0x74;
+                        tx_buf1[1]=0x90;              
+                        tx_buf1[2]=0x00;               
+                        tx_buf1[3]=0x7c;
+                        tx_buf1[4]=0xfe;                       //0x02;
+                        tx_buf1[5]=0x01;
+                        sif_spi_write_raw(spi, tx_buf1, 6);
+                        sif_spi_write_async_read(spi,dummy_tx_buf, rx_buf1,10);
+                        esp_dbg(ESP_DBG_ERROR, "rx:[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x]\n", rx_buf1[0],rx_buf1[1]
+                ,rx_buf1[2],rx_buf1[3],rx_buf1[4],rx_buf1[5],rx_buf1[6],rx_buf1[7],rx_buf1[8],rx_buf1[9]);
+                        
+                                                                //printf("CMD52 Write  Reg addr 0x3f \n"); 
+                        tx_buf1[0]=0x74;
+                        tx_buf1[1]=0x90;              
+                        tx_buf1[2]=0x00;               
+                        tx_buf1[3]=0x7e;
+                        tx_buf1[4]=0x00;                       //0x02;
+                        tx_buf1[5]=0x01;
+                        sif_spi_write_raw(spi, tx_buf1, 6);
+                        sif_spi_write_async_read(spi,dummy_tx_buf, rx_buf1,10);
+                        esp_dbg(ESP_DBG_ERROR, "rx:[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x]\n", rx_buf1[0],rx_buf1[1]
+                ,rx_buf1[2],rx_buf1[3],rx_buf1[4],rx_buf1[5],rx_buf1[6],rx_buf1[7],rx_buf1[8],rx_buf1[9]);
+                        
+                                                                //printf("CMD52 Write  Reg addr 0x40 \n"); 
+                        tx_buf1[0]=0x74;
+                        tx_buf1[1]=0x90;              
+                        tx_buf1[2]=0x00;               
+                        tx_buf1[3]=0x80;
+                        tx_buf1[4]=0xd1;                      //0x02;
+                        tx_buf1[5]=0x01;
+                        sif_spi_write_raw(spi, tx_buf1, 6);
+                        sif_spi_write_async_read(spi,dummy_tx_buf, rx_buf1,10);
+                        esp_dbg(ESP_DBG_ERROR, "rx:[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x]\n", rx_buf1[0],rx_buf1[1]
+                ,rx_buf1[2],rx_buf1[3],rx_buf1[4],rx_buf1[5],rx_buf1[6],rx_buf1[7],rx_buf1[8],rx_buf1[9]);
+
+                        tx_buf1[0]=0x74;
+                        tx_buf1[1]=0x90;              
+                        tx_buf1[2]=0x00;               
+                        tx_buf1[3]=0x52;
+                        tx_buf1[4]=0x30;                      //0x02;
+                        tx_buf1[5]=0x01;
+                        sif_spi_write_raw(spi, tx_buf1, 6);
+                        sif_spi_write_async_read(spi,dummy_tx_buf, rx_buf1,10);
+                        esp_dbg(ESP_DBG_ERROR, "rx:[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x]\n", rx_buf1[0],rx_buf1[1]
+                ,rx_buf1[2],rx_buf1[3],rx_buf1[4],rx_buf1[5],rx_buf1[6],rx_buf1[7],rx_buf1[8],rx_buf1[9]);
+                        
+#endif                    
+                }
+                else
+                {
+                        break;
+               }
+                                            //  mdelay(500);
+                   spi_proto_ini_status++;   
+        } while (1);
+}
+
+int sif_spi_read_reg(struct spi_device *spi, unsigned int addr, unsigned char *value )
+{
+        unsigned char tx_cmd[6];
+        unsigned char rx_cmd[20];
+        int err_ret = 0;
+
+
+        tx_cmd[0]=0x74;
+
+        if( addr >= (1<<17) )
+        {
+                err_ret = -1;
+               goto goto_err;
+                //return err_ret;
+        }
+        else
+        {
+                tx_cmd[1]=0x10|0x00|(addr>>15);    
+                tx_cmd[2]=addr>>7;    
+
+                tx_cmd[3]=( addr<<1 );
+                tx_cmd[4]= 0x00;    
+        }
+        
+        tx_cmd[5]=0x01;
+
+        sif_spi_write_raw(spi, tx_cmd,6);
+                //printf("CMD52 Read \n");
+#if 0
+//Response read
+      
+        sif_spi_read_raw(spi, rx_cmd,20);  
+        
+                                       esp_dbg(ESP_DBG_ERROR, "write resp:[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x]\n", rx_cmd[0],rx_cmd[1]
+                ,rx_cmd[2],rx_cmd[3],rx_cmd[4],rx_cmd[5],rx_cmd[6],rx_cmd[7],rx_cmd[8],rx_cmd[9]);
+        return 0;
+ #else
+
+ //Read Response.        
+        do
+        {
+                rx_cmd[0]=0xFF;
+                sif_spi_read_raw(spi, rx_cmd,1);
+         }while(rx_cmd[0]==0xFF);
+        rx_cmd[1]=0xFF;
+                sif_spi_read_raw(spi, rx_cmd+1,1);
+        
+          esp_dbg(ESP_DBG_ERROR, "read resp:[0x%02x],[0x%02x]\n",rx_cmd[0],rx_cmd[1]);
+
+        if(rx_cmd[0]!=0)
+            err_ret = -1;
+        else
+            err_ret = 0;
+
+        *value = rx_cmd[1]; 
+       
+        //return err_ret;       
+ #endif
+
+goto_err:
+
+        return err_ret;       
+}
+
+
+int sif_spi_write_reg(struct spi_device *spi, unsigned int addr, unsigned char value)
+{
+        unsigned char tx_cmd[6];
+        unsigned char rx_cmd[20];
+        int err_ret = 0;
+       
+
+        
+       tx_cmd[0]=0x74;
+
+        if( addr >= (1<<17) )
+        {
+                err_ret = -1;
+               goto goto_err;
+                //return err_ret;
+        }
+        else
+        {
+                tx_cmd[1]=0x90|0x00|(addr>>15);    //0x94;
+                tx_cmd[2]=addr>>7;    
+
+                tx_cmd[3]=( addr<<1 );
+                tx_cmd[4]= value;
+        }
+        
+        tx_cmd[5]=0x01;
+        sif_spi_write_raw(spi, tx_cmd,6);
+                //printf("CMD52 <Write config> stauts=16 \n");
+
+
+#if 0
+        //memset(rx_cmd,0xFF,20);
+                sif_spi_read_raw(spi, rx_cmd,20);
+
+                                       esp_dbg(ESP_DBG_ERROR, "write resp:[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x],[0x%02x]\n", rx_cmd[0],rx_cmd[1]
+                ,rx_cmd[2],rx_cmd[3],rx_cmd[4],rx_cmd[5],rx_cmd[6],rx_cmd[7],rx_cmd[8],rx_cmd[9]);
+        return 0;
+#else
+
+        do
+        {
+                rx_cmd[0]=0xFF;
+                sif_spi_read_raw(spi, rx_cmd,1);
+         }while(rx_cmd[0]==0xFF);
+        rx_cmd[1]=0xFF;
+                sif_spi_read_raw(spi, rx_cmd+1,1);
+
+         if( rx_cmd[1]!=value )    
+         {
+                //printf("Write error,%X,%X", rx_cmd[0],rx_cmd[1]);
+                 esp_dbg(ESP_DBG_ERROR, "write resp:[0x%02x],[0x%02x]\n",rx_cmd[0],rx_cmd[1]);
+                err_ret = -1;
+               goto goto_err;
+               
+         }
+
+goto_err:
+
+        return err_ret;
+        
+#endif
+//Read Response.        
+
+}
+
+static int spi_irq_thread(void *data)
+{
+       struct spi_device *spi = (struct spi_device *)data;
+
+       do {
+               sif_dsr(spi);
+               
+               set_current_state(TASK_INTERRUPTIBLE);
+               sif_platform_irq_mask(0);
+
+               if (!kthread_should_stop())
+                       schedule();
+
+               set_current_state(TASK_RUNNING);
+
+       } while (!kthread_should_stop());
+       return 0;       
+}
+
+int sif_setup_irq_thread(struct spi_device *spi)
+{
+       sif_irq_thread = kthread_run(spi_irq_thread, spi, "kspiirqd/eagle");
+       if (IS_ERR(sif_irq_thread)) {
+               esp_dbg(ESP_DBG_ERROR, "setup irq thread error!\n");
+               return -1;
+       }
+       return 0;
+}
+
+static irqreturn_t sif_irq_handler(int irq, void *dev_id)
+{
+       sif_platform_irq_mask(1);
+
+       if (sif_platform_is_irq_occur()) {
+               wake_up_process(sif_irq_thread);
+       } else {
+               sif_platform_irq_mask(0);
+               return IRQ_NONE;
+       }
+
+       return IRQ_HANDLED;
+}
+
+void sif_enable_irq(struct esp_pub *epub) 
+{
+        int err;
+       struct esp_spi_ctrl *sctrl = NULL;
+        struct spi_device *spi = NULL;
+
+        ASSERT(epub != NULL);
+
+        sctrl = (struct esp_spi_ctrl *)epub->sif;
+        spi = sctrl->spi;
+        ASSERT(spi != NULL);
+
+       mdelay(100);
+
+       sif_platform_irq_init();
+       err = sif_setup_irq_thread(spi);
+        if (err) {
+                esp_dbg(ESP_DBG_ERROR, "%s setup sif irq failed\n", __func__);
+               return;
+       }
+
+       err = request_irq(sif_platform_get_irq_no(), sif_irq_handler, IRQF_TRIGGER_LOW, "esp_spi_irq", spi);
+       //err = request_irq(sif_platform_get_irq_no(), sif_irq_handler, IRQF_TRIGGER_FALLING, "esp_spi_irq", spi);
+
+        if (err) {
+                esp_dbg(ESP_DBG_ERROR, "sif %s failed\n", __func__);
+               return ;
+       }
+
+        atomic_set(&sctrl->irq_installed, 1);
+}
+
+void sif_disable_irq(struct esp_pub *epub) 
+{
+       int i = 0;
+       struct esp_spi_ctrl *sctrl = NULL;
+        struct spi_device *spi = NULL;
+
+        ASSERT(epub != NULL);
+
+        sctrl = (struct esp_spi_ctrl *)epub->sif;
+        spi = sctrl->spi;
+        ASSERT(spi != NULL);
+
+
+        if (atomic_read(&sctrl->irq_installed) == 0)
+                return;
+        
+        while (atomic_read(&sctrl->irq_handling)) {
+                schedule_timeout(HZ / 100);
+                if (i++ >= 400) {
+                        esp_dbg(ESP_DBG_ERROR, "%s force to stop irq\n", __func__);
+                        break;
+                }
+        }
+
+        free_irq(sif_platform_get_irq_no(), spi);
+       kthread_stop(sif_irq_thread);
+
+       sif_platform_irq_deinit();
+
+        atomic_set(&sctrl->irq_installed, 0);
+}
+
+
+int esp_setup_spi(struct spi_device *spi)
+{
+       /**** alloc buffer for spi io */
+       if (sif_sdio_state == ESP_SDIO_STATE_FIRST_INIT) {
+               buf_addr = (unsigned char *)kmalloc (MAX_BUF_SIZE, GFP_KERNEL);
+               if (buf_addr == NULL)
+                       return -ENOMEM;
+
+               tx_cmd = buf_addr;
+                       rx_cmd = buf_addr;
+       }
+
+#if 0
+       spi->mode = 0x03;
+       spi->bits_per_word = 8;
+       spi->max_speed_hz = SPI_FREQ;
+
+       return spi_setup(spi);
+#endif
+       return 0;
+}
+
+
+static int esp_spi_probe(struct spi_device *spi);
+static int esp_spi_remove(struct spi_device *spi); 
+
+static int esp_spi_probe(struct spi_device *spi) 
+{
+        int err;
+        struct esp_pub *epub;
+        struct esp_spi_ctrl *sctrl;
+
+        esp_dbg(ESP_DBG_ERROR, "%s enter\n", __func__);
+       
+       err = esp_setup_spi(spi);
+       if (err) {
+               esp_dbg(ESP_DBG_ERROR, "%s setup_spi error[%d]\n", __func__, err);
+               goto _err_spi;
+       }
+       esp_dbg(ESP_DBG_ERROR, "%s init_protocol\n", __func__);
+       sif_spi_protocol_init(spi);
+
+       if(sif_sdio_state == ESP_SDIO_STATE_FIRST_INIT){
+               sctrl = kzalloc(sizeof(struct esp_spi_ctrl), GFP_KERNEL);
+
+               if (sctrl == NULL) {
+                       assert(0);
+                       return -ENOMEM;
+               }
+
+               /* temp buffer reserved for un-dma-able request */
+               sctrl->dma_buffer = kzalloc(ESP_DMA_IBUFSZ, GFP_KERNEL);
+
+               if (sctrl->dma_buffer == NULL) {
+                       assert(0);
+                       goto _err_last;
+               }
+               sif_sctrl = sctrl;
+               sctrl->slc_blk_sz = SIF_SLC_BLOCK_SIZE;
+               
+               epub = esp_pub_alloc_mac80211(&spi->dev);
+
+               if (epub == NULL) {
+                       esp_dbg(ESP_DBG_ERROR, "no mem for epub \n");
+                       err = -ENOMEM;
+                       goto _err_dma;
+               }
+               epub->sif = (void *)sctrl;
+               sctrl->epub = epub;
+       
+#ifdef USE_EXT_GPIO    
+               err = ext_gpio_init(epub);
+               if (err) {
+                       esp_dbg(ESP_DBG_ERROR, "ext_irq_work_init failed %d\n", err);
+                       return err;
+               }
+#endif
+                       
+       } else {
+               ASSERT(sif_sctrl != NULL);
+               sctrl = sif_sctrl;
+               sif_sctrl = NULL;
+               epub = sctrl->epub;
+               SET_IEEE80211_DEV(epub->hw, &spi->dev);
+               epub->dev = &spi->dev;
+       }
+
+        epub->sdio_state = sif_sdio_state;
+
+        sctrl->spi = spi;
+        spi_set_drvdata(spi, sctrl);
+
+        if (err){
+                if(sif_sdio_state == ESP_SDIO_STATE_FIRST_INIT)
+                       goto _err_epub;
+                 else
+                       goto _err_second_init;
+        }
+        check_target_id(epub);
+
+#ifdef SDIO_TEST
+        sif_test_tx(sctrl);
+#else
+        err = esp_pub_init_all(epub);
+
+        if (err) {
+                esp_dbg(ESP_DBG_ERROR, "esp_init_all failed: %d\n", err);
+                if(sif_sdio_state == ESP_SDIO_STATE_SECOND_INIT)
+                       goto _err_second_init;
+        }
+
+#endif //SDIO_TEST
+        esp_dbg(ESP_DBG_TRACE, " %s return  %d\n", __func__, err);
+       if(sif_sdio_state == ESP_SDIO_STATE_FIRST_INIT){
+               esp_dbg(ESP_DBG_ERROR, "first normal exit\n");
+               sif_sdio_state = ESP_SDIO_STATE_FIRST_NORMAL_EXIT;
+               up(&esp_powerup_sem);
+       }
+
+        return err;
+
+_err_epub:
+        esp_pub_dealloc_mac80211(epub);
+_err_dma:
+        kfree(sctrl->dma_buffer);
+_err_last:
+        kfree(sctrl);
+       if (buf_addr) {
+               kfree(buf_addr);
+               buf_addr = NULL;
+               tx_cmd = NULL;
+               rx_cmd = NULL;
+       }
+       if(sif_sdio_state == ESP_SDIO_STATE_FIRST_INIT){
+               sif_sdio_state = ESP_SDIO_STATE_FIRST_ERROR_EXIT;
+               up(&esp_powerup_sem);
+       }
+        return err;
+_err_second_init:
+       sif_sdio_state = ESP_SDIO_STATE_SECOND_ERROR_EXIT;
+       esp_spi_remove(spi);
+       return err;
+_err_spi:
+       if (buf_addr) {
+               kfree(buf_addr);
+               buf_addr = NULL;
+               tx_cmd = NULL;
+               rx_cmd = NULL;
+       }
+       return err;
+}
+
+static int esp_spi_remove(struct spi_device *spi) 
+{
+        struct esp_spi_ctrl *sctrl = NULL;
+
+        sctrl = spi_get_drvdata(spi);
+
+        if (sctrl == NULL) {
+                esp_dbg(ESP_DBG_ERROR, "%s no sctrl\n", __func__);
+                return -1;
+        }
+
+        do {
+                if (sctrl->epub == NULL) {
+                        esp_dbg(ESP_DBG_ERROR, "%s epub null\n", __func__);
+                        break;
+                }
+               sctrl->epub->sdio_state = sif_sdio_state;
+               if(sif_sdio_state != ESP_SDIO_STATE_FIRST_NORMAL_EXIT){
+                       do{
+                               int err;
+                               sif_lock_bus(sctrl->epub);
+                               err = sif_interrupt_target(sctrl->epub, 7);
+                               sif_unlock_bus(sctrl->epub);
+                       }while(0);
+       
+                       if (sctrl->epub->sip) {
+                               sip_detach(sctrl->epub->sip);
+                               sctrl->epub->sip = NULL;
+                               esp_dbg(ESP_DBG_TRACE, "%s sip detached \n", __func__);
+#ifdef USE_EXT_GPIO    
+                               ext_gpio_deinit();
+#endif
+                       }
+               } else {
+                       //sif_disable_target_interrupt(sctrl->epub);
+                       atomic_set(&sctrl->epub->sip->state, SIP_STOP);
+                       sif_disable_irq(sctrl->epub);
+               }
+
+#ifdef TEST_MODE
+                test_exit_netlink();
+#endif /* TEST_MODE */
+               if(sif_sdio_state != ESP_SDIO_STATE_FIRST_NORMAL_EXIT){
+                       esp_pub_dealloc_mac80211(sctrl->epub);
+                       esp_dbg(ESP_DBG_TRACE, "%s dealloc mac80211 \n", __func__);
+                       
+                       if (sctrl->dma_buffer) {
+                               kfree(sctrl->dma_buffer);
+                               sctrl->dma_buffer = NULL;
+                               esp_dbg(ESP_DBG_TRACE, "%s free dma_buffer \n", __func__);
+                       }
+
+                       kfree(sctrl);
+
+                       if (buf_addr) {
+                               kfree(buf_addr);
+                               buf_addr = NULL;
+                               rx_cmd = NULL;
+                               tx_cmd = NULL;
+                       }
+
+               }
+
+        } while (0);
+        
+       spi_set_drvdata(spi,NULL);
+       
+        esp_dbg(ESP_DBG_TRACE, "eagle spi remove complete\n");
+
+       return 0;
+}
+
+static int esp_spi_suspend(struct device *dev)
+{        return 0;
+
+}
+
+static int esp_spi_resume(struct device *dev)
+{
+        esp_dbg(ESP_DBG_ERROR, "%s", __func__);
+
+        return 0;
+}
+
+static const struct dev_pm_ops esp_spi_pm_ops = {
+        .suspend= esp_spi_suspend,
+        .resume= esp_spi_resume,
+};
+
+extern struct spi_device_id esp_spi_id[];
+
+struct spi_driver esp_spi_driver = {
+       .id_table = esp_spi_id,
+       .driver = {
+               .name   = "eagle",
+               .bus    = &spi_bus_type,
+               .owner  = THIS_MODULE,
+       },
+       .probe  = esp_spi_probe,
+       .remove = esp_spi_remove,
+};
+
+static int esp_spi_dummy_probe(struct spi_device *spi)
+{
+        esp_dbg(ESP_DBG_ERROR, "%s enter\n", __func__);
+
+        up(&esp_powerup_sem);
+        
+        return 0;
+}
+
+static int esp_spi_dummy_remove(struct spi_device *spi) 
+{
+        return 0;
+}
+
+struct spi_driver esp_spi_dummy_driver = {
+       .id_table = esp_spi_id,
+       .driver = {
+               .name   = "eagle_dummy",
+               .bus    = &spi_bus_type,
+               .owner  = THIS_MODULE,
+       },
+       .probe  = esp_spi_dummy_probe,
+       .remove = esp_spi_dummy_remove,
+};
+
+static int __init esp_spi_init(void) 
+{
+#define ESP_WAIT_UP_TIME_MS 11000
+        int err;
+        u64 ver;
+        int retry = 3;
+        bool powerup = false;
+        int edf_ret = 0;
+
+        esp_dbg(ESP_DBG_TRACE, "%s \n", __func__);
+
+#ifdef REGISTER_SPI_BOARD_INFO
+       sif_platform_register_board_info();
+#endif
+
+#ifdef DRIVER_VER
+        ver = DRIVER_VER;
+        esp_dbg(ESP_SHOW, "\n*****%s %s EAGLE DRIVER VER:%llx*****\n\n", __DATE__, __TIME__, ver);
+#endif
+        edf_ret = esp_debugfs_init();
+
+#ifdef ANDROID
+       android_request_init_conf();
+#endif /* defined(ANDROID)*/
+
+        esp_wakelock_init();
+        esp_wake_lock();
+
+        do {
+                sema_init(&esp_powerup_sem, 0);
+
+                sif_platform_target_poweron();
+
+                err = spi_register_driver(&esp_spi_dummy_driver);
+                if (err) {
+                        esp_dbg(ESP_DBG_ERROR, "eagle spi driver registration failed, error code: %d\n", err);
+                        goto _fail;
+                }
+
+                if (down_timeout(&esp_powerup_sem,
+                                 msecs_to_jiffies(ESP_WAIT_UP_TIME_MS)) == 0) 
+               {
+
+                        powerup = true;
+                       msleep(200);
+                        break;
+                }
+
+                esp_dbg(ESP_SHOW, "%s ------ RETRY ------ \n", __func__);
+
+               sif_record_retry_config();
+
+                spi_unregister_driver(&esp_spi_dummy_driver);
+
+                sif_platform_target_poweroff();
+                
+        } while (retry--);
+
+        if (!powerup) {
+                esp_dbg(ESP_DBG_ERROR, "eagle spi can not power up!\n");
+
+                err = -ENODEV;
+                goto _fail;
+        }
+
+        esp_dbg(ESP_SHOW, "%s power up OK\n", __func__);
+
+        spi_unregister_driver(&esp_spi_dummy_driver);
+
+        sif_sdio_state = ESP_SDIO_STATE_FIRST_INIT;
+        sema_init(&esp_powerup_sem, 0);
+
+        spi_register_driver(&esp_spi_driver);
+
+        if (down_timeout(&esp_powerup_sem,
+                                 msecs_to_jiffies(ESP_WAIT_UP_TIME_MS)) == 0) 
+       {
+               if(sif_sdio_state == ESP_SDIO_STATE_FIRST_NORMAL_EXIT){
+                       spi_unregister_driver(&esp_spi_driver);
+
+                       msleep(80);
+                
+                       sif_sdio_state = ESP_SDIO_STATE_SECOND_INIT;
+               
+                       spi_register_driver(&esp_spi_driver);
+               }
+                
+        }
+
+
+        esp_register_early_suspend();
+       esp_wake_unlock();
+        return err;
+
+_fail:
+        esp_wake_unlock();
+        esp_wakelock_destroy();
+
+        return err;
+}
+
+static void __exit esp_spi_exit(void) 
+{
+       esp_dbg(ESP_DBG_TRACE, "%s \n", __func__);
+
+       esp_debugfs_exit();
+       
+        esp_unregister_early_suspend();
+
+       spi_unregister_driver(&esp_spi_driver);
+       
+#ifndef FPGA_DEBUG
+       sif_platform_target_poweroff();
+#endif /* !FPGA_DEBUG */
+
+        esp_wakelock_destroy();
+}
+
+MODULE_AUTHOR("Espressif System");
+MODULE_DESCRIPTION("Driver for SPI interconnected eagle low-power WLAN devices");
+MODULE_LICENSE("GPL");
+#endif /* ESP_USE_SPI */
diff --git a/drivers/net/wireless/rockchip_wlan/esp8089/testmode.c b/drivers/net/wireless/rockchip_wlan/esp8089/testmode.c
new file mode 100755 (executable)
index 0000000..ec14cf6
--- /dev/null
@@ -0,0 +1,634 @@
+
+/*
+ * Copyright (c) 2011 Espressif System.
+ *
+ *     MAC80211 support module
+ */
+#ifdef TEST_MODE
+
+#include <linux/etherdevice.h>
+#include <linux/workqueue.h>
+#include <linux/nl80211.h>
+#include <linux/ieee80211.h>
+#include <linux/slab.h>
+#include <net/cfg80211.h>
+#include <net/mac80211.h>
+#include <net/genetlink.h>
+#include "esp_pub.h"
+#include "esp_sip.h"
+#include "esp_ctrl.h"
+#include "esp_sif.h"
+#include "esp_debug.h"
+#include "esp_wl.h"
+#include "testmode.h"
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 31))
+    #include <net/regulatory.h>
+#endif
+
+static u32 connected_nl;
+static struct genl_info info_copy;
+static struct esp_sip *sip_copy = NULL;
+static u8 *sdio_buff = NULL;
+
+#define SIP sip_copy
+#define OUT_DONE() \
+        do { \
+            printk(KERN_DEBUG "esp_sdio: error occured in %s\n", __func__); \
+        } while(0)
+
+/* ESP TEST netlinf family */
+static struct genl_family test_genl_family = {
+        .id = GENL_ID_GENERATE,
+        .hdrsize = 0,
+        .name = "esp_sdio",
+        .version = 1,
+        .maxattr = TEST_ATTR_MAX,
+};
+
+struct loopback_param_s {
+        u32 packet_num;
+        u32 packet_id;
+};
+
+static struct loopback_param_s loopback_param;
+u32 get_loopback_num()
+{
+        return loopback_param.packet_num;
+}
+
+u32 get_loopback_id()
+{
+        return loopback_param.packet_id;
+}
+
+void inc_loopback_id()
+{
+        loopback_param.packet_id++;
+}
+
+#define REGISTER_REPLY(info) \
+        memcpy((char *)&info_copy, (char *)(info), sizeof(struct genl_info))
+
+
+static void sip_send_test_cmd(struct esp_sip *sip, struct sk_buff *skb)
+{
+        skb_queue_tail(&sip->epub->txq, skb);
+
+#if  !defined(FPGA_LOOPBACK) && (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 32))
+        ieee80211_queue_work(sip->epub->hw, &sip->epub->tx_work);
+#else
+        queue_work(sip->epub->esp_wkq, &sip->epub->tx_work);
+#endif
+
+}
+
+static int esp_test_cmd_reply(struct genl_info *info, u32 cmd_type, char *reply_info)
+{
+        struct sk_buff *skb;
+        void *hdr;
+
+        /*directly send ask_info to target, and waiting for report*/
+        skb = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL);
+        if (skb == NULL)
+                goto out;
+
+        //hdr = genlmsg_put(skb,  info->snd_pid, info->snd_seq, &test_genl_family, 0, cmd_type);libing
+        hdr = genlmsg_put(skb,  info->snd_portid, info->snd_seq, &test_genl_family, 0, cmd_type);
+        if (hdr == NULL)
+                goto nla_put_failure;
+
+        //NLA_PUT_STRING(skb, TEST_ATTR_STR, reply_info); libing
+
+        nla_put_string(skb, TEST_ATTR_STR, reply_info); 
+
+        genlmsg_end(skb, hdr);
+        genlmsg_reply(skb, info);
+        return 0;
+
+nla_put_failure:
+        nlmsg_free(skb);
+out:
+        OUT_DONE();
+        return -EINVAL;
+}
+
+static int esp_test_echo(struct sk_buff *skb_2,
+                         struct genl_info *info)
+{
+        char *echo_info;
+        int res;
+
+        if (info == NULL)
+                goto out;
+
+       // connected_nl = info->snd_pid;
+        //printk(KERN_DEBUG "esp_sdio: received a echo, "
+        //       "from pid %d\n", info->snd_pid);  libing
+        
+        connected_nl = info->snd_portid;
+        printk(KERN_DEBUG "esp_sdio: received a echo, "
+               "from pid %d\n", info->snd_portid);
+           sip_debug_show(SIP);
+       
+        /*get echo info*/
+        echo_info = nla_data(info->attrs[TEST_ATTR_STR]);
+
+        res=esp_test_cmd_reply(info, TEST_CMD_ECHO, echo_info);
+        return res;
+out:
+        OUT_DONE();
+        return -EINVAL;
+}
+
+static int esp_test_sdiospeed(struct sk_buff *skb_2,
+                              struct genl_info *info)
+{
+        char *speed_info;
+        int res;
+
+        if (info == NULL)
+                goto out;
+
+        //connected_nl = info->snd_pid; add libing
+        connected_nl = info->snd_portid;
+
+        /*get echo info*/
+        speed_info = nla_data(info->attrs[TEST_ATTR_STR]);
+
+       // printk(KERN_DEBUG "esp_sdio: received a sdio speed %s, "
+        //       "from pid %d\n", speed_info, info->snd_pid); libing
+                printk(KERN_DEBUG "esp_sdio: received a sdio speed %s, "
+               "from pid %d\n", speed_info, info->snd_portid);
+
+        if (!strcmp(speed_info, "high")) {
+                sif_platform_target_speed(1);
+        } else if (!strcmp(speed_info, "low")) {
+                sif_platform_target_speed(0);
+        } else {
+                printk(KERN_DEBUG "%s:  %s unsupported\n", __func__, speed_info);
+        }
+
+        res=esp_test_cmd_reply(info, TEST_CMD_SDIOSPEED, speed_info);
+        return res;
+out:
+        OUT_DONE();
+        return -EINVAL;
+}
+
+static int esp_test_ask(struct sk_buff *skb_2,
+                        struct genl_info *info)
+{
+        char *ask_info;
+        int res;
+
+        if (info == NULL)
+                goto out;
+
+        /*get echo info*/
+        ask_info = nla_data(info->attrs[TEST_ATTR_STR]);
+
+        /*directly send ask_info to target, and waiting for report*/
+        res=esp_test_cmd_reply(info, TEST_CMD_ASK, "ok");
+        return res;
+out:
+        OUT_DONE();
+        return -EINVAL;
+}
+
+static int esp_test_sleep(struct sk_buff *skb_2,
+                          struct genl_info *info)
+{
+        struct sip_cmd_sleep *sleepcmd;
+        struct sk_buff *skb = NULL;
+        int res;
+
+        if (info == NULL)
+                goto out;
+
+        skb = sip_alloc_ctrl_skbuf(SIP, sizeof(struct sip_cmd_sleep), SIP_CMD_SLEEP);
+        if (!skb)
+                goto out;
+
+        sleepcmd = (struct sip_cmd_sleep *)(skb->data + sizeof(struct sip_tx_info));
+        sleepcmd->sleep_mode       =  nla_get_u32(info->attrs[TEST_ATTR_PARA0]);
+        sleepcmd->sleep_tm_ms     =  nla_get_u32(info->attrs[TEST_ATTR_PARA1]);
+        sleepcmd->wakeup_tm_ms  =  nla_get_u32(info->attrs[TEST_ATTR_PARA2]);
+        sleepcmd->sleep_times       =  nla_get_u32(info->attrs[TEST_ATTR_PARA3]);
+
+        sip_send_test_cmd(SIP, skb);
+
+        /*directly send ask_info to target, and waiting for report*/
+        res=esp_test_cmd_reply(info, TEST_CMD_SLEEP, "ok");
+        return res;
+out:
+        OUT_DONE();
+        return -EINVAL;
+}
+
+static int esp_test_wakeup(struct sk_buff *skb_2,
+                           struct genl_info *info)
+{
+        struct sip_cmd_wakeup *wakeupcmd;
+        struct sk_buff *skb = NULL;
+        //int res;
+
+        if (info == NULL)
+                goto out;
+
+        skb = sip_alloc_ctrl_skbuf(SIP, sizeof(struct sip_cmd_wakeup), SIP_CMD_WAKEUP);
+        if (!skb)
+                goto out;
+        wakeupcmd = (struct sip_cmd_wakeup *)(skb->data + sizeof(struct sip_tx_info));
+        wakeupcmd->check_data = nla_get_u32(info->attrs[TEST_ATTR_PARA0]);
+
+        /*directly send reply_info to target, and waiting for report*/
+        REGISTER_REPLY(info);
+        //res=esp_test_cmd_reply(info, TEST_CMD_WAKEUP, "ok");
+
+        sip_send_test_cmd(SIP, skb);
+        return 0;
+out:
+        OUT_DONE();
+        return -EINVAL;
+}
+
+static int esp_test_loopback(struct sk_buff *skb_2,
+                             struct genl_info *info)
+{
+        u32 txpacket_len;
+        u32 rxpacket_len;
+
+        if (info == NULL)
+                goto out;
+
+        txpacket_len   = nla_get_u32(info->attrs[TEST_ATTR_PARA0]);
+        rxpacket_len   = nla_get_u32(info->attrs[TEST_ATTR_PARA1]);
+        loopback_param.packet_num    = nla_get_u32(info->attrs[TEST_ATTR_PARA2]);
+        loopback_param.packet_id=0;
+        REGISTER_REPLY(info);
+        return sip_send_loopback_mblk(SIP, txpacket_len, rxpacket_len, 0);
+out:
+        OUT_DONE();
+        return -EINVAL;
+}
+
+/*
+u8 probe_req_frm[] = {0x40,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x03,0x8F,0x11,0x22,0x88,
+                      0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x01,0x08,0x82,0x84,0x8B,0x96,
+                      0x0C,0x12,0x18,0x24,0x32,0x04,0x30,0x48,0x60,0x6C
+                     };
+*/
+
+static int sip_send_tx_frame(struct esp_sip *sip, u32 packet_len)
+{
+
+        struct sk_buff *skb = NULL;
+        u8 *ptr = NULL;
+        int i;
+
+        skb = alloc_skb(packet_len, GFP_KERNEL);
+        skb->len = packet_len;
+        ptr = skb->data;
+        /* fill up pkt payload */
+        for (i = 0; i < skb->len; i++) {
+                ptr[i] = i;
+        }
+#ifdef FPGA_LOOPBACK
+        skb_queue_tail(&sip->epub->txq, skb);
+        queue_work(sip->epub->esp_wkq, &sip->epub->tx_work);
+#else
+        sip_tx_data_pkt_enqueue(sip->epub, skb);
+    #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 32))
+        ieee80211_queue_work(sip->epub->hw, &sip->epub->tx_work);
+    #else
+        queue_work(sip->epub->esp_wkq, &sip->epub->tx_work);
+    #endif
+#endif
+        return 0;
+}
+
+static int esp_test_tx(struct sk_buff *skb_2,
+                       struct genl_info *info)
+{
+        u32 txpacket_len;
+        u32 res;
+
+        if (info == NULL)
+                goto out;
+
+        txpacket_len     = nla_get_u32(info->attrs[TEST_ATTR_PARA0]);
+        REGISTER_REPLY(info);
+        sip_send_tx_frame(SIP, txpacket_len);
+        res=esp_test_cmd_reply(info, TEST_CMD_TX, "tx out");
+        return res;
+out:
+        OUT_DONE();
+        return -EINVAL;
+}
+
+static int esp_test_genl(struct sk_buff *skb_2,
+                         struct genl_info *info)
+{
+        struct sip_cmd_debug *dbgcmd;
+        struct sk_buff *skb = NULL;
+        int i;
+
+        if (info == NULL)
+                goto out;
+
+        skb = sip_alloc_ctrl_skbuf(SIP, sizeof(struct sip_cmd_debug), SIP_CMD_DEBUG);
+        if (!skb)
+                goto out;
+
+        dbgcmd = (struct sip_cmd_debug *)(skb->data + sizeof(struct sip_hdr));
+        dbgcmd->cmd_type = nla_get_u32(info->attrs[TEST_ATTR_CMD_TYPE]);
+        dbgcmd->para_num = nla_get_u32(info->attrs[TEST_ATTR_PARA_NUM]);
+        printk(KERN_DEBUG "%s dbgcmdType %d paraNum %d\n", __func__, dbgcmd->cmd_type, dbgcmd->para_num);
+        for (i=0; i<dbgcmd->para_num; i++)
+                dbgcmd->para[i] = nla_get_u32(info->attrs[TEST_ATTR_PARA(i)]);
+
+        /*directly send reply_info to target, and waiting for report*/
+        REGISTER_REPLY(info);
+
+        sip_send_test_cmd(SIP, skb);
+        return 0;
+out:
+        OUT_DONE();
+        return -EINVAL;
+}
+
+static int esp_test_sdio_wr(struct sk_buff *skb_2,
+                            struct genl_info *info)
+{
+        int res;
+        u32 func_no, addr, value;
+
+        if (info == NULL)
+                goto out;
+
+        func_no = nla_get_u32(info->attrs[TEST_ATTR_PARA0]);
+        addr = nla_get_u32(info->attrs[TEST_ATTR_PARA1]);
+        value = nla_get_u32(info->attrs[TEST_ATTR_PARA2]);
+
+        if(!func_no) {
+               res = esp_common_writebyte_with_addr(SIP->epub, addr, (u8)value, ESP_SIF_SYNC);
+        } else {
+                memcpy(sdio_buff, (u8 *)&value, 4);
+               res = esp_common_write_with_addr(SIP->epub, addr, sdio_buff, 4, ESP_SIF_SYNC);
+        }
+
+        /*directly send reply_info to target, and waiting for report*/
+        REGISTER_REPLY(info);
+        if (!res)
+                esp_test_cmd_reply(info, TEST_CMD_SDIO_WR, "write ok!");
+        else
+                esp_test_cmd_reply(info, TEST_CMD_SDIO_WR, "write fail!");
+
+out:
+        OUT_DONE();
+        return -EINVAL;
+}
+
+static int esp_test_sdio_rd(struct sk_buff *skb_2,
+                            struct genl_info *info)
+{
+        int res;
+        u32 func_no, addr, value;
+        char value_str[12];
+
+        if (info == NULL)
+                goto out;
+
+        func_no = nla_get_u32(info->attrs[TEST_ATTR_PARA0]);
+        addr = nla_get_u32(info->attrs[TEST_ATTR_PARA1]);
+
+        if(!func_no) {
+                memset(sdio_buff, 0, 4);
+                res = esp_common_readbyte_with_addr(SIP->epub, addr, &sdio_buff[0], ESP_SIF_SYNC);
+        } else {
+                res = esp_common_read_with_addr(SIP->epub, addr, sdio_buff, 4, ESP_SIF_SYNC);
+        }
+        memcpy((u8 *)&value, sdio_buff, 4);
+
+        /*directly send reply_info to target, and waiting for report*/
+        REGISTER_REPLY(info);
+        if (!res) {
+                sprintf((char *)&value_str, "0x%x", value);
+                esp_test_cmd_reply(info, TEST_CMD_SDIO_RD, value_str);
+        } else
+                esp_test_cmd_reply(info, TEST_CMD_SDIO_RD, "read fail!");
+
+out:
+        OUT_DONE();
+        return -EINVAL;
+}
+
+/* TEST_CMD netlink policy */
+
+static struct nla_policy test_genl_policy[TEST_ATTR_MAX + 1] = {
+        [TEST_ATTR_CMD_NAME]= { .type = NLA_NUL_STRING, .len = GENL_NAMSIZ - 1 },
+        [TEST_ATTR_CMD_TYPE] = { .type = NLA_U32 },
+        [TEST_ATTR_PARA_NUM] = { .type = NLA_U32 },
+        [TEST_ATTR_PARA0] = { .type = NLA_U32 },
+        [TEST_ATTR_PARA1] = { .type = NLA_U32 },
+        [TEST_ATTR_PARA2] = { .type = NLA_U32 },
+        [TEST_ATTR_PARA3] = { .type = NLA_U32 },
+        [TEST_ATTR_PARA4] = { .type = NLA_U32 },
+        [TEST_ATTR_PARA5] = { .type = NLA_U32 },
+        [TEST_ATTR_PARA6] = { .type = NLA_U32 },
+        [TEST_ATTR_PARA7] = { .type = NLA_U32 },
+        [TEST_ATTR_STR]        = { .type = NLA_NUL_STRING, .len = 256-1 },
+};
+
+/* Generic Netlink operations array */
+static struct genl_ops esp_test_ops[] = {
+        {
+                .cmd = TEST_CMD_ECHO,
+                .policy = test_genl_policy,
+                .doit = esp_test_echo,
+                .flags = GENL_ADMIN_PERM,
+        },
+        {
+                .cmd = TEST_CMD_ASK,
+                .policy = test_genl_policy,
+                .doit = esp_test_ask,
+                .flags = GENL_ADMIN_PERM,
+        },
+        {
+                .cmd = TEST_CMD_SLEEP,
+                .policy = test_genl_policy,
+                .doit = esp_test_sleep,
+                .flags = GENL_ADMIN_PERM,
+        },
+        {
+                .cmd = TEST_CMD_WAKEUP,
+                .policy = test_genl_policy,
+                .doit = esp_test_wakeup,
+                .flags = GENL_ADMIN_PERM,
+        },
+        {
+                .cmd = TEST_CMD_LOOPBACK,
+                .policy = test_genl_policy,
+                .doit = esp_test_loopback,
+                .flags = GENL_ADMIN_PERM,
+        },
+        {
+                .cmd = TEST_CMD_TX,
+                .policy = test_genl_policy,
+                .doit = esp_test_tx,
+                .flags = GENL_ADMIN_PERM,
+        },
+        {
+                .cmd = TEST_CMD_DEBUG,
+                .policy = test_genl_policy,
+                .doit = esp_test_genl,
+                .flags = GENL_ADMIN_PERM,
+        },
+        {
+                .cmd = TEST_CMD_SDIO_WR,
+                .policy = test_genl_policy,
+                .doit = esp_test_sdio_wr,
+                .flags = GENL_ADMIN_PERM,
+        },
+        {
+                .cmd = TEST_CMD_SDIO_RD,
+                .policy = test_genl_policy,
+                .doit = esp_test_sdio_rd,
+                .flags = GENL_ADMIN_PERM,
+        },
+        {
+                .cmd = TEST_CMD_SDIOSPEED,
+                .policy = test_genl_policy,
+                .doit = esp_test_sdiospeed,
+                .flags = GENL_ADMIN_PERM,
+        },
+};
+
+static int esp_test_netlink_notify(struct notifier_block *nb,
+                                   unsigned long state,
+                                   void *_notify)
+{
+        struct netlink_notify *notify = _notify;
+
+        if (state != NETLINK_URELEASE)
+                return NOTIFY_DONE;
+
+        /*if (notify->pid == connected_nl) {
+                printk(KERN_INFO "esp_sdio: user released netlink"
+                       " socket \n");
+                connected_nl = 0;
+        }*/ // libing
+        if (notify->portid == connected_nl) {
+                printk(KERN_INFO "esp_sdio: user released netlink"
+                       " socket \n");
+                connected_nl = 0;
+        }
+        return NOTIFY_DONE;
+
+}
+
+static struct notifier_block test_netlink_notifier = {
+        .notifier_call = esp_test_netlink_notify,
+};
+
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 31))
+/**
+ * copy from net/netlink/genetlink.c(linux kernel 2.6.32)
+ *
+ * genl_register_family_with_ops - register a generic netlink family
+ * @family: generic netlink family
+ * @ops: operations to be registered
+ * @n_ops: number of elements to register
+ * 
+ * Registers the specified family and operations from the specified table.
+ * Only one family may be registered with the same family name or identifier.
+ * 
+ * The family id may equal GENL_ID_GENERATE causing an unique id to
+ * be automatically generated and assigned.
+ * 
+ * Either a doit or dumpit callback must be specified for every registered
+ * operation or the function will fail. Only one operation structure per
+ * command identifier may be registered.
+ * 
+ * See include/net/genetlink.h for more documenation on the operations
+ * structure.
+ * 
+ * This is equivalent to calling genl_register_family() followed by
+ * genl_register_ops() for every operation entry in the table taking
+ * care to unregister the family on error path.
+ * 
+ * Return 0 on success or a negative error code.
+ */
+int genl_register_family_with_ops(struct genl_family *family,
+        struct genl_ops *ops, size_t n_ops)
+{
+    int err, i;
+
+    err = genl_register_family(family);
+    if (err)
+        return err;
+
+    for (i = 0; i < n_ops; ++i, ++ops) {
+        err = genl_register_ops(family, ops);
+        if (err)
+            goto err_out;
+    }
+    return 0;
+err_out:
+    genl_unregister_family(family);
+    return err;
+}
+#endif
+
+int test_init_netlink(struct esp_sip *sip)
+{
+        int rc;
+        printk(KERN_INFO "esp_sdio: initializing netlink\n");
+
+        sip_copy=sip;
+        /* temp buffer for sdio test */
+        sdio_buff = kzalloc(8, GFP_KERNEL);
+
+        rc = genl_register_family_with_ops(&test_genl_family,
+                                           esp_test_ops, ARRAY_SIZE(esp_test_ops));
+        if (rc)
+                goto failure;
+
+        rc = netlink_register_notifier(&test_netlink_notifier);
+        if (rc)
+                goto failure;
+
+        return 0;
+
+failure:
+        printk(KERN_DEBUG "esp_sdio: error occured in %s\n", __func__);
+        kfree(sdio_buff);
+        return -EINVAL;
+}
+
+void test_exit_netlink(void)
+{
+        int ret;
+
+       if (sdio_buff == NULL)
+               return;
+
+        kfree(sdio_buff);
+       sdio_buff = NULL;
+       sip_copy = NULL;
+       
+        printk(KERN_INFO "esp_sdio: closing netlink\n");
+        /* unregister the notifier */
+        netlink_unregister_notifier(&test_netlink_notifier);
+        /* unregister the family */
+        ret = genl_unregister_family(&test_genl_family);
+        if (ret)
+                printk(KERN_DEBUG "esp_sdio: "
+                       "unregister family %i\n", ret);
+}
+void esp_test_cmd_event(u32 cmd_type, char *reply_info)
+{
+        esp_test_cmd_reply(&info_copy, cmd_type, reply_info);
+}
+#endif  //ifdef TEST_MODE
+
diff --git a/drivers/net/wireless/rockchip_wlan/esp8089/testmode.h b/drivers/net/wireless/rockchip_wlan/esp8089/testmode.h
new file mode 100755 (executable)
index 0000000..b8be32e
--- /dev/null
@@ -0,0 +1,46 @@
+\r
+#ifndef __TEST_MODE\r
+#define __TEST_MODE\r
+\r
+enum {\r
+        TEST_CMD_UNSPEC,\r
+        TEST_CMD_ECHO,\r
+        TEST_CMD_ASK,\r
+        TEST_CMD_SLEEP,\r
+        TEST_CMD_WAKEUP,\r
+        TEST_CMD_LOOPBACK,\r
+        TEST_CMD_TX,\r
+        TEST_CMD_RX,\r
+        TEST_CMD_DEBUG,\r
+        TEST_CMD_SDIO_WR,\r
+        TEST_CMD_SDIO_RD,\r
+        TEST_CMD_SDIOSPEED,\r
+        __TEST_CMD_MAX,\r
+};\r
+#define TEST_CMD_MAX (__TEST_CMD_MAX - 1)\r
+\r
+enum {\r
+        TEST_ATTR_UNSPEC,\r
+        TEST_ATTR_CMD_NAME,\r
+        TEST_ATTR_CMD_TYPE,\r
+        TEST_ATTR_PARA_NUM,\r
+        TEST_ATTR_PARA0,\r
+        TEST_ATTR_PARA1,\r
+        TEST_ATTR_PARA2,\r
+        TEST_ATTR_PARA3,\r
+        TEST_ATTR_PARA4,\r
+        TEST_ATTR_PARA5,\r
+        TEST_ATTR_PARA6,\r
+        TEST_ATTR_PARA7,\r
+        TEST_ATTR_STR,\r
+        __TEST_ATTR_MAX,\r
+};\r
+#define TEST_ATTR_MAX (__TEST_ATTR_MAX - 1)\r
+#define TEST_ATTR_PARA(i) (TEST_ATTR_PARA0+(i))\r
+\r
+u32 get_loopback_num(void);\r
+u32 get_loopback_id(void);\r
+void inc_loopback_id(void);\r
+#endif\r
+\r
+\r