diff --git a/drivers/net/wireless/Makefile b/drivers/net/wireless/Makefile index 637b7cdcc57..f0af5487d17 100755 --- a/drivers/net/wireless/Makefile +++ b/drivers/net/wireless/Makefile @@ -22,3 +22,4 @@ obj-$(CONFIG_MT7601) += rkusbwifi/ #obj-m += wlan/ obj-$(CONFIG_MTK_COMBO_WIFI) += combo_mt66xx/ obj-$(CONFIG_MTK_MT5931) += mt5931_kk/ +obj-$(CONFIG_ESP8089) += esp8089/ diff --git a/drivers/net/wireless/esp8089/Kconfig b/drivers/net/wireless/esp8089/Kconfig index 620c5cfe719..20fc1776577 100755 --- a/drivers/net/wireless/esp8089/Kconfig +++ b/drivers/net/wireless/esp8089/Kconfig @@ -1,4 +1,4 @@ - config ESP8089 +config ESP8089 depends on WLAN_80211 && MMC select WIRELESS_EXT select WEXT_PRIV diff --git a/drivers/net/wireless/esp8089/Makefile b/drivers/net/wireless/esp8089/Makefile new file mode 100755 index 00000000000..42992b9c18a --- /dev/null +++ b/drivers/net/wireless/esp8089/Makefile @@ -0,0 +1,21 @@ +DRIVER_NAME := wlan +include drivers/net/wireless/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/esp8089/eagle_fw1.h b/drivers/net/wireless/esp8089/eagle_fw1.h new file mode 100755 index 00000000000..bfebb1efcc2 --- /dev/null +++ b/drivers/net/wireless/esp8089/eagle_fw1.h @@ -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/esp8089/eagle_fw2.h b/drivers/net/wireless/esp8089/eagle_fw2.h new file mode 100755 index 00000000000..826d2f6bd32 --- /dev/null +++ b/drivers/net/wireless/esp8089/eagle_fw2.h @@ -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/esp8089/esp_android.c b/drivers/net/wireless/esp8089/esp_android.c new file mode 100755 index 00000000000..e623b4ae766 --- /dev/null +++ b/drivers/net/wireless/esp8089/esp_android.c @@ -0,0 +1,403 @@ +#include +#include +#include +#include +#include +#include +#include +#include + +#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); + +#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); + + return 0; +failed: + 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/esp8089/esp_android.h b/drivers/net/wireless/esp8089/esp_android.h new file mode 100755 index 00000000000..ddd9a7de41e --- /dev/null +++ b/drivers/net/wireless/esp8089/esp_android.h @@ -0,0 +1,56 @@ +#ifndef _ESP_ANDROID_H +#define _ESP_ANDROID_H + +#include +#include + + +#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/esp8089/esp_cfg80211.c b/drivers/net/wireless/esp8089/esp_cfg80211.c new file mode 100755 index 00000000000..cdada7d8973 --- /dev/null +++ b/drivers/net/wireless/esp8089/esp_cfg80211.c @@ -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/esp8089/esp_conf.h b/drivers/net/wireless/esp8089/esp_conf.h new file mode 100755 index 00000000000..acdf194f43a --- /dev/null +++ b/drivers/net/wireless/esp8089/esp_conf.h @@ -0,0 +1,6 @@ +#ifndef _ESP_CONF_H_ +#define _ESP_CONF_H_ + +#define INIT_DATA_CONF_BUF "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;$" + +#endif /*_ESP_CONF_H_ */ diff --git a/drivers/net/wireless/esp8089/esp_config.mk b/drivers/net/wireless/esp8089/esp_config.mk new file mode 100755 index 00000000000..2026cdf8be6 --- /dev/null +++ b/drivers/net/wireless/esp8089/esp_config.mk @@ -0,0 +1 @@ +EXTRA_CFLAGS += -DP2P_CONCURRENT -DESP_ACK_INTERRUPT -DESP_USE_SDIO diff --git a/drivers/net/wireless/esp8089/esp_ctrl.c b/drivers/net/wireless/esp8089/esp_ctrl.c new file mode 100755 index 00000000000..84d937ba765 --- /dev/null +++ b/drivers/net/wireless/esp8089/esp_ctrl.c @@ -0,0 +1,740 @@ +/* + * Copyright (c) 2009 - 2012 Espressif System. + */ + +#include +#include +#include +#include +#include + +#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) 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<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); + configcmd = (struct sip_cmd_config *)(skb->data + sizeof(struct sip_hdr)); + configcmd->center_freq= conf->channel->center_freq; + 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; in_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/esp8089/esp_ctrl.h b/drivers/net/wireless/esp8089/esp_ctrl.h new file mode 100755 index 00000000000..7523e2d960e --- /dev/null +++ b/drivers/net/wireless/esp8089/esp_ctrl.h @@ -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/esp8089/esp_debug.c b/drivers/net/wireless/esp8089/esp_debug.c new file mode 100755 index 00000000000..ecc3d92a90d --- /dev/null +++ b/drivers/net/wireless/esp8089/esp_debug.c @@ -0,0 +1,285 @@ +/* + * Copyright (c) 2011 Espressif System. + */ + +#include +#include + +#include +#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/esp8089/esp_debug.h b/drivers/net/wireless/esp8089/esp_debug.h new file mode 100755 index 00000000000..7f198924e3a --- /dev/null +++ b/drivers/net/wireless/esp8089/esp_debug.h @@ -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 +#include +#include + +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/esp8089/esp_ext.c b/drivers/net/wireless/esp8089/esp_ext.c new file mode 100755 index 00000000000..72003ff0151 --- /dev/null +++ b/drivers/net/wireless/esp8089/esp_ext.c @@ -0,0 +1,457 @@ +#ifdef USE_EXT_GPIO + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#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<= 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<= 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<= 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<= 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< 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< 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/esp8089/esp_ext.h b/drivers/net/wireless/esp8089/esp_ext.h new file mode 100755 index 00000000000..9385c5453df --- /dev/null +++ b/drivers/net/wireless/esp8089/esp_ext.h @@ -0,0 +1,100 @@ +#ifdef USE_EXT_GPIO + +#ifndef _ESP_EXT_H_ +#define _ESP_EXT_H_ + +#include +#include +#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/esp8089/esp_init_data.h b/drivers/net/wireless/esp8089/esp_init_data.h new file mode 100755 index 00000000000..38a349dc5f9 --- /dev/null +++ b/drivers/net/wireless/esp8089/esp_init_data.h @@ -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/esp8089/esp_io.c b/drivers/net/wireless/esp8089/esp_io.c new file mode 100755 index 00000000000..3c0dd73ff06 --- /dev/null +++ b/drivers/net/wireless/esp8089/esp_io.c @@ -0,0 +1,596 @@ +#include +#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/esp8089/esp_mac80211.c b/drivers/net/wireless/esp8089/esp_mac80211.c new file mode 100755 index 00000000000..1b57e6eeddf --- /dev/null +++ b/drivers/net/wireless/esp8089/esp_mac80211.c @@ -0,0 +1,2004 @@ +/* + * Copyright (c) 2011 Espressif System. + * + * MAC80211 support module + */ +#include +#include +#include +#include +#include +#include +#include +#include +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 31)) +#include +#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); + +static +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 39)) +void +#else +int +#endif /* NEW_KERNEL */ +esp_op_tx(struct ieee80211_hw *hw, 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) +#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; + 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*/ +} + +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) +{ + + 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 + ) + 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; +#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 + ) + 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 const 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/esp8089/esp_main.c b/drivers/net/wireless/esp8089/esp_main.c new file mode 100755 index 00000000000..5d0629fd50c --- /dev/null +++ b/drivers/net/wireless/esp8089/esp_main.c @@ -0,0 +1,266 @@ +/* + * Copyright (c) 2010 - 2012 Espressif System. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#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/esp8089/esp_os.h b/drivers/net/wireless/esp8089/esp_os.h new file mode 100755 index 00000000000..4128725bdaf --- /dev/null +++ b/drivers/net/wireless/esp8089/esp_os.h @@ -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/esp8089/esp_path.h b/drivers/net/wireless/esp8089/esp_path.h new file mode 100755 index 00000000000..514f79cee5f --- /dev/null +++ b/drivers/net/wireless/esp8089/esp_path.h @@ -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/esp8089/esp_pm.c b/drivers/net/wireless/esp8089/esp_pm.c new file mode 100755 index 00000000000..5b68fde895b --- /dev/null +++ b/drivers/net/wireless/esp8089/esp_pm.c @@ -0,0 +1,76 @@ +/* + * Copyright (c) 2010 -2013 Espressif System. + * + */ +#ifdef CONFIG_HAS_WAKELOCK +#include +#endif +#ifdef CONFIG_HAS_EARLYSUSPEND +#include +#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/esp8089/esp_pub.h b/drivers/net/wireless/esp8089/esp_pub.h new file mode 100755 index 00000000000..74853f1fa9f --- /dev/null +++ b/drivers/net/wireless/esp8089/esp_pub.h @@ -0,0 +1,238 @@ +/* + * Copyright (c) 2011-2012 Espressif System. + * + * wlan device header file + */ + +#ifndef _ESP_PUB_H_ +#define _ESP_PUB_H_ + +#include +#include +#include +#include +#include +#include +#include +#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 +#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/esp8089/esp_sif.h b/drivers/net/wireless/esp8089/esp_sif.h new file mode 100755 index 00000000000..940cecfecd5 --- /dev/null +++ b/drivers/net/wireless/esp8089/esp_sif.h @@ -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 +#include + +/* + * 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/esp8089/esp_sip.c b/drivers/net/wireless/esp8089/esp_sip.c new file mode 100755 index 00000000000..8d96090644c --- /dev/null +++ b/drivers/net/wireless/esp8089/esp_sip.c @@ -0,0 +1,2354 @@ +/* + * Copyright (c) 2009 - 2013 Espressif System. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#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, ®, 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 + ) { + 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; +#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 +} +#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/esp8089/esp_sip.h b/drivers/net/wireless/esp8089/esp_sip.h new file mode 100755 index 00000000000..118d86350ec --- /dev/null +++ b/drivers/net/wireless/esp8089/esp_sip.h @@ -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/esp8089/esp_utils.c b/drivers/net/wireless/esp8089/esp_utils.c new file mode 100755 index 00000000000..aa697bd5a7f --- /dev/null +++ b/drivers/net/wireless/esp8089/esp_utils.c @@ -0,0 +1,232 @@ +/* + * Copyright (c) 2012 Espressif System. + */ + +#include "linux/types.h" +#include "linux/kernel.h" +#include +#include +#include + +#include +#include +#include + +#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/esp8089/esp_utils.h b/drivers/net/wireless/esp8089/esp_utils.h new file mode 100755 index 00000000000..7de746368e0 --- /dev/null +++ b/drivers/net/wireless/esp8089/esp_utils.h @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2011-2012 Espressif System. + */ + +#ifndef _ESP_UTILS_H_ +#define _ESP_UTILS_H_ + +#include "linux/types.h" +#include + +#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/esp8089/esp_version.h b/drivers/net/wireless/esp8089/esp_version.h new file mode 100755 index 00000000000..635b80b8de5 --- /dev/null +++ b/drivers/net/wireless/esp8089/esp_version.h @@ -0,0 +1 @@ +#define DRIVER_VER 0x18a2bc815cc5ll diff --git a/drivers/net/wireless/esp8089/esp_wl.h b/drivers/net/wireless/esp8089/esp_wl.h new file mode 100755 index 00000000000..8bc5491362e --- /dev/null +++ b/drivers/net/wireless/esp8089/esp_wl.h @@ -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/esp8089/esp_wmac.h b/drivers/net/wireless/esp8089/esp_wmac.h new file mode 100755 index 00000000000..3987314d590 --- /dev/null +++ b/drivers/net/wireless/esp8089/esp_wmac.h @@ -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/esp8089/init_data.conf b/drivers/net/wireless/esp8089/init_data.conf new file mode 100755 index 00000000000..d48a202461c --- /dev/null +++ b/drivers/net/wireless/esp8089/init_data.conf @@ -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/esp8089/rk2.env b/drivers/net/wireless/esp8089/rk2.env new file mode 100755 index 00000000000..ff1cf3a1f0a --- /dev/null +++ b/drivers/net/wireless/esp8089/rk2.env @@ -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/esp8089/sdio_sif_esp.c b/drivers/net/wireless/esp8089/sdio_sif_esp.c new file mode 100755 index 00000000000..d12e3d0e3e4 --- /dev/null +++ b/drivers/net/wireless/esp8089/sdio_sif_esp.c @@ -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 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#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 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/esp8089/sdio_stub.c b/drivers/net/wireless/esp8089/sdio_stub.c new file mode 100755 index 00000000000..9e40db64ed9 --- /dev/null +++ b/drivers/net/wireless/esp8089/sdio_stub.c @@ -0,0 +1,109 @@ +/* + * Copyright (c) 2013 Espressif System. + * + * sdio stub code for RK + */ + +#include +#include + +#define ESP8089_DRV_VERSION "2.03" + +extern int rk29sdk_wifi_power(int on); +extern int rk29sdk_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); +} + +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); + + rk29sdk_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); +} + +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); + //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); + +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); +} +#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/esp8089/sip2_common.h b/drivers/net/wireless/esp8089/sip2_common.h new file mode 100755 index 00000000000..9978f8c389b --- /dev/null +++ b/drivers/net/wireless/esp8089/sip2_common.h @@ -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/esp8089/slc_host_register.h b/drivers/net/wireless/esp8089/slc_host_register.h new file mode 100755 index 00000000000..c628dc35878 --- /dev/null +++ b/drivers/net/wireless/esp8089/slc_host_register.h @@ -0,0 +1,242 @@ +//Generated at 2012-10-23 20:11:08 +/* + * Copyright (c) 2011 Espressif System + * + */ + +#ifndef SLC_HOST_REGISTER_H_INCLUDED +#define SLC_HOST_REGISTER_H_INCLUDED + +/* #define REG_SLC_HOST_BASE 0x00000000 */ +/* skip the token1, since reading it will clean the credit */ +#define REG_SLC_HOST_BASE 0x00000000 + + +#define SLC_HOST_PF (REG_SLC_HOST_BASE + 0x0) +#define SLC_HOST_TOKEN_RDATA (REG_SLC_HOST_BASE + 0x4) +#define SLC_HOST_RX_PF_EOF 0x0000000F +#define SLC_HOST_RX_PF_EOF_S 28 +#define SLC_HOST_TOKEN1 0x00000FFF +#define SLC_HOST_TOKEN1_S 16 +#define SLC_HOST_RX_PF_VALID (BIT(15)) +#define SLC_HOST_TOKEN0 0x00000FFF +#define SLC_HOST_TOKEN0_S 0 + +#define SLC_HOST_TOKEN0_MASK SLC_HOST_TOKEN0 + +#define SLC_HOST_INT_RAW (REG_SLC_HOST_BASE + 0x8) +#define SLC_HOST_EXT_BIT3_INT_RAW (BIT(22)) +#define SLC_HOST_EXT_BIT2_INT_RAW (BIT(21)) +#define SLC_HOST_EXT_BIT1_INT_RAW (BIT(20)) +#define SLC_HOST_RXFIFO_NOT_EMPTY_INT_RAW (BIT(19)) +#define SLC_HOST_RX_PF_VALID_INT_RAW (BIT(18)) +#define SLC_HOST_TX_OVF_INT_RAW (BIT(17)) +#define SLC_HOST_RX_UDF_INT_RAW (BIT(16)) +#define SLC_HOST_TX_START_INT_RAW (BIT(15)) +#define SLC_HOST_RX_START_INT_RAW (BIT(14)) +#define SLC_HOST_RX_EOF_INT_RAW (BIT(13)) +#define SLC_HOST_RX_SOF_INT_RAW (BIT(12)) +#define SLC_HOST_TOKEN1_0TO1_INT_RAW (BIT(11)) +#define SLC_HOST_TOKEN0_0TO1_INT_RAW (BIT(10)) +#define SLC_HOST_TOKEN1_1TO0_INT_RAW (BIT(9)) +#define SLC_HOST_TOKEN0_1TO0_INT_RAW (BIT(8)) +#define SLC_HOST_TOHOST_BIT7_INT_RAW (BIT(7)) +#define SLC_HOST_TOHOST_BIT6_INT_RAW (BIT(6)) +#define SLC_HOST_TOHOST_BIT5_INT_RAW (BIT(5)) +#define SLC_HOST_TOHOST_BIT4_INT_RAW (BIT(4)) +#define SLC_HOST_TOHOST_BIT3_INT_RAW (BIT(3)) +#define SLC_HOST_TOHOST_BIT2_INT_RAW (BIT(2)) +#define SLC_HOST_TOHOST_BIT1_INT_RAW (BIT(1)) +#define SLC_HOST_TOHOST_BIT0_INT_RAW (BIT(0)) + +#define SLC_HOST_STATE_W0 (REG_SLC_HOST_BASE + 0xC) +#define SLC_HOST_STATE3 0x000000FF +#define SLC_HOST_STATE3_S 24 +#define SLC_HOST_STATE2 0x000000FF +#define SLC_HOST_STATE2_S 16 +#define SLC_HOST_STATE1 0x000000FF +#define SLC_HOST_STATE1_S 8 +#define SLC_HOST_STATE0 0x000000FF +#define SLC_HOST_STATE0_S 0 + +#define SLC_HOST_STATE_W1 (REG_SLC_HOST_BASE + 0x10) +#define SLC_HOST_STATE7 0x000000FF +#define SLC_HOST_STATE7_S 24 +#define SLC_HOST_STATE6 0x000000FF +#define SLC_HOST_STATE6_S 16 +#define SLC_HOST_STATE5 0x000000FF +#define SLC_HOST_STATE5_S 8 +#define SLC_HOST_STATE4 0x000000FF +#define SLC_HOST_STATE4_S 0 + +#define SLC_HOST_CONF_W0 (REG_SLC_HOST_BASE + 0x14) +#define SLC_HOST_CONF3 0x000000FF +#define SLC_HOST_CONF3_S 24 +#define SLC_HOST_CONF2 0x000000FF +#define SLC_HOST_CONF2_S 16 +#define SLC_HOST_CONF1 0x000000FF +#define SLC_HOST_CONF1_S 8 +#define SLC_HOST_CONF0 0x000000FF +#define SLC_HOST_CONF0_S 0 + +#define SLC_HOST_CONF_W1 (REG_SLC_HOST_BASE + 0x18) +#define SLC_HOST_CONF7 0x000000FF +#define SLC_HOST_CONF7_S 24 +#define SLC_HOST_CONF6 0x000000FF +#define SLC_HOST_CONF6_S 16 +#define SLC_HOST_CONF5 0x000000FF +#define SLC_HOST_CONF5_S 8 +#define SLC_HOST_CONF4 0x000000FF +#define SLC_HOST_CONF4_S 0 + +#define SLC_HOST_INT_ST (REG_SLC_HOST_BASE + 0x1C) +#define SLC_HOST_RX_ST (BIT(23)) +#define SLC_HOST_EXT_BIT3_INT_ST (BIT(22)) +#define SLC_HOST_EXT_BIT2_INT_ST (BIT(21)) +#define SLC_HOST_EXT_BIT1_INT_ST (BIT(20)) +#define SLC_HOST_RXFIFO_NOT_EMPTY_INT_ST (BIT(19)) +#define SLC_HOST_RX_PF_VALID_INT_ST (BIT(18)) +#define SLC_HOST_TX_OVF_INT_ST (BIT(17)) +#define SLC_HOST_RX_UDF_INT_ST (BIT(16)) +#define SLC_HOST_TX_START_INT_ST (BIT(15)) +#define SLC_HOST_RX_START_INT_ST (BIT(14)) +#define SLC_HOST_RX_EOF_INT_ST (BIT(13)) +#define SLC_HOST_RX_SOF_INT_ST (BIT(12)) +#define SLC_HOST_TOKEN1_0TO1_INT_ST (BIT(11)) +#define SLC_HOST_TOKEN0_0TO1_INT_ST (BIT(10)) +#define SLC_HOST_TOKEN1_1TO0_INT_ST (BIT(9)) +#define SLC_HOST_TOKEN0_1TO0_INT_ST (BIT(8)) +#define SLC_HOST_TOHOST_BIT7_INT_ST (BIT(7)) +#define SLC_HOST_TOHOST_BIT6_INT_ST (BIT(6)) +#define SLC_HOST_TOHOST_BIT5_INT_ST (BIT(5)) +#define SLC_HOST_TOHOST_BIT4_INT_ST (BIT(4)) +#define SLC_HOST_TOHOST_BIT3_INT_ST (BIT(3)) +#define SLC_HOST_TOHOST_BIT2_INT_ST (BIT(2)) +#define SLC_HOST_TOHOST_BIT1_INT_ST (BIT(1)) +#define SLC_HOST_TOHOST_BIT0_INT_ST (BIT(0)) + +#define SLC_HOST_CONF_W2 (REG_SLC_HOST_BASE + 0x20) +#define SLC_HOST_CONF11 0x000000FF +#define SLC_HOST_CONF11_S 24 +#define SLC_HOST_CONF10 0x000000FF +#define SLC_HOST_CONF10_S 16 +#define SLC_HOST_CONF9 0x000000FF +#define SLC_HOST_CONF9_S 8 +#define SLC_HOST_CONF8 0x000000FF +#define SLC_HOST_CONF8_S 0 + +#define SLC_HOST_CONF_W3 (REG_SLC_HOST_BASE + 0x24) +#define SLC_HOST_CONF15 0x000000FF +#define SLC_HOST_CONF15_S 24 +#define SLC_HOST_CONF14 0x000000FF +#define SLC_HOST_CONF14_S 16 +#define SLC_HOST_CONF13 0x000000FF +#define SLC_HOST_CONF13_S 8 +#define SLC_HOST_CONF12 0x000000FF +#define SLC_HOST_CONF12_S 0 + +#define SLC_HOST_GEN_TXDONE_INT BIT(16) +#define SLC_HOST_GEN_RXDONE_INT BIT(17) + +#define SLC_HOST_CONF_W4 (REG_SLC_HOST_BASE + 0x28) +#define SLC_HOST_CONF19 0x000000FF +#define SLC_HOST_CONF19_S 24 +#define SLC_HOST_CONF18 0x000000FF +#define SLC_HOST_CONF18_S 16 +#define SLC_HOST_CONF17 0x000000FF +#define SLC_HOST_CONF17_S 8 +#define SLC_HOST_CONF16 0x000000FF +#define SLC_HOST_CONF16_S 0 + +#define SLC_HOST_TOKEN_WDATA (REG_SLC_HOST_BASE + 0x2C) +#define SLC_HOST_TOKEN1_WD 0x00000FFF +#define SLC_HOST_TOKEN1_WD_S 16 +#define SLC_HOST_TOKEN0_WD 0x00000FFF +#define SLC_HOST_TOKEN0_WD_S 0 + +#define SLC_HOST_INT_CLR (REG_SLC_HOST_BASE + 0x30) +#define SLC_HOST_TOKEN1_WR (BIT(31)) +#define SLC_HOST_TOKEN0_WR (BIT(30)) +#define SLC_HOST_TOKEN1_DEC (BIT(29)) +#define SLC_HOST_TOKEN0_DEC (BIT(28)) +#define SLC_HOST_EXT_BIT3_INT_CLR (BIT(22)) +#define SLC_HOST_EXT_BIT2_INT_CLR (BIT(21)) +#define SLC_HOST_EXT_BIT1_INT_CLR (BIT(20)) +#define SLC_HOST_EXT_BIT0_INT_CLR (BIT(19)) +#define SLC_HOST_RX_PF_VALID_INT_CLR (BIT(18)) +#define SLC_HOST_TX_OVF_INT_CLR (BIT(17)) +#define SLC_HOST_RX_UDF_INT_CLR (BIT(16)) +#define SLC_HOST_TX_START_INT_CLR (BIT(15)) +#define SLC_HOST_RX_START_INT_CLR (BIT(14)) +#define SLC_HOST_RX_EOF_INT_CLR (BIT(13)) +#define SLC_HOST_RX_SOF_INT_CLR (BIT(12)) +#define SLC_HOST_TOKEN1_0TO1_INT_CLR (BIT(11)) +#define SLC_HOST_TOKEN0_0TO1_INT_CLR (BIT(10)) +#define SLC_HOST_TOKEN1_1TO0_INT_CLR (BIT(9)) +#define SLC_HOST_TOKEN0_1TO0_INT_CLR (BIT(8)) +#define SLC_HOST_TOHOST_BIT7_INT_CLR (BIT(7)) +#define SLC_HOST_TOHOST_BIT6_INT_CLR (BIT(6)) +#define SLC_HOST_TOHOST_BIT5_INT_CLR (BIT(5)) +#define SLC_HOST_TOHOST_BIT4_INT_CLR (BIT(4)) +#define SLC_HOST_TOHOST_BIT3_INT_CLR (BIT(3)) +#define SLC_HOST_TOHOST_BIT2_INT_CLR (BIT(2)) +#define SLC_HOST_TOHOST_BIT1_INT_CLR (BIT(1)) +#define SLC_HOST_TOHOST_BIT0_INT_CLR (BIT(0)) + +#define SLC_HOST_INT_ENA (REG_SLC_HOST_BASE + 0x34) +#define SLC_HOST_EXT_BIT3_INT_ENA (BIT(22)) +#define SLC_HOST_EXT_BIT2_INT_ENA (BIT(21)) +#define SLC_HOST_EXT_BIT1_INT_ENA (BIT(20)) +#define SLC_HOST_EXT_BIT0_INT_ENA (BIT(19)) +#define SLC_HOST_RX_PF_VALID_INT_ENA (BIT(18)) +#define SLC_HOST_TX_OVF_INT_ENA (BIT(17)) +#define SLC_HOST_RX_UDF_INT_ENA (BIT(16)) +#define SLC_HOST_TX_START_INT_ENA (BIT(15)) +#define SLC_HOST_RX_START_INT_ENA (BIT(14)) +#define SLC_HOST_RX_EOF_INT_ENA (BIT(13)) +#define SLC_HOST_RX_SOF_INT_ENA (BIT(12)) +#define SLC_HOST_TOKEN1_0TO1_INT_ENA (BIT(11)) +#define SLC_HOST_TOKEN0_0TO1_INT_ENA (BIT(10)) +#define SLC_HOST_TOKEN1_1TO0_INT_ENA (BIT(9)) +#define SLC_HOST_TOKEN0_1TO0_INT_ENA (BIT(8)) +#define SLC_HOST_TOHOST_BIT7_INT_ENA (BIT(7)) +#define SLC_HOST_TOHOST_BIT6_INT_ENA (BIT(6)) +#define SLC_HOST_TOHOST_BIT5_INT_ENA (BIT(5)) +#define SLC_HOST_TOHOST_BIT4_INT_ENA (BIT(4)) +#define SLC_HOST_TOHOST_BIT3_INT_ENA (BIT(3)) +#define SLC_HOST_TOHOST_BIT2_INT_ENA (BIT(2)) +#define SLC_HOST_TOHOST_BIT1_INT_ENA (BIT(1)) +#define SLC_HOST_TOHOST_BIT0_INT_ENA (BIT(0)) + +#define SLC_HOST_CONF_W5 (REG_SLC_HOST_BASE + 0x3C) +#define SLC_HOST_CONF23 0x000000FF +#define SLC_HOST_CONF23_S 24 +#define SLC_HOST_CONF22 0x000000FF +#define SLC_HOST_CONF22_S 16 +#define SLC_HOST_CONF21 0x000000FF +#define SLC_HOST_CONF21_S 8 +#define SLC_HOST_CONF20 0x000000FF +#define SLC_HOST_CONF20_S 0 + + +#define SLC_HOST_DATE (REG_SLC_HOST_BASE + 0x78) +#define SLC_HOST_ID (REG_SLC_HOST_BASE + 0x7C) + +#define SLC_ADDR_WINDOW_CLEAR_MASK (~(0xf<<12)) +#define SLC_FROM_HOST_ADDR_WINDOW (0x1<<12) +#define SLC_TO_HOST_ADDR_WINDOW (0x3<<12) + +#define SLC_SET_FROM_HOST_ADDR_WINDOW(v) do { \ + (v) &= 0xffff; \ + (v) &= SLC_ADDR_WINDOW_CLEAR_MASK; \ + (v) |= SLC_FROM_HOST_ADDR_WINDOW; \ +} while (0); + +#define SLC_SET_TO_HOST_ADDR_WINDOW(v) do { \ + (v) &= 0xffff; \ + (v) &= SLC_ADDR_WINDOW_CLEAR_MASK; \ + (v) |= SLC_TO_HOST_ADDR_WINDOW; \ +} while (0); + + +#endif // SLC_HOST_REGISTER_H_INCLUDED diff --git a/drivers/net/wireless/esp8089/spi_sif_esp.c b/drivers/net/wireless/esp8089/spi_sif_esp.c new file mode 100755 index 00000000000..49571a8d3f7 --- /dev/null +++ b/drivers/net/wireless/esp8089/spi_sif_esp.c @@ -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 +#include +#include +#include +#include +#include +#include + + +#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) + { + 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) + { + 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=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=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) + { + 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) + { + 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) + { + 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) + { + 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) + { + 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 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) + { + 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) + { + 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=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 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/esp8089/testmode.c b/drivers/net/wireless/esp8089/testmode.c new file mode 100755 index 00000000000..c849318531c --- /dev/null +++ b/drivers/net/wireless/esp8089/testmode.c @@ -0,0 +1,616 @@ + +/* + * Copyright (c) 2011 Espressif System. + * + * MAC80211 support module + */ +#ifdef TEST_MODE + +#include +#include +#include +#include +#include +#include +#include +#include +#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 +#endif + +static u32 connected_nl; +static struct genl_info info_copy; +static struct esp_sip *sip_copy; +static u8 *sdio_buff; + +#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); + if (hdr == NULL) + goto nla_put_failure; + + 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); + 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; + + /*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); + + 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; ipara_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; + } + 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); + 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/esp8089/testmode.h b/drivers/net/wireless/esp8089/testmode.h new file mode 100755 index 00000000000..b8be32e0df1 --- /dev/null +++ b/drivers/net/wireless/esp8089/testmode.h @@ -0,0 +1,46 @@ + +#ifndef __TEST_MODE +#define __TEST_MODE + +enum { + TEST_CMD_UNSPEC, + TEST_CMD_ECHO, + TEST_CMD_ASK, + TEST_CMD_SLEEP, + TEST_CMD_WAKEUP, + TEST_CMD_LOOPBACK, + TEST_CMD_TX, + TEST_CMD_RX, + TEST_CMD_DEBUG, + TEST_CMD_SDIO_WR, + TEST_CMD_SDIO_RD, + TEST_CMD_SDIOSPEED, + __TEST_CMD_MAX, +}; +#define TEST_CMD_MAX (__TEST_CMD_MAX - 1) + +enum { + TEST_ATTR_UNSPEC, + TEST_ATTR_CMD_NAME, + TEST_ATTR_CMD_TYPE, + TEST_ATTR_PARA_NUM, + TEST_ATTR_PARA0, + TEST_ATTR_PARA1, + TEST_ATTR_PARA2, + TEST_ATTR_PARA3, + TEST_ATTR_PARA4, + TEST_ATTR_PARA5, + TEST_ATTR_PARA6, + TEST_ATTR_PARA7, + TEST_ATTR_STR, + __TEST_ATTR_MAX, +}; +#define TEST_ATTR_MAX (__TEST_ATTR_MAX - 1) +#define TEST_ATTR_PARA(i) (TEST_ATTR_PARA0+(i)) + +u32 get_loopback_num(void); +u32 get_loopback_id(void); +void inc_loopback_id(void); +#endif + +