aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/input/keyboard
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/input/keyboard')
-rw-r--r--drivers/input/keyboard/cypress/cypress-touchkey.c96
-rw-r--r--drivers/input/keyboard/cypress/issp_main.c30
-rw-r--r--drivers/input/keyboard/cypress/touchkey_fw_T0.h770
-rw-r--r--drivers/input/keyboard/gpio_keys.c133
-rw-r--r--drivers/input/keyboard/samsung-keypad.c218
5 files changed, 1186 insertions, 61 deletions
diff --git a/drivers/input/keyboard/cypress/cypress-touchkey.c b/drivers/input/keyboard/cypress/cypress-touchkey.c
index d29d91c..f29fbb0 100644
--- a/drivers/input/keyboard/cypress/cypress-touchkey.c
+++ b/drivers/input/keyboard/cypress/cypress-touchkey.c
@@ -48,7 +48,7 @@
/* M0 Touchkey temporary setting */
-#if defined(CONFIG_MACH_M0) || defined(CONFIG_MACH_C1VZW)
+#if defined(CONFIG_MACH_M0) || defined(CONFIG_MACH_M3)
#define CONFIG_MACH_Q1_BD
#elif defined(CONFIG_MACH_C1) && !defined(CONFIG_TARGET_LOCALE_KOR)
#define CONFIG_MACH_Q1_BD
@@ -61,19 +61,21 @@
#define CONFIG_TARGET_LOCALE_NAATT
#endif
-#if defined(CONFIG_TARGET_LOCALE_NAATT)
-static int touchkey_keycode[5] = { 0,
- KEY_MENU, KEY_ENTER, KEY_BACK, KEY_END };
-#elif defined(CONFIG_TARGET_LOCALE_NA)
-static int touchkey_keycode[5] = { NULL,
- KEY_SEARCH, KEY_BACK, KEY_HOME, KEY_MENU };
-#elif defined(CONFIG_MACH_M0) \
- || defined(CONFIG_MACH_C1) \
- || defined(CONFIG_MACH_C1VZW)
-static int touchkey_keycode[3] = { 0, KEY_BACK, KEY_MENU,};
+static int touchkey_keycode[] = { 0,
+#if defined(TK_USE_4KEY_TYPE_ATT)
+ KEY_MENU, KEY_ENTER, KEY_BACK, KEY_END,
+
+#elif defined(TK_USE_4KEY_TYPE_NA)
+ KEY_SEARCH, KEY_BACK, KEY_HOMEPAGE, KEY_MENU,
+
+#elif defined(TK_USE_2KEY_TYPE_M0)
+ KEY_BACK, KEY_MENU,
+
#else
-static int touchkey_keycode[3] = { 0, KEY_MENU, KEY_BACK };
+ KEY_MENU, KEY_BACK,
+
#endif
+};
static const int touchkey_count = sizeof(touchkey_keycode) / sizeof(int);
struct touchkey_i2c *tkey_i2c_local;
@@ -82,8 +84,6 @@ int touch_led_timeout = 3; // timeout for the touchkey backlight in secs
int touch_led_disabled = 0; // 1= force disable the touchkey backlight
#if defined(TK_HAS_AUTOCAL)
-static u8 home_sensitivity;
-static u8 search_sensitivity;
static u16 raw_data0;
static u16 raw_data1;
static u16 raw_data2;
@@ -117,6 +117,10 @@ static int touchkey_i2c_check(struct touchkey_i2c *tkey_i2c);
static u8 menu_sensitivity;
static u8 back_sensitivity;
+#if defined(TK_USE_4KEY)
+static u8 home_sensitivity;
+static u8 search_sensitivity;
+#endif
static int touchkey_enable;
static bool touchkey_probe = true;
@@ -353,7 +357,8 @@ static ssize_t touchkey_raw_data0_show(struct device *dev,
data[18], data[19]);
raw_data0 = ((0x00FF & data[18]) << 8) | data[19];
#elif defined(CONFIG_MACH_M0) || defined(CONFIG_MACH_C1)\
-|| defined(CONFIG_MACH_C1VZW)
+|| defined(CONFIG_MACH_M3)\
+ || defined(CONFIG_MACH_T0)
printk(KERN_DEBUG "called %s data[16] =%d,data[17] = %d\n", __func__,
data[16], data[17]);
raw_data0 = ((0x00FF & data[16]) << 8) | data[17]; /* menu*/
@@ -383,7 +388,8 @@ static ssize_t touchkey_raw_data1_show(struct device *dev,
data[20], data[21]);
raw_data1 = ((0x00FF & data[20]) << 8) | data[21];
#elif defined(CONFIG_MACH_M0) || defined(CONFIG_MACH_C1)\
-|| defined(CONFIG_MACH_C1VZW)
+|| defined(CONFIG_MACH_M3)\
+ || defined(CONFIG_MACH_T0)
printk(KERN_DEBUG "called %s data[14] =%d,data[15] = %d\n", __func__,
data[14], data[15]);
raw_data1 = ((0x00FF & data[14]) << 8) | data[15]; /*back*/
@@ -552,9 +558,8 @@ static int touchkey_firmware_update(struct touchkey_i2c *tkey_i2c)
tkey_i2c->firmware_ver = data[1];
tkey_i2c->module_ver = data[2];
-
#if defined(CONFIG_MACH_M0) || defined(CONFIG_MACH_C1) \
-|| defined(CONFIG_MACH_C1VZW)
+|| defined(CONFIG_MACH_M3) || defined(CONFIG_MACH_T0)
if ((tkey_i2c->firmware_ver < TK_FIRMWARE_VER) &&
(tkey_i2c->module_ver <= TK_MODULE_VER)) {
#else
@@ -589,7 +594,7 @@ static int touchkey_firmware_update(struct touchkey_i2c *tkey_i2c)
"[TouchKey] i2c read fail.\n");
return TK_UPDATE_FAIL;
}
-
+#if defined(CONFIG_TARGET_LOCALE_KOR)
ret = i2c_touchkey_read(tkey_i2c->client, KEYCODE_REG, data, 3);
if (ret < 0) {
printk(KERN_DEBUG
@@ -597,6 +602,7 @@ static int touchkey_firmware_update(struct touchkey_i2c *tkey_i2c)
}
tkey_i2c->firmware_ver = data[1];
tkey_i2c->module_ver = data[2];
+#endif
printk(KERN_DEBUG "[TouchKey] firm ver = %d, module ver = %d\n",
tkey_i2c->firmware_ver, tkey_i2c->module_ver);
} else {
@@ -734,8 +740,13 @@ static irqreturn_t touchkey_interrupt(int irq, void *dev_id)
input_report_key(tkey_i2c->input_dev,
touchkey_keycode[keycode_type], pressed);
input_sync(tkey_i2c->input_dev);
- /* printk(KERN_DEBUG "[TouchKey] keycode:%d pressed:%d\n",
- touchkey_keycode[keycode_index], pressed); */
+#if !defined(CONFIG_SAMSUNG_PRODUCT_SHIP)
+ printk(KERN_DEBUG "[TouchKey] keycode:%d pressed:%d\n",
+ touchkey_keycode[keycode_type], pressed);
+#else
+ pr_debug("[TouchKey] pressed:%d\n",
+ pressed);
+#endif
#if defined(CONFIG_TARGET_LOCALE_KOR)
if (g_debug_tkey == true) {
@@ -1094,6 +1105,10 @@ static ssize_t touchkey_led_control(struct device *dev,
int ret;
static const int ledCmd[] = {TK_CMD_LED_ON, TK_CMD_LED_OFF};
+#if defined(CONFIG_TARGET_LOCALE_KOR)
+ if (touchkey_probe == false)
+ return size;
+#endif
ret = sscanf(buf, "%d", &data);
if (ret != 1) {
printk(KERN_DEBUG "[TouchKey] %s, %d err\n",
@@ -1261,7 +1276,7 @@ void touchscreen_state_report(int state)
}
}
-#if defined(CONFIG_TARGET_LOCALE_NAATT) || defined(CONFIG_TARGET_LOCALE_NA)
+#if defined(TK_USE_4KEY)
static ssize_t touchkey_menu_show(struct device *dev,
struct device_attribute *attr, char *buf)
{
@@ -1375,7 +1390,8 @@ static ssize_t touchkey_menu_show(struct device *dev,
{
struct touchkey_i2c *tkey_i2c = dev_get_drvdata(dev);
#if defined(CONFIG_MACH_Q1_BD) \
-|| (defined(CONFIG_MACH_C1) && defined(CONFIG_TARGET_LOCALE_KOR))
+|| (defined(CONFIG_MACH_C1) && defined(CONFIG_TARGET_LOCALE_KOR))\
+ || defined(CONFIG_MACH_T0)
u8 data[14] = { 0, };
int ret;
@@ -1399,7 +1415,8 @@ static ssize_t touchkey_back_show(struct device *dev,
{
struct touchkey_i2c *tkey_i2c = dev_get_drvdata(dev);
#if defined(CONFIG_MACH_Q1_BD) \
-|| (defined(CONFIG_MACH_C1) && defined(CONFIG_TARGET_LOCALE_KOR))
+ || (defined(CONFIG_MACH_C1) && defined(CONFIG_TARGET_LOCALE_KOR))\
+ || defined(CONFIG_MACH_T0)
u8 data[14] = { 0, };
int ret;
@@ -1511,6 +1528,10 @@ static ssize_t set_touchkey_update_show(struct device *dev,
i2c_touchkey_write(tkey_i2c->client, &get_touch, 1);
#endif
+#if defined(TK_HAS_AUTOCAL)
+ touchkey_autocalibration(tkey_i2c);
+#endif
+
enable_irq(tkey_i2c->irq);
return count;
@@ -1565,7 +1586,7 @@ static DEVICE_ATTR(touchkey_menu, S_IRUGO | S_IWUSR | S_IWGRP,
static DEVICE_ATTR(touchkey_back, S_IRUGO | S_IWUSR | S_IWGRP,
touchkey_back_show, NULL);
-#if defined(CONFIG_TARGET_LOCALE_NA) || defined(CONFIG_TARGET_LOCALE_NAATT)
+#if defined(TK_USE_4KEY)
static DEVICE_ATTR(touchkey_home, S_IRUGO, touchkey_home_show, NULL);
static DEVICE_ATTR(touchkey_search, S_IRUGO, touchkey_search_show, NULL);
#endif
@@ -1612,7 +1633,7 @@ static struct attribute *touchkey_attributes[] = {
&dev_attr_brightness.attr,
&dev_attr_touchkey_menu.attr,
&dev_attr_touchkey_back.attr,
-#if defined(CONFIG_TARGET_LOCALE_NA) || defined(CONFIG_TARGET_LOCALE_NAATT)
+#if defined(TK_USE_4KEY)
&dev_attr_touchkey_home.attr,
&dev_attr_touchkey_search.attr,
#endif
@@ -1746,15 +1767,29 @@ static int i2c_touchkey_probe(struct i2c_client *client,
}
}
- ret = touchkey_i2c_check(tkey_i2c);
- if (ret < 0) {
+#if defined(CONFIG_MACH_M0) || defined(CONFIG_MACH_C1)
+ gpio_request(GPIO_OLED_DET, "OLED_DET");
+ ret = gpio_get_value(GPIO_OLED_DET);
+ printk(KERN_DEBUG
+ "[TouchKey] OLED_DET = %d\n", ret);
+
+ if (ret == 0) {
printk(KERN_DEBUG
- "[TouchKey] i2c read fail. do not excute firm update.\n");
+ "[TouchKey] device wasn't connected to board\n");
input_unregister_device(input_dev);
touchkey_probe = false;
return -EBUSY;
}
+#else
+ ret = touchkey_i2c_check(tkey_i2c);
+ if (ret < 0) {
+ printk(KERN_DEBUG"[TouchKey] probe failed\n");
+ input_unregister_device(input_dev);
+ touchkey_probe = false;
+ return -EBUSY;
+ }
+#endif
ret =
request_threaded_irq(tkey_i2c->irq, NULL, touchkey_interrupt,
@@ -1768,7 +1803,6 @@ static int i2c_touchkey_probe(struct i2c_client *client,
return -EBUSY;
}
-
tkey_i2c->pdata->led_power_on(1);
#if defined(TK_HAS_FIRMWARE_UPDATE)
@@ -1820,7 +1854,7 @@ static int __init touchkey_init(void)
{
int ret = 0;
-#if defined(CONFIG_MACH_M0) || defined(CONFIG_MACH_C1VZW)
+#if defined(CONFIG_MACH_M0)
if (system_rev < TOUCHKEY_FW_UPDATEABLE_HW_REV) {
printk(KERN_DEBUG "[Touchkey] Doesn't support this board rev %d\n",
system_rev);
diff --git a/drivers/input/keyboard/cypress/issp_main.c b/drivers/input/keyboard/cypress/issp_main.c
index c212506..ddca59b4 100644
--- a/drivers/input/keyboard/cypress/issp_main.c
+++ b/drivers/input/keyboard/cypress/issp_main.c
@@ -389,9 +389,11 @@ unsigned int iChecksumTarget;
#include "touchkey_fw_NA.h"
#elif defined(CONFIG_TARGET_LOCALE_NAATT)
#include "touchkey_fw_NAATT.h"
-#elif defined(CONFIG_MACH_M0) || defined(CONFIG_MACH_C1)\
-|| defined(CONFIG_MACH_C1VZW)
+#elif defined(CONFIG_MACH_M0) || defined(CONFIG_MACH_C1) || \
+ defined(CONFIG_MACH_M3)
#include "touchkey_fw_M0.h"
+#elif defined(CONFIG_MACH_T0)
+#include "touchkey_fw_T0.h"
#else
#include "touchkey_fw_U1.h"
#endif
@@ -684,7 +686,7 @@ RAM Load, FLASHBlock Program, and Target Checksum Verification.*/
/*INTFREE(); */
#else
/*INTLOCK(); */
- local_irq_save(flags);
+ /*local_irq_save(flags);*/
/* Initialize the Host & Target for ISSP operations */
fIsError = fPowerCycleInitializeTargetForISSP();
if (fIsError) {
@@ -713,20 +715,20 @@ RAM Load, FLASHBlock Program, and Target Checksum Verification.*/
#endif
/*INTFREE(); */
- local_irq_restore(flags);
+ /*local_irq_restore(flags);*/
/*printk(KERN_DEBUG"fVerifySiliconID END\n"); */
/* Bulk-Erase the Device. */
/*printk(KERN_DEBUG"fEraseTarget START\n"); */
/*INTLOCK(); */
fIsError = fEraseTarget();
- local_irq_save(flags);
+ /*local_irq_save(flags);*/
if (fIsError) {
ErrorTrap(fIsError);
return fIsError;
}
/*INTFREE(); */
- local_irq_restore(flags);
+ /*local_irq_restore(flags);*/
/*printk(KERN_DEBUG"fEraseTarget END\n"); */
/*==============================================================
@@ -739,7 +741,7 @@ this data should come from the HEX output of PSoC Designer.*/
iChecksumData = 0;
/*PTJ: NUM_BANKS should be 1 for Krypton*/
for (bBankCounter = 0; bBankCounter < NUM_BANKS; bBankCounter++) {
- local_irq_save(flags);
+ /*local_irq_save(flags);*/
for (iBlockCounter = 0; iBlockCounter < BLOCKS_PER_BANK;
iBlockCounter++) {
/*printk(KERN_DEBUG
@@ -789,7 +791,7 @@ this data should come from the HEX output of PSoC Designer.*/
/*INTFREE(); */
/*local_irq_restore(flags);*/
}
- local_irq_restore(flags);
+ /*local_irq_restore(flags);*/
}
/*printk(KERN_DEBUG"\r\n Program Flash Blocks End\n"); */
@@ -857,7 +859,7 @@ this data should come from the HEX output of PSoC Designer.*/
come from the hex output of psoc designer.
printk(KERN_DEBUG"program security data start\n");*/
/*INTLOCK(); */
- local_irq_save(flags);
+ /*local_irq_save(flags);*/
for (bBankCounter = 0; bBankCounter < NUM_BANKS; bBankCounter++) {
/*PTJ: READ-WRITE-SETUP used here to select SRAM Bank 1 */
#ifdef CY8C20x66
@@ -887,7 +889,7 @@ this data should come from the HEX output of PSoC Designer.*/
}
}
/*INTFREE(); */
- local_irq_restore(flags);
+ /*local_irq_restore(flags);*/
/*printk(KERN_DEBUG"Program security data END\n"); */
@@ -897,7 +899,7 @@ this data should come from the HEX output of PSoC Designer.*/
loads abTargetDataOUT[] with security data
that was used in secure bit stream*/
/*INTLOCK(); */
- local_irq_save(flags);
+ /*local_irq_save(flags);*/
fIsError = fLoadSecurityData(bBankCounter);
if (fIsError) {
ErrorTrap(fIsError);
@@ -911,14 +913,14 @@ this data should come from the HEX output of PSoC Designer.*/
}
#endif
/*INTFREE(); */
- local_irq_restore(flags);
+ /*local_irq_restore(flags);*/
/*printk(KERN_DEBUG"Load security data END\n"); */
#endif /* security end */
/*=======================================================
PTJ: Doing Checksum after READ-SECURITY*/
/*INTLOCK(); */
- local_irq_save(flags);
+ /*local_irq_save(flags);*/
iChecksumTarget = 0;
for (bBankCounter = 0; bBankCounter < NUM_BANKS; bBankCounter++) {
fIsError = fAccTargetBankChecksum(&iChecksumTarget);
@@ -929,7 +931,7 @@ this data should come from the HEX output of PSoC Designer.*/
}
/*INTFREE(); */
- local_irq_restore(flags);
+ /*local_irq_restore(flags);*/
/*printk(KERN_DEBUG"Checksum : iChecksumTarget (0x%X)\n",
(unsigned char)iChecksumTarget);
diff --git a/drivers/input/keyboard/cypress/touchkey_fw_T0.h b/drivers/input/keyboard/cypress/touchkey_fw_T0.h
new file mode 100644
index 0000000..671d265
--- /dev/null
+++ b/drivers/input/keyboard/cypress/touchkey_fw_T0.h
@@ -0,0 +1,770 @@
+unsigned char firmware_data[] = {
+ 0x40, 0x7d, 0x00, 0x68, 0x30, 0x30, 0x30, 0x30, 0x7e, 0x30, 0x30, 0x30,
+ 0x7e, 0x30, 0x30, 0x30, 0x7e, 0x30, 0x30, 0x30, 0x7d, 0x00, 0x68,
+ 0x7e, 0x7e, 0x30, 0x30, 0x30, 0x7d, 0x04, 0xae, 0x7e, 0x7e, 0x30,
+ 0x30, 0x30, 0x7d, 0x05, 0xfb, 0x7e, 0x7e, 0x30, 0x30, 0x30, 0x7e,
+ 0x30, 0x30, 0x30, 0x7e, 0x30, 0x30, 0x30, 0x7e, 0x30, 0x30, 0x30,
+ 0x7e, 0x30, 0x30, 0x30, 0x7e, 0x30, 0x30, 0x30,
+ 0x7e, 0x30, 0x30, 0x30, 0x7e, 0x30, 0x30, 0x30, 0x7e, 0x30, 0x30, 0x30,
+ 0x7e, 0x30, 0x30, 0x30, 0x7e, 0x30, 0x30, 0x30, 0x7e, 0x30, 0x30,
+ 0x30, 0x7e, 0x30, 0x30, 0x30, 0x7e, 0x30, 0x30, 0x30, 0x30, 0x30,
+ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x40, 0x71, 0x10, 0x62, 0xe3,
+ 0x06, 0x70, 0xef, 0x62, 0xe3, 0x38, 0x50, 0x80, 0x4e, 0x62, 0xe3,
+ 0x38, 0x5d, 0xd5, 0x08, 0x62, 0xd5, 0x00, 0x55,
+ 0xfa, 0x01, 0x40, 0x4f, 0x5b, 0x01, 0x03, 0x53, 0xf9, 0x55, 0xf8, 0x3a,
+ 0x50, 0x06, 0x00, 0x40, 0x40, 0x71, 0x10, 0x51, 0xfa, 0x60, 0xe8,
+ 0x70, 0xef, 0x18, 0x60, 0xd5, 0x55, 0xf8, 0x00, 0x55, 0xf9, 0x00,
+ 0x71, 0x10, 0x62, 0xe0, 0x1a, 0x70, 0xef, 0x62, 0xe3, 0x38, 0x71,
+ 0x10, 0x41, 0xe1, 0xfe, 0x70, 0xef, 0x62, 0xe3, 0x38, 0x62, 0xd1,
+ 0x03, 0x50, 0x80, 0x4e, 0x62, 0xd3, 0x03, 0x62,
+ 0xd0, 0x00, 0x62, 0xd5, 0x00, 0x62, 0xd4, 0x00, 0x71, 0xc0, 0x7c, 0x03,
+ 0x1b, 0x62, 0xd0, 0x00, 0x50, 0x01, 0x57, 0xc2, 0x08, 0x28, 0x53,
+ 0x51, 0x18, 0x75, 0x09, 0x00, 0x28, 0x4b, 0x51, 0x51, 0x80, 0x04,
+ 0x75, 0x09, 0x00, 0x62, 0xe3, 0x00, 0x08, 0x28, 0x60, 0xd5, 0x74,
+ 0xa0, 0x4b, 0x18, 0x75, 0x09, 0x00, 0x08, 0x28, 0x53, 0x51, 0x18,
+ 0x75, 0x09, 0x00, 0x08, 0x28, 0xa0, 0x1c, 0x53,
+ 0x50, 0x18, 0x75, 0x09, 0x00, 0x08, 0x28, 0x3f, 0x51, 0x47, 0x51, 0xff,
+ 0xb0, 0x06, 0x5d, 0xd5, 0x74, 0x60, 0xd5, 0x18, 0x7a, 0x50, 0xbf,
+ 0xeb, 0x8f, 0xc9, 0x18, 0x75, 0x09, 0x00, 0x08, 0x28, 0x53, 0x50,
+ 0x50, 0x00, 0x3f, 0x51, 0x47, 0x51, 0xff, 0xb0, 0x08, 0x5d, 0xd5,
+ 0x74, 0x60, 0xd5, 0x50, 0x00, 0x7a, 0x50, 0xbf, 0xef, 0x18, 0x8f,
+ 0xaa, 0x18, 0x71, 0x10, 0x43, 0xe3, 0x00, 0x70,
+ 0xef, 0x62, 0xe0, 0x00, 0x41, 0xfe, 0xe7, 0x43, 0xfe, 0x10, 0x71, 0x10,
+ 0x62, 0xe0, 0x1a, 0x70, 0xef, 0x62, 0xe2, 0x00, 0x7c, 0x1b, 0x4b,
+ 0x8f, 0xff, 0x7f, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
+ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
+ 0x30, 0x30, 0x30, 0x30, 0x30, 0x01, 0x99, 0x03, 0x33, 0x06, 0x66,
+ 0x0c, 0xcc, 0x19, 0x99, 0x33, 0x33, 0x66, 0x66,
+ 0xcc, 0xcc, 0x01, 0x80, 0x03, 0x00, 0x06, 0x00, 0x0b, 0xff, 0x18, 0x00,
+ 0x2f, 0xff, 0x5f, 0xff, 0xbf, 0xff, 0x01, 0x66, 0x02, 0xcc, 0x05,
+ 0x99, 0x0b, 0x32, 0x16, 0x66, 0x2c, 0xcc, 0x59, 0x98, 0xb3, 0x32,
+ 0x01, 0x4c, 0x02, 0x99, 0x05, 0x33, 0x0a, 0x65, 0x14, 0xcc, 0x29,
+ 0x98, 0x53, 0x32, 0xa6, 0x65, 0x01, 0x33, 0x02, 0x66, 0x04, 0xcc,
+ 0x09, 0x99, 0x13, 0x33, 0x26, 0x65, 0x4c, 0xcc,
+ 0x99, 0x99, 0x1d, 0xea, 0x70, 0xef, 0x62, 0x61, 0x00, 0x62, 0xfd, 0x00,
+ 0x62, 0xcd, 0x00, 0x62, 0xce, 0x00, 0x62, 0xa5, 0x00, 0x62, 0xa4,
+ 0x00, 0x62, 0xa0, 0x00, 0x62, 0xa1, 0x80, 0x62, 0xa2, 0xc0, 0x62,
+ 0xa3, 0x0c, 0x62, 0xa8, 0x00, 0x62, 0xa6, 0x00, 0x62, 0xa7, 0x00,
+ 0x62, 0x7c, 0x33, 0x62, 0x7a, 0x00, 0x62, 0x7b, 0x00, 0x62, 0x79,
+ 0x00, 0x62, 0x36, 0x00, 0x62, 0x37, 0x00, 0x62,
+ 0x38, 0x00, 0x62, 0x39, 0x00, 0x62, 0x3a, 0x00, 0x62, 0x3b, 0x00, 0x62,
+ 0x3c, 0x00, 0x62, 0x3d, 0x00, 0x62, 0x3e, 0x00, 0x62, 0x3f, 0x00,
+ 0x62, 0x40, 0x00, 0x62, 0x41, 0x00, 0x62, 0x42, 0x00, 0x62, 0x43,
+ 0x00, 0x62, 0x44, 0x00, 0x62, 0x45, 0x00, 0x62, 0x46, 0x00, 0x62,
+ 0x47, 0x00, 0x62, 0x48, 0x00, 0x62, 0x49, 0x00, 0x62, 0x4a, 0x00,
+ 0x62, 0x4b, 0x00, 0x62, 0x4c, 0x00, 0x62, 0x4d,
+ 0x00, 0x62, 0x4e, 0x00, 0x62, 0x4f, 0x00, 0x62, 0xca, 0x20, 0x62, 0xd6,
+ 0x44, 0x62, 0xcf, 0x00, 0x62, 0xcb, 0x00, 0x62, 0xc8, 0x00, 0x62,
+ 0xcc, 0x00, 0x62, 0xc9, 0x00, 0x62, 0xd7, 0x00, 0x62, 0xa9, 0x00,
+ 0x62, 0x2b, 0x00, 0x62, 0xb0, 0x00, 0x62, 0xb3, 0x02, 0x62, 0xb6,
+ 0x00, 0x62, 0xb2, 0x00, 0x62, 0xb5, 0x00, 0x62, 0xb8, 0x00, 0x62,
+ 0xb1, 0x00, 0x62, 0xb4, 0x00, 0x62, 0xb7, 0x00,
+ 0x62, 0x33, 0x00, 0x62, 0x34, 0x00, 0x62, 0x35, 0x00, 0x71, 0x10, 0x62,
+ 0x54, 0x00, 0x62, 0x55, 0x00, 0x62, 0x56, 0x00, 0x62, 0x57, 0x00,
+ 0x62, 0x58, 0x00, 0x62, 0x59, 0x00, 0x62, 0x5a, 0x00, 0x62, 0x5b,
+ 0x00, 0x62, 0xdc, 0x00, 0x62, 0xe2, 0x00, 0x62, 0xdd, 0x00, 0x62,
+ 0xd8, 0x02, 0x62, 0xd9, 0x00, 0x62, 0xda, 0x28, 0x62, 0xdb, 0x00,
+ 0x62, 0xdf, 0x00, 0x62, 0x29, 0x00, 0x62, 0x30,
+ 0x00, 0x62, 0xbd, 0x00, 0x70, 0xef, 0x70, 0xef, 0x62, 0x00, 0x08, 0x71,
+ 0x10, 0x62, 0x00, 0x08, 0x62, 0x01, 0x92, 0x70, 0xef, 0x62, 0x04,
+ 0x17, 0x71, 0x10, 0x62, 0x04, 0x17, 0x62, 0x05, 0xab, 0x70, 0xef,
+ 0x62, 0x08, 0x00, 0x71, 0x10, 0x62, 0x08, 0x00, 0x62, 0x09, 0x28,
+ 0x70, 0xef, 0x62, 0x0c, 0x00, 0x71, 0x10, 0x62, 0x0c, 0x00, 0x62,
+ 0x0d, 0x00, 0x70, 0xef, 0x62, 0x10, 0x00, 0x71,
+ 0x10, 0x62, 0x10, 0x00, 0x62, 0x11, 0x00, 0x70, 0xef, 0x62, 0x01, 0x00,
+ 0x62, 0x05, 0x00, 0x62, 0x09, 0x00, 0x62, 0x0d, 0x00, 0x62, 0x11,
+ 0x00, 0x70, 0xef, 0x7f, 0x55, 0x02, 0x08, 0x55, 0x03, 0x17, 0x55,
+ 0x04, 0x00, 0x7c, 0x03, 0x28, 0x7f, 0x7c, 0x01, 0xc4, 0x70, 0xef,
+ 0x7f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39,
+ 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x62, 0xd0,
+ 0x00, 0x53, 0x00, 0x71, 0x10, 0x5d, 0xe0, 0x08, 0x21, 0xf8, 0x29, 0x00,
+ 0x70, 0xfe, 0x60, 0xe0, 0x70, 0xef, 0x4b, 0x4b, 0x4b, 0x4b, 0x51,
+ 0x02, 0x21, 0xf7, 0x60, 0x00, 0x6e, 0x00, 0xc0, 0x05, 0x21, 0xf7,
+ 0x80, 0x05, 0x29, 0x08, 0x80, 0x01, 0x60, 0x00, 0x6e, 0x00, 0xc0,
+ 0x05, 0x21, 0xf7, 0x80, 0x05, 0x29, 0x08, 0x80, 0x01, 0x60, 0x00,
+ 0x6e, 0x00, 0xc0, 0x05, 0x21, 0xf7, 0x80, 0x05,
+ 0x29, 0x08, 0x80, 0x01, 0x60, 0x00, 0x6e, 0x00, 0xc0, 0x05, 0x21, 0xf7,
+ 0x80, 0x05, 0x29, 0x08, 0x80, 0x01, 0x60, 0x00, 0x6e, 0x00, 0xc0,
+ 0x05, 0x21, 0xf7, 0x80, 0x05, 0x29, 0x08, 0x80, 0x01, 0x60, 0x00,
+ 0x6e, 0x00, 0xc0, 0x05, 0x21, 0xf7, 0x80, 0x05, 0x29, 0x08, 0x80,
+ 0x01, 0x60, 0x00, 0x6e, 0x00, 0xc0, 0x05, 0x21, 0xf7, 0x80, 0x05,
+ 0x29, 0x08, 0x80, 0x01, 0x60, 0x00, 0x6e, 0x00,
+ 0xc0, 0x05, 0x21, 0xf7, 0x80, 0x05, 0x29, 0x08, 0x80, 0x01, 0x60, 0x00,
+ 0x47, 0x00, 0x00, 0x49, 0x01, 0x00, 0x29, 0x08, 0x60, 0x00, 0x57,
+ 0x01, 0x79, 0xbf, 0xfe, 0x18, 0x71, 0x10, 0x60, 0xe0, 0x70, 0xef,
+ 0x71, 0x01, 0x7f, 0x08, 0x67, 0x67, 0x67, 0x67, 0x21, 0x0f, 0xff,
+ 0x40, 0x9f, 0x4e, 0x18, 0x21, 0x0f, 0xff, 0x39, 0x9f, 0x47, 0x7f,
+ 0x08, 0x10, 0x28, 0xa0, 0x0b, 0x9f, 0x3f, 0x20,
+ 0x18, 0x75, 0xdf, 0xf5, 0x74, 0x8f, 0xf2, 0x38, 0xfe, 0x7f, 0x52, 0x00,
+ 0xa0, 0x08, 0x10, 0x9f, 0x2d, 0x20, 0x75, 0x8f, 0xf6, 0x70, 0x3f,
+ 0x71, 0xc0, 0x7f, 0x50, 0x0d, 0x9f, 0x20, 0x50, 0x0a, 0x9f, 0x1c,
+ 0x7f, 0x70, 0xbf, 0x62, 0xd3, 0x03, 0x4f, 0x52, 0xfb, 0xa0, 0x15,
+ 0x7b, 0xfb, 0x52, 0xfc, 0x59, 0xfd, 0x60, 0xd3, 0x52, 0x00, 0x9f,
+ 0x05, 0x4f, 0x62, 0xd3, 0x03, 0x77, 0xfd, 0x8f,
+ 0xe9, 0x70, 0x3f, 0x71, 0xc0, 0x7f, 0x3d, 0xfa, 0x00, 0xb0, 0x06, 0x3d,
+ 0xfb, 0x00, 0xa0, 0x18, 0x10, 0x52, 0xfc, 0x59, 0xfd, 0x28, 0x9e,
+ 0xe6, 0x20, 0x07, 0xfd, 0x01, 0x0f, 0xfc, 0x00, 0x17, 0xfb, 0x01,
+ 0x1f, 0xfa, 0x00, 0x8f, 0xe0, 0x7f, 0x50, 0x01, 0x80, 0x03, 0x50,
+ 0x00, 0x62, 0xd0, 0x00, 0x29, 0x00, 0xa0, 0x06, 0x26, 0x03, 0xef,
+ 0x80, 0x04, 0x2e, 0x03, 0x10, 0x51, 0x03, 0x60,
+ 0x04, 0x70, 0x3f, 0x71, 0xc0, 0x7f, 0x70, 0x3f, 0x71, 0xc0, 0x7f, 0x50,
+ 0x01, 0x80, 0x03, 0x50, 0x00, 0x62, 0xd0, 0x00, 0x29, 0x00, 0xa0,
+ 0x06, 0x26, 0x03, 0xfb, 0x80, 0x04, 0x2e, 0x03, 0x04, 0x51, 0x03,
+ 0x60, 0x04, 0x70, 0x3f, 0x71, 0xc0, 0x7f, 0x70, 0x3f, 0x71, 0xc0,
+ 0x7f, 0x08, 0x10, 0x70, 0x3f, 0x71, 0x80, 0x5d, 0xd3, 0x08, 0x5d,
+ 0xd0, 0x08, 0x62, 0xd0, 0x00, 0x51, 0x08, 0x60,
+ 0xd3, 0x2e, 0x05, 0x80, 0x49, 0xd7, 0x08, 0xa0, 0x09, 0x26, 0x05, 0xf0,
+ 0x2e, 0x05, 0x00, 0x80, 0x08, 0x49, 0xd7, 0x20, 0xa0, 0x03, 0x80,
+ 0xa6, 0x51, 0x05, 0x21, 0x0e, 0xe0, 0x01, 0x80, 0x11, 0x80, 0x67,
+ 0x80, 0x79, 0x80, 0x47, 0x80, 0x96, 0x80, 0x94, 0x80, 0x92, 0x80,
+ 0x90, 0x80, 0x97, 0x5d, 0xd8, 0x21, 0xfe, 0x39, 0x40, 0xa0, 0x06,
+ 0x62, 0xd7, 0x00, 0x80, 0x8a, 0x49, 0xd8, 0x01,
+ 0xb0, 0x0f, 0x55, 0x0c, 0x02, 0x26, 0x05, 0xf0, 0x2e, 0x05, 0x02, 0x62,
+ 0xd7, 0x10, 0x80, 0x77, 0x55, 0x0c, 0x01, 0x26, 0x05, 0xf0, 0x2e,
+ 0x05, 0x06, 0x5f, 0x07, 0x06, 0x51, 0x09, 0x02, 0x07, 0x5c, 0x52,
+ 0x00, 0x60, 0xd8, 0x76, 0x07, 0x62, 0xd7, 0x14, 0x80, 0x5b, 0x51,
+ 0x0a, 0x78, 0x3a, 0x07, 0xc0, 0x0f, 0x51, 0x09, 0x02, 0x07, 0x5c,
+ 0x52, 0x00, 0x60, 0xd8, 0x76, 0x07, 0x2e, 0x05,
+ 0x20, 0x60, 0xd8, 0x62, 0xd7, 0x04, 0x80, 0x3f, 0x5d, 0xd8, 0x3a, 0x0a,
+ 0xd0, 0x2b, 0xa0, 0x29, 0x53, 0x07, 0x53, 0x06, 0x26, 0x05, 0xf0,
+ 0x2e, 0x05, 0x04, 0x80, 0x18, 0x51, 0x0b, 0x78, 0x3a, 0x07, 0xc0,
+ 0x16, 0x51, 0x09, 0x02, 0x07, 0x5c, 0x5d, 0xd8, 0x54, 0x00, 0x2e,
+ 0x05, 0x10, 0x76, 0x07, 0x80, 0x01, 0x62, 0xd7, 0x10, 0x80, 0x0f,
+ 0x62, 0xd7, 0x00, 0x80, 0x0a, 0x26, 0x05, 0xf0,
+ 0x2e, 0x05, 0x00, 0x55, 0x0c, 0x00, 0x18, 0x60, 0xd0, 0x18, 0x60, 0xd3,
+ 0x20, 0x18, 0x7e, 0x62, 0xd0, 0x00, 0x71, 0x10, 0x41, 0x04, 0xfc,
+ 0x43, 0x05, 0x03, 0x70, 0xef, 0x26, 0x03, 0xfc, 0x51, 0x03, 0x60,
+ 0x04, 0x55, 0x0c, 0x00, 0x90, 0x28, 0x90, 0x2d, 0x40, 0x40, 0x40,
+ 0x40, 0x40, 0x50, 0x00, 0x53, 0x06, 0x71, 0x10, 0x43, 0x04, 0x03,
+ 0x43, 0x05, 0x03, 0x70, 0xef, 0x2e, 0x03, 0x03,
+ 0x51, 0x03, 0x60, 0x04, 0x7f, 0x62, 0xd0, 0x00, 0x51, 0x05, 0x21, 0xb0,
+ 0x26, 0x05, 0x4f, 0x7f, 0x41, 0xe0, 0x7f, 0x43, 0xe0, 0x80, 0x7f,
+ 0x43, 0xd6, 0x31, 0x7f, 0x41, 0xe0, 0x7f, 0x41, 0xd6, 0xfe, 0x7f,
+ 0x62, 0xd0, 0x00, 0x4f, 0x52, 0xfd, 0x53, 0x0a, 0x52, 0xfc, 0x53,
+ 0x0b, 0x52, 0xfb, 0x53, 0x09, 0x52, 0xfa, 0x53, 0x08, 0x70, 0x3f,
+ 0x71, 0xc0, 0x7f, 0x08, 0x5d, 0xa4, 0x04, 0x1b,
+ 0x5d, 0xa5, 0x0c, 0x1a, 0x55, 0x1c, 0x01, 0x18, 0x7e, 0x70, 0xbf, 0x62,
+ 0xd0, 0x00, 0x70, 0xbf, 0x53, 0x1e, 0x64, 0x5c, 0x62, 0xd3, 0x00,
+ 0x52, 0x8d, 0x62, 0xd3, 0x00, 0x13, 0x63, 0x62, 0xd3, 0x00, 0x54,
+ 0x67, 0x62, 0xd3, 0x00, 0x52, 0x8c, 0x62, 0xd3, 0x00, 0x1b, 0x62,
+ 0x62, 0xd3, 0x00, 0x54, 0x66, 0x48, 0x66, 0x80, 0xb0, 0x33, 0x3d,
+ 0x66, 0x00, 0xb0, 0x7b, 0x51, 0x0d, 0x3b, 0x67,
+ 0xc0, 0x75, 0x52, 0x67, 0x58, 0x1e, 0x01, 0x00, 0x6d, 0x62, 0xd3, 0x00,
+ 0x05, 0x40, 0xc0, 0x09, 0x51, 0x0f, 0x3b, 0x40, 0xd0, 0x12, 0xa0,
+ 0x10, 0x56, 0x40, 0x00, 0x5b, 0x64, 0x5c, 0x62, 0xd3, 0x00, 0x07,
+ 0x63, 0x01, 0x0f, 0x62, 0x00, 0x80, 0x41, 0x3d, 0x66, 0xff, 0xb0,
+ 0x09, 0x50, 0xff, 0x12, 0x0e, 0x3b, 0x67, 0xc0, 0x20, 0x62, 0xd3,
+ 0x00, 0x56, 0x67, 0x00, 0x56, 0x66, 0x00, 0x5b,
+ 0x67, 0x5c, 0x62, 0xd3, 0x00, 0x52, 0x47, 0x78, 0xd0, 0x03, 0x50, 0x00,
+ 0x54, 0x47, 0x08, 0x5b, 0x64, 0x5c, 0x18, 0xb0, 0x2c, 0x62, 0xd3,
+ 0x00, 0x52, 0x8d, 0x62, 0xd3, 0x00, 0x54, 0x63, 0x62, 0xd3, 0x00,
+ 0x52, 0x8c, 0x62, 0xd3, 0x00, 0x54, 0x62, 0x51, 0x1e, 0x64, 0x5c,
+ 0x62, 0xd3, 0x00, 0x56, 0x67, 0x00, 0x56, 0x66, 0x00, 0x5b, 0x67,
+ 0x5c, 0x62, 0xd3, 0x00, 0x51, 0x12, 0x54, 0x47,
+ 0x70, 0x3f, 0x71, 0xc0, 0x7f, 0x70, 0xbf, 0x62, 0xd0, 0x00, 0x70, 0xbf,
+ 0x08, 0x5c, 0x62, 0xd3, 0x00, 0x52, 0x42, 0x53, 0x19, 0x55, 0x18,
+ 0x00, 0x18, 0x08, 0x90, 0x7e, 0x62, 0xd3, 0x00, 0x23, 0x44, 0xb0,
+ 0x2c, 0x51, 0x10, 0x04, 0x19, 0x0e, 0x18, 0x00, 0x18, 0x64, 0x5c,
+ 0x62, 0xd3, 0x00, 0x52, 0x67, 0x12, 0x19, 0x52, 0x66, 0x1a, 0x18,
+ 0xc0, 0x39, 0x5b, 0x67, 0x5c, 0x62, 0xd3, 0x00,
+ 0x52, 0x45, 0x78, 0x54, 0x45, 0x08, 0x5b, 0x64, 0x5c, 0x18, 0xb0, 0x3e,
+ 0x80, 0x18, 0x51, 0x10, 0x14, 0x19, 0x1e, 0x18, 0x00, 0x18, 0x64,
+ 0x5c, 0x62, 0xd3, 0x00, 0x52, 0x67, 0x12, 0x19, 0x52, 0x66, 0x1a,
+ 0x18, 0xc0, 0x0e, 0x5b, 0x67, 0x90, 0x31, 0x62, 0xd3, 0x00, 0x2d,
+ 0x44, 0x50, 0x01, 0x80, 0x24, 0x5b, 0x67, 0x08, 0x90, 0x23, 0x73,
+ 0x62, 0xd3, 0x00, 0x25, 0x44, 0x62, 0xd3, 0x00,
+ 0x20, 0x51, 0x11, 0x54, 0x45, 0x50, 0x00, 0x80, 0x0d, 0x5b, 0x67, 0x90,
+ 0x0d, 0x73, 0x62, 0xd3, 0x00, 0x25, 0x44, 0x50, 0x00, 0x70, 0x3f,
+ 0x71, 0xc0, 0x7f, 0x08, 0x67, 0x67, 0x67, 0x5c, 0x18, 0x21, 0x07,
+ 0xf0, 0x01, 0x7f, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80,
+ 0x70, 0xbf, 0x70, 0xbf, 0x62, 0xd3, 0x00, 0x50, 0x02, 0x78, 0x08,
+ 0x5c, 0x56, 0x42, 0x1e, 0x18, 0x78, 0xdf, 0xf8,
+ 0x70, 0x3f, 0x71, 0xc0, 0x7f, 0x08, 0x91, 0xb2, 0x70, 0xbf, 0x18, 0x08,
+ 0x64, 0x5c, 0x62, 0xd3, 0x00, 0x52, 0x8d, 0x62, 0xd3, 0x00, 0x54,
+ 0x63, 0x62, 0xd3, 0x00, 0x52, 0x8c, 0x62, 0xd3, 0x00, 0x54, 0x62,
+ 0x18, 0x78, 0xdf, 0xe0, 0x70, 0x3f, 0x71, 0xc0, 0x7f, 0x62, 0xd0,
+ 0x00, 0x55, 0x14, 0x00, 0x50, 0x02, 0x78, 0x08, 0x9f, 0x0e, 0x39,
+ 0x01, 0xb0, 0x04, 0x55, 0x14, 0x01, 0x18, 0x78,
+ 0xdf, 0xf3, 0x51, 0x14, 0x7f, 0x50, 0x02, 0x78, 0x08, 0x9e, 0x3e, 0x18,
+ 0x78, 0xdf, 0xfa, 0x7f, 0x98, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95,
+ 0x96, 0x97, 0xd8, 0xd9, 0xda, 0xdb, 0xdf, 0x00, 0x01, 0x03, 0x07,
+ 0x0f, 0x1f, 0x3f, 0x7f, 0xff, 0x70, 0xbf, 0x62, 0xd0, 0x00, 0x62,
+ 0xd3, 0x00, 0x57, 0x00, 0x56, 0x44, 0x00, 0x79, 0xdf, 0xfb, 0x62,
+ 0xd3, 0x00, 0x57, 0x01, 0x50, 0x03, 0x54, 0x45,
+ 0x79, 0xdf, 0xfc, 0x62, 0xd3, 0x00, 0x50, 0x14, 0x57, 0x01, 0x54, 0x47,
+ 0x79, 0xdf, 0xfc, 0x70, 0x3f, 0x71, 0xc0, 0x55, 0x0d, 0x19, 0x55,
+ 0x0e, 0x05, 0x55, 0x0f, 0x14, 0x55, 0x10, 0x01, 0x55, 0x11, 0x03,
+ 0x55, 0x12, 0x14, 0x55, 0x22, 0x04, 0x55, 0x1f, 0x14, 0x43, 0x61,
+ 0x0d, 0x57, 0x00, 0x50, 0x02, 0x90, 0xae, 0x50, 0x04, 0xff, 0x98,
+ 0x29, 0x00, 0x60, 0xa9, 0x62, 0xa0, 0x08, 0x43,
+ 0xa2, 0x04, 0x62, 0xa3, 0x70, 0x43, 0x7a, 0x01, 0x43, 0xaa, 0x02, 0x43,
+ 0xdf, 0x01, 0x50, 0x01, 0x57, 0x09, 0x90, 0x20, 0x90, 0x55, 0x57,
+ 0x01, 0x50, 0xb3, 0x91, 0x5d, 0x50, 0x01, 0x57, 0x0e, 0x90, 0x12,
+ 0x90, 0x47, 0x7f, 0x53, 0x22, 0xff, 0x67, 0x29, 0x00, 0x60, 0xa9,
+ 0x51, 0x21, 0x58, 0x20, 0x90, 0x01, 0x7f, 0x62, 0xd0, 0x00, 0x21,
+ 0x03, 0x53, 0x21, 0x64, 0x64, 0x64, 0x64, 0x64,
+ 0x29, 0x80, 0x60, 0xa1, 0x5b, 0x78, 0x21, 0x0f, 0x29, 0x08, 0x74, 0x53,
+ 0x20, 0x12, 0x22, 0x02, 0x21, 0x5c, 0x50, 0x00, 0x53, 0x1d, 0x53,
+ 0x23, 0x29, 0x01, 0x79, 0xa0, 0x08, 0x64, 0x6b, 0x1d, 0x6b, 0x23,
+ 0x8f, 0xf5, 0x60, 0xb5, 0x51, 0x1d, 0x60, 0xb4, 0x7f, 0x50, 0x02,
+ 0x78, 0x08, 0x90, 0x28, 0x90, 0x5a, 0x18, 0x78, 0xdf, 0xf8, 0x7f,
+ 0x41, 0xdf, 0xfe, 0x71, 0x10, 0x41, 0xd8, 0xfd,
+ 0x70, 0xef, 0x41, 0x61, 0xf3, 0x41, 0xa2, 0xfb, 0x41, 0xa0, 0xf7, 0x62,
+ 0xa3, 0x00, 0x62, 0xa9, 0x00, 0x41, 0xaa, 0xfd, 0x7f, 0x02, 0x08,
+ 0x02, 0x20, 0x64, 0x5c, 0xff, 0xf8, 0x4b, 0x74, 0xff, 0xf4, 0x7f,
+ 0x62, 0xd0, 0x00, 0x53, 0x1d, 0x10, 0x5b, 0x64, 0x64, 0x5c, 0x71,
+ 0x10, 0x5e, 0x01, 0x2a, 0x1d, 0x61, 0x01, 0x36, 0x1d, 0xff, 0x5e,
+ 0x00, 0x22, 0x1d, 0x61, 0x00, 0x36, 0x1d, 0xff,
+ 0x18, 0xfe, 0xd6, 0x5c, 0x5e, 0x00, 0x2a, 0x1d, 0x61, 0x00, 0x70, 0xef,
+ 0x7f, 0x62, 0xd0, 0x00, 0x10, 0x73, 0x53, 0x1d, 0x71, 0x10, 0x5b,
+ 0xfe, 0xc0, 0x5c, 0x5e, 0x00, 0x22, 0x1d, 0x61, 0x00, 0x70, 0xef,
+ 0x18, 0x64, 0x64, 0x5c, 0x71, 0x10, 0x5e, 0x01, 0x22, 0x1d, 0x61,
+ 0x01, 0x36, 0x1d, 0xff, 0x5e, 0x00, 0x2a, 0x1d, 0x61, 0x00, 0x70,
+ 0xef, 0x7f, 0x70, 0xbf, 0x62, 0xd0, 0x00, 0x53,
+ 0x1e, 0x50, 0x00, 0x53, 0x1a, 0x53, 0x1b, 0x51, 0x1e, 0x5c, 0x62, 0xd3,
+ 0x00, 0x52, 0x24, 0x53, 0x1f, 0x43, 0xa0, 0x01, 0x51, 0x1f, 0x60,
+ 0xfd, 0x41, 0xa3, 0xdf, 0x51, 0x1e, 0x9f, 0x7a, 0x9f, 0x81, 0x58,
+ 0x23, 0x55, 0x1c, 0x00, 0x62, 0xa5, 0x00, 0x62, 0xa4, 0x00, 0x43,
+ 0xb3, 0x01, 0x51, 0x1c, 0xaf, 0xfd, 0x79, 0xdf, 0xee, 0x51, 0x1e,
+ 0x9f, 0x5f, 0x9f, 0x91, 0x43, 0xa3, 0x20, 0x41,
+ 0xa0, 0xfe, 0x62, 0xfd, 0x00, 0x50, 0xff, 0x4c, 0x1b, 0x14, 0x1b, 0x51,
+ 0x20, 0x11, 0x08, 0xfe, 0x4d, 0x4c, 0x1a, 0x1c, 0x1a, 0xd0, 0x07,
+ 0x55, 0x1a, 0x00, 0x55, 0x1b, 0x00, 0x51, 0x1e, 0x64, 0x5c, 0x62,
+ 0xd3, 0x00, 0x51, 0x1b, 0x54, 0x8d, 0x51, 0x1a, 0x54, 0x8c, 0x70,
+ 0x3f, 0x71, 0xc0, 0x7f, 0x08, 0x9f, 0x86, 0x18, 0x78, 0xdf, 0xfa,
+ 0x7f, 0x70, 0xbf, 0x62, 0xd0, 0x00, 0x53, 0x27,
+ 0x5a, 0x26, 0x55, 0x1e, 0x01, 0x62, 0xd3, 0x00, 0x58, 0x1e, 0x56, 0x24,
+ 0x80, 0x55, 0x29, 0x08, 0x55, 0x28, 0x80, 0x51, 0x1e, 0x9f, 0x63,
+ 0x51, 0x1e, 0x9f, 0x5f, 0x70, 0xbf, 0x58, 0x1e, 0x62, 0xd3, 0x00,
+ 0x51, 0x1b, 0x3a, 0x27, 0x51, 0x1a, 0x1a, 0x26, 0xd0, 0x06, 0x51,
+ 0x28, 0x73, 0x25, 0x24, 0x68, 0x28, 0x26, 0x28, 0x7f, 0x51, 0x28,
+ 0x2d, 0x24, 0x7a, 0x29, 0xbf, 0xd6, 0x7a, 0x1e,
+ 0xdf, 0xc4, 0x70, 0x3f, 0x71, 0xc0, 0x7f, 0x62, 0xd0, 0x00, 0x51, 0xa5,
+ 0x11, 0xdc, 0x51, 0xa4, 0x19, 0x05, 0xd0, 0x12, 0x7c, 0x16, 0xe7,
+ 0x39, 0x0f, 0xa0, 0x16, 0x62, 0xd0, 0x00, 0x76, 0xa5, 0x0e, 0xa4,
+ 0x00, 0x80, 0x0c, 0x62, 0xd0, 0x00, 0x55, 0xa5, 0x00, 0x55, 0xa4,
+ 0x00, 0x90, 0xbe, 0x7f, 0x62, 0xd0, 0x00, 0x3c, 0xaf, 0xf0, 0xd0,
+ 0x03, 0x76, 0xaf, 0x62, 0xd0, 0x00, 0x51, 0x2f,
+ 0x21, 0x7f, 0x53, 0x51, 0x51, 0xaf, 0x3a, 0x51, 0xb0, 0x55, 0x7c, 0x16,
+ 0xe7, 0x62, 0xd0, 0x00, 0x53, 0xb0, 0x3c, 0xb0, 0x0f, 0xa0, 0x3d,
+ 0x3c, 0xab, 0x00, 0xb0, 0x1c, 0x55, 0x94, 0x00, 0x55, 0x95, 0x00,
+ 0x51, 0xb0, 0x53, 0x50, 0x55, 0x51, 0x00, 0x06, 0x50, 0x94, 0x0e,
+ 0x51, 0x00, 0x51, 0x51, 0x60, 0xd5, 0x50, 0x08, 0x3f, 0x50, 0x62,
+ 0xd0, 0x00, 0x55, 0xa7, 0x00, 0x3c, 0xae, 0x00,
+ 0xb0, 0x0a, 0x7c, 0x17, 0x7c, 0x62, 0xd0, 0x00, 0x55, 0xae, 0x01, 0x62,
+ 0xd0, 0x00, 0x55, 0xa6, 0x03, 0x80, 0x0c, 0x62, 0xd0, 0x00, 0x3c,
+ 0xa9, 0x00, 0xb0, 0x04, 0x55, 0xa9, 0x01, 0x7f, 0x62, 0xd0, 0x00,
+ 0x55, 0xa5, 0x00, 0x55, 0xa4, 0x00, 0x3c, 0xae, 0x01, 0xb0, 0x33,
+ 0x7a, 0xa6, 0x3c, 0xa6, 0x00, 0xb0, 0x3a, 0x3c, 0xae, 0x01, 0xb0,
+ 0x0a, 0x7c, 0x18, 0x0f, 0x62, 0xd0, 0x00, 0x55,
+ 0xae, 0x00, 0x62, 0xd0, 0x00, 0x3c, 0xab, 0x00, 0xb0, 0x0e, 0x51, 0xb0,
+ 0x53, 0x50, 0x55, 0x51, 0x00, 0x06, 0x50, 0x94, 0x7c, 0x1d, 0xb9,
+ 0x62, 0xd0, 0x00, 0x55, 0xaf, 0x00, 0x80, 0x0f, 0x62, 0xd0, 0x00,
+ 0x3c, 0xa9, 0x01, 0xb0, 0x07, 0x55, 0xa9, 0x00, 0x55, 0xaf, 0x00,
+ 0x7f, 0x10, 0x4f, 0x38, 0x16, 0x62, 0xd0, 0x00, 0x3c, 0xaa, 0x00,
+ 0xb0, 0x05, 0x51, 0x9c, 0x53, 0x24, 0x56, 0x0d,
+ 0x00, 0x80, 0xff, 0x56, 0x00, 0x00, 0x80, 0xf3, 0x62, 0xd0, 0x00, 0x3c,
+ 0xaa, 0x00, 0xb0, 0x1b, 0x52, 0x00, 0x53, 0x50, 0x55, 0x51, 0x00,
+ 0x06, 0x50, 0x9c, 0x7c, 0x1d, 0x06, 0x52, 0x00, 0x53, 0x4e, 0x55,
+ 0x4f, 0x00, 0x06, 0x4e, 0x24, 0x7c, 0x1d, 0xa1, 0x10, 0x52, 0x00,
+ 0x7c, 0x09, 0x3a, 0x20, 0x10, 0x7c, 0x05, 0xc5, 0x62, 0xd0, 0x00,
+ 0x20, 0x39, 0x00, 0xbf, 0xee, 0x3d, 0x00, 0x00,
+ 0xb0, 0x12, 0x7c, 0x1c, 0x60, 0x7c, 0x1c, 0x95, 0x55, 0x4c, 0x01, 0x7c,
+ 0x1c, 0x2a, 0x7c, 0x1c, 0x88, 0x80, 0x80, 0x3d, 0x00, 0x01, 0xb0,
+ 0x2a, 0x62, 0xd0, 0x00, 0x7c, 0x1c, 0x60, 0x7c, 0x1c, 0x95, 0x65,
+ 0x4e, 0x6b, 0x4f, 0x50, 0x00, 0x08, 0x50, 0x05, 0x08, 0x51, 0x4f,
+ 0x08, 0x51, 0x4e, 0x08, 0x7c, 0x1b, 0xe6, 0x18, 0x53, 0x4e, 0x18,
+ 0x53, 0x4f, 0x38, 0xfe, 0x7c, 0x1c, 0x88, 0x80,
+ 0x52, 0x3d, 0x00, 0x02, 0xb0, 0x21, 0x62, 0xd0, 0x00, 0x7c, 0x1c, 0x60,
+ 0x7c, 0x1c, 0x95, 0x55, 0x4c, 0x03, 0x7c, 0x1c, 0x2a, 0x70, 0xfb,
+ 0x6e, 0x4f, 0x6e, 0x4e, 0x70, 0xfb, 0x6e, 0x4f, 0x6e, 0x4e, 0x7c,
+ 0x1c, 0x88, 0x80, 0x2d, 0x3d, 0x00, 0x03, 0xb0, 0x28, 0x62, 0xd0,
+ 0x00, 0x7c, 0x1c, 0x60, 0x7c, 0x1c, 0x95, 0x65, 0x4e, 0x6b, 0x4f,
+ 0x50, 0x00, 0x08, 0x50, 0x05, 0x08, 0x51, 0x4f,
+ 0x08, 0x51, 0x4e, 0x08, 0x7c, 0x1b, 0xe6, 0x18, 0x53, 0x4e, 0x18, 0x53,
+ 0x4f, 0x38, 0xfe, 0x7c, 0x1c, 0x88, 0x7c, 0x1c, 0x6c, 0x7c, 0x1c,
+ 0xc1, 0x52, 0x0d, 0x7c, 0x1d, 0xad, 0x02, 0x50, 0x53, 0x50, 0x51,
+ 0x4f, 0x0a, 0x51, 0x53, 0x51, 0x7c, 0x1d, 0x6f, 0x06, 0x4e, 0x8c,
+ 0x0e, 0x4f, 0x00, 0x51, 0x4f, 0x7c, 0x1c, 0xab, 0x7c, 0x1c, 0x88,
+ 0x77, 0x00, 0x3d, 0x00, 0x02, 0xcf, 0x0a, 0x77,
+ 0x0d, 0x3d, 0x0d, 0x03, 0xce, 0xfe, 0x56, 0x00, 0x00, 0x81, 0x06, 0x7c,
+ 0x1c, 0x6c, 0x7c, 0x1c, 0xc1, 0x51, 0x51, 0x60, 0xd4, 0x3e, 0x50,
+ 0x54, 0x0e, 0x3e, 0x50, 0x54, 0x0f, 0x52, 0x00, 0x53, 0x50, 0x55,
+ 0x51, 0x00, 0x55, 0x4e, 0x06, 0x55, 0x4f, 0x00, 0x55, 0x4b, 0x00,
+ 0x55, 0x4a, 0x00, 0x3c, 0x4f, 0x00, 0xb0, 0x06, 0x3c, 0x4e, 0x00,
+ 0xa0, 0x1a, 0x70, 0xfb, 0x6e, 0x4f, 0x6e, 0x4e,
+ 0xd0, 0x0c, 0x62, 0xd0, 0x00, 0x51, 0x50, 0x04, 0x4b, 0x51, 0x51, 0x0c,
+ 0x4a, 0x65, 0x50, 0x6b, 0x51, 0x8f, 0xde, 0x5f, 0x50, 0x4b, 0x5f,
+ 0x51, 0x4a, 0x62, 0xd0, 0x00, 0x5a, 0x4e, 0x06, 0x4e, 0x03, 0x51,
+ 0x4e, 0x04, 0x50, 0x0e, 0x51, 0x03, 0x51, 0x51, 0x60, 0xd4, 0x3e,
+ 0x50, 0x54, 0x10, 0x3e, 0x50, 0x54, 0x11, 0x52, 0x00, 0x53, 0x50,
+ 0x55, 0x51, 0x00, 0x55, 0x4e, 0x06, 0x55, 0x4f,
+ 0x00, 0x55, 0x4b, 0x00, 0x55, 0x4a, 0x00, 0x3c, 0x4f, 0x00, 0xb0, 0x06,
+ 0x3c, 0x4e, 0x00, 0xa0, 0x1a, 0x70, 0xfb, 0x6e, 0x4f, 0x6e, 0x4e,
+ 0xd0, 0x0c, 0x62, 0xd0, 0x00, 0x51, 0x50, 0x04, 0x4b, 0x51, 0x51,
+ 0x0c, 0x4a, 0x65, 0x50, 0x6b, 0x51, 0x8f, 0xde, 0x5f, 0x50, 0x4b,
+ 0x5f, 0x51, 0x4a, 0x62, 0xd0, 0x00, 0x5a, 0x4e, 0x06, 0x4e, 0x05,
+ 0x51, 0x4e, 0x04, 0x50, 0x0e, 0x51, 0x03, 0x51,
+ 0x51, 0x60, 0xd4, 0x3e, 0x50, 0x54, 0x12, 0x3e, 0x50, 0x54, 0x13, 0x50,
+ 0x03, 0x08, 0x5a, 0x50, 0x06, 0x50, 0x0e, 0x08, 0x51, 0x50, 0x08,
+ 0x7c, 0x1a, 0x9f, 0x38, 0xfd, 0x62, 0xd0, 0x00, 0x51, 0x50, 0x54,
+ 0x15, 0x51, 0x51, 0x54, 0x14, 0x7c, 0x1c, 0x60, 0x51, 0x50, 0x01,
+ 0x8c, 0x7c, 0x1d, 0x1d, 0x06, 0x50, 0x62, 0x7c, 0x1d, 0x5f, 0x7c,
+ 0x1c, 0x60, 0x51, 0x50, 0x01, 0x6a, 0x7c, 0x1d,
+ 0x1d, 0x51, 0x50, 0x01, 0x72, 0x7c, 0x1d, 0x1d, 0x06, 0x50, 0x7a, 0x7c,
+ 0x1d, 0x5f, 0x77, 0x00, 0x3d, 0x00, 0x02, 0xce, 0xf7, 0x38, 0xea,
+ 0x20, 0x7f, 0x10, 0x4f, 0x38, 0x16, 0x10, 0x57, 0x09, 0x50, 0x01,
+ 0x7c, 0x08, 0x74, 0x20, 0x62, 0xd0, 0x00, 0x50, 0x01, 0x10, 0x08,
+ 0x57, 0x92, 0x28, 0x53, 0x51, 0x18, 0x75, 0x09, 0x00, 0x28, 0x53,
+ 0x50, 0x20, 0x10, 0x51, 0x51, 0x08, 0x51, 0x50,
+ 0x20, 0x7c, 0x09, 0xb9, 0x20, 0x10, 0x57, 0x0e, 0x50, 0x01, 0x7c, 0x08,
+ 0x74, 0x20, 0x62, 0xd0, 0x00, 0x3c, 0xaa, 0x01, 0xb0, 0x0b, 0x51,
+ 0x24, 0x53, 0x30, 0x51, 0x25, 0x53, 0x31, 0x80, 0x0c, 0x62, 0xd0,
+ 0x00, 0x51, 0x9c, 0x53, 0x24, 0x51, 0x9d, 0x53, 0x25, 0x10, 0x50,
+ 0x00, 0x7c, 0x09, 0x3a, 0x20, 0x56, 0x0d, 0x00, 0x80, 0xff, 0x56,
+ 0x00, 0x00, 0x80, 0xf3, 0x62, 0xd0, 0x00, 0x3c,
+ 0xaa, 0x00, 0xb0, 0x1b, 0x52, 0x00, 0x53, 0x50, 0x55, 0x51, 0x00, 0x06,
+ 0x50, 0x9c, 0x7c, 0x1d, 0x06, 0x52, 0x00, 0x53, 0x4e, 0x55, 0x4f,
+ 0x00, 0x06, 0x4e, 0x24, 0x7c, 0x1d, 0xa1, 0x10, 0x52, 0x00, 0x7c,
+ 0x09, 0x3a, 0x20, 0x10, 0x7c, 0x05, 0xc5, 0x62, 0xd0, 0x00, 0x20,
+ 0x39, 0x00, 0xbf, 0xee, 0x3d, 0x00, 0x00, 0xb0, 0x12, 0x7c, 0x1c,
+ 0x60, 0x7c, 0x1c, 0x95, 0x55, 0x4c, 0x01, 0x7c,
+ 0x1c, 0x2a, 0x7c, 0x1c, 0x88, 0x80, 0x80, 0x3d, 0x00, 0x01, 0xb0, 0x2a,
+ 0x62, 0xd0, 0x00, 0x7c, 0x1c, 0x60, 0x7c, 0x1c, 0x95, 0x65, 0x4e,
+ 0x6b, 0x4f, 0x50, 0x00, 0x08, 0x50, 0x05, 0x08, 0x51, 0x4f, 0x08,
+ 0x51, 0x4e, 0x08, 0x7c, 0x1b, 0xe6, 0x18, 0x53, 0x4e, 0x18, 0x53,
+ 0x4f, 0x38, 0xfe, 0x7c, 0x1c, 0x88, 0x80, 0x52, 0x3d, 0x00, 0x02,
+ 0xb0, 0x21, 0x62, 0xd0, 0x00, 0x7c, 0x1c, 0x60,
+ 0x7c, 0x1c, 0x95, 0x55, 0x4c, 0x03, 0x7c, 0x1c, 0x2a, 0x70, 0xfb, 0x6e,
+ 0x4f, 0x6e, 0x4e, 0x70, 0xfb, 0x6e, 0x4f, 0x6e, 0x4e, 0x7c, 0x1c,
+ 0x88, 0x80, 0x2d, 0x3d, 0x00, 0x03, 0xb0, 0x28, 0x62, 0xd0, 0x00,
+ 0x7c, 0x1c, 0x60, 0x7c, 0x1c, 0x95, 0x65, 0x4e, 0x6b, 0x4f, 0x50,
+ 0x00, 0x08, 0x50, 0x05, 0x08, 0x51, 0x4f, 0x08, 0x51, 0x4e, 0x08,
+ 0x7c, 0x1b, 0xe6, 0x18, 0x53, 0x4e, 0x18, 0x53,
+ 0x4f, 0x38, 0xfe, 0x7c, 0x1c, 0x88, 0x7c, 0x1c, 0x6c, 0x7c, 0x1c, 0xc1,
+ 0x52, 0x0d, 0x7c, 0x1d, 0xad, 0x02, 0x50, 0x53, 0x50, 0x51, 0x4f,
+ 0x0a, 0x51, 0x53, 0x51, 0x7c, 0x1d, 0x6f, 0x06, 0x4e, 0x8c, 0x0e,
+ 0x4f, 0x00, 0x51, 0x4f, 0x7c, 0x1c, 0xab, 0x7c, 0x1c, 0x88, 0x77,
+ 0x00, 0x3d, 0x00, 0x02, 0xcf, 0x0a, 0x77, 0x0d, 0x3d, 0x0d, 0x03,
+ 0xce, 0xfe, 0x56, 0x00, 0x00, 0x81, 0x06, 0x7c,
+ 0x1c, 0x6c, 0x7c, 0x1c, 0xc1, 0x51, 0x51, 0x60, 0xd4, 0x3e, 0x50, 0x54,
+ 0x0e, 0x3e, 0x50, 0x54, 0x0f, 0x52, 0x00, 0x53, 0x50, 0x55, 0x51,
+ 0x00, 0x55, 0x4e, 0x06, 0x55, 0x4f, 0x00, 0x55, 0x4b, 0x00, 0x55,
+ 0x4a, 0x00, 0x3c, 0x4f, 0x00, 0xb0, 0x06, 0x3c, 0x4e, 0x00, 0xa0,
+ 0x1a, 0x70, 0xfb, 0x6e, 0x4f, 0x6e, 0x4e, 0xd0, 0x0c, 0x62, 0xd0,
+ 0x00, 0x51, 0x50, 0x04, 0x4b, 0x51, 0x51, 0x0c,
+ 0x4a, 0x65, 0x50, 0x6b, 0x51, 0x8f, 0xde, 0x5f, 0x50, 0x4b, 0x5f, 0x51,
+ 0x4a, 0x62, 0xd0, 0x00, 0x5a, 0x4e, 0x06, 0x4e, 0x03, 0x51, 0x4e,
+ 0x04, 0x50, 0x0e, 0x51, 0x03, 0x51, 0x51, 0x60, 0xd4, 0x3e, 0x50,
+ 0x54, 0x10, 0x3e, 0x50, 0x54, 0x11, 0x52, 0x00, 0x53, 0x50, 0x55,
+ 0x51, 0x00, 0x55, 0x4e, 0x06, 0x55, 0x4f, 0x00, 0x55, 0x4b, 0x00,
+ 0x55, 0x4a, 0x00, 0x3c, 0x4f, 0x00, 0xb0, 0x06,
+ 0x3c, 0x4e, 0x00, 0xa0, 0x1a, 0x70, 0xfb, 0x6e, 0x4f, 0x6e, 0x4e, 0xd0,
+ 0x0c, 0x62, 0xd0, 0x00, 0x51, 0x50, 0x04, 0x4b, 0x51, 0x51, 0x0c,
+ 0x4a, 0x65, 0x50, 0x6b, 0x51, 0x8f, 0xde, 0x5f, 0x50, 0x4b, 0x5f,
+ 0x51, 0x4a, 0x62, 0xd0, 0x00, 0x5a, 0x4e, 0x06, 0x4e, 0x05, 0x51,
+ 0x4e, 0x04, 0x50, 0x0e, 0x51, 0x03, 0x51, 0x51, 0x60, 0xd4, 0x3e,
+ 0x50, 0x54, 0x12, 0x3e, 0x50, 0x54, 0x13, 0x50,
+ 0x03, 0x08, 0x5a, 0x50, 0x06, 0x50, 0x0e, 0x08, 0x51, 0x50, 0x08, 0x7c,
+ 0x1a, 0x9f, 0x38, 0xfd, 0x62, 0xd0, 0x00, 0x51, 0x50, 0x54, 0x15,
+ 0x51, 0x51, 0x54, 0x14, 0x7c, 0x1c, 0x60, 0x51, 0x50, 0x01, 0x8c,
+ 0x7c, 0x1d, 0x1d, 0x06, 0x50, 0x62, 0x7c, 0x1d, 0x5f, 0x7c, 0x1c,
+ 0x60, 0x51, 0x50, 0x01, 0x6a, 0x7c, 0x1d, 0x1d, 0x51, 0x50, 0x01,
+ 0x72, 0x7c, 0x1d, 0x1d, 0x06, 0x50, 0x7a, 0x7c,
+ 0x1d, 0x5f, 0x77, 0x00, 0x3d, 0x00, 0x02, 0xce, 0xf7, 0x56, 0x00, 0x00,
+ 0x80, 0x19, 0x7c, 0x1c, 0x6c, 0x06, 0x50, 0x24, 0x7c, 0x1d, 0x06,
+ 0x52, 0x00, 0x53, 0x4e, 0x55, 0x4f, 0x00, 0x06, 0x4e, 0x30, 0x7c,
+ 0x1d, 0xa1, 0x77, 0x00, 0x3d, 0x00, 0x02, 0xcf, 0xe4, 0x38, 0xea,
+ 0x20, 0x7f, 0x10, 0x4f, 0x38, 0x02, 0x62, 0xd0, 0x00, 0x52, 0xfc,
+ 0x01, 0x02, 0x53, 0x50, 0x52, 0xfb, 0x09, 0x00,
+ 0x7c, 0x1d, 0x12, 0x52, 0xfc, 0x01, 0x04, 0x53, 0x4e, 0x52, 0xfb, 0x7c,
+ 0x1c, 0xb6, 0x12, 0x50, 0x51, 0x4f, 0x1a, 0x51, 0xc0, 0x6f, 0x52,
+ 0xfc, 0x53, 0x50, 0x52, 0xfb, 0x7c, 0x1d, 0x12, 0x52, 0xfc, 0x01,
+ 0x02, 0x53, 0x4e, 0x52, 0xfb, 0x7c, 0x1c, 0xb6, 0x12, 0x50, 0x51,
+ 0x4f, 0x1a, 0x51, 0xc0, 0x10, 0x52, 0xfc, 0x01, 0x02, 0x7c, 0x1d,
+ 0x3b, 0x54, 0x00, 0x3e, 0x50, 0x54, 0x01, 0x80,
+ 0xb3, 0x62, 0xd0, 0x00, 0x52, 0xfc, 0x01, 0x04, 0x53, 0x50, 0x52, 0xfb,
+ 0x09, 0x00, 0x7c, 0x1d, 0x12, 0x52, 0xfc, 0x53, 0x4e, 0x52, 0xfb,
+ 0x60, 0xd4, 0x3e, 0x4e, 0x53, 0x4f, 0x3e, 0x4e, 0x12, 0x50, 0x51,
+ 0x4f, 0x1a, 0x51, 0xc0, 0x10, 0x52, 0xfc, 0x01, 0x04, 0x7c, 0x1d,
+ 0x3b, 0x54, 0x00, 0x3e, 0x50, 0x54, 0x01, 0x80, 0x7e, 0x62, 0xd0,
+ 0x00, 0x52, 0xfc, 0x53, 0x50, 0x52, 0xfb, 0x7c,
+ 0x1d, 0x54, 0x80, 0x70, 0x62, 0xd0, 0x00, 0x52, 0xfc, 0x53, 0x50, 0x52,
+ 0xfb, 0x7c, 0x1d, 0x12, 0x52, 0xfc, 0x01, 0x04, 0x53, 0x4e, 0x52,
+ 0xfb, 0x7c, 0x1c, 0xb6, 0x12, 0x50, 0x51, 0x4f, 0x1a, 0x51, 0xc0,
+ 0x10, 0x52, 0xfc, 0x01, 0x04, 0x7c, 0x1d, 0x3b, 0x54, 0x00, 0x3e,
+ 0x50, 0x54, 0x01, 0x80, 0x42, 0x62, 0xd0, 0x00, 0x52, 0xfc, 0x01,
+ 0x02, 0x53, 0x50, 0x52, 0xfb, 0x09, 0x00, 0x7c,
+ 0x1d, 0x12, 0x52, 0xfc, 0x53, 0x4e, 0x52, 0xfb, 0x60, 0xd4, 0x3e, 0x4e,
+ 0x53, 0x4f, 0x3e, 0x4e, 0x12, 0x50, 0x51, 0x4f, 0x1a, 0x51, 0xc0,
+ 0x10, 0x52, 0xfc, 0x01, 0x02, 0x7c, 0x1d, 0x3b, 0x54, 0x00, 0x3e,
+ 0x50, 0x54, 0x01, 0x80, 0x0d, 0x62, 0xd0, 0x00, 0x52, 0xfc, 0x53,
+ 0x50, 0x52, 0xfb, 0x7c, 0x1d, 0x54, 0x62, 0xd0, 0x00, 0x52, 0x01,
+ 0x53, 0x50, 0x52, 0x00, 0x53, 0x51, 0x38, 0xfe,
+ 0x20, 0x7f, 0x10, 0x4f, 0x38, 0x05, 0x62, 0xd0, 0x00, 0x55, 0xb2, 0x00,
+ 0x56, 0x00, 0x00, 0x80, 0xcd, 0x62, 0xd0, 0x00, 0x3c, 0xaa, 0x00,
+ 0xb0, 0x1b, 0x52, 0x00, 0x53, 0x50, 0x55, 0x51, 0x00, 0x06, 0x50,
+ 0x9c, 0x7c, 0x1d, 0x06, 0x52, 0x00, 0x53, 0x4e, 0x55, 0x4f, 0x00,
+ 0x06, 0x4e, 0x24, 0x7c, 0x1d, 0xa1, 0x10, 0x52, 0x00, 0x7c, 0x09,
+ 0x3a, 0x20, 0x10, 0x7c, 0x05, 0xc5, 0x62, 0xd0,
+ 0x00, 0x20, 0x39, 0x00, 0xbf, 0xee, 0x3d, 0x00, 0x00, 0xb0, 0x12, 0x7c,
+ 0x1c, 0x60, 0x7c, 0x1c, 0x95, 0x55, 0x4c, 0x01, 0x7c, 0x1c, 0x2a,
+ 0x7c, 0x1c, 0x88, 0x80, 0x80, 0x3d, 0x00, 0x01, 0xb0, 0x2a, 0x62,
+ 0xd0, 0x00, 0x7c, 0x1c, 0x60, 0x7c, 0x1c, 0x95, 0x65, 0x4e, 0x6b,
+ 0x4f, 0x50, 0x00, 0x08, 0x50, 0x05, 0x08, 0x51, 0x4f, 0x08, 0x51,
+ 0x4e, 0x08, 0x7c, 0x1b, 0xe6, 0x18, 0x53, 0x4e,
+ 0x18, 0x53, 0x4f, 0x38, 0xfe, 0x7c, 0x1c, 0x88, 0x80, 0x52, 0x3d, 0x00,
+ 0x02, 0xb0, 0x21, 0x62, 0xd0, 0x00, 0x7c, 0x1c, 0x60, 0x7c, 0x1c,
+ 0x95, 0x55, 0x4c, 0x03, 0x7c, 0x1c, 0x2a, 0x70, 0xfb, 0x6e, 0x4f,
+ 0x6e, 0x4e, 0x70, 0xfb, 0x6e, 0x4f, 0x6e, 0x4e, 0x7c, 0x1c, 0x88,
+ 0x80, 0x2d, 0x3d, 0x00, 0x03, 0xb0, 0x28, 0x62, 0xd0, 0x00, 0x7c,
+ 0x1c, 0x60, 0x7c, 0x1c, 0x95, 0x65, 0x4e, 0x6b,
+ 0x4f, 0x50, 0x00, 0x08, 0x50, 0x05, 0x08, 0x51, 0x4f, 0x08, 0x51, 0x4e,
+ 0x08, 0x7c, 0x1b, 0xe6, 0x18, 0x53, 0x4e, 0x18, 0x53, 0x4f, 0x38,
+ 0xfe, 0x7c, 0x1c, 0x88, 0x77, 0x00, 0x3d, 0x00, 0x02, 0xcf, 0x30,
+ 0x56, 0x00, 0x00, 0x82, 0x86, 0x62, 0xd0, 0x00, 0x3c, 0xb1, 0x02,
+ 0xa0, 0x9f, 0x7c, 0x1c, 0x60, 0x51, 0x50, 0x01, 0x62, 0x7c, 0x1c,
+ 0x77, 0x06, 0x50, 0x8c, 0x7c, 0x1d, 0x06, 0x7c,
+ 0x1d, 0x2e, 0xd0, 0x16, 0x7c, 0x1c, 0x60, 0x51, 0x50, 0x01, 0x62, 0x7c,
+ 0x1c, 0x77, 0x06, 0x50, 0x8c, 0x7c, 0x1d, 0x06, 0x7c, 0x1d, 0xd2,
+ 0x80, 0x17, 0x62, 0xd0, 0x00, 0x7c, 0x1c, 0x60, 0x51, 0x50, 0x01,
+ 0x8c, 0x7c, 0x1c, 0x77, 0x06, 0x50, 0x62, 0x7c, 0x1d, 0x06, 0x7c,
+ 0x1d, 0xd2, 0x50, 0x90, 0x13, 0x02, 0x50, 0x01, 0x1b, 0x01, 0xc0,
+ 0x4e, 0x62, 0xd0, 0x00, 0x7c, 0x1c, 0x60, 0x51,
+ 0x50, 0x01, 0x7a, 0x7c, 0x1c, 0x77, 0x06, 0x50, 0x8c, 0x7c, 0x1d, 0x06,
+ 0x7c, 0x1d, 0x2e, 0xd0, 0x16, 0x7c, 0x1c, 0x60, 0x51, 0x50, 0x01,
+ 0x7a, 0x7c, 0x1c, 0x77, 0x06, 0x50, 0x8c, 0x7c, 0x1d, 0x06, 0x7c,
+ 0x1d, 0xc5, 0x80, 0x17, 0x62, 0xd0, 0x00, 0x7c, 0x1c, 0x60, 0x51,
+ 0x50, 0x01, 0x8c, 0x7c, 0x1c, 0x77, 0x06, 0x50, 0x7a, 0x7c, 0x1d,
+ 0x06, 0x7c, 0x1d, 0xc5, 0x50, 0x90, 0x13, 0x04,
+ 0x50, 0x01, 0x1b, 0x03, 0xd0, 0x08, 0x62, 0xd0, 0x00, 0x76, 0xb2, 0x81,
+ 0xde, 0x62, 0xd0, 0x00, 0x7c, 0x1c, 0x60, 0x51, 0x50, 0x01, 0x8c,
+ 0x7c, 0x1c, 0x77, 0x06, 0x50, 0x7a, 0x7c, 0x1d, 0x06, 0x7c, 0x1d,
+ 0x2e, 0xd0, 0x5a, 0x7c, 0x1c, 0x60, 0x7c, 0x1c, 0x95, 0x06, 0x4e,
+ 0x01, 0x0e, 0x4f, 0x00, 0x7c, 0x1c, 0x88, 0x7c, 0x1c, 0x60, 0x51,
+ 0x50, 0x01, 0x8c, 0x7c, 0x1c, 0x77, 0x06, 0x50,
+ 0x7a, 0x7c, 0x1d, 0x06, 0x7c, 0x1d, 0x2e, 0xd0, 0xb4, 0x7c, 0x1c, 0x60,
+ 0x7c, 0x1c, 0x95, 0x06, 0x4e, 0x01, 0x0e, 0x4f, 0x00, 0x7c, 0x1c,
+ 0x88, 0x7c, 0x1c, 0x60, 0x51, 0x50, 0x01, 0x8c, 0x7c, 0x1c, 0x77,
+ 0x06, 0x50, 0x7a, 0x7c, 0x1d, 0x06, 0x7c, 0x1d, 0x2e, 0xd0, 0x90,
+ 0x7c, 0x1c, 0x60, 0x7c, 0x1c, 0x95, 0x06, 0x4e, 0x01, 0x0e, 0x4f,
+ 0x00, 0x7c, 0x1c, 0x88, 0x80, 0x7f, 0x62, 0xd0,
+ 0x00, 0x7c, 0x1c, 0x60, 0x51, 0x50, 0x01, 0x8c, 0x7c, 0x1c, 0x77, 0x06,
+ 0x50, 0x7a, 0x7c, 0x1d, 0x06, 0x3e, 0x50, 0x12, 0x4e, 0x51, 0x51,
+ 0x1a, 0x4f, 0xd0, 0x62, 0x7c, 0x1c, 0x60, 0x7c, 0x1c, 0x95, 0x16,
+ 0x4e, 0x01, 0x1e, 0x4f, 0x00, 0x7c, 0x1c, 0x88, 0x7c, 0x1c, 0x60,
+ 0x51, 0x50, 0x01, 0x8c, 0x7c, 0x1c, 0x77, 0x06, 0x50, 0x7a, 0x7c,
+ 0x1d, 0x06, 0x3e, 0x50, 0x12, 0x4e, 0x51, 0x51,
+ 0x1a, 0x4f, 0xd0, 0x39, 0x7c, 0x1c, 0x60, 0x7c, 0x1c, 0x95, 0x16, 0x4e,
+ 0x01, 0x1e, 0x4f, 0x00, 0x7c, 0x1c, 0x88, 0x7c, 0x1c, 0x60, 0x51,
+ 0x50, 0x01, 0x8c, 0x7c, 0x1c, 0x77, 0x06, 0x50, 0x7a, 0x7c, 0x1d,
+ 0x06, 0x3e, 0x50, 0x12, 0x4e, 0x51, 0x51, 0x1a, 0x4f, 0xd0, 0x10,
+ 0x7c, 0x1c, 0x60, 0x7c, 0x1c, 0x95, 0x16, 0x4e, 0x01, 0x1e, 0x4f,
+ 0x00, 0x7c, 0x1c, 0x88, 0x62, 0xd0, 0x00, 0x7c,
+ 0x1c, 0x60, 0x51, 0x50, 0x01, 0x72, 0x7c, 0x1c, 0x77, 0x06, 0x50, 0x6a,
+ 0x0e, 0x51, 0x00, 0x7c, 0x1c, 0x88, 0x7c, 0x1c, 0x60, 0x51, 0x50,
+ 0x01, 0x7a, 0x7c, 0x1c, 0x77, 0x06, 0x50, 0x72, 0x0e, 0x51, 0x00,
+ 0x7c, 0x1c, 0x88, 0x7c, 0x1c, 0x60, 0x51, 0x50, 0x01, 0x8c, 0x7c,
+ 0x1c, 0x77, 0x06, 0x50, 0x7a, 0x0e, 0x51, 0x00, 0x7c, 0x1c, 0x88,
+ 0x10, 0x52, 0x00, 0x7c, 0x06, 0x09, 0x20, 0x62,
+ 0xd0, 0x00, 0x7c, 0x1c, 0x60, 0x51, 0x50, 0x01, 0x8c, 0x7c, 0x1c, 0x77,
+ 0x06, 0x50, 0x62, 0x7c, 0x1d, 0x06, 0x7c, 0x1d, 0x2e, 0xd0, 0x25,
+ 0x52, 0x00, 0x53, 0x50, 0x55, 0x51, 0x00, 0x06, 0x50, 0x98, 0x0e,
+ 0x51, 0x00, 0x51, 0x51, 0x60, 0xd4, 0x3e, 0x50, 0x7a, 0x50, 0x53,
+ 0x4f, 0x06, 0x4f, 0x01, 0x51, 0x51, 0x60, 0xd5, 0x51, 0x4f, 0x3f,
+ 0x50, 0x80, 0x0a, 0x7c, 0x1c, 0x6c, 0x06, 0x50,
+ 0x98, 0x7c, 0x1d, 0xb9, 0x7c, 0x1c, 0x6c, 0x06, 0x50, 0x98, 0x7c, 0x1d,
+ 0x06, 0x50, 0x05, 0x3a, 0x51, 0xd0, 0x58, 0x7c, 0x1c, 0x60, 0x51,
+ 0x50, 0x01, 0x62, 0x53, 0x4e, 0x51, 0x51, 0x09, 0x00, 0x53, 0x4f,
+ 0x06, 0x50, 0x8c, 0x7c, 0x1d, 0x06, 0x3e, 0x50, 0x53, 0x50, 0x51,
+ 0x4f, 0x60, 0xd4, 0x3e, 0x4e, 0x53, 0x4d, 0x3e, 0x4e, 0x16, 0x4e,
+ 0x02, 0x02, 0x50, 0x53, 0x50, 0x51, 0x4d, 0x0a,
+ 0x51, 0x53, 0x51, 0x70, 0xfb, 0x6e, 0x51, 0x6e, 0x50, 0x51, 0x4f, 0x60,
+ 0xd5, 0x51, 0x51, 0x3f, 0x4e, 0x51, 0x50, 0x3f, 0x4e, 0x52, 0x00,
+ 0x53, 0x50, 0x55, 0x51, 0x00, 0x06, 0x50, 0x98, 0x0e, 0x51, 0x00,
+ 0x51, 0x51, 0x60, 0xd5, 0x50, 0x00, 0x3f, 0x50, 0x77, 0x00, 0x3d,
+ 0x00, 0x02, 0xcd, 0x77, 0x62, 0xd0, 0x00, 0x3c, 0xb1, 0x02, 0xb2,
+ 0x20, 0x56, 0x00, 0x00, 0x82, 0x16, 0x62, 0xd0,
+ 0x00, 0x7c, 0x1c, 0x60, 0x51, 0x50, 0x01, 0x8c, 0x7c, 0x1c, 0x77, 0x06,
+ 0x50, 0x38, 0x0e, 0x51, 0x00, 0x7c, 0x1c, 0x88, 0x7c, 0x1c, 0x60,
+ 0x51, 0x50, 0x01, 0x62, 0x7c, 0x1c, 0x77, 0x06, 0x50, 0x3c, 0x0e,
+ 0x51, 0x00, 0x7c, 0x1c, 0x88, 0x97, 0xf7, 0x40, 0x51, 0x50, 0x01,
+ 0x62, 0x7c, 0x1c, 0x77, 0x51, 0x50, 0x01, 0x8c, 0x53, 0x4c, 0x51,
+ 0x51, 0x7c, 0x1d, 0x7b, 0x51, 0x4e, 0x12, 0x4c,
+ 0x51, 0x4f, 0x1a, 0x4d, 0xd0, 0x21, 0x7c, 0x1d, 0x6f, 0x51, 0x4e, 0x01,
+ 0x62, 0x53, 0x4c, 0x51, 0x4f, 0x7c, 0x1d, 0x7b, 0x06, 0x4e, 0x8c,
+ 0x7c, 0x1d, 0x46, 0x12, 0x4c, 0x54, 0x02, 0x51, 0x4f, 0x1a, 0x4d,
+ 0x54, 0x01, 0x80, 0x07, 0x56, 0x02, 0x00, 0x56, 0x01, 0x00, 0x62,
+ 0xd0, 0x00, 0x06, 0x50, 0x34, 0x0e, 0x51, 0x00, 0x51, 0x51, 0x60,
+ 0xd5, 0x52, 0x01, 0x3f, 0x50, 0x52, 0x02, 0x3f,
+ 0x50, 0x3d, 0x00, 0x00, 0xb0, 0x35, 0x97, 0x98, 0x40, 0x51, 0x50, 0x01,
+ 0x8c, 0x97, 0xa8, 0x40, 0x55, 0x4c, 0x01, 0x97, 0x55, 0x40, 0x06,
+ 0x50, 0x38, 0x0e, 0x51, 0x00, 0x97, 0xaa, 0x40, 0x97, 0x7f, 0x40,
+ 0x51, 0x50, 0x01, 0x62, 0x97, 0x8f, 0x40, 0x55, 0x4c, 0x01, 0x97,
+ 0x3c, 0x40, 0x06, 0x50, 0x3c, 0x0e, 0x51, 0x00, 0x97, 0x91, 0x40,
+ 0x80, 0xfb, 0x3d, 0x00, 0x01, 0xb0, 0x44, 0x62,
+ 0xd0, 0x00, 0x97, 0x5c, 0x40, 0x51, 0x50, 0x01, 0x8c, 0x97, 0x6c, 0x40,
+ 0x55, 0x4c, 0x05, 0x97, 0x19, 0x40, 0x70, 0xfb, 0x6e, 0x4f, 0x6e,
+ 0x4e, 0x06, 0x50, 0x38, 0x0e, 0x51, 0x00, 0x97, 0x68, 0x40, 0x97,
+ 0x3d, 0x40, 0x51, 0x50, 0x01, 0x62, 0x97, 0x4d, 0x40, 0x55, 0x4c,
+ 0x05, 0x96, 0xfa, 0x40, 0x70, 0xfb, 0x6e, 0x4f, 0x6e, 0x4e, 0x06,
+ 0x50, 0x3c, 0x0e, 0x51, 0x00, 0x97, 0x49, 0x40,
+ 0x80, 0xb3, 0x3d, 0x00, 0x02, 0xb0, 0x68, 0x62, 0xd0, 0x00, 0x97, 0x14,
+ 0x40, 0x51, 0x50, 0x01, 0x8c, 0x97, 0x24, 0x40, 0x55, 0x4c, 0x03,
+ 0x96, 0xd1, 0x40, 0x50, 0x00, 0x08, 0x50, 0x03, 0x08, 0x51, 0x4f,
+ 0x08, 0x51, 0x4e, 0x08, 0x7c, 0x1b, 0xe6, 0x18, 0x53, 0x4e, 0x18,
+ 0x53, 0x4f, 0x38, 0xfe, 0x06, 0x50, 0x38, 0x0e, 0x51, 0x00, 0x97,
+ 0x0f, 0x40, 0x96, 0xe4, 0x40, 0x51, 0x50, 0x01,
+ 0x62, 0x96, 0xf4, 0x40, 0x65, 0x4e, 0x6b, 0x4f, 0x65, 0x4e, 0x6b, 0x4f,
+ 0x50, 0x00, 0x08, 0x50, 0x03, 0x08, 0x51, 0x4f, 0x08, 0x51, 0x4e,
+ 0x08, 0x7c, 0x1b, 0xe6, 0x18, 0x53, 0x4e, 0x18, 0x53, 0x4f, 0x38,
+ 0xfe, 0x06, 0x50, 0x3c, 0x0e, 0x51, 0x00, 0x96, 0xdd, 0x40, 0x80,
+ 0x47, 0x3d, 0x00, 0x03, 0xb0, 0x42, 0x62, 0xd0, 0x00, 0x96, 0xa8,
+ 0x40, 0x51, 0x50, 0x01, 0x8c, 0x96, 0xb8, 0x40,
+ 0x55, 0x4c, 0x05, 0x96, 0x65, 0x40, 0x70, 0xfb, 0x6e, 0x4f, 0x6e, 0x4e,
+ 0x06, 0x50, 0x38, 0x0e, 0x51, 0x00, 0x96, 0xb4, 0x40, 0x96, 0x89,
+ 0x40, 0x51, 0x50, 0x01, 0x62, 0x96, 0x99, 0x40, 0x55, 0x4c, 0x05,
+ 0x96, 0x46, 0x40, 0x70, 0xfb, 0x6e, 0x4f, 0x6e, 0x4e, 0x06, 0x50,
+ 0x3c, 0x0e, 0x51, 0x00, 0x96, 0x95, 0x40, 0x62, 0xd0, 0x00, 0x96,
+ 0x67, 0x40, 0x51, 0x50, 0x01, 0x62, 0x96, 0x77,
+ 0x40, 0x51, 0x50, 0x01, 0x8c, 0x53, 0x4c, 0x51, 0x51, 0x97, 0x70, 0x40,
+ 0x51, 0x4e, 0x12, 0x4c, 0x51, 0x4f, 0x1a, 0x4d, 0xd0, 0x21, 0x97,
+ 0x57, 0x40, 0x51, 0x4e, 0x01, 0x62, 0x53, 0x4c, 0x51, 0x4f, 0x97,
+ 0x58, 0x40, 0x06, 0x4e, 0x8c, 0x97, 0x1d, 0x40, 0x12, 0x4c, 0x54,
+ 0x04, 0x51, 0x4f, 0x1a, 0x4d, 0x54, 0x03, 0x80, 0x07, 0x56, 0x04,
+ 0x00, 0x56, 0x03, 0x00, 0x62, 0xd0, 0x00, 0x06,
+ 0x50, 0x34, 0x0e, 0x51, 0x00, 0x51, 0x51, 0x60, 0xd5, 0x52, 0x03, 0x3f,
+ 0x50, 0x52, 0x04, 0x3f, 0x50, 0x77, 0x00, 0x3d, 0x00, 0x02, 0xcd,
+ 0xe7, 0x62, 0xd0, 0x00, 0x3c, 0xb1, 0x02, 0xa0, 0x18, 0x3c, 0xb2,
+ 0x00, 0xa0, 0x13, 0x50, 0x01, 0x08, 0x50, 0x2c, 0x08, 0x90, 0x0e,
+ 0x38, 0xfe, 0x7c, 0x0a, 0xee, 0x10, 0x7c, 0x07, 0xc5, 0x20, 0x38,
+ 0xfb, 0x20, 0x7f, 0x10, 0x4f, 0x80, 0x02, 0x40,
+ 0x62, 0xd0, 0x00, 0x52, 0xfc, 0x53, 0x50, 0x52, 0xfb, 0x53, 0x51, 0x51,
+ 0x50, 0x11, 0x01, 0x54, 0xfc, 0x51, 0x51, 0x19, 0x00, 0x54, 0xfb,
+ 0x3c, 0x51, 0x00, 0xbf, 0xe4, 0x3c, 0x50, 0x00, 0xbf, 0xdf, 0x20,
+ 0x7f, 0x10, 0x7c, 0x04, 0x8f, 0x7c, 0x04, 0x6c, 0x20, 0x7f, 0x10,
+ 0x7c, 0x04, 0x8b, 0x7c, 0x04, 0x68, 0x20, 0x7f, 0x62, 0xd0, 0x00,
+ 0x51, 0x42, 0x12, 0x67, 0x50, 0x00, 0x1a, 0x66,
+ 0xd0, 0x0f, 0x51, 0x43, 0x12, 0x69, 0x50, 0x00, 0x1a, 0x68, 0xd0, 0x05,
+ 0x50, 0x0f, 0x80, 0x17, 0x62, 0xd0, 0x00, 0x51, 0x69, 0x12, 0x67,
+ 0x51, 0x68, 0x1a, 0x66, 0xd0, 0x05, 0x50, 0x00, 0x80, 0x06, 0x62,
+ 0xd0, 0x00, 0x50, 0x01, 0x7f, 0x10, 0x4f, 0x38, 0x05, 0x62, 0xd0,
+ 0x00, 0x51, 0x67, 0x54, 0x02, 0x51, 0x66, 0x54, 0x01, 0x56, 0x04,
+ 0x00, 0x56, 0x00, 0x00, 0x56, 0x03, 0x00, 0x80,
+ 0x61, 0x95, 0x69, 0x40, 0x06, 0x50, 0x42, 0x0e, 0x51, 0x00, 0x51, 0x51,
+ 0x60, 0xd4, 0x3e, 0x50, 0x53, 0x50, 0x96, 0x5b, 0x40, 0x06, 0x4e,
+ 0x66, 0x0e, 0x4f, 0x00, 0x51, 0x4f, 0x95, 0x8c, 0x40, 0x51, 0x50,
+ 0x12, 0x4e, 0x50, 0x00, 0x1a, 0x4f, 0xd0, 0x03, 0x77, 0x03, 0x62,
+ 0xd0, 0x00, 0x95, 0x2f, 0x40, 0x06, 0x50, 0x66, 0x95, 0xcf, 0x40,
+ 0x3e, 0x50, 0x53, 0x50, 0x52, 0x02, 0x12, 0x50,
+ 0x52, 0x01, 0x1a, 0x51, 0xd0, 0x1a, 0x95, 0x18, 0x40, 0x06, 0x50, 0x66,
+ 0x0e, 0x51, 0x00, 0x51, 0x51, 0x60, 0xd4, 0x3e, 0x50, 0x54, 0x01,
+ 0x3e, 0x50, 0x54, 0x02, 0x52, 0x00, 0x54, 0x04, 0x77, 0x00, 0x3d,
+ 0x00, 0x02, 0xcf, 0x9c, 0x50, 0x01, 0x3b, 0x03, 0xd0, 0x08, 0x62,
+ 0xd0, 0x00, 0x50, 0x0f, 0x80, 0x06, 0x52, 0x04, 0x62, 0xd0, 0x00,
+ 0x38, 0xfb, 0x20, 0x7f, 0x10, 0x4f, 0x38, 0x02,
+ 0x70, 0xfe, 0x62, 0xd0, 0x00, 0x26, 0x2a, 0xf0, 0x51, 0xb0, 0x01, 0x01,
+ 0x53, 0x51, 0x51, 0x2a, 0x2a, 0x51, 0x53, 0x2a, 0x71, 0x01, 0x62,
+ 0xe3, 0x38, 0x10, 0x7c, 0x05, 0xc5, 0x62, 0xd0, 0x00, 0x20, 0x41,
+ 0x00, 0xf7, 0x56, 0x01, 0x00, 0x56, 0x00, 0x00, 0x80, 0x21, 0x10,
+ 0x7c, 0x05, 0xc5, 0x62, 0xd0, 0x00, 0x20, 0x53, 0x51, 0x47, 0x51,
+ 0x20, 0xa0, 0x03, 0x80, 0x1a, 0x50, 0x00, 0x08,
+ 0x50, 0x04, 0x08, 0x9e, 0xb6, 0x38, 0xfe, 0x77, 0x01, 0x0f, 0x00, 0x00,
+ 0x52, 0x01, 0x11, 0xdc, 0x52, 0x00, 0x19, 0x05, 0xcf, 0xd7, 0x56,
+ 0x01, 0x00, 0x56, 0x00, 0x00, 0x80, 0x21, 0x10, 0x7c, 0x05, 0xc5,
+ 0x62, 0xd0, 0x00, 0x20, 0x53, 0x51, 0x47, 0x51, 0x20, 0xb0, 0x03,
+ 0x80, 0x1a, 0x50, 0x00, 0x08, 0x50, 0x04, 0x08, 0x9e, 0x84, 0x38,
+ 0xfe, 0x77, 0x01, 0x0f, 0x00, 0x00, 0x52, 0x01,
+ 0x11, 0x2c, 0x52, 0x00, 0x19, 0x01, 0xcf, 0xd7, 0x43, 0x00, 0x08, 0x38,
+ 0xfe, 0x20, 0x7f, 0x10, 0x4f, 0x38, 0x02, 0x70, 0xfe, 0x62, 0xd0,
+ 0x00, 0x26, 0x2a, 0xf0, 0x51, 0xb0, 0x01, 0x09, 0x53, 0x51, 0x51,
+ 0x2a, 0x2a, 0x51, 0x53, 0x2a, 0x71, 0x01, 0x62, 0xe3, 0x38, 0x10,
+ 0x7c, 0x05, 0xc5, 0x62, 0xd0, 0x00, 0x20, 0x41, 0x00, 0xf7, 0x56,
+ 0x01, 0x00, 0x56, 0x00, 0x00, 0x80, 0x21, 0x10,
+ 0x7c, 0x05, 0xc5, 0x62, 0xd0, 0x00, 0x20, 0x53, 0x51, 0x47, 0x51, 0x20,
+ 0xa0, 0x03, 0x80, 0x1a, 0x50, 0x00, 0x08, 0x50, 0x04, 0x08, 0x9e,
+ 0x23, 0x38, 0xfe, 0x77, 0x01, 0x0f, 0x00, 0x00, 0x52, 0x01, 0x11,
+ 0xdc, 0x52, 0x00, 0x19, 0x05, 0xcf, 0xd7, 0x56, 0x01, 0x00, 0x56,
+ 0x00, 0x00, 0x80, 0x21, 0x10, 0x7c, 0x05, 0xc5, 0x62, 0xd0, 0x00,
+ 0x20, 0x53, 0x51, 0x47, 0x51, 0x20, 0xb0, 0x03,
+ 0x80, 0x1a, 0x50, 0x00, 0x08, 0x50, 0x04, 0x08, 0x9d, 0xf1, 0x38, 0xfe,
+ 0x77, 0x01, 0x0f, 0x00, 0x00, 0x52, 0x01, 0x11, 0x2c, 0x52, 0x00,
+ 0x19, 0x01, 0xcf, 0xd7, 0x43, 0x00, 0x08, 0x38, 0xfe, 0x20, 0x7f,
+ 0x10, 0x4f, 0x38, 0x04, 0x62, 0xd0, 0x00, 0x51, 0x2a, 0x21, 0xf0,
+ 0x54, 0x00, 0x51, 0x2d, 0x54, 0x01, 0x3d, 0x00, 0x10, 0xb0, 0x2a,
+ 0x55, 0xa7, 0x00, 0x3c, 0xab, 0x01, 0xb0, 0x09,
+ 0x55, 0x94, 0x00, 0x55, 0x95, 0x00, 0x80, 0x0f, 0x62, 0xd0, 0x00, 0x3c,
+ 0xae, 0x01, 0xa0, 0x07, 0x55, 0x94, 0x00, 0x55, 0x95, 0x00, 0x56,
+ 0x00, 0x00, 0x62, 0xd0, 0x00, 0x26, 0x2a, 0x0f, 0x81, 0x76, 0x3d,
+ 0x00, 0x20, 0xb0, 0x18, 0x62, 0xd0, 0x00, 0x55, 0xa7, 0x01, 0x55,
+ 0xa8, 0x00, 0x55, 0x94, 0x08, 0x55, 0x95, 0x08, 0x56, 0x00, 0x00,
+ 0x26, 0x2a, 0x0f, 0x81, 0x5a, 0x3d, 0x00, 0x30,
+ 0xb0, 0x0f, 0x62, 0xd0, 0x00, 0x55, 0xb1, 0x00, 0x56, 0x00, 0x00, 0x26,
+ 0x2a, 0x0f, 0x81, 0x47, 0x3d, 0x00, 0x40, 0xb0, 0x0f, 0x62, 0xd0,
+ 0x00, 0x55, 0xb1, 0x02, 0x56, 0x00, 0x00, 0x26, 0x2a, 0x0f, 0x81,
+ 0x34, 0x3d, 0x00, 0x50, 0xb0, 0xa7, 0x52, 0x01, 0x54, 0x03, 0x56,
+ 0x02, 0x00, 0x3d, 0x02, 0x00, 0xb0, 0x06, 0x3d, 0x03, 0x01, 0xa0,
+ 0x21, 0x3d, 0x02, 0x00, 0xb0, 0x06, 0x3d, 0x03,
+ 0x02, 0xa0, 0x28, 0x3d, 0x02, 0x00, 0xb0, 0x06, 0x3d, 0x03, 0x04, 0xa0,
+ 0x36, 0x3d, 0x02, 0x00, 0xb0, 0x06, 0x3d, 0x03, 0x08, 0xa0, 0x48,
+ 0x80, 0x62, 0x62, 0xd0, 0x00, 0x55, 0xaa, 0x01, 0x51, 0x2f, 0x29,
+ 0x80, 0x53, 0x2f, 0x7c, 0x0d, 0x19, 0x80, 0x51, 0x62, 0xd0, 0x00,
+ 0x51, 0x2b, 0x53, 0x42, 0x51, 0x2b, 0x53, 0x43, 0x51, 0x2b, 0x53,
+ 0x2e, 0x51, 0x2c, 0x53, 0x0e, 0x55, 0x0d, 0x00,
+ 0x80, 0x39, 0x62, 0xd0, 0x00, 0x51, 0x2b, 0x53, 0x2f, 0x3c, 0xaa, 0x00,
+ 0xa0, 0x09, 0x51, 0x2f, 0x29, 0x80, 0x53, 0x2f, 0x80, 0x25, 0x62,
+ 0xd0, 0x00, 0x26, 0x2f, 0x7f, 0x80, 0x1d, 0x62, 0xd0, 0x00, 0x55,
+ 0xaa, 0x00, 0x26, 0x2f, 0x7f, 0x51, 0x9c, 0x53, 0x24, 0x51, 0x24,
+ 0x53, 0x30, 0x51, 0x9d, 0x53, 0x25, 0x51, 0x25, 0x53, 0x31, 0x7c,
+ 0x0d, 0x19, 0x56, 0x00, 0x00, 0x62, 0xd0, 0x00,
+ 0x26, 0x2a, 0x0f, 0x55, 0x2b, 0x11, 0x55, 0x2c, 0x08, 0x55, 0x2d, 0x00,
+ 0x80, 0x89, 0x3d, 0x00, 0x60, 0xb0, 0x0f, 0x62, 0xd0, 0x00, 0x55,
+ 0xab, 0x01, 0x56, 0x00, 0x00, 0x26, 0x2a, 0x0f, 0x80, 0x76, 0x3d,
+ 0x00, 0x70, 0xb0, 0x0f, 0x62, 0xd0, 0x00, 0x55, 0xab, 0x00, 0x56,
+ 0x00, 0x00, 0x26, 0x2a, 0x0f, 0x80, 0x63, 0x3d, 0x00, 0x80, 0xb0,
+ 0x5e, 0x56, 0x00, 0x00, 0x62, 0xd0, 0x00, 0x26,
+ 0x2a, 0x0f, 0x9c, 0x9f, 0x10, 0x7c, 0x08, 0xb8, 0x7c, 0x05, 0xdb, 0x20,
+ 0x70, 0xfe, 0x93, 0xcf, 0x40, 0x62, 0xda, 0x00, 0x71, 0x10, 0x41,
+ 0xdc, 0xfe, 0x70, 0xcf, 0x43, 0x01, 0x08, 0x43, 0x00, 0x08, 0x50,
+ 0x00, 0x08, 0x50, 0x1e, 0x08, 0x9c, 0x52, 0x38, 0xfe, 0x71, 0x01,
+ 0x43, 0xe0, 0x10, 0x43, 0xff, 0x08, 0x70, 0xfe, 0x40, 0x40, 0x40,
+ 0x40, 0x40, 0x40, 0x40, 0x10, 0x7c, 0x07, 0xe7,
+ 0x7c, 0x05, 0x8f, 0x7c, 0x05, 0xd0, 0x20, 0x93, 0x3f, 0x40, 0x62, 0xe3,
+ 0x38, 0x56, 0x00, 0x00, 0x62, 0xd0, 0x00, 0x26, 0x2a, 0x0f, 0x38,
+ 0xfc, 0x20, 0x7f, 0x62, 0xd0, 0x00, 0x3c, 0xa7, 0x00, 0xa0, 0x13,
+ 0x9c, 0x3f, 0x62, 0xd0, 0x00, 0x3c, 0xa8, 0x00, 0xb0, 0x33, 0x55,
+ 0xa8, 0x01, 0x7c, 0x0a, 0xee, 0x80, 0x2b, 0x62, 0xd0, 0x00, 0x50,
+ 0x01, 0x3a, 0x94, 0xd0, 0x08, 0x10, 0x7c, 0x04,
+ 0x8f, 0x20, 0x80, 0x06, 0x10, 0x7c, 0x04, 0x8b, 0x20, 0x62, 0xd0, 0x00,
+ 0x50, 0x01, 0x3a, 0x95, 0xd0, 0x08, 0x10, 0x7c, 0x04, 0x6c, 0x20,
+ 0x80, 0x06, 0x10, 0x7c, 0x04, 0x68, 0x20, 0x7f, 0x10, 0x4f, 0x38,
+ 0x03, 0x56, 0x02, 0x00, 0x56, 0x01, 0x00, 0x56, 0x00, 0x00, 0x80,
+ 0x3e, 0x62, 0xd0, 0x00, 0x91, 0xad, 0x40, 0x52, 0xfc, 0x04, 0x50,
+ 0x52, 0xfb, 0x0c, 0x51, 0x51, 0x51, 0x60, 0xd4,
+ 0x3e, 0x50, 0x53, 0x51, 0x3e, 0x50, 0x53, 0x50, 0x52, 0x02, 0x12, 0x50,
+ 0x52, 0x01, 0x1a, 0x51, 0xd0, 0x18, 0x91, 0x8c, 0x40, 0x52, 0xfc,
+ 0x04, 0x50, 0x52, 0xfb, 0x0c, 0x51, 0x51, 0x51, 0x60, 0xd4, 0x3e,
+ 0x50, 0x54, 0x01, 0x3e, 0x50, 0x54, 0x02, 0x77, 0x00, 0x52, 0x00,
+ 0x3b, 0xfa, 0xcf, 0xbe, 0x62, 0xd0, 0x00, 0x52, 0x02, 0x53, 0x50,
+ 0x52, 0x01, 0x53, 0x51, 0x38, 0xfd, 0x20, 0x7f,
+ 0x10, 0x7c, 0x04, 0x1a, 0x20, 0x10, 0x50, 0x04, 0x08, 0x50, 0x00, 0x08,
+ 0x50, 0x8c, 0x08, 0x7c, 0x04, 0x23, 0x38, 0xfd, 0x20, 0x10, 0x50,
+ 0x04, 0x08, 0x50, 0x00, 0x08, 0x50, 0x62, 0x08, 0x7c, 0x04, 0x23,
+ 0x38, 0xfd, 0x20, 0x10, 0x50, 0x04, 0x08, 0x50, 0x00, 0x08, 0x50,
+ 0x66, 0x08, 0x7c, 0x04, 0x23, 0x38, 0xfd, 0x20, 0x10, 0x50, 0x00,
+ 0x7c, 0x03, 0x3e, 0x20, 0x10, 0x50, 0xff, 0x7c,
+ 0x03, 0x3e, 0x20, 0x10, 0x50, 0xff, 0x7c, 0x03, 0x3e, 0x20, 0x7f, 0x62,
+ 0xd0, 0x00, 0x55, 0xaa, 0x00, 0x55, 0xab, 0x01, 0x10, 0x7c, 0x04,
+ 0x8f, 0x7c, 0x04, 0x6c, 0x20, 0x9b, 0x45, 0x62, 0xe3, 0x38, 0x92,
+ 0x7c, 0x40, 0x43, 0x00, 0x08, 0x62, 0xd0, 0x00, 0x55, 0x2a, 0x08,
+ 0x55, 0x2b, 0x11, 0x55, 0x2c, 0x08, 0x55, 0x2e, 0x1e, 0x55, 0x2f,
+ 0x03, 0x55, 0x30, 0x5f, 0x55, 0x31, 0x28, 0x55,
+ 0x32, 0x00, 0x55, 0x33, 0x00, 0x3c, 0xaa, 0x00, 0xa0, 0x09, 0x51, 0x2f,
+ 0x29, 0x80, 0x53, 0x2f, 0x80, 0x07, 0x62, 0xd0, 0x00, 0x26, 0x2f,
+ 0x7f, 0x10, 0x50, 0x00, 0x08, 0x50, 0x2a, 0x08, 0x50, 0x06, 0x08,
+ 0x50, 0x16, 0x08, 0x7c, 0x05, 0xe2, 0x38, 0xfc, 0x7c, 0x05, 0x8f,
+ 0x7c, 0x05, 0xd0, 0x20, 0x91, 0xd5, 0x40, 0x10, 0x7c, 0x07, 0xe7,
+ 0x7c, 0x07, 0x6d, 0x20, 0x7c, 0x0d, 0x19, 0x80,
+ 0x22, 0x62, 0xe3, 0x38, 0x7c, 0x10, 0xc2, 0x10, 0x7c, 0x07, 0xab, 0x62,
+ 0xd0, 0x00, 0x20, 0x39, 0x00, 0xa0, 0x09, 0x7c, 0x0a, 0x07, 0x7c,
+ 0x0a, 0x31, 0x80, 0x04, 0x7c, 0x0a, 0x9f, 0x9c, 0xc2, 0x9e, 0x78,
+ 0x8f, 0xde, 0x8f, 0xff, 0x10, 0x4f, 0x7c, 0x1b, 0xf1, 0x20, 0x70,
+ 0x3f, 0x71, 0xc0, 0x7f, 0x5d, 0xd0, 0x08, 0x62, 0xd0, 0x00, 0x50,
+ 0x00, 0x53, 0x4a, 0x53, 0x4b, 0x55, 0x49, 0x10,
+ 0x66, 0xfc, 0x6c, 0xfb, 0x6b, 0x4a, 0x6b, 0x4b, 0x51, 0x4a, 0x1b, 0xfa,
+ 0x51, 0x4b, 0x1b, 0xf9, 0xc0, 0x09, 0x53, 0x4b, 0x52, 0xfa, 0x1c,
+ 0x4a, 0x77, 0xfc, 0x7a, 0x49, 0xbf, 0xe3, 0x51, 0x4a, 0x54, 0xfa,
+ 0x51, 0x4b, 0x54, 0xf9, 0x18, 0x60, 0xd0, 0x7f, 0x55, 0x4d, 0x00,
+ 0x55, 0x4b, 0x00, 0x55, 0x4a, 0x00, 0x3c, 0x4d, 0x00, 0xb0, 0x06,
+ 0x3c, 0x4c, 0x00, 0xa0, 0x1a, 0x70, 0xfb, 0x6e,
+ 0x4d, 0x6e, 0x4c, 0xd0, 0x0c, 0x62, 0xd0, 0x00, 0x51, 0x4e, 0x04, 0x4b,
+ 0x51, 0x4f, 0x0c, 0x4a, 0x65, 0x4e, 0x6b, 0x4f, 0x8f, 0xde, 0x5f,
+ 0x4e, 0x4b, 0x5f, 0x4f, 0x4a, 0x62, 0xd0, 0x00, 0x7f, 0x52, 0x00,
+ 0x53, 0x50, 0x55, 0x51, 0x00, 0x65, 0x50, 0x6b, 0x51, 0x7f, 0x62,
+ 0xd0, 0x00, 0x52, 0x00, 0x53, 0x50, 0x55, 0x51, 0x00, 0x7f, 0x53,
+ 0x4e, 0x51, 0x51, 0x09, 0x00, 0x60, 0xd4, 0x3e,
+ 0x4e, 0x53, 0x4f, 0x3e, 0x4e, 0x53, 0x4e, 0x7f, 0x51, 0x51, 0x60, 0xd5,
+ 0x51, 0x4f, 0x3f, 0x50, 0x51, 0x4e, 0x3f, 0x50, 0x7f, 0x06, 0x50,
+ 0x8c, 0x0e, 0x51, 0x00, 0x51, 0x51, 0x60, 0xd4, 0x3e, 0x50, 0x53,
+ 0x4f, 0x3e, 0x50, 0x16, 0x50, 0x02, 0x53, 0x4e, 0x7f, 0x60, 0xd4,
+ 0x3e, 0x4e, 0x53, 0x4f, 0x3e, 0x4e, 0x53, 0x4e, 0x7f, 0x09, 0x00,
+ 0x60, 0xd4, 0x3e, 0x4e, 0x53, 0x4f, 0x3e, 0x4e,
+ 0x7f, 0x55, 0x4e, 0x06, 0x55, 0x4f, 0x00, 0x55, 0x4b, 0x00, 0x55, 0x4a,
+ 0x00, 0x3c, 0x4f, 0x00, 0xb0, 0x06, 0x3c, 0x4e, 0x00, 0xa0, 0x1a,
+ 0x70, 0xfb, 0x6e, 0x4f, 0x6e, 0x4e, 0xd0, 0x0c, 0x62, 0xd0, 0x00,
+ 0x51, 0x50, 0x04, 0x4b, 0x51, 0x51, 0x0c, 0x4a, 0x65, 0x50, 0x6b,
+ 0x51, 0x8f, 0xde, 0x5f, 0x50, 0x4b, 0x5f, 0x51, 0x4a, 0x62, 0xd0,
+ 0x00, 0x5a, 0x4e, 0x06, 0x4e, 0x01, 0x51, 0x4e,
+ 0x04, 0x50, 0x0e, 0x51, 0x03, 0x7f, 0x0e, 0x51, 0x00, 0x51, 0x51, 0x60,
+ 0xd4, 0x3e, 0x50, 0x53, 0x51, 0x7f, 0x60, 0xd4, 0x3e, 0x50, 0x53,
+ 0x51, 0x3e, 0x50, 0x53, 0x50, 0x7f, 0x53, 0x4e, 0x51, 0x51, 0x09,
+ 0x00, 0x60, 0xd5, 0x52, 0x14, 0x3f, 0x4e, 0x52, 0x15, 0x3f, 0x4e,
+ 0x7f, 0x3e, 0x50, 0x53, 0x50, 0x51, 0x4e, 0x12, 0x50, 0x51, 0x4f,
+ 0x1a, 0x51, 0x7f, 0x53, 0x50, 0x52, 0xfb, 0x09,
+ 0x00, 0x60, 0xd4, 0x3e, 0x50, 0x7f, 0x0e, 0x4f, 0x00, 0x51, 0x4f, 0x60,
+ 0xd4, 0x3e, 0x4e, 0x53, 0x4f, 0x3e, 0x4e, 0x7f, 0x60, 0xd4, 0x3e,
+ 0x50, 0x54, 0x00, 0x3e, 0x50, 0x54, 0x01, 0x7f, 0x0e, 0x51, 0x00,
+ 0x51, 0x51, 0x60, 0xd5, 0x52, 0x14, 0x3f, 0x50, 0x52, 0x15, 0x3f,
+ 0x50, 0x7f, 0x52, 0x00, 0x53, 0x4e, 0x55, 0x4f, 0x00, 0x65, 0x4e,
+ 0x6b, 0x4f, 0x7f, 0x09, 0x00, 0x60, 0xd4, 0x3e,
+ 0x4c, 0x53, 0x4d, 0x3e, 0x4c, 0x53, 0x4c, 0x7f, 0x71, 0x10, 0x41, 0x04,
+ 0xfe, 0x41, 0x05, 0xfe, 0x41, 0x04, 0xfd, 0x41, 0x05, 0xfd, 0x70,
+ 0xcf, 0x43, 0x04, 0x01, 0x43, 0x04, 0x02, 0x71, 0x01, 0x7f, 0x0e,
+ 0x4f, 0x00, 0x51, 0x4f, 0x60, 0xd5, 0x51, 0x51, 0x3f, 0x4e, 0x7f,
+ 0x53, 0x4e, 0x55, 0x4f, 0x00, 0x65, 0x4e, 0x6b, 0x4f, 0x51, 0x4e,
+ 0x7f, 0x0e, 0x51, 0x00, 0x51, 0x51, 0x60, 0xd5,
+ 0x50, 0x00, 0x3f, 0x50, 0x7f, 0x3e, 0x50, 0x12, 0x4e, 0x54, 0x04, 0x51,
+ 0x51, 0x1a, 0x4f, 0x54, 0x03, 0x7f, 0x3e, 0x50, 0x12, 0x4e, 0x54,
+ 0x02, 0x51, 0x51, 0x1a, 0x4f, 0x54, 0x01, 0x7f, 0x71, 0x10, 0x41,
+ 0x00, 0xf7, 0x41, 0x01, 0xf7, 0x70, 0xcf, 0x7f, 0x00, 0x2a, 0x00,
+ 0x16, 0x00, 0x52, 0x00, 0x10, 0x00, 0x6a, 0x00, 0x22, 0x00, 0x90,
+ 0x00, 0x04, 0x00, 0x94, 0x04, 0x08, 0x08, 0x08,
+ 0x08, 0x00, 0x98, 0x00, 0x04, 0x00, 0x9c, 0x02, 0x5f, 0x28, 0x00, 0x9e,
+ 0x00, 0x08, 0x00, 0xa6, 0x07, 0x03, 0x01, 0x01, 0x00, 0x00, 0x01,
+ 0x02, 0x00, 0xad, 0x00, 0x06, 0xff, 0x00, 0x30, 0x30, 0x30, 0x30,
+ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
+ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
+ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
+ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
+ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
+ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
+ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
+ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
+ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
+ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
+ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
+ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
+ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
+ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
+ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
+ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
+ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
+ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
+ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
+ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
+ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
+ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
+ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
+ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
+ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
+ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
+ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
+ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
+ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
+ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
+ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
+ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
+ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
+ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
+ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
+ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
+ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
+ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
+ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
+ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
+ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
+ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
+ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
+ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
+ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30
+};
diff --git a/drivers/input/keyboard/gpio_keys.c b/drivers/input/keyboard/gpio_keys.c
index b8d2a93..bf75ef5 100644
--- a/drivers/input/keyboard/gpio_keys.c
+++ b/drivers/input/keyboard/gpio_keys.c
@@ -389,6 +389,59 @@ static struct attribute_group sec_key_attr_group = {
.attrs = sec_key_attrs,
};
+#ifdef CONFIG_MACH_GC1
+void gpio_keys_check_zoom_exception(unsigned int code,
+ bool *zoomkey, unsigned int *hotkey, unsigned int *index)
+{
+ switch (code) {
+ case KEY_CAMERA_ZOOMIN:
+ *hotkey = 0x221;
+ *index = 5;
+ break;
+ case KEY_CAMERA_ZOOMOUT:
+ *hotkey = 0x222;
+ *index = 6;
+ break;
+ case 0x221:
+ *hotkey = KEY_CAMERA_ZOOMIN;
+ *index = 3;
+ break;
+ case 0x222:
+ *hotkey = KEY_CAMERA_ZOOMOUT;
+ *index = 4;
+ break;
+ default:
+ *zoomkey = false;
+ return;
+ }
+ *zoomkey = true;
+}
+#endif
+
+#ifdef CONFIG_FAST_BOOT
+extern bool fake_shut_down;
+
+struct timer_list fake_timer;
+bool fake_pressed;
+
+static void gpio_keys_fake_off_check(unsigned long _data)
+{
+ struct input_dev *input = (struct input_dev *)_data;
+ unsigned int type = EV_KEY;
+
+ if (fake_pressed == false)
+ return ;
+
+ printk(KERN_DEBUG"[Keys] make event\n");
+
+ input_event(input, type, KEY_FAKE_PWR, 1);
+ input_sync(input);
+
+ input_event(input, type, KEY_FAKE_PWR, 0);
+ input_sync(input);
+}
+#endif
+
static void gpio_keys_report_event(struct gpio_button_data *bdata)
{
struct gpio_keys_button *button = bdata->button;
@@ -396,13 +449,61 @@ static void gpio_keys_report_event(struct gpio_button_data *bdata)
unsigned int type = button->type ?: EV_KEY;
int state = (gpio_get_value_cansleep(button->gpio) ? 1 : 0)
^ button->active_low;
+#ifdef CONFIG_MACH_GC1
+ struct gpio_keys_drvdata *ddata = input_get_drvdata(input);
+ struct gpio_button_data *tmp_bdata;
+ static bool overlapped;
+ static unsigned int hotkey;
+ unsigned int index_hotkey = 0;
+ bool zoomkey = false;
+
+#ifdef CONFIG_FAST_BOOT
+ /*Fake pwr off control*/
+ if (fake_shut_down) {
+ if (button->code == KEY_POWER) {
+ if (!!state) {
+ printk(KERN_DEBUG"[Keys] start fake check\n");
+ fake_pressed = true;
+ mod_timer(&fake_timer,
+ jiffies + msecs_to_jiffies(1000));
+ } else {
+ printk(KERN_DEBUG"[Keys] end fake checkPwr 0\n");
+ fake_pressed = false;
+ }
+ }
+ return ;
+ }
+#endif
+ if (system_rev < 6 && system_rev >= 2) {
+ if (overlapped) {
+ if (hotkey == button->code && !state) {
+ bdata->key_state = !!state;
+ bdata->wakeup = false;
+ overlapped = false;
+#ifdef CONFIG_SAMSUNG_PRODUCT_SHIP
+ printk(KERN_DEBUG"[KEYS] Ignored\n");
+#else
+ printk(KERN_DEBUG"[KEYS] Ignore %d %d\n",
+ hotkey, state);
+#endif
+ return;
+ }
+ }
+
+ gpio_keys_check_zoom_exception(button->code, &zoomkey,
+ &hotkey, &index_hotkey);
+ }
+#endif
if (type == EV_ABS) {
- if (state)
+ if (state) {
input_event(input, type, button->code, button->value);
+ input_sync(input);
+ }
} else {
if (bdata->wakeup && !state) {
input_event(input, type, button->code, !state);
+ input_sync(input);
if (button->code == KEY_POWER)
printk(KERN_DEBUG"[keys] f PWR %d\n", !state);
}
@@ -410,12 +511,32 @@ static void gpio_keys_report_event(struct gpio_button_data *bdata)
bdata->key_state = !!state;
bdata->wakeup = false;
+
+#ifdef CONFIG_MACH_GC1
+ if (system_rev < 6 && system_rev >= 2
+ && zoomkey && state) {
+ tmp_bdata = &ddata->data[index_hotkey];
+
+ if (tmp_bdata->key_state) {
+#ifdef CONFIG_SAMSUNG_PRODUCT_SHIP
+ printk(KERN_DEBUG"[KEYS] overlapped\n");
+#else
+ printk(KERN_DEBUG"[KEYS] overlapped. Forced release c %d h %d\n",
+ tmp_bdata->button->code, hotkey);
+#endif
+ input_event(input, type, hotkey, 0);
+ input_sync(input);
+
+ overlapped = true;
+ }
+ }
+#endif
input_event(input, type, button->code, !!state);
+ input_sync(input);
+
if (button->code == KEY_POWER)
printk(KERN_DEBUG"[keys]PWR %d\n", !!state);
}
-
- input_sync(input);
}
static void gpio_keys_work_func(struct work_struct *work)
@@ -638,6 +759,12 @@ static int __devinit gpio_keys_probe(struct platform_device *pdev)
gpio_keys_report_event(&ddata->data[i]);
input_sync(input);
+#ifdef CONFIG_FAST_BOOT
+ /*Fake power off*/
+ input_set_capability(input, EV_KEY, KEY_FAKE_PWR);
+ setup_timer(&fake_timer, gpio_keys_fake_off_check,
+ (unsigned long)input);
+#endif
device_init_wakeup(&pdev->dev, wakeup);
return 0;
diff --git a/drivers/input/keyboard/samsung-keypad.c b/drivers/input/keyboard/samsung-keypad.c
index f689f49..74581e3 100644
--- a/drivers/input/keyboard/samsung-keypad.c
+++ b/drivers/input/keyboard/samsung-keypad.c
@@ -23,6 +23,13 @@
#include <linux/slab.h>
#include <linux/sched.h>
#include <plat/keypad.h>
+#include <linux/regulator/consumer.h>
+#include <linux/regulator/driver.h>
+#include <linux/regulator/machine.h>
+#include <linux/gpio.h>
+#include <plat/gpio-cfg.h>
+
+
#define SAMSUNG_KEYIFCON 0x00
#define SAMSUNG_KEYIFSTSCLR 0x04
@@ -56,6 +63,11 @@
/* SAMSUNG_KEYIFFC */
#define SAMSUNG_KEYIFFC_MASK (0x3ff << 0)
+extern struct class *sec_class;
+
+static int key_suspend;
+static int key_led_prev;
+
enum samsung_keypad_type {
KEYPAD_TYPE_SAMSUNG,
KEYPAD_TYPE_S5PV210,
@@ -64,6 +76,7 @@ enum samsung_keypad_type {
struct samsung_keypad {
struct input_dev *input_dev;
struct clk *clk;
+ struct device *dev;
void __iomem *base;
wait_queue_head_t wait;
bool stopped;
@@ -132,16 +145,15 @@ static bool samsung_keypad_report(struct samsung_keypad *keypad,
continue;
pressed = row_state[col] & (1 << row);
-
+ pressed = pressed ? 1 : 0;
dev_dbg(&keypad->input_dev->dev,
"key %s, row: %d, col: %d\n",
pressed ? "pressed" : "released", row, col);
val = MATRIX_SCAN_CODE(row, col, keypad->row_shift);
- input_event(input_dev, EV_MSC, MSC_SCAN, val);
- input_report_key(input_dev,
- keypad->keycodes[val], pressed);
+ input_event(input_dev, EV_KEY, keypad->keycodes[val], pressed);
+ printk(KERN_INFO "[KEY]:%d, :%d, %d\n", keypad->keycodes[val], val, pressed);
}
input_sync(keypad->input_dev);
}
@@ -158,13 +170,14 @@ static irqreturn_t samsung_keypad_irq(int irq, void *dev_id)
unsigned int val;
bool key_down;
+
+ printk(KERN_INFO "[KEY]samsung_keypad_irq()\n");
+
do {
val = readl(keypad->base + SAMSUNG_KEYIFSTSCLR);
/* Clear interrupt. */
writel(~0x0, keypad->base + SAMSUNG_KEYIFSTSCLR);
-
samsung_keypad_scan(keypad, row_state);
-
key_down = samsung_keypad_report(keypad, row_state);
if (key_down)
wait_event_timeout(keypad->wait, keypad->stopped,
@@ -175,10 +188,36 @@ static irqreturn_t samsung_keypad_irq(int irq, void *dev_id)
return IRQ_HANDLED;
}
+static irqreturn_t samsung_keypad_xeint_irq(int irq, void *dev_id)
+{
+ struct samsung_keypad *keypad = dev_id;
+ struct input_dev *input_dev = keypad->input_dev;
+ unsigned int val;
+
+ printk(KERN_INFO "[KEY]samsung_keypad_xeint_irq()\n");
+
+ input_event(input_dev, EV_KEY, KEY_POWER, 1);
+ input_event(input_dev, EV_KEY, KEY_POWER, 0);
+ input_sync(input_dev);
+
+ s3c_gpio_cfgpin(GPIO_KBR_0, S3C_GPIO_SFN(3));
+ s3c_gpio_setpull(GPIO_KBR_0, S3C_GPIO_PULL_UP);
+ s3c_gpio_cfgpin(GPIO_KBR_1, S3C_GPIO_SFN(3));
+ s3c_gpio_setpull(GPIO_KBR_1, S3C_GPIO_PULL_UP);
+ s3c_gpio_cfgpin(GPIO_KBR_2, S3C_GPIO_SFN(3));
+ s3c_gpio_setpull(GPIO_KBR_2, S3C_GPIO_PULL_UP);
+ s3c_gpio_cfgall_range(GPIO_KBR_3, 2, S3C_GPIO_SFN(3), S3C_GPIO_PULL_UP);
+ s3c_gpio_cfgall_range(GPIO_KBC_0, 5, S3C_GPIO_SFN(3), S3C_GPIO_PULL_NONE);
+
+ return IRQ_HANDLED;
+}
+
static void samsung_keypad_start(struct samsung_keypad *keypad)
{
unsigned int val;
+ printk(KERN_INFO "[KEY]samsung_keypad_start()\n");
+
/* Tell IRQ thread that it may poll the device. */
keypad->stopped = false;
@@ -197,6 +236,8 @@ static void samsung_keypad_stop(struct samsung_keypad *keypad)
{
unsigned int val;
+ printk(KERN_INFO "[KEY]samsung_keypad_stop()\n");
+
/* Signal IRQ thread to stop polling and disable the handler. */
keypad->stopped = true;
wake_up(&keypad->wait);
@@ -235,6 +276,76 @@ static void samsung_keypad_close(struct input_dev *input_dev)
samsung_keypad_stop(keypad);
}
+static ssize_t key_disable_show(struct device *dev,
+ struct device_attribute *attr, char *buf)
+{
+/* struct samsung_keypad *keypad = dev_get_drvdata(dev);*/
+ return 0;
+
+}
+
+static ssize_t key_disable_store(struct device *dev,
+ struct device_attribute *attr, const char *buf,
+ size_t size)
+{
+/* struct samsung_keypad *keypad = dev_get_drvdata(dev);*/
+
+ return 0;
+}
+
+static ssize_t key_pressed_show(struct device *dev,
+ struct device_attribute *attr, char *buf)
+{
+ struct samsung_keypad *keypad = dev_get_drvdata(dev);
+ return 0;
+}
+
+static ssize_t key_led_onoff(struct device *dev,
+ struct device_attribute *attr, const char *buf,
+ size_t size)
+{
+ int data;
+ struct regulator *regulator;
+ regulator = regulator_get(NULL, "VREG_KEY");
+ if (IS_ERR(regulator))
+ return 0;
+ sscanf(buf, "%d\n", &data);
+
+ if (key_led_prev == data || key_suspend == 1)
+ return 0;
+ if (data) {
+ regulator_enable(regulator);
+ printk(KERN_INFO "[KEY] key_led_on\n");
+ }
+ else {
+ regulator_disable(regulator);
+ printk(KERN_INFO "[KEY] key_led_off\n");
+ }
+ key_led_prev = data;
+ regulator_put(regulator);
+ mdelay(70);
+ return 0;
+}
+
+static DEVICE_ATTR(disable_key, S_IRUGO | S_IWUSR | S_IWGRP,
+ key_disable_show, key_disable_store);
+static DEVICE_ATTR(key_pressed, S_IRUGO | S_IWUSR | S_IWGRP,
+ key_pressed_show, NULL);
+static DEVICE_ATTR(keyled_onoff, S_IRUGO | S_IWUSR | S_IWGRP,
+ NULL, key_led_onoff);
+
+static struct attribute *key_attributes[] = {
+ &dev_attr_disable_key.attr,
+ &dev_attr_key_pressed.attr,
+ &dev_attr_keyled_onoff.attr,
+ NULL,
+};
+
+static struct attribute_group key_attr_group = {
+ .attrs = key_attributes,
+};
+
+
static int __devinit samsung_keypad_probe(struct platform_device *pdev)
{
const struct samsung_keypad_platdata *pdata;
@@ -245,6 +356,7 @@ static int __devinit samsung_keypad_probe(struct platform_device *pdev)
unsigned int row_shift;
unsigned int keymap_size;
int error;
+ int ret;
pdata = pdev->dev.platform_data;
if (!pdata) {
@@ -304,6 +416,11 @@ static int __devinit samsung_keypad_probe(struct platform_device *pdev)
init_waitqueue_head(&keypad->wait);
input_dev->name = pdev->name;
+ #if defined(CONFIG_MACH_GRANDE) || defined(CONFIG_MACH_IRON)
+ input_dev->phys = "grande_3x4_keypad/input0";
+ #else
+ input_dev->phys = "samsung-keypad/input0";
+ #endif
input_dev->id.bustype = BUS_HOST;
input_dev->dev.parent = &pdev->dev;
input_set_drvdata(input_dev, keypad);
@@ -311,11 +428,17 @@ static int __devinit samsung_keypad_probe(struct platform_device *pdev)
input_dev->open = samsung_keypad_open;
input_dev->close = samsung_keypad_close;
- input_dev->evbit[0] = BIT_MASK(EV_KEY);
+
+ set_bit(EV_SYN, input_dev->evbit);
+ set_bit(EV_LED, input_dev->evbit);
+ set_bit(LED_MISC, input_dev->ledbit);
+ set_bit(EV_KEY, input_dev->evbit);
if (!pdata->no_autorepeat)
- input_dev->evbit[0] |= BIT_MASK(EV_REP);
+ set_bit(EV_REP, input_dev->evbit);
- input_set_capability(input_dev, EV_MSC, MSC_SCAN);
+
+ /* when sleep => wakeup, we want to report key-value as KEY_POWER */
+ input_set_capability(input_dev, EV_KEY, KEY_POWER);
input_dev->keycode = keypad->keycodes;
input_dev->keycodesize = sizeof(keypad->keycodes[0]);
@@ -343,6 +466,21 @@ static int __devinit samsung_keypad_probe(struct platform_device *pdev)
device_init_wakeup(&pdev->dev, pdata->wakeup);
platform_set_drvdata(pdev, keypad);
+ /*sysfs*/
+ keypad->dev = device_create(sec_class, NULL, 0, NULL, "sec_keypad");
+ if (IS_ERR(keypad->dev)) {
+ printk(KERN_ERR "Failed to create device(tkey_i2c->dev)!\n");
+ input_unregister_device(input_dev);
+ } else {
+ dev_set_drvdata(keypad->dev, keypad);
+ ret = sysfs_create_group(&keypad->dev->kobj,
+ &key_attr_group);
+ if (ret) {
+ printk(KERN_ERR
+ "[Key]: failed to create sysfs group\n");
+ }
+ }
+
return 0;
err_free_irq:
@@ -381,7 +519,7 @@ static int __devexit samsung_keypad_remove(struct platform_device *pdev)
return 0;
}
-#ifdef CONFIG_PM
+#if 1 /*CONFIG_PM*/
static void samsung_keypad_toggle_wakeup(struct samsung_keypad *keypad,
bool enable)
{
@@ -410,13 +548,56 @@ static int samsung_keypad_suspend(struct device *dev)
struct platform_device *pdev = to_platform_device(dev);
struct samsung_keypad *keypad = platform_get_drvdata(pdev);
struct input_dev *input_dev = keypad->input_dev;
+ int irq;
+ int error;
+
+ printk(KERN_INFO "[KEY] samsung_keypad_suspend()\n");
mutex_lock(&input_dev->mutex);
if (input_dev->users)
samsung_keypad_stop(keypad);
- samsung_keypad_toggle_wakeup(keypad, true);
+/* samsung_keypad_toggle_wakeup(keypad, true); */
+
+ s3c_gpio_cfgpin(GPIO_KBR_0, S3C_GPIO_SFN(0xf));
+ s3c_gpio_setpull(GPIO_KBR_0, S3C_GPIO_PULL_UP);
+ s3c_gpio_cfgpin(GPIO_KBR_1, S3C_GPIO_SFN(0xf));
+ s3c_gpio_setpull(GPIO_KBR_1, S3C_GPIO_PULL_UP);
+ s3c_gpio_cfgpin(GPIO_KBR_2, S3C_GPIO_SFN(0xf));
+ s3c_gpio_setpull(GPIO_KBR_2, S3C_GPIO_PULL_UP);
+ s3c_gpio_cfgall_range(GPIO_KBR_3, 2, S3C_GPIO_SFN(0xf), S3C_GPIO_PULL_UP);
+ s3c_gpio_cfgall_range(GPIO_KBC_0, 5, S3C_GPIO_OUTPUT, S3C_GPIO_PULL_DOWN);
+
+ irq = gpio_to_irq(GPIO_KBR_0);
+ /*printk(KERN_INFO "[KEY] KP_ROW[2] : %d\n", irq); // KBR(0)*/
+ error = request_threaded_irq(irq, NULL, samsung_keypad_xeint_irq,
+ IRQF_TRIGGER_FALLING, dev_name(&pdev->dev), keypad);
+ enable_irq_wake(irq);
+
+ irq = gpio_to_irq(GPIO_KBR_1);
+ /*printk(KERN_INFO "[KEY] KP_ROW[4] : %d\n", irq); // KBR(3)*/
+ error = request_threaded_irq(irq, NULL, samsung_keypad_xeint_irq,
+ IRQF_TRIGGER_FALLING, dev_name(&pdev->dev), keypad);
+ enable_irq_wake(irq);
+
+ irq = gpio_to_irq(GPIO_KBR_2);
+ /*printk(KERN_INFO "[KEY] KP_ROW[8] : %d\n", irq); // KBR(1)*/
+ error = request_threaded_irq(irq, NULL, samsung_keypad_xeint_irq,
+ IRQF_TRIGGER_FALLING, dev_name(&pdev->dev), keypad);
+ enable_irq_wake(irq);
+
+ irq = gpio_to_irq(GPIO_KBR_3);
+ /*printk(KERN_INFO "[KEY] KP_ROW[11] : %d\n", irq); // KBR(4)*/
+ error = request_threaded_irq(irq, NULL, samsung_keypad_xeint_irq,
+ IRQF_TRIGGER_FALLING, dev_name(&pdev->dev), keypad);
+ enable_irq_wake(irq);
+
+ irq = gpio_to_irq(GPIO_KBR_4);
+ /*printk(KERN_INFO "[KEY] KP_ROW[12] : %d\n", irq); // KBR(2)*/
+ error = request_threaded_irq(irq, NULL, samsung_keypad_xeint_irq,
+ IRQF_TRIGGER_FALLING, dev_name(&pdev->dev), keypad);
+ enable_irq_wake(irq);
mutex_unlock(&input_dev->mutex);
@@ -429,15 +610,18 @@ static int samsung_keypad_resume(struct device *dev)
struct samsung_keypad *keypad = platform_get_drvdata(pdev);
struct input_dev *input_dev = keypad->input_dev;
+ printk(KERN_INFO "[KEY]samsung_keypad_resume()\n");
+
mutex_lock(&input_dev->mutex);
- samsung_keypad_toggle_wakeup(keypad, false);
+/* samsung_keypad_toggle_wakeup(keypad, false);*/
if (input_dev->users)
samsung_keypad_start(keypad);
mutex_unlock(&input_dev->mutex);
+ key_suspend = 0;
return 0;
}
@@ -449,7 +633,11 @@ static const struct dev_pm_ops samsung_keypad_pm_ops = {
static struct platform_device_id samsung_keypad_driver_ids[] = {
{
+ #if defined(CONFIG_MACH_GRANDE) || defined(CONFIG_MACH_IRON)
+ .name = "grande_3x4_keypad",
+ #else
.name = "samsung-keypad",
+ #endif
.driver_data = KEYPAD_TYPE_SAMSUNG,
}, {
.name = "s5pv210-keypad",
@@ -463,9 +651,13 @@ static struct platform_driver samsung_keypad_driver = {
.probe = samsung_keypad_probe,
.remove = __devexit_p(samsung_keypad_remove),
.driver = {
+#if defined(CONFIG_MACH_GRANDE) || defined(CONFIG_MACH_IRON)
+ .name = "grande_3x4_keypad",
+#else
.name = "samsung-keypad",
+#endif
.owner = THIS_MODULE,
-#ifdef CONFIG_PM
+#if 1 /*CONFIG_PM*/
.pm = &samsung_keypad_pm_ops,
#endif
},