From eb72815b6f01791c2430929c9cf38e4b900f6f47 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 19 Apr 2005 14:35:47 +0300 Subject: [PATCH 01/29] InnoDB: Truncate SHOW INNODB STATUS output at the start of the list of active transactions, if necessary and possible. (Bug #5436) innobase/include/lock0lock.h: Split lock_print_info() into lock_print_info_summary() and lock_print_info_all_transactions(). innobase/lock/lock0lock.c: Split lock_print_info() into lock_print_info_summary() and lock_print_info_all_transactions(). innobase/include/srv0srv.h: srv_printf_innodb_monitor(): Add output parameters trx_start and trx_end. innobase/srv/srv0srv.c: srv_printf_innodb_monitor(): Add output parameters trx_start and trx_end. sql/ha_innodb.cc: innodb_show_status(): Truncate oversized output at the beginning of the list of active transactions, if possible. --- innobase/include/lock0lock.h | 11 +++++++-- innobase/include/srv0srv.h | 6 ++++- innobase/lock/lock0lock.c | 35 +++++++++++++++++---------- innobase/srv/srv0srv.c | 29 +++++++++++++++++++---- sql/ha_innodb.cc | 46 +++++++++++++++++++++++++++++------- 5 files changed, 98 insertions(+), 29 deletions(-) diff --git a/innobase/include/lock0lock.h b/innobase/include/lock0lock.h index 1fd7492d517..74288d57285 100644 --- a/innobase/include/lock0lock.h +++ b/innobase/include/lock0lock.h @@ -530,8 +530,15 @@ lock_rec_print( Prints info of locks for all transactions. */ void -lock_print_info( -/*============*/ +lock_print_info_summary( +/*====================*/ + FILE* file); /* in: file where to print */ +/************************************************************************* +Prints info of locks for each transaction. */ + +void +lock_print_info_all_transactions( +/*=============================*/ FILE* file); /* in: file where to print */ /************************************************************************* Validates the lock queue on a table. */ diff --git a/innobase/include/srv0srv.h b/innobase/include/srv0srv.h index 4e9e25844aa..4352083b21f 100644 --- a/innobase/include/srv0srv.h +++ b/innobase/include/srv0srv.h @@ -398,7 +398,11 @@ Outputs to a file the output of the InnoDB Monitor. */ void srv_printf_innodb_monitor( /*======================*/ - FILE* file); /* in: output stream */ + FILE* file, /* in: output stream */ + ulint* trx_start, /* out: file position of the start of + the list of active transactions */ + ulint* trx_end); /* out: file position of the end of + the list of active transactions */ /* Types for the threads existing in the system. Threads of types 4 - 9 diff --git a/innobase/lock/lock0lock.c b/innobase/lock/lock0lock.c index 29a274261f8..1c08d3defaa 100644 --- a/innobase/lock/lock0lock.c +++ b/innobase/lock/lock0lock.c @@ -4126,21 +4126,10 @@ lock_get_n_rec_locks(void) Prints info of locks for all transactions. */ void -lock_print_info( -/*============*/ +lock_print_info_summary( +/*====================*/ FILE* file) /* in: file where to print */ { - lock_t* lock; - trx_t* trx; - ulint space; - ulint page_no; - page_t* page; - ibool load_page_first = TRUE; - ulint nth_trx = 0; - ulint nth_lock = 0; - ulint i; - mtr_t mtr; - /* We must protect the MySQL thd->query field with a MySQL mutex, and because the MySQL mutex must be reserved before the kernel_mutex of InnoDB, we call innobase_mysql_prepare_print_arbitrary_thd() here. */ @@ -4179,6 +4168,26 @@ lock_print_info( fprintf(file, "Total number of lock structs in row lock hash table %lu\n", (ulong) lock_get_n_rec_locks()); +} + +/************************************************************************* +Prints info of locks for each transaction. */ + +void +lock_print_info_all_transactions( +/*=============================*/ + FILE* file) /* in: file where to print */ +{ + lock_t* lock; + ulint space; + ulint page_no; + page_t* page; + ibool load_page_first = TRUE; + ulint nth_trx = 0; + ulint nth_lock = 0; + ulint i; + mtr_t mtr; + trx_t* trx; fprintf(file, "LIST OF TRANSACTIONS FOR EACH SESSION:\n"); diff --git a/innobase/srv/srv0srv.c b/innobase/srv/srv0srv.c index a60e9e5a5f7..e56389a8541 100644 --- a/innobase/srv/srv0srv.c +++ b/innobase/srv/srv0srv.c @@ -1470,7 +1470,11 @@ Outputs to a file the output of the InnoDB Monitor. */ void srv_printf_innodb_monitor( /*======================*/ - FILE* file) /* in: output stream */ + FILE* file, /* in: output stream */ + ulint* trx_start, /* out: file position of the start of + the list of active transactions */ + ulint* trx_end) /* out: file position of the end of + the list of active transactions */ { double time_elapsed; time_t current_time; @@ -1519,7 +1523,24 @@ srv_printf_innodb_monitor( mutex_exit(&dict_foreign_err_mutex); - lock_print_info(file); + lock_print_info_summary(file); + if (trx_start) { + long t = ftell(file); + if (t < 0) { + *trx_start = ULINT_UNDEFINED; + } else { + *trx_start = (ulint) t; + } + } + lock_print_info_all_transactions(file); + if (trx_end) { + long t = ftell(file); + if (t < 0) { + *trx_end = ULINT_UNDEFINED; + } else { + *trx_end = (ulint) t; + } + } fputs("--------\n" "FILE I/O\n" "--------\n", file); @@ -1672,13 +1693,13 @@ loop: last_monitor_time = time(NULL); if (srv_print_innodb_monitor) { - srv_printf_innodb_monitor(stderr); + srv_printf_innodb_monitor(stderr, NULL, NULL); } if (srv_innodb_status) { mutex_enter(&srv_monitor_file_mutex); rewind(srv_monitor_file); - srv_printf_innodb_monitor(srv_monitor_file); + srv_printf_innodb_monitor(srv_monitor_file, NULL, NULL); os_file_set_eof(srv_monitor_file); mutex_exit(&srv_monitor_file_mutex); } diff --git a/sql/ha_innodb.cc b/sql/ha_innodb.cc index 06d9bf24c13..1eddafc8d80 100644 --- a/sql/ha_innodb.cc +++ b/sql/ha_innodb.cc @@ -5168,8 +5168,12 @@ innodb_show_status( /*===============*/ THD* thd) /* in: the MySQL query thread of the caller */ { - Protocol *protocol= thd->protocol; - trx_t* trx; + Protocol* protocol = thd->protocol; + trx_t* trx; + static const char truncated_msg[] = "... truncated...\n"; + const long MAX_STATUS_SIZE = 64000; + ulint trx_list_start = ULINT_UNDEFINED; + ulint trx_list_end = ULINT_UNDEFINED; DBUG_ENTER("innodb_show_status"); @@ -5184,33 +5188,57 @@ innodb_show_status( innobase_release_stat_resources(trx); - /* We let the InnoDB Monitor to output at most 64000 bytes of text. */ + /* We let the InnoDB Monitor to output at most MAX_STATUS_SIZE + bytes of text. */ - long flen; + long flen, usable_len; char* str; mutex_enter_noninline(&srv_monitor_file_mutex); rewind(srv_monitor_file); - srv_printf_innodb_monitor(srv_monitor_file); + srv_printf_innodb_monitor(srv_monitor_file, + &trx_list_start, &trx_list_end); flen = ftell(srv_monitor_file); os_file_set_eof(srv_monitor_file); if (flen < 0) { flen = 0; - } else if (flen > 64000 - 1) { - flen = 64000 - 1; + } + + if (flen > MAX_STATUS_SIZE) { + usable_len = MAX_STATUS_SIZE; + } else { + usable_len = flen; } /* allocate buffer for the string, and read the contents of the temporary file */ - if (!(str = my_malloc(flen + 1, MYF(0)))) + if (!(str = my_malloc(usable_len + 1, MYF(0)))) { mutex_exit_noninline(&srv_monitor_file_mutex); DBUG_RETURN(-1); } rewind(srv_monitor_file); - flen = fread(str, 1, flen, srv_monitor_file); + if (flen < MAX_STATUS_SIZE) { + /* Display the entire output. */ + flen = fread(str, 1, flen, srv_monitor_file); + } else if (trx_list_end < (ulint) flen + && trx_list_start < trx_list_end + && trx_list_start + (flen - trx_list_end) + < MAX_STATUS_SIZE - sizeof truncated_msg - 1) { + /* Omit the beginning of the list of active transactions. */ + long len = fread(str, 1, trx_list_start, srv_monitor_file); + memcpy(str + len, truncated_msg, sizeof truncated_msg - 1); + len += sizeof truncated_msg - 1; + usable_len = (MAX_STATUS_SIZE - 1) - len; + fseek(srv_monitor_file, flen - usable_len, SEEK_SET); + len += fread(str + len, 1, usable_len, srv_monitor_file); + flen = len; + } else { + /* Omit the end of the output. */ + flen = fread(str, 1, MAX_STATUS_SIZE - 1, srv_monitor_file); + } mutex_exit_noninline(&srv_monitor_file_mutex); From 2bd02714d2fb70cb75c78d6f1da43273d6572bf2 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 27 Apr 2005 12:28:25 +0300 Subject: [PATCH 02/29] Fixed a bug using mysqldump to InnoDB tables causes error (Bug #10200). sql/ha_innodb.cc: Fixed a bug using mysqldump to InnoDB tables causes error (Bug #10200). Lock type must be stored when sql_command = SQLCOM_LOCK_TABLES and lock_type = TL_READ or TL_READ_INSERT even when innobase_locks_unsafe_for_binlog is set. --- sql/ha_innodb.cc | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/sql/ha_innodb.cc b/sql/ha_innodb.cc index 83c72594dfb..8f9671c5e67 100644 --- a/sql/ha_innodb.cc +++ b/sql/ha_innodb.cc @@ -5340,15 +5340,14 @@ ha_innobase::store_lock( (lock_type == TL_READ || lock_type == TL_READ_NO_INSERT) && thd->lex->sql_command != SQLCOM_SELECT && thd->lex->sql_command != SQLCOM_UPDATE_MULTI && - thd->lex->sql_command != SQLCOM_DELETE_MULTI ) { + thd->lex->sql_command != SQLCOM_DELETE_MULTI && + thd->lex->sql_command != SQLCOM_LOCK_TABLES) { /* In case we have innobase_locks_unsafe_for_binlog option set and isolation level of the transaction is not set to serializable and MySQL is doing INSERT INTO...SELECT without FOR UPDATE or IN - SHARE MODE we use consistent read for select. - Similarly, in case of DELETE...SELECT and - UPDATE...SELECT when these are not multi table.*/ + SHARE MODE we use consistent read for select. */ prebuilt->select_lock_type = LOCK_NONE; prebuilt->stored_select_lock_type = LOCK_NONE; From 9fcda7fcc5efbc3f58049b8229c4e809c20cc503 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 3 May 2005 12:47:27 +0400 Subject: [PATCH 03/29] A fix and test case for Bug#9096 "select doesn't return all matched records if prepared statements is used". This fix changes equality evaluation method of basic constants from by-name to by-value, thus effectively enabling use of parameter markers in some optimizations (constants propagation, evaluation of possible keys for query). mysql-test/r/ps.result: Test results for the test case for Bug#9096 mysql-test/t/ps.test: A short test case for Bug#9096 "select doesn't return all matched records if prepared statements is used". The is enough to reproduce the glitch in update_ref_and_keys causing the bug to occur. sql/item.cc: Implement by-value equality evaluation of basic constants. This is needed to work with Item_param values. Until now Item_param was compared with other items by its name, which is always "?". The bug at hand showed up when an integer constant was created from one parameter marker (with value 200887 and name "?") and then compared by-name with another parameter marker (with value 860 and name "?"). True returned by this comparison resulted in a wrong table access method used to evaluate the query. Implement Item_param methods needed to emulate "basic constant" mode at full. sql/item.h: Change declaration of basic_const_item(): now it also widens its argument from const Item * to Item * if the argument is a basic constant. Declare eq() for all basic constatns, as long as now they are compared by value, not by name. Each constant needs its own comparison method. Declarations of Item_param methods needed to fully emulate a basic constant when parameter value is set. sql/item_func.cc: Fix wrong casts. --- mysql-test/r/ps.result | 25 +++++++++ mysql-test/t/ps.test | 26 ++++++++++ sql/item.cc | 114 ++++++++++++++++++++++++++++++++++++++++- sql/item.h | 27 ++++++++-- sql/item_func.cc | 9 ++-- 5 files changed, 192 insertions(+), 9 deletions(-) diff --git a/mysql-test/r/ps.result b/mysql-test/r/ps.result index 89c369a51e8..df3e24afd1a 100644 --- a/mysql-test/r/ps.result +++ b/mysql-test/r/ps.result @@ -494,3 +494,28 @@ SELECT FOUND_ROWS(); FOUND_ROWS() 2 deallocate prepare stmt; +drop table if exists t1; +Warnings: +Note 1051 Unknown table 't1' +create table t1 (c1 int(11) not null, c2 int(11) not null, +primary key (c1,c2), key c2 (c2), key c1 (c1)); +insert into t1 values (200887, 860); +insert into t1 values (200887, 200887); +select * from t1 where (c1=200887 and c2=200887) or c2=860; +c1 c2 +200887 860 +200887 200887 +prepare stmt from +"select * from t1 where (c1=200887 and c2=200887) or c2=860"; +execute stmt; +c1 c2 +200887 860 +200887 200887 +prepare stmt from +"select * from t1 where (c1=200887 and c2=?) or c2=?"; +set @a=200887, @b=860; +execute stmt using @a, @b; +c1 c2 +200887 860 +200887 200887 +deallocate prepare stmt; diff --git a/mysql-test/t/ps.test b/mysql-test/t/ps.test index b204e59267e..ef36b8b1b0b 100644 --- a/mysql-test/t/ps.test +++ b/mysql-test/t/ps.test @@ -496,3 +496,29 @@ SELECT FOUND_ROWS(); execute stmt; SELECT FOUND_ROWS(); deallocate prepare stmt; + +# +# Bug#9096 "select doesn't return all matched records if prepared statements +# is used" +# The bug was is bad co-operation of the optimizer's algorithm which determines +# which keys can be used to execute a query, constants propagation +# part of the optimizer and parameter markers used by prepared statements. + +drop table if exists t1; +create table t1 (c1 int(11) not null, c2 int(11) not null, + primary key (c1,c2), key c2 (c2), key c1 (c1)); + +insert into t1 values (200887, 860); +insert into t1 values (200887, 200887); + +select * from t1 where (c1=200887 and c2=200887) or c2=860; + +prepare stmt from +"select * from t1 where (c1=200887 and c2=200887) or c2=860"; +execute stmt; +prepare stmt from +"select * from t1 where (c1=200887 and c2=?) or c2=?"; +set @a=200887, @b=860; +# this query did not return all matching rows +execute stmt using @a, @b; +deallocate prepare stmt; diff --git a/sql/item.cc b/sql/item.cc index ffde92c4214..7e74bb1fd85 100644 --- a/sql/item.cc +++ b/sql/item.cc @@ -200,6 +200,11 @@ void Item::set_name(const char *str, uint length, CHARSET_INFO *cs) bool Item::eq(const Item *item, bool binary_cmp) const { + /* + Note, that this is never TRUE if item is a Item_param: + for all basic constants we have special checks, and Item_param's + type() can be only among basic constant types. + */ return type() == item->type() && name && item->name && !my_strcasecmp(system_charset_info,name,item->name); } @@ -254,7 +259,7 @@ Item *Item_string::safe_charset_converter(CHARSET_INFO *tocs) bool Item_string::eq(const Item *item, bool binary_cmp) const { - if (type() == item->type()) + if (type() == item->type() && item->basic_const_item()) { if (binary_cmp) return !stringcmp(&str_value, &item->str_value); @@ -1356,6 +1361,70 @@ bool Item_param::fix_fields(THD *thd, TABLE_LIST *tables, Item **ref) return 0; } + +bool Item_param::basic_const_item() const +{ + if (state == NO_VALUE || state == TIME_VALUE) + return FALSE; + return TRUE; +} + +Item * +Item_param::new_item() +{ + /* see comments in the header file */ + switch (state) { + case NULL_VALUE: + return new Item_null(name); + case INT_VALUE: + return new Item_int(name, value.integer, max_length); + case REAL_VALUE: + return new Item_real(name, value.real, decimals, max_length); + case STRING_VALUE: + case LONG_DATA_VALUE: + return new Item_string(name, str_value.c_ptr_quick(), str_value.length(), + str_value.charset()); + case TIME_VALUE: + break; + case NO_VALUE: + default: + DBUG_ASSERT(0); + }; + return 0; +} + + +bool +Item_param::eq(const Item *arg, bool binary_cmp) const +{ + Item *item; + if (!basic_const_item() || !arg->basic_const_item() || arg->type() != type()) + return FALSE; + /* + We need to cast off const to call val_int(). This should be OK for + a basic constant. + */ + item= (Item*) arg; + + switch (state) { + case NULL_VALUE: + return TRUE; + case INT_VALUE: + return value.integer == item->val_int() && + unsigned_flag == item->unsigned_flag; + case REAL_VALUE: + return value.real == item->val(); + case STRING_VALUE: + case LONG_DATA_VALUE: + if (binary_cmp) + return !stringcmp(&str_value, &item->str_value); + return !sortcmp(&str_value, &item->str_value, collation.collation); + default: + break; + } + return FALSE; +} + /* End of Item_param related */ @@ -1937,6 +2006,23 @@ int Item_int::save_in_field(Field *field, bool no_conversions) return field->store(nr); } + +bool Item_int::eq(const Item *arg, bool binary_cmp) const +{ + /* No need to check for null value as basic constant can't be NULL */ + if (arg->basic_const_item() && arg->type() == type()) + { + /* + We need to cast off const to call val_int(). This should be OK for + a basic constant. + */ + Item *item= (Item*) arg; + return item->val_int() == value && item->unsigned_flag == unsigned_flag; + } + return FALSE; +} + + Item_num *Item_uint::neg() { return new Item_real(name, - ((double) value), 0, max_length); @@ -1951,6 +2037,21 @@ int Item_real::save_in_field(Field *field, bool no_conversions) return field->store(nr); } + +bool Item_real::eq(const Item *arg, bool binary_cmp) const +{ + if (arg->basic_const_item() && arg->type() == type()) + { + /* + We need to cast off const to call val_int(). This should be OK for + a basic constant. + */ + Item *item= (Item*) arg; + return item->val() == value; + } + return FALSE; +} + /**************************************************************************** ** varbinary item ** In string context this is a binary string @@ -2017,6 +2118,17 @@ int Item_varbinary::save_in_field(Field *field, bool no_conversions) } +bool Item_varbinary::eq(const Item *arg, bool binary_cmp) const +{ + if (arg->basic_const_item() && arg->type() == type()) + { + if (binary_cmp) + return !stringcmp(&str_value, &arg->str_value); + return !sortcmp(&str_value, &arg->str_value, collation.collation); + } + return FALSE; +} + /* Pack data in buffer for sending */ diff --git a/sql/item.h b/sql/item.h index d949095b455..335a5b5547a 100644 --- a/sql/item.h +++ b/sql/item.h @@ -234,7 +234,7 @@ public: virtual table_map not_null_tables() const { return used_tables(); } /* Returns true if this is a simple constant item like an integer, not - a constant expression + a constant expression. Used in the optimizer to propagate basic constants. */ virtual bool basic_const_item() const { return 0; } /* cloning of constant items (0 if it is not const) */ @@ -581,7 +581,6 @@ public: bool convert_str_value(THD *thd); - Item *new_item() { return new Item_param(pos_in_query); } /* If value for parameter was not set we treat it as non-const so noone will use parameters value in fix_fields still @@ -590,12 +589,29 @@ public: virtual table_map used_tables() const { return state != NO_VALUE ? (table_map)0 : PARAM_TABLE_BIT; } void print(String *str) { str->append('?'); } - /* parameter never equal to other parameter of other item */ - bool eq(const Item *item, bool binary_cmp) const { return 0; } bool is_null() { DBUG_ASSERT(state != NO_VALUE); return state == NULL_VALUE; } + bool basic_const_item() const; + /* + This method is used to make a copy of a basic constant item when + propagating constants in the optimizer. The reason to create a new + item and not use the existing one is not precisely known (2005/04/16). + Probably we are trying to preserve tree structure of items, in other + words, avoid pointing at one item from two different nodes of the tree. + Return a new basic constant item if parameter value is a basic + constant, assert otherwise. This method is called only if + basic_const_item returned TRUE. + */ + Item *new_item(); + /* + Implement by-value equality evaluation if parameter value + is set and is a basic constant (integer, real or string). + Otherwise return FALSE. + */ + bool eq(const Item *item, bool binary_cmp) const; }; + class Item_int :public Item_num { public: @@ -622,6 +638,7 @@ public: void cleanup() {} void print(String *str); Item_num *neg() { value= -value; return this; } + bool eq(const Item *, bool binary_cmp) const; }; @@ -677,6 +694,7 @@ public: void cleanup() {} Item *new_item() { return new Item_real(name,value,decimals,max_length); } Item_num *neg() { value= -value; return this; } + bool eq(const Item *, bool binary_cmp) const; }; @@ -810,6 +828,7 @@ public: enum_field_types field_type() const { return MYSQL_TYPE_STRING; } // to prevent drop fixed flag (no need parent cleanup call) void cleanup() {} + bool eq(const Item *item, bool binary_cmp) const; }; diff --git a/sql/item_func.cc b/sql/item_func.cc index 2b38584fe23..3c548b2aa9f 100644 --- a/sql/item_func.cc +++ b/sql/item_func.cc @@ -790,10 +790,12 @@ void Item_func_neg::fix_length_and_dec() maximum number of bytes real or integer may require. Note that all constants are non negative so we don't need to account for removed '-'. B) argument returns a string. + Use val() to get value as arg_type doesn't mean that item is + Item_int or Item_real due to existence of Item_param. */ if (arg_result == STRING_RESULT || - (arg_type == REAL_ITEM && ((Item_real*)args[0])->value >= 0) || - (arg_type == INT_ITEM && ((Item_int*)args[0])->value > 0)) + (arg_type == REAL_ITEM && args[0]->val() >= 0) || + (arg_type == INT_ITEM && args[0]->val_int() > 0)) max_length++; if (args[0]->result_type() == INT_RESULT) @@ -809,8 +811,7 @@ void Item_func_neg::fix_length_and_dec() signed integers) */ if (args[0]->type() != INT_ITEM || - ((ulonglong) ((Item_uint*) args[0])->value <= - (ulonglong) LONGLONG_MIN)) + (((ulonglong) args[0]->val_int()) <= (ulonglong) LONGLONG_MIN)) hybrid_type= INT_RESULT; } } From 8736d8ac061f0a668bef1c2f8c37591f4b49ba63 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 4 May 2005 10:16:03 +0200 Subject: [PATCH 04/29] logging_ok: Logging to logging@openlogging.org accepted NDBT_ResultRow.cpp, ndb_restore.test, ndb_restore.result: BUG#10287 mysql-test/r/ndb_restore.result: BUG#10287 mysql-test/t/ndb_restore.test: BUG#10287 ndb/test/src/NDBT_ResultRow.cpp: BUG#10287 BitKeeper/etc/logging_ok: Logging to logging@openlogging.org accepted --- BitKeeper/etc/logging_ok | 2 ++ mysql-test/r/ndb_restore.result | 1 + mysql-test/t/ndb_restore.test | 6 ++++++ ndb/test/src/NDBT_ResultRow.cpp | 8 ++++++-- 4 files changed, 15 insertions(+), 2 deletions(-) diff --git a/BitKeeper/etc/logging_ok b/BitKeeper/etc/logging_ok index 330d28daf52..1b33d659cfd 100644 --- a/BitKeeper/etc/logging_ok +++ b/BitKeeper/etc/logging_ok @@ -167,6 +167,7 @@ mysqldev@build.mysql2.com mysqldev@melody.local mysqldev@mysql.com mysqldev@o2k.irixworld.net +ndbdev@dl145b.mysql.com ndbdev@eel.hemma.oreland.se ndbdev@ndbmaster.mysql.com nick@mysql.com @@ -240,6 +241,7 @@ tonu@x153.internalnet tonu@x3.internalnet tsmith@build.mysql.com tulin@build.mysql.com +tulin@dl145b.mysql.com tulin@mysql.com ulli@morbus.(none) venu@hundin.mysql.fi diff --git a/mysql-test/r/ndb_restore.result b/mysql-test/r/ndb_restore.result index 8e4449b1996..c78a4137468 100644 --- a/mysql-test/r/ndb_restore.result +++ b/mysql-test/r/ndb_restore.result @@ -247,3 +247,4 @@ count(*) 3 drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; drop table if exists t1_c,t2_c,t3_c,t4_c,t5_c,t6_c,t7_c,t8_c,t9_c; +520093696,1 diff --git a/mysql-test/t/ndb_restore.test b/mysql-test/t/ndb_restore.test index ee47f7da6bc..0c3babd54e4 100644 --- a/mysql-test/t/ndb_restore.test +++ b/mysql-test/t/ndb_restore.test @@ -208,3 +208,9 @@ select count(*) drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; drop table if exists t1_c,t2_c,t3_c,t4_c,t5_c,t6_c,t7_c,t8_c,t9_c; --enable_warnings + +# +# Test BUG#10287 +# + +--exec $NDB_TOOLS_DIR/ndb_select_all -d sys -D , SYSTAB_0 | grep 520093696 diff --git a/ndb/test/src/NDBT_ResultRow.cpp b/ndb/test/src/NDBT_ResultRow.cpp index f82963901b1..11554b4a9b3 100644 --- a/ndb/test/src/NDBT_ResultRow.cpp +++ b/ndb/test/src/NDBT_ResultRow.cpp @@ -116,8 +116,12 @@ BaseString NDBT_ResultRow::c_str() { NdbOut & operator << (NdbOut& ndbout, const NDBT_ResultRow & res) { - for(int i = 0; i Date: Wed, 4 May 2005 12:24:56 +0300 Subject: [PATCH 05/29] Initial value for a auto_increment can now be set using ALTER TABLE AUTO_INCREMENT = X; or CREATE TABLE .. AUTO_INCREMENT = X; This change is backported from 5.0 (Bug #7061). sql/ha_innodb.cc: Initial value for a auto_increment can now be set using ALTER TABLE AUTO_INCREMENT = X; or CREATE TABLE .. AUTO_INCREMENT = X; This change is backported from 5.0. --- sql/ha_innodb.cc | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/sql/ha_innodb.cc b/sql/ha_innodb.cc index 8f9671c5e67..dea938f126e 100644 --- a/sql/ha_innodb.cc +++ b/sql/ha_innodb.cc @@ -1216,7 +1216,7 @@ innobase_commit( &innodb_dummy_stmt_trx_handle: the latter means that the current SQL statement ended */ { - trx_t* trx; + trx_t* trx; DBUG_ENTER("innobase_commit"); DBUG_PRINT("trans", ("ending transaction")); @@ -3939,6 +3939,20 @@ ha_innobase::create( DBUG_ASSERT(innobase_table != 0); + if ((create_info->used_fields & HA_CREATE_USED_AUTO) && + (create_info->auto_increment_value != 0)) { + + /* Query was ALTER TABLE...AUTO_INCREMENT = x; or + CREATE TABLE ...AUTO_INCREMENT = x; Find out a table + definition from the dictionary and get the current value + of the auto increment field. Set a new value to the + auto increment field if the value is greater than the + maximum value in the column. */ + + auto_inc_value = create_info->auto_increment_value; + dict_table_autoinc_initialize(innobase_table, auto_inc_value); + } + /* Tell the InnoDB server that there might be work for utility threads: */ @@ -5346,8 +5360,9 @@ ha_innobase::store_lock( /* In case we have innobase_locks_unsafe_for_binlog option set and isolation level of the transaction is not set to serializable and MySQL is doing - INSERT INTO...SELECT without FOR UPDATE or IN - SHARE MODE we use consistent read for select. */ + INSERT INTO...SELECT or UPDATE ... = (SELECT ...) + without FOR UPDATE or IN SHARE MODE in select, then + we use consistent read for select. */ prebuilt->select_lock_type = LOCK_NONE; prebuilt->stored_select_lock_type = LOCK_NONE; From a82865375edd3af42b77f3561fb88f62b0f2e1bf Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 4 May 2005 16:53:10 +0400 Subject: [PATCH 06/29] Post-merge fixes for Bug#9096 "select doesn't return all matched records if prepared statements is used" (see comments to the changed files). mysql-test/r/ps.result: Post-merge fix for Bug#9096: test results fixed. mysql-test/r/type_datetime.result: Post-merge fix for Bug#9096: now we do better constants comparison, so the optimizer is able to guess from the index that we don't need to evaluate WHERE clause. sql/item.cc: Post-merge fixes for Bug#9096: implement by-value comparison for new 5.0 DECIMAL type. Item_real is renamed to Item_float in 5.0 Item_varbinary is renamed to Item_hex_string in 5.0 sql/item.h: Post-merge fixes for Bug#9096: declaration for Item_decimal::eq --- mysql-test/r/ps.result | 25 +++++++++++++++++++++++++ mysql-test/r/type_datetime.result | 2 +- sql/item.cc | 28 +++++++++++++++++++++++----- sql/item.h | 2 ++ 4 files changed, 51 insertions(+), 6 deletions(-) diff --git a/mysql-test/r/ps.result b/mysql-test/r/ps.result index bbd95da2f82..c0f4412b3d8 100644 --- a/mysql-test/r/ps.result +++ b/mysql-test/r/ps.result @@ -570,3 +570,28 @@ id deallocate prepare stmt| drop procedure p1| drop table t1| +drop table if exists t1; +Warnings: +Note 1051 Unknown table 't1' +create table t1 (c1 int(11) not null, c2 int(11) not null, +primary key (c1,c2), key c2 (c2), key c1 (c1)); +insert into t1 values (200887, 860); +insert into t1 values (200887, 200887); +select * from t1 where (c1=200887 and c2=200887) or c2=860; +c1 c2 +200887 860 +200887 200887 +prepare stmt from +"select * from t1 where (c1=200887 and c2=200887) or c2=860"; +execute stmt; +c1 c2 +200887 860 +200887 200887 +prepare stmt from +"select * from t1 where (c1=200887 and c2=?) or c2=?"; +set @a=200887, @b=860; +execute stmt using @a, @b; +c1 c2 +200887 860 +200887 200887 +deallocate prepare stmt; diff --git a/mysql-test/r/type_datetime.result b/mysql-test/r/type_datetime.result index 920c82c3e67..98f7829ca1c 100644 --- a/mysql-test/r/type_datetime.result +++ b/mysql-test/r/type_datetime.result @@ -88,7 +88,7 @@ date numfacture expedition 0000-00-00 00:00:00 1212 0001-00-00 00:00:00 EXPLAIN SELECT * FROM t1 WHERE expedition='0001-00-00 00:00:00'; id select_type table type possible_keys key key_len ref rows Extra -1 SIMPLE t1 ref expedition expedition 8 const 1 Using where +1 SIMPLE t1 ref expedition expedition 8 const 1 drop table t1; create table t1 (a datetime not null, b datetime not null); insert into t1 values (now(), now()); diff --git a/sql/item.cc b/sql/item.cc index 495ad772ec6..44a39872138 100644 --- a/sql/item.cc +++ b/sql/item.cc @@ -1448,6 +1448,24 @@ void Item_decimal::print(String *str) } +bool Item_decimal::eq(const Item *item, bool binary_cmp) const +{ + if (type() == item->type() && item->basic_const_item()) + { + /* + We need to cast off const to call val_decimal(). This should + be OK for a basic constant. Additionally, we can pass 0 as + a true decimal constant will return its internal decimal + storage and ignore the argument. + */ + Item *arg= (Item*) item; + my_decimal *value= arg->val_decimal(0); + return !my_decimal_cmp(&decimal_value, value); + } + return 0; +} + + String *Item_float::val_str(String *str) { // following assert is redundant, because fixed=1 assigned in constructor @@ -2217,7 +2235,7 @@ Item_param::new_item() case INT_VALUE: return new Item_int(name, value.integer, max_length); case REAL_VALUE: - return new Item_real(name, value.real, decimals, max_length); + return new Item_float(name, value.real, decimals, max_length); case STRING_VALUE: case LONG_DATA_VALUE: return new Item_string(name, str_value.c_ptr_quick(), str_value.length(), @@ -2251,7 +2269,7 @@ Item_param::eq(const Item *arg, bool binary_cmp) const return value.integer == item->val_int() && unsigned_flag == item->unsigned_flag; case REAL_VALUE: - return value.real == item->val(); + return value.real == item->val_real(); case STRING_VALUE: case LONG_DATA_VALUE: if (binary_cmp) @@ -3520,7 +3538,7 @@ void Item_float::print(String *str) In number context this is a longlong value. */ -bool Item_real::eq(const Item *arg, bool binary_cmp) const +bool Item_float::eq(const Item *arg, bool binary_cmp) const { if (arg->basic_const_item() && arg->type() == type()) { @@ -3529,7 +3547,7 @@ bool Item_real::eq(const Item *arg, bool binary_cmp) const a basic constant. */ Item *item= (Item*) arg; - return item->val() == value; + return item->val_real() == value; } return FALSE; } @@ -3605,7 +3623,7 @@ int Item_hex_string::save_in_field(Field *field, bool no_conversions) } -bool Item_varbinary::eq(const Item *arg, bool binary_cmp) const +bool Item_hex_string::eq(const Item *arg, bool binary_cmp) const { if (arg->basic_const_item() && arg->type() == type()) { diff --git a/sql/item.h b/sql/item.h index 95fc4dc8d84..cc6cc83c918 100644 --- a/sql/item.h +++ b/sql/item.h @@ -1039,8 +1039,10 @@ public: unsigned_flag= !decimal_value.sign(); return this; } + bool eq(const Item *, bool binary_cmp) const; }; + class Item_float :public Item_num { char *presentation; From 40042ccc6b930a545521b71d6c4e37473f8dff61 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 4 May 2005 14:58:43 +0200 Subject: [PATCH 07/29] - adjusted the start and stop priority level in the mysql.server init script for chkconfig on Red Hat Linux (BUG#9444) - we now match the levels used by the MySQL as shipped with Red Hat Linux (e.g. RHEL3/RHEL4) support-files/mysql.server.sh: - adjusted the start and stop priority level for chkconfig on Red Hat Linux (BUG#9444) - we now match the levels used by the MySQL as shipped with Red Hat Linux (RHEL3/RHEL4) --- support-files/mysql.server.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/support-files/mysql.server.sh b/support-files/mysql.server.sh index f9015824e6b..150a8a151ba 100644 --- a/support-files/mysql.server.sh +++ b/support-files/mysql.server.sh @@ -10,7 +10,7 @@ # started and shut down when the systems goes down. # Comments to support chkconfig on RedHat Linux -# chkconfig: 2345 90 20 +# chkconfig: 2345 64 36 # description: A very fast and reliable SQL database engine. # Comments to support LSB init script conventions From dd034abbfd6f2178e86b0c4692c193237a91670f Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 4 May 2005 18:46:29 +0400 Subject: [PATCH 08/29] fix --defaults-file and --defaults-extra-file broken by a wrong merge --- mysys/default.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mysys/default.c b/mysys/default.c index a4ab6eb1939..e3a0b8a20ad 100644 --- a/mysys/default.c +++ b/mysys/default.c @@ -121,7 +121,8 @@ int my_search_option_files(const char *conf_file, int *argc, char ***argv, if (forced_extra_defaults) defaults_extra_file= strchr(forced_extra_defaults,'=')+1; - args_used+= (forced_default_file ? 1 : 0) + (forced_extra_defaults ? 1 : 0); + (*args_used)+= (forced_default_file ? 1 : 0) + + (forced_extra_defaults ? 1 : 0); if (forced_default_file) { From 709c4ad12060786d6eb97e5952f7a7390bbfa2ba Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 5 May 2005 08:08:39 +0300 Subject: [PATCH 09/29] Fig compiler error. --- sql/ha_innodb.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/sql/ha_innodb.cc b/sql/ha_innodb.cc index dea938f126e..0cb0f5564bf 100644 --- a/sql/ha_innodb.cc +++ b/sql/ha_innodb.cc @@ -3766,6 +3766,7 @@ ha_innobase::create( char name2[FN_REFLEN]; char norm_name[FN_REFLEN]; THD *thd= current_thd; + ib_longlong auto_inc_value; DBUG_ENTER("ha_innobase::create"); From f59fef3f972a5ae06523f811c55ef713a9303679 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 5 May 2005 09:15:14 +0200 Subject: [PATCH 10/29] terminal.c, sql_bitmap.h, my_sys.h, configure.in, config.h: Initial Metrowerks CodeWarrior compiler support cmd-line-utils/libedit/config.h: Initial Metrowerks CodeWarrior compiler support configure.in: Initial Metrowerks CodeWarrior compiler support include/my_sys.h: Initial Metrowerks CodeWarrior compiler support sql/sql_bitmap.h: Initial Metrowerks CodeWarrior compiler support cmd-line-utils/readline/terminal.c: Initial Metrowerks CodeWarrior compiler support --- cmd-line-utils/libedit/config.h | 2 ++ cmd-line-utils/readline/terminal.c | 2 +- configure.in | 23 +++++++++++++++++++++-- include/my_sys.h | 4 ++++ sql/sql_bitmap.h | 2 +- 5 files changed, 29 insertions(+), 4 deletions(-) diff --git a/cmd-line-utils/libedit/config.h b/cmd-line-utils/libedit/config.h index b6f002d5b9e..642123d1ddc 100644 --- a/cmd-line-utils/libedit/config.h +++ b/cmd-line-utils/libedit/config.h @@ -2,8 +2,10 @@ #include "my_config.h" #include "sys.h" +#if defined(LIBC_SCCS) && !defined(lint) #define __RCSID(x) #define __COPYRIGHT(x) +#endif #define __RENAME(x) #define _DIAGASSERT(x) diff --git a/cmd-line-utils/readline/terminal.c b/cmd-line-utils/readline/terminal.c index a506fa6de09..b2bcf5f146c 100644 --- a/cmd-line-utils/readline/terminal.c +++ b/cmd-line-utils/readline/terminal.c @@ -346,7 +346,7 @@ get_term_capabilities (bp) register unsigned int i; for (i = 0; i < NUM_TC_STRINGS; i++) -# ifdef __LCC__ +# if defined(__LCC__) || defined(__MWERKS__) *(tc_strings[i].tc_value) = tgetstr ((char *)tc_strings[i].tc_var, bp); # else *(tc_strings[i].tc_value) = tgetstr (tc_strings[i].tc_var, bp); diff --git a/configure.in b/configure.in index 6efdc56d450..b37f0b3c537 100644 --- a/configure.in +++ b/configure.in @@ -127,8 +127,25 @@ AC_PROG_MAKE_SET # This generates rules for webpage generation for the MySQL homepage. AM_CONDITIONAL(LOCAL, test -d ../web/SitePages) -# This is need before AC_PROG_CC -# +############################################################################## +# The below section needs to be done before AC_PROG_CC +############################################################################## + +# Hack for OS X/Darwin and Metrowerks CodeWarrior +AC_ARG_WITH(darwin-mwcc, +[ --with-darwin-mwcc Use Metrowerks CodeWarrior wrappers on OS X/Darwin],[ + builddir=`pwd` + ccwrapper="$builddir/support-files/MacOSX/mwcc-wrapper" + arwrapper="$builddir/support-files/MacOSX/mwar-wrapper" + CC="$ccwrapper" + CXX="$ccwrapper" + LD="$ccwrapper" + AR="$arwrapper" + RANLIB=: + export CC CXX LD AR RANLIB + AC_SUBST(AR) + AC_SUBST(RANLIB) +]) if test "x${CFLAGS-}" = x ; then cflags_is_set=no @@ -148,6 +165,8 @@ else ldflags_is_set=yes fi +################ End of section to be done before AC_PROG_CC ################# + # The following hack should ensure that configure doesn't add optimizing # or debugging flags to CFLAGS or CXXFLAGS # C_EXTRA_FLAGS are flags that are automaticly added to both diff --git a/include/my_sys.h b/include/my_sys.h index 7ead643a9c6..c9552f8558b 100644 --- a/include/my_sys.h +++ b/include/my_sys.h @@ -163,6 +163,10 @@ extern char *my_strdup_with_length(const byte *from, uint length, #if defined(_AIX) && !defined(__GNUC__) && !defined(_AIX43) #pragma alloca #endif /* _AIX */ +#if defined(__MWERKS__) +#undef alloca +#define alloca __alloca +#endif /* __MWERKS__ */ #if defined(__GNUC__) && !defined(HAVE_ALLOCA_H) && ! defined(alloca) #define alloca __builtin_alloca #endif /* GNUC */ diff --git a/sql/sql_bitmap.h b/sql/sql_bitmap.h index 5c51f3ecb67..2fd603d9381 100644 --- a/sql/sql_bitmap.h +++ b/sql/sql_bitmap.h @@ -91,7 +91,7 @@ template <> class Bitmap<64> ulonglong map; public: Bitmap<64>() { } -#if defined(__NETWARE__) +#if defined(__NETWARE__) || defined(__MWERKS__) /* Metwork compiler gives error on Bitmap<64> Changed to Bitmap, since in this case also it will proper construct From 8b5b75ec11a8180251f485bd1493923219156599 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 5 May 2005 12:24:10 +0500 Subject: [PATCH 11/29] Bug #5843: Server code does not check whether PID file was successfully written --- sql/mysqld.cc | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/sql/mysqld.cc b/sql/mysqld.cc index 682733abd89..8ade81401aa 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -6749,9 +6749,15 @@ static void create_pid_file() char buff[21], *end; end= int10_to_str((long) getpid(), buff, 10); *end++= '\n'; - (void) my_write(file, (byte*) buff, (uint) (end-buff),MYF(MY_WME)); + if (!my_write(file, (byte*) buff, (uint) (end-buff), MYF(MY_WME | MY_NABP))) + { + (void) my_close(file, MYF(0)); + return; + } (void) my_close(file, MYF(0)); } + sql_perror("Can't start server: can't create PID file"); + exit(1); } From 203543d1e73ec768cbd0ea636474eaeffd8537d7 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 5 May 2005 09:34:15 +0200 Subject: [PATCH 12/29] mwcc-wrapper, compile-darwin-mwcc, mwar-wrapper: Initial Metrowerks CodeWarrior compiler support new file support-files/MacOSX/mwar-wrapper: Initial Metrowerks CodeWarrior compiler support BUILD/compile-darwin-mwcc: Initial Metrowerks CodeWarrior compiler support support-files/MacOSX/mwcc-wrapper: Initial Metrowerks CodeWarrior compiler support --- BUILD/compile-darwin-mwcc | 54 +++++++++++++++++++++++++++++++ support-files/MacOSX/mwar-wrapper | 16 +++++++++ support-files/MacOSX/mwcc-wrapper | 48 +++++++++++++++++++++++++++ 3 files changed, 118 insertions(+) create mode 100755 BUILD/compile-darwin-mwcc create mode 100755 support-files/MacOSX/mwar-wrapper create mode 100755 support-files/MacOSX/mwcc-wrapper diff --git a/BUILD/compile-darwin-mwcc b/BUILD/compile-darwin-mwcc new file mode 100755 index 00000000000..6fd0eab7e26 --- /dev/null +++ b/BUILD/compile-darwin-mwcc @@ -0,0 +1,54 @@ +#! /bin/sh + +path=`dirname $0` +. "$path/SETUP.sh" + +c_warnings="" +cxx_warnings="" +fast_cflags="-O3" +base_cxxflags="-fno-handle-exceptions" + +# FIXME do we need to link static, not to depend on CodeWarrior libs? + +if [ x$MODE = x ] ; then + echo "You need to give an argument, 'standard', 'max', 'debug' or 'debug-max'" + echo "Like: MODE=standard BUILD/compile-darwin-codewarrior" + exit 1 +else + case $MODE in + standard|pro-gpl) + # FIXME pro/pro-gpl different libedit/readline + extra_flags="$ppc_cflags $fast_cflags" + ;; + pro) + # FIXME pro/pro-gpl different libedit/readline + extra_flags="$ppc_cflags $fast_cflags" + extra_configs="--with-libedit" + ;; + max) + extra_flags="$ppc_cflags $fast_cflags" + extra_configs="$max_configs" + ;; + debug) + extra_flags="$ppc_cflags $debug_cflags" + c_warnings="$c_warnings $debug_extra_warnings" + cxx_warnings="$cxx_warnings $debug_extra_warnings" + extra_configs="$debug_configs" + ;; + debug-max) + extra_flags="$ppc_cflags $debug_cflags $max_cflags" + c_warnings="$c_warnings $debug_extra_warnings" + cxx_warnings="$cxx_warnings $debug_extra_warnings" + extra_configs="$debug_configs $max_configs" + ;; + *) + echo "You need to give an argument, 'standard', 'max', 'debug' or 'debug-max'" + echo "Like: MODE=standard BUILD/compile-darwin-codewarrior" + exit 1 + ;; + esac +fi + +extra_configs="$extra_configs --with-darwin-mwcc" + +. "$path/FINISH.sh" diff --git a/support-files/MacOSX/mwar-wrapper b/support-files/MacOSX/mwar-wrapper new file mode 100755 index 00000000000..4bc5153e7ef --- /dev/null +++ b/support-files/MacOSX/mwar-wrapper @@ -0,0 +1,16 @@ +#!/bin/sh + +# This script can only create a library, not take it apart +# again to AR files + +case $1 in + -d*|-m*|-t*|-p*|-r*|-x*|x) + echo "$0: can't handle arguments $*" + exit 1; + ;; + -c|c|cr|cru|cu) + shift; + ;; +esac + +exec mwld -lib -o $* diff --git a/support-files/MacOSX/mwcc-wrapper b/support-files/MacOSX/mwcc-wrapper new file mode 100755 index 00000000000..914578aca1d --- /dev/null +++ b/support-files/MacOSX/mwcc-wrapper @@ -0,0 +1,48 @@ +#!/bin/sh + +if [ -z "$CWINSTALL" ] ; then + echo "ERROR: You need to source 'mwvars' to set CWINSTALL and other variables" + exit 1 +fi + +if [ `expr "$MWMacOSXPPCLibraryFiles" : ".*BSD.*"` = 0 ] ; then + echo "ERROR: You need to source 'mwvars' with the 'bsd' argument" + exit 1 +fi + +# ============================================================================== + +# Extra options that don't change + +PREOPTS="-D__SCHAR_MAX__=127 -D__CHAR_BIT__=8 -ext o -gccinc" +PREOPTS="$PREOPTS -wchar_t on -bool on -relax_pointers -align power_gcc" +PREOPTS="$PREOPTS -stabs all -fno-handle-exceptions -Cpp_exceptions off" + +# ============================================================================== + +# We want the "PPC Specific" directory to be last, before the source +# file. It is to work around a CodeWarrior/Apple bug, that we need a +# Metrowersk header even though we have configured CodeWarrior to use +# the BSD headers. But not to conflict, the directory has to be last. + +# FIXME this will probably break if one path contains space characters + +PREARGS="" +for i in $* ; do + case "$i" in + -bind_at_load) + # This is a flag some version of libtool adds, when the host + # is "*darwin*". It doesn't check that it is gcc. + # FIXME add some flag?! + ;; + *.c|*.cc|*.cpp) + break + ;; + *) + PREARGS="$PREARGS $1" + ;; + esac + shift +done +#echo "mwcc $PREOPTS $PREARGS -I\"$CWINSTALL/MacOS X Support/Headers/PPC Specific\" $*" +exec mwcc $PREOPTS $PREARGS -I"$CWINSTALL/MacOS X Support/Headers/PPC Specific" $* From c758512a9176b40532f8431e7771f8dbeed77111 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 5 May 2005 12:55:09 +0400 Subject: [PATCH 13/29] A fix and test case for Bug#9777 " Empty set returned by Prepared Statement when it should return a non empty one" (see comments for the changed files for details). mysql-test/r/ps.result: A test case for Bug#9777: tests results fixed. mysql-test/t/ps.test: A test case for Bug#9777 sql/item.cc: A fix for Bug#9777: when creating a constant item from within Item_int_with_ref::new_item, create the item by value, not by name. This should work with prepared statements placeholders. Item_int_with_ref is a special optimization case used when we compare datetime constants with datetime value. Converting the item to integer early is OK as it is in line with the purpose of Item_int_with_ref - to speed up comparison by using integers. Minor cleanups. sql/item.h: Declaration for Item_int_with_ref::new_item --- mysql-test/r/ps.result | 38 ++++++++++++++++++++++++++++++++++ mysql-test/t/ps.test | 47 ++++++++++++++++++++++++++++++++++++++++++ sql/item.cc | 24 ++++++++++++++++++++- sql/item.h | 7 ++----- 4 files changed, 110 insertions(+), 6 deletions(-) diff --git a/mysql-test/r/ps.result b/mysql-test/r/ps.result index df3e24afd1a..d66114fe44e 100644 --- a/mysql-test/r/ps.result +++ b/mysql-test/r/ps.result @@ -519,3 +519,41 @@ c1 c2 200887 860 200887 200887 deallocate prepare stmt; +drop table t1; +create table t1 ( +id bigint(20) not null auto_increment, +code varchar(20) character set utf8 collate utf8_bin not null default '', +company_name varchar(250) character set utf8 collate utf8_bin default null, +setup_mode tinyint(4) default null, +start_date datetime default null, +primary key (id), unique key code (code) +); +create table t2 ( +id bigint(20) not null auto_increment, +email varchar(250) character set utf8 collate utf8_bin default null, +name varchar(250) character set utf8 collate utf8_bin default null, +t1_id bigint(20) default null, +password varchar(250) character set utf8 collate utf8_bin default null, +primary_contact tinyint(4) not null default '0', +email_opt_in tinyint(4) not null default '1', +primary key (id), unique key email (email), key t1_id (t1_id), +constraint t2_fk1 foreign key (t1_id) references t1 (id) +); +insert into t1 values +(1, 'demo', 'demo s', 0, current_date()), +(2, 'code2', 'name 2', 0, current_date()), +(3, 'code3', 'name 3', 0, current_date()); +insert into t2 values +(2, 'email1', 'name1', 3, 'password1', 0, 0), +(3, 'email2', 'name1', 1, 'password2', 1, 0), +(5, 'email3', 'name3', 2, 'password3', 0, 0); +prepare stmt from 'select t2.id from t2, t1 where (t1.id=? and t2.t1_id=t1.id)'; +set @a=1; +execute stmt using @a; +id +3 +select t2.id from t2, t1 where (t1.id=1 and t2.t1_id=t1.id); +id +3 +deallocate prepare stmt; +drop table t1, t2; diff --git a/mysql-test/t/ps.test b/mysql-test/t/ps.test index ef36b8b1b0b..96b83a09497 100644 --- a/mysql-test/t/ps.test +++ b/mysql-test/t/ps.test @@ -522,3 +522,50 @@ set @a=200887, @b=860; # this query did not return all matching rows execute stmt using @a, @b; deallocate prepare stmt; +drop table t1; + +# +# Bug#9777 - another occurrence of the problem stated in Bug#9096: +# we can not compare basic constants by their names, because a placeholder +# is a basic constant while his name is always '?' +# + +create table t1 ( + id bigint(20) not null auto_increment, + code varchar(20) character set utf8 collate utf8_bin not null default '', + company_name varchar(250) character set utf8 collate utf8_bin default null, + setup_mode tinyint(4) default null, + start_date datetime default null, + primary key (id), unique key code (code) +); + +create table t2 ( + id bigint(20) not null auto_increment, + email varchar(250) character set utf8 collate utf8_bin default null, + name varchar(250) character set utf8 collate utf8_bin default null, + t1_id bigint(20) default null, + password varchar(250) character set utf8 collate utf8_bin default null, + primary_contact tinyint(4) not null default '0', + email_opt_in tinyint(4) not null default '1', + primary key (id), unique key email (email), key t1_id (t1_id), + constraint t2_fk1 foreign key (t1_id) references t1 (id) +); + +insert into t1 values +(1, 'demo', 'demo s', 0, current_date()), +(2, 'code2', 'name 2', 0, current_date()), +(3, 'code3', 'name 3', 0, current_date()); + +insert into t2 values +(2, 'email1', 'name1', 3, 'password1', 0, 0), +(3, 'email2', 'name1', 1, 'password2', 1, 0), +(5, 'email3', 'name3', 2, 'password3', 0, 0); + +prepare stmt from 'select t2.id from t2, t1 where (t1.id=? and t2.t1_id=t1.id)'; +set @a=1; +execute stmt using @a; + +select t2.id from t2, t1 where (t1.id=1 and t2.t1_id=t1.id); + +deallocate prepare stmt; +drop table t1, t2; diff --git a/sql/item.cc b/sql/item.cc index 7e74bb1fd85..211e165cc6b 100644 --- a/sql/item.cc +++ b/sql/item.cc @@ -769,6 +769,13 @@ Item_uint::Item_uint(const char *str_arg, uint length): } +Item_uint::Item_uint(const char *str_arg, longlong i, uint length): + Item_int(str_arg, i, length) +{ + unsigned_flag= 1; +} + + String *Item_uint::val_str(String *str) { // following assert is redundant, because fixed=1 assigned in constructor @@ -1377,7 +1384,9 @@ Item_param::new_item() case NULL_VALUE: return new Item_null(name); case INT_VALUE: - return new Item_int(name, value.integer, max_length); + return (unsigned_flag ? + new Item_uint(name, value.integer, max_length) : + new Item_int(name, value.integer, max_length)); case REAL_VALUE: return new Item_real(name, value.real, decimals, max_length); case STRING_VALUE: @@ -2023,6 +2032,19 @@ bool Item_int::eq(const Item *arg, bool binary_cmp) const } +Item *Item_int_with_ref::new_item() +{ + DBUG_ASSERT(ref->basic_const_item()); + /* + We need to evaluate the constant to make sure it works with + parameter markers. + */ + return (ref->unsigned_flag ? + new Item_uint(ref->name, ref->val_int(), ref->max_length) : + new Item_int(ref->name, ref->val_int(), ref->max_length)); +} + + Item_num *Item_uint::neg() { return new Item_real(name, - ((double) value), 0, max_length); diff --git a/sql/item.h b/sql/item.h index 3f3ff491bb5..6f1f56451ab 100644 --- a/sql/item.h +++ b/sql/item.h @@ -651,6 +651,7 @@ class Item_uint :public Item_int { public: Item_uint(const char *str_arg, uint length); + Item_uint(const char *str_arg, longlong i, uint length); Item_uint(uint32 i) :Item_int((longlong) i, 10) { unsigned_flag= 1; } double val() @@ -1046,11 +1047,7 @@ public: { return ref->save_in_field(field, no_conversions); } - Item *new_item() - { - return (ref->unsigned_flag)? new Item_uint(ref->name, ref->max_length) : - new Item_int(ref->name, ref->max_length); - } + Item *new_item(); }; From 936c84989e9fb4307983ce6fa94e23d5cf29dab9 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 5 May 2005 17:17:55 +0500 Subject: [PATCH 14/29] A fix (bug #10179: error in default value setting). include/my_handler.h: A fix (bug #10179: error in default value setting). Proper masks added: we should not touch extra bits. sql/key.cc: A fix (bug #10179: error in default value setting). Unnecessary code removed. sql/unireg.cc: A fix (bug #10179: error in default value setting). 1. we should take into account uneven bits (for bit fields) stored among NULL bits. 2. changed code which sets NULL bits for fields. 3. changed code which sets unused bits after NULL bits. 4. unused variables removed. BitKeeper/etc/logging_ok: Logging to logging@openlogging.org accepted --- BitKeeper/etc/logging_ok | 1 + include/my_handler.h | 5 +++-- mysql-test/r/type_bit.result | 21 +++++++++++++++++++++ mysql-test/t/type_bit.test | 22 ++++++++++++++++++++++ sql/key.cc | 6 ------ sql/unireg.cc | 21 ++++++++++++--------- 6 files changed, 59 insertions(+), 17 deletions(-) diff --git a/BitKeeper/etc/logging_ok b/BitKeeper/etc/logging_ok index 346dcae3cfd..0ddc8b2d996 100644 --- a/BitKeeper/etc/logging_ok +++ b/BitKeeper/etc/logging_ok @@ -217,6 +217,7 @@ ram@deer.(none) ram@gw.mysql.r18.ru ram@gw.udmsearch.izhnet.ru ram@mysql.r18.ru +ram@ram-book.(none) ram@ram.(none) ramil@mysql.com ranger@regul.home.lan diff --git a/include/my_handler.h b/include/my_handler.h index cad15d5471f..c076ba0c2c9 100644 --- a/include/my_handler.h +++ b/include/my_handler.h @@ -72,10 +72,11 @@ typedef struct st_HA_KEYSEG /* Key-portion */ #define set_rec_bits(bits, bit_ptr, bit_ofs, bit_len) \ { \ - (bit_ptr)[0]= ((bit_ptr)[0] & ((1 << (bit_ofs)) - 1)) | \ + (bit_ptr)[0]= ((bit_ptr)[0] & ~(((1 << (bit_len)) - 1) << (bit_ofs))) | \ ((bits) << (bit_ofs)); \ if ((bit_ofs) + (bit_len) > 8) \ - (bit_ptr)[1]= ((bits) & ((1 << (bit_len)) - 1)) >> (8 - (bit_ofs)); \ + (bit_ptr)[1]= ((bit_ptr)[1] & ~((1 << ((bit_len) - 8 + (bit_ofs))) - 1)) | \ + ((bits) >> (8 - (bit_ofs))); \ } #define clr_rec_bits(bit_ptr, bit_ofs, bit_len) \ diff --git a/mysql-test/r/type_bit.result b/mysql-test/r/type_bit.result index b0cd4150c9d..64c9a11b3cd 100644 --- a/mysql-test/r/type_bit.result +++ b/mysql-test/r/type_bit.result @@ -437,3 +437,24 @@ a+0 b+0 2303 2 12345 4 drop table t1, t2; +create table t1 (a int, b time, c tinyint, d bool, e char(10), f bit(1), +g bit(1) NOT NULL default 1, h char(1) default 'a'); +insert into t1 set a=1; +select hex(g), h from t1; +hex(g) h +1 a +drop table t1; +create table t1 (a int, b time, c tinyint, d bool, e char(10), f bit(1), +g bit(1) NOT NULL default 1); +insert into t1 set a=1; +select hex(g) from t1; +hex(g) +1 +drop table t1; +create table t1 (a int, b time, c tinyint, d bool, e char(10), f bit(1), +h char(1) default 'a') engine=myisam; +insert into t1 set a=1; +select h from t1; +h +a +drop table t1; diff --git a/mysql-test/t/type_bit.test b/mysql-test/t/type_bit.test index 1fbcf01d5a6..19d16f95990 100644 --- a/mysql-test/t/type_bit.test +++ b/mysql-test/t/type_bit.test @@ -140,3 +140,25 @@ drop table t1; create table t1 select * from t2; select a+0, b+0 from t1; drop table t1, t2; + +# +# Bug #10179: problem with NULLs and default values +# + +create table t1 (a int, b time, c tinyint, d bool, e char(10), f bit(1), + g bit(1) NOT NULL default 1, h char(1) default 'a'); +insert into t1 set a=1; +select hex(g), h from t1; +drop table t1; + +create table t1 (a int, b time, c tinyint, d bool, e char(10), f bit(1), + g bit(1) NOT NULL default 1); +insert into t1 set a=1; +select hex(g) from t1; +drop table t1; + +create table t1 (a int, b time, c tinyint, d bool, e char(10), f bit(1), + h char(1) default 'a') engine=myisam; +insert into t1 set a=1; +select h from t1; +drop table t1; diff --git a/sql/key.cc b/sql/key.cc index 3299c3db8f8..4bd71d2fa47 100644 --- a/sql/key.cc +++ b/sql/key.cc @@ -197,12 +197,6 @@ void key_restore(byte *to_record, byte *from_key, KEY *key_info, (key_part->null_bit == 128), field->bit_ofs, field->bit_len); } - else - { - clr_rec_bits(to_record + key_part->null_offset + - (key_part->null_bit == 128), - field->bit_ofs, field->bit_len); - } } if (key_part->key_part_flag & HA_BLOB_PART) { diff --git a/sql/unireg.cc b/sql/unireg.cc index 95a383e0f01..e29b97a3f03 100644 --- a/sql/unireg.cc +++ b/sql/unireg.cc @@ -647,7 +647,7 @@ static bool make_empty_rec(THD *thd, File file,enum db_type table_type, { int error; Field::utype type; - uint firstpos,null_count,null_length; + uint null_count; uchar *buff,*null_pos; TABLE table; create_field *field; @@ -671,15 +671,14 @@ static bool make_empty_rec(THD *thd, File file,enum db_type table_type, table.s->db_low_byte_first= handler->low_byte_first(); table.s->blob_ptr_size= portable_sizeof_char_ptr; - firstpos=reclength; null_count=0; if (!(table_options & HA_OPTION_PACK_RECORD)) { null_fields++; // Need one bit for delete mark null_count++; + *buff|= 1; } - bfill(buff,(null_length=(null_fields+7)/8),255); - null_pos= buff + null_count / 8; + null_pos= buff; List_iterator it(create_fields); thd->count_cuted_fields= CHECK_FIELD_WARN; // To find wrong default values @@ -689,7 +688,7 @@ static bool make_empty_rec(THD *thd, File file,enum db_type table_type, regfield don't have to be deleted as it's allocated with sql_alloc() */ Field *regfield=make_field((char*) buff+field->offset,field->length, - null_pos, + null_pos + null_count / 8, null_count & 7, field->pack_flag, field->sql_type, @@ -703,11 +702,13 @@ static bool make_empty_rec(THD *thd, File file,enum db_type table_type, goto err; // End of memory if (!(field->flags & NOT_NULL_FLAG)) + { + *regfield->null_ptr|= regfield->null_bit; null_count++; + } - if ((uint) field->offset < firstpos && - regfield->type() != FIELD_TYPE_NULL) - firstpos= field->offset; + if (field->sql_type == FIELD_TYPE_BIT && !f_bit_as_char(field->pack_flag)) + null_count+= field->length & 7; type= (Field::utype) MTYP_TYPENR(field->unireg_check); @@ -737,7 +738,9 @@ static bool make_empty_rec(THD *thd, File file,enum db_type table_type, } /* Fill not used startpos */ - bfill((byte*) buff+null_length,firstpos-null_length,255); + if (null_count) + *(null_pos + null_count / 8)|= ~(((uchar) 1 << (null_count & 7)) - 1); + error=(int) my_write(file,(byte*) buff,(uint) reclength,MYF_RW); err: From af12ff656852b528e64fef7e4894ee4a33698fd8 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 5 May 2005 14:20:53 +0200 Subject: [PATCH 15/29] Approximative fixes for BUG#2610,2611,9100 i.e. WL#2146 binlogging/replication of routines (stored procs and functions). Approximative, because it's using our binlogging way (what we call "query"-level) and this is not as good as record-level binlog (5.1) would be. It imposes several limitations to routines, and has caveats (which I'll document, and for which the server will try to issue errors but that is not always possible). Reason I don't propagate caller info to the binlog as planned is that on master and slave users may be different; even with that some caveats would remain. mysql-test/mysql-test-run.sh: In the testsuite we know what we do, we are not creating nasty routines, and breaking binlog is ok except in rpl_sp. mysql-test/r/blackhole.result: Updating results now that 4.1 has been merged mysql-test/valgrind.supp: Some suppressions for Valgrind (useful on my machine Suse 9.1); this is just adding to the already existing suppressions of pthread and dl. sql/item_func.cc: Don't binlog the substatements when executing a function. If the function is declared to modify data and does not complete, warning "broken binlog". Note that SELECT myfunc() will not be binlogged even if myfunc() updates data (will be documented); but INSERT INTO t VALUES(myfunc()) will be binlogged (what decides is if the caller gets binlogged; the function changes nothing to binlogging). sql/log_event.cc: Just making functions which can be re-used when we binlog more strings in status_vars in Query_log_event (e.g. one day "user", "host"). sql/log_event.h: comment sql/mysql_priv.h: --log-bin-trust-routine-creators sql/mysqld.cc: --log-bin-trust-routine-creators sql/set_var.cc: --log-bin-trust-routine-creators sql/share/errmsg.txt: error messages to warn about problems with routines and binlog sql/slave.cc: If in a routine, replication table inclusion/exclusion rules always answer "replicate!" (see comment in code). sql/sp.cc: If binlog is on: errors if one wants to create a non-deterministic update routine (repeatability problem - note that the test is not perfect for functions) or does not have SUPER (because routines can easily be made to destroy slave's data with just CREATE ROUTINE and EXECUTE priv on master). --log-bin-trust-routine-creators removes these errors. Binlogging of CREATE PROCEDURE|FUNCTION. sql/sql_acl.cc: No thd==0 in tables_ok(). sql/sql_parse.cc: Binlogging of CALL (and not of the substatements of the SP). If SP returns error, we don't binlog it (see comment); we push warning in this case. Binlogging of ALTER|DROP PROCEDURE|FUNCTION with safety messages. --- mysql-test/mysql-test-run.sh | 3 + mysql-test/r/blackhole.result | 8 +- mysql-test/r/rpl_sp.result | 235 +++++++++++++++++++++++++++++++++ mysql-test/t/rpl_sp-master.opt | 1 + mysql-test/t/rpl_sp-slave.opt | 1 + mysql-test/t/rpl_sp.test | 233 ++++++++++++++++++++++++++++++++ mysql-test/valgrind.supp | 40 ++++++ sql/item_func.cc | 15 +++ sql/log_event.cc | 62 +++++---- sql/log_event.h | 5 +- sql/mysql_priv.h | 2 +- sql/mysqld.cc | 14 +- sql/set_var.cc | 5 + sql/share/errmsg.txt | 6 + sql/slave.cc | 26 +++- sql/sp.cc | 42 +++++- sql/sql_acl.cc | 10 +- sql/sql_parse.cc | 69 +++++++++- 18 files changed, 733 insertions(+), 44 deletions(-) create mode 100644 mysql-test/r/rpl_sp.result create mode 100644 mysql-test/t/rpl_sp-master.opt create mode 100644 mysql-test/t/rpl_sp-slave.opt create mode 100644 mysql-test/t/rpl_sp.test diff --git a/mysql-test/mysql-test-run.sh b/mysql-test/mysql-test-run.sh index fb0b6c5c2a7..1a648f98b1b 100644 --- a/mysql-test/mysql-test-run.sh +++ b/mysql-test/mysql-test-run.sh @@ -1187,6 +1187,7 @@ start_master() --language=$LANGUAGE \ --innodb_data_file_path=ibdata1:128M:autoextend \ --open-files-limit=1024 \ + --log-bin-trust-routine-creators \ $MASTER_40_ARGS \ $SMALL_SERVER \ $EXTRA_MASTER_OPT $EXTRA_MASTER_MYSQLD_OPT \ @@ -1207,6 +1208,7 @@ start_master() --tmpdir=$MYSQL_TMP_DIR \ --language=$LANGUAGE \ --innodb_data_file_path=ibdata1:128M:autoextend \ + --log-bin-trust-routine-creators \ $MASTER_40_ARGS \ $SMALL_SERVER \ $EXTRA_MASTER_OPT $EXTRA_MASTER_MYSQLD_OPT \ @@ -1339,6 +1341,7 @@ start_slave() --report-port=$slave_port \ --master-retry-count=10 \ -O slave_net_timeout=10 \ + --log-bin-trust-routine-creators \ $SMALL_SERVER \ $EXTRA_SLAVE_OPT $EXTRA_SLAVE_MYSQLD_OPT" CUR_MYERR=$slave_err diff --git a/mysql-test/r/blackhole.result b/mysql-test/r/blackhole.result index 66752b11655..38e548490fe 100644 --- a/mysql-test/r/blackhole.result +++ b/mysql-test/r/blackhole.result @@ -105,8 +105,8 @@ a select * from t3; a show binlog events; -Log_name Pos Event_type Server_id Orig_log_pos Info -master-bin.000001 # Start 1 # Server ver: VERSION, Binlog ver: 3 +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Format_desc 1 # Server ver: VERSION, Binlog ver: 4 master-bin.000001 # Query 1 # use `test`; drop table t1,t2 master-bin.000001 # Query 1 # use `test`; create table t1 (a int) engine=blackhole master-bin.000001 # Query 1 # use `test`; delete from t1 where a=10 @@ -115,8 +115,8 @@ master-bin.000001 # Query 1 # use `test`; insert into t1 values(1) master-bin.000001 # Query 1 # use `test`; insert ignore into t1 values(1) master-bin.000001 # Query 1 # use `test`; replace into t1 values(100) master-bin.000001 # Query 1 # use `test`; create table t2 (a varchar(200)) engine=blackhole -master-bin.000001 # Create_file 1 # db=test;table=t2;file_id=1;block_len=581 -master-bin.000001 # Exec_load 1 # ;file_id=1 +master-bin.000001 # Begin_load_query 1 # ;file_id=1;block_len=581 +master-bin.000001 # Execute_load_query 1 # use `test`; load data infile '../../std_data/words.dat' into table t2 ;file_id=1 master-bin.000001 # Query 1 # use `test`; alter table t1 add b int master-bin.000001 # Query 1 # use `test`; alter table t1 drop b master-bin.000001 # Query 1 # use `test`; create table t3 like t1 diff --git a/mysql-test/r/rpl_sp.result b/mysql-test/r/rpl_sp.result new file mode 100644 index 00000000000..be93e51e34b --- /dev/null +++ b/mysql-test/r/rpl_sp.result @@ -0,0 +1,235 @@ +stop slave; +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +reset master; +reset slave; +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +start slave; +create database if not exists mysqltest1; +use mysqltest1; +create table t1 (a varchar(100)); +use mysqltest1; +drop procedure if exists foo; +drop procedure if exists foo2; +drop procedure if exists foo3; +drop procedure if exists foo4; +drop procedure if exists bar; +drop function if exists fn1; +create procedure foo() +begin +declare b int; +set b = 8; +insert into t1 values (b); +insert into t1 values (unix_timestamp()); +end| +ERROR HY000: This routine is declared to be non-deterministic and to modify data and binary logging is enabled (you *might* want to use the less safe log_bin_trust_routine_creators variable) +show binlog events from 98| +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query 1 # create database if not exists mysqltest1 +master-bin.000001 # Query 1 # use `mysqltest1`; create table t1 (a varchar(100)) +create procedure foo() deterministic +begin +declare b int; +set b = 8; +insert into t1 values (b); +insert into t1 values (unix_timestamp()); +end| +select * from mysql.proc where name='foo' and db='mysqltest1'; +db name type specific_name language sql_data_access is_deterministic security_type param_list returns body definer created modified sql_mode comment +mysqltest1 foo PROCEDURE foo SQL CONTAINS_SQL YES DEFINER begin +declare b int; +set b = 8; +insert into t1 values (b); +insert into t1 values (unix_timestamp()); +end root@localhost # # +select * from mysql.proc where name='foo' and db='mysqltest1'; +db name type specific_name language sql_data_access is_deterministic security_type param_list returns body definer created modified sql_mode comment +mysqltest1 foo PROCEDURE foo SQL CONTAINS_SQL YES DEFINER begin +declare b int; +set b = 8; +insert into t1 values (b); +insert into t1 values (unix_timestamp()); +end @ # # +set timestamp=1000000000; +call foo(); +show binlog events from 308; +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query 1 # use `mysqltest1`; create procedure foo() deterministic +begin +declare b int; +set b = 8; +insert into t1 values (b); +insert into t1 values (unix_timestamp()); +end +master-bin.000001 # Query 1 # use `mysqltest1`; call foo() +select * from t1; +a +8 +1000000000 +select * from t1; +a +8 +1000000000 +delete from t1; +create procedure foo2() +not deterministic +reads sql data +select * from mysqltest1.t1; +call foo2(); +a +show binlog events from 605; +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query 1 # use `mysqltest1`; delete from t1 +master-bin.000001 # Query 1 # use `mysqltest1`; create procedure foo2() +not deterministic +reads sql data +select * from mysqltest1.t1 +alter procedure foo2 contains sql; +ERROR HY000: This routine is declared to be non-deterministic and to modify data and binary logging is enabled (you *might* want to use the less safe log_bin_trust_routine_creators variable) +drop table t1; +create table t1 (a int); +create table t2 like t1; +create procedure foo3() +deterministic +insert into t1 values (15); +grant CREATE ROUTINE, EXECUTE on mysqltest1.* to "zedjzlcsjhd"@127.0.0.1; +grant SELECT on mysqltest1.t1 to "zedjzlcsjhd"@127.0.0.1; +grant SELECT, INSERT on mysqltest1.t2 to "zedjzlcsjhd"@127.0.0.1; +create procedure foo4() +deterministic +insert into t1 values (10); +ERROR HY000: You do not have SUPER privilege and binary logging is enabled (you *might* want to use the less safe log_bin_trust_routine_creators variable) +set global log_bin_trust_routine_creators=1; +create procedure foo4() +deterministic +begin +insert into t2 values(3); +insert into t1 values (5); +end| +call foo4(); +ERROR 42000: INSERT command denied to user 'zedjzlcsjhd'@'localhost' for table 't1' +show warnings; +Level Code Message +Warning 1417 A routine failed and is declared to modify data and binary logging is enabled; if non-transactional tables were updated, the binary log will miss their changes +call foo3(); +show warnings; +Level Code Message +call foo4(); +ERROR 42000: INSERT command denied to user 'zedjzlcsjhd'@'localhost' for table 't1' +show warnings; +Level Code Message +Warning 1417 A routine failed and is declared to modify data and binary logging is enabled; if non-transactional tables were updated, the binary log will miss their changes +alter procedure foo4 sql security invoker; +call foo4(); +show warnings; +Level Code Message +show binlog events from 841; +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query 1 # use `mysqltest1`; drop table t1 +master-bin.000001 # Query 1 # use `mysqltest1`; create table t1 (a int) +master-bin.000001 # Query 1 # use `mysqltest1`; create table t2 like t1 +master-bin.000001 # Query 1 # use `mysqltest1`; create procedure foo3() +deterministic +insert into t1 values (15) +master-bin.000001 # Query 1 # use `mysqltest1`; grant CREATE ROUTINE, EXECUTE on mysqltest1.* to "zedjzlcsjhd"@127.0.0.1 +master-bin.000001 # Query 1 # use `mysqltest1`; grant SELECT on mysqltest1.t1 to "zedjzlcsjhd"@127.0.0.1 +master-bin.000001 # Query 1 # use `mysqltest1`; grant SELECT, INSERT on mysqltest1.t2 to "zedjzlcsjhd"@127.0.0.1 +master-bin.000001 # Query 1 # use `mysqltest1`; create procedure foo4() +deterministic +begin +insert into t2 values(3); +insert into t1 values (5); +end +master-bin.000001 # Query 1 # use `mysqltest1`; call foo3() +master-bin.000001 # Query 1 # use `mysqltest1`; alter procedure foo4 sql security invoker +master-bin.000001 # Query 1 # use `mysqltest1`; call foo4() +select * from t1; +a +15 +5 +select * from t2; +a +3 +3 +3 +select * from t1; +a +15 +5 +select * from t2; +a +3 +select if(compte<>3,"this is broken but documented","this unexpectedly works?") from (select count(*) as compte from t2) as aggreg; +if(compte<>3,"this is broken but documented","this unexpectedly works?") +this is broken but documented +select * from mysql.proc where name="foo4" and db='mysqltest1'; +db name type specific_name language sql_data_access is_deterministic security_type param_list returns body definer created modified sql_mode comment +mysqltest1 foo4 PROCEDURE foo4 SQL CONTAINS_SQL YES INVOKER begin +insert into t2 values(3); +insert into t1 values (5); +end @ # # +drop procedure foo4; +select * from mysql.proc where name="foo4" and db='mysqltest1'; +db name type specific_name language sql_data_access is_deterministic security_type param_list returns body definer created modified sql_mode comment +select * from mysql.proc where name="foo4" and db='mysqltest1'; +db name type specific_name language sql_data_access is_deterministic security_type param_list returns body definer created modified sql_mode comment +drop procedure foo; +drop procedure foo2; +drop procedure foo3; +create function fn1(x int) +returns int +deterministic +begin +insert into t1 values (x); +return x+2; +end| +delete t1,t2 from t1,t2; +select fn1(20); +fn1(20) +22 +insert into t2 values(fn1(21)); +select * from t1; +a +21 +20 +select * from t2; +a +23 +select * from t1; +a +21 +select if(compte<>1,"this is broken but documented","this unexpectedly works?") from (select count(*) as compte from t1 where a=20) as aggreg; +if(compte<>1,"this is broken but documented","this unexpectedly works?") +this is broken but documented +select * from t2; +a +23 +drop function fn1; +create function fn1() +returns int +deterministic +begin +return unix_timestamp(); +end| +delete from t1; +set timestamp=1000000000; +insert into t1 values(fn1()); +select * from mysql.proc where db='mysqltest1'; +db name type specific_name language sql_data_access is_deterministic security_type param_list returns body definer created modified sql_mode comment +mysqltest1 fn1 FUNCTION fn1 SQL CONTAINS_SQL YES DEFINER int(11) begin +return unix_timestamp(); +end root@localhost # # +select * from t1; +a +1000000000 +use mysqltest1; +select * from t1; +a +1000000000 +select * from mysql.proc where db='mysqltest1'; +db name type specific_name language sql_data_access is_deterministic security_type param_list returns body definer created modified sql_mode comment +mysqltest1 fn1 FUNCTION fn1 SQL CONTAINS_SQL YES DEFINER int(11) begin +return unix_timestamp(); +end @ # # +drop function fn1; +drop database mysqltest1; +drop user "zedjzlcsjhd"@127.0.0.1; diff --git a/mysql-test/t/rpl_sp-master.opt b/mysql-test/t/rpl_sp-master.opt new file mode 100644 index 00000000000..709a224fd92 --- /dev/null +++ b/mysql-test/t/rpl_sp-master.opt @@ -0,0 +1 @@ +--log_bin_trust_routine_creators=0 diff --git a/mysql-test/t/rpl_sp-slave.opt b/mysql-test/t/rpl_sp-slave.opt new file mode 100644 index 00000000000..709a224fd92 --- /dev/null +++ b/mysql-test/t/rpl_sp-slave.opt @@ -0,0 +1 @@ +--log_bin_trust_routine_creators=0 diff --git a/mysql-test/t/rpl_sp.test b/mysql-test/t/rpl_sp.test new file mode 100644 index 00000000000..c87585a138c --- /dev/null +++ b/mysql-test/t/rpl_sp.test @@ -0,0 +1,233 @@ +# Test of replication of stored procedures (WL#2146 for MySQL 5.0) + +source include/master-slave.inc; + +# First let's test replication of current_user() (that's a related thing) +# we need a db != test, where we don't have automatic grants +create database if not exists mysqltest1; +use mysqltest1; +create table t1 (a varchar(100)); +sync_slave_with_master; +use mysqltest1; + +# ********************** PART 1 : STORED PROCEDURES *************** + +# Does the same proc as on master get inserted into mysql.proc ? +# (same definer, same properties...) + +connection master; +# cleanup +--disable_warnings +drop procedure if exists foo; +drop procedure if exists foo2; +drop procedure if exists foo3; +drop procedure if exists foo4; +drop procedure if exists bar; +drop function if exists fn1; +--enable_warnings + +delimiter |; +--error 1418; # not deterministic +create procedure foo() +begin + declare b int; + set b = 8; + insert into t1 values (b); + insert into t1 values (unix_timestamp()); +end| + +--replace_column 2 # 5 # +show binlog events from 98| # check that not there + +create procedure foo() deterministic +begin + declare b int; + set b = 8; + insert into t1 values (b); + insert into t1 values (unix_timestamp()); +end| +delimiter ;| + +# we replace columns having times +# (even with fixed timestamp displayed time may changed based on TZ) +--replace_result localhost.localdomain localhost 127.0.0.1 localhost +--replace_column 13 # 14 # +select * from mysql.proc where name='foo' and db='mysqltest1'; +sync_slave_with_master; +--replace_result localhost.localdomain localhost 127.0.0.1 localhost +--replace_column 13 # 14 # +select * from mysql.proc where name='foo' and db='mysqltest1'; + +# Now when we call it, does the CALL() get into binlog, +# or the substatements? +connection master; +# see if timestamp used in SP on slave is same as on master +set timestamp=1000000000; +call foo(); +--replace_column 2 # 5 # +show binlog events from 308; +select * from t1; +sync_slave_with_master; +select * from t1; + +# Now a SP which is supposed to not update tables (CALL should not be +# binlogged) as it's "read sql data", so should not give error even if +# non-deterministic. + +connection master; +delete from t1; +create procedure foo2() + not deterministic + reads sql data + select * from mysqltest1.t1; +call foo2(); +# verify CALL is not in binlog +--replace_column 2 # 5 # +show binlog events from 605; + +--error 1418; +alter procedure foo2 contains sql; + +# SP with definer's right + +drop table t1; +create table t1 (a int); +create table t2 like t1; + +create procedure foo3() + deterministic + insert into t1 values (15); + +# let's create a non-privileged user +grant CREATE ROUTINE, EXECUTE on mysqltest1.* to "zedjzlcsjhd"@127.0.0.1; +grant SELECT on mysqltest1.t1 to "zedjzlcsjhd"@127.0.0.1; +grant SELECT, INSERT on mysqltest1.t2 to "zedjzlcsjhd"@127.0.0.1; + +connect (con1,127.0.0.1,zedjzlcsjhd,,mysqltest1,$MASTER_MYPORT,); +connection con1; + +--error 1419; # only full-global-privs user can create a routine +create procedure foo4() + deterministic + insert into t1 values (10); + +connection master; +set global log_bin_trust_routine_creators=1; +connection con1; + +delimiter |; +create procedure foo4() + deterministic + begin + insert into t2 values(3); + insert into t1 values (5); + end| + +delimiter ;| + +--replace_result localhost.localdomain localhost 127.0.0.1 localhost +--error 1142; +call foo4(); # invoker has no INSERT grant on table => failure +show warnings; + +connection master; +call foo3(); # success (definer == root) +show warnings; + +--replace_result localhost.localdomain localhost 127.0.0.1 localhost +--error 1142; +call foo4(); # definer's rights => failure +show warnings; + +# we test replication of ALTER PROCEDURE +alter procedure foo4 sql security invoker; +call foo4(); # invoker's rights => success +show warnings; + +# Check that only successful CALLs are in binlog +--replace_column 2 # 5 # +show binlog events from 841; + +# Note that half-failed CALLs are not in binlog, which is a known +# bug. If we compare t2 on master and slave we see they differ: + +select * from t1; +select * from t2; +sync_slave_with_master; +select * from t1; +select * from t2; +select if(compte<>3,"this is broken but documented","this unexpectedly works?") from (select count(*) as compte from t2) as aggreg; + +# Test of DROP PROCEDURE + +--replace_result localhost.localdomain localhost 127.0.0.1 localhost +--replace_column 13 # 14 # +select * from mysql.proc where name="foo4" and db='mysqltest1'; +connection master; +drop procedure foo4; +select * from mysql.proc where name="foo4" and db='mysqltest1'; +sync_slave_with_master; +select * from mysql.proc where name="foo4" and db='mysqltest1'; + +# ********************** PART 2 : FUNCTIONS *************** + +connection master; +drop procedure foo; +drop procedure foo2; +drop procedure foo3; + +delimiter |; +create function fn1(x int) + returns int + deterministic +begin + insert into t1 values (x); + return x+2; +end| + +delimiter ;| +delete t1,t2 from t1,t2; +select fn1(20); +insert into t2 values(fn1(21)); +select * from t1; +select * from t2; +sync_slave_with_master; +select * from t1; +select if(compte<>1,"this is broken but documented","this unexpectedly works?") from (select count(*) as compte from t1 where a=20) as aggreg; +select * from t2; + +connection master; +delimiter |; + +drop function fn1; + +create function fn1() + returns int + deterministic +begin + return unix_timestamp(); +end| +delimiter ;| +delete from t1; +set timestamp=1000000000; +insert into t1 values(fn1()); + +--replace_result localhost.localdomain localhost 127.0.0.1 localhost +--replace_column 13 # 14 # +select * from mysql.proc where db='mysqltest1'; +select * from t1; + +sync_slave_with_master; +use mysqltest1; +select * from t1; +--replace_result localhost.localdomain localhost 127.0.0.1 localhost +--replace_column 13 # 14 # +select * from mysql.proc where db='mysqltest1'; + + +# Clean up +connection master; +drop function fn1; +drop database mysqltest1; +drop user "zedjzlcsjhd"@127.0.0.1; +sync_slave_with_master; diff --git a/mysql-test/valgrind.supp b/mysql-test/valgrind.supp index d8a13ca9dfd..26f3477140b 100644 --- a/mysql-test/valgrind.supp +++ b/mysql-test/valgrind.supp @@ -24,6 +24,24 @@ fun:pthread_create } +{ + pthread allocate_dtv memory loss second + Memcheck:Leak + fun:calloc + fun:allocate_dtv + fun:_dl_allocate_tls + fun:pthread_create* +} + +{ + pthread allocate_dtv memory loss second + Memcheck:Leak + fun:calloc + fun:allocate_dtv + fun:_dl_allocate_tls + fun:pthread_create* +} + { pthread memalign memory loss Memcheck:Leak @@ -33,6 +51,28 @@ fun:pthread_create } +{ + pthread strstr uninit + Memcheck:Cond + fun:strstr + obj:/lib/tls/libpthread.so.* + obj:/lib/tls/libpthread.so.* + fun:call_init + fun:_dl_init + obj:/lib/ld-*.so +} + +{ + pthread strstr uninit + Memcheck:Cond + fun:strstr + obj:/lib/tls/libpthread.so.* + obj:/lib/tls/libpthread.so.* + fun:call_init + fun:_dl_init + obj:/lib/ld-*.so +} + { pthread errno Memcheck:Leak diff --git a/sql/item_func.cc b/sql/item_func.cc index b0fe0a78844..691e34b85a6 100644 --- a/sql/item_func.cc +++ b/sql/item_func.cc @@ -4671,9 +4671,24 @@ Item_func_sp::execute(Item **itp) DBUG_RETURN(-1); } #endif + /* + Like for SPs, we don't binlog the substatements. If the statement which + called this function is an update statement, it will be binlogged; but if + it's not (e.g. SELECT myfunc()) it won't be binlogged (documented known + problem). + */ + tmp_disable_binlog(thd); /* don't binlog the substatements */ res= m_sp->execute_function(thd, args, arg_count, itp); + reenable_binlog(thd); + if (res && mysql_bin_log.is_open() && + (m_sp->m_chistics->daccess == SP_CONTAINS_SQL || + m_sp->m_chistics->daccess == SP_MODIFIES_SQL_DATA)) + push_warning(thd, MYSQL_ERROR::WARN_LEVEL_WARN, + ER_FAILED_ROUTINE_BREAK_BINLOG, + ER(ER_FAILED_ROUTINE_BREAK_BINLOG)); + #ifndef NO_EMBEDDED_ACCESS_CHECKS sp_restore_security_context(thd, m_sp, &save_ctx); #endif diff --git a/sql/log_event.cc b/sql/log_event.cc index 86d31a9c2e8..42134d2b990 100644 --- a/sql/log_event.cc +++ b/sql/log_event.cc @@ -955,6 +955,18 @@ void Query_log_event::pack_info(Protocol *protocol) #ifndef MYSQL_CLIENT +/* Utility function for the next method */ +static void write_str_with_code_and_len(char **dst, const char *src, + int len, uint code) +{ + DBUG_ASSERT(src); + *((*dst)++)= code; + *((*dst)++)= (uchar) len; + bmove(*dst, src, len); + (*dst)+= len; +} + + /* Query_log_event::write() @@ -1039,12 +1051,10 @@ bool Query_log_event::write(IO_CACHE* file) int8store(start, (ulonglong)sql_mode); start+= 8; } - if (catalog_len) // i.e. "catalog inited" (false for 4.0 events) + if (catalog_len) // i.e. this var is inited (false for 4.0 events) { - *start++= Q_CATALOG_NZ_CODE; - *start++= (uchar) catalog_len; - bmove(start, catalog, catalog_len); - start+= catalog_len; + write_str_with_code_and_len((char **)(&start), + catalog, catalog_len, Q_CATALOG_NZ_CODE); /* In 5.0.x where x<4 masters we used to store the end zero here. This was a waste of one byte so we don't do it in x>=4 masters. We change code to @@ -1176,6 +1186,25 @@ Query_log_event::Query_log_event(THD* thd_arg, const char* query_arg, #endif /* MYSQL_CLIENT */ +/* 2 utility functions for the next method */ + +static void get_str_len_and_pointer(const char **dst, const char **src, uint *len) +{ + if ((*len= **src)) + *dst= *src + 1; // Will be copied later + (*src)+= *len+1; +} + + +static void copy_str_and_move(char **dst, const char **src, uint len) +{ + memcpy(*dst, *src, len); + *src= *dst; + (*dst)+= len; + *(*dst)++= 0; +} + + /* Query_log_event::Query_log_event() This is used by the SQL slave thread to prepare the event before execution. @@ -1264,9 +1293,7 @@ Query_log_event::Query_log_event(const char* buf, uint event_len, break; } case Q_CATALOG_NZ_CODE: - if ((catalog_len= *pos)) - catalog= (char*) pos+1; // Will be copied later - pos+= catalog_len+1; + get_str_len_and_pointer(&catalog, (const char **)(&pos), &catalog_len); break; case Q_AUTO_INCREMENT: auto_increment_increment= uint2korr(pos); @@ -1282,9 +1309,7 @@ Query_log_event::Query_log_event(const char* buf, uint event_len, } case Q_TIME_ZONE_CODE: { - if ((time_zone_len= *pos)) - time_zone_str= (char *)(pos+1); - pos+= time_zone_len+1; + get_str_len_and_pointer(&time_zone_str, (const char **)(&pos), &time_zone_len); break; } case Q_CATALOG_CODE: /* for 5.0.x where 0<=x<=3 masters */ @@ -1308,12 +1333,7 @@ Query_log_event::Query_log_event(const char* buf, uint event_len, if (catalog_len) // If catalog is given { if (likely(catalog_nz)) // true except if event comes from 5.0.0|1|2|3. - { - memcpy(start, catalog, catalog_len); - catalog= start; - start+= catalog_len; - *start++= 0; - } + copy_str_and_move(&start, &catalog, catalog_len); else { memcpy(start, catalog, catalog_len+1); // copy end 0 @@ -1322,12 +1342,8 @@ Query_log_event::Query_log_event(const char* buf, uint event_len, } } if (time_zone_len) - { - memcpy(start, time_zone_str, time_zone_len); - time_zone_str= start; - start+= time_zone_len; - *start++= 0; - } + copy_str_and_move(&start, &time_zone_str, time_zone_len); + /* A 2nd variable part; this is common to all versions */ memcpy((char*) start, end, data_len); // Copy db and query start[data_len]= '\0'; // End query with \0 (For safetly) diff --git a/sql/log_event.h b/sql/log_event.h index 2985fcabb50..f8989c4994a 100644 --- a/sql/log_event.h +++ b/sql/log_event.h @@ -234,13 +234,12 @@ struct sql_ex_info /* these are codes, not offsets; not more than 256 values (1 byte). */ #define Q_FLAGS2_CODE 0 #define Q_SQL_MODE_CODE 1 -#ifndef TO_BE_DELETED /* Q_CATALOG_CODE is catalog with end zero stored; it is used only by MySQL - 5.0.x where 0<=x<=3. + 5.0.x where 0<=x<=3. We have to keep it to be able to replicate these + old masters. */ #define Q_CATALOG_CODE 2 -#endif #define Q_AUTO_INCREMENT 3 #define Q_CHARSET_CODE 4 #define Q_TIME_ZONE_CODE 5 diff --git a/sql/mysql_priv.h b/sql/mysql_priv.h index 06c946114eb..82acd3936f0 100644 --- a/sql/mysql_priv.h +++ b/sql/mysql_priv.h @@ -1088,7 +1088,7 @@ extern my_bool opt_readonly, lower_case_file_system; extern my_bool opt_enable_named_pipe, opt_sync_frm, opt_allow_suspicious_udfs; extern my_bool opt_secure_auth; extern my_bool sp_automatic_privileges; -extern my_bool opt_old_style_user_limits; +extern my_bool opt_old_style_user_limits, trust_routine_creators; extern uint opt_crash_binlog_innodb; extern char *shared_memory_base_name, *mysqld_unix_port; extern bool opt_enable_shared_memory; diff --git a/sql/mysqld.cc b/sql/mysqld.cc index 3bfa498e521..16f53101056 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -303,7 +303,7 @@ my_bool opt_log_queries_not_using_indexes= 0; my_bool lower_case_file_system= 0; my_bool opt_large_pages= 0; uint opt_large_page_size= 0; -my_bool opt_old_style_user_limits= 0; +my_bool opt_old_style_user_limits= 0, trust_routine_creators= 0; /* True if there is at least one per-hour limit for some user, so we should check them before each query (and possibly reset counters when hour is @@ -4170,6 +4170,7 @@ enum options_mysqld OPT_INNODB_FAST_SHUTDOWN, OPT_INNODB_FILE_PER_TABLE, OPT_CRASH_BINLOG_INNODB, OPT_INNODB_LOCKS_UNSAFE_FOR_BINLOG, + OPT_LOG_BIN_TRUST_ROUTINE_CREATORS, OPT_SAFE_SHOW_DB, OPT_INNODB_SAFE_BINLOG, OPT_INNODB, OPT_ISAM, OPT_ENGINE_CONDITION_PUSHDOWN, @@ -4590,6 +4591,17 @@ Disable with --skip-innodb-doublewrite.", (gptr*) &innobase_use_doublewrite, "File that holds the names for last binary log files.", (gptr*) &opt_binlog_index_name, (gptr*) &opt_binlog_index_name, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + /* + This option starts with "log-bin" to emphasize that it is specific of + binary logging. Hopefully in 5.1 nobody will need it anymore, when we have + row-level binlog. + */ + {"log-bin-trust-routine-creators", OPT_LOG_BIN_TRUST_ROUTINE_CREATORS, + "If equal to 0 (the default), then when --log-bin is used, creation of " + "a routine is allowed only to users having the SUPER privilege and only" + "if this routine may not break binary logging", + (gptr*) &trust_routine_creators, (gptr*) &trust_routine_creators, 0, + GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"log-error", OPT_ERROR_LOG_FILE, "Error log file.", (gptr*) &log_error_file_ptr, (gptr*) &log_error_file_ptr, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0}, diff --git a/sql/set_var.cc b/sql/set_var.cc index 0e6e36f63a2..99549654e11 100644 --- a/sql/set_var.cc +++ b/sql/set_var.cc @@ -203,6 +203,9 @@ sys_var_key_cache_long sys_key_cache_age_threshold("key_cache_age_threshold", param_age_threshold)); sys_var_bool_ptr sys_local_infile("local_infile", &opt_local_infile); +sys_var_bool_ptr +sys_trust_routine_creators("log_bin_trust_routine_creators", + &trust_routine_creators); sys_var_thd_ulong sys_log_warnings("log_warnings", &SV::log_warnings); sys_var_thd_ulong sys_long_query_time("long_query_time", &SV::long_query_time); @@ -703,6 +706,7 @@ sys_var *sys_variables[]= &sys_innodb_thread_sleep_delay, &sys_innodb_thread_concurrency, #endif + &sys_trust_routine_creators, &sys_engine_condition_pushdown, #ifdef HAVE_NDBCLUSTER_DB &sys_ndb_autoincrement_prefetch_sz, @@ -842,6 +846,7 @@ struct show_var_st init_vars[]= { #endif {"log", (char*) &opt_log, SHOW_BOOL}, {"log_bin", (char*) &opt_bin_log, SHOW_BOOL}, + {sys_trust_routine_creators.name,(char*) &sys_trust_routine_creators, SHOW_SYS}, {"log_error", (char*) log_error_file, SHOW_CHAR}, #ifdef HAVE_REPLICATION {"log_slave_updates", (char*) &opt_log_slave_updates, SHOW_MY_BOOL}, diff --git a/sql/share/errmsg.txt b/sql/share/errmsg.txt index 050bbe86948..388f47bf96f 100644 --- a/sql/share/errmsg.txt +++ b/sql/share/errmsg.txt @@ -5346,3 +5346,9 @@ ER_SP_NO_RETSET_IN_FUNC 0A000 eng "Not allowed to return a result set from a function" ER_CANT_CREATE_GEOMETRY_OBJECT 22003 eng "Cannot get geometry object from data you send to the GEOMETRY field" +ER_FAILED_ROUTINE_BREAK_BINLOG + eng "A routine failed and is declared to modify data and binary logging is enabled; if non-transactional tables were updated, the binary log will miss their changes" +ER_BINLOG_UNSAFE_ROUTINE + eng "This routine is declared to be non-deterministic and to modify data and binary logging is enabled (you *might* want to use the less safe log_bin_trust_routine_creators variable)" +ER_BINLOG_CREATE_ROUTINE_NEED_SUPER + eng "You do not have SUPER privilege and binary logging is enabled (you *might* want to use the less safe log_bin_trust_routine_creators variable)" diff --git a/sql/slave.cc b/sql/slave.cc index ebf87660a0e..70803c88c3a 100644 --- a/sql/slave.cc +++ b/sql/slave.cc @@ -852,7 +852,7 @@ static TABLE_RULE_ENT* find_wild(DYNAMIC_ARRAY *a, const char* key, int len) SYNOPSIS tables_ok() - thd thread (SQL slave thread normally) + thd thread (SQL slave thread normally). Mustn't be null. tables list of tables to check NOTES @@ -885,6 +885,23 @@ bool tables_ok(THD* thd, TABLE_LIST* tables) bool some_tables_updating= 0; DBUG_ENTER("tables_ok"); + /* + In routine, can't reliably pick and choose substatements, so always + replicate. + We can't reliably know if one substatement should be executed or not: + consider the case of this substatement: a SELECT on a non-replicated + constant table; if we don't execute it maybe it was going to fill a + variable which was going to be used by the next substatement to update + a replicated table? If we execute it maybe the constant non-replicated + table does not exist (and so we'll fail) while there was no need to + execute this as this SELECT does not influence replicated tables in the + rest of the routine? In other words: users are used to replicate-*-table + specifying how to handle updates to tables, these options don't say + anything about reads to tables; we can't guess. + */ + if (thd->spcont) + DBUG_RETURN(1); + for (; tables; tables= tables->next_global) { char hash_key[2*NAME_LEN+2]; @@ -2791,12 +2808,17 @@ static int init_slave_thread(THD* thd, SLAVE_THD_TYPE thd_type) DBUG_ENTER("init_slave_thread"); thd->system_thread = (thd_type == SLAVE_THD_SQL) ? SYSTEM_THREAD_SLAVE_SQL : SYSTEM_THREAD_SLAVE_IO; + /* + The two next lines are needed for replication of SP (CREATE PROCEDURE + needs a valid user to store in mysql.proc). + */ + thd->priv_user= (char *) ""; + thd->priv_host[0]= '\0'; thd->host_or_ip= ""; thd->client_capabilities = 0; my_net_init(&thd->net, 0); thd->net.read_timeout = slave_net_timeout; thd->master_access= ~0; - thd->priv_user = 0; thd->slave_thread = 1; set_slave_thread_options(thd); /* diff --git a/sql/sp.cc b/sql/sp.cc index 1956f32f2c6..81513cb3198 100644 --- a/sql/sp.cc +++ b/sql/sp.cc @@ -58,6 +58,9 @@ enum bool mysql_proc_table_exists= 1; +/* Tells what SP_DEFAULT_ACCESS should be mapped to */ +#define SP_DEFAULT_ACCESS_MAPPING SP_CONTAINS_SQL + /* *opened=true means we opened ourselves */ static int db_find_routine_aux(THD *thd, int type, sp_name *name, @@ -189,7 +192,7 @@ db_find_routine(THD *thd, int type, sp_name *name, sp_head **sphp) chistics.daccess= SP_MODIFIES_SQL_DATA; break; default: - chistics.daccess= SP_CONTAINS_SQL; + chistics.daccess= SP_DEFAULT_ACCESS_MAPPING; } if ((ptr= get_field(thd->mem_root, @@ -425,9 +428,46 @@ db_create_routine(THD *thd, int type, sp_head *sp) store(sp->m_chistics->comment.str, sp->m_chistics->comment.length, system_charset_info); + if (!trust_routine_creators && mysql_bin_log.is_open()) + { + if (!sp->m_chistics->detistic) + { + /* + Note that for a _function_ this test is not enough; one could use + a non-deterministic read-only function in an update statement. + */ + enum enum_sp_data_access access= + (sp->m_chistics->daccess == SP_DEFAULT_ACCESS) ? + SP_DEFAULT_ACCESS_MAPPING : sp->m_chistics->daccess; + if (access == SP_CONTAINS_SQL || + access == SP_MODIFIES_SQL_DATA) + { + my_message(ER_BINLOG_UNSAFE_ROUTINE, + ER(ER_BINLOG_UNSAFE_ROUTINE), MYF(0)); + ret= SP_INTERNAL_ERROR; + goto done; + } + } + if (!(thd->master_access & SUPER_ACL)) + { + my_message(ER_BINLOG_CREATE_ROUTINE_NEED_SUPER, + ER(ER_BINLOG_CREATE_ROUTINE_NEED_SUPER), MYF(0)); + ret= SP_INTERNAL_ERROR; + goto done; + } + } + ret= SP_OK; if (table->file->write_row(table->record[0])) ret= SP_WRITE_ROW_FAILED; + else if (mysql_bin_log.is_open()) + { + thd->clear_error(); + /* Such a statement can always go directly to binlog, no trans cache */ + Query_log_event qinfo(thd, thd->query, thd->query_length, 0, FALSE); + mysql_bin_log.write(&qinfo); + } + } done: diff --git a/sql/sql_acl.cc b/sql/sql_acl.cc index df19c6e55fd..58cbf1996bd 100644 --- a/sql/sql_acl.cc +++ b/sql/sql_acl.cc @@ -1515,7 +1515,7 @@ static bool update_user_table(THD *thd, const char *host, const char *user, */ tables.updating= 1; /* Thanks to bzero, tables.next==0 */ - if (!tables_ok(0, &tables)) + if (!tables_ok(thd, &tables)) DBUG_RETURN(0); } #endif @@ -2699,7 +2699,7 @@ bool mysql_table_grant(THD *thd, TABLE_LIST *table_list, account in tests. */ tables[0].updating= tables[1].updating= tables[2].updating= 1; - if (!tables_ok(0, tables)) + if (!tables_ok(thd, tables)) DBUG_RETURN(FALSE); } #endif @@ -2904,7 +2904,7 @@ bool mysql_procedure_grant(THD *thd, TABLE_LIST *table_list, account in tests. */ tables[0].updating= tables[1].updating= 1; - if (!tables_ok(0, tables)) + if (!tables_ok(thd, tables)) DBUG_RETURN(FALSE); } #endif @@ -3035,7 +3035,7 @@ bool mysql_grant(THD *thd, const char *db, List &list, account in tests. */ tables[0].updating= tables[1].updating= 1; - if (!tables_ok(0, tables)) + if (!tables_ok(thd, tables)) DBUG_RETURN(FALSE); } #endif @@ -4245,7 +4245,7 @@ int open_grant_tables(THD *thd, TABLE_LIST *tables) */ tables[0].updating=tables[1].updating=tables[2].updating= tables[3].updating=tables[4].updating=1; - if (!tables_ok(0, tables)) + if (!tables_ok(thd, tables)) DBUG_RETURN(1); tables[0].updating=tables[1].updating=tables[2].updating= tables[3].updating=tables[4].updating=0;; diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index 22febd50035..7b465a0c086 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -4097,7 +4097,43 @@ unsent_create_error: thd->variables.select_limit= HA_POS_ERROR; thd->row_count_func= 0; + tmp_disable_binlog(thd); /* don't binlog the substatements */ res= sp->execute_procedure(thd, &lex->value_list); + reenable_binlog(thd); + + /* + We write CALL to binlog; on the opposite we didn't write the + substatements. That choice is necessary because the substatements + may use local vars. + Binlogging should happen when all tables are locked. They are locked + just above, and unlocked by close_thread_tables(). All tables which + are to be updated are locked like with a table-level write lock, and + this also applies to InnoDB (I tested - note that it reduces + InnoDB's concurrency as we don't use row-level locks). So binlogging + below is safe. + Note the limitation: if the SP returned an error, but still did some + updates, we do NOT binlog it. This is because otherwise "permission + denied", "table does not exist" etc would stop the slave quite + often. There is no easy way to know if the SP updated something + (even no_trans_update is not suitable, as it may be a transactional + autocommit update which happened, and no_trans_update covers only + INSERT/UPDATE/LOAD). + */ + if (mysql_bin_log.is_open() && + (sp->m_chistics->daccess == SP_CONTAINS_SQL || + sp->m_chistics->daccess == SP_MODIFIES_SQL_DATA)) + { + if (res) + push_warning(thd, MYSQL_ERROR::WARN_LEVEL_WARN, + ER_FAILED_ROUTINE_BREAK_BINLOG, + ER(ER_FAILED_ROUTINE_BREAK_BINLOG)); + else + { + thd->clear_error(); + Query_log_event qinfo(thd, thd->query, thd->query_length, 0, FALSE); + mysql_bin_log.write(&qinfo); + } + } /* If warnings have been cleared, we have to clear total_warn_count @@ -4153,14 +4189,32 @@ unsent_create_error: sp->m_name.str, 0)) goto error; memcpy(&lex->sp_chistics, &chistics, sizeof(lex->sp_chistics)); - if (lex->sql_command == SQLCOM_ALTER_PROCEDURE) - result= sp_update_procedure(thd, lex->spname, &lex->sp_chistics); - else - result= sp_update_function(thd, lex->spname, &lex->sp_chistics); + if (!trust_routine_creators && mysql_bin_log.is_open() && + !sp->m_chistics->detistic && + (chistics.daccess == SP_CONTAINS_SQL || + chistics.daccess == SP_MODIFIES_SQL_DATA)) + { + my_message(ER_BINLOG_UNSAFE_ROUTINE, + ER(ER_BINLOG_UNSAFE_ROUTINE), MYF(0)); + result= SP_INTERNAL_ERROR; + } + else + { + if (lex->sql_command == SQLCOM_ALTER_PROCEDURE) + result= sp_update_procedure(thd, lex->spname, &lex->sp_chistics); + else + result= sp_update_function(thd, lex->spname, &lex->sp_chistics); + } } switch (result) { case SP_OK: + if (mysql_bin_log.is_open()) + { + thd->clear_error(); + Query_log_event qinfo(thd, thd->query, thd->query_length, 0, FALSE); + mysql_bin_log.write(&qinfo); + } send_ok(thd); break; case SP_KEY_NOT_FOUND: @@ -4237,6 +4291,12 @@ unsent_create_error: switch (result) { case SP_OK: + if (mysql_bin_log.is_open()) + { + thd->clear_error(); + Query_log_event qinfo(thd, thd->query, thd->query_length, 0, FALSE); + mysql_bin_log.write(&qinfo); + } send_ok(thd); break; case SP_KEY_NOT_FOUND: @@ -4495,6 +4555,7 @@ unsent_create_error: break; } thd->proc_info="query end"; + /* Two binlog-related cleanups: */ if (thd->one_shot_set) { /* From 2e18548263bec569a7dde9bd6ee19fd6ba383543 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 5 May 2005 16:31:18 +0400 Subject: [PATCH 16/29] Post merge fixes (merge of Bug#9777) --- mysql-test/t/ps.test | 72 ++++++++++++++++++++++---------------------- 1 file changed, 36 insertions(+), 36 deletions(-) diff --git a/mysql-test/t/ps.test b/mysql-test/t/ps.test index b17742de2d2..b06d3c4caf0 100644 --- a/mysql-test/t/ps.test +++ b/mysql-test/t/ps.test @@ -7,8 +7,8 @@ drop table if exists t1,t2; create table t1 ( -a int primary key, -b char(10) + a int primary key, + b char(10) ); insert into t1 values (1,'one'); insert into t1 values (2,'two'); @@ -88,7 +88,7 @@ explain prepare stmt6 from 'insert into t1 values (5,"five"); select2'; create table t2 ( -a int + a int ); insert into t2 values (0); @@ -143,15 +143,15 @@ drop table t1; # create table t1 ( -c1 tinyint, c2 smallint, c3 mediumint, c4 int, -c5 integer, c6 bigint, c7 float, c8 double, -c9 double precision, c10 real, c11 decimal(7, 4), c12 numeric(8, 4), -c13 date, c14 datetime, c15 timestamp(14), c16 time, -c17 year, c18 bit, c19 bool, c20 char, -c21 char(10), c22 varchar(30), c23 tinyblob, c24 tinytext, -c25 blob, c26 text, c27 mediumblob, c28 mediumtext, -c29 longblob, c30 longtext, c31 enum('one', 'two', 'three'), -c32 set('monday', 'tuesday', 'wednesday') + c1 tinyint, c2 smallint, c3 mediumint, c4 int, + c5 integer, c6 bigint, c7 float, c8 double, + c9 double precision, c10 real, c11 decimal(7, 4), c12 numeric(8, 4), + c13 date, c14 datetime, c15 timestamp(14), c16 time, + c17 year, c18 bit, c19 bool, c20 char, + c21 char(10), c22 varchar(30), c23 tinyblob, c24 tinytext, + c25 blob, c26 text, c27 mediumblob, c28 mediumtext, + c29 longblob, c30 longtext, c31 enum('one', 'two', 'three'), + c32 set('monday', 'tuesday', 'wednesday') ) engine = MYISAM ; create table t2 like t1; @@ -181,8 +181,8 @@ drop table t1; # eq() for parameters # create table t1 (id int(10) unsigned NOT NULL default '0', - name varchar(64) NOT NULL default '', - PRIMARY KEY (id), UNIQUE KEY `name` (`name`)); + name varchar(64) NOT NULL default '', + PRIMARY KEY (id), UNIQUE KEY `name` (`name`)); insert into t1 values (1,'1'),(2,'2'),(3,'3'),(4,'4'),(5,'5'),(6,'6'),(7,'7'); prepare stmt1 from 'select name from t1 where id=? or id=?'; set @id1=1,@id2=6; @@ -368,13 +368,13 @@ insert into t1 (a) values (1), (2), (3), (4); set @precision=10000000000; --replace_column 1 - 3 - select rand(), - cast(rand(10)*@precision as unsigned integer), - cast(rand(a)*@precision as unsigned integer) from t1; + cast(rand(10)*@precision as unsigned integer), + cast(rand(a)*@precision as unsigned integer) from t1; prepare stmt from "select rand(), - cast(rand(10)*@precision as unsigned integer), - cast(rand(a)*@precision as unsigned integer), - cast(rand(?)*@precision as unsigned integer) from t1"; + cast(rand(10)*@precision as unsigned integer), + cast(rand(a)*@precision as unsigned integer), + cast(rand(?)*@precision as unsigned integer) from t1"; set @var=1; --replace_column 1 - 3 - execute stmt using @var; @@ -513,13 +513,13 @@ deallocate prepare stmt; # create table t1 (a char(3) not null, b char(3) not null, - c char(3) not null, primary key (a, b, c)); + c char(3) not null, primary key (a, b, c)); create table t2 like t1; # reduced query prepare stmt from -"select t1.a from (t1 left outer join t2 on t2.a=1 and t1.b=t2.b) -where t1.a=1"; + "select t1.a from (t1 left outer join t2 on t2.a=1 and t1.b=t2.b) + where t1.a=1"; execute stmt; execute stmt; execute stmt; @@ -546,19 +546,19 @@ drop table t1,t2; # eval SET @aux= "SELECT COUNT(*) - FROM INFORMATION_SCHEMA.COLUMNS A, - INFORMATION_SCHEMA.COLUMNS B - WHERE A.TABLE_SCHEMA = B.TABLE_SCHEMA - AND A.TABLE_NAME = B.TABLE_NAME - AND A.COLUMN_NAME = B.COLUMN_NAME AND - A.TABLE_NAME = 'user'"; + FROM INFORMATION_SCHEMA.COLUMNS A, + INFORMATION_SCHEMA.COLUMNS B + WHERE A.TABLE_SCHEMA = B.TABLE_SCHEMA + AND A.TABLE_NAME = B.TABLE_NAME + AND A.COLUMN_NAME = B.COLUMN_NAME AND + A.TABLE_NAME = 'user'"; let $exec_loop_count= 3; eval prepare my_stmt from @aux; while ($exec_loop_count) { -eval execute my_stmt; -dec $exec_loop_count; + eval execute my_stmt; + dec $exec_loop_count; } deallocate prepare my_stmt; @@ -572,11 +572,11 @@ create table t1 (id int)| insert into t1 values(1)| create procedure p1(a int, b int) begin -declare c int; -select max(id)+1 into c from t1; -insert into t1 select a+b; -insert into t1 select a-b; -insert into t1 select a-c; + declare c int; + select max(id)+1 into c from t1; + insert into t1 select a+b; + insert into t1 select a-b; + insert into t1 select a-c; end| set @a= 3, @b= 4| prepare stmt from "call p1(?, ?)"| @@ -597,7 +597,7 @@ delimiter ;| drop table if exists t1; create table t1 (c1 int(11) not null, c2 int(11) not null, - primary key (c1,c2), key c2 (c2), key c1 (c1)); + primary key (c1,c2), key c2 (c2), key c1 (c1)); insert into t1 values (200887, 860); insert into t1 values (200887, 200887); From cba5abe650ae4d1dce5bd85a4e77beae2730bce8 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 5 May 2005 16:21:17 +0200 Subject: [PATCH 17/29] gcc 2.92 compatibility config/ac-macros/misc.m4: better USE_MYSYS_NEW detection configure.in: better USE_MYSYS_NEW detection extra/yassl/src/Makefile.am: better USE_MYSYS_NEW detection extra/yassl/taocrypt/include/runtime.hpp: better USE_MYSYS_NEW detection --- config/ac-macros/misc.m4 | 17 +++++++++++++ configure.in | 27 +------------------- extra/yassl/src/Makefile.am | 1 - extra/yassl/src/yassl_imp.cpp | 2 ++ extra/yassl/src/yassl_int.cpp | 4 ++- extra/yassl/taocrypt/include/runtime.hpp | 7 ++++-- extra/yassl/taocrypt/src/Makefile.am | 1 - extra/yassl/taocrypt/src/integer.cpp | 17 ++++++------- extra/yassl/taocrypt/src/rsa.cpp | 32 +++++++++++++----------- 9 files changed, 53 insertions(+), 55 deletions(-) diff --git a/config/ac-macros/misc.m4 b/config/ac-macros/misc.m4 index d75dedafa2a..8c961ef84e0 100644 --- a/config/ac-macros/misc.m4 +++ b/config/ac-macros/misc.m4 @@ -693,3 +693,20 @@ dnl --------------------------------------------------------------------------- dnl END OF MYSQL_CHECK_BIG_TABLES SECTION dnl --------------------------------------------------------------------------- +dnl MYSQL_NEEDS_MYSYS_NEW +AC_DEFUN([MYSQL_NEEDS_MYSYS_NEW], +[AC_CACHE_CHECK([needs mysys_new helpers], mysql_use_mysys_new, +[ +AC_LANG_PUSH(C++) +AC_TRY_LINK([], [ +class A { public: int b; }; A *a=new A; a->b=10; delete a; +], mysql_use_mysys_new=no, mysql_use_mysys_new=yes) +AC_LANG_POP(C++) +]) +if test "$mysql_use_mysys_new" = "yes" +then + AC_DEFINE([USE_MYSYS_NEW], [1], [Needs to use mysys_new helpers]) +fi +]) + + diff --git a/configure.in b/configure.in index 8b0a0ddeb56..dfed8dda43e 100644 --- a/configure.in +++ b/configure.in @@ -336,32 +336,6 @@ AC_SUBST(LD) AC_SUBST(INSTALL_SCRIPT) export CC CXX CFLAGS LD LDFLAGS AR -if test "$GXX" = "yes" -then - # mysqld requires -fno-implicit-templates. - # Disable exceptions as they seams to create problems with gcc and threads. - # mysqld doesn't use run-time-type-checking, so we disable it. - CXXFLAGS="$CXXFLAGS -fno-implicit-templates -fno-exceptions -fno-rtti" - - CXX_VERNO=`echo $CXX_VERSION | sed -e 's/[[^0-9. ]]//g; s/^ *//g; s/ .*//g'` - case "$CXX_VERNO" in - 3.*) - USE_MYSYS_NEW="-DUSE_MYSYS_NEW" # yassl needs it - if echo $CXX | grep gcc > /dev/null 2>&1 - then - # If you are using 'gcc' 3.0 (not g++) to compile C++ programs on Linux, - # we will gets some problems when linking static programs. - # The following code is used to fix this problem. - CXXFLAGS="$CXXFLAGS $USE_MYSYS_NEW" - AC_MSG_WARN([Using MYSYS_NEW for static linking with gcc]) - fi - ;; - *) - USE_MYSYS_NEW="" - ;; - esac - AC_SUBST(USE_MYSYS_NEW) -fi # Avoid bug in fcntl on some versions of linux AC_MSG_CHECKING("if we should use 'skip-locking' as default for $target_os") @@ -1730,6 +1704,7 @@ AC_TYPE_OFF_T AC_STRUCT_ST_RDEV AC_HEADER_TIME AC_STRUCT_TM +MYSQL_NEEDS_MYSYS_NEW # AC_CHECK_SIZEOF return 0 when it does not find the size of a # type. We want a error instead. AC_CHECK_SIZEOF(char, 1) diff --git a/extra/yassl/src/Makefile.am b/extra/yassl/src/Makefile.am index 9dd8a09b00b..3dbd7bac03a 100644 --- a/extra/yassl/src/Makefile.am +++ b/extra/yassl/src/Makefile.am @@ -5,4 +5,3 @@ libyassl_a_SOURCES = buffer.cpp cert_wrapper.cpp crypto_wrapper.cpp \ handshake.cpp lock.cpp log.cpp socket_wrapper.cpp ssl.cpp \ timer.cpp yassl_imp.cpp yassl_error.cpp yassl_int.cpp EXTRA_DIST = ../include/*.hpp ../include/openssl/*.h -AM_CXXFLAGS=@USE_MYSYS_NEW@ diff --git a/extra/yassl/src/yassl_imp.cpp b/extra/yassl/src/yassl_imp.cpp index ba2fbd8cc07..c1485cce986 100644 --- a/extra/yassl/src/yassl_imp.cpp +++ b/extra/yassl/src/yassl_imp.cpp @@ -2092,6 +2092,7 @@ void InitClientKeyFactory(ClientKeyFactory& ckf) } // namespace #ifdef __GNUC__ +namespace mySTL { template class mySTL::list; template yaSSL::del_ptr_zero mySTL::for_each(mySTL::list::iterator, mySTL::list::iterator, yaSSL::del_ptr_zero); template mySTL::pair* mySTL::uninit_copy*, mySTL::pair*>(mySTL::pair*, mySTL::pair*, mySTL::pair*); @@ -2112,5 +2113,6 @@ template yaSSL::del_ptr_zero mySTL::for_each::i template yaSSL::del_ptr_zero mySTL::for_each::iterator, yaSSL::del_ptr_zero>(mySTL::list::iterator, mySTL::list::iterator, yaSSL::del_ptr_zero); template yaSSL::del_ptr_zero mySTL::for_each::iterator, yaSSL::del_ptr_zero>(mySTL::list::iterator, mySTL::list::iterator, yaSSL::del_ptr_zero); template yaSSL::del_ptr_zero mySTL::for_each::iterator, yaSSL::del_ptr_zero>(mySTL::list::iterator, mySTL::list::iterator, yaSSL::del_ptr_zero); +} #endif diff --git a/extra/yassl/src/yassl_int.cpp b/extra/yassl/src/yassl_int.cpp index 5f918b0a356..4cc2b85fccc 100644 --- a/extra/yassl/src/yassl_int.cpp +++ b/extra/yassl/src/yassl_int.cpp @@ -1951,7 +1951,7 @@ char* X509_NAME::GetName() X509::X509(const char* i, size_t iSz, const char* s, size_t sSz) : issuer_(i, iSz), subject_(s, sSz) {} - + X509_NAME* X509::GetIssuer() { @@ -1967,7 +1967,9 @@ X509_NAME* X509::GetSubject() } // namespace #ifdef __GNUC__ +namespace mySTL { template yaSSL::yassl_int_cpp_local1::SumData mySTL::for_each::iterator, yaSSL::yassl_int_cpp_local1::SumData>(mySTL::list::iterator, mySTL::list::iterator, yaSSL::yassl_int_cpp_local1::SumData); template yaSSL::yassl_int_cpp_local1::SumBuffer mySTL::for_each::iterator, yaSSL::yassl_int_cpp_local1::SumBuffer>(mySTL::list::iterator, mySTL::list::iterator, yaSSL::yassl_int_cpp_local1::SumBuffer); template mySTL::list::iterator mySTL::find_if::iterator, yaSSL::yassl_int_cpp_local2::sess_match>(mySTL::list::iterator, mySTL::list::iterator, yaSSL::yassl_int_cpp_local2::sess_match); +} #endif diff --git a/extra/yassl/taocrypt/include/runtime.hpp b/extra/yassl/taocrypt/include/runtime.hpp index 5b9e13df644..e2c04af44f4 100644 --- a/extra/yassl/taocrypt/include/runtime.hpp +++ b/extra/yassl/taocrypt/include/runtime.hpp @@ -25,10 +25,11 @@ -#if !defined(yaSSL_NEW_HPP) && defined(USE_MYSYS_NEW) +#if !defined(yaSSL_NEW_HPP) && defined(__GNUC__) #define yaSSL_NEW_HPP +#if __GNUC__ > 2 #include @@ -66,4 +67,6 @@ static int __cxa_pure_virtual() } // extern "C" -#endif // yaSSL_NEW_HPP +#endif // __GNUC__ > 2 +#endif // yaSSL_NEW_HPP && __GNUC__ + diff --git a/extra/yassl/taocrypt/src/Makefile.am b/extra/yassl/taocrypt/src/Makefile.am index 4bf901b76ea..b00e6081c23 100644 --- a/extra/yassl/taocrypt/src/Makefile.am +++ b/extra/yassl/taocrypt/src/Makefile.am @@ -5,4 +5,3 @@ libtaocrypt_a_SOURCES = aes.cpp aestables.cpp algebra.cpp arc4.cpp asn.cpp \ coding.cpp dh.cpp des.cpp dsa.cpp file.cpp hash.cpp integer.cpp \ md2.cpp md5.cpp misc.cpp random.cpp ripemd.cpp rsa.cpp sha.cpp EXTRA_DIST = ../include/*.hpp -AM_CXXFLAGS=@USE_MYSYS_NEW@ diff --git a/extra/yassl/taocrypt/src/integer.cpp b/extra/yassl/taocrypt/src/integer.cpp index 20a968d78e3..c95170722ae 100644 --- a/extra/yassl/taocrypt/src/integer.cpp +++ b/extra/yassl/taocrypt/src/integer.cpp @@ -4168,16 +4168,13 @@ Integer CRT(const Integer &xp, const Integer &p, const Integer &xq, return p * (u * (xq-xp) % q) + xp; } - +#ifdef __GNUC__ +template Integer StringToInteger(char const*); +template Integer StringToInteger(wchar_t const*); +template class EuclideanDomainOf; +template class AbstractEuclideanDomain; +template unsigned int DivideThreeWordsByTwo(unsigned int*, unsigned int, unsigned int, DWord*); +#endif } // namespace -#ifdef __GNUC__ -template TaoCrypt::Integer TaoCrypt::StringToInteger(char const*); -template TaoCrypt::Integer TaoCrypt::StringToInteger(wchar_t const*); -template class TaoCrypt::EuclideanDomainOf; -template class TaoCrypt::AbstractEuclideanDomain; -template unsigned int TaoCrypt::DivideThreeWordsByTwo(unsigned int*, unsigned int, unsigned int, TaoCrypt::DWord*); -#endif - - diff --git a/extra/yassl/taocrypt/src/rsa.cpp b/extra/yassl/taocrypt/src/rsa.cpp index da8cd697a7c..ecb2288f1c2 100644 --- a/extra/yassl/taocrypt/src/rsa.cpp +++ b/extra/yassl/taocrypt/src/rsa.cpp @@ -211,24 +211,28 @@ word32 SSL_Decrypt(const RSA_PublicKey& key, const byte* sig, byte* plain) lengths.PaddedBlockBitLength(), plain); } +#ifdef __GNUC__ +template AllocatorWithCleanup::pointer StdReallocate >(AllocatorWithCleanup&, unsigned char*, AllocatorWithCleanup::size_type, AllocatorWithCleanup::size_type, bool); +template AllocatorWithCleanup::pointer StdReallocate >(AllocatorWithCleanup&, unsigned int*, AllocatorWithCleanup::size_type, AllocatorWithCleanup::size_type, bool); +template class AbstractGroup; +template class AbstractRing; +template class RSA_Decryptor; +template class RSA_Encryptor; +template class RSA_Encryptor; +#endif } // namespace #ifdef __GNUC__ -template TaoCrypt::AllocatorWithCleanup::pointer TaoCrypt::StdReallocate >(TaoCrypt::AllocatorWithCleanup&, unsigned char*, TaoCrypt::AllocatorWithCleanup::size_type, TaoCrypt::AllocatorWithCleanup::size_type, bool); -template TaoCrypt::AllocatorWithCleanup::pointer TaoCrypt::StdReallocate >(TaoCrypt::AllocatorWithCleanup&, unsigned int*, TaoCrypt::AllocatorWithCleanup::size_type, TaoCrypt::AllocatorWithCleanup::size_type, bool); -template TaoCrypt::Integer* mySTL::uninit_copy(TaoCrypt::Integer*, TaoCrypt::Integer*, TaoCrypt::Integer*); -template TaoCrypt::Integer* mySTL::uninit_fill_n(TaoCrypt::Integer*, unsigned int, TaoCrypt::Integer const&); -template TaoCrypt::WindowSlider* mySTL::uninit_copy(TaoCrypt::WindowSlider*, TaoCrypt::WindowSlider*, TaoCrypt::WindowSlider*); -template class TaoCrypt::AbstractGroup; -template class TaoCrypt::AbstractRing; -template class TaoCrypt::RSA_Decryptor; -template class TaoCrypt::RSA_Encryptor; -template class TaoCrypt::RSA_Encryptor; -template mySTL::vector* mySTL::uninit_fill_n*, unsigned int, mySTL::vector >(mySTL::vector*, unsigned int, mySTL::vector const&); -template void mySTL::destroy(TaoCrypt::Integer*, TaoCrypt::Integer*); -template void mySTL::destroy(TaoCrypt::WindowSlider*, TaoCrypt::WindowSlider*); -template void mySTL::destroy*>(mySTL::vector*, mySTL::vector*); +namespace mySTL { +template TaoCrypt::Integer* uninit_copy(TaoCrypt::Integer*, TaoCrypt::Integer*, TaoCrypt::Integer*); +template TaoCrypt::Integer* uninit_fill_n(TaoCrypt::Integer*, unsigned int, TaoCrypt::Integer const&); +template TaoCrypt::WindowSlider* uninit_copy(TaoCrypt::WindowSlider*, TaoCrypt::WindowSlider*, TaoCrypt::WindowSlider*); +template vector* uninit_fill_n*, unsigned int, vector >(vector*, unsigned int, vector const&); +template void destroy(TaoCrypt::Integer*, TaoCrypt::Integer*); +template void destroy(TaoCrypt::WindowSlider*, TaoCrypt::WindowSlider*); +template void destroy*>(vector*, vector*); +} #endif From 6de14a23f7de447e4e6c4b82e2be032b05214c9a Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 5 May 2005 20:06:49 +0500 Subject: [PATCH 18/29] A lot of fixes to Precision math Mostly about precision/decimals of the results of the operations include/decimal.h: decimal interface changed a little sql/field.cc: a lot of precision/decimals related changes to the Field_new_decimal sql/field.h: Field_new_decimal interface changed sql/ha_ndbcluster.cc: f->precision should be used here sql/item.cc: precision/decimals counting related changes sql/item.h: precision/decimals counting related changes sql/item_cmpfunc.cc: precision/decimals counting related changes sql/item_cmpfunc.h: precision/decimals counting related changes sql/item_func.cc: precision/decimals counting related changes sql/item_func.h: precision/decimals counting related changes sql/item_sum.cc: precision/decimals counting related changes sql/item_sum.h: precision/decimals counting related changes sql/my_decimal.cc: precision/decimals counting related changes sql/my_decimal.h: precision/decimals counting related changes sql/mysqld.cc: precision/decimals counting related changes sql/set_var.cc: precision/decimals counting related changes sql/sp_head.cc: dbug_decimal_print was replaced with dbug_decimal_as_string sql/sql_class.h: div_precincrement variable added sql/sql_parse.cc: precision/decimals counting related changes sql/sql_select.cc: precision/decimals counting related changes sql/sql_show.cc: Field::representation_length was removed strings/decimal.c: decimal_actual_fraction was introduced BitKeeper/etc/logging_ok: Logging to logging@openlogging.org accepted --- BitKeeper/etc/logging_ok | 1 + include/decimal.h | 2 +- sql/field.cc | 92 ++++++++++---------- sql/field.h | 16 ++-- sql/ha_ndbcluster.cc | 2 +- sql/item.cc | 76 ++++++++-------- sql/item.h | 13 ++- sql/item_cmpfunc.cc | 31 ++++++- sql/item_cmpfunc.h | 9 ++ sql/item_func.cc | 181 ++++++++++++++++++++++++++------------- sql/item_func.h | 8 +- sql/item_sum.cc | 83 +++++++++++------- sql/item_sum.h | 15 ++-- sql/my_decimal.cc | 20 ++--- sql/my_decimal.h | 46 +++++++--- sql/mysqld.cc | 8 +- sql/set_var.cc | 4 + sql/sp_head.cc | 5 +- sql/sql_class.h | 1 + sql/sql_parse.cc | 7 +- sql/sql_select.cc | 5 +- sql/sql_show.cc | 7 +- strings/decimal.c | 26 ++---- 23 files changed, 417 insertions(+), 241 deletions(-) diff --git a/BitKeeper/etc/logging_ok b/BitKeeper/etc/logging_ok index 101e845ccf1..01d80957543 100644 --- a/BitKeeper/etc/logging_ok +++ b/BitKeeper/etc/logging_ok @@ -82,6 +82,7 @@ hf@bisonxp.(none) hf@deer.(none) hf@deer.mysql.r18.ru hf@genie.(none) +holyfoot@mysql.com igor@hundin.mysql.fi igor@linux.local igor@rurik.mysql.com diff --git a/include/decimal.h b/include/decimal.h index 7b49841ca88..2648e04c1cf 100644 --- a/include/decimal.h +++ b/include/decimal.h @@ -39,7 +39,7 @@ int decimal2longlong(decimal_t *from, longlong *to); int longlong2decimal(longlong from, decimal_t *to); int decimal2double(decimal_t *from, double *to); int double2decimal(double from, decimal_t *to); -void decimal_optimize_fraction(decimal_t *from); +int decimal_actual_fraction(decimal_t *from); int decimal2bin(decimal_t *from, char *to, int precision, int scale); int bin2decimal(char *from, decimal_t *to, int precision, int scale); diff --git a/sql/field.cc b/sql/field.cc index c59d9b63fca..78266441bda 100644 --- a/sql/field.cc +++ b/sql/field.cc @@ -2229,12 +2229,6 @@ void Field_decimal::sql_type(String &res) const ** Field_new_decimal ****************************************************************************/ -/* - Constructors of new decimal field. In case of using NOT_FIXED_DEC it try - to use maximally allowed length (DECIMAL_MAX_LENGTH) and number of digits - after decimal point maximally close to half of this range - (min(DECIMAL_MAX_LENGTH/2, NOT_FIXED_DEC-1)) -*/ Field_new_decimal::Field_new_decimal(char *ptr_arg, uint32 len_arg, uchar *null_ptr_arg, uchar null_bit_arg, @@ -2243,17 +2237,15 @@ Field_new_decimal::Field_new_decimal(char *ptr_arg, struct st_table *table_arg, uint8 dec_arg,bool zero_arg, bool unsigned_arg) - :Field_num(ptr_arg, - (dec_arg == NOT_FIXED_DEC || len_arg > DECIMAL_MAX_LENGTH ? - DECIMAL_MAX_LENGTH : len_arg), + :Field_num(ptr_arg, len_arg, null_ptr_arg, null_bit_arg, unireg_check_arg, field_name_arg, table_arg, - (dec_arg == NOT_FIXED_DEC ? - min(DECIMAL_MAX_LENGTH / 2, NOT_FIXED_DEC - 1) : - dec_arg), - zero_arg, unsigned_arg) + dec_arg, zero_arg, unsigned_arg) { - bin_size= my_decimal_get_binary_size(field_length, dec); + precision= my_decimal_length_to_precision(len_arg, dec_arg, unsigned_arg); + DBUG_ASSERT((precision <= DECIMAL_MAX_PRECISION) && + (dec <= DECIMAL_MAX_SCALE)); + bin_size= my_decimal_get_binary_size(precision, dec); } @@ -2261,18 +2253,18 @@ Field_new_decimal::Field_new_decimal(uint32 len_arg, bool maybe_null, const char *name, struct st_table *t_arg, - uint8 dec_arg) - :Field_num((char*) 0, - (dec_arg == NOT_FIXED_DEC|| len_arg > DECIMAL_MAX_LENGTH ? - DECIMAL_MAX_LENGTH : len_arg), + uint8 dec_arg, + bool unsigned_arg) + :Field_num((char*) 0, len_arg, maybe_null ? (uchar*) "": 0, 0, NONE, name, t_arg, - (dec_arg == NOT_FIXED_DEC ? - min(DECIMAL_MAX_LENGTH / 2, NOT_FIXED_DEC - 1) : - dec_arg), - 0, 0) + dec_arg, + 0, unsigned_arg) { - bin_size= my_decimal_get_binary_size(field_length, dec); + precision= my_decimal_length_to_precision(len_arg, dec_arg, unsigned_arg); + DBUG_ASSERT((precision <= DECIMAL_MAX_PRECISION) && + (dec <= DECIMAL_MAX_SCALE)); + bin_size= my_decimal_get_binary_size(precision, dec); } @@ -2295,7 +2287,7 @@ void Field_new_decimal::set_value_on_overflow(my_decimal *decimal_value, bool sign) { DBUG_ENTER("Field_new_decimal::set_value_on_overflow"); - max_my_decimal(decimal_value, field_length, decimals()); + max_my_decimal(decimal_value, precision, decimals()); if (sign) { if (unsigned_flag) @@ -2326,10 +2318,14 @@ void Field_new_decimal::set_value_on_overflow(my_decimal *decimal_value, bool Field_new_decimal::store_value(const my_decimal *decimal_value) { - my_decimal *dec= (my_decimal*)decimal_value; int error= 0; DBUG_ENTER("Field_new_decimal::store_value"); - dbug_print_decimal("enter", "value: %s", dec); +#ifndef DBUG_OFF + { + char dbug_buff[DECIMAL_MAX_STR_LENGTH+1]; + DBUG_PRINT("enter", ("value: %s", dbug_decimal_as_string(dbug_buff, decimal_value))); + } +#endif /* check that we do not try to write negative value in unsigned field */ if (unsigned_flag && decimal_value->sign()) @@ -2337,25 +2333,27 @@ bool Field_new_decimal::store_value(const my_decimal *decimal_value) DBUG_PRINT("info", ("unsigned overflow")); set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1); error= 1; - dec= &decimal_zero; + decimal_value= &decimal_zero; } - DBUG_PRINT("info", ("saving with precision %d, scale: %d", - (int)field_length, (int)decimals())); - dbug_print_decimal("info", "value: %s", dec); +#ifndef DBUG_OFF + { + char dbug_buff[DECIMAL_MAX_STR_LENGTH+1]; + DBUG_PRINT("info", ("saving with precision %d, scale: %d, value %s", + (int)precision, (int)dec, + dbug_decimal_as_string(dbug_buff, decimal_value))); + } +#endif - if (warn_if_overflow(my_decimal2binary(E_DEC_FATAL_ERROR & - ~E_DEC_OVERFLOW, - dec, ptr, - field_length, - decimals()))) + if (warn_if_overflow(my_decimal2binary(E_DEC_FATAL_ERROR & ~E_DEC_OVERFLOW, + decimal_value, ptr, precision, dec))) { my_decimal buff; DBUG_PRINT("info", ("overflow")); - set_value_on_overflow(&buff, dec->sign()); - my_decimal2binary(E_DEC_FATAL_ERROR, &buff, ptr, field_length, decimals()); + set_value_on_overflow(&buff, decimal_value->sign()); + my_decimal2binary(E_DEC_FATAL_ERROR, &buff, ptr, precision, dec); error= 1; } - DBUG_EXECUTE("info", print_decimal_buff(dec, (byte *) ptr, bin_size);); + DBUG_EXECUTE("info", print_decimal_buff(decimal_value, (byte *) ptr, bin_size);); DBUG_RETURN(error); } @@ -2387,7 +2385,11 @@ int Field_new_decimal::store(const char *from, uint length, break; } - dbug_print_decimal("enter", "value: %s", &decimal_value); +#ifndef DBUG_OFF + char dbug_buff[DECIMAL_MAX_STR_LENGTH+1]; + DBUG_PRINT("enter", ("value: %s", + dbug_decimal_as_string(dbug_buff, &decimal_value))); +#endif store_value(&decimal_value); DBUG_RETURN(err); } @@ -2477,8 +2479,7 @@ my_decimal* Field_new_decimal::val_decimal(my_decimal *decimal_value) { DBUG_ENTER("Field_new_decimal::val_decimal"); binary2my_decimal(E_DEC_FATAL_ERROR, ptr, decimal_value, - field_length, - decimals()); + precision, dec); DBUG_EXECUTE("info", print_decimal_buff(decimal_value, (byte *) ptr, bin_size);); DBUG_RETURN(decimal_value); @@ -2489,12 +2490,9 @@ String *Field_new_decimal::val_str(String *val_buffer, String *val_ptr __attribute__((unused))) { my_decimal decimal_value; - int fixed_precision= (zerofill ? - (field_length + (decimals() ? 1 : 0)) : - 0); + uint fixed_precision= zerofill ? precision : 0; my_decimal2string(E_DEC_FATAL_ERROR, val_decimal(&decimal_value), - fixed_precision, decimals(), '0', - val_buffer); + fixed_precision, dec, '0', val_buffer); return val_buffer; } @@ -2516,7 +2514,7 @@ void Field_new_decimal::sql_type(String &str) const { CHARSET_INFO *cs= str.charset(); str.length(cs->cset->snprintf(cs, (char*) str.ptr(), str.alloced_length(), - "decimal(%d,%d)", field_length, (int)dec)); + "decimal(%d,%d)", precision, (int)dec)); add_zerofill_and_unsigned(str); } diff --git a/sql/field.h b/sql/field.h index ac9c2f351b3..853b5dd13ff 100644 --- a/sql/field.h +++ b/sql/field.h @@ -300,8 +300,6 @@ public: int warn_if_overflow(int op_result); /* maximum possible display length */ virtual uint32 max_length()= 0; - /* length of field value symbolic representation (in bytes) */ - virtual uint32 representation_length() { return field_length; } /* convert decimal to longlong with overflow check */ longlong convert_decimal2longlong(const my_decimal *val, bool unsigned_flag, int *err); @@ -438,7 +436,13 @@ public: /* New decimal/numeric field which use fixed point arithmetic */ class Field_new_decimal :public Field_num { public: + /* The maximum number of decimal digits can be stored */ + uint precision; uint bin_size; + /* Constructors take max_length of the field as a parameter - not the */ + /* precision as the number of decimal digits allowed */ + /* So for example we need to count length from precision handling */ + /* CREATE TABLE ( DECIMAL(x,y)) */ Field_new_decimal(char *ptr_arg, uint32 len_arg, uchar *null_ptr_arg, uchar null_bit_arg, enum utype unireg_check_arg, const char *field_name_arg, @@ -446,7 +450,8 @@ public: uint8 dec_arg, bool zero_arg, bool unsigned_arg); Field_new_decimal(uint32 len_arg, bool maybe_null_arg, const char *field_name_arg, - struct st_table *table_arg, uint8 dec_arg); + struct st_table *table_arg, uint8 dec_arg, + bool unsigned_arg); enum_field_types type() const { return FIELD_TYPE_NEWDECIMAL;} enum ha_base_keytype key_type() const { return HA_KEYTYPE_BINARY; } Item_result result_type () const { return DECIMAL_RESULT; } @@ -465,10 +470,7 @@ public: void sort_string(char *buff, uint length); bool zero_pack() const { return 0; } void sql_type(String &str) const; - uint32 max_length() - { return field_length + 1 + (dec ? 1 : 0) + (field_length == dec ? 1 : 0); } - uint32 representation_length() - { return field_length + 1 + (dec ? 1 : 0) + (field_length == dec ? 1 : 0); }; + uint32 max_length() { return field_length; } uint size_of() const { return sizeof(*this); } uint32 pack_length() const { return (uint32) bin_size; } }; diff --git a/sql/ha_ndbcluster.cc b/sql/ha_ndbcluster.cc index b61dbd1792c..99fb05b24d3 100644 --- a/sql/ha_ndbcluster.cc +++ b/sql/ha_ndbcluster.cc @@ -3621,7 +3621,7 @@ static int create_ndb_column(NDBCOL &col, case MYSQL_TYPE_NEWDECIMAL: { Field_new_decimal *f= (Field_new_decimal*)field; - uint precision= f->field_length; + uint precision= f->precision; uint scale= f->decimals(); if (field->flags & UNSIGNED_FLAG) { diff --git a/sql/item.cc b/sql/item.cc index a2649d7506f..f10b24e48e6 100644 --- a/sql/item.cc +++ b/sql/item.cc @@ -80,7 +80,7 @@ Hybrid_type_traits_decimal::fix_length_and_dec(Item *item, Item *arg) const { item->decimals= arg->decimals; item->max_length= min(arg->max_length + DECIMAL_LONGLONG_DIGITS, - DECIMAL_MAX_LENGTH); + DECIMAL_MAX_STR_LENGTH); } @@ -348,6 +348,17 @@ Item::Item(THD *thd, Item *item): } +uint Item::decimal_precision() const +{ + Item_result restype= result_type(); + + if ((restype == DECIMAL_RESULT) || (restype == INT_RESULT)) + return min(my_decimal_length_to_precision(max_length, decimals, unsigned_flag), + DECIMAL_MAX_PRECISION); + return min(max_length, DECIMAL_MAX_PRECISION); +} + + void Item::print_item_w_name(String *str) { print(str); @@ -938,10 +949,8 @@ bool DTCollation::aggregate(DTCollation &dt, uint flags) return 1; } if (collation->state & MY_CS_BINSORT) - { return 0; - } - else if (dt.collation->state & MY_CS_BINSORT) + if (dt.collation->state & MY_CS_BINSORT) { set(dt); return 0; @@ -1021,7 +1030,7 @@ void Item_field::set_field(Field *field_par) field=result_field=field_par; // for easy coding with fields maybe_null=field->maybe_null(); decimals= field->decimals(); - max_length= field_par->representation_length(); + max_length= field_par->field_length; table_name= *field_par->table_name; field_name= field_par->field_name; db_name= field_par->table->s->db; @@ -1359,18 +1368,18 @@ Item_decimal::Item_decimal(const char *str_arg, uint length, str2my_decimal(E_DEC_FATAL_ERROR, str_arg, length, charset, &decimal_value); name= (char*) str_arg; decimals= (uint8) decimal_value.frac; - max_length= my_decimal_max_length(&decimal_value); fixed= 1; - unsigned_flag= !decimal_value.sign(); + max_length= my_decimal_precision_to_length(decimal_value.intg + decimals, + decimals, unsigned_flag); } Item_decimal::Item_decimal(longlong val, bool unsig) { int2my_decimal(E_DEC_FATAL_ERROR, val, unsig, &decimal_value); decimals= (uint8) decimal_value.frac; - max_length= my_decimal_max_length(&decimal_value); fixed= 1; - unsigned_flag= !decimal_value.sign(); + max_length= my_decimal_precision_to_length(decimal_value.intg + decimals, + decimals, unsigned_flag); } @@ -1378,9 +1387,9 @@ Item_decimal::Item_decimal(double val, int precision, int scale) { double2my_decimal(E_DEC_FATAL_ERROR, val, &decimal_value); decimals= (uint8) decimal_value.frac; - max_length= my_decimal_max_length(&decimal_value); fixed= 1; - unsigned_flag= !decimal_value.sign(); + max_length= my_decimal_precision_to_length(decimal_value.intg + decimals, + decimals, unsigned_flag); } @@ -1392,7 +1401,6 @@ Item_decimal::Item_decimal(const char *str, const my_decimal *val_arg, decimals= (uint8) decimal_par; max_length= length; fixed= 1; - unsigned_flag= !decimal_value.sign(); } @@ -1400,19 +1408,20 @@ Item_decimal::Item_decimal(my_decimal *value_par) { my_decimal2decimal(value_par, &decimal_value); decimals= (uint8) decimal_value.frac; - max_length= my_decimal_max_length(value_par); fixed= 1; - unsigned_flag= !decimal_value.sign(); + max_length= my_decimal_precision_to_length(decimal_value.intg + decimals, + decimals, !decimal_value.sign()); } Item_decimal::Item_decimal(const char *bin, int precision, int scale) { - binary2my_decimal(E_DEC_FATAL_ERROR, bin, &decimal_value, precision, scale); + binary2my_decimal(E_DEC_FATAL_ERROR, bin, + &decimal_value, precision, scale); decimals= (uint8) decimal_value.frac; - max_length= my_decimal_max_length(&decimal_value); fixed= 1; - unsigned_flag= !decimal_value.sign(); + max_length= my_decimal_precision_to_length(precision, decimals, + !decimal_value.sign()); } @@ -1672,7 +1681,8 @@ void Item_param::set_decimal(const char *str, ulong length) str2my_decimal(E_DEC_FATAL_ERROR, str, &decimal_value, &end); state= DECIMAL_VALUE; decimals= decimal_value.frac; - max_length= decimal_value.intg + decimals + 2; + max_length= my_decimal_precision_to_length(decimal_value.precision(), + decimals, unsigned_flag); maybe_null= 0; DBUG_VOID_RETURN; } @@ -1823,7 +1833,8 @@ bool Item_param::set_from_user_var(THD *thd, const user_var_entry *entry) my_decimal2decimal(ent_value, &decimal_value); state= DECIMAL_VALUE; decimals= ent_value->frac; - max_length= ent_value->intg + decimals + 2; + max_length= my_decimal_precision_to_length(ent_value->precision(), + decimals, unsigned_flag); break; } default: @@ -3173,11 +3184,8 @@ Field *Item::tmp_table_field_from_field_type(TABLE *table) switch (field_type()) { case MYSQL_TYPE_DECIMAL: - return new Field_decimal((char*) 0, max_length, null_ptr, 0, Field::NONE, - name, table, decimals, 0, unsigned_flag); case MYSQL_TYPE_NEWDECIMAL: - return new Field_new_decimal((char*) 0, max_length - (decimals?1:0), - null_ptr, 0, + return new Field_new_decimal((char*) 0, max_length, null_ptr, 0, Field::NONE, name, table, decimals, 0, unsigned_flag); case MYSQL_TYPE_TINY: @@ -4878,6 +4886,7 @@ Item_type_holder::Item_type_holder(THD *thd, Item *item) /* fix variable decimals which always is NOT_FIXED_DEC */ if (Field::result_merge_type(fld_type) == INT_RESULT) decimals= 0; + prev_decimal_int_part= item->decimal_int_part(); } @@ -5000,18 +5009,12 @@ bool Item_type_holder::join_types(THD *thd, Item *item) } if (Field::result_merge_type(fld_type) == DECIMAL_RESULT) { - int item_length= display_length(item); - int intp1= item_length - min(item->decimals, NOT_FIXED_DEC - 1); - int intp2= max_length - min(decimals, NOT_FIXED_DEC - 1); - /* can't be overflow because it work only for decimals (no strings) */ - int dec_length= max(intp1, intp2) + decimals; - max_length= max(max_length, (uint) max(item_length, dec_length)); - /* - we can't allow decimals to be NOT_FIXED_DEC, to prevent creation - decimal with max precision (see Field_new_decimal constcuctor) - */ - if (decimals >= NOT_FIXED_DEC) - decimals= NOT_FIXED_DEC - 1; + decimals= min(max(decimals, item->decimals), DECIMAL_MAX_SCALE); + int precision= min(max(prev_decimal_int_part, item->decimal_int_part()) + + decimals, DECIMAL_MAX_PRECISION); + unsigned_flag&= item->unsigned_flag; + max_length= my_decimal_precision_to_length(precision, decimals, + unsigned_flag); } else max_length= max(max_length, display_length(item)); @@ -5032,6 +5035,9 @@ bool Item_type_holder::join_types(THD *thd, Item *item) } maybe_null|= item->maybe_null; get_full_info(item); + + /* Remember decimal integer part to be used in DECIMAL_RESULT handleng */ + prev_decimal_int_part= decimal_int_part(); DBUG_PRINT("info", ("become type: %d len: %u dec: %u", (int) fld_type, max_length, (uint) decimals)); DBUG_RETURN(FALSE); diff --git a/sql/item.h b/sql/item.h index f762896ba34..e5ec68d606e 100644 --- a/sql/item.h +++ b/sql/item.h @@ -258,7 +258,7 @@ public: Item *next; uint32 max_length; uint name_length; /* Length of name */ - uint8 marker,decimals; + uint8 marker, decimals; my_bool maybe_null; /* If item may be null */ my_bool null_value; /* if item is null */ my_bool unsigned_flag; @@ -442,6 +442,9 @@ public: virtual cond_result eq_cmp_result() const { return COND_OK; } inline uint float_length(uint decimals_par) const { return decimals != NOT_FIXED_DEC ? (DBL_DIG+2+decimals_par) : DBL_DIG+8;} + virtual uint decimal_precision() const; + inline int decimal_int_part() const + { return my_decimal_int_part(decimal_precision(), decimals); } /* Returns true if this is constant (during query execution, i.e. its value will not change until next fix_fields) and its value is known. @@ -937,7 +940,7 @@ public: { max_length=length; fixed= 1; } #ifdef HAVE_LONG_LONG Item_int(longlong i,uint length=21) :value(i) - { max_length=length; fixed= 1;} + { max_length=length; fixed= 1; } #endif Item_int(const char *str_arg,longlong i,uint length) :value(i) { max_length=length; name=(char*) str_arg; fixed= 1; } @@ -956,6 +959,7 @@ public: void cleanup() {} void print(String *str); Item_num *neg() { value= -value; return this; } + uint decimal_precision() const { return (uint)(max_length - test(value < 0)); } }; @@ -983,6 +987,7 @@ public: int save_in_field(Field *field, bool no_conversions); void print(String *str); Item_num *neg (); + uint decimal_precision() const { return max_length; } }; @@ -1022,6 +1027,7 @@ public: unsigned_flag= !decimal_value.sign(); return this; } + uint decimal_precision() const { return decimal_value.precision(); } }; class Item_float :public Item_num @@ -1784,6 +1790,9 @@ protected: enum_field_types fld_type; void get_full_info(Item *item); + + /* It is used to count decimal precision in join_types */ + int prev_decimal_int_part; public: Item_type_holder(THD*, Item*); diff --git a/sql/item_cmpfunc.cc b/sql/item_cmpfunc.cc index 66354560756..8c44972e469 100644 --- a/sql/item_cmpfunc.cc +++ b/sql/item_cmpfunc.cc @@ -1134,6 +1134,14 @@ Item_func_ifnull::fix_length_and_dec() cached_field_type= Item_func::field_type(); } + +uint Item_func_ifnull::decimal_precision() const +{ + int max_int_part=max(args[0]->decimal_int_part(),args[1]->decimal_int_part()); + return min(max_int_part + decimals, DECIMAL_MAX_PRECISION); +} + + enum_field_types Item_func_ifnull::field_type() const { return cached_field_type; @@ -1251,6 +1259,14 @@ Item_func_if::fix_length_and_dec() } +uint Item_func_if::decimal_precision() const +{ + int precision=(max(args[1]->decimal_int_part(),args[2]->decimal_int_part())+ + decimals); + return min(precision, DECIMAL_MAX_PRECISION); +} + + double Item_func_if::val_real() { @@ -1304,7 +1320,8 @@ Item_func_nullif::fix_length_and_dec() { max_length=args[0]->max_length; decimals=args[0]->decimals; - agg_result_type(&cached_result_type, args, 2); + unsigned_flag= args[0]->unsigned_flag; + cached_result_type= args[0]->result_type(); if (cached_result_type == STRING_RESULT && agg_arg_charsets(collation, args, arg_count, MY_COLL_CMP_CONV)) return; @@ -1616,6 +1633,18 @@ void Item_func_case::fix_length_and_dec() } +uint Item_func_case::decimal_precision() const +{ + int max_int_part=0; + for (uint i=0 ; i < ncases ; i+=2) + set_if_bigger(max_int_part, args[i+1]->decimal_int_part()); + + if (else_expr_num != -1) + set_if_bigger(max_int_part, args[else_expr_num]->decimal_int_part()); + return min(max_int_part + decimals, DECIMAL_MAX_PRECISION); +} + + /* TODO: Fix this so that it prints the whole CASE expression */ void Item_func_case::print(String *str) diff --git a/sql/item_cmpfunc.h b/sql/item_cmpfunc.h index e917e13c5aa..78357c457cb 100644 --- a/sql/item_cmpfunc.h +++ b/sql/item_cmpfunc.h @@ -95,6 +95,7 @@ public: Item_bool_func(THD *thd, Item_bool_func *item) :Item_int_func(thd, item) {} bool is_bool_func() { return 1; } void fix_length_and_dec() { decimals=0; max_length=1; } + uint decimal_precision() const { return 1; } }; class Item_cache; @@ -208,6 +209,7 @@ public: bool is_null() { return test(args[0]->is_null() || args[1]->is_null()); } bool is_bool_func() { return 1; } CHARSET_INFO *compare_collation() { return cmp.cmp_collation.collation; } + uint decimal_precision() const { return 1; } friend class Arg_comparator; }; @@ -411,6 +413,7 @@ public: void fix_length_and_dec(); void print(String *str); CHARSET_INFO *compare_collation() { return cmp_collation.collation; } + uint decimal_precision() const { return 1; } }; @@ -445,6 +448,7 @@ public: longlong val_int(); void fix_length_and_dec(); const char *func_name() const { return "interval"; } + uint decimal_precision() const { return 2; } }; @@ -485,6 +489,7 @@ public: void fix_length_and_dec(); const char *func_name() const { return "ifnull"; } Field *tmp_table_field(TABLE *table); + uint decimal_precision() const; }; @@ -507,6 +512,7 @@ public: return Item_func::fix_fields(thd, tlist, ref); } void fix_length_and_dec(); + uint decimal_precision() const; const char *func_name() const { return "if"; } table_map not_null_tables() const { return 0; } }; @@ -525,6 +531,7 @@ public: my_decimal *val_decimal(my_decimal *); enum Item_result result_type () const { return cached_result_type; } void fix_length_and_dec(); + uint decimal_precision() const { return args[0]->decimal_precision(); } const char *func_name() const { return "nullif"; } void print(String *str) { Item_func::print(str); } table_map not_null_tables() const { return 0; } @@ -563,6 +570,7 @@ public: String *val_str(String *); my_decimal *val_decimal(my_decimal *); void fix_length_and_dec(); + uint decimal_precision() const; table_map not_null_tables() const { return 0; } enum Item_result result_type () const { return cached_result_type; } const char *func_name() const { return "case"; } @@ -825,6 +833,7 @@ class Item_func_in :public Item_int_func } longlong val_int(); void fix_length_and_dec(); + uint decimal_precision() const { return 1; } void cleanup() { DBUG_ENTER("Item_func_in::cleanup"); diff --git a/sql/item_func.cc b/sql/item_func.cc index 4e3011ac4bb..546120ba5cd 100644 --- a/sql/item_func.cc +++ b/sql/item_func.cc @@ -534,8 +534,10 @@ Field *Item_func::tmp_table_field(TABLE *t_arg) res= make_string_field(t_arg); break; case DECIMAL_RESULT: - res= new Field_new_decimal(max_length + (decimals?1:0), maybe_null, - name, t_arg, decimals); + res= new Field_new_decimal(my_decimal_precision_to_length(decimal_precision(), + decimals, + unsigned_flag), + maybe_null, name, t_arg, decimals, unsigned_flag); break; case ROW_RESULT: default: @@ -590,19 +592,18 @@ void Item_func_numhybrid::fix_num_length_and_dec() void Item_func::count_decimal_length() { - uint32 length= 0; + int max_int_part= 0; decimals= 0; + unsigned_flag= 1; for (uint i=0 ; i < arg_count ; i++) { set_if_bigger(decimals, args[i]->decimals); - set_if_bigger(length, (args[i]->max_length - args[i]->decimals)); + set_if_bigger(max_int_part, args[i]->decimal_int_part()); + set_if_smaller(unsigned_flag, args[i]->unsigned_flag); } - max_length= length; - length+= decimals; - if (length < max_length) // If previous operation gave overflow - max_length= UINT_MAX32; - else - max_length= length; + int precision= min(max_int_part + decimals, DECIMAL_MAX_PRECISION); + max_length= my_decimal_precision_to_length(precision, decimals, + unsigned_flag); } @@ -616,8 +617,12 @@ void Item_func::count_decimal_length() void Item_func::count_only_length() { max_length= 0; + unsigned_flag= 0; for (uint i=0 ; i < arg_count ; i++) + { set_if_bigger(max_length, args[i]->max_length); + set_if_bigger(unsigned_flag, args[i]->unsigned_flag); + } } @@ -719,7 +724,6 @@ void Item_num_op::find_num_type(void) { decimals= 0; hybrid_type=INT_RESULT; - unsigned_flag=args[0]->unsigned_flag | args[1]->unsigned_flag; result_precision(); } DBUG_PRINT("info", ("Type: %s", @@ -1075,9 +1079,17 @@ my_decimal *Item_func_plus::decimal_op(my_decimal *decimal_value) void Item_func_additive_op::result_precision() { decimals= max(args[0]->decimals, args[1]->decimals); - max_length= (max(args[0]->max_length - args[0]->decimals, - args[1]->max_length - args[1]->decimals) + - decimals + 1); + int max_int_part= max(args[0]->decimal_precision() - args[0]->decimals, + args[1]->decimal_precision() - args[1]->decimals); + int precision= min(max_int_part + 1 + decimals, DECIMAL_MAX_PRECISION); + + /* Integer operations keep unsigned_flag if one of arguments is unsigned */ + if (result_type() == INT_RESULT) + unsigned_flag= args[0]->unsigned_flag | args[1]->unsigned_flag; + else + unsigned_flag= args[0]->unsigned_flag & args[1]->unsigned_flag; + max_length= my_decimal_precision_to_length(precision, decimals, + unsigned_flag); } @@ -1172,10 +1184,15 @@ my_decimal *Item_func_mul::decimal_op(my_decimal *decimal_value) void Item_func_mul::result_precision() { - decimals= args[0]->decimals + args[1]->decimals; - max_length= ((args[0]->max_length - args[0]->decimals) + - (args[1]->max_length - args[1]->decimals) + - decimals); + /* Integer operations keep unsigned_flag if one of arguments is unsigned */ + if (result_type() == INT_RESULT) + unsigned_flag= args[0]->unsigned_flag | args[1]->unsigned_flag; + else + unsigned_flag= args[0]->unsigned_flag & args[1]->unsigned_flag; + decimals= min(args[0]->decimals + args[1]->decimals, DECIMAL_MAX_SCALE); + int precision= min(args[0]->decimal_precision() + args[1]->decimal_precision(), + DECIMAL_MAX_PRECISION); + max_length= my_decimal_precision_to_length(precision, decimals,unsigned_flag); } @@ -1207,7 +1224,7 @@ my_decimal *Item_func_div::decimal_op(my_decimal *decimal_value) if ((null_value= args[1]->null_value)) return 0; switch (my_decimal_div(E_DEC_FATAL_ERROR & ~E_DEC_DIV_ZERO, decimal_value, - val1, val2, DECIMAL_DIV_SCALE_INCREASE)) { + val1, val2, prec_increment)) { case E_DEC_TRUNCATED: case E_DEC_OK: return decimal_value; @@ -1222,11 +1239,16 @@ my_decimal *Item_func_div::decimal_op(my_decimal *decimal_value) void Item_func_div::result_precision() { - decimals= (args[0]->decimals + args[0]->decimals + - DECIMAL_DIV_SCALE_INCREASE); - max_length= ((args[0]->max_length - args[0]->decimals) + - (args[1]->max_length - args[1]->decimals) + - decimals); + uint precision=min(args[0]->decimal_precision() + prec_increment, + DECIMAL_MAX_PRECISION); + /* Integer operations keep unsigned_flag if one of arguments is unsigned */ + if (result_type() == INT_RESULT) + unsigned_flag= args[0]->unsigned_flag | args[1]->unsigned_flag; + else + unsigned_flag= args[0]->unsigned_flag & args[1]->unsigned_flag; + decimals= min(args[0]->decimals + prec_increment, DECIMAL_MAX_SCALE); + max_length= my_decimal_precision_to_length(precision, decimals, + unsigned_flag); } @@ -1234,10 +1256,11 @@ void Item_func_div::fix_length_and_dec() { DBUG_ENTER("Item_func_div::fix_length_and_dec"); Item_num_op::fix_length_and_dec(); + prec_increment= current_thd->variables.div_precincrement; switch(hybrid_type) { case REAL_RESULT: { - decimals=max(args[0]->decimals,args[1]->decimals)+2; + decimals=max(args[0]->decimals,args[1]->decimals)+prec_increment; set_if_smaller(decimals, NOT_FIXED_DEC); max_length=args[0]->max_length - args[0]->decimals + decimals; uint tmp=float_length(decimals); @@ -1383,7 +1406,6 @@ void Item_func_neg::fix_num_length_and_dec() decimals= args[0]->decimals; /* 1 add because sign can appear */ max_length= args[0]->max_length + 1; - unsigned_flag= 0; } @@ -1408,6 +1430,7 @@ void Item_func_neg::fix_length_and_dec() hybrid_type= DECIMAL_RESULT; DBUG_PRINT("info", ("Type changed: DECIMAL_RESULT")); } + unsigned_flag= 0; DBUG_VOID_RETURN; } @@ -1792,17 +1815,65 @@ my_decimal *Item_func_floor::decimal_op(my_decimal *decimal_value) } -void Item_func_round::fix_num_length_and_dec() +void Item_func_round::fix_length_and_dec() { - max_length= args[0]->max_length; - decimals= NOT_FIXED_DEC; - if (args[1]->const_item()) + unsigned_flag= args[0]->unsigned_flag; + if (!args[1]->const_item()) { - int tmp=(int) args[1]->val_int(); - if (tmp < 0) - decimals=0; + max_length= args[0]->max_length; + decimals= args[0]->decimals; + hybrid_type= REAL_RESULT; + return; + } + + int decimals_to_set= max(args[1]->val_int(), 0); + if (args[0]->decimals == NOT_FIXED_DEC) + { + max_length= args[0]->max_length; + decimals= min(decimals_to_set, NOT_FIXED_DEC); + hybrid_type= REAL_RESULT; + return; + } + + switch (args[0]->result_type()) + { + case REAL_RESULT: + case STRING_RESULT: + hybrid_type= REAL_RESULT; + decimals= min(decimals_to_set, NOT_FIXED_DEC); + max_length= float_length(decimals); + break; + case INT_RESULT: + if (truncate || (args[0]->decimal_precision() < DECIMAL_LONGLONG_DIGITS)) + { + /* Here we can keep INT_RESULT */ + hybrid_type= INT_RESULT; + int length_can_increase= !truncate && (args[1]->val_int() < 0); + max_length= args[0]->max_length + length_can_increase; + decimals= 0; + break; + } + case DECIMAL_RESULT: + { + hybrid_type= DECIMAL_RESULT; + int decimals_delta= args[0]->decimals - decimals_to_set; + int precision= args[0]->decimal_precision(); + if (decimals_delta > 0) + { + int length_increase= truncate ? 0:1; + precision-= decimals_delta - length_increase; + decimals= decimals_to_set; + } else - decimals=min(tmp, NOT_FIXED_DEC); + /* Decimals to set is bigger that the original scale */ + /* we keep original decimals value */ + decimals= args[0]->decimals; + max_length= my_decimal_precision_to_length(precision, decimals, + unsigned_flag); + break; + } + default: + DBUG_ASSERT(0); /* This result type isn't handled */ } } @@ -1880,7 +1951,9 @@ my_decimal *Item_func_round::decimal_op(my_decimal *decimal_value) my_decimal val, *value= args[0]->val_decimal(&val); int dec=(int) args[1]->val_int(); if (dec > 0) - decimals= dec; // to get correct output + { + decimals= min(dec, DECIMAL_MAX_SCALE); // to get correct output + } if ((null_value= (args[0]->null_value || args[1]->null_value || my_decimal_round(E_DEC_FATAL_ERROR, value, dec, truncate, decimal_value) > 1))) @@ -1972,6 +2045,7 @@ double Item_func_units::val_real() void Item_func_min_max::fix_length_and_dec() { + int max_int_part=0; decimals=0; max_length=0; maybe_null=1; @@ -1981,12 +2055,16 @@ void Item_func_min_max::fix_length_and_dec() { set_if_bigger(max_length, args[i]->max_length); set_if_bigger(decimals, args[i]->decimals); + set_if_bigger(max_int_part, args[i]->decimal_int_part()); if (!args[i]->maybe_null) maybe_null=0; cmp_type=item_cmp_type(cmp_type,args[i]->result_type()); } if (cmp_type == STRING_RESULT) agg_arg_charsets(collation, args, arg_count, MY_COLL_CMP_CONV); + else if ((cmp_type == DECIMAL_RESULT) || (cmp_type == INT_RESULT)) + max_length= my_decimal_precision_to_length(max_int_part+decimals, decimals, + unsigned_flag); } @@ -3913,15 +3991,17 @@ void Item_func_get_user_var::fix_length_and_dec() switch (var_entry->type) { case REAL_RESULT: max_length= DBL_DIG + 8; + break; case INT_RESULT: max_length= MAX_BIGINT_WIDTH; + decimals=0; break; case STRING_RESULT: max_length= MAX_BLOB_WIDTH; break; case DECIMAL_RESULT: - max_length= DECIMAL_MAX_LENGTH; - decimals= min(DECIMAL_MAX_LENGTH / 2, NOT_FIXED_DEC - 1); + max_length= DECIMAL_MAX_STR_LENGTH; + decimals= DECIMAL_MAX_SCALE; break; case ROW_RESULT: // Keep compiler happy default: @@ -4757,7 +4837,7 @@ Item_func_sp::fix_length_and_dec() if (result_field) { decimals= result_field->decimals(); - max_length= result_field->representation_length(); + max_length= result_field->field_length; DBUG_VOID_RETURN; } @@ -4769,29 +4849,12 @@ Item_func_sp::fix_length_and_dec() } else { - if (!field) - field= sp_result_field(); - + field= sp_result_field(); decimals= field->decimals(); - max_length= field->representation_length(); - - switch (field->result_type()) { - case STRING_RESULT: - maybe_null= 1; - case REAL_RESULT: - case INT_RESULT: - case DECIMAL_RESULT: - break; - case ROW_RESULT: - default: - // This case should never be chosen - DBUG_ASSERT(0); - break; - } - - if (field != result_field) - delete field; + max_length= field->field_length; + maybe_null= 1; } + delete field; DBUG_VOID_RETURN; } diff --git a/sql/item_func.h b/sql/item_func.h index 76d1151f3bf..57faa05ce23 100644 --- a/sql/item_func.h +++ b/sql/item_func.h @@ -267,6 +267,8 @@ public: void fix_length_and_dec() { max_length=args[0]->max_length; unsigned_flag=0; } void print(String *str); + uint decimal_precision() const { return args[0]->decimal_precision(); } + }; @@ -296,7 +298,7 @@ public: longlong val_int(); my_decimal *val_decimal(my_decimal*); enum Item_result result_type () const { return DECIMAL_RESULT; } - enum_field_types field_type() const { return MYSQL_TYPE_DECIMAL; } + enum_field_types field_type() const { return MYSQL_TYPE_NEWDECIMAL; } void fix_length_and_dec() {}; }; @@ -346,6 +348,7 @@ public: class Item_func_div :public Item_num_op { public: + uint prec_increment; Item_func_div(Item *a,Item *b) :Item_num_op(a,b) {} longlong int_op() { DBUG_ASSERT(0); return 0; } double real_op(); @@ -390,6 +393,7 @@ public: const char *func_name() const { return "-"; } void fix_length_and_dec(); void fix_num_length_and_dec(); + uint decimal_precision() const { return args[0]->decimal_precision(); } }; @@ -593,7 +597,7 @@ public: double real_op(); longlong int_op(); my_decimal *decimal_op(my_decimal *); - void fix_num_length_and_dec(); + void fix_length_and_dec(); }; diff --git a/sql/item_sum.cc b/sql/item_sum.cc index 3dd4b6618a2..a7bc08ea170 100644 --- a/sql/item_sum.cc +++ b/sql/item_sum.cc @@ -156,8 +156,8 @@ Field *Item_sum::create_tmp_field(bool group, TABLE *table, collation.collation); return make_string_field(table); case DECIMAL_RESULT: - return new Field_new_decimal(max_length - (decimals?1:0), - maybe_null, name, table, decimals); + return new Field_new_decimal(max_length, maybe_null, name, table, + decimals, unsigned_flag); case ROW_RESULT: default: // This case should never be choosen @@ -372,13 +372,16 @@ void Item_sum_sum::fix_length_and_dec() break; case INT_RESULT: case DECIMAL_RESULT: + { /* SUM result can't be longer than length(arg) + length(MAX_ROWS) */ - max_length= min(args[0]->max_length + DECIMAL_LONGLONG_DIGITS, - DECIMAL_MAX_LENGTH); + int precision= args[0]->decimal_precision() + DECIMAL_LONGLONG_DIGITS; + max_length= my_decimal_precision_to_length(precision, decimals, + unsigned_flag); curr_dec_buff= 0; hybrid_type= DECIMAL_RESULT; my_decimal_set_zero(dec_buffs); break; + } case ROW_RESULT: default: DBUG_ASSERT(0); @@ -725,11 +728,12 @@ void Item_sum_avg_distinct::fix_length_and_dec() { Item_sum_distinct::fix_length_and_dec(); + prec_increment= current_thd->variables.div_precincrement; /* AVG() will divide val by count. We need to reserve digits after decimal point as the result can be fractional. */ - decimals= min(decimals + 4, NOT_FIXED_DEC); + decimals= min(decimals + prec_increment, NOT_FIXED_DEC); } @@ -790,14 +794,19 @@ void Item_sum_avg::fix_length_and_dec() { Item_sum_sum::fix_length_and_dec(); maybe_null=null_value=1; - decimals= min(args[0]->decimals + 4, NOT_FIXED_DEC); + prec_increment= current_thd->variables.div_precincrement; if (hybrid_type == DECIMAL_RESULT) { - f_scale= args[0]->decimals; - max_length= DECIMAL_MAX_LENGTH + (f_scale ? 1 : 0); - f_precision= DECIMAL_MAX_LENGTH; + int precision= args[0]->decimal_precision() + prec_increment; + decimals= min(args[0]->decimals + prec_increment, DECIMAL_MAX_SCALE); + max_length= my_decimal_precision_to_length(precision, decimals, + unsigned_flag); + f_precision= min(precision+DECIMAL_LONGLONG_DIGITS, DECIMAL_MAX_PRECISION); + f_scale= args[0]->decimals; dec_bin_size= my_decimal_get_binary_size(f_precision, f_scale); } + else + decimals= min(args[0]->decimals + prec_increment, NOT_FIXED_DEC); } @@ -822,8 +831,8 @@ Field *Item_sum_avg::create_tmp_field(bool group, TABLE *table, 0, name, table, &my_charset_bin); } if (hybrid_type == DECIMAL_RESULT) - return new Field_new_decimal(f_precision, - maybe_null, name, table, f_scale); + return new Field_new_decimal(max_length, maybe_null, name, table, + decimals, unsigned_flag); return new Field_double(max_length, maybe_null, name, table, decimals); } @@ -868,7 +877,7 @@ my_decimal *Item_sum_avg::val_decimal(my_decimal *val) } sum_dec= Item_sum_sum::val_decimal(&sum); int2my_decimal(E_DEC_FATAL_ERROR, count, 0, &cnt); - my_decimal_div(E_DEC_FATAL_ERROR, val, sum_dec, &cnt, 4); + my_decimal_div(E_DEC_FATAL_ERROR, val, sum_dec, &cnt, prec_increment); return val; } @@ -905,7 +914,8 @@ Item *Item_sum_std::copy_or_same(THD* thd) Item_sum_variance::Item_sum_variance(THD *thd, Item_sum_variance *item): Item_sum_num(thd, item), hybrid_type(item->hybrid_type), - cur_dec(item->cur_dec), count(item->count), sample(item->sample) + cur_dec(item->cur_dec), count(item->count), sample(item->sample), + prec_increment(item->prec_increment) { if (hybrid_type == DECIMAL_RESULT) { @@ -929,20 +939,21 @@ void Item_sum_variance::fix_length_and_dec() { DBUG_ENTER("Item_sum_variance::fix_length_and_dec"); maybe_null= null_value= 1; - decimals= min(args[0]->decimals + 4, NOT_FIXED_DEC); + prec_increment= current_thd->variables.div_precincrement; switch (args[0]->result_type()) { case REAL_RESULT: case STRING_RESULT: + decimals= min(args[0]->decimals + 4, NOT_FIXED_DEC); hybrid_type= REAL_RESULT; sum= 0.0; break; case INT_RESULT: case DECIMAL_RESULT: - /* - SUM result can't be longer than length(arg)*2 + - digits_after_the_point_to_add - */ - max_length= args[0]->max_length*2 + 4; + { + int precision= args[0]->decimal_precision()*2 + prec_increment; + decimals= min(args[0]->decimals + prec_increment, DECIMAL_MAX_SCALE); + max_length= my_decimal_precision_to_length(precision, decimals, + unsigned_flag); cur_dec= 0; hybrid_type= DECIMAL_RESULT; my_decimal_set_zero(dec_sum); @@ -954,12 +965,15 @@ void Item_sum_variance::fix_length_and_dec() column_value * column_value */ f_scale0= args[0]->decimals; - f_precision0= DECIMAL_MAX_LENGTH / 2; - f_scale1= min(f_scale0 * 2, NOT_FIXED_DEC - 1); - f_precision1= DECIMAL_MAX_LENGTH; + f_precision0= min(args[0]->decimal_precision() + DECIMAL_LONGLONG_DIGITS, + DECIMAL_MAX_PRECISION); + f_scale1= min(args[0]->decimals * 2, DECIMAL_MAX_SCALE); + f_precision1= min(args[0]->decimal_precision()*2 + DECIMAL_LONGLONG_DIGITS, + DECIMAL_MAX_PRECISION); dec_bin_size0= my_decimal_get_binary_size(f_precision0, f_scale0); dec_bin_size1= my_decimal_get_binary_size(f_precision1, f_scale1); break; + } case ROW_RESULT: default: DBUG_ASSERT(0); @@ -997,8 +1011,8 @@ Field *Item_sum_variance::create_tmp_field(bool group, TABLE *table, 0, name, table, &my_charset_bin); } if (hybrid_type == DECIMAL_RESULT) - return new Field_new_decimal(DECIMAL_MAX_LENGTH, - maybe_null, name, table, f_scale1 + 4); + return new Field_new_decimal(max_length, maybe_null, name, table, + decimals, unsigned_flag); return new Field_double(max_length, maybe_null,name,table,decimals); } @@ -1083,9 +1097,11 @@ my_decimal *Item_sum_variance::val_decimal(my_decimal *dec_buf) int2my_decimal(E_DEC_FATAL_ERROR, count-sample, 0, &count1_buf); my_decimal_mul(E_DEC_FATAL_ERROR, &sum_sqr_buf, dec_sum+cur_dec, dec_sum+cur_dec); - my_decimal_div(E_DEC_FATAL_ERROR, dec_buf, &sum_sqr_buf, &count_buf, 2); + my_decimal_div(E_DEC_FATAL_ERROR, dec_buf, + &sum_sqr_buf, &count_buf, prec_increment); my_decimal_sub(E_DEC_FATAL_ERROR, &sum_sqr_buf, dec_sqr+cur_dec, dec_buf); - my_decimal_div(E_DEC_FATAL_ERROR, dec_buf, &sum_sqr_buf, &count1_buf, 2); + my_decimal_div(E_DEC_FATAL_ERROR, dec_buf, + &sum_sqr_buf, &count1_buf, prec_increment); return dec_buf; } @@ -1929,10 +1945,12 @@ Item_avg_field::Item_avg_field(Item_result res_type, Item_sum_avg *item) { name=item->name; decimals=item->decimals; - max_length=item->max_length; + max_length= item->max_length; + unsigned_flag= item->unsigned_flag; field=item->result_field; maybe_null=1; hybrid_type= res_type; + prec_increment= item->prec_increment; if (hybrid_type == DECIMAL_RESULT) { f_scale= item->f_scale; @@ -1941,7 +1959,6 @@ Item_avg_field::Item_avg_field(Item_result res_type, Item_sum_avg *item) } } - double Item_avg_field::val_real() { // fix_fields() never calls for this Item @@ -1982,7 +1999,8 @@ my_decimal *Item_avg_field::val_decimal(my_decimal *dec_buf) binary2my_decimal(E_DEC_FATAL_ERROR, field->ptr, &dec_field, f_precision, f_scale); int2my_decimal(E_DEC_FATAL_ERROR, count, 0, &dec_count); - my_decimal_div(E_DEC_FATAL_ERROR, dec_buf, &dec_field, &dec_count, 4); + my_decimal_div(E_DEC_FATAL_ERROR, dec_buf, + &dec_field, &dec_count, prec_increment); return dec_buf; } @@ -2054,9 +2072,11 @@ Item_variance_field::Item_variance_field(Item_sum_variance *item) name=item->name; decimals=item->decimals; max_length=item->max_length; + unsigned_flag= item->unsigned_flag; field=item->result_field; maybe_null=1; sample= item->sample; + prec_increment= item->prec_increment; if ((hybrid_type= item->hybrid_type) == DECIMAL_RESULT) { f_scale0= item->f_scale0; @@ -2116,9 +2136,10 @@ my_decimal *Item_variance_field::val_decimal(my_decimal *dec_buf) binary2my_decimal(E_DEC_FATAL_ERROR, field->ptr+dec_bin_size0, &dec_sqr, f_precision1, f_scale1); my_decimal_mul(E_DEC_FATAL_ERROR, &tmp, &dec_sum, &dec_sum); - my_decimal_div(E_DEC_FATAL_ERROR, dec_buf, &tmp, &dec_count, 2); + my_decimal_div(E_DEC_FATAL_ERROR, dec_buf, &tmp, &dec_count, prec_increment); my_decimal_sub(E_DEC_FATAL_ERROR, &dec_sum, &dec_sqr, dec_buf); - my_decimal_div(E_DEC_FATAL_ERROR, dec_buf, &dec_sum, &dec1_count, 2); + my_decimal_div(E_DEC_FATAL_ERROR, dec_buf, + &dec_sum, &dec1_count, prec_increment); return dec_buf; } diff --git a/sql/item_sum.h b/sql/item_sum.h index 8c8360b0726..fb72fed1c5e 100644 --- a/sql/item_sum.h +++ b/sql/item_sum.h @@ -237,6 +237,7 @@ private: Item_sum_avg_distinct(THD *thd, Item_sum_avg_distinct *original) :Item_sum_distinct(thd, original) {} public: + uint prec_increment; Item_sum_avg_distinct(Item *item_arg) : Item_sum_distinct(item_arg) {} void fix_length_and_dec(); @@ -343,8 +344,8 @@ class Item_avg_field :public Item_result_field public: Field *field; Item_result hybrid_type; - uint f_precision, f_scale; - uint dec_bin_size; + uint f_precision, f_scale, dec_bin_size; + uint prec_increment; Item_avg_field(Item_result res_type, Item_sum_avg *item); enum Type type() const { return FIELD_AVG_ITEM; } double val_real(); @@ -366,12 +367,14 @@ class Item_sum_avg :public Item_sum_sum { public: ulonglong count; - uint f_precision, f_scale; - uint dec_bin_size; + uint prec_increment; + uint f_precision, f_scale, dec_bin_size; Item_sum_avg(Item *item_par) :Item_sum_sum(item_par), count(0) {} Item_sum_avg(THD *thd, Item_sum_avg *item) - :Item_sum_sum(thd, item), count(item->count) {} + :Item_sum_sum(thd, item), count(item->count), + prec_increment(item->prec_increment) {} + void fix_length_and_dec(); enum Sumfunctype sum_func () const {return AVG_FUNC;} void clear(); @@ -402,6 +405,7 @@ public: uint f_precision1, f_scale1; uint dec_bin_size0, dec_bin_size1; uint sample; + uint prec_increment; Item_variance_field(Item_sum_variance *item); enum Type type() const {return FIELD_VARIANCE_ITEM; } double val_real(); @@ -446,6 +450,7 @@ public: uint f_precision1, f_scale1; uint dec_bin_size0, dec_bin_size1; uint sample; + uint prec_increment; Item_sum_variance(Item *item_par, uint sample_arg) :Item_sum_num(item_par), hybrid_type(REAL_RESULT), cur_dec(0), count(0), sample(sample_arg) diff --git a/sql/my_decimal.cc b/sql/my_decimal.cc index b4bbef4a637..14c15cdc4ef 100644 --- a/sql/my_decimal.cc +++ b/sql/my_decimal.cc @@ -81,7 +81,7 @@ int decimal_operation_results(int result) */ int my_decimal2string(uint mask, const my_decimal *d, - int fixed_prec, int fixed_dec, + uint fixed_prec, uint fixed_dec, char filler, String *str) { int length= (fixed_prec ? (fixed_prec + 1) : my_decimal_string_length(d)); @@ -89,7 +89,7 @@ int my_decimal2string(uint mask, const my_decimal *d, if (str->alloc(length)) return check_result(mask, E_DEC_OOM); result= decimal2string((decimal_t*) d, (char*) str->ptr(), - &length, fixed_prec, fixed_dec, + &length, (int)fixed_prec, fixed_dec, filler); str->length(length); return check_result(mask, result); @@ -123,7 +123,7 @@ int my_decimal2binary(uint mask, const my_decimal *d, char *bin, int prec, int err1= E_DEC_OK, err2; my_decimal rounded; my_decimal2decimal(d, &rounded); - decimal_optimize_fraction(&rounded); + rounded.frac= decimal_actual_fraction(&rounded); if (scale < rounded.frac) { err1= E_DEC_TRUNCATED; @@ -220,18 +220,16 @@ print_decimal_buff(const my_decimal *dec, const byte* ptr, int length) } -void dbug_print_decimal(const char *tag, const char *format, my_decimal *val) +const char *dbug_decimal_as_string(char *buff, const my_decimal *val) { - char buff[DECIMAL_MAX_STR_LENGTH]; - String str(buff, sizeof(buff), &my_charset_bin); + int length= DECIMAL_MAX_STR_LENGTH; if (!val) - str.set("NULL", 4, &my_charset_bin); - else - my_decimal2string(0, val, 0, 0, 0, &str); - DBUG_PRINT(tag, (format, (char*) str.ptr())); + return "NULL"; + (void)decimal2string((decimal_t*) val, buff, &length, 0,0,0); + return buff; } -#endif +#endif /*DBUG_OFF*/ #endif /*MYSQL_CLIENT*/ diff --git a/sql/my_decimal.h b/sql/my_decimal.h index 03801390d82..27fd33cffbe 100644 --- a/sql/my_decimal.h +++ b/sql/my_decimal.h @@ -35,27 +35,27 @@ C_MODE_END #define DECIMAL_LONG_DIGITS 10 #define DECIMAL_LONG3_DIGITS 8 -/* number of digits on which we increase scale of devision result */ -#define DECIMAL_DIV_SCALE_INCREASE 5 - /* maximum length of buffer in our big digits (uint32) */ -#define DECIMAL_BUFF_LENGTH 8 +#define DECIMAL_BUFF_LENGTH 9 /* - maximum guaranteed length of number in decimal digits (number of our + maximum guaranteed precision of number in decimal digits (number of our digits * number of decimal digits in one our big digit - number of decimal digits in one our big digit decreased on 1 (because we always put decimal point on the border of our big digits)) */ -#define DECIMAL_MAX_LENGTH ((8 * 9) - 8) +#define DECIMAL_MAX_PRECISION ((DECIMAL_BUFF_LENGTH * 9) - 8*2) +#define DECIMAL_MAX_SCALE 30 +#define DECIMAL_NOT_SPECIFIED 31 + /* maximum length of string representation (number of maximum decimal digits + 1 position for sign + 1 position for decimal point) */ -#define DECIMAL_MAX_STR_LENGTH (DECIMAL_MAX_LENGTH + 2) +#define DECIMAL_MAX_STR_LENGTH (DECIMAL_MAX_PRECISION + 2) /* maximum size of packet length */ -#define DECIMAL_MAX_FIELD_SIZE DECIMAL_MAX_LENGTH +#define DECIMAL_MAX_FIELD_SIZE DECIMAL_MAX_PRECISION inline uint my_decimal_size(uint precision, uint scale) @@ -68,6 +68,12 @@ inline uint my_decimal_size(uint precision, uint scale) } +inline int my_decimal_int_part(uint precision, uint decimals) +{ + return precision - ((decimals == DECIMAL_NOT_SPECIFIED) ? 0 : decimals); +} + + /* my_decimal class limits 'decimal_t' type to what we need in MySQL It contains internally all necessary space needed by the instance so @@ -99,15 +105,16 @@ public: bool sign() const { return decimal_t::sign; } void sign(bool s) { decimal_t::sign= s; } + uint precision() const { return intg + frac; } }; #ifndef DBUG_OFF void print_decimal(const my_decimal *dec); void print_decimal_buff(const my_decimal *dec, const byte* ptr, int length); -void dbug_print_decimal(const char *tag, const char *format, my_decimal *val); +const char *dbug_decimal_as_string(char *buff, const my_decimal *val); #else -#define dbug_print_decimal(A,B,C) +#define dbug_decimal_as_string(A) NULL #endif #ifndef MYSQL_CLIENT @@ -126,6 +133,18 @@ inline int check_result(uint mask, int result) return result; } +inline uint my_decimal_length_to_precision(uint length, uint scale, + bool unsigned_flag) +{ + return (uint) (length - (scale>0 ? 1:0) - (unsigned_flag ? 0:1)); +} + +inline uint32 my_decimal_precision_to_length(uint precision, uint8 scale, + bool unsigned_flag) +{ + set_if_smaller(precision, DECIMAL_MAX_PRECISION); + return (uint32)(precision + (scale>0 ? 1:0) + (unsigned_flag ? 0:1)); +} inline int my_decimal_string_length(const my_decimal *d) @@ -209,8 +228,8 @@ int my_decimal_ceiling(uint mask, const my_decimal *from, my_decimal *to) #ifndef MYSQL_CLIENT -int my_decimal2string(uint mask, const my_decimal *d, int fixed_prec, - int fixed_dec, char filler, String *str); +int my_decimal2string(uint mask, const my_decimal *d, uint fixed_prec, + uint fixed_dec, char filler, String *str); #endif inline @@ -326,7 +345,8 @@ int my_decimal_cmp(const my_decimal *a, const my_decimal *b) inline void max_my_decimal(my_decimal *to, int precision, int frac) { - DBUG_ASSERT(precision <= DECIMAL_MAX_LENGTH); + DBUG_ASSERT((precision <= DECIMAL_MAX_PRECISION)&& + (frac <= DECIMAL_MAX_SCALE)); max_decimal(precision, frac, (decimal_t*) to); } diff --git a/sql/mysqld.cc b/sql/mysqld.cc index 3bfa498e521..408821e58bb 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -4218,7 +4218,8 @@ enum options_mysqld OPT_PRELOAD_BUFFER_SIZE, OPT_QUERY_CACHE_LIMIT, OPT_QUERY_CACHE_MIN_RES_UNIT, OPT_QUERY_CACHE_SIZE, OPT_QUERY_CACHE_TYPE, OPT_QUERY_CACHE_WLOCK_INVALIDATE, OPT_RECORD_BUFFER, - OPT_RECORD_RND_BUFFER, OPT_RELAY_LOG_SPACE_LIMIT, OPT_RELAY_LOG_PURGE, + OPT_RECORD_RND_BUFFER, OPT_DIV_PRECINCREMENT, OPT_RELAY_LOG_SPACE_LIMIT, + OPT_RELAY_LOG_PURGE, OPT_SLAVE_NET_TIMEOUT, OPT_SLAVE_COMPRESSED_PROTOCOL, OPT_SLOW_LAUNCH_TIME, OPT_SLAVE_TRANS_RETRIES, OPT_READONLY, OPT_DEBUGGING, OPT_SORT_BUFFER, OPT_TABLE_CACHE, @@ -5439,6 +5440,11 @@ The minimum value for this variable is 4096.", (gptr*) &max_system_variables.read_rnd_buff_size, 0, GET_ULONG, REQUIRED_ARG, 256*1024L, IO_SIZE*2+MALLOC_OVERHEAD, ~0L, MALLOC_OVERHEAD, IO_SIZE, 0}, + {"div_precision_increment", OPT_DIV_PRECINCREMENT, + "Precision of the result of '/' operator will be increased on that value.", + (gptr*) &global_system_variables.div_precincrement, + (gptr*) &max_system_variables.div_precincrement, 0, GET_ULONG, + REQUIRED_ARG, 4, 0, DECIMAL_MAX_SCALE, 0, 0, 0}, {"record_buffer", OPT_RECORD_BUFFER, "Alias for read_buffer_size", (gptr*) &global_system_variables.read_buff_size, diff --git a/sql/set_var.cc b/sql/set_var.cc index 0e6e36f63a2..b7760cd038b 100644 --- a/sql/set_var.cc +++ b/sql/set_var.cc @@ -295,6 +295,8 @@ sys_var_thd_ulong sys_read_buff_size("read_buffer_size", sys_var_bool_ptr sys_readonly("read_only", &opt_readonly); sys_var_thd_ulong sys_read_rnd_buff_size("read_rnd_buffer_size", &SV::read_rnd_buff_size); +sys_var_thd_ulong sys_div_precincrement("div_precision_increment", + &SV::div_precincrement); #ifdef HAVE_REPLICATION sys_var_bool_ptr sys_relay_log_purge("relay_log_purge", &relay_log_purge); @@ -567,6 +569,7 @@ sys_var *sys_variables[]= &sys_connect_timeout, &sys_date_format, &sys_datetime_format, + &sys_div_precincrement, &sys_default_week_format, &sys_delay_key_write, &sys_delayed_insert_limit, @@ -754,6 +757,7 @@ struct show_var_st init_vars[]= { {"datadir", mysql_real_data_home, SHOW_CHAR}, {sys_date_format.name, (char*) &sys_date_format, SHOW_SYS}, {sys_datetime_format.name, (char*) &sys_datetime_format, SHOW_SYS}, + {sys_div_precincrement.name,(char*) &sys_div_precincrement,SHOW_SYS}, {sys_default_week_format.name, (char*) &sys_default_week_format, SHOW_SYS}, {sys_delay_key_write.name, (char*) &sys_delay_key_write, SHOW_SYS}, {sys_delayed_insert_limit.name, (char*) &sys_delayed_insert_limit,SHOW_SYS}, diff --git a/sql/sp_head.cc b/sql/sp_head.cc index ad14116a4c7..9fb4b1c7fac 100644 --- a/sql/sp_head.cc +++ b/sql/sp_head.cc @@ -164,7 +164,10 @@ sp_eval_func_item(THD *thd, Item *it, enum enum_field_types type) it= new Item_null(); else it= new Item_decimal(val); - dbug_print_decimal("info", "DECIMAL_RESULT: %s", val); +#ifndef DBUG_OFF + char dbug_buff[DECIMAL_MAX_STR_LENGTH+1]; + DBUG_PRINT("info", ("DECIMAL_RESULT: %s", dbug_decimal_as_string(dbug_buff, val))); +#endif break; } case STRING_RESULT: diff --git a/sql/sql_class.h b/sql/sql_class.h index 62cee00043b..4393da6df2a 100644 --- a/sql/sql_class.h +++ b/sql/sql_class.h @@ -523,6 +523,7 @@ struct system_variables ulong query_cache_type; ulong read_buff_size; ulong read_rnd_buff_size; + ulong div_precincrement; ulong sortbuff_size; ulong table_type; ulong tmp_table_size; diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index 22febd50035..07e075a6171 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -5410,9 +5410,14 @@ new_create_field(THD *thd, char *field_name, enum_field_types type, } new_field->pack_length= my_decimal_get_binary_size(new_field->length, new_field->decimals); - if (new_field->length <= DECIMAL_MAX_LENGTH && + if (new_field->length <= DECIMAL_MAX_PRECISION && new_field->length >= new_field->decimals) + { + new_field->length= + my_decimal_precision_to_length(new_field->length, new_field->decimals, + type_modifier & UNSIGNED_FLAG); break; + } my_error(ER_WRONG_FIELD_SPEC, MYF(0), field_name); DBUG_RETURN(NULL); case MYSQL_TYPE_VARCHAR: diff --git a/sql/sql_select.cc b/sql/sql_select.cc index 32624bb3305..7fe966c7542 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -7781,9 +7781,8 @@ static Field *create_tmp_field_from_item(THD *thd, Item *item, TABLE *table, new_field= item->make_string_field(table); break; case DECIMAL_RESULT: - new_field= new Field_new_decimal(item->max_length - (item->decimals?1:0), - maybe_null, - item->name, table, item->decimals); + new_field= new Field_new_decimal(item->max_length, maybe_null, item->name, + table, item->decimals, item->unsigned_flag); break; case ROW_RESULT: default: diff --git a/sql/sql_show.cc b/sql/sql_show.cc index d6027699257..cf0050a774b 100644 --- a/sql/sql_show.cc +++ b/sql/sql_show.cc @@ -2362,10 +2362,10 @@ static int get_schema_column_record(THD *thd, struct st_table_list *tables, strlen((const char*) pos), cs); if (field->has_charset()) { - table->field[8]->store((longlong) field->representation_length()/ + table->field[8]->store((longlong) field->field_length/ field->charset()->mbmaxlen); table->field[8]->set_notnull(); - table->field[9]->store((longlong) field->representation_length()); + table->field[9]->store((longlong) field->field_length); table->field[9]->set_notnull(); } @@ -2373,7 +2373,8 @@ static int get_schema_column_record(THD *thd, struct st_table_list *tables, uint dec =field->decimals(); switch (field->type()) { case FIELD_TYPE_NEWDECIMAL: - table->field[10]->store((longlong) field->field_length); + table->field[10]->store((longlong) + ((Field_new_decimal*)field)->precision); table->field[10]->set_notnull(); table->field[11]->store((longlong) field->decimals()); table->field[11]->set_notnull(); diff --git a/strings/decimal.c b/strings/decimal.c index 9af95511f6d..52003a930c0 100644 --- a/strings/decimal.c +++ b/strings/decimal.c @@ -274,20 +274,20 @@ static dec1 *remove_leading_zeroes(decimal_t *from, int *intg_result) /* - Remove ending 0 digits from fraction part + Count actual length of fraction part (without ending zeroes) SYNOPSIS - decimal_optimize_fraction() + decimal_actual_fraction() from number for processing */ -void decimal_optimize_fraction(decimal_t *from) +int decimal_actual_fraction(decimal_t *from) { int frac= from->frac, i; dec1 *buf0= from->buf + ROUND_UP(from->intg) + ROUND_UP(frac) - 1; if (frac == 0) - return; + return 0; i= ((frac - 1) % DIG_PER_DEC1 + 1); while (frac > 0 && *buf0 == 0) @@ -302,7 +302,7 @@ void decimal_optimize_fraction(decimal_t *from) *buf0 % powers10[i++] == 0; frac--); } - from->frac= frac; + return frac; } @@ -332,23 +332,15 @@ int decimal2string(decimal_t *from, char *to, int *to_len, int fixed_precision, int fixed_decimals, char filler) { - int len, intg, frac=from->frac, i, intg_len, frac_len, fill; + int len, intg, frac= from->frac, i, intg_len, frac_len, fill; /* number digits before decimal point */ int fixed_intg= (fixed_precision ? - (fixed_precision - - (from->sign ? 1 : 0) - - (fixed_decimals ? 1 : 0) - - fixed_decimals) : - 0); + (fixed_precision - fixed_decimals) : 0); int error=E_DEC_OK; char *s=to; dec1 *buf, *buf0=from->buf, tmp; DBUG_ASSERT(*to_len >= 2+from->sign); - DBUG_ASSERT(fixed_precision == 0 || - (fixed_precision < *to_len && - fixed_precision > ((from->sign ? 1 : 0) + - (fixed_decimals ? 1 : 0)))); /* removing leading zeroes */ buf0= remove_leading_zeroes(from, &intg); @@ -2609,7 +2601,7 @@ void test_fr(const char *s1, const char *orig) printf("%-40s => ", s); end= strend(s1); string2decimal(s1, &a, &end); - decimal_optimize_fraction(&a); + a.frac= decimal_actual_fraction(&a); print_decimal(&a, orig, 0, 0); printf("\n"); } @@ -2947,7 +2939,7 @@ int main() test_sh("123456789.987654321", 0, "123456789.987654321", 0); a.len= sizeof(buf1)/sizeof(dec1); - printf("==== decimal_optimize_fraction ====\n"); + printf("==== decimal_actual_fraction ====\n"); test_fr("1.123456789000000000", "1.123456789"); test_fr("1.12345678000000000", "1.12345678"); test_fr("1.1234567000000000", "1.1234567"); From 1e6193caa30e6f2d88de462493b41a3598368969 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 5 May 2005 19:49:15 +0400 Subject: [PATCH 19/29] Fix for bug #9841 "Unexpected read lock when trying to update a view in a stored procedure" (version 2). To handle updates and inserts into view in SP properly we should set lock types for tables of the view's main select when we are opening view for prelocking purproses. mysql-test/r/sp.result: Added test case for bug #9841 "Unexpected read lock when trying to update a view in a stored procedure" mysql-test/t/sp.test: Added test case for bug #9841 "Unexpected read lock when trying to update a view in a stored procedure" sql/sql_view.cc: mysql_make_view(): To handle updates and inserts into view in SP properly we should set lock types for tables of the view's main select when we are opening view for prelocking purproses. Also it is more correct to use LEX::select_lex::get_table_list() instead of 'view_tables' variable for obtaining list of those tables. --- mysql-test/r/sp.result | 8 ++++++++ mysql-test/t/sp.test | 19 +++++++++++++++++++ sql/sql_view.cc | 29 +++++++++++++++-------------- 3 files changed, 42 insertions(+), 14 deletions(-) diff --git a/mysql-test/r/sp.result b/mysql-test/r/sp.result index a5cdee4b1bf..97d6d15f7d9 100644 --- a/mysql-test/r/sp.result +++ b/mysql-test/r/sp.result @@ -3057,4 +3057,12 @@ yes yes drop procedure bug7293| delete from t1| +drop procedure if exists bug9841| +drop view if exists v1| +create view v1 as select * from t1, t2 where id = s| +create procedure bug9841 () +update v1 set data = 10| +call bug9841()| +drop view v1| +drop procedure bug9841| drop table t1,t2; diff --git a/mysql-test/t/sp.test b/mysql-test/t/sp.test index 2e45d1c6cd1..77fe5ab7601 100644 --- a/mysql-test/t/sp.test +++ b/mysql-test/t/sp.test @@ -3741,6 +3741,25 @@ call bug7293 ('secrete')| drop procedure bug7293| delete from t1| + +# +# BUG#9841: Unexpected read lock when trying to update a view in a +# stored procedure +# +--disable_warnings +drop procedure if exists bug9841| +drop view if exists v1| +--enable_warnings + +create view v1 as select * from t1, t2 where id = s| +create procedure bug9841 () + update v1 set data = 10| +call bug9841()| + +drop view v1| +drop procedure bug9841| + + # # BUG#NNNN: New bug synopsis # diff --git a/sql/sql_view.cc b/sql/sql_view.cc index ce08763015f..15a8f52af20 100644 --- a/sql/sql_view.cc +++ b/sql/sql_view.cc @@ -716,6 +716,16 @@ mysql_make_view(File_parser *parser, TABLE_LIST *table) table->next_global= view_tables; } + /* + Let us set proper lock type for tables of the view's main select + since we may want to perform update or insert on view. This won't + work for view containing union. But this is ok since we don't + allow insert and update on such views anyway. + */ + if (!lex->select_lex.next_select()) + for (tbl= lex->select_lex.get_table_list(); tbl; tbl= tbl->next_local) + tbl->lock_type= table->lock_type; + /* If we are opening this view as part of implicit LOCK TABLES, then this view serves as simple placeholder and we should not continue @@ -756,23 +766,14 @@ mysql_make_view(File_parser *parser, TABLE_LIST *table) table->ancestor= view_tables; /* - Process upper level tables of view. As far as we do noy suport union - here we can go through local tables of view most upper SELECT + Tables of the main select of the view should be marked as belonging + to the same select as original view (again we can use LEX::select_lex + for this purprose because we don't support MERGE algorithm for views + with unions). */ - for(tbl= view_tables; - tbl; - tbl= tbl->next_local) - { - /* next table should include SELECT_LEX under this table SELECT_LEX */ + for (tbl= lex->select_lex.get_table_list(); tbl; tbl= tbl->next_local) tbl->select_lex= table->select_lex; - /* - move lock type (TODO: should we issue error in case of TMPTABLE - algorithm and non-read locking)? - */ - tbl->lock_type= table->lock_type; - } - /* multi table view */ if (view_tables->next_local) { From d8cf7e0133263483c1049bb4a60b8b5a2393100f Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 5 May 2005 21:13:57 +0500 Subject: [PATCH 20/29] Bug#9509 Optimizer: wrong result after AND with latin1_german2_ci We cannot propagate constants with tricky collations. --- include/m_ctype.h | 5 +++ mysql-test/r/ctype_latin1_de.result | 6 +++ mysql-test/t/ctype_latin1_de.test | 8 ++++ sql/sql_select.cc | 11 ++++-- strings/ctype-big5.c | 3 +- strings/ctype-bin.c | 6 ++- strings/ctype-cp932.c | 1 + strings/ctype-czech.c | 1 + strings/ctype-euc_kr.c | 1 + strings/ctype-eucjpms.c | 1 + strings/ctype-gb2312.c | 1 + strings/ctype-gbk.c | 1 + strings/ctype-latin1.c | 3 +- strings/ctype-mb.c | 3 +- strings/ctype-simple.c | 57 ++++++++++++++++++++++++++++- strings/ctype-sjis.c | 1 + strings/ctype-tis620.c | 1 + strings/ctype-uca.c | 6 ++- strings/ctype-ucs2.c | 6 ++- strings/ctype-ujis.c | 1 + strings/ctype-utf8.c | 6 ++- strings/ctype-win1250ch.c | 3 +- 22 files changed, 115 insertions(+), 17 deletions(-) diff --git a/include/m_ctype.h b/include/m_ctype.h index 61524dc4ddd..6f304f4ba43 100644 --- a/include/m_ctype.h +++ b/include/m_ctype.h @@ -132,6 +132,7 @@ typedef struct my_collation_handler_st /* Hash calculation */ void (*hash_sort)(struct charset_info_st *cs, const uchar *key, uint len, ulong *nr1, ulong *nr2); + my_bool (*propagate)(struct charset_info_st *cs, const uchar *str, uint len); } MY_COLLATION_HANDLER; extern MY_COLLATION_HANDLER my_collation_mb_bin_handler; @@ -385,6 +386,10 @@ int my_wildcmp_unicode(CHARSET_INFO *cs, extern my_bool my_parse_charset_xml(const char *bug, uint len, int (*add)(CHARSET_INFO *cs)); +my_bool my_propagate_simple(CHARSET_INFO *cs, const uchar *str, uint len); +my_bool my_propagate_complex(CHARSET_INFO *cs, const uchar *str, uint len); + + #define _MY_U 01 /* Upper case */ #define _MY_L 02 /* Lower case */ #define _MY_NMR 04 /* Numeral (digit) */ diff --git a/mysql-test/r/ctype_latin1_de.result b/mysql-test/r/ctype_latin1_de.result index 43947edbd48..f60dc175cd6 100644 --- a/mysql-test/r/ctype_latin1_de.result +++ b/mysql-test/r/ctype_latin1_de.result @@ -338,3 +338,9 @@ ss ss ß DROP TABLE t1; +create table t1 (s1 char(5) character set latin1 collate latin1_german2_ci); +insert into t1 values (0xf6) /* this is o-umlaut */; +select * from t1 where length(s1)=1 and s1='oe'; +s1 +ö +drop table t1; diff --git a/mysql-test/t/ctype_latin1_de.test b/mysql-test/t/ctype_latin1_de.test index e17806a54aa..88eb840a787 100644 --- a/mysql-test/t/ctype_latin1_de.test +++ b/mysql-test/t/ctype_latin1_de.test @@ -132,3 +132,11 @@ INSERT INTO t1 VALUES (' ALTER TABLE t1 ADD KEY ifword(col1); SELECT * FROM t1 WHERE col1='ß' ORDER BY col1, BINARY col1; DROP TABLE t1; + +# +# Bug#9509 +# +create table t1 (s1 char(5) character set latin1 collate latin1_german2_ci); +insert into t1 values (0xf6) /* this is o-umlaut */; +select * from t1 where length(s1)=1 and s1='oe'; +drop table t1; diff --git a/sql/sql_select.cc b/sql/sql_select.cc index 32624bb3305..6e888c73f42 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -6435,10 +6435,13 @@ static bool check_equality(Item *item, COND_EQUAL *cond_equal) { bool copyfl; - if (field_item->result_type() == STRING_RESULT && - ((Field_str *) field_item->field)->charset() != - ((Item_cond *) item)->compare_collation()) - return FALSE; + if (field_item->result_type() == STRING_RESULT) + { + CHARSET_INFO *cs= ((Field_str*) field_item->field)->charset(); + if ((cs != ((Item_cond *) item)->compare_collation()) || + !cs->coll->propagate(cs, 0, 0)) + return FALSE; + } Item_equal *item_equal = find_item_equal(cond_equal, field_item->field, ©fl); diff --git a/strings/ctype-big5.c b/strings/ctype-big5.c index ab6691e68b0..e12ff189eaf 100644 --- a/strings/ctype-big5.c +++ b/strings/ctype-big5.c @@ -6335,7 +6335,8 @@ static MY_COLLATION_HANDLER my_collation_big5_chinese_ci_handler = my_wildcmp_mb, my_strcasecmp_mb, my_instr_mb, - my_hash_sort_simple + my_hash_sort_simple, + my_propagate_simple }; static MY_CHARSET_HANDLER my_charset_big5_handler= diff --git a/strings/ctype-bin.c b/strings/ctype-bin.c index 9f0e334d3a9..56df289158a 100644 --- a/strings/ctype-bin.c +++ b/strings/ctype-bin.c @@ -459,7 +459,8 @@ MY_COLLATION_HANDLER my_collation_8bit_bin_handler = my_wildcmp_bin, my_strcasecmp_bin, my_instr_bin, - my_hash_sort_bin + my_hash_sort_bin, + my_propagate_simple }; @@ -474,7 +475,8 @@ static MY_COLLATION_HANDLER my_collation_binary_handler = my_wildcmp_bin, my_strcasecmp_bin, my_instr_bin, - my_hash_sort_bin + my_hash_sort_bin, + my_propagate_simple }; diff --git a/strings/ctype-cp932.c b/strings/ctype-cp932.c index 47bf1167c8c..f2f31b1064e 100644 --- a/strings/ctype-cp932.c +++ b/strings/ctype-cp932.c @@ -5462,6 +5462,7 @@ static MY_COLLATION_HANDLER my_collation_ci_handler = my_strcasecmp_8bit, my_instr_mb, my_hash_sort_simple, + my_propagate_simple }; diff --git a/strings/ctype-czech.c b/strings/ctype-czech.c index f5a410afc50..aaf87e97cb8 100644 --- a/strings/ctype-czech.c +++ b/strings/ctype-czech.c @@ -599,6 +599,7 @@ static MY_COLLATION_HANDLER my_collation_latin2_czech_ci_handler = my_strcasecmp_8bit, my_instr_simple, my_hash_sort_simple, + my_propagate_simple }; CHARSET_INFO my_charset_latin2_czech_ci = diff --git a/strings/ctype-euc_kr.c b/strings/ctype-euc_kr.c index 289b7309ea0..21b7b56fdaa 100644 --- a/strings/ctype-euc_kr.c +++ b/strings/ctype-euc_kr.c @@ -8647,6 +8647,7 @@ static MY_COLLATION_HANDLER my_collation_ci_handler = my_strcasecmp_mb, my_instr_mb, my_hash_sort_simple, + my_propagate_simple }; static MY_CHARSET_HANDLER my_charset_handler= diff --git a/strings/ctype-eucjpms.c b/strings/ctype-eucjpms.c index ab12446754a..d9171c800bf 100644 --- a/strings/ctype-eucjpms.c +++ b/strings/ctype-eucjpms.c @@ -8648,6 +8648,7 @@ static MY_COLLATION_HANDLER my_collation_ci_handler = my_strcasecmp_mb, my_instr_mb, my_hash_sort_simple, + my_propagate_simple }; static MY_CHARSET_HANDLER my_charset_handler= diff --git a/strings/ctype-gb2312.c b/strings/ctype-gb2312.c index 73e4132dd7f..592ee341781 100644 --- a/strings/ctype-gb2312.c +++ b/strings/ctype-gb2312.c @@ -5698,6 +5698,7 @@ static MY_COLLATION_HANDLER my_collation_ci_handler = my_strcasecmp_mb, /* instr */ my_instr_mb, my_hash_sort_simple, + my_propagate_simple }; static MY_CHARSET_HANDLER my_charset_handler= diff --git a/strings/ctype-gbk.c b/strings/ctype-gbk.c index d4f9627ecf7..ec96caa6b91 100644 --- a/strings/ctype-gbk.c +++ b/strings/ctype-gbk.c @@ -9945,6 +9945,7 @@ static MY_COLLATION_HANDLER my_collation_ci_handler = my_strcasecmp_mb, my_instr_mb, my_hash_sort_simple, + my_propagate_simple }; static MY_CHARSET_HANDLER my_charset_handler= diff --git a/strings/ctype-latin1.c b/strings/ctype-latin1.c index fdf9f4a6d91..7a75992dc4f 100644 --- a/strings/ctype-latin1.c +++ b/strings/ctype-latin1.c @@ -698,7 +698,8 @@ static MY_COLLATION_HANDLER my_collation_german2_ci_handler= my_wildcmp_8bit, my_strcasecmp_8bit, my_instr_simple, - my_hash_sort_latin1_de + my_hash_sort_latin1_de, + my_propagate_complex }; diff --git a/strings/ctype-mb.c b/strings/ctype-mb.c index b603a8ea0a8..b3ec476b8f5 100644 --- a/strings/ctype-mb.c +++ b/strings/ctype-mb.c @@ -920,7 +920,8 @@ MY_COLLATION_HANDLER my_collation_mb_bin_handler = my_wildcmp_mb_bin, my_strcasecmp_mb_bin, my_instr_mb, - my_hash_sort_mb_bin + my_hash_sort_mb_bin, + my_propagate_simple }; diff --git a/strings/ctype-simple.c b/strings/ctype-simple.c index 5fa1a1b18a0..d19326d9265 100644 --- a/strings/ctype-simple.c +++ b/strings/ctype-simple.c @@ -1340,6 +1340,60 @@ longlong my_strtoll10_8bit(CHARSET_INFO *cs __attribute__((unused)), } +/* + Check if a constant can be propagated + + SYNOPSIS: + my_propagate_simple() + cs Character set information + str String to convert to double + length Optional length for string. + + NOTES: + Takes the string in the given charset and check + if it can be safely propagated in the optimizer. + + create table t1 ( + s char(5) character set latin1 collate latin1_german2_ci); + insert into t1 values (0xf6); -- o-umlaut + select * from t1 where length(s)=1 and s='oe'; + + The above query should return one row. + We cannot convert this query into: + select * from t1 where length('oe')=1 and s='oe'; + + Currently we don't check the constant itself, + and decide not to propagate a constant + just if the collation itself allows tricky things + like expansions and contractions. In the future + we can write a more sophisticated functions to + check the constants. For example, 'oa' can always + be safety propagated in German2 because unlike + 'oe' it does not have any special meaning. + + RETURN + 1 if constant can be safely propagated + 0 if it is not safe to propagate the constant +*/ + + + +my_bool my_propagate_simple(CHARSET_INFO *cs __attribute__((unused)), + const uchar *str __attribute__((unused)), + uint length __attribute__((unused))) +{ + return 1; +} + + +my_bool my_propagate_complex(CHARSET_INFO *cs __attribute__((unused)), + const uchar *str __attribute__((unused)), + uint length __attribute__((unused))) +{ + return 0; +} + + MY_CHARSET_HANDLER my_charset_8bit_handler= { my_cset_init_8bit, @@ -1380,5 +1434,6 @@ MY_COLLATION_HANDLER my_collation_8bit_simple_ci_handler = my_wildcmp_8bit, my_strcasecmp_8bit, my_instr_simple, - my_hash_sort_simple + my_hash_sort_simple, + my_propagate_simple }; diff --git a/strings/ctype-sjis.c b/strings/ctype-sjis.c index 62cb5427dd9..9b7fd5097fa 100644 --- a/strings/ctype-sjis.c +++ b/strings/ctype-sjis.c @@ -4631,6 +4631,7 @@ static MY_COLLATION_HANDLER my_collation_ci_handler = my_strcasecmp_8bit, my_instr_mb, my_hash_sort_simple, + my_propagate_simple }; diff --git a/strings/ctype-tis620.c b/strings/ctype-tis620.c index b6c54f1b375..c40e74c3343 100644 --- a/strings/ctype-tis620.c +++ b/strings/ctype-tis620.c @@ -933,6 +933,7 @@ static MY_COLLATION_HANDLER my_collation_ci_handler = my_strcasecmp_8bit, my_instr_simple, /* QQ: To be fixed */ my_hash_sort_simple, + my_propagate_simple }; static MY_CHARSET_HANDLER my_charset_handler= diff --git a/strings/ctype-uca.c b/strings/ctype-uca.c index 3204bd2e1f6..fb7e93e10b6 100644 --- a/strings/ctype-uca.c +++ b/strings/ctype-uca.c @@ -8029,7 +8029,8 @@ MY_COLLATION_HANDLER my_collation_ucs2_uca_handler = my_wildcmp_uca, NULL, my_instr_mb, - my_hash_sort_ucs2_uca + my_hash_sort_ucs2_uca, + my_propagate_complex }; CHARSET_INFO my_charset_ucs2_general_uca= @@ -8510,7 +8511,8 @@ MY_COLLATION_HANDLER my_collation_any_uca_handler = my_wildcmp_uca, NULL, my_instr_mb, - my_hash_sort_any_uca + my_hash_sort_any_uca, + my_propagate_complex }; /* diff --git a/strings/ctype-ucs2.c b/strings/ctype-ucs2.c index 73d15da8a4a..d15144b7438 100644 --- a/strings/ctype-ucs2.c +++ b/strings/ctype-ucs2.c @@ -1527,7 +1527,8 @@ static MY_COLLATION_HANDLER my_collation_ucs2_general_ci_handler = my_wildcmp_ucs2_ci, my_strcasecmp_ucs2, my_instr_mb, - my_hash_sort_ucs2 + my_hash_sort_ucs2, + my_propagate_simple }; @@ -1542,7 +1543,8 @@ static MY_COLLATION_HANDLER my_collation_ucs2_bin_handler = my_wildcmp_ucs2_bin, my_strcasecmp_ucs2_bin, my_instr_mb, - my_hash_sort_ucs2_bin + my_hash_sort_ucs2_bin, + my_propagate_simple }; diff --git a/strings/ctype-ujis.c b/strings/ctype-ujis.c index 7bcf1c83bab..5d0c77cee6e 100644 --- a/strings/ctype-ujis.c +++ b/strings/ctype-ujis.c @@ -8516,6 +8516,7 @@ static MY_COLLATION_HANDLER my_collation_ci_handler = my_strcasecmp_mb, my_instr_mb, my_hash_sort_simple, + my_propagate_simple }; static MY_CHARSET_HANDLER my_charset_handler= diff --git a/strings/ctype-utf8.c b/strings/ctype-utf8.c index 14b3934e815..250c57cf265 100644 --- a/strings/ctype-utf8.c +++ b/strings/ctype-utf8.c @@ -2316,7 +2316,8 @@ static MY_COLLATION_HANDLER my_collation_ci_handler = my_wildcmp_utf8, my_strcasecmp_utf8, my_instr_mb, - my_hash_sort_utf8 + my_hash_sort_utf8, + my_propagate_complex }; MY_CHARSET_HANDLER my_charset_utf8_handler= @@ -2540,7 +2541,8 @@ static MY_COLLATION_HANDLER my_collation_cs_handler = my_wildcmp_mb, my_strcasecmp_utf8, my_instr_mb, - my_hash_sort_utf8 + my_hash_sort_utf8, + my_propagate_simple }; CHARSET_INFO my_charset_utf8_general_cs= diff --git a/strings/ctype-win1250ch.c b/strings/ctype-win1250ch.c index 8c58520f965..cb8de8f43ac 100644 --- a/strings/ctype-win1250ch.c +++ b/strings/ctype-win1250ch.c @@ -631,7 +631,8 @@ static MY_COLLATION_HANDLER my_collation_czech_ci_handler = my_wildcmp_8bit, my_strcasecmp_8bit, my_instr_simple, - my_hash_sort_simple + my_hash_sort_simple, + my_propagate_simple }; From 481e743bd08d9df59e57a46af19d39eeb60f1020 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 5 May 2005 18:28:54 +0200 Subject: [PATCH 21/29] making rpl_sp.test hostname-independent mysql-test/t/rpl_sp.test: making test hostname-independent (don't know why the problem didn't appear on my machine) mysql-test/r/rpl_sp.result: result update --- mysql-test/r/rpl_sp.result | 4 ++-- mysql-test/t/rpl_sp.test | 7 ++++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/mysql-test/r/rpl_sp.result b/mysql-test/r/rpl_sp.result index be93e51e34b..6e5fccfe4e2 100644 --- a/mysql-test/r/rpl_sp.result +++ b/mysql-test/r/rpl_sp.result @@ -106,7 +106,7 @@ insert into t2 values(3); insert into t1 values (5); end| call foo4(); -ERROR 42000: INSERT command denied to user 'zedjzlcsjhd'@'localhost' for table 't1' +Got one of the listed errors show warnings; Level Code Message Warning 1417 A routine failed and is declared to modify data and binary logging is enabled; if non-transactional tables were updated, the binary log will miss their changes @@ -114,7 +114,7 @@ call foo3(); show warnings; Level Code Message call foo4(); -ERROR 42000: INSERT command denied to user 'zedjzlcsjhd'@'localhost' for table 't1' +Got one of the listed errors show warnings; Level Code Message Warning 1417 A routine failed and is declared to modify data and binary logging is enabled; if non-transactional tables were updated, the binary log will miss their changes diff --git a/mysql-test/t/rpl_sp.test b/mysql-test/t/rpl_sp.test index c87585a138c..b8dc381630b 100644 --- a/mysql-test/t/rpl_sp.test +++ b/mysql-test/t/rpl_sp.test @@ -125,8 +125,9 @@ create procedure foo4() delimiter ;| ---replace_result localhost.localdomain localhost 127.0.0.1 localhost ---error 1142; +# I add ,0 so that it does not print the error in the test output, +# because this error is hostname-dependent +--error 1142,0; call foo4(); # invoker has no INSERT grant on table => failure show warnings; @@ -135,7 +136,7 @@ call foo3(); # success (definer == root) show warnings; --replace_result localhost.localdomain localhost 127.0.0.1 localhost ---error 1142; +--error 1142,0; call foo4(); # definer's rights => failure show warnings; From b1d7d8211b71f9df558720af8d9ceecd0590bfc5 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 5 May 2005 10:36:17 -0700 Subject: [PATCH 22/29] Added cp932 character set BitKeeper/etc/logging_ok: Logging to logging@openlogging.org accepted --- BitKeeper/etc/logging_ok | 1 + mysql-test/include/have_cp932.inc | 4 + mysql-test/r/ctype_cp932.result | 8598 +++++++++++++++++++++++++++++ mysql-test/r/have_cp932.require | 2 + mysql-test/t/ctype_cp932.test | 408 ++ strings/ctype-cp932.c | 5551 +++++++++++++++++++ 6 files changed, 14564 insertions(+) create mode 100644 mysql-test/include/have_cp932.inc create mode 100644 mysql-test/r/ctype_cp932.result create mode 100644 mysql-test/r/have_cp932.require create mode 100644 mysql-test/t/ctype_cp932.test create mode 100644 strings/ctype-cp932.c diff --git a/BitKeeper/etc/logging_ok b/BitKeeper/etc/logging_ok index e4de8c6ebf2..9e47324cb8a 100644 --- a/BitKeeper/etc/logging_ok +++ b/BitKeeper/etc/logging_ok @@ -211,6 +211,7 @@ serg@serg.mysql.com serg@sergbook.mylan serg@sergbook.mysql.com sergefp@mysql.com +shuichi@mysql.com sinisa@rhols221.adsl.netsonic.fi stewart@mysql.com svoj@mysql.com diff --git a/mysql-test/include/have_cp932.inc b/mysql-test/include/have_cp932.inc new file mode 100644 index 00000000000..b500dac0bbe --- /dev/null +++ b/mysql-test/include/have_cp932.inc @@ -0,0 +1,4 @@ +-- require r/have_cp932.require +disable_query_log; +show collation like "cp932_japanese_ci"; +enable_query_log; diff --git a/mysql-test/r/ctype_cp932.result b/mysql-test/r/ctype_cp932.result new file mode 100644 index 00000000000..ad1c3b09bb6 --- /dev/null +++ b/mysql-test/r/ctype_cp932.result @@ -0,0 +1,8598 @@ +drop table if exists t1; +drop table if exists t2; +drop table if exists t3; +drop table if exists t4; +set names cp932; +set character_set_database = cp932; +CREATE TABLE t1(c1 CHAR(1)) DEFAULT CHARACTER SET = cp932; +INSERT INTO t1 VALUES +(0x05),(0x7E),(0x815C),(0x815F),(0x8160),(0x8161),(0x817C),(0x8191),(0x8192),(0x81CA); +INSERT INTO t1 VALUES +(0x8740),(0x8741),(0x8742),(0x8743),(0x8744),(0x8745),(0x8746),(0x8747), +(0x8748),(0x8749),(0x874A),(0x874B),(0x874C),(0x874D),(0x874E),(0x874F), +(0x8750),(0x8751),(0x8752),(0x8753),(0x8754),(0x8755),(0x8756),(0x8757), +(0x8758),(0x8759),(0x875A),(0x875B),(0x875C),(0x875D),(0x875F), +(0x8760),(0x8761),(0x8762),(0x8763),(0x8764),(0x8765),(0x8766),(0x8767), +(0x8768),(0x8769),(0x876A),(0x876B),(0x876C),(0x876D),(0x876E),(0x876F), +(0x8770),(0x8771),(0x8772),(0x8773),(0x8774),(0x8775),(0x877E), +(0x8780),(0x8781),(0x8782),(0x8783),(0x8784),(0x8785),(0x8786),(0x8787), +(0x8788),(0x8789),(0x878A),(0x878B),(0x878C),(0x878D),(0x878E),(0x878F), +(0x8790),(0x8791),(0x8792),(0x8793),(0x8794),(0x8795),(0x8796),(0x8797), +(0x8798),(0x8799),(0x879A),(0x879B),(0x879C); +INSERT INTO t1 VALUES +(0xED40),(0xED41),(0xED42),(0xED43),(0xED44),(0xED45),(0xED46),(0xED47), +(0xED48),(0xED49),(0xED4A),(0xED4B),(0xED4C),(0xED4D),(0xED4E),(0xED4F), +(0xED50),(0xED51),(0xED52),(0xED53),(0xED54),(0xED55),(0xED56),(0xED57), +(0xED58),(0xED59),(0xED5A),(0xED5B),(0xED5C),(0xED5D),(0xED5E),(0xED5F), +(0xED60),(0xED61),(0xED62),(0xED63),(0xED64),(0xED65),(0xED66),(0xED67), +(0xED68),(0xED69),(0xED6A),(0xED6B),(0xED6C),(0xED6D),(0xED6E),(0xED6F), +(0xED70),(0xED71),(0xED72),(0xED73),(0xED74),(0xED75),(0xED76),(0xED77), +(0xED78),(0xED79),(0xED7A),(0xED7B),(0xED7C),(0xED7D),(0xED7E), +(0xED80),(0xED81),(0xED82),(0xED83),(0xED84),(0xED85),(0xED86),(0xED87), +(0xED88),(0xED89),(0xED8A),(0xED8B),(0xED8C),(0xED8D),(0xED8E),(0xED8F), +(0xED90),(0xED91),(0xED92),(0xED93),(0xED94),(0xED95),(0xED96),(0xED97), +(0xED98),(0xED99),(0xED9A),(0xED9B),(0xED9C),(0xED9D),(0xED9E),(0xED9F), +(0xEDA0),(0xEDA1),(0xEDA2),(0xEDA3),(0xEDA4),(0xEDA5),(0xEDA6),(0xEDA7), +(0xEDA8),(0xEDA9),(0xEDAA),(0xEDAB),(0xEDAC),(0xEDAD),(0xEDAE),(0xEDAF), +(0xEDB0),(0xEDB1),(0xEDB2),(0xEDB3),(0xEDB4),(0xEDB5),(0xEDB6),(0xEDB7), +(0xEDB8),(0xEDB9),(0xEDBA),(0xEDBB),(0xEDBC),(0xEDBD),(0xEDBE),(0xEDBF), +(0xEDC0),(0xEDC1),(0xEDC2),(0xEDC3),(0xEDC4),(0xEDC5),(0xEDC6),(0xEDC7), +(0xEDC8),(0xEDC9),(0xEDCA),(0xEDCB),(0xEDCC),(0xEDCD),(0xEDCE),(0xEDCF), +(0xEDD0),(0xEDD1),(0xEDD2),(0xEDD3),(0xEDD4),(0xEDD5),(0xEDD6),(0xEDD7), +(0xEDD8),(0xEDD9),(0xEDDA),(0xEDDB),(0xEDDC),(0xEDDD),(0xEDDE),(0xEDDF), +(0xEDE0),(0xEDE1),(0xEDE2),(0xEDE3),(0xEDE4),(0xEDE5),(0xEDE6),(0xEDE7), +(0xEDE8),(0xEDE9),(0xEDEA),(0xEDEB),(0xEDEC),(0xEDED),(0xEDEE),(0xEDEF), +(0xEDF0),(0xEDF1),(0xEDF2),(0xEDF3),(0xEDF4),(0xEDF5),(0xEDF6),(0xEDF7), +(0xEDF8),(0xEDF9),(0xEDFA),(0xEDFB),(0xEDFC), +(0xEE40),(0xEE41),(0xEE42),(0xEE43),(0xEE44),(0xEE45),(0xEE46),(0xEE47), +(0xEE48),(0xEE49),(0xEE4A),(0xEE4B),(0xEE4C),(0xEE4D),(0xEE4E),(0xEE4F), +(0xEE50),(0xEE51),(0xEE52),(0xEE53),(0xEE54),(0xEE55),(0xEE56),(0xEE57), +(0xEE58),(0xEE59),(0xEE5A),(0xEE5B),(0xEE5C),(0xEE5D),(0xEE5E),(0xEE5F), +(0xEE60),(0xEE61),(0xEE62),(0xEE63),(0xEE64),(0xEE65),(0xEE66),(0xEE67), +(0xEE68),(0xEE69),(0xEE6A),(0xEE6B),(0xEE6C),(0xEE6D),(0xEE6E),(0xEE6F), +(0xEE70),(0xEE71),(0xEE72),(0xEE73),(0xEE74),(0xEE75),(0xEE76),(0xEE77), +(0xEE78),(0xEE79),(0xEE7A),(0xEE7B),(0xEE7C),(0xEE7D),(0xEE7E), +(0xEE80),(0xEE81),(0xEE82),(0xEE83),(0xEE84),(0xEE85),(0xEE86),(0xEE87), +(0xEE88),(0xEE89),(0xEE8A),(0xEE8B),(0xEE8C),(0xEE8D),(0xEE8E),(0xEE8F), +(0xEE90),(0xEE91),(0xEE92),(0xEE93),(0xEE94),(0xEE95),(0xEE96),(0xEE97), +(0xEE98),(0xEE99),(0xEE9A),(0xEE9B),(0xEE9C),(0xEE9D),(0xEE9E),(0xEE9F), +(0xEEA0),(0xEEA1),(0xEEA2),(0xEEA3),(0xEEA4),(0xEEA5),(0xEEA6),(0xEEA7), +(0xEEA8),(0xEEA9),(0xEEAA),(0xEEAB),(0xEEAC),(0xEEAD),(0xEEAE),(0xEEAF), +(0xEEB0),(0xEEB1),(0xEEB2),(0xEEB3),(0xEEB4),(0xEEB5),(0xEEB6),(0xEEB7), +(0xEEB8),(0xEEB9),(0xEEBA),(0xEEBB),(0xEEBC),(0xEEBD),(0xEEBE),(0xEEBF), +(0xEEC0),(0xEEC1),(0xEEC2),(0xEEC3),(0xEEC4),(0xEEC5),(0xEEC6),(0xEEC7), +(0xEEC8),(0xEEC9),(0xEECA),(0xEECB),(0xEECC),(0xEECD),(0xEECE),(0xEECF), +(0xEED0),(0xEED1),(0xEED2),(0xEED3),(0xEED4),(0xEED5),(0xEED6),(0xEED7), +(0xEED8),(0xEED9),(0xEEDA),(0xEEDB),(0xEEDC),(0xEEDD),(0xEEDE),(0xEEDF), +(0xEEE0),(0xEEE1),(0xEEE2),(0xEEE3),(0xEEE4),(0xEEE5),(0xEEE6),(0xEEE7), +(0xEEE8),(0xEEE9),(0xEEEA),(0xEEEB),(0xEEEC),(0xEEEF), +(0xEEF0),(0xEEF1),(0xEEF2),(0xEEF3),(0xEEF4),(0xEEF5),(0xEEF6),(0xEEF7), +(0xEEF8),(0xEEF9),(0xEEFA),(0xEEFB),(0xEEFC); +INSERT INTO t1 VALUES +(0xFA40),(0xFA41),(0xFA42),(0xFA43),(0xFA44),(0xFA45),(0xFA46),(0xFA47), +(0xFA48),(0xFA49),(0xFA4A),(0xFA4B),(0xFA4C),(0xFA4D),(0xFA4E),(0xFA4F), +(0xFA50),(0xFA51),(0xFA52),(0xFA53),(0xFA54),(0xFA55),(0xFA56),(0xFA57), +(0xFA58),(0xFA59),(0xFA5A),(0xFA5B),(0xFA5C),(0xFA5D),(0xFA5E),(0xFA5F), +(0xFA60),(0xFA61),(0xFA62),(0xFA63),(0xFA64),(0xFA65),(0xFA66),(0xFA67), +(0xFA68),(0xFA69),(0xFA6A),(0xFA6B),(0xFA6C),(0xFA6D),(0xFA6E),(0xFA6F), +(0xFA70),(0xFA71),(0xFA72),(0xFA73),(0xFA74),(0xFA75),(0xFA76),(0xFA77), +(0xFA78),(0xFA79),(0xFA7A),(0xFA7B),(0xFA7C),(0xFA7D),(0xFA7E), +(0xFA80),(0xFA81),(0xFA82),(0xFA83),(0xFA84),(0xFA85),(0xFA86),(0xFA87), +(0xFA88),(0xFA89),(0xFA8A),(0xFA8B),(0xFA8C),(0xFA8D),(0xFA8E),(0xFA8F), +(0xFA90),(0xFA91),(0xFA92),(0xFA93),(0xFA94),(0xFA95),(0xFA96),(0xFA97), +(0xFA98),(0xFA99),(0xFA9A),(0xFA9B),(0xFA9C),(0xFA9D),(0xFA9E),(0xFA9F), +(0xFAA0),(0xFAA1),(0xFAA2),(0xFAA3),(0xFAA4),(0xFAA5),(0xFAA6),(0xFAA7), +(0xFAA8),(0xFAA9),(0xFAAA),(0xFAAB),(0xFAAC),(0xFAAD),(0xFAAE),(0xFAAF), +(0xFAB0),(0xFAB1),(0xFAB2),(0xFAB3),(0xFAB4),(0xFAB5),(0xFAB6),(0xFAB7), +(0xFAB8),(0xFAB9),(0xFABA),(0xFABB),(0xFABC),(0xFABD),(0xFABE),(0xFABF), +(0xFAC0),(0xFAC1),(0xFAC2),(0xFAC3),(0xFAC4),(0xFAC5),(0xFAC6),(0xFAC7), +(0xFAC8),(0xFAC9),(0xFACA),(0xFACB),(0xFACC),(0xFACD),(0xFACE),(0xFACF), +(0xFAD0),(0xFAD1),(0xFAD2),(0xFAD3),(0xFAD4),(0xFAD5),(0xFAD6),(0xFAD7), +(0xFAD8),(0xFAD9),(0xFADA),(0xFADB),(0xFADC),(0xFADD),(0xFADE),(0xFADF), +(0xFAE0),(0xFAE1),(0xFAE2),(0xFAE3),(0xFAE4),(0xFAE5),(0xFAE6),(0xFAE7), +(0xFAE8),(0xFAE9),(0xFAEA),(0xFAEB),(0xFAEC),(0xFAED),(0xFAEE),(0xFAEF), +(0xFAF0),(0xFAF1),(0xFAF2),(0xFAF3),(0xFAF4),(0xFAF5),(0xFAF6),(0xFAF7), +(0xFAF8),(0xFAF9),(0xFAFA),(0xFAFB),(0xFAFC), +(0xFB40),(0xFB41),(0xFB42),(0xFB43),(0xFB44),(0xFB45),(0xFB46),(0xFB47), +(0xFB48),(0xFB49),(0xFB4A),(0xFB4B),(0xFB4C),(0xFB4D),(0xFB4E),(0xFB4F), +(0xFB50),(0xFB51),(0xFB52),(0xFB53),(0xFB54),(0xFB55),(0xFB56),(0xFB57), +(0xFB58),(0xFB59),(0xFB5A),(0xFB5B),(0xFB5C),(0xFB5D),(0xFB5E),(0xFB5F), +(0xFB60),(0xFB61),(0xFB62),(0xFB63),(0xFB64),(0xFB65),(0xFB66),(0xFB67), +(0xFB68),(0xFB69),(0xFB6A),(0xFB6B),(0xFB6C),(0xFB6D),(0xFB6E),(0xFB6F), +(0xFB70),(0xFB71),(0xFB72),(0xFB73),(0xFB74),(0xFB75),(0xFB76),(0xFB77), +(0xFB78),(0xFB79),(0xFB7A),(0xFB7B),(0xFB7C),(0xFB7D),(0xFB7E), +(0xFB80),(0xFB81),(0xFB82),(0xFB83),(0xFB84),(0xFB85),(0xFB86),(0xFB87), +(0xFB88),(0xFB89),(0xFB8A),(0xFB8B),(0xFB8C),(0xFB8D),(0xFB8E),(0xFB8F), +(0xFB90),(0xFB91),(0xFB92),(0xFB93),(0xFB94),(0xFB95),(0xFB96),(0xFB97), +(0xFB98),(0xFB99),(0xFB9A),(0xFB9B),(0xFB9C),(0xFB9D),(0xFB9E),(0xFB9F), +(0xFBA0),(0xFBA1),(0xFBA2),(0xFBA3),(0xFBA4),(0xFBA5),(0xFBA6),(0xFBA7), +(0xFBA8),(0xFBA9),(0xFBAA),(0xFBAB),(0xFBAC),(0xFBAD),(0xFBAE),(0xFBAF), +(0xFBB0),(0xFBB1),(0xFBB2),(0xFBB3),(0xFBB4),(0xFBB5),(0xFBB6),(0xFBB7), +(0xFBB8),(0xFBB9),(0xFBBA),(0xFBBB),(0xFBBC),(0xFBBD),(0xFBBE),(0xFBBF), +(0xFBC0),(0xFBC1),(0xFBC2),(0xFBC3),(0xFBC4),(0xFBC5),(0xFBC6),(0xFBC7), +(0xFBC8),(0xFBC9),(0xFBCA),(0xFBCB),(0xFBCC),(0xFBCD),(0xFBCE),(0xFBCF), +(0xFBD0),(0xFBD1),(0xFBD2),(0xFBD3),(0xFBD4),(0xFBD5),(0xFBD6),(0xFBD7), +(0xFBD8),(0xFBD9),(0xFBDA),(0xFBDB),(0xFBDC),(0xFBDD),(0xFBDE),(0xFBDF), +(0xFBE0),(0xFBE1),(0xFBE2),(0xFBE3),(0xFBE4),(0xFBE5),(0xFBE6),(0xFBE7), +(0xFBE8),(0xFBE9),(0xFBEA),(0xFBEB),(0xFBEC),(0xFBED),(0xFBEE),(0xFBEF), +(0xFBF0),(0xFBF1),(0xFBF2),(0xFBF3),(0xFBF4),(0xFBF5),(0xFBF6),(0xFBF7), +(0xFBF8),(0xFBF9),(0xFBFA),(0xFBFB),(0xFBFC), +(0xFC40),(0xFC41),(0xFC42),(0xFC43),(0xFC44),(0xFC45),(0xFC46),(0xFC47), +(0xFC48),(0xFC49),(0xFC4A),(0xFC4B); +INSERT INTO t1 VALUES +(0xF040),(0xF041),(0xF042),(0xF043),(0xF044),(0xF045),(0xF046),(0xF047), +(0xF048),(0xF049),(0xF04A),(0xF04B),(0xF04C),(0xF04D),(0xF04E),(0xF04F), +(0xF050),(0xF051),(0xF052),(0xF053),(0xF054),(0xF055),(0xF056),(0xF057), +(0xF058),(0xF059),(0xF05A),(0xF05B),(0xF05C),(0xF05D),(0xF05E),(0xF05F), +(0xF060),(0xF061),(0xF062),(0xF063),(0xF064),(0xF065),(0xF066),(0xF067), +(0xF068),(0xF069),(0xF06A),(0xF06B),(0xF06C),(0xF06D),(0xF06E),(0xF06F), +(0xF070),(0xF071),(0xF072),(0xF073),(0xF074),(0xF075),(0xF076),(0xF077), +(0xF078),(0xF079),(0xF07A),(0xF07B),(0xF07C),(0xF07D),(0xF07E), +(0xF080),(0xF081),(0xF082),(0xF083),(0xF084),(0xF085),(0xF086),(0xF087), +(0xF088),(0xF089),(0xF08A),(0xF08B),(0xF08C),(0xF08D),(0xF08E),(0xF08F), +(0xF090),(0xF091),(0xF092),(0xF093),(0xF094),(0xF095),(0xF096),(0xF097), +(0xF098),(0xF099),(0xF09A),(0xF09B),(0xF09C),(0xF09D),(0xF09E),(0xF09F), +(0xF0A0),(0xF0A1),(0xF0A2),(0xF0A3),(0xF0A4),(0xF0A5),(0xF0A6),(0xF0A7), +(0xF0A8),(0xF0A9),(0xF0AA),(0xF0AB),(0xF0AC),(0xF0AD),(0xF0AE),(0xF0AF), +(0xF0B0),(0xF0B1),(0xF0B2),(0xF0B3),(0xF0B4),(0xF0B5),(0xF0B6),(0xF0B7), +(0xF0B8),(0xF0B9),(0xF0BA),(0xF0BB),(0xF0BC),(0xF0BD),(0xF0BE),(0xF0BF), +(0xF0C0),(0xF0C1),(0xF0C2),(0xF0C3),(0xF0C4),(0xF0C5),(0xF0C6),(0xF0C7), +(0xF0C8),(0xF0C9),(0xF0CA),(0xF0CB),(0xF0CC),(0xF0CD),(0xF0CE),(0xF0CF), +(0xF0D0),(0xF0D1),(0xF0D2),(0xF0D3),(0xF0D4),(0xF0D5),(0xF0D6),(0xF0D7), +(0xF0D8),(0xF0D9),(0xF0DA),(0xF0DB),(0xF0DC),(0xF0DD),(0xF0DE),(0xF0DF), +(0xF0E0),(0xF0E1),(0xF0E2),(0xF0E3),(0xF0E4),(0xF0E5),(0xF0E6),(0xF0E7), +(0xF0E8),(0xF0E9),(0xF0EA),(0xF0EB),(0xF0EC),(0xF0ED),(0xF0EE),(0xF0EF), +(0xF0F0),(0xF0F1),(0xF0F2),(0xF0F3),(0xF0F4),(0xF0F5),(0xF0F6),(0xF0F7), +(0xF0F8),(0xF0F9),(0xF0FA),(0xF0FB),(0xF0FC), +(0xF140),(0xF141),(0xF142),(0xF143),(0xF144),(0xF145),(0xF146),(0xF147), +(0xF148),(0xF149),(0xF14A),(0xF14B),(0xF14C),(0xF14D),(0xF14E),(0xF14F), +(0xF150),(0xF151),(0xF152),(0xF153),(0xF154),(0xF155),(0xF156),(0xF157), +(0xF158),(0xF159),(0xF15A),(0xF15B),(0xF15C),(0xF15D),(0xF15E),(0xF15F), +(0xF160),(0xF161),(0xF162),(0xF163),(0xF164),(0xF165),(0xF166),(0xF167), +(0xF168),(0xF169),(0xF16A),(0xF16B),(0xF16C),(0xF16D),(0xF16E),(0xF16F), +(0xF170),(0xF171),(0xF172),(0xF173),(0xF174),(0xF175),(0xF176),(0xF177), +(0xF178),(0xF179),(0xF17A),(0xF17B),(0xF17C),(0xF17D),(0xF17E), +(0xF180),(0xF181),(0xF182),(0xF183),(0xF184),(0xF185),(0xF186),(0xF187), +(0xF188),(0xF189),(0xF18A),(0xF18B),(0xF18C),(0xF18D),(0xF18E),(0xF18F), +(0xF190),(0xF191),(0xF192),(0xF193),(0xF194),(0xF195),(0xF196),(0xF197), +(0xF198),(0xF199),(0xF19A),(0xF19B),(0xF19C),(0xF19D),(0xF19E),(0xF19F), +(0xF1A0),(0xF1A1),(0xF1A2),(0xF1A3),(0xF1A4),(0xF1A5),(0xF1A6),(0xF1A7), +(0xF1A8),(0xF1A9),(0xF1AA),(0xF1AB),(0xF1AC),(0xF1AD),(0xF1AE),(0xF1AF), +(0xF1B0),(0xF1B1),(0xF1B2),(0xF1B3),(0xF1B4),(0xF1B5),(0xF1B6),(0xF1B7), +(0xF1B8),(0xF1B9),(0xF1BA),(0xF1BB),(0xF1BC),(0xF1BD),(0xF1BE),(0xF1BF), +(0xF1C0),(0xF1C1),(0xF1C2),(0xF1C3),(0xF1C4),(0xF1C5),(0xF1C6),(0xF1C7), +(0xF1C8),(0xF1C9),(0xF1CA),(0xF1CB),(0xF1CC),(0xF1CD),(0xF1CE),(0xF1CF), +(0xF1D0),(0xF1D1),(0xF1D2),(0xF1D3),(0xF1D4),(0xF1D5),(0xF1D6),(0xF1D7), +(0xF1D8),(0xF1D9),(0xF1DA),(0xF1DB),(0xF1DC),(0xF1DD),(0xF1DE),(0xF1DF), +(0xF1E0),(0xF1E1),(0xF1E2),(0xF1E3),(0xF1E4),(0xF1E5),(0xF1E6),(0xF1E7), +(0xF1E8),(0xF1E9),(0xF1EA),(0xF1EB),(0xF1EC),(0xF1ED),(0xF1EE),(0xF1EF), +(0xF1F0),(0xF1F1),(0xF1F2),(0xF1F3),(0xF1F4),(0xF1F5),(0xF1F6),(0xF1F7), +(0xF1F8),(0xF1F9),(0xF1FA),(0xF1FB),(0xF1FC), +(0xF240),(0xF241),(0xF242),(0xF243),(0xF244),(0xF245),(0xF246),(0xF247), +(0xF248),(0xF249),(0xF24A),(0xF24B),(0xF24C),(0xF24D),(0xF24E),(0xF24F), +(0xF250),(0xF251),(0xF252),(0xF253),(0xF254),(0xF255),(0xF256),(0xF257), +(0xF258),(0xF259),(0xF25A),(0xF25B),(0xF25C),(0xF25D),(0xF25E),(0xF25F), +(0xF260),(0xF261),(0xF262),(0xF263),(0xF264),(0xF265),(0xF266),(0xF267), +(0xF268),(0xF269),(0xF26A),(0xF26B),(0xF26C),(0xF26D),(0xF26E),(0xF26F), +(0xF270),(0xF271),(0xF272),(0xF273),(0xF274),(0xF275),(0xF276),(0xF277), +(0xF278),(0xF279),(0xF27A),(0xF27B),(0xF27C),(0xF27D),(0xF27E), +(0xF280),(0xF281),(0xF282),(0xF283),(0xF284),(0xF285),(0xF286),(0xF287), +(0xF288),(0xF289),(0xF28A),(0xF28B),(0xF28C),(0xF28D),(0xF28E),(0xF28F), +(0xF290),(0xF291),(0xF292),(0xF293),(0xF294),(0xF295),(0xF296),(0xF297), +(0xF298),(0xF299),(0xF29A),(0xF29B),(0xF29C),(0xF29D),(0xF29E),(0xF29F), +(0xF2A0),(0xF2A1),(0xF2A2),(0xF2A3),(0xF2A4),(0xF2A5),(0xF2A6),(0xF2A7), +(0xF2A8),(0xF2A9),(0xF2AA),(0xF2AB),(0xF2AC),(0xF2AD),(0xF2AE),(0xF2AF), +(0xF2B0),(0xF2B1),(0xF2B2),(0xF2B3),(0xF2B4),(0xF2B5),(0xF2B6),(0xF2B7), +(0xF2B8),(0xF2B9),(0xF2BA),(0xF2BB),(0xF2BC),(0xF2BD),(0xF2BE),(0xF2BF), +(0xF2C0),(0xF2C1),(0xF2C2),(0xF2C3),(0xF2C4),(0xF2C5),(0xF2C6),(0xF2C7), +(0xF2C8),(0xF2C9),(0xF2CA),(0xF2CB),(0xF2CC),(0xF2CD),(0xF2CE),(0xF2CF), +(0xF2D0),(0xF2D1),(0xF2D2),(0xF2D3),(0xF2D4),(0xF2D5),(0xF2D6),(0xF2D7), +(0xF2D8),(0xF2D9),(0xF2DA),(0xF2DB),(0xF2DC),(0xF2DD),(0xF2DE),(0xF2DF), +(0xF2E0),(0xF2E1),(0xF2E2),(0xF2E3),(0xF2E4),(0xF2E5),(0xF2E6),(0xF2E7), +(0xF2E8),(0xF2E9),(0xF2EA),(0xF2EB),(0xF2EC),(0xF2ED),(0xF2EE),(0xF2EF), +(0xF2F0),(0xF2F1),(0xF2F2),(0xF2F3),(0xF2F4),(0xF2F5),(0xF2F6),(0xF2F7), +(0xF2F8),(0xF2F9),(0xF2FA),(0xF2FB),(0xF2FC), +(0xF340),(0xF341),(0xF342),(0xF343),(0xF344),(0xF345),(0xF346),(0xF347), +(0xF348),(0xF349),(0xF34A),(0xF34B),(0xF34C),(0xF34D),(0xF34E),(0xF34F), +(0xF350),(0xF351),(0xF352),(0xF353),(0xF354),(0xF355),(0xF356),(0xF357), +(0xF358),(0xF359),(0xF35A),(0xF35B),(0xF35C),(0xF35D),(0xF35E),(0xF35F), +(0xF360),(0xF361),(0xF362),(0xF363),(0xF364),(0xF365),(0xF366),(0xF367), +(0xF368),(0xF369),(0xF36A),(0xF36B),(0xF36C),(0xF36D),(0xF36E),(0xF36F), +(0xF370),(0xF371),(0xF372),(0xF373),(0xF374),(0xF375),(0xF376),(0xF377), +(0xF378),(0xF379),(0xF37A),(0xF37B),(0xF37C),(0xF37D),(0xF37E), +(0xF380),(0xF381),(0xF382),(0xF383),(0xF384),(0xF385),(0xF386),(0xF387), +(0xF388),(0xF389),(0xF38A),(0xF38B),(0xF38C),(0xF38D),(0xF38E),(0xF38F), +(0xF390),(0xF391),(0xF392),(0xF393),(0xF394),(0xF395),(0xF396),(0xF397), +(0xF398),(0xF399),(0xF39A),(0xF39B),(0xF39C),(0xF39D),(0xF39E),(0xF39F), +(0xF3A0),(0xF3A1),(0xF3A2),(0xF3A3),(0xF3A4),(0xF3A5),(0xF3A6),(0xF3A7), +(0xF3A8),(0xF3A9),(0xF3AA),(0xF3AB),(0xF3AC),(0xF3AD),(0xF3AE),(0xF3AF), +(0xF3B0),(0xF3B1),(0xF3B2),(0xF3B3),(0xF3B4),(0xF3B5),(0xF3B6),(0xF3B7), +(0xF3B8),(0xF3B9),(0xF3BA),(0xF3BB),(0xF3BC),(0xF3BD),(0xF3BE),(0xF3BF), +(0xF3C0),(0xF3C1),(0xF3C2),(0xF3C3),(0xF3C4),(0xF3C5),(0xF3C6),(0xF3C7), +(0xF3C8),(0xF3C9),(0xF3CA),(0xF3CB),(0xF3CC),(0xF3CD),(0xF3CE),(0xF3CF), +(0xF3D0),(0xF3D1),(0xF3D2),(0xF3D3),(0xF3D4),(0xF3D5),(0xF3D6),(0xF3D7), +(0xF3D8),(0xF3D9),(0xF3DA),(0xF3DB),(0xF3DC),(0xF3DD),(0xF3DE),(0xF3DF), +(0xF3E0),(0xF3E1),(0xF3E2),(0xF3E3),(0xF3E4),(0xF3E5),(0xF3E6),(0xF3E7), +(0xF3E8),(0xF3E9),(0xF3EA),(0xF3EB),(0xF3EC),(0xF3ED),(0xF3EE),(0xF3EF), +(0xF3F0),(0xF3F1),(0xF3F2),(0xF3F3),(0xF3F4),(0xF3F5),(0xF3F6),(0xF3F7), +(0xF3F8),(0xF3F9),(0xF3FA),(0xF3FB),(0xF3FC), +(0xF440),(0xF441),(0xF442),(0xF443),(0xF444),(0xF445),(0xF446),(0xF447), +(0xF448),(0xF449),(0xF44A),(0xF44B),(0xF44C),(0xF44D),(0xF44E),(0xF44F), +(0xF450),(0xF451),(0xF452),(0xF453),(0xF454),(0xF455),(0xF456),(0xF457), +(0xF458),(0xF459),(0xF45A),(0xF45B),(0xF45C),(0xF45D),(0xF45E),(0xF45F), +(0xF460),(0xF461),(0xF462),(0xF463),(0xF464),(0xF465),(0xF466),(0xF467), +(0xF468),(0xF469),(0xF46A),(0xF46B),(0xF46C),(0xF46D),(0xF46E),(0xF46F), +(0xF470),(0xF471),(0xF472),(0xF473),(0xF474),(0xF475),(0xF476),(0xF477), +(0xF478),(0xF479),(0xF47A),(0xF47B),(0xF47C),(0xF47D),(0xF47E), +(0xF480),(0xF481),(0xF482),(0xF483),(0xF484),(0xF485),(0xF486),(0xF487), +(0xF488),(0xF489),(0xF48A),(0xF48B),(0xF48C),(0xF48D),(0xF48E),(0xF48F), +(0xF490),(0xF491),(0xF492),(0xF493),(0xF494),(0xF495),(0xF496),(0xF497), +(0xF498),(0xF499),(0xF49A),(0xF49B),(0xF49C),(0xF49D),(0xF49E),(0xF49F), +(0xF4A0),(0xF4A1),(0xF4A2),(0xF4A3),(0xF4A4),(0xF4A5),(0xF4A6),(0xF4A7), +(0xF4A8),(0xF4A9),(0xF4AA),(0xF4AB),(0xF4AC),(0xF4AD),(0xF4AE),(0xF4AF), +(0xF4B0),(0xF4B1),(0xF4B2),(0xF4B3),(0xF4B4),(0xF4B5),(0xF4B6),(0xF4B7), +(0xF4B8),(0xF4B9),(0xF4BA),(0xF4BB),(0xF4BC),(0xF4BD),(0xF4BE),(0xF4BF), +(0xF4C0),(0xF4C1),(0xF4C2),(0xF4C3),(0xF4C4),(0xF4C5),(0xF4C6),(0xF4C7), +(0xF4C8),(0xF4C9),(0xF4CA),(0xF4CB),(0xF4CC),(0xF4CD),(0xF4CE),(0xF4CF), +(0xF4D0),(0xF4D1),(0xF4D2),(0xF4D3),(0xF4D4),(0xF4D5),(0xF4D6),(0xF4D7), +(0xF4D8),(0xF4D9),(0xF4DA),(0xF4DB),(0xF4DC),(0xF4DD),(0xF4DE),(0xF4DF), +(0xF4E0),(0xF4E1),(0xF4E2),(0xF4E3),(0xF4E4),(0xF4E5),(0xF4E6),(0xF4E7), +(0xF4E8),(0xF4E9),(0xF4EA),(0xF4EB),(0xF4EC),(0xF4ED),(0xF4EE),(0xF4EF), +(0xF4F0),(0xF4F1),(0xF4F2),(0xF4F3),(0xF4F4),(0xF4F5),(0xF4F6),(0xF4F7), +(0xF4F8),(0xF4F9),(0xF4FA),(0xF4FB),(0xF4FC), +(0xF540),(0xF541),(0xF542),(0xF543),(0xF544),(0xF545),(0xF546),(0xF547), +(0xF548),(0xF549),(0xF54A),(0xF54B),(0xF54C),(0xF54D),(0xF54E),(0xF54F), +(0xF550),(0xF551),(0xF552),(0xF553),(0xF554),(0xF555),(0xF556),(0xF557), +(0xF558),(0xF559),(0xF55A),(0xF55B),(0xF55C),(0xF55D),(0xF55E),(0xF55F), +(0xF560),(0xF561),(0xF562),(0xF563),(0xF564),(0xF565),(0xF566),(0xF567), +(0xF568),(0xF569),(0xF56A),(0xF56B),(0xF56C),(0xF56D),(0xF56E),(0xF56F), +(0xF570),(0xF571),(0xF572),(0xF573),(0xF574),(0xF575),(0xF576),(0xF577), +(0xF578),(0xF579),(0xF57A),(0xF57B),(0xF57C),(0xF57D),(0xF57E), +(0xF580),(0xF581),(0xF582),(0xF583),(0xF584),(0xF585),(0xF586),(0xF587), +(0xF588),(0xF589),(0xF58A),(0xF58B),(0xF58C),(0xF58D),(0xF58E),(0xF58F), +(0xF590),(0xF591),(0xF592),(0xF593),(0xF594),(0xF595),(0xF596),(0xF597), +(0xF598),(0xF599),(0xF59A),(0xF59B),(0xF59C),(0xF59D),(0xF59E),(0xF59F), +(0xF5A0),(0xF5A1),(0xF5A2),(0xF5A3),(0xF5A4),(0xF5A5),(0xF5A6),(0xF5A7), +(0xF5A8),(0xF5A9),(0xF5AA),(0xF5AB),(0xF5AC),(0xF5AD),(0xF5AE),(0xF5AF), +(0xF5B0),(0xF5B1),(0xF5B2),(0xF5B3),(0xF5B4),(0xF5B5),(0xF5B6),(0xF5B7), +(0xF5B8),(0xF5B9),(0xF5BA),(0xF5BB),(0xF5BC),(0xF5BD),(0xF5BE),(0xF5BF), +(0xF5C0),(0xF5C1),(0xF5C2),(0xF5C3),(0xF5C4),(0xF5C5),(0xF5C6),(0xF5C7), +(0xF5C8),(0xF5C9),(0xF5CA),(0xF5CB),(0xF5CC),(0xF5CD),(0xF5CE),(0xF5CF), +(0xF5D0),(0xF5D1),(0xF5D2),(0xF5D3),(0xF5D4),(0xF5D5),(0xF5D6),(0xF5D7), +(0xF5D8),(0xF5D9),(0xF5DA),(0xF5DB),(0xF5DC),(0xF5DD),(0xF5DE),(0xF5DF), +(0xF5E0),(0xF5E1),(0xF5E2),(0xF5E3),(0xF5E4),(0xF5E5),(0xF5E6),(0xF5E7), +(0xF5E8),(0xF5E9),(0xF5EA),(0xF5EB),(0xF5EC),(0xF5ED),(0xF5EE),(0xF5EF), +(0xF5F0),(0xF5F1),(0xF5F2),(0xF5F3),(0xF5F4),(0xF5F5),(0xF5F6),(0xF5F7), +(0xF5F8),(0xF5F9),(0xF5FA),(0xF5FB),(0xF5FC), +(0xF640),(0xF641),(0xF642),(0xF643),(0xF644),(0xF645),(0xF646),(0xF647), +(0xF648),(0xF649),(0xF64A),(0xF64B),(0xF64C),(0xF64D),(0xF64E),(0xF64F), +(0xF650),(0xF651),(0xF652),(0xF653),(0xF654),(0xF655),(0xF656),(0xF657), +(0xF658),(0xF659),(0xF65A),(0xF65B),(0xF65C),(0xF65D),(0xF65E),(0xF65F), +(0xF660),(0xF661),(0xF662),(0xF663),(0xF664),(0xF665),(0xF666),(0xF667), +(0xF668),(0xF669),(0xF66A),(0xF66B),(0xF66C),(0xF66D),(0xF66E),(0xF66F), +(0xF670),(0xF671),(0xF672),(0xF673),(0xF674),(0xF675),(0xF676),(0xF677), +(0xF678),(0xF679),(0xF67A),(0xF67B),(0xF67C),(0xF67D),(0xF67E), +(0xF680),(0xF681),(0xF682),(0xF683),(0xF684),(0xF685),(0xF686),(0xF687), +(0xF688),(0xF689),(0xF68A),(0xF68B),(0xF68C),(0xF68D),(0xF68E),(0xF68F), +(0xF690),(0xF691),(0xF692),(0xF693),(0xF694),(0xF695),(0xF696),(0xF697), +(0xF698),(0xF699),(0xF69A),(0xF69B),(0xF69C),(0xF69D),(0xF69E),(0xF69F), +(0xF6A0),(0xF6A1),(0xF6A2),(0xF6A3),(0xF6A4),(0xF6A5),(0xF6A6),(0xF6A7), +(0xF6A8),(0xF6A9),(0xF6AA),(0xF6AB),(0xF6AC),(0xF6AD),(0xF6AE),(0xF6AF), +(0xF6B0),(0xF6B1),(0xF6B2),(0xF6B3),(0xF6B4),(0xF6B5),(0xF6B6),(0xF6B7), +(0xF6B8),(0xF6B9),(0xF6BA),(0xF6BB),(0xF6BC),(0xF6BD),(0xF6BE),(0xF6BF), +(0xF6C0),(0xF6C1),(0xF6C2),(0xF6C3),(0xF6C4),(0xF6C5),(0xF6C6),(0xF6C7), +(0xF6C8),(0xF6C9),(0xF6CA),(0xF6CB),(0xF6CC),(0xF6CD),(0xF6CE),(0xF6CF), +(0xF6D0),(0xF6D1),(0xF6D2),(0xF6D3),(0xF6D4),(0xF6D5),(0xF6D6),(0xF6D7), +(0xF6D8),(0xF6D9),(0xF6DA),(0xF6DB),(0xF6DC),(0xF6DD),(0xF6DE),(0xF6DF), +(0xF6E0),(0xF6E1),(0xF6E2),(0xF6E3),(0xF6E4),(0xF6E5),(0xF6E6),(0xF6E7), +(0xF6E8),(0xF6E9),(0xF6EA),(0xF6EB),(0xF6EC),(0xF6ED),(0xF6EE),(0xF6EF), +(0xF6F0),(0xF6F1),(0xF6F2),(0xF6F3),(0xF6F4),(0xF6F5),(0xF6F6),(0xF6F7), +(0xF6F8),(0xF6F9),(0xF6FA),(0xF6FB),(0xF6FC), +(0xF740),(0xF741),(0xF742),(0xF743),(0xF744),(0xF745),(0xF746),(0xF747), +(0xF748),(0xF749),(0xF74A),(0xF74B),(0xF74C),(0xF74D),(0xF74E),(0xF74F), +(0xF750),(0xF751),(0xF752),(0xF753),(0xF754),(0xF755),(0xF756),(0xF757), +(0xF758),(0xF759),(0xF75A),(0xF75B),(0xF75C),(0xF75D),(0xF75E),(0xF75F), +(0xF760),(0xF761),(0xF762),(0xF763),(0xF764),(0xF765),(0xF766),(0xF767), +(0xF768),(0xF769),(0xF76A),(0xF76B),(0xF76C),(0xF76D),(0xF76E),(0xF76F), +(0xF770),(0xF771),(0xF772),(0xF773),(0xF774),(0xF775),(0xF776),(0xF777), +(0xF778),(0xF779),(0xF77A),(0xF77B),(0xF77C),(0xF77D),(0xF77E), +(0xF780),(0xF781),(0xF782),(0xF783),(0xF784),(0xF785),(0xF786),(0xF787), +(0xF788),(0xF789),(0xF78A),(0xF78B),(0xF78C),(0xF78D),(0xF78E),(0xF78F), +(0xF790),(0xF791),(0xF792),(0xF793),(0xF794),(0xF795),(0xF796),(0xF797), +(0xF798),(0xF799),(0xF79A),(0xF79B),(0xF79C),(0xF79D),(0xF79E),(0xF79F), +(0xF7A0),(0xF7A1),(0xF7A2),(0xF7A3),(0xF7A4),(0xF7A5),(0xF7A6),(0xF7A7), +(0xF7A8),(0xF7A9),(0xF7AA),(0xF7AB),(0xF7AC),(0xF7AD),(0xF7AE),(0xF7AF), +(0xF7B0),(0xF7B1),(0xF7B2),(0xF7B3),(0xF7B4),(0xF7B5),(0xF7B6),(0xF7B7), +(0xF7B8),(0xF7B9),(0xF7BA),(0xF7BB),(0xF7BC),(0xF7BD),(0xF7BE),(0xF7BF), +(0xF7C0),(0xF7C1),(0xF7C2),(0xF7C3),(0xF7C4),(0xF7C5),(0xF7C6),(0xF7C7), +(0xF7C8),(0xF7C9),(0xF7CA),(0xF7CB),(0xF7CC),(0xF7CD),(0xF7CE),(0xF7CF), +(0xF7D0),(0xF7D1),(0xF7D2),(0xF7D3),(0xF7D4),(0xF7D5),(0xF7D6),(0xF7D7), +(0xF7D8),(0xF7D9),(0xF7DA),(0xF7DB),(0xF7DC),(0xF7DD),(0xF7DE),(0xF7DF), +(0xF7E0),(0xF7E1),(0xF7E2),(0xF7E3),(0xF7E4),(0xF7E5),(0xF7E6),(0xF7E7), +(0xF7E8),(0xF7E9),(0xF7EA),(0xF7EB),(0xF7EC),(0xF7ED),(0xF7EE),(0xF7EF), +(0xF7F0),(0xF7F1),(0xF7F2),(0xF7F3),(0xF7F4),(0xF7F5),(0xF7F6),(0xF7F7), +(0xF7F8),(0xF7F9),(0xF7FA),(0xF7FB),(0xF7FC), +(0xF840),(0xF841),(0xF842),(0xF843),(0xF844),(0xF845),(0xF846),(0xF847), +(0xF848),(0xF849),(0xF84A),(0xF84B),(0xF84C),(0xF84D),(0xF84E),(0xF84F), +(0xF850),(0xF851),(0xF852),(0xF853),(0xF854),(0xF855),(0xF856),(0xF857), +(0xF858),(0xF859),(0xF85A),(0xF85B),(0xF85C),(0xF85D),(0xF85E),(0xF85F), +(0xF860),(0xF861),(0xF862),(0xF863),(0xF864),(0xF865),(0xF866),(0xF867), +(0xF868),(0xF869),(0xF86A),(0xF86B),(0xF86C),(0xF86D),(0xF86E),(0xF86F), +(0xF870),(0xF871),(0xF872),(0xF873),(0xF874),(0xF875),(0xF876),(0xF877), +(0xF878),(0xF879),(0xF87A),(0xF87B),(0xF87C),(0xF87D),(0xF87E), +(0xF880),(0xF881),(0xF882),(0xF883),(0xF884),(0xF885),(0xF886),(0xF887), +(0xF888),(0xF889),(0xF88A),(0xF88B),(0xF88C),(0xF88D),(0xF88E),(0xF88F), +(0xF890),(0xF891),(0xF892),(0xF893),(0xF894),(0xF895),(0xF896),(0xF897), +(0xF898),(0xF899),(0xF89A),(0xF89B),(0xF89C),(0xF89D),(0xF89E),(0xF89F), +(0xF8A0),(0xF8A1),(0xF8A2),(0xF8A3),(0xF8A4),(0xF8A5),(0xF8A6),(0xF8A7), +(0xF8A8),(0xF8A9),(0xF8AA),(0xF8AB),(0xF8AC),(0xF8AD),(0xF8AE),(0xF8AF), +(0xF8B0),(0xF8B1),(0xF8B2),(0xF8B3),(0xF8B4),(0xF8B5),(0xF8B6),(0xF8B7), +(0xF8B8),(0xF8B9),(0xF8BA),(0xF8BB),(0xF8BC),(0xF8BD),(0xF8BE),(0xF8BF), +(0xF8C0),(0xF8C1),(0xF8C2),(0xF8C3),(0xF8C4),(0xF8C5),(0xF8C6),(0xF8C7), +(0xF8C8),(0xF8C9),(0xF8CA),(0xF8CB),(0xF8CC),(0xF8CD),(0xF8CE),(0xF8CF), +(0xF8D0),(0xF8D1),(0xF8D2),(0xF8D3),(0xF8D4),(0xF8D5),(0xF8D6),(0xF8D7), +(0xF8D8),(0xF8D9),(0xF8DA),(0xF8DB),(0xF8DC),(0xF8DD),(0xF8DE),(0xF8DF), +(0xF8E0),(0xF8E1),(0xF8E2),(0xF8E3),(0xF8E4),(0xF8E5),(0xF8E6),(0xF8E7), +(0xF8E8),(0xF8E9),(0xF8EA),(0xF8EB),(0xF8EC),(0xF8ED),(0xF8EE),(0xF8EF), +(0xF8F0),(0xF8F1),(0xF8F2),(0xF8F3),(0xF8F4),(0xF8F5),(0xF8F6),(0xF8F7), +(0xF8F8),(0xF8F9),(0xF8FA),(0xF8FB),(0xF8FC), +(0xF940),(0xF941),(0xF942),(0xF943),(0xF944),(0xF945),(0xF946),(0xF947), +(0xF948),(0xF949),(0xF94A),(0xF94B),(0xF94C),(0xF94D),(0xF94E),(0xF94F), +(0xF950),(0xF951),(0xF952),(0xF953),(0xF954),(0xF955),(0xF956),(0xF957), +(0xF958),(0xF959),(0xF95A),(0xF95B),(0xF95C),(0xF95D),(0xF95E),(0xF95F), +(0xF960),(0xF961),(0xF962),(0xF963),(0xF964),(0xF965),(0xF966),(0xF967), +(0xF968),(0xF969),(0xF96A),(0xF96B),(0xF96C),(0xF96D),(0xF96E),(0xF96F), +(0xF970),(0xF971),(0xF972),(0xF973),(0xF974),(0xF975),(0xF976),(0xF977), +(0xF978),(0xF979),(0xF97A),(0xF97B),(0xF97C),(0xF97D),(0xF97E), +(0xF980),(0xF981),(0xF982),(0xF983),(0xF984),(0xF985),(0xF986),(0xF987), +(0xF988),(0xF989),(0xF98A),(0xF98B),(0xF98C),(0xF98D),(0xF98E),(0xF98F), +(0xF990),(0xF991),(0xF992),(0xF993),(0xF994),(0xF995),(0xF996),(0xF997), +(0xF998),(0xF999),(0xF99A),(0xF99B),(0xF99C),(0xF99D),(0xF99E),(0xF99F), +(0xF9A0),(0xF9A1),(0xF9A2),(0xF9A3),(0xF9A4),(0xF9A5),(0xF9A6),(0xF9A7), +(0xF9A8),(0xF9A9),(0xF9AA),(0xF9AB),(0xF9AC),(0xF9AD),(0xF9AE),(0xF9AF), +(0xF9B0),(0xF9B1),(0xF9B2),(0xF9B3),(0xF9B4),(0xF9B5),(0xF9B6),(0xF9B7), +(0xF9B8),(0xF9B9),(0xF9BA),(0xF9BB),(0xF9BC),(0xF9BD),(0xF9BE),(0xF9BF), +(0xF9C0),(0xF9C1),(0xF9C2),(0xF9C3),(0xF9C4),(0xF9C5),(0xF9C6),(0xF9C7), +(0xF9C8),(0xF9C9),(0xF9CA),(0xF9CB),(0xF9CC),(0xF9CD),(0xF9CE),(0xF9CF), +(0xF9D0),(0xF9D1),(0xF9D2),(0xF9D3),(0xF9D4),(0xF9D5),(0xF9D6),(0xF9D7), +(0xF9D8),(0xF9D9),(0xF9DA),(0xF9DB),(0xF9DC),(0xF9DD),(0xF9DE),(0xF9DF), +(0xF9E0),(0xF9E1),(0xF9E2),(0xF9E3),(0xF9E4),(0xF9E5),(0xF9E6),(0xF9E7), +(0xF9E8),(0xF9E9),(0xF9EA),(0xF9EB),(0xF9EC),(0xF9ED),(0xF9EE),(0xF9EF), +(0xF9F0),(0xF9F1),(0xF9F2),(0xF9F3),(0xF9F4),(0xF9F5),(0xF9F6),(0xF9F7), +(0xF9F8),(0xF9F9),(0xF9FA),(0xF9FB),(0xF9FC); +SELECT HEX(c1) FROM t1 ORDER BY BINARY c1; +HEX(c1) +05 +7E +815C +815F +8160 +8161 +817C +8191 +8192 +81CA +8740 +8741 +8742 +8743 +8744 +8745 +8746 +8747 +8748 +8749 +874A +874B +874C +874D +874E +874F +8750 +8751 +8752 +8753 +8754 +8755 +8756 +8757 +8758 +8759 +875A +875B +875C +875D +875F +8760 +8761 +8762 +8763 +8764 +8765 +8766 +8767 +8768 +8769 +876A +876B +876C +876D +876E +876F +8770 +8771 +8772 +8773 +8774 +8775 +877E +8780 +8781 +8782 +8783 +8784 +8785 +8786 +8787 +8788 +8789 +878A +878B +878C +878D +878E +878F +8790 +8791 +8792 +8793 +8794 +8795 +8796 +8797 +8798 +8799 +879A +879B +879C +ED40 +ED41 +ED42 +ED43 +ED44 +ED45 +ED46 +ED47 +ED48 +ED49 +ED4A +ED4B +ED4C +ED4D +ED4E +ED4F +ED50 +ED51 +ED52 +ED53 +ED54 +ED55 +ED56 +ED57 +ED58 +ED59 +ED5A +ED5B +ED5C +ED5D +ED5E +ED5F +ED60 +ED61 +ED62 +ED63 +ED64 +ED65 +ED66 +ED67 +ED68 +ED69 +ED6A +ED6B +ED6C +ED6D +ED6E +ED6F +ED70 +ED71 +ED72 +ED73 +ED74 +ED75 +ED76 +ED77 +ED78 +ED79 +ED7A +ED7B +ED7C +ED7D +ED7E +ED80 +ED81 +ED82 +ED83 +ED84 +ED85 +ED86 +ED87 +ED88 +ED89 +ED8A +ED8B +ED8C +ED8D +ED8E +ED8F +ED90 +ED91 +ED92 +ED93 +ED94 +ED95 +ED96 +ED97 +ED98 +ED99 +ED9A +ED9B +ED9C +ED9D +ED9E +ED9F +EDA0 +EDA1 +EDA2 +EDA3 +EDA4 +EDA5 +EDA6 +EDA7 +EDA8 +EDA9 +EDAA +EDAB +EDAC +EDAD +EDAE +EDAF +EDB0 +EDB1 +EDB2 +EDB3 +EDB4 +EDB5 +EDB6 +EDB7 +EDB8 +EDB9 +EDBA +EDBB +EDBC +EDBD +EDBE +EDBF +EDC0 +EDC1 +EDC2 +EDC3 +EDC4 +EDC5 +EDC6 +EDC7 +EDC8 +EDC9 +EDCA +EDCB +EDCC +EDCD +EDCE +EDCF +EDD0 +EDD1 +EDD2 +EDD3 +EDD4 +EDD5 +EDD6 +EDD7 +EDD8 +EDD9 +EDDA +EDDB +EDDC +EDDD +EDDE +EDDF +EDE0 +EDE1 +EDE2 +EDE3 +EDE4 +EDE5 +EDE6 +EDE7 +EDE8 +EDE9 +EDEA +EDEB +EDEC +EDED +EDEE +EDEF +EDF0 +EDF1 +EDF2 +EDF3 +EDF4 +EDF5 +EDF6 +EDF7 +EDF8 +EDF9 +EDFA +EDFB +EDFC +EE40 +EE41 +EE42 +EE43 +EE44 +EE45 +EE46 +EE47 +EE48 +EE49 +EE4A +EE4B +EE4C +EE4D +EE4E +EE4F +EE50 +EE51 +EE52 +EE53 +EE54 +EE55 +EE56 +EE57 +EE58 +EE59 +EE5A +EE5B +EE5C +EE5D +EE5E +EE5F +EE60 +EE61 +EE62 +EE63 +EE64 +EE65 +EE66 +EE67 +EE68 +EE69 +EE6A +EE6B +EE6C +EE6D +EE6E +EE6F +EE70 +EE71 +EE72 +EE73 +EE74 +EE75 +EE76 +EE77 +EE78 +EE79 +EE7A +EE7B +EE7C +EE7D +EE7E +EE80 +EE81 +EE82 +EE83 +EE84 +EE85 +EE86 +EE87 +EE88 +EE89 +EE8A +EE8B +EE8C +EE8D +EE8E +EE8F +EE90 +EE91 +EE92 +EE93 +EE94 +EE95 +EE96 +EE97 +EE98 +EE99 +EE9A +EE9B +EE9C +EE9D +EE9E +EE9F +EEA0 +EEA1 +EEA2 +EEA3 +EEA4 +EEA5 +EEA6 +EEA7 +EEA8 +EEA9 +EEAA +EEAB +EEAC +EEAD +EEAE +EEAF +EEB0 +EEB1 +EEB2 +EEB3 +EEB4 +EEB5 +EEB6 +EEB7 +EEB8 +EEB9 +EEBA +EEBB +EEBC +EEBD +EEBE +EEBF +EEC0 +EEC1 +EEC2 +EEC3 +EEC4 +EEC5 +EEC6 +EEC7 +EEC8 +EEC9 +EECA +EECB +EECC +EECD +EECE +EECF +EED0 +EED1 +EED2 +EED3 +EED4 +EED5 +EED6 +EED7 +EED8 +EED9 +EEDA +EEDB +EEDC +EEDD +EEDE +EEDF +EEE0 +EEE1 +EEE2 +EEE3 +EEE4 +EEE5 +EEE6 +EEE7 +EEE8 +EEE9 +EEEA +EEEB +EEEC +EEEF +EEF0 +EEF1 +EEF2 +EEF3 +EEF4 +EEF5 +EEF6 +EEF7 +EEF8 +EEF9 +EEFA +EEFB +EEFC +F040 +F041 +F042 +F043 +F044 +F045 +F046 +F047 +F048 +F049 +F04A +F04B +F04C +F04D +F04E +F04F +F050 +F051 +F052 +F053 +F054 +F055 +F056 +F057 +F058 +F059 +F05A +F05B +F05C +F05D +F05E +F05F +F060 +F061 +F062 +F063 +F064 +F065 +F066 +F067 +F068 +F069 +F06A +F06B +F06C +F06D +F06E +F06F +F070 +F071 +F072 +F073 +F074 +F075 +F076 +F077 +F078 +F079 +F07A +F07B +F07C +F07D +F07E +F080 +F081 +F082 +F083 +F084 +F085 +F086 +F087 +F088 +F089 +F08A +F08B +F08C +F08D +F08E +F08F +F090 +F091 +F092 +F093 +F094 +F095 +F096 +F097 +F098 +F099 +F09A +F09B +F09C +F09D +F09E +F09F +F0A0 +F0A1 +F0A2 +F0A3 +F0A4 +F0A5 +F0A6 +F0A7 +F0A8 +F0A9 +F0AA +F0AB +F0AC +F0AD +F0AE +F0AF +F0B0 +F0B1 +F0B2 +F0B3 +F0B4 +F0B5 +F0B6 +F0B7 +F0B8 +F0B9 +F0BA +F0BB +F0BC +F0BD +F0BE +F0BF +F0C0 +F0C1 +F0C2 +F0C3 +F0C4 +F0C5 +F0C6 +F0C7 +F0C8 +F0C9 +F0CA +F0CB +F0CC +F0CD +F0CE +F0CF +F0D0 +F0D1 +F0D2 +F0D3 +F0D4 +F0D5 +F0D6 +F0D7 +F0D8 +F0D9 +F0DA +F0DB +F0DC +F0DD +F0DE +F0DF +F0E0 +F0E1 +F0E2 +F0E3 +F0E4 +F0E5 +F0E6 +F0E7 +F0E8 +F0E9 +F0EA +F0EB +F0EC +F0ED +F0EE +F0EF +F0F0 +F0F1 +F0F2 +F0F3 +F0F4 +F0F5 +F0F6 +F0F7 +F0F8 +F0F9 +F0FA +F0FB +F0FC +F140 +F141 +F142 +F143 +F144 +F145 +F146 +F147 +F148 +F149 +F14A +F14B +F14C +F14D +F14E +F14F +F150 +F151 +F152 +F153 +F154 +F155 +F156 +F157 +F158 +F159 +F15A +F15B +F15C +F15D +F15E +F15F +F160 +F161 +F162 +F163 +F164 +F165 +F166 +F167 +F168 +F169 +F16A +F16B +F16C +F16D +F16E +F16F +F170 +F171 +F172 +F173 +F174 +F175 +F176 +F177 +F178 +F179 +F17A +F17B +F17C +F17D +F17E +F180 +F181 +F182 +F183 +F184 +F185 +F186 +F187 +F188 +F189 +F18A +F18B +F18C +F18D +F18E +F18F +F190 +F191 +F192 +F193 +F194 +F195 +F196 +F197 +F198 +F199 +F19A +F19B +F19C +F19D +F19E +F19F +F1A0 +F1A1 +F1A2 +F1A3 +F1A4 +F1A5 +F1A6 +F1A7 +F1A8 +F1A9 +F1AA +F1AB +F1AC +F1AD +F1AE +F1AF +F1B0 +F1B1 +F1B2 +F1B3 +F1B4 +F1B5 +F1B6 +F1B7 +F1B8 +F1B9 +F1BA +F1BB +F1BC +F1BD +F1BE +F1BF +F1C0 +F1C1 +F1C2 +F1C3 +F1C4 +F1C5 +F1C6 +F1C7 +F1C8 +F1C9 +F1CA +F1CB +F1CC +F1CD +F1CE +F1CF +F1D0 +F1D1 +F1D2 +F1D3 +F1D4 +F1D5 +F1D6 +F1D7 +F1D8 +F1D9 +F1DA +F1DB +F1DC +F1DD +F1DE +F1DF +F1E0 +F1E1 +F1E2 +F1E3 +F1E4 +F1E5 +F1E6 +F1E7 +F1E8 +F1E9 +F1EA +F1EB +F1EC +F1ED +F1EE +F1EF +F1F0 +F1F1 +F1F2 +F1F3 +F1F4 +F1F5 +F1F6 +F1F7 +F1F8 +F1F9 +F1FA +F1FB +F1FC +F240 +F241 +F242 +F243 +F244 +F245 +F246 +F247 +F248 +F249 +F24A +F24B +F24C +F24D +F24E +F24F +F250 +F251 +F252 +F253 +F254 +F255 +F256 +F257 +F258 +F259 +F25A +F25B +F25C +F25D +F25E +F25F +F260 +F261 +F262 +F263 +F264 +F265 +F266 +F267 +F268 +F269 +F26A +F26B +F26C +F26D +F26E +F26F +F270 +F271 +F272 +F273 +F274 +F275 +F276 +F277 +F278 +F279 +F27A +F27B +F27C +F27D +F27E +F280 +F281 +F282 +F283 +F284 +F285 +F286 +F287 +F288 +F289 +F28A +F28B +F28C +F28D +F28E +F28F +F290 +F291 +F292 +F293 +F294 +F295 +F296 +F297 +F298 +F299 +F29A +F29B +F29C +F29D +F29E +F29F +F2A0 +F2A1 +F2A2 +F2A3 +F2A4 +F2A5 +F2A6 +F2A7 +F2A8 +F2A9 +F2AA +F2AB +F2AC +F2AD +F2AE +F2AF +F2B0 +F2B1 +F2B2 +F2B3 +F2B4 +F2B5 +F2B6 +F2B7 +F2B8 +F2B9 +F2BA +F2BB +F2BC +F2BD +F2BE +F2BF +F2C0 +F2C1 +F2C2 +F2C3 +F2C4 +F2C5 +F2C6 +F2C7 +F2C8 +F2C9 +F2CA +F2CB +F2CC +F2CD +F2CE +F2CF +F2D0 +F2D1 +F2D2 +F2D3 +F2D4 +F2D5 +F2D6 +F2D7 +F2D8 +F2D9 +F2DA +F2DB +F2DC +F2DD +F2DE +F2DF +F2E0 +F2E1 +F2E2 +F2E3 +F2E4 +F2E5 +F2E6 +F2E7 +F2E8 +F2E9 +F2EA +F2EB +F2EC +F2ED +F2EE +F2EF +F2F0 +F2F1 +F2F2 +F2F3 +F2F4 +F2F5 +F2F6 +F2F7 +F2F8 +F2F9 +F2FA +F2FB +F2FC +F340 +F341 +F342 +F343 +F344 +F345 +F346 +F347 +F348 +F349 +F34A +F34B +F34C +F34D +F34E +F34F +F350 +F351 +F352 +F353 +F354 +F355 +F356 +F357 +F358 +F359 +F35A +F35B +F35C +F35D +F35E +F35F +F360 +F361 +F362 +F363 +F364 +F365 +F366 +F367 +F368 +F369 +F36A +F36B +F36C +F36D +F36E +F36F +F370 +F371 +F372 +F373 +F374 +F375 +F376 +F377 +F378 +F379 +F37A +F37B +F37C +F37D +F37E +F380 +F381 +F382 +F383 +F384 +F385 +F386 +F387 +F388 +F389 +F38A +F38B +F38C +F38D +F38E +F38F +F390 +F391 +F392 +F393 +F394 +F395 +F396 +F397 +F398 +F399 +F39A +F39B +F39C +F39D +F39E +F39F +F3A0 +F3A1 +F3A2 +F3A3 +F3A4 +F3A5 +F3A6 +F3A7 +F3A8 +F3A9 +F3AA +F3AB +F3AC +F3AD +F3AE +F3AF +F3B0 +F3B1 +F3B2 +F3B3 +F3B4 +F3B5 +F3B6 +F3B7 +F3B8 +F3B9 +F3BA +F3BB +F3BC +F3BD +F3BE +F3BF +F3C0 +F3C1 +F3C2 +F3C3 +F3C4 +F3C5 +F3C6 +F3C7 +F3C8 +F3C9 +F3CA +F3CB +F3CC +F3CD +F3CE +F3CF +F3D0 +F3D1 +F3D2 +F3D3 +F3D4 +F3D5 +F3D6 +F3D7 +F3D8 +F3D9 +F3DA +F3DB +F3DC +F3DD +F3DE +F3DF +F3E0 +F3E1 +F3E2 +F3E3 +F3E4 +F3E5 +F3E6 +F3E7 +F3E8 +F3E9 +F3EA +F3EB +F3EC +F3ED +F3EE +F3EF +F3F0 +F3F1 +F3F2 +F3F3 +F3F4 +F3F5 +F3F6 +F3F7 +F3F8 +F3F9 +F3FA +F3FB +F3FC +F440 +F441 +F442 +F443 +F444 +F445 +F446 +F447 +F448 +F449 +F44A +F44B +F44C +F44D +F44E +F44F +F450 +F451 +F452 +F453 +F454 +F455 +F456 +F457 +F458 +F459 +F45A +F45B +F45C +F45D +F45E +F45F +F460 +F461 +F462 +F463 +F464 +F465 +F466 +F467 +F468 +F469 +F46A +F46B +F46C +F46D +F46E +F46F +F470 +F471 +F472 +F473 +F474 +F475 +F476 +F477 +F478 +F479 +F47A +F47B +F47C +F47D +F47E +F480 +F481 +F482 +F483 +F484 +F485 +F486 +F487 +F488 +F489 +F48A +F48B +F48C +F48D +F48E +F48F +F490 +F491 +F492 +F493 +F494 +F495 +F496 +F497 +F498 +F499 +F49A +F49B +F49C +F49D +F49E +F49F +F4A0 +F4A1 +F4A2 +F4A3 +F4A4 +F4A5 +F4A6 +F4A7 +F4A8 +F4A9 +F4AA +F4AB +F4AC +F4AD +F4AE +F4AF +F4B0 +F4B1 +F4B2 +F4B3 +F4B4 +F4B5 +F4B6 +F4B7 +F4B8 +F4B9 +F4BA +F4BB +F4BC +F4BD +F4BE +F4BF +F4C0 +F4C1 +F4C2 +F4C3 +F4C4 +F4C5 +F4C6 +F4C7 +F4C8 +F4C9 +F4CA +F4CB +F4CC +F4CD +F4CE +F4CF +F4D0 +F4D1 +F4D2 +F4D3 +F4D4 +F4D5 +F4D6 +F4D7 +F4D8 +F4D9 +F4DA +F4DB +F4DC +F4DD +F4DE +F4DF +F4E0 +F4E1 +F4E2 +F4E3 +F4E4 +F4E5 +F4E6 +F4E7 +F4E8 +F4E9 +F4EA +F4EB +F4EC +F4ED +F4EE +F4EF +F4F0 +F4F1 +F4F2 +F4F3 +F4F4 +F4F5 +F4F6 +F4F7 +F4F8 +F4F9 +F4FA +F4FB +F4FC +F540 +F541 +F542 +F543 +F544 +F545 +F546 +F547 +F548 +F549 +F54A +F54B +F54C +F54D +F54E +F54F +F550 +F551 +F552 +F553 +F554 +F555 +F556 +F557 +F558 +F559 +F55A +F55B +F55C +F55D +F55E +F55F +F560 +F561 +F562 +F563 +F564 +F565 +F566 +F567 +F568 +F569 +F56A +F56B +F56C +F56D +F56E +F56F +F570 +F571 +F572 +F573 +F574 +F575 +F576 +F577 +F578 +F579 +F57A +F57B +F57C +F57D +F57E +F580 +F581 +F582 +F583 +F584 +F585 +F586 +F587 +F588 +F589 +F58A +F58B +F58C +F58D +F58E +F58F +F590 +F591 +F592 +F593 +F594 +F595 +F596 +F597 +F598 +F599 +F59A +F59B +F59C +F59D +F59E +F59F +F5A0 +F5A1 +F5A2 +F5A3 +F5A4 +F5A5 +F5A6 +F5A7 +F5A8 +F5A9 +F5AA +F5AB +F5AC +F5AD +F5AE +F5AF +F5B0 +F5B1 +F5B2 +F5B3 +F5B4 +F5B5 +F5B6 +F5B7 +F5B8 +F5B9 +F5BA +F5BB +F5BC +F5BD +F5BE +F5BF +F5C0 +F5C1 +F5C2 +F5C3 +F5C4 +F5C5 +F5C6 +F5C7 +F5C8 +F5C9 +F5CA +F5CB +F5CC +F5CD +F5CE +F5CF +F5D0 +F5D1 +F5D2 +F5D3 +F5D4 +F5D5 +F5D6 +F5D7 +F5D8 +F5D9 +F5DA +F5DB +F5DC +F5DD +F5DE +F5DF +F5E0 +F5E1 +F5E2 +F5E3 +F5E4 +F5E5 +F5E6 +F5E7 +F5E8 +F5E9 +F5EA +F5EB +F5EC +F5ED +F5EE +F5EF +F5F0 +F5F1 +F5F2 +F5F3 +F5F4 +F5F5 +F5F6 +F5F7 +F5F8 +F5F9 +F5FA +F5FB +F5FC +F640 +F641 +F642 +F643 +F644 +F645 +F646 +F647 +F648 +F649 +F64A +F64B +F64C +F64D +F64E +F64F +F650 +F651 +F652 +F653 +F654 +F655 +F656 +F657 +F658 +F659 +F65A +F65B +F65C +F65D +F65E +F65F +F660 +F661 +F662 +F663 +F664 +F665 +F666 +F667 +F668 +F669 +F66A +F66B +F66C +F66D +F66E +F66F +F670 +F671 +F672 +F673 +F674 +F675 +F676 +F677 +F678 +F679 +F67A +F67B +F67C +F67D +F67E +F680 +F681 +F682 +F683 +F684 +F685 +F686 +F687 +F688 +F689 +F68A +F68B +F68C +F68D +F68E +F68F +F690 +F691 +F692 +F693 +F694 +F695 +F696 +F697 +F698 +F699 +F69A +F69B +F69C +F69D +F69E +F69F +F6A0 +F6A1 +F6A2 +F6A3 +F6A4 +F6A5 +F6A6 +F6A7 +F6A8 +F6A9 +F6AA +F6AB +F6AC +F6AD +F6AE +F6AF +F6B0 +F6B1 +F6B2 +F6B3 +F6B4 +F6B5 +F6B6 +F6B7 +F6B8 +F6B9 +F6BA +F6BB +F6BC +F6BD +F6BE +F6BF +F6C0 +F6C1 +F6C2 +F6C3 +F6C4 +F6C5 +F6C6 +F6C7 +F6C8 +F6C9 +F6CA +F6CB +F6CC +F6CD +F6CE +F6CF +F6D0 +F6D1 +F6D2 +F6D3 +F6D4 +F6D5 +F6D6 +F6D7 +F6D8 +F6D9 +F6DA +F6DB +F6DC +F6DD +F6DE +F6DF +F6E0 +F6E1 +F6E2 +F6E3 +F6E4 +F6E5 +F6E6 +F6E7 +F6E8 +F6E9 +F6EA +F6EB +F6EC +F6ED +F6EE +F6EF +F6F0 +F6F1 +F6F2 +F6F3 +F6F4 +F6F5 +F6F6 +F6F7 +F6F8 +F6F9 +F6FA +F6FB +F6FC +F740 +F741 +F742 +F743 +F744 +F745 +F746 +F747 +F748 +F749 +F74A +F74B +F74C +F74D +F74E +F74F +F750 +F751 +F752 +F753 +F754 +F755 +F756 +F757 +F758 +F759 +F75A +F75B +F75C +F75D +F75E +F75F +F760 +F761 +F762 +F763 +F764 +F765 +F766 +F767 +F768 +F769 +F76A +F76B +F76C +F76D +F76E +F76F +F770 +F771 +F772 +F773 +F774 +F775 +F776 +F777 +F778 +F779 +F77A +F77B +F77C +F77D +F77E +F780 +F781 +F782 +F783 +F784 +F785 +F786 +F787 +F788 +F789 +F78A +F78B +F78C +F78D +F78E +F78F +F790 +F791 +F792 +F793 +F794 +F795 +F796 +F797 +F798 +F799 +F79A +F79B +F79C +F79D +F79E +F79F +F7A0 +F7A1 +F7A2 +F7A3 +F7A4 +F7A5 +F7A6 +F7A7 +F7A8 +F7A9 +F7AA +F7AB +F7AC +F7AD +F7AE +F7AF +F7B0 +F7B1 +F7B2 +F7B3 +F7B4 +F7B5 +F7B6 +F7B7 +F7B8 +F7B9 +F7BA +F7BB +F7BC +F7BD +F7BE +F7BF +F7C0 +F7C1 +F7C2 +F7C3 +F7C4 +F7C5 +F7C6 +F7C7 +F7C8 +F7C9 +F7CA +F7CB +F7CC +F7CD +F7CE +F7CF +F7D0 +F7D1 +F7D2 +F7D3 +F7D4 +F7D5 +F7D6 +F7D7 +F7D8 +F7D9 +F7DA +F7DB +F7DC +F7DD +F7DE +F7DF +F7E0 +F7E1 +F7E2 +F7E3 +F7E4 +F7E5 +F7E6 +F7E7 +F7E8 +F7E9 +F7EA +F7EB +F7EC +F7ED +F7EE +F7EF +F7F0 +F7F1 +F7F2 +F7F3 +F7F4 +F7F5 +F7F6 +F7F7 +F7F8 +F7F9 +F7FA +F7FB +F7FC +F840 +F841 +F842 +F843 +F844 +F845 +F846 +F847 +F848 +F849 +F84A +F84B +F84C +F84D +F84E +F84F +F850 +F851 +F852 +F853 +F854 +F855 +F856 +F857 +F858 +F859 +F85A +F85B +F85C +F85D +F85E +F85F +F860 +F861 +F862 +F863 +F864 +F865 +F866 +F867 +F868 +F869 +F86A +F86B +F86C +F86D +F86E +F86F +F870 +F871 +F872 +F873 +F874 +F875 +F876 +F877 +F878 +F879 +F87A +F87B +F87C +F87D +F87E +F880 +F881 +F882 +F883 +F884 +F885 +F886 +F887 +F888 +F889 +F88A +F88B +F88C +F88D +F88E +F88F +F890 +F891 +F892 +F893 +F894 +F895 +F896 +F897 +F898 +F899 +F89A +F89B +F89C +F89D +F89E +F89F +F8A0 +F8A1 +F8A2 +F8A3 +F8A4 +F8A5 +F8A6 +F8A7 +F8A8 +F8A9 +F8AA +F8AB +F8AC +F8AD +F8AE +F8AF +F8B0 +F8B1 +F8B2 +F8B3 +F8B4 +F8B5 +F8B6 +F8B7 +F8B8 +F8B9 +F8BA +F8BB +F8BC +F8BD +F8BE +F8BF +F8C0 +F8C1 +F8C2 +F8C3 +F8C4 +F8C5 +F8C6 +F8C7 +F8C8 +F8C9 +F8CA +F8CB +F8CC +F8CD +F8CE +F8CF +F8D0 +F8D1 +F8D2 +F8D3 +F8D4 +F8D5 +F8D6 +F8D7 +F8D8 +F8D9 +F8DA +F8DB +F8DC +F8DD +F8DE +F8DF +F8E0 +F8E1 +F8E2 +F8E3 +F8E4 +F8E5 +F8E6 +F8E7 +F8E8 +F8E9 +F8EA +F8EB +F8EC +F8ED +F8EE +F8EF +F8F0 +F8F1 +F8F2 +F8F3 +F8F4 +F8F5 +F8F6 +F8F7 +F8F8 +F8F9 +F8FA +F8FB +F8FC +F940 +F941 +F942 +F943 +F944 +F945 +F946 +F947 +F948 +F949 +F94A +F94B +F94C +F94D +F94E +F94F +F950 +F951 +F952 +F953 +F954 +F955 +F956 +F957 +F958 +F959 +F95A +F95B +F95C +F95D +F95E +F95F +F960 +F961 +F962 +F963 +F964 +F965 +F966 +F967 +F968 +F969 +F96A +F96B +F96C +F96D +F96E +F96F +F970 +F971 +F972 +F973 +F974 +F975 +F976 +F977 +F978 +F979 +F97A +F97B +F97C +F97D +F97E +F980 +F981 +F982 +F983 +F984 +F985 +F986 +F987 +F988 +F989 +F98A +F98B +F98C +F98D +F98E +F98F +F990 +F991 +F992 +F993 +F994 +F995 +F996 +F997 +F998 +F999 +F99A +F99B +F99C +F99D +F99E +F99F +F9A0 +F9A1 +F9A2 +F9A3 +F9A4 +F9A5 +F9A6 +F9A7 +F9A8 +F9A9 +F9AA +F9AB +F9AC +F9AD +F9AE +F9AF +F9B0 +F9B1 +F9B2 +F9B3 +F9B4 +F9B5 +F9B6 +F9B7 +F9B8 +F9B9 +F9BA +F9BB +F9BC +F9BD +F9BE +F9BF +F9C0 +F9C1 +F9C2 +F9C3 +F9C4 +F9C5 +F9C6 +F9C7 +F9C8 +F9C9 +F9CA +F9CB +F9CC +F9CD +F9CE +F9CF +F9D0 +F9D1 +F9D2 +F9D3 +F9D4 +F9D5 +F9D6 +F9D7 +F9D8 +F9D9 +F9DA +F9DB +F9DC +F9DD +F9DE +F9DF +F9E0 +F9E1 +F9E2 +F9E3 +F9E4 +F9E5 +F9E6 +F9E7 +F9E8 +F9E9 +F9EA +F9EB +F9EC +F9ED +F9EE +F9EF +F9F0 +F9F1 +F9F2 +F9F3 +F9F4 +F9F5 +F9F6 +F9F7 +F9F8 +F9F9 +F9FA +F9FB +F9FC +FA40 +FA41 +FA42 +FA43 +FA44 +FA45 +FA46 +FA47 +FA48 +FA49 +FA4A +FA4B +FA4C +FA4D +FA4E +FA4F +FA50 +FA51 +FA52 +FA53 +FA54 +FA55 +FA56 +FA57 +FA58 +FA59 +FA5A +FA5B +FA5C +FA5D +FA5E +FA5F +FA60 +FA61 +FA62 +FA63 +FA64 +FA65 +FA66 +FA67 +FA68 +FA69 +FA6A +FA6B +FA6C +FA6D +FA6E +FA6F +FA70 +FA71 +FA72 +FA73 +FA74 +FA75 +FA76 +FA77 +FA78 +FA79 +FA7A +FA7B +FA7C +FA7D +FA7E +FA80 +FA81 +FA82 +FA83 +FA84 +FA85 +FA86 +FA87 +FA88 +FA89 +FA8A +FA8B +FA8C +FA8D +FA8E +FA8F +FA90 +FA91 +FA92 +FA93 +FA94 +FA95 +FA96 +FA97 +FA98 +FA99 +FA9A +FA9B +FA9C +FA9D +FA9E +FA9F +FAA0 +FAA1 +FAA2 +FAA3 +FAA4 +FAA5 +FAA6 +FAA7 +FAA8 +FAA9 +FAAA +FAAB +FAAC +FAAD +FAAE +FAAF +FAB0 +FAB1 +FAB2 +FAB3 +FAB4 +FAB5 +FAB6 +FAB7 +FAB8 +FAB9 +FABA +FABB +FABC +FABD +FABE +FABF +FAC0 +FAC1 +FAC2 +FAC3 +FAC4 +FAC5 +FAC6 +FAC7 +FAC8 +FAC9 +FACA +FACB +FACC +FACD +FACE +FACF +FAD0 +FAD1 +FAD2 +FAD3 +FAD4 +FAD5 +FAD6 +FAD7 +FAD8 +FAD9 +FADA +FADB +FADC +FADD +FADE +FADF +FAE0 +FAE1 +FAE2 +FAE3 +FAE4 +FAE5 +FAE6 +FAE7 +FAE8 +FAE9 +FAEA +FAEB +FAEC +FAED +FAEE +FAEF +FAF0 +FAF1 +FAF2 +FAF3 +FAF4 +FAF5 +FAF6 +FAF7 +FAF8 +FAF9 +FAFA +FAFB +FAFC +FB40 +FB41 +FB42 +FB43 +FB44 +FB45 +FB46 +FB47 +FB48 +FB49 +FB4A +FB4B +FB4C +FB4D +FB4E +FB4F +FB50 +FB51 +FB52 +FB53 +FB54 +FB55 +FB56 +FB57 +FB58 +FB59 +FB5A +FB5B +FB5C +FB5D +FB5E +FB5F +FB60 +FB61 +FB62 +FB63 +FB64 +FB65 +FB66 +FB67 +FB68 +FB69 +FB6A +FB6B +FB6C +FB6D +FB6E +FB6F +FB70 +FB71 +FB72 +FB73 +FB74 +FB75 +FB76 +FB77 +FB78 +FB79 +FB7A +FB7B +FB7C +FB7D +FB7E +FB80 +FB81 +FB82 +FB83 +FB84 +FB85 +FB86 +FB87 +FB88 +FB89 +FB8A +FB8B +FB8C +FB8D +FB8E +FB8F +FB90 +FB91 +FB92 +FB93 +FB94 +FB95 +FB96 +FB97 +FB98 +FB99 +FB9A +FB9B +FB9C +FB9D +FB9E +FB9F +FBA0 +FBA1 +FBA2 +FBA3 +FBA4 +FBA5 +FBA6 +FBA7 +FBA8 +FBA9 +FBAA +FBAB +FBAC +FBAD +FBAE +FBAF +FBB0 +FBB1 +FBB2 +FBB3 +FBB4 +FBB5 +FBB6 +FBB7 +FBB8 +FBB9 +FBBA +FBBB +FBBC +FBBD +FBBE +FBBF +FBC0 +FBC1 +FBC2 +FBC3 +FBC4 +FBC5 +FBC6 +FBC7 +FBC8 +FBC9 +FBCA +FBCB +FBCC +FBCD +FBCE +FBCF +FBD0 +FBD1 +FBD2 +FBD3 +FBD4 +FBD5 +FBD6 +FBD7 +FBD8 +FBD9 +FBDA +FBDB +FBDC +FBDD +FBDE +FBDF +FBE0 +FBE1 +FBE2 +FBE3 +FBE4 +FBE5 +FBE6 +FBE7 +FBE8 +FBE9 +FBEA +FBEB +FBEC +FBED +FBEE +FBEF +FBF0 +FBF1 +FBF2 +FBF3 +FBF4 +FBF5 +FBF6 +FBF7 +FBF8 +FBF9 +FBFA +FBFB +FBFC +FC40 +FC41 +FC42 +FC43 +FC44 +FC45 +FC46 +FC47 +FC48 +FC49 +FC4A +FC4B +CREATE TABLE t2 SELECT CONVERT(c1 USING ucs2) AS c1 FROM t1 ORDER BY BINARY c1; +SELECT HEX(c1) FROM t2 ORDER BY BINARY c1; +HEX(c1) +0005 +007E +2015 +2116 +2116 +2121 +2121 +2160 +2160 +2161 +2161 +2162 +2162 +2163 +2163 +2164 +2164 +2165 +2165 +2166 +2166 +2167 +2167 +2168 +2168 +2169 +2169 +2170 +2170 +2171 +2171 +2172 +2172 +2173 +2173 +2174 +2174 +2175 +2175 +2176 +2176 +2177 +2177 +2178 +2178 +2179 +2179 +2211 +221A +221F +2220 +2225 +2229 +222A +222B +222E +2235 +2235 +2252 +2261 +22A5 +22BF +2460 +2461 +2462 +2463 +2464 +2465 +2466 +2467 +2468 +2469 +246A +246B +246C +246D +246E +246F +2470 +2471 +2472 +2473 +301D +301F +3231 +3231 +3232 +3239 +32A4 +32A5 +32A6 +32A7 +32A8 +3303 +330D +3314 +3318 +3322 +3323 +3326 +3327 +332B +3336 +333B +3349 +334A +334D +3351 +3357 +337B +337C +337D +337E +338E +338F +339C +339D +339E +33A1 +33C4 +33CD +4E28 +4E28 +4EE1 +4EE1 +4EFC +4EFC +4F00 +4F00 +4F03 +4F03 +4F39 +4F39 +4F56 +4F56 +4F8A +4F8A +4F92 +4F92 +4F94 +4F94 +4F9A +4F9A +4FC9 +4FC9 +4FCD +4FCD +4FFF +4FFF +501E +501E +5022 +5022 +5040 +5040 +5042 +5042 +5046 +5046 +5070 +5070 +5094 +5094 +50D8 +50D8 +50F4 +50F4 +514A +514A +5164 +5164 +519D +519D +51BE +51BE +51EC +51EC +5215 +5215 +529C +529C +52A6 +52A6 +52AF +52AF +52C0 +52C0 +52DB +52DB +5300 +5300 +5307 +5307 +5324 +5324 +5372 +5372 +5393 +5393 +53B2 +53B2 +53DD +53DD +548A +548A +549C +549C +54A9 +54A9 +54FF +54FF +5586 +5586 +5759 +5759 +5765 +5765 +57AC +57AC +57C7 +57C7 +57C8 +57C8 +589E +589E +58B2 +58B2 +590B +590B +5953 +5953 +595B +595B +595D +595D +5963 +5963 +59A4 +59A4 +59BA +59BA +5B56 +5B56 +5BC0 +5BC0 +5BD8 +5BD8 +5BEC +5BEC +5C1E +5C1E +5CA6 +5CA6 +5CBA +5CBA +5CF5 +5CF5 +5D27 +5D27 +5D42 +5D42 +5D53 +5D53 +5D6D +5D6D +5DB8 +5DB8 +5DB9 +5DB9 +5DD0 +5DD0 +5F21 +5F21 +5F34 +5F34 +5F45 +5F45 +5F67 +5F67 +5FB7 +5FB7 +5FDE +5FDE +605D +605D +6085 +6085 +608A +608A +60D5 +60D5 +60DE +60DE +60F2 +60F2 +6111 +6111 +6120 +6120 +6130 +6130 +6137 +6137 +6198 +6198 +6213 +6213 +62A6 +62A6 +63F5 +63F5 +6460 +6460 +649D +649D +64CE +64CE +654E +654E +6600 +6600 +6609 +6609 +6615 +6615 +661E +661E +6624 +6624 +662E +662E +6631 +6631 +663B +663B +6657 +6657 +6659 +6659 +6665 +6665 +6673 +6673 +6699 +6699 +66A0 +66A0 +66B2 +66B2 +66BF +66BF +66FA +66FA +66FB +66FB +670E +670E +6766 +6766 +67BB +67BB +67C0 +67C0 +6801 +6801 +6844 +6844 +6852 +6852 +68C8 +68C8 +68CF +68CF +6968 +6968 +6998 +6998 +69E2 +69E2 +6A30 +6A30 +6A46 +6A46 +6A6B +6A6B +6A73 +6A73 +6A7E +6A7E +6AE2 +6AE2 +6AE4 +6AE4 +6BD6 +6BD6 +6C3F +6C3F +6C5C +6C5C +6C6F +6C6F +6C86 +6C86 +6CDA +6CDA +6D04 +6D04 +6D6F +6D6F +6D87 +6D87 +6D96 +6D96 +6DAC +6DAC +6DCF +6DCF +6DF2 +6DF2 +6DF8 +6DF8 +6DFC +6DFC +6E27 +6E27 +6E39 +6E39 +6E3C +6E3C +6E5C +6E5C +6EBF +6EBF +6F88 +6F88 +6FB5 +6FB5 +6FF5 +6FF5 +7005 +7005 +7007 +7007 +7028 +7028 +7085 +7085 +70AB +70AB +70BB +70BB +7104 +7104 +710F +710F +7146 +7146 +7147 +7147 +715C +715C +71C1 +71C1 +71FE +71FE +72B1 +72B1 +72BE +72BE +7324 +7324 +7377 +7377 +73BD +73BD +73C9 +73C9 +73D2 +73D2 +73D6 +73D6 +73E3 +73E3 +73F5 +73F5 +7407 +7407 +7426 +7426 +7429 +7429 +742A +742A +742E +742E +7462 +7462 +7489 +7489 +749F +749F +7501 +7501 +752F +752F +756F +756F +7682 +7682 +769B +769B +769C +769C +769E +769E +76A6 +76A6 +7746 +7746 +7821 +7821 +784E +784E +7864 +7864 +787A +787A +7930 +7930 +7994 +7994 +799B +799B +7AD1 +7AD1 +7AE7 +7AE7 +7AEB +7AEB +7B9E +7B9E +7D48 +7D48 +7D5C +7D5C +7DA0 +7DA0 +7DB7 +7DB7 +7DD6 +7DD6 +7E52 +7E52 +7E8A +7E8A +7F47 +7F47 +7FA1 +7FA1 +8301 +8301 +8362 +8362 +837F +837F +83C7 +83C7 +83F6 +83F6 +8448 +8448 +84B4 +84B4 +84DC +84DC +8553 +8553 +8559 +8559 +856B +856B +85B0 +85B0 +8807 +8807 +88F5 +88F5 +891C +891C +8A12 +8A12 +8A37 +8A37 +8A79 +8A79 +8AA7 +8AA7 +8ABE +8ABE +8ADF +8ADF +8AF6 +8AF6 +8B53 +8B53 +8B7F +8B7F +8CF0 +8CF0 +8CF4 +8CF4 +8D12 +8D12 +8D76 +8D76 +8ECF +8ECF +9067 +9067 +90DE +90DE +9115 +9115 +9127 +9127 +91D7 +91D7 +91DA +91DA +91DE +91DE +91E4 +91E4 +91E5 +91E5 +91ED +91ED +91EE +91EE +9206 +9206 +920A +920A +9210 +9210 +9239 +9239 +923A +923A +923C +923C +9240 +9240 +924E +924E +9251 +9251 +9259 +9259 +9267 +9267 +9277 +9277 +9278 +9278 +9288 +9288 +92A7 +92A7 +92D0 +92D0 +92D3 +92D3 +92D5 +92D5 +92D7 +92D7 +92D9 +92D9 +92E0 +92E0 +92E7 +92E7 +92F9 +92F9 +92FB +92FB +92FF +92FF +9302 +9302 +931D +931D +931E +931E +9321 +9321 +9325 +9325 +9348 +9348 +9357 +9357 +9370 +9370 +93A4 +93A4 +93C6 +93C6 +93DE +93DE +93F8 +93F8 +9431 +9431 +9445 +9445 +9448 +9448 +9592 +9592 +969D +969D +96AF +96AF +9733 +9733 +973B +973B +9743 +9743 +974D +974D +974F +974F +9751 +9751 +9755 +9755 +9857 +9857 +9865 +9865 +9927 +9927 +999E +999E +9A4E +9A4E +9AD9 +9AD9 +9ADC +9ADC +9B72 +9B72 +9B75 +9B75 +9B8F +9B8F +9BB1 +9BB1 +9BBB +9BBB +9C00 +9C00 +9D6B +9D6B +9D70 +9D70 +9E19 +9E19 +9ED1 +9ED1 +E000 +E001 +E002 +E003 +E004 +E005 +E006 +E007 +E008 +E009 +E00A +E00B +E00C +E00D +E00E +E00F +E010 +E011 +E012 +E013 +E014 +E015 +E016 +E017 +E018 +E019 +E01A +E01B +E01C +E01D +E01E +E01F +E020 +E021 +E022 +E023 +E024 +E025 +E026 +E027 +E028 +E029 +E02A +E02B +E02C +E02D +E02E +E02F +E030 +E031 +E032 +E033 +E034 +E035 +E036 +E037 +E038 +E039 +E03A +E03B +E03C +E03D +E03E +E03F +E040 +E041 +E042 +E043 +E044 +E045 +E046 +E047 +E048 +E049 +E04A +E04B +E04C +E04D +E04E +E04F +E050 +E051 +E052 +E053 +E054 +E055 +E056 +E057 +E058 +E059 +E05A +E05B +E05C +E05D +E05E +E05F +E060 +E061 +E062 +E063 +E064 +E065 +E066 +E067 +E068 +E069 +E06A +E06B +E06C +E06D +E06E +E06F +E070 +E071 +E072 +E073 +E074 +E075 +E076 +E077 +E078 +E079 +E07A +E07B +E07C +E07D +E07E +E07F +E080 +E081 +E082 +E083 +E084 +E085 +E086 +E087 +E088 +E089 +E08A +E08B +E08C +E08D +E08E +E08F +E090 +E091 +E092 +E093 +E094 +E095 +E096 +E097 +E098 +E099 +E09A +E09B +E09C +E09D +E09E +E09F +E0A0 +E0A1 +E0A2 +E0A3 +E0A4 +E0A5 +E0A6 +E0A7 +E0A8 +E0A9 +E0AA +E0AB +E0AC +E0AD +E0AE +E0AF +E0B0 +E0B1 +E0B2 +E0B3 +E0B4 +E0B5 +E0B6 +E0B7 +E0B8 +E0B9 +E0BA +E0BB +E0BC +E0BD +E0BE +E0BF +E0C0 +E0C1 +E0C2 +E0C3 +E0C4 +E0C5 +E0C6 +E0C7 +E0C8 +E0C9 +E0CA +E0CB +E0CC +E0CD +E0CE +E0CF +E0D0 +E0D1 +E0D2 +E0D3 +E0D4 +E0D5 +E0D6 +E0D7 +E0D8 +E0D9 +E0DA +E0DB +E0DC +E0DD +E0DE +E0DF +E0E0 +E0E1 +E0E2 +E0E3 +E0E4 +E0E5 +E0E6 +E0E7 +E0E8 +E0E9 +E0EA +E0EB +E0EC +E0ED +E0EE +E0EF +E0F0 +E0F1 +E0F2 +E0F3 +E0F4 +E0F5 +E0F6 +E0F7 +E0F8 +E0F9 +E0FA +E0FB +E0FC +E0FD +E0FE +E0FF +E100 +E101 +E102 +E103 +E104 +E105 +E106 +E107 +E108 +E109 +E10A +E10B +E10C +E10D +E10E +E10F +E110 +E111 +E112 +E113 +E114 +E115 +E116 +E117 +E118 +E119 +E11A +E11B +E11C +E11D +E11E +E11F +E120 +E121 +E122 +E123 +E124 +E125 +E126 +E127 +E128 +E129 +E12A +E12B +E12C +E12D +E12E +E12F +E130 +E131 +E132 +E133 +E134 +E135 +E136 +E137 +E138 +E139 +E13A +E13B +E13C +E13D +E13E +E13F +E140 +E141 +E142 +E143 +E144 +E145 +E146 +E147 +E148 +E149 +E14A +E14B +E14C +E14D +E14E +E14F +E150 +E151 +E152 +E153 +E154 +E155 +E156 +E157 +E158 +E159 +E15A +E15B +E15C +E15D +E15E +E15F +E160 +E161 +E162 +E163 +E164 +E165 +E166 +E167 +E168 +E169 +E16A +E16B +E16C +E16D +E16E +E16F +E170 +E171 +E172 +E173 +E174 +E175 +E176 +E177 +E178 +E179 +E17A +E17B +E17C +E17D +E17E +E17F +E180 +E181 +E182 +E183 +E184 +E185 +E186 +E187 +E188 +E189 +E18A +E18B +E18C +E18D +E18E +E18F +E190 +E191 +E192 +E193 +E194 +E195 +E196 +E197 +E198 +E199 +E19A +E19B +E19C +E19D +E19E +E19F +E1A0 +E1A1 +E1A2 +E1A3 +E1A4 +E1A5 +E1A6 +E1A7 +E1A8 +E1A9 +E1AA +E1AB +E1AC +E1AD +E1AE +E1AF +E1B0 +E1B1 +E1B2 +E1B3 +E1B4 +E1B5 +E1B6 +E1B7 +E1B8 +E1B9 +E1BA +E1BB +E1BC +E1BD +E1BE +E1BF +E1C0 +E1C1 +E1C2 +E1C3 +E1C4 +E1C5 +E1C6 +E1C7 +E1C8 +E1C9 +E1CA +E1CB +E1CC +E1CD +E1CE +E1CF +E1D0 +E1D1 +E1D2 +E1D3 +E1D4 +E1D5 +E1D6 +E1D7 +E1D8 +E1D9 +E1DA +E1DB +E1DC +E1DD +E1DE +E1DF +E1E0 +E1E1 +E1E2 +E1E3 +E1E4 +E1E5 +E1E6 +E1E7 +E1E8 +E1E9 +E1EA +E1EB +E1EC +E1ED +E1EE +E1EF +E1F0 +E1F1 +E1F2 +E1F3 +E1F4 +E1F5 +E1F6 +E1F7 +E1F8 +E1F9 +E1FA +E1FB +E1FC +E1FD +E1FE +E1FF +E200 +E201 +E202 +E203 +E204 +E205 +E206 +E207 +E208 +E209 +E20A +E20B +E20C +E20D +E20E +E20F +E210 +E211 +E212 +E213 +E214 +E215 +E216 +E217 +E218 +E219 +E21A +E21B +E21C +E21D +E21E +E21F +E220 +E221 +E222 +E223 +E224 +E225 +E226 +E227 +E228 +E229 +E22A +E22B +E22C +E22D +E22E +E22F +E230 +E231 +E232 +E233 +E234 +E235 +E236 +E237 +E238 +E239 +E23A +E23B +E23C +E23D +E23E +E23F +E240 +E241 +E242 +E243 +E244 +E245 +E246 +E247 +E248 +E249 +E24A +E24B +E24C +E24D +E24E +E24F +E250 +E251 +E252 +E253 +E254 +E255 +E256 +E257 +E258 +E259 +E25A +E25B +E25C +E25D +E25E +E25F +E260 +E261 +E262 +E263 +E264 +E265 +E266 +E267 +E268 +E269 +E26A +E26B +E26C +E26D +E26E +E26F +E270 +E271 +E272 +E273 +E274 +E275 +E276 +E277 +E278 +E279 +E27A +E27B +E27C +E27D +E27E +E27F +E280 +E281 +E282 +E283 +E284 +E285 +E286 +E287 +E288 +E289 +E28A +E28B +E28C +E28D +E28E +E28F +E290 +E291 +E292 +E293 +E294 +E295 +E296 +E297 +E298 +E299 +E29A +E29B +E29C +E29D +E29E +E29F +E2A0 +E2A1 +E2A2 +E2A3 +E2A4 +E2A5 +E2A6 +E2A7 +E2A8 +E2A9 +E2AA +E2AB +E2AC +E2AD +E2AE +E2AF +E2B0 +E2B1 +E2B2 +E2B3 +E2B4 +E2B5 +E2B6 +E2B7 +E2B8 +E2B9 +E2BA +E2BB +E2BC +E2BD +E2BE +E2BF +E2C0 +E2C1 +E2C2 +E2C3 +E2C4 +E2C5 +E2C6 +E2C7 +E2C8 +E2C9 +E2CA +E2CB +E2CC +E2CD +E2CE +E2CF +E2D0 +E2D1 +E2D2 +E2D3 +E2D4 +E2D5 +E2D6 +E2D7 +E2D8 +E2D9 +E2DA +E2DB +E2DC +E2DD +E2DE +E2DF +E2E0 +E2E1 +E2E2 +E2E3 +E2E4 +E2E5 +E2E6 +E2E7 +E2E8 +E2E9 +E2EA +E2EB +E2EC +E2ED +E2EE +E2EF +E2F0 +E2F1 +E2F2 +E2F3 +E2F4 +E2F5 +E2F6 +E2F7 +E2F8 +E2F9 +E2FA +E2FB +E2FC +E2FD +E2FE +E2FF +E300 +E301 +E302 +E303 +E304 +E305 +E306 +E307 +E308 +E309 +E30A +E30B +E30C +E30D +E30E +E30F +E310 +E311 +E312 +E313 +E314 +E315 +E316 +E317 +E318 +E319 +E31A +E31B +E31C +E31D +E31E +E31F +E320 +E321 +E322 +E323 +E324 +E325 +E326 +E327 +E328 +E329 +E32A +E32B +E32C +E32D +E32E +E32F +E330 +E331 +E332 +E333 +E334 +E335 +E336 +E337 +E338 +E339 +E33A +E33B +E33C +E33D +E33E +E33F +E340 +E341 +E342 +E343 +E344 +E345 +E346 +E347 +E348 +E349 +E34A +E34B +E34C +E34D +E34E +E34F +E350 +E351 +E352 +E353 +E354 +E355 +E356 +E357 +E358 +E359 +E35A +E35B +E35C +E35D +E35E +E35F +E360 +E361 +E362 +E363 +E364 +E365 +E366 +E367 +E368 +E369 +E36A +E36B +E36C +E36D +E36E +E36F +E370 +E371 +E372 +E373 +E374 +E375 +E376 +E377 +E378 +E379 +E37A +E37B +E37C +E37D +E37E +E37F +E380 +E381 +E382 +E383 +E384 +E385 +E386 +E387 +E388 +E389 +E38A +E38B +E38C +E38D +E38E +E38F +E390 +E391 +E392 +E393 +E394 +E395 +E396 +E397 +E398 +E399 +E39A +E39B +E39C +E39D +E39E +E39F +E3A0 +E3A1 +E3A2 +E3A3 +E3A4 +E3A5 +E3A6 +E3A7 +E3A8 +E3A9 +E3AA +E3AB +E3AC +E3AD +E3AE +E3AF +E3B0 +E3B1 +E3B2 +E3B3 +E3B4 +E3B5 +E3B6 +E3B7 +E3B8 +E3B9 +E3BA +E3BB +E3BC +E3BD +E3BE +E3BF +E3C0 +E3C1 +E3C2 +E3C3 +E3C4 +E3C5 +E3C6 +E3C7 +E3C8 +E3C9 +E3CA +E3CB +E3CC +E3CD +E3CE +E3CF +E3D0 +E3D1 +E3D2 +E3D3 +E3D4 +E3D5 +E3D6 +E3D7 +E3D8 +E3D9 +E3DA +E3DB +E3DC +E3DD +E3DE +E3DF +E3E0 +E3E1 +E3E2 +E3E3 +E3E4 +E3E5 +E3E6 +E3E7 +E3E8 +E3E9 +E3EA +E3EB +E3EC +E3ED +E3EE +E3EF +E3F0 +E3F1 +E3F2 +E3F3 +E3F4 +E3F5 +E3F6 +E3F7 +E3F8 +E3F9 +E3FA +E3FB +E3FC +E3FD +E3FE +E3FF +E400 +E401 +E402 +E403 +E404 +E405 +E406 +E407 +E408 +E409 +E40A +E40B +E40C +E40D +E40E +E40F +E410 +E411 +E412 +E413 +E414 +E415 +E416 +E417 +E418 +E419 +E41A +E41B +E41C +E41D +E41E +E41F +E420 +E421 +E422 +E423 +E424 +E425 +E426 +E427 +E428 +E429 +E42A +E42B +E42C +E42D +E42E +E42F +E430 +E431 +E432 +E433 +E434 +E435 +E436 +E437 +E438 +E439 +E43A +E43B +E43C +E43D +E43E +E43F +E440 +E441 +E442 +E443 +E444 +E445 +E446 +E447 +E448 +E449 +E44A +E44B +E44C +E44D +E44E +E44F +E450 +E451 +E452 +E453 +E454 +E455 +E456 +E457 +E458 +E459 +E45A +E45B +E45C +E45D +E45E +E45F +E460 +E461 +E462 +E463 +E464 +E465 +E466 +E467 +E468 +E469 +E46A +E46B +E46C +E46D +E46E +E46F +E470 +E471 +E472 +E473 +E474 +E475 +E476 +E477 +E478 +E479 +E47A +E47B +E47C +E47D +E47E +E47F +E480 +E481 +E482 +E483 +E484 +E485 +E486 +E487 +E488 +E489 +E48A +E48B +E48C +E48D +E48E +E48F +E490 +E491 +E492 +E493 +E494 +E495 +E496 +E497 +E498 +E499 +E49A +E49B +E49C +E49D +E49E +E49F +E4A0 +E4A1 +E4A2 +E4A3 +E4A4 +E4A5 +E4A6 +E4A7 +E4A8 +E4A9 +E4AA +E4AB +E4AC +E4AD +E4AE +E4AF +E4B0 +E4B1 +E4B2 +E4B3 +E4B4 +E4B5 +E4B6 +E4B7 +E4B8 +E4B9 +E4BA +E4BB +E4BC +E4BD +E4BE +E4BF +E4C0 +E4C1 +E4C2 +E4C3 +E4C4 +E4C5 +E4C6 +E4C7 +E4C8 +E4C9 +E4CA +E4CB +E4CC +E4CD +E4CE +E4CF +E4D0 +E4D1 +E4D2 +E4D3 +E4D4 +E4D5 +E4D6 +E4D7 +E4D8 +E4D9 +E4DA +E4DB +E4DC +E4DD +E4DE +E4DF +E4E0 +E4E1 +E4E2 +E4E3 +E4E4 +E4E5 +E4E6 +E4E7 +E4E8 +E4E9 +E4EA +E4EB +E4EC +E4ED +E4EE +E4EF +E4F0 +E4F1 +E4F2 +E4F3 +E4F4 +E4F5 +E4F6 +E4F7 +E4F8 +E4F9 +E4FA +E4FB +E4FC +E4FD +E4FE +E4FF +E500 +E501 +E502 +E503 +E504 +E505 +E506 +E507 +E508 +E509 +E50A +E50B +E50C +E50D +E50E +E50F +E510 +E511 +E512 +E513 +E514 +E515 +E516 +E517 +E518 +E519 +E51A +E51B +E51C +E51D +E51E +E51F +E520 +E521 +E522 +E523 +E524 +E525 +E526 +E527 +E528 +E529 +E52A +E52B +E52C +E52D +E52E +E52F +E530 +E531 +E532 +E533 +E534 +E535 +E536 +E537 +E538 +E539 +E53A +E53B +E53C +E53D +E53E +E53F +E540 +E541 +E542 +E543 +E544 +E545 +E546 +E547 +E548 +E549 +E54A +E54B +E54C +E54D +E54E +E54F +E550 +E551 +E552 +E553 +E554 +E555 +E556 +E557 +E558 +E559 +E55A +E55B +E55C +E55D +E55E +E55F +E560 +E561 +E562 +E563 +E564 +E565 +E566 +E567 +E568 +E569 +E56A +E56B +E56C +E56D +E56E +E56F +E570 +E571 +E572 +E573 +E574 +E575 +E576 +E577 +E578 +E579 +E57A +E57B +E57C +E57D +E57E +E57F +E580 +E581 +E582 +E583 +E584 +E585 +E586 +E587 +E588 +E589 +E58A +E58B +E58C +E58D +E58E +E58F +E590 +E591 +E592 +E593 +E594 +E595 +E596 +E597 +E598 +E599 +E59A +E59B +E59C +E59D +E59E +E59F +E5A0 +E5A1 +E5A2 +E5A3 +E5A4 +E5A5 +E5A6 +E5A7 +E5A8 +E5A9 +E5AA +E5AB +E5AC +E5AD +E5AE +E5AF +E5B0 +E5B1 +E5B2 +E5B3 +E5B4 +E5B5 +E5B6 +E5B7 +E5B8 +E5B9 +E5BA +E5BB +E5BC +E5BD +E5BE +E5BF +E5C0 +E5C1 +E5C2 +E5C3 +E5C4 +E5C5 +E5C6 +E5C7 +E5C8 +E5C9 +E5CA +E5CB +E5CC +E5CD +E5CE +E5CF +E5D0 +E5D1 +E5D2 +E5D3 +E5D4 +E5D5 +E5D6 +E5D7 +E5D8 +E5D9 +E5DA +E5DB +E5DC +E5DD +E5DE +E5DF +E5E0 +E5E1 +E5E2 +E5E3 +E5E4 +E5E5 +E5E6 +E5E7 +E5E8 +E5E9 +E5EA +E5EB +E5EC +E5ED +E5EE +E5EF +E5F0 +E5F1 +E5F2 +E5F3 +E5F4 +E5F5 +E5F6 +E5F7 +E5F8 +E5F9 +E5FA +E5FB +E5FC +E5FD +E5FE +E5FF +E600 +E601 +E602 +E603 +E604 +E605 +E606 +E607 +E608 +E609 +E60A +E60B +E60C +E60D +E60E +E60F +E610 +E611 +E612 +E613 +E614 +E615 +E616 +E617 +E618 +E619 +E61A +E61B +E61C +E61D +E61E +E61F +E620 +E621 +E622 +E623 +E624 +E625 +E626 +E627 +E628 +E629 +E62A +E62B +E62C +E62D +E62E +E62F +E630 +E631 +E632 +E633 +E634 +E635 +E636 +E637 +E638 +E639 +E63A +E63B +E63C +E63D +E63E +E63F +E640 +E641 +E642 +E643 +E644 +E645 +E646 +E647 +E648 +E649 +E64A +E64B +E64C +E64D +E64E +E64F +E650 +E651 +E652 +E653 +E654 +E655 +E656 +E657 +E658 +E659 +E65A +E65B +E65C +E65D +E65E +E65F +E660 +E661 +E662 +E663 +E664 +E665 +E666 +E667 +E668 +E669 +E66A +E66B +E66C +E66D +E66E +E66F +E670 +E671 +E672 +E673 +E674 +E675 +E676 +E677 +E678 +E679 +E67A +E67B +E67C +E67D +E67E +E67F +E680 +E681 +E682 +E683 +E684 +E685 +E686 +E687 +E688 +E689 +E68A +E68B +E68C +E68D +E68E +E68F +E690 +E691 +E692 +E693 +E694 +E695 +E696 +E697 +E698 +E699 +E69A +E69B +E69C +E69D +E69E +E69F +E6A0 +E6A1 +E6A2 +E6A3 +E6A4 +E6A5 +E6A6 +E6A7 +E6A8 +E6A9 +E6AA +E6AB +E6AC +E6AD +E6AE +E6AF +E6B0 +E6B1 +E6B2 +E6B3 +E6B4 +E6B5 +E6B6 +E6B7 +E6B8 +E6B9 +E6BA +E6BB +E6BC +E6BD +E6BE +E6BF +E6C0 +E6C1 +E6C2 +E6C3 +E6C4 +E6C5 +E6C6 +E6C7 +E6C8 +E6C9 +E6CA +E6CB +E6CC +E6CD +E6CE +E6CF +E6D0 +E6D1 +E6D2 +E6D3 +E6D4 +E6D5 +E6D6 +E6D7 +E6D8 +E6D9 +E6DA +E6DB +E6DC +E6DD +E6DE +E6DF +E6E0 +E6E1 +E6E2 +E6E3 +E6E4 +E6E5 +E6E6 +E6E7 +E6E8 +E6E9 +E6EA +E6EB +E6EC +E6ED +E6EE +E6EF +E6F0 +E6F1 +E6F2 +E6F3 +E6F4 +E6F5 +E6F6 +E6F7 +E6F8 +E6F9 +E6FA +E6FB +E6FC +E6FD +E6FE +E6FF +E700 +E701 +E702 +E703 +E704 +E705 +E706 +E707 +E708 +E709 +E70A +E70B +E70C +E70D +E70E +E70F +E710 +E711 +E712 +E713 +E714 +E715 +E716 +E717 +E718 +E719 +E71A +E71B +E71C +E71D +E71E +E71F +E720 +E721 +E722 +E723 +E724 +E725 +E726 +E727 +E728 +E729 +E72A +E72B +E72C +E72D +E72E +E72F +E730 +E731 +E732 +E733 +E734 +E735 +E736 +E737 +E738 +E739 +E73A +E73B +E73C +E73D +E73E +E73F +E740 +E741 +E742 +E743 +E744 +E745 +E746 +E747 +E748 +E749 +E74A +E74B +E74C +E74D +E74E +E74F +E750 +E751 +E752 +E753 +E754 +E755 +E756 +E757 +F929 +F929 +F9DC +F9DC +FA0E +FA0E +FA0F +FA0F +FA10 +FA10 +FA11 +FA11 +FA12 +FA12 +FA13 +FA13 +FA14 +FA14 +FA15 +FA15 +FA16 +FA16 +FA17 +FA17 +FA18 +FA18 +FA19 +FA19 +FA1A +FA1A +FA1B +FA1B +FA1C +FA1C +FA1D +FA1D +FA1E +FA1E +FA1F +FA1F +FA20 +FA20 +FA21 +FA21 +FA22 +FA22 +FA23 +FA23 +FA24 +FA24 +FA25 +FA25 +FA26 +FA26 +FA27 +FA27 +FA28 +FA28 +FA29 +FA29 +FA2A +FA2A +FA2B +FA2B +FA2C +FA2C +FA2D +FA2D +FF02 +FF02 +FF07 +FF07 +FF0D +FF3C +FF5E +FFE0 +FFE1 +FFE2 +FFE2 +FFE2 +FFE4 +FFE4 +CREATE TABLE t3 SELECT CONVERT(c1 USING cp932) AS c1 FROM t2 ORDER BY BINARY c1; +SELECT HEX(c1) FROM t3 ORDER BY BINARY c1; +HEX(c1) +05 +7E +815C +815F +8160 +8161 +817C +8191 +8192 +81BE +81BF +81CA +81CA +81CA +81DA +81DB +81DF +81E0 +81E3 +81E6 +81E6 +81E7 +8740 +8741 +8742 +8743 +8744 +8745 +8746 +8747 +8748 +8749 +874A +874B +874C +874D +874E +874F +8750 +8751 +8752 +8753 +8754 +8754 +8755 +8755 +8756 +8756 +8757 +8757 +8758 +8758 +8759 +8759 +875A +875A +875B +875B +875C +875C +875D +875D +875F +8760 +8761 +8762 +8763 +8764 +8765 +8766 +8767 +8768 +8769 +876A +876B +876C +876D +876E +876F +8770 +8771 +8772 +8773 +8774 +8775 +877E +8780 +8781 +8782 +8782 +8783 +8784 +8784 +8785 +8786 +8787 +8788 +8789 +878A +878A +878B +878C +878D +878E +878F +8793 +8794 +8798 +8799 +F040 +F041 +F042 +F043 +F044 +F045 +F046 +F047 +F048 +F049 +F04A +F04B +F04C +F04D +F04E +F04F +F050 +F051 +F052 +F053 +F054 +F055 +F056 +F057 +F058 +F059 +F05A +F05B +F05C +F05D +F05E +F05F +F060 +F061 +F062 +F063 +F064 +F065 +F066 +F067 +F068 +F069 +F06A +F06B +F06C +F06D +F06E +F06F +F070 +F071 +F072 +F073 +F074 +F075 +F076 +F077 +F078 +F079 +F07A +F07B +F07C +F07D +F07E +F080 +F081 +F082 +F083 +F084 +F085 +F086 +F087 +F088 +F089 +F08A +F08B +F08C +F08D +F08E +F08F +F090 +F091 +F092 +F093 +F094 +F095 +F096 +F097 +F098 +F099 +F09A +F09B +F09C +F09D +F09E +F09F +F0A0 +F0A1 +F0A2 +F0A3 +F0A4 +F0A5 +F0A6 +F0A7 +F0A8 +F0A9 +F0AA +F0AB +F0AC +F0AD +F0AE +F0AF +F0B0 +F0B1 +F0B2 +F0B3 +F0B4 +F0B5 +F0B6 +F0B7 +F0B8 +F0B9 +F0BA +F0BB +F0BC +F0BD +F0BE +F0BF +F0C0 +F0C1 +F0C2 +F0C3 +F0C4 +F0C5 +F0C6 +F0C7 +F0C8 +F0C9 +F0CA +F0CB +F0CC +F0CD +F0CE +F0CF +F0D0 +F0D1 +F0D2 +F0D3 +F0D4 +F0D5 +F0D6 +F0D7 +F0D8 +F0D9 +F0DA +F0DB +F0DC +F0DD +F0DE +F0DF +F0E0 +F0E1 +F0E2 +F0E3 +F0E4 +F0E5 +F0E6 +F0E7 +F0E8 +F0E9 +F0EA +F0EB +F0EC +F0ED +F0EE +F0EF +F0F0 +F0F1 +F0F2 +F0F3 +F0F4 +F0F5 +F0F6 +F0F7 +F0F8 +F0F9 +F0FA +F0FB +F0FC +F140 +F141 +F142 +F143 +F144 +F145 +F146 +F147 +F148 +F149 +F14A +F14B +F14C +F14D +F14E +F14F +F150 +F151 +F152 +F153 +F154 +F155 +F156 +F157 +F158 +F159 +F15A +F15B +F15C +F15D +F15E +F15F +F160 +F161 +F162 +F163 +F164 +F165 +F166 +F167 +F168 +F169 +F16A +F16B +F16C +F16D +F16E +F16F +F170 +F171 +F172 +F173 +F174 +F175 +F176 +F177 +F178 +F179 +F17A +F17B +F17C +F17D +F17E +F180 +F181 +F182 +F183 +F184 +F185 +F186 +F187 +F188 +F189 +F18A +F18B +F18C +F18D +F18E +F18F +F190 +F191 +F192 +F193 +F194 +F195 +F196 +F197 +F198 +F199 +F19A +F19B +F19C +F19D +F19E +F19F +F1A0 +F1A1 +F1A2 +F1A3 +F1A4 +F1A5 +F1A6 +F1A7 +F1A8 +F1A9 +F1AA +F1AB +F1AC +F1AD +F1AE +F1AF +F1B0 +F1B1 +F1B2 +F1B3 +F1B4 +F1B5 +F1B6 +F1B7 +F1B8 +F1B9 +F1BA +F1BB +F1BC +F1BD +F1BE +F1BF +F1C0 +F1C1 +F1C2 +F1C3 +F1C4 +F1C5 +F1C6 +F1C7 +F1C8 +F1C9 +F1CA +F1CB +F1CC +F1CD +F1CE +F1CF +F1D0 +F1D1 +F1D2 +F1D3 +F1D4 +F1D5 +F1D6 +F1D7 +F1D8 +F1D9 +F1DA +F1DB +F1DC +F1DD +F1DE +F1DF +F1E0 +F1E1 +F1E2 +F1E3 +F1E4 +F1E5 +F1E6 +F1E7 +F1E8 +F1E9 +F1EA +F1EB +F1EC +F1ED +F1EE +F1EF +F1F0 +F1F1 +F1F2 +F1F3 +F1F4 +F1F5 +F1F6 +F1F7 +F1F8 +F1F9 +F1FA +F1FB +F1FC +F240 +F241 +F242 +F243 +F244 +F245 +F246 +F247 +F248 +F249 +F24A +F24B +F24C +F24D +F24E +F24F +F250 +F251 +F252 +F253 +F254 +F255 +F256 +F257 +F258 +F259 +F25A +F25B +F25C +F25D +F25E +F25F +F260 +F261 +F262 +F263 +F264 +F265 +F266 +F267 +F268 +F269 +F26A +F26B +F26C +F26D +F26E +F26F +F270 +F271 +F272 +F273 +F274 +F275 +F276 +F277 +F278 +F279 +F27A +F27B +F27C +F27D +F27E +F280 +F281 +F282 +F283 +F284 +F285 +F286 +F287 +F288 +F289 +F28A +F28B +F28C +F28D +F28E +F28F +F290 +F291 +F292 +F293 +F294 +F295 +F296 +F297 +F298 +F299 +F29A +F29B +F29C +F29D +F29E +F29F +F2A0 +F2A1 +F2A2 +F2A3 +F2A4 +F2A5 +F2A6 +F2A7 +F2A8 +F2A9 +F2AA +F2AB +F2AC +F2AD +F2AE +F2AF +F2B0 +F2B1 +F2B2 +F2B3 +F2B4 +F2B5 +F2B6 +F2B7 +F2B8 +F2B9 +F2BA +F2BB +F2BC +F2BD +F2BE +F2BF +F2C0 +F2C1 +F2C2 +F2C3 +F2C4 +F2C5 +F2C6 +F2C7 +F2C8 +F2C9 +F2CA +F2CB +F2CC +F2CD +F2CE +F2CF +F2D0 +F2D1 +F2D2 +F2D3 +F2D4 +F2D5 +F2D6 +F2D7 +F2D8 +F2D9 +F2DA +F2DB +F2DC +F2DD +F2DE +F2DF +F2E0 +F2E1 +F2E2 +F2E3 +F2E4 +F2E5 +F2E6 +F2E7 +F2E8 +F2E9 +F2EA +F2EB +F2EC +F2ED +F2EE +F2EF +F2F0 +F2F1 +F2F2 +F2F3 +F2F4 +F2F5 +F2F6 +F2F7 +F2F8 +F2F9 +F2FA +F2FB +F2FC +F340 +F341 +F342 +F343 +F344 +F345 +F346 +F347 +F348 +F349 +F34A +F34B +F34C +F34D +F34E +F34F +F350 +F351 +F352 +F353 +F354 +F355 +F356 +F357 +F358 +F359 +F35A +F35B +F35C +F35D +F35E +F35F +F360 +F361 +F362 +F363 +F364 +F365 +F366 +F367 +F368 +F369 +F36A +F36B +F36C +F36D +F36E +F36F +F370 +F371 +F372 +F373 +F374 +F375 +F376 +F377 +F378 +F379 +F37A +F37B +F37C +F37D +F37E +F380 +F381 +F382 +F383 +F384 +F385 +F386 +F387 +F388 +F389 +F38A +F38B +F38C +F38D +F38E +F38F +F390 +F391 +F392 +F393 +F394 +F395 +F396 +F397 +F398 +F399 +F39A +F39B +F39C +F39D +F39E +F39F +F3A0 +F3A1 +F3A2 +F3A3 +F3A4 +F3A5 +F3A6 +F3A7 +F3A8 +F3A9 +F3AA +F3AB +F3AC +F3AD +F3AE +F3AF +F3B0 +F3B1 +F3B2 +F3B3 +F3B4 +F3B5 +F3B6 +F3B7 +F3B8 +F3B9 +F3BA +F3BB +F3BC +F3BD +F3BE +F3BF +F3C0 +F3C1 +F3C2 +F3C3 +F3C4 +F3C5 +F3C6 +F3C7 +F3C8 +F3C9 +F3CA +F3CB +F3CC +F3CD +F3CE +F3CF +F3D0 +F3D1 +F3D2 +F3D3 +F3D4 +F3D5 +F3D6 +F3D7 +F3D8 +F3D9 +F3DA +F3DB +F3DC +F3DD +F3DE +F3DF +F3E0 +F3E1 +F3E2 +F3E3 +F3E4 +F3E5 +F3E6 +F3E7 +F3E8 +F3E9 +F3EA +F3EB +F3EC +F3ED +F3EE +F3EF +F3F0 +F3F1 +F3F2 +F3F3 +F3F4 +F3F5 +F3F6 +F3F7 +F3F8 +F3F9 +F3FA +F3FB +F3FC +F440 +F441 +F442 +F443 +F444 +F445 +F446 +F447 +F448 +F449 +F44A +F44B +F44C +F44D +F44E +F44F +F450 +F451 +F452 +F453 +F454 +F455 +F456 +F457 +F458 +F459 +F45A +F45B +F45C +F45D +F45E +F45F +F460 +F461 +F462 +F463 +F464 +F465 +F466 +F467 +F468 +F469 +F46A +F46B +F46C +F46D +F46E +F46F +F470 +F471 +F472 +F473 +F474 +F475 +F476 +F477 +F478 +F479 +F47A +F47B +F47C +F47D +F47E +F480 +F481 +F482 +F483 +F484 +F485 +F486 +F487 +F488 +F489 +F48A +F48B +F48C +F48D +F48E +F48F +F490 +F491 +F492 +F493 +F494 +F495 +F496 +F497 +F498 +F499 +F49A +F49B +F49C +F49D +F49E +F49F +F4A0 +F4A1 +F4A2 +F4A3 +F4A4 +F4A5 +F4A6 +F4A7 +F4A8 +F4A9 +F4AA +F4AB +F4AC +F4AD +F4AE +F4AF +F4B0 +F4B1 +F4B2 +F4B3 +F4B4 +F4B5 +F4B6 +F4B7 +F4B8 +F4B9 +F4BA +F4BB +F4BC +F4BD +F4BE +F4BF +F4C0 +F4C1 +F4C2 +F4C3 +F4C4 +F4C5 +F4C6 +F4C7 +F4C8 +F4C9 +F4CA +F4CB +F4CC +F4CD +F4CE +F4CF +F4D0 +F4D1 +F4D2 +F4D3 +F4D4 +F4D5 +F4D6 +F4D7 +F4D8 +F4D9 +F4DA +F4DB +F4DC +F4DD +F4DE +F4DF +F4E0 +F4E1 +F4E2 +F4E3 +F4E4 +F4E5 +F4E6 +F4E7 +F4E8 +F4E9 +F4EA +F4EB +F4EC +F4ED +F4EE +F4EF +F4F0 +F4F1 +F4F2 +F4F3 +F4F4 +F4F5 +F4F6 +F4F7 +F4F8 +F4F9 +F4FA +F4FB +F4FC +F540 +F541 +F542 +F543 +F544 +F545 +F546 +F547 +F548 +F549 +F54A +F54B +F54C +F54D +F54E +F54F +F550 +F551 +F552 +F553 +F554 +F555 +F556 +F557 +F558 +F559 +F55A +F55B +F55C +F55D +F55E +F55F +F560 +F561 +F562 +F563 +F564 +F565 +F566 +F567 +F568 +F569 +F56A +F56B +F56C +F56D +F56E +F56F +F570 +F571 +F572 +F573 +F574 +F575 +F576 +F577 +F578 +F579 +F57A +F57B +F57C +F57D +F57E +F580 +F581 +F582 +F583 +F584 +F585 +F586 +F587 +F588 +F589 +F58A +F58B +F58C +F58D +F58E +F58F +F590 +F591 +F592 +F593 +F594 +F595 +F596 +F597 +F598 +F599 +F59A +F59B +F59C +F59D +F59E +F59F +F5A0 +F5A1 +F5A2 +F5A3 +F5A4 +F5A5 +F5A6 +F5A7 +F5A8 +F5A9 +F5AA +F5AB +F5AC +F5AD +F5AE +F5AF +F5B0 +F5B1 +F5B2 +F5B3 +F5B4 +F5B5 +F5B6 +F5B7 +F5B8 +F5B9 +F5BA +F5BB +F5BC +F5BD +F5BE +F5BF +F5C0 +F5C1 +F5C2 +F5C3 +F5C4 +F5C5 +F5C6 +F5C7 +F5C8 +F5C9 +F5CA +F5CB +F5CC +F5CD +F5CE +F5CF +F5D0 +F5D1 +F5D2 +F5D3 +F5D4 +F5D5 +F5D6 +F5D7 +F5D8 +F5D9 +F5DA +F5DB +F5DC +F5DD +F5DE +F5DF +F5E0 +F5E1 +F5E2 +F5E3 +F5E4 +F5E5 +F5E6 +F5E7 +F5E8 +F5E9 +F5EA +F5EB +F5EC +F5ED +F5EE +F5EF +F5F0 +F5F1 +F5F2 +F5F3 +F5F4 +F5F5 +F5F6 +F5F7 +F5F8 +F5F9 +F5FA +F5FB +F5FC +F640 +F641 +F642 +F643 +F644 +F645 +F646 +F647 +F648 +F649 +F64A +F64B +F64C +F64D +F64E +F64F +F650 +F651 +F652 +F653 +F654 +F655 +F656 +F657 +F658 +F659 +F65A +F65B +F65C +F65D +F65E +F65F +F660 +F661 +F662 +F663 +F664 +F665 +F666 +F667 +F668 +F669 +F66A +F66B +F66C +F66D +F66E +F66F +F670 +F671 +F672 +F673 +F674 +F675 +F676 +F677 +F678 +F679 +F67A +F67B +F67C +F67D +F67E +F680 +F681 +F682 +F683 +F684 +F685 +F686 +F687 +F688 +F689 +F68A +F68B +F68C +F68D +F68E +F68F +F690 +F691 +F692 +F693 +F694 +F695 +F696 +F697 +F698 +F699 +F69A +F69B +F69C +F69D +F69E +F69F +F6A0 +F6A1 +F6A2 +F6A3 +F6A4 +F6A5 +F6A6 +F6A7 +F6A8 +F6A9 +F6AA +F6AB +F6AC +F6AD +F6AE +F6AF +F6B0 +F6B1 +F6B2 +F6B3 +F6B4 +F6B5 +F6B6 +F6B7 +F6B8 +F6B9 +F6BA +F6BB +F6BC +F6BD +F6BE +F6BF +F6C0 +F6C1 +F6C2 +F6C3 +F6C4 +F6C5 +F6C6 +F6C7 +F6C8 +F6C9 +F6CA +F6CB +F6CC +F6CD +F6CE +F6CF +F6D0 +F6D1 +F6D2 +F6D3 +F6D4 +F6D5 +F6D6 +F6D7 +F6D8 +F6D9 +F6DA +F6DB +F6DC +F6DD +F6DE +F6DF +F6E0 +F6E1 +F6E2 +F6E3 +F6E4 +F6E5 +F6E6 +F6E7 +F6E8 +F6E9 +F6EA +F6EB +F6EC +F6ED +F6EE +F6EF +F6F0 +F6F1 +F6F2 +F6F3 +F6F4 +F6F5 +F6F6 +F6F7 +F6F8 +F6F9 +F6FA +F6FB +F6FC +F740 +F741 +F742 +F743 +F744 +F745 +F746 +F747 +F748 +F749 +F74A +F74B +F74C +F74D +F74E +F74F +F750 +F751 +F752 +F753 +F754 +F755 +F756 +F757 +F758 +F759 +F75A +F75B +F75C +F75D +F75E +F75F +F760 +F761 +F762 +F763 +F764 +F765 +F766 +F767 +F768 +F769 +F76A +F76B +F76C +F76D +F76E +F76F +F770 +F771 +F772 +F773 +F774 +F775 +F776 +F777 +F778 +F779 +F77A +F77B +F77C +F77D +F77E +F780 +F781 +F782 +F783 +F784 +F785 +F786 +F787 +F788 +F789 +F78A +F78B +F78C +F78D +F78E +F78F +F790 +F791 +F792 +F793 +F794 +F795 +F796 +F797 +F798 +F799 +F79A +F79B +F79C +F79D +F79E +F79F +F7A0 +F7A1 +F7A2 +F7A3 +F7A4 +F7A5 +F7A6 +F7A7 +F7A8 +F7A9 +F7AA +F7AB +F7AC +F7AD +F7AE +F7AF +F7B0 +F7B1 +F7B2 +F7B3 +F7B4 +F7B5 +F7B6 +F7B7 +F7B8 +F7B9 +F7BA +F7BB +F7BC +F7BD +F7BE +F7BF +F7C0 +F7C1 +F7C2 +F7C3 +F7C4 +F7C5 +F7C6 +F7C7 +F7C8 +F7C9 +F7CA +F7CB +F7CC +F7CD +F7CE +F7CF +F7D0 +F7D1 +F7D2 +F7D3 +F7D4 +F7D5 +F7D6 +F7D7 +F7D8 +F7D9 +F7DA +F7DB +F7DC +F7DD +F7DE +F7DF +F7E0 +F7E1 +F7E2 +F7E3 +F7E4 +F7E5 +F7E6 +F7E7 +F7E8 +F7E9 +F7EA +F7EB +F7EC +F7ED +F7EE +F7EF +F7F0 +F7F1 +F7F2 +F7F3 +F7F4 +F7F5 +F7F6 +F7F7 +F7F8 +F7F9 +F7FA +F7FB +F7FC +F840 +F841 +F842 +F843 +F844 +F845 +F846 +F847 +F848 +F849 +F84A +F84B +F84C +F84D +F84E +F84F +F850 +F851 +F852 +F853 +F854 +F855 +F856 +F857 +F858 +F859 +F85A +F85B +F85C +F85D +F85E +F85F +F860 +F861 +F862 +F863 +F864 +F865 +F866 +F867 +F868 +F869 +F86A +F86B +F86C +F86D +F86E +F86F +F870 +F871 +F872 +F873 +F874 +F875 +F876 +F877 +F878 +F879 +F87A +F87B +F87C +F87D +F87E +F880 +F881 +F882 +F883 +F884 +F885 +F886 +F887 +F888 +F889 +F88A +F88B +F88C +F88D +F88E +F88F +F890 +F891 +F892 +F893 +F894 +F895 +F896 +F897 +F898 +F899 +F89A +F89B +F89C +F89D +F89E +F89F +F8A0 +F8A1 +F8A2 +F8A3 +F8A4 +F8A5 +F8A6 +F8A7 +F8A8 +F8A9 +F8AA +F8AB +F8AC +F8AD +F8AE +F8AF +F8B0 +F8B1 +F8B2 +F8B3 +F8B4 +F8B5 +F8B6 +F8B7 +F8B8 +F8B9 +F8BA +F8BB +F8BC +F8BD +F8BE +F8BF +F8C0 +F8C1 +F8C2 +F8C3 +F8C4 +F8C5 +F8C6 +F8C7 +F8C8 +F8C9 +F8CA +F8CB +F8CC +F8CD +F8CE +F8CF +F8D0 +F8D1 +F8D2 +F8D3 +F8D4 +F8D5 +F8D6 +F8D7 +F8D8 +F8D9 +F8DA +F8DB +F8DC +F8DD +F8DE +F8DF +F8E0 +F8E1 +F8E2 +F8E3 +F8E4 +F8E5 +F8E6 +F8E7 +F8E8 +F8E9 +F8EA +F8EB +F8EC +F8ED +F8EE +F8EF +F8F0 +F8F1 +F8F2 +F8F3 +F8F4 +F8F5 +F8F6 +F8F7 +F8F8 +F8F9 +F8FA +F8FB +F8FC +F940 +F941 +F942 +F943 +F944 +F945 +F946 +F947 +F948 +F949 +F94A +F94B +F94C +F94D +F94E +F94F +F950 +F951 +F952 +F953 +F954 +F955 +F956 +F957 +F958 +F959 +F95A +F95B +F95C +F95D +F95E +F95F +F960 +F961 +F962 +F963 +F964 +F965 +F966 +F967 +F968 +F969 +F96A +F96B +F96C +F96D +F96E +F96F +F970 +F971 +F972 +F973 +F974 +F975 +F976 +F977 +F978 +F979 +F97A +F97B +F97C +F97D +F97E +F980 +F981 +F982 +F983 +F984 +F985 +F986 +F987 +F988 +F989 +F98A +F98B +F98C +F98D +F98E +F98F +F990 +F991 +F992 +F993 +F994 +F995 +F996 +F997 +F998 +F999 +F99A +F99B +F99C +F99D +F99E +F99F +F9A0 +F9A1 +F9A2 +F9A3 +F9A4 +F9A5 +F9A6 +F9A7 +F9A8 +F9A9 +F9AA +F9AB +F9AC +F9AD +F9AE +F9AF +F9B0 +F9B1 +F9B2 +F9B3 +F9B4 +F9B5 +F9B6 +F9B7 +F9B8 +F9B9 +F9BA +F9BB +F9BC +F9BD +F9BE +F9BF +F9C0 +F9C1 +F9C2 +F9C3 +F9C4 +F9C5 +F9C6 +F9C7 +F9C8 +F9C9 +F9CA +F9CB +F9CC +F9CD +F9CE +F9CF +F9D0 +F9D1 +F9D2 +F9D3 +F9D4 +F9D5 +F9D6 +F9D7 +F9D8 +F9D9 +F9DA +F9DB +F9DC +F9DD +F9DE +F9DF +F9E0 +F9E1 +F9E2 +F9E3 +F9E4 +F9E5 +F9E6 +F9E7 +F9E8 +F9E9 +F9EA +F9EB +F9EC +F9ED +F9EE +F9EF +F9F0 +F9F1 +F9F2 +F9F3 +F9F4 +F9F5 +F9F6 +F9F7 +F9F8 +F9F9 +F9FA +F9FB +F9FC +FA40 +FA40 +FA41 +FA41 +FA42 +FA42 +FA43 +FA43 +FA44 +FA44 +FA45 +FA45 +FA46 +FA46 +FA47 +FA47 +FA48 +FA48 +FA49 +FA49 +FA55 +FA55 +FA56 +FA56 +FA57 +FA57 +FA5C +FA5C +FA5D +FA5D +FA5E +FA5E +FA5F +FA5F +FA60 +FA60 +FA61 +FA61 +FA62 +FA62 +FA63 +FA63 +FA64 +FA64 +FA65 +FA65 +FA66 +FA66 +FA67 +FA67 +FA68 +FA68 +FA69 +FA69 +FA6A +FA6A +FA6B +FA6B +FA6C +FA6C +FA6D +FA6D +FA6E +FA6E +FA6F +FA6F +FA70 +FA70 +FA71 +FA71 +FA72 +FA72 +FA73 +FA73 +FA74 +FA74 +FA75 +FA75 +FA76 +FA76 +FA77 +FA77 +FA78 +FA78 +FA79 +FA79 +FA7A +FA7A +FA7B +FA7B +FA7C +FA7C +FA7D +FA7D +FA7E +FA7E +FA80 +FA80 +FA81 +FA81 +FA82 +FA82 +FA83 +FA83 +FA84 +FA84 +FA85 +FA85 +FA86 +FA86 +FA87 +FA87 +FA88 +FA88 +FA89 +FA89 +FA8A +FA8A +FA8B +FA8B +FA8C +FA8C +FA8D +FA8D +FA8E +FA8E +FA8F +FA8F +FA90 +FA90 +FA91 +FA91 +FA92 +FA92 +FA93 +FA93 +FA94 +FA94 +FA95 +FA95 +FA96 +FA96 +FA97 +FA97 +FA98 +FA98 +FA99 +FA99 +FA9A +FA9A +FA9B +FA9B +FA9C +FA9C +FA9D +FA9D +FA9E +FA9E +FA9F +FA9F +FAA0 +FAA0 +FAA1 +FAA1 +FAA2 +FAA2 +FAA3 +FAA3 +FAA4 +FAA4 +FAA5 +FAA5 +FAA6 +FAA6 +FAA7 +FAA7 +FAA8 +FAA8 +FAA9 +FAA9 +FAAA +FAAA +FAAB +FAAB +FAAC +FAAC +FAAD +FAAD +FAAE +FAAE +FAAF +FAAF +FAB0 +FAB0 +FAB1 +FAB1 +FAB2 +FAB2 +FAB3 +FAB3 +FAB4 +FAB4 +FAB5 +FAB5 +FAB6 +FAB6 +FAB7 +FAB7 +FAB8 +FAB8 +FAB9 +FAB9 +FABA +FABA +FABB +FABB +FABC +FABC +FABD +FABD +FABE +FABE +FABF +FABF +FAC0 +FAC0 +FAC1 +FAC1 +FAC2 +FAC2 +FAC3 +FAC3 +FAC4 +FAC4 +FAC5 +FAC5 +FAC6 +FAC6 +FAC7 +FAC7 +FAC8 +FAC8 +FAC9 +FAC9 +FACA +FACA +FACB +FACB +FACC +FACC +FACD +FACD +FACE +FACE +FACF +FACF +FAD0 +FAD0 +FAD1 +FAD1 +FAD2 +FAD2 +FAD3 +FAD3 +FAD4 +FAD4 +FAD5 +FAD5 +FAD6 +FAD6 +FAD7 +FAD7 +FAD8 +FAD8 +FAD9 +FAD9 +FADA +FADA +FADB +FADB +FADC +FADC +FADD +FADD +FADE +FADE +FADF +FADF +FAE0 +FAE0 +FAE1 +FAE1 +FAE2 +FAE2 +FAE3 +FAE3 +FAE4 +FAE4 +FAE5 +FAE5 +FAE6 +FAE6 +FAE7 +FAE7 +FAE8 +FAE8 +FAE9 +FAE9 +FAEA +FAEA +FAEB +FAEB +FAEC +FAEC +FAED +FAED +FAEE +FAEE +FAEF +FAEF +FAF0 +FAF0 +FAF1 +FAF1 +FAF2 +FAF2 +FAF3 +FAF3 +FAF4 +FAF4 +FAF5 +FAF5 +FAF6 +FAF6 +FAF7 +FAF7 +FAF8 +FAF8 +FAF9 +FAF9 +FAFA +FAFA +FAFB +FAFB +FAFC +FAFC +FB40 +FB40 +FB41 +FB41 +FB42 +FB42 +FB43 +FB43 +FB44 +FB44 +FB45 +FB45 +FB46 +FB46 +FB47 +FB47 +FB48 +FB48 +FB49 +FB49 +FB4A +FB4A +FB4B +FB4B +FB4C +FB4C +FB4D +FB4D +FB4E +FB4E +FB4F +FB4F +FB50 +FB50 +FB51 +FB51 +FB52 +FB52 +FB53 +FB53 +FB54 +FB54 +FB55 +FB55 +FB56 +FB56 +FB57 +FB57 +FB58 +FB58 +FB59 +FB59 +FB5A +FB5A +FB5B +FB5B +FB5C +FB5C +FB5D +FB5D +FB5E +FB5E +FB5F +FB5F +FB60 +FB60 +FB61 +FB61 +FB62 +FB62 +FB63 +FB63 +FB64 +FB64 +FB65 +FB65 +FB66 +FB66 +FB67 +FB67 +FB68 +FB68 +FB69 +FB69 +FB6A +FB6A +FB6B +FB6B +FB6C +FB6C +FB6D +FB6D +FB6E +FB6E +FB6F +FB6F +FB70 +FB70 +FB71 +FB71 +FB72 +FB72 +FB73 +FB73 +FB74 +FB74 +FB75 +FB75 +FB76 +FB76 +FB77 +FB77 +FB78 +FB78 +FB79 +FB79 +FB7A +FB7A +FB7B +FB7B +FB7C +FB7C +FB7D +FB7D +FB7E +FB7E +FB80 +FB80 +FB81 +FB81 +FB82 +FB82 +FB83 +FB83 +FB84 +FB84 +FB85 +FB85 +FB86 +FB86 +FB87 +FB87 +FB88 +FB88 +FB89 +FB89 +FB8A +FB8A +FB8B +FB8B +FB8C +FB8C +FB8D +FB8D +FB8E +FB8E +FB8F +FB8F +FB90 +FB90 +FB91 +FB91 +FB92 +FB92 +FB93 +FB93 +FB94 +FB94 +FB95 +FB95 +FB96 +FB96 +FB97 +FB97 +FB98 +FB98 +FB99 +FB99 +FB9A +FB9A +FB9B +FB9B +FB9C +FB9C +FB9D +FB9D +FB9E +FB9E +FB9F +FB9F +FBA0 +FBA0 +FBA1 +FBA1 +FBA2 +FBA2 +FBA3 +FBA3 +FBA4 +FBA4 +FBA5 +FBA5 +FBA6 +FBA6 +FBA7 +FBA7 +FBA8 +FBA8 +FBA9 +FBA9 +FBAA +FBAA +FBAB +FBAB +FBAC +FBAC +FBAD +FBAD +FBAE +FBAE +FBAF +FBAF +FBB0 +FBB0 +FBB1 +FBB1 +FBB2 +FBB2 +FBB3 +FBB3 +FBB4 +FBB4 +FBB5 +FBB5 +FBB6 +FBB6 +FBB7 +FBB7 +FBB8 +FBB8 +FBB9 +FBB9 +FBBA +FBBA +FBBB +FBBB +FBBC +FBBC +FBBD +FBBD +FBBE +FBBE +FBBF +FBBF +FBC0 +FBC0 +FBC1 +FBC1 +FBC2 +FBC2 +FBC3 +FBC3 +FBC4 +FBC4 +FBC5 +FBC5 +FBC6 +FBC6 +FBC7 +FBC7 +FBC8 +FBC8 +FBC9 +FBC9 +FBCA +FBCA +FBCB +FBCB +FBCC +FBCC +FBCD +FBCD +FBCE +FBCE +FBCF +FBCF +FBD0 +FBD0 +FBD1 +FBD1 +FBD2 +FBD2 +FBD3 +FBD3 +FBD4 +FBD4 +FBD5 +FBD5 +FBD6 +FBD6 +FBD7 +FBD7 +FBD8 +FBD8 +FBD9 +FBD9 +FBDA +FBDA +FBDB +FBDB +FBDC +FBDC +FBDD +FBDD +FBDE +FBDE +FBDF +FBDF +FBE0 +FBE0 +FBE1 +FBE1 +FBE2 +FBE2 +FBE3 +FBE3 +FBE4 +FBE4 +FBE5 +FBE5 +FBE6 +FBE6 +FBE7 +FBE7 +FBE8 +FBE8 +FBE9 +FBE9 +FBEA +FBEA +FBEB +FBEB +FBEC +FBEC +FBED +FBED +FBEE +FBEE +FBEF +FBEF +FBF0 +FBF0 +FBF1 +FBF1 +FBF2 +FBF2 +FBF3 +FBF3 +FBF4 +FBF4 +FBF5 +FBF5 +FBF6 +FBF6 +FBF7 +FBF7 +FBF8 +FBF8 +FBF9 +FBF9 +FBFA +FBFA +FBFB +FBFB +FBFC +FBFC +FC40 +FC40 +FC41 +FC41 +FC42 +FC42 +FC43 +FC43 +FC44 +FC44 +FC45 +FC45 +FC46 +FC46 +FC47 +FC47 +FC48 +FC48 +FC49 +FC49 +FC4A +FC4A +FC4B +FC4B +DROP TABLE t1; +DROP TABLE t2; +DROP TABLE t3; +SET collation_connection='cp932_japanese_ci'; +create table t1 select repeat('a',4000) a; +delete from t1; +insert into t1 values ('a'), ('a '), ('a\t'); +select collation(a),hex(a) from t1 order by a; +collation(a) hex(a) +cp932_japanese_ci 6109 +cp932_japanese_ci 61 +cp932_japanese_ci 6120 +drop table t1; +SET collation_connection='cp932_bin'; +create table t1 select repeat('a',4000) a; +delete from t1; +insert into t1 values ('a'), ('a '), ('a\t'); +select collation(a),hex(a) from t1 order by a; +collation(a) hex(a) +cp932_bin 6109 +cp932_bin 61 +cp932_bin 6120 +drop table t1; diff --git a/mysql-test/r/have_cp932.require b/mysql-test/r/have_cp932.require new file mode 100644 index 00000000000..988d720ed2c --- /dev/null +++ b/mysql-test/r/have_cp932.require @@ -0,0 +1,2 @@ +Collation Charset Id Default Compiled Sortlen +cp932_japanese_ci cp932 95 Yes Yes 1 diff --git a/mysql-test/t/ctype_cp932.test b/mysql-test/t/ctype_cp932.test new file mode 100644 index 00000000000..31eb032361f --- /dev/null +++ b/mysql-test/t/ctype_cp932.test @@ -0,0 +1,408 @@ +-- source include/have_cp932.inc + +--character_set cp932 +--disable_warnings +drop table if exists t1; +drop table if exists t2; +drop table if exists t3; +drop table if exists t4; +--enable_warnings + +set names cp932; +set character_set_database = cp932; + +CREATE TABLE t1(c1 CHAR(1)) DEFAULT CHARACTER SET = cp932; + +#Characters which are converted to Unicode ambiguously +INSERT INTO t1 VALUES +(0x05),(0x7E),(0x815C),(0x815F),(0x8160),(0x8161),(0x817C),(0x8191),(0x8192),(0x81CA); + +#NEC ROW 13 characters (0x8740 - 0x879C) +INSERT INTO t1 VALUES +(0x8740),(0x8741),(0x8742),(0x8743),(0x8744),(0x8745),(0x8746),(0x8747), +(0x8748),(0x8749),(0x874A),(0x874B),(0x874C),(0x874D),(0x874E),(0x874F), +(0x8750),(0x8751),(0x8752),(0x8753),(0x8754),(0x8755),(0x8756),(0x8757), +(0x8758),(0x8759),(0x875A),(0x875B),(0x875C),(0x875D),(0x875F), +(0x8760),(0x8761),(0x8762),(0x8763),(0x8764),(0x8765),(0x8766),(0x8767), +(0x8768),(0x8769),(0x876A),(0x876B),(0x876C),(0x876D),(0x876E),(0x876F), +(0x8770),(0x8771),(0x8772),(0x8773),(0x8774),(0x8775),(0x877E), +(0x8780),(0x8781),(0x8782),(0x8783),(0x8784),(0x8785),(0x8786),(0x8787), +(0x8788),(0x8789),(0x878A),(0x878B),(0x878C),(0x878D),(0x878E),(0x878F), +(0x8790),(0x8791),(0x8792),(0x8793),(0x8794),(0x8795),(0x8796),(0x8797), +(0x8798),(0x8799),(0x879A),(0x879B),(0x879C); + +#IBM selected characters kanji & non-kanji, NEC implementation (0xED40 - 0xEEFC) +INSERT INTO t1 VALUES +(0xED40),(0xED41),(0xED42),(0xED43),(0xED44),(0xED45),(0xED46),(0xED47), +(0xED48),(0xED49),(0xED4A),(0xED4B),(0xED4C),(0xED4D),(0xED4E),(0xED4F), +(0xED50),(0xED51),(0xED52),(0xED53),(0xED54),(0xED55),(0xED56),(0xED57), +(0xED58),(0xED59),(0xED5A),(0xED5B),(0xED5C),(0xED5D),(0xED5E),(0xED5F), +(0xED60),(0xED61),(0xED62),(0xED63),(0xED64),(0xED65),(0xED66),(0xED67), +(0xED68),(0xED69),(0xED6A),(0xED6B),(0xED6C),(0xED6D),(0xED6E),(0xED6F), +(0xED70),(0xED71),(0xED72),(0xED73),(0xED74),(0xED75),(0xED76),(0xED77), +(0xED78),(0xED79),(0xED7A),(0xED7B),(0xED7C),(0xED7D),(0xED7E), +(0xED80),(0xED81),(0xED82),(0xED83),(0xED84),(0xED85),(0xED86),(0xED87), +(0xED88),(0xED89),(0xED8A),(0xED8B),(0xED8C),(0xED8D),(0xED8E),(0xED8F), +(0xED90),(0xED91),(0xED92),(0xED93),(0xED94),(0xED95),(0xED96),(0xED97), +(0xED98),(0xED99),(0xED9A),(0xED9B),(0xED9C),(0xED9D),(0xED9E),(0xED9F), +(0xEDA0),(0xEDA1),(0xEDA2),(0xEDA3),(0xEDA4),(0xEDA5),(0xEDA6),(0xEDA7), +(0xEDA8),(0xEDA9),(0xEDAA),(0xEDAB),(0xEDAC),(0xEDAD),(0xEDAE),(0xEDAF), +(0xEDB0),(0xEDB1),(0xEDB2),(0xEDB3),(0xEDB4),(0xEDB5),(0xEDB6),(0xEDB7), +(0xEDB8),(0xEDB9),(0xEDBA),(0xEDBB),(0xEDBC),(0xEDBD),(0xEDBE),(0xEDBF), +(0xEDC0),(0xEDC1),(0xEDC2),(0xEDC3),(0xEDC4),(0xEDC5),(0xEDC6),(0xEDC7), +(0xEDC8),(0xEDC9),(0xEDCA),(0xEDCB),(0xEDCC),(0xEDCD),(0xEDCE),(0xEDCF), +(0xEDD0),(0xEDD1),(0xEDD2),(0xEDD3),(0xEDD4),(0xEDD5),(0xEDD6),(0xEDD7), +(0xEDD8),(0xEDD9),(0xEDDA),(0xEDDB),(0xEDDC),(0xEDDD),(0xEDDE),(0xEDDF), +(0xEDE0),(0xEDE1),(0xEDE2),(0xEDE3),(0xEDE4),(0xEDE5),(0xEDE6),(0xEDE7), +(0xEDE8),(0xEDE9),(0xEDEA),(0xEDEB),(0xEDEC),(0xEDED),(0xEDEE),(0xEDEF), +(0xEDF0),(0xEDF1),(0xEDF2),(0xEDF3),(0xEDF4),(0xEDF5),(0xEDF6),(0xEDF7), +(0xEDF8),(0xEDF9),(0xEDFA),(0xEDFB),(0xEDFC), +(0xEE40),(0xEE41),(0xEE42),(0xEE43),(0xEE44),(0xEE45),(0xEE46),(0xEE47), +(0xEE48),(0xEE49),(0xEE4A),(0xEE4B),(0xEE4C),(0xEE4D),(0xEE4E),(0xEE4F), +(0xEE50),(0xEE51),(0xEE52),(0xEE53),(0xEE54),(0xEE55),(0xEE56),(0xEE57), +(0xEE58),(0xEE59),(0xEE5A),(0xEE5B),(0xEE5C),(0xEE5D),(0xEE5E),(0xEE5F), +(0xEE60),(0xEE61),(0xEE62),(0xEE63),(0xEE64),(0xEE65),(0xEE66),(0xEE67), +(0xEE68),(0xEE69),(0xEE6A),(0xEE6B),(0xEE6C),(0xEE6D),(0xEE6E),(0xEE6F), +(0xEE70),(0xEE71),(0xEE72),(0xEE73),(0xEE74),(0xEE75),(0xEE76),(0xEE77), +(0xEE78),(0xEE79),(0xEE7A),(0xEE7B),(0xEE7C),(0xEE7D),(0xEE7E), +(0xEE80),(0xEE81),(0xEE82),(0xEE83),(0xEE84),(0xEE85),(0xEE86),(0xEE87), +(0xEE88),(0xEE89),(0xEE8A),(0xEE8B),(0xEE8C),(0xEE8D),(0xEE8E),(0xEE8F), +(0xEE90),(0xEE91),(0xEE92),(0xEE93),(0xEE94),(0xEE95),(0xEE96),(0xEE97), +(0xEE98),(0xEE99),(0xEE9A),(0xEE9B),(0xEE9C),(0xEE9D),(0xEE9E),(0xEE9F), +(0xEEA0),(0xEEA1),(0xEEA2),(0xEEA3),(0xEEA4),(0xEEA5),(0xEEA6),(0xEEA7), +(0xEEA8),(0xEEA9),(0xEEAA),(0xEEAB),(0xEEAC),(0xEEAD),(0xEEAE),(0xEEAF), +(0xEEB0),(0xEEB1),(0xEEB2),(0xEEB3),(0xEEB4),(0xEEB5),(0xEEB6),(0xEEB7), +(0xEEB8),(0xEEB9),(0xEEBA),(0xEEBB),(0xEEBC),(0xEEBD),(0xEEBE),(0xEEBF), +(0xEEC0),(0xEEC1),(0xEEC2),(0xEEC3),(0xEEC4),(0xEEC5),(0xEEC6),(0xEEC7), +(0xEEC8),(0xEEC9),(0xEECA),(0xEECB),(0xEECC),(0xEECD),(0xEECE),(0xEECF), +(0xEED0),(0xEED1),(0xEED2),(0xEED3),(0xEED4),(0xEED5),(0xEED6),(0xEED7), +(0xEED8),(0xEED9),(0xEEDA),(0xEEDB),(0xEEDC),(0xEEDD),(0xEEDE),(0xEEDF), +(0xEEE0),(0xEEE1),(0xEEE2),(0xEEE3),(0xEEE4),(0xEEE5),(0xEEE6),(0xEEE7), +(0xEEE8),(0xEEE9),(0xEEEA),(0xEEEB),(0xEEEC),(0xEEEF), +(0xEEF0),(0xEEF1),(0xEEF2),(0xEEF3),(0xEEF4),(0xEEF5),(0xEEF6),(0xEEF7), +(0xEEF8),(0xEEF9),(0xEEFA),(0xEEFB),(0xEEFC); + +#IBM selected kanji & non-kanji (0xFA40 - 0xFC4B) +INSERT INTO t1 VALUES +(0xFA40),(0xFA41),(0xFA42),(0xFA43),(0xFA44),(0xFA45),(0xFA46),(0xFA47), +(0xFA48),(0xFA49),(0xFA4A),(0xFA4B),(0xFA4C),(0xFA4D),(0xFA4E),(0xFA4F), +(0xFA50),(0xFA51),(0xFA52),(0xFA53),(0xFA54),(0xFA55),(0xFA56),(0xFA57), +(0xFA58),(0xFA59),(0xFA5A),(0xFA5B),(0xFA5C),(0xFA5D),(0xFA5E),(0xFA5F), +(0xFA60),(0xFA61),(0xFA62),(0xFA63),(0xFA64),(0xFA65),(0xFA66),(0xFA67), +(0xFA68),(0xFA69),(0xFA6A),(0xFA6B),(0xFA6C),(0xFA6D),(0xFA6E),(0xFA6F), +(0xFA70),(0xFA71),(0xFA72),(0xFA73),(0xFA74),(0xFA75),(0xFA76),(0xFA77), +(0xFA78),(0xFA79),(0xFA7A),(0xFA7B),(0xFA7C),(0xFA7D),(0xFA7E), +(0xFA80),(0xFA81),(0xFA82),(0xFA83),(0xFA84),(0xFA85),(0xFA86),(0xFA87), +(0xFA88),(0xFA89),(0xFA8A),(0xFA8B),(0xFA8C),(0xFA8D),(0xFA8E),(0xFA8F), +(0xFA90),(0xFA91),(0xFA92),(0xFA93),(0xFA94),(0xFA95),(0xFA96),(0xFA97), +(0xFA98),(0xFA99),(0xFA9A),(0xFA9B),(0xFA9C),(0xFA9D),(0xFA9E),(0xFA9F), +(0xFAA0),(0xFAA1),(0xFAA2),(0xFAA3),(0xFAA4),(0xFAA5),(0xFAA6),(0xFAA7), +(0xFAA8),(0xFAA9),(0xFAAA),(0xFAAB),(0xFAAC),(0xFAAD),(0xFAAE),(0xFAAF), +(0xFAB0),(0xFAB1),(0xFAB2),(0xFAB3),(0xFAB4),(0xFAB5),(0xFAB6),(0xFAB7), +(0xFAB8),(0xFAB9),(0xFABA),(0xFABB),(0xFABC),(0xFABD),(0xFABE),(0xFABF), +(0xFAC0),(0xFAC1),(0xFAC2),(0xFAC3),(0xFAC4),(0xFAC5),(0xFAC6),(0xFAC7), +(0xFAC8),(0xFAC9),(0xFACA),(0xFACB),(0xFACC),(0xFACD),(0xFACE),(0xFACF), +(0xFAD0),(0xFAD1),(0xFAD2),(0xFAD3),(0xFAD4),(0xFAD5),(0xFAD6),(0xFAD7), +(0xFAD8),(0xFAD9),(0xFADA),(0xFADB),(0xFADC),(0xFADD),(0xFADE),(0xFADF), +(0xFAE0),(0xFAE1),(0xFAE2),(0xFAE3),(0xFAE4),(0xFAE5),(0xFAE6),(0xFAE7), +(0xFAE8),(0xFAE9),(0xFAEA),(0xFAEB),(0xFAEC),(0xFAED),(0xFAEE),(0xFAEF), +(0xFAF0),(0xFAF1),(0xFAF2),(0xFAF3),(0xFAF4),(0xFAF5),(0xFAF6),(0xFAF7), +(0xFAF8),(0xFAF9),(0xFAFA),(0xFAFB),(0xFAFC), +(0xFB40),(0xFB41),(0xFB42),(0xFB43),(0xFB44),(0xFB45),(0xFB46),(0xFB47), +(0xFB48),(0xFB49),(0xFB4A),(0xFB4B),(0xFB4C),(0xFB4D),(0xFB4E),(0xFB4F), +(0xFB50),(0xFB51),(0xFB52),(0xFB53),(0xFB54),(0xFB55),(0xFB56),(0xFB57), +(0xFB58),(0xFB59),(0xFB5A),(0xFB5B),(0xFB5C),(0xFB5D),(0xFB5E),(0xFB5F), +(0xFB60),(0xFB61),(0xFB62),(0xFB63),(0xFB64),(0xFB65),(0xFB66),(0xFB67), +(0xFB68),(0xFB69),(0xFB6A),(0xFB6B),(0xFB6C),(0xFB6D),(0xFB6E),(0xFB6F), +(0xFB70),(0xFB71),(0xFB72),(0xFB73),(0xFB74),(0xFB75),(0xFB76),(0xFB77), +(0xFB78),(0xFB79),(0xFB7A),(0xFB7B),(0xFB7C),(0xFB7D),(0xFB7E), +(0xFB80),(0xFB81),(0xFB82),(0xFB83),(0xFB84),(0xFB85),(0xFB86),(0xFB87), +(0xFB88),(0xFB89),(0xFB8A),(0xFB8B),(0xFB8C),(0xFB8D),(0xFB8E),(0xFB8F), +(0xFB90),(0xFB91),(0xFB92),(0xFB93),(0xFB94),(0xFB95),(0xFB96),(0xFB97), +(0xFB98),(0xFB99),(0xFB9A),(0xFB9B),(0xFB9C),(0xFB9D),(0xFB9E),(0xFB9F), +(0xFBA0),(0xFBA1),(0xFBA2),(0xFBA3),(0xFBA4),(0xFBA5),(0xFBA6),(0xFBA7), +(0xFBA8),(0xFBA9),(0xFBAA),(0xFBAB),(0xFBAC),(0xFBAD),(0xFBAE),(0xFBAF), +(0xFBB0),(0xFBB1),(0xFBB2),(0xFBB3),(0xFBB4),(0xFBB5),(0xFBB6),(0xFBB7), +(0xFBB8),(0xFBB9),(0xFBBA),(0xFBBB),(0xFBBC),(0xFBBD),(0xFBBE),(0xFBBF), +(0xFBC0),(0xFBC1),(0xFBC2),(0xFBC3),(0xFBC4),(0xFBC5),(0xFBC6),(0xFBC7), +(0xFBC8),(0xFBC9),(0xFBCA),(0xFBCB),(0xFBCC),(0xFBCD),(0xFBCE),(0xFBCF), +(0xFBD0),(0xFBD1),(0xFBD2),(0xFBD3),(0xFBD4),(0xFBD5),(0xFBD6),(0xFBD7), +(0xFBD8),(0xFBD9),(0xFBDA),(0xFBDB),(0xFBDC),(0xFBDD),(0xFBDE),(0xFBDF), +(0xFBE0),(0xFBE1),(0xFBE2),(0xFBE3),(0xFBE4),(0xFBE5),(0xFBE6),(0xFBE7), +(0xFBE8),(0xFBE9),(0xFBEA),(0xFBEB),(0xFBEC),(0xFBED),(0xFBEE),(0xFBEF), +(0xFBF0),(0xFBF1),(0xFBF2),(0xFBF3),(0xFBF4),(0xFBF5),(0xFBF6),(0xFBF7), +(0xFBF8),(0xFBF9),(0xFBFA),(0xFBFB),(0xFBFC), +(0xFC40),(0xFC41),(0xFC42),(0xFC43),(0xFC44),(0xFC45),(0xFC46),(0xFC47), +(0xFC48),(0xFC49),(0xFC4A),(0xFC4B); + +#User defined characters (0xF040-0xF9FC) +INSERT INTO t1 VALUES +(0xF040),(0xF041),(0xF042),(0xF043),(0xF044),(0xF045),(0xF046),(0xF047), +(0xF048),(0xF049),(0xF04A),(0xF04B),(0xF04C),(0xF04D),(0xF04E),(0xF04F), +(0xF050),(0xF051),(0xF052),(0xF053),(0xF054),(0xF055),(0xF056),(0xF057), +(0xF058),(0xF059),(0xF05A),(0xF05B),(0xF05C),(0xF05D),(0xF05E),(0xF05F), +(0xF060),(0xF061),(0xF062),(0xF063),(0xF064),(0xF065),(0xF066),(0xF067), +(0xF068),(0xF069),(0xF06A),(0xF06B),(0xF06C),(0xF06D),(0xF06E),(0xF06F), +(0xF070),(0xF071),(0xF072),(0xF073),(0xF074),(0xF075),(0xF076),(0xF077), +(0xF078),(0xF079),(0xF07A),(0xF07B),(0xF07C),(0xF07D),(0xF07E), +(0xF080),(0xF081),(0xF082),(0xF083),(0xF084),(0xF085),(0xF086),(0xF087), +(0xF088),(0xF089),(0xF08A),(0xF08B),(0xF08C),(0xF08D),(0xF08E),(0xF08F), +(0xF090),(0xF091),(0xF092),(0xF093),(0xF094),(0xF095),(0xF096),(0xF097), +(0xF098),(0xF099),(0xF09A),(0xF09B),(0xF09C),(0xF09D),(0xF09E),(0xF09F), +(0xF0A0),(0xF0A1),(0xF0A2),(0xF0A3),(0xF0A4),(0xF0A5),(0xF0A6),(0xF0A7), +(0xF0A8),(0xF0A9),(0xF0AA),(0xF0AB),(0xF0AC),(0xF0AD),(0xF0AE),(0xF0AF), +(0xF0B0),(0xF0B1),(0xF0B2),(0xF0B3),(0xF0B4),(0xF0B5),(0xF0B6),(0xF0B7), +(0xF0B8),(0xF0B9),(0xF0BA),(0xF0BB),(0xF0BC),(0xF0BD),(0xF0BE),(0xF0BF), +(0xF0C0),(0xF0C1),(0xF0C2),(0xF0C3),(0xF0C4),(0xF0C5),(0xF0C6),(0xF0C7), +(0xF0C8),(0xF0C9),(0xF0CA),(0xF0CB),(0xF0CC),(0xF0CD),(0xF0CE),(0xF0CF), +(0xF0D0),(0xF0D1),(0xF0D2),(0xF0D3),(0xF0D4),(0xF0D5),(0xF0D6),(0xF0D7), +(0xF0D8),(0xF0D9),(0xF0DA),(0xF0DB),(0xF0DC),(0xF0DD),(0xF0DE),(0xF0DF), +(0xF0E0),(0xF0E1),(0xF0E2),(0xF0E3),(0xF0E4),(0xF0E5),(0xF0E6),(0xF0E7), +(0xF0E8),(0xF0E9),(0xF0EA),(0xF0EB),(0xF0EC),(0xF0ED),(0xF0EE),(0xF0EF), +(0xF0F0),(0xF0F1),(0xF0F2),(0xF0F3),(0xF0F4),(0xF0F5),(0xF0F6),(0xF0F7), +(0xF0F8),(0xF0F9),(0xF0FA),(0xF0FB),(0xF0FC), +(0xF140),(0xF141),(0xF142),(0xF143),(0xF144),(0xF145),(0xF146),(0xF147), +(0xF148),(0xF149),(0xF14A),(0xF14B),(0xF14C),(0xF14D),(0xF14E),(0xF14F), +(0xF150),(0xF151),(0xF152),(0xF153),(0xF154),(0xF155),(0xF156),(0xF157), +(0xF158),(0xF159),(0xF15A),(0xF15B),(0xF15C),(0xF15D),(0xF15E),(0xF15F), +(0xF160),(0xF161),(0xF162),(0xF163),(0xF164),(0xF165),(0xF166),(0xF167), +(0xF168),(0xF169),(0xF16A),(0xF16B),(0xF16C),(0xF16D),(0xF16E),(0xF16F), +(0xF170),(0xF171),(0xF172),(0xF173),(0xF174),(0xF175),(0xF176),(0xF177), +(0xF178),(0xF179),(0xF17A),(0xF17B),(0xF17C),(0xF17D),(0xF17E), +(0xF180),(0xF181),(0xF182),(0xF183),(0xF184),(0xF185),(0xF186),(0xF187), +(0xF188),(0xF189),(0xF18A),(0xF18B),(0xF18C),(0xF18D),(0xF18E),(0xF18F), +(0xF190),(0xF191),(0xF192),(0xF193),(0xF194),(0xF195),(0xF196),(0xF197), +(0xF198),(0xF199),(0xF19A),(0xF19B),(0xF19C),(0xF19D),(0xF19E),(0xF19F), +(0xF1A0),(0xF1A1),(0xF1A2),(0xF1A3),(0xF1A4),(0xF1A5),(0xF1A6),(0xF1A7), +(0xF1A8),(0xF1A9),(0xF1AA),(0xF1AB),(0xF1AC),(0xF1AD),(0xF1AE),(0xF1AF), +(0xF1B0),(0xF1B1),(0xF1B2),(0xF1B3),(0xF1B4),(0xF1B5),(0xF1B6),(0xF1B7), +(0xF1B8),(0xF1B9),(0xF1BA),(0xF1BB),(0xF1BC),(0xF1BD),(0xF1BE),(0xF1BF), +(0xF1C0),(0xF1C1),(0xF1C2),(0xF1C3),(0xF1C4),(0xF1C5),(0xF1C6),(0xF1C7), +(0xF1C8),(0xF1C9),(0xF1CA),(0xF1CB),(0xF1CC),(0xF1CD),(0xF1CE),(0xF1CF), +(0xF1D0),(0xF1D1),(0xF1D2),(0xF1D3),(0xF1D4),(0xF1D5),(0xF1D6),(0xF1D7), +(0xF1D8),(0xF1D9),(0xF1DA),(0xF1DB),(0xF1DC),(0xF1DD),(0xF1DE),(0xF1DF), +(0xF1E0),(0xF1E1),(0xF1E2),(0xF1E3),(0xF1E4),(0xF1E5),(0xF1E6),(0xF1E7), +(0xF1E8),(0xF1E9),(0xF1EA),(0xF1EB),(0xF1EC),(0xF1ED),(0xF1EE),(0xF1EF), +(0xF1F0),(0xF1F1),(0xF1F2),(0xF1F3),(0xF1F4),(0xF1F5),(0xF1F6),(0xF1F7), +(0xF1F8),(0xF1F9),(0xF1FA),(0xF1FB),(0xF1FC), +(0xF240),(0xF241),(0xF242),(0xF243),(0xF244),(0xF245),(0xF246),(0xF247), +(0xF248),(0xF249),(0xF24A),(0xF24B),(0xF24C),(0xF24D),(0xF24E),(0xF24F), +(0xF250),(0xF251),(0xF252),(0xF253),(0xF254),(0xF255),(0xF256),(0xF257), +(0xF258),(0xF259),(0xF25A),(0xF25B),(0xF25C),(0xF25D),(0xF25E),(0xF25F), +(0xF260),(0xF261),(0xF262),(0xF263),(0xF264),(0xF265),(0xF266),(0xF267), +(0xF268),(0xF269),(0xF26A),(0xF26B),(0xF26C),(0xF26D),(0xF26E),(0xF26F), +(0xF270),(0xF271),(0xF272),(0xF273),(0xF274),(0xF275),(0xF276),(0xF277), +(0xF278),(0xF279),(0xF27A),(0xF27B),(0xF27C),(0xF27D),(0xF27E), +(0xF280),(0xF281),(0xF282),(0xF283),(0xF284),(0xF285),(0xF286),(0xF287), +(0xF288),(0xF289),(0xF28A),(0xF28B),(0xF28C),(0xF28D),(0xF28E),(0xF28F), +(0xF290),(0xF291),(0xF292),(0xF293),(0xF294),(0xF295),(0xF296),(0xF297), +(0xF298),(0xF299),(0xF29A),(0xF29B),(0xF29C),(0xF29D),(0xF29E),(0xF29F), +(0xF2A0),(0xF2A1),(0xF2A2),(0xF2A3),(0xF2A4),(0xF2A5),(0xF2A6),(0xF2A7), +(0xF2A8),(0xF2A9),(0xF2AA),(0xF2AB),(0xF2AC),(0xF2AD),(0xF2AE),(0xF2AF), +(0xF2B0),(0xF2B1),(0xF2B2),(0xF2B3),(0xF2B4),(0xF2B5),(0xF2B6),(0xF2B7), +(0xF2B8),(0xF2B9),(0xF2BA),(0xF2BB),(0xF2BC),(0xF2BD),(0xF2BE),(0xF2BF), +(0xF2C0),(0xF2C1),(0xF2C2),(0xF2C3),(0xF2C4),(0xF2C5),(0xF2C6),(0xF2C7), +(0xF2C8),(0xF2C9),(0xF2CA),(0xF2CB),(0xF2CC),(0xF2CD),(0xF2CE),(0xF2CF), +(0xF2D0),(0xF2D1),(0xF2D2),(0xF2D3),(0xF2D4),(0xF2D5),(0xF2D6),(0xF2D7), +(0xF2D8),(0xF2D9),(0xF2DA),(0xF2DB),(0xF2DC),(0xF2DD),(0xF2DE),(0xF2DF), +(0xF2E0),(0xF2E1),(0xF2E2),(0xF2E3),(0xF2E4),(0xF2E5),(0xF2E6),(0xF2E7), +(0xF2E8),(0xF2E9),(0xF2EA),(0xF2EB),(0xF2EC),(0xF2ED),(0xF2EE),(0xF2EF), +(0xF2F0),(0xF2F1),(0xF2F2),(0xF2F3),(0xF2F4),(0xF2F5),(0xF2F6),(0xF2F7), +(0xF2F8),(0xF2F9),(0xF2FA),(0xF2FB),(0xF2FC), +(0xF340),(0xF341),(0xF342),(0xF343),(0xF344),(0xF345),(0xF346),(0xF347), +(0xF348),(0xF349),(0xF34A),(0xF34B),(0xF34C),(0xF34D),(0xF34E),(0xF34F), +(0xF350),(0xF351),(0xF352),(0xF353),(0xF354),(0xF355),(0xF356),(0xF357), +(0xF358),(0xF359),(0xF35A),(0xF35B),(0xF35C),(0xF35D),(0xF35E),(0xF35F), +(0xF360),(0xF361),(0xF362),(0xF363),(0xF364),(0xF365),(0xF366),(0xF367), +(0xF368),(0xF369),(0xF36A),(0xF36B),(0xF36C),(0xF36D),(0xF36E),(0xF36F), +(0xF370),(0xF371),(0xF372),(0xF373),(0xF374),(0xF375),(0xF376),(0xF377), +(0xF378),(0xF379),(0xF37A),(0xF37B),(0xF37C),(0xF37D),(0xF37E), +(0xF380),(0xF381),(0xF382),(0xF383),(0xF384),(0xF385),(0xF386),(0xF387), +(0xF388),(0xF389),(0xF38A),(0xF38B),(0xF38C),(0xF38D),(0xF38E),(0xF38F), +(0xF390),(0xF391),(0xF392),(0xF393),(0xF394),(0xF395),(0xF396),(0xF397), +(0xF398),(0xF399),(0xF39A),(0xF39B),(0xF39C),(0xF39D),(0xF39E),(0xF39F), +(0xF3A0),(0xF3A1),(0xF3A2),(0xF3A3),(0xF3A4),(0xF3A5),(0xF3A6),(0xF3A7), +(0xF3A8),(0xF3A9),(0xF3AA),(0xF3AB),(0xF3AC),(0xF3AD),(0xF3AE),(0xF3AF), +(0xF3B0),(0xF3B1),(0xF3B2),(0xF3B3),(0xF3B4),(0xF3B5),(0xF3B6),(0xF3B7), +(0xF3B8),(0xF3B9),(0xF3BA),(0xF3BB),(0xF3BC),(0xF3BD),(0xF3BE),(0xF3BF), +(0xF3C0),(0xF3C1),(0xF3C2),(0xF3C3),(0xF3C4),(0xF3C5),(0xF3C6),(0xF3C7), +(0xF3C8),(0xF3C9),(0xF3CA),(0xF3CB),(0xF3CC),(0xF3CD),(0xF3CE),(0xF3CF), +(0xF3D0),(0xF3D1),(0xF3D2),(0xF3D3),(0xF3D4),(0xF3D5),(0xF3D6),(0xF3D7), +(0xF3D8),(0xF3D9),(0xF3DA),(0xF3DB),(0xF3DC),(0xF3DD),(0xF3DE),(0xF3DF), +(0xF3E0),(0xF3E1),(0xF3E2),(0xF3E3),(0xF3E4),(0xF3E5),(0xF3E6),(0xF3E7), +(0xF3E8),(0xF3E9),(0xF3EA),(0xF3EB),(0xF3EC),(0xF3ED),(0xF3EE),(0xF3EF), +(0xF3F0),(0xF3F1),(0xF3F2),(0xF3F3),(0xF3F4),(0xF3F5),(0xF3F6),(0xF3F7), +(0xF3F8),(0xF3F9),(0xF3FA),(0xF3FB),(0xF3FC), +(0xF440),(0xF441),(0xF442),(0xF443),(0xF444),(0xF445),(0xF446),(0xF447), +(0xF448),(0xF449),(0xF44A),(0xF44B),(0xF44C),(0xF44D),(0xF44E),(0xF44F), +(0xF450),(0xF451),(0xF452),(0xF453),(0xF454),(0xF455),(0xF456),(0xF457), +(0xF458),(0xF459),(0xF45A),(0xF45B),(0xF45C),(0xF45D),(0xF45E),(0xF45F), +(0xF460),(0xF461),(0xF462),(0xF463),(0xF464),(0xF465),(0xF466),(0xF467), +(0xF468),(0xF469),(0xF46A),(0xF46B),(0xF46C),(0xF46D),(0xF46E),(0xF46F), +(0xF470),(0xF471),(0xF472),(0xF473),(0xF474),(0xF475),(0xF476),(0xF477), +(0xF478),(0xF479),(0xF47A),(0xF47B),(0xF47C),(0xF47D),(0xF47E), +(0xF480),(0xF481),(0xF482),(0xF483),(0xF484),(0xF485),(0xF486),(0xF487), +(0xF488),(0xF489),(0xF48A),(0xF48B),(0xF48C),(0xF48D),(0xF48E),(0xF48F), +(0xF490),(0xF491),(0xF492),(0xF493),(0xF494),(0xF495),(0xF496),(0xF497), +(0xF498),(0xF499),(0xF49A),(0xF49B),(0xF49C),(0xF49D),(0xF49E),(0xF49F), +(0xF4A0),(0xF4A1),(0xF4A2),(0xF4A3),(0xF4A4),(0xF4A5),(0xF4A6),(0xF4A7), +(0xF4A8),(0xF4A9),(0xF4AA),(0xF4AB),(0xF4AC),(0xF4AD),(0xF4AE),(0xF4AF), +(0xF4B0),(0xF4B1),(0xF4B2),(0xF4B3),(0xF4B4),(0xF4B5),(0xF4B6),(0xF4B7), +(0xF4B8),(0xF4B9),(0xF4BA),(0xF4BB),(0xF4BC),(0xF4BD),(0xF4BE),(0xF4BF), +(0xF4C0),(0xF4C1),(0xF4C2),(0xF4C3),(0xF4C4),(0xF4C5),(0xF4C6),(0xF4C7), +(0xF4C8),(0xF4C9),(0xF4CA),(0xF4CB),(0xF4CC),(0xF4CD),(0xF4CE),(0xF4CF), +(0xF4D0),(0xF4D1),(0xF4D2),(0xF4D3),(0xF4D4),(0xF4D5),(0xF4D6),(0xF4D7), +(0xF4D8),(0xF4D9),(0xF4DA),(0xF4DB),(0xF4DC),(0xF4DD),(0xF4DE),(0xF4DF), +(0xF4E0),(0xF4E1),(0xF4E2),(0xF4E3),(0xF4E4),(0xF4E5),(0xF4E6),(0xF4E7), +(0xF4E8),(0xF4E9),(0xF4EA),(0xF4EB),(0xF4EC),(0xF4ED),(0xF4EE),(0xF4EF), +(0xF4F0),(0xF4F1),(0xF4F2),(0xF4F3),(0xF4F4),(0xF4F5),(0xF4F6),(0xF4F7), +(0xF4F8),(0xF4F9),(0xF4FA),(0xF4FB),(0xF4FC), +(0xF540),(0xF541),(0xF542),(0xF543),(0xF544),(0xF545),(0xF546),(0xF547), +(0xF548),(0xF549),(0xF54A),(0xF54B),(0xF54C),(0xF54D),(0xF54E),(0xF54F), +(0xF550),(0xF551),(0xF552),(0xF553),(0xF554),(0xF555),(0xF556),(0xF557), +(0xF558),(0xF559),(0xF55A),(0xF55B),(0xF55C),(0xF55D),(0xF55E),(0xF55F), +(0xF560),(0xF561),(0xF562),(0xF563),(0xF564),(0xF565),(0xF566),(0xF567), +(0xF568),(0xF569),(0xF56A),(0xF56B),(0xF56C),(0xF56D),(0xF56E),(0xF56F), +(0xF570),(0xF571),(0xF572),(0xF573),(0xF574),(0xF575),(0xF576),(0xF577), +(0xF578),(0xF579),(0xF57A),(0xF57B),(0xF57C),(0xF57D),(0xF57E), +(0xF580),(0xF581),(0xF582),(0xF583),(0xF584),(0xF585),(0xF586),(0xF587), +(0xF588),(0xF589),(0xF58A),(0xF58B),(0xF58C),(0xF58D),(0xF58E),(0xF58F), +(0xF590),(0xF591),(0xF592),(0xF593),(0xF594),(0xF595),(0xF596),(0xF597), +(0xF598),(0xF599),(0xF59A),(0xF59B),(0xF59C),(0xF59D),(0xF59E),(0xF59F), +(0xF5A0),(0xF5A1),(0xF5A2),(0xF5A3),(0xF5A4),(0xF5A5),(0xF5A6),(0xF5A7), +(0xF5A8),(0xF5A9),(0xF5AA),(0xF5AB),(0xF5AC),(0xF5AD),(0xF5AE),(0xF5AF), +(0xF5B0),(0xF5B1),(0xF5B2),(0xF5B3),(0xF5B4),(0xF5B5),(0xF5B6),(0xF5B7), +(0xF5B8),(0xF5B9),(0xF5BA),(0xF5BB),(0xF5BC),(0xF5BD),(0xF5BE),(0xF5BF), +(0xF5C0),(0xF5C1),(0xF5C2),(0xF5C3),(0xF5C4),(0xF5C5),(0xF5C6),(0xF5C7), +(0xF5C8),(0xF5C9),(0xF5CA),(0xF5CB),(0xF5CC),(0xF5CD),(0xF5CE),(0xF5CF), +(0xF5D0),(0xF5D1),(0xF5D2),(0xF5D3),(0xF5D4),(0xF5D5),(0xF5D6),(0xF5D7), +(0xF5D8),(0xF5D9),(0xF5DA),(0xF5DB),(0xF5DC),(0xF5DD),(0xF5DE),(0xF5DF), +(0xF5E0),(0xF5E1),(0xF5E2),(0xF5E3),(0xF5E4),(0xF5E5),(0xF5E6),(0xF5E7), +(0xF5E8),(0xF5E9),(0xF5EA),(0xF5EB),(0xF5EC),(0xF5ED),(0xF5EE),(0xF5EF), +(0xF5F0),(0xF5F1),(0xF5F2),(0xF5F3),(0xF5F4),(0xF5F5),(0xF5F6),(0xF5F7), +(0xF5F8),(0xF5F9),(0xF5FA),(0xF5FB),(0xF5FC), +(0xF640),(0xF641),(0xF642),(0xF643),(0xF644),(0xF645),(0xF646),(0xF647), +(0xF648),(0xF649),(0xF64A),(0xF64B),(0xF64C),(0xF64D),(0xF64E),(0xF64F), +(0xF650),(0xF651),(0xF652),(0xF653),(0xF654),(0xF655),(0xF656),(0xF657), +(0xF658),(0xF659),(0xF65A),(0xF65B),(0xF65C),(0xF65D),(0xF65E),(0xF65F), +(0xF660),(0xF661),(0xF662),(0xF663),(0xF664),(0xF665),(0xF666),(0xF667), +(0xF668),(0xF669),(0xF66A),(0xF66B),(0xF66C),(0xF66D),(0xF66E),(0xF66F), +(0xF670),(0xF671),(0xF672),(0xF673),(0xF674),(0xF675),(0xF676),(0xF677), +(0xF678),(0xF679),(0xF67A),(0xF67B),(0xF67C),(0xF67D),(0xF67E), +(0xF680),(0xF681),(0xF682),(0xF683),(0xF684),(0xF685),(0xF686),(0xF687), +(0xF688),(0xF689),(0xF68A),(0xF68B),(0xF68C),(0xF68D),(0xF68E),(0xF68F), +(0xF690),(0xF691),(0xF692),(0xF693),(0xF694),(0xF695),(0xF696),(0xF697), +(0xF698),(0xF699),(0xF69A),(0xF69B),(0xF69C),(0xF69D),(0xF69E),(0xF69F), +(0xF6A0),(0xF6A1),(0xF6A2),(0xF6A3),(0xF6A4),(0xF6A5),(0xF6A6),(0xF6A7), +(0xF6A8),(0xF6A9),(0xF6AA),(0xF6AB),(0xF6AC),(0xF6AD),(0xF6AE),(0xF6AF), +(0xF6B0),(0xF6B1),(0xF6B2),(0xF6B3),(0xF6B4),(0xF6B5),(0xF6B6),(0xF6B7), +(0xF6B8),(0xF6B9),(0xF6BA),(0xF6BB),(0xF6BC),(0xF6BD),(0xF6BE),(0xF6BF), +(0xF6C0),(0xF6C1),(0xF6C2),(0xF6C3),(0xF6C4),(0xF6C5),(0xF6C6),(0xF6C7), +(0xF6C8),(0xF6C9),(0xF6CA),(0xF6CB),(0xF6CC),(0xF6CD),(0xF6CE),(0xF6CF), +(0xF6D0),(0xF6D1),(0xF6D2),(0xF6D3),(0xF6D4),(0xF6D5),(0xF6D6),(0xF6D7), +(0xF6D8),(0xF6D9),(0xF6DA),(0xF6DB),(0xF6DC),(0xF6DD),(0xF6DE),(0xF6DF), +(0xF6E0),(0xF6E1),(0xF6E2),(0xF6E3),(0xF6E4),(0xF6E5),(0xF6E6),(0xF6E7), +(0xF6E8),(0xF6E9),(0xF6EA),(0xF6EB),(0xF6EC),(0xF6ED),(0xF6EE),(0xF6EF), +(0xF6F0),(0xF6F1),(0xF6F2),(0xF6F3),(0xF6F4),(0xF6F5),(0xF6F6),(0xF6F7), +(0xF6F8),(0xF6F9),(0xF6FA),(0xF6FB),(0xF6FC), +(0xF740),(0xF741),(0xF742),(0xF743),(0xF744),(0xF745),(0xF746),(0xF747), +(0xF748),(0xF749),(0xF74A),(0xF74B),(0xF74C),(0xF74D),(0xF74E),(0xF74F), +(0xF750),(0xF751),(0xF752),(0xF753),(0xF754),(0xF755),(0xF756),(0xF757), +(0xF758),(0xF759),(0xF75A),(0xF75B),(0xF75C),(0xF75D),(0xF75E),(0xF75F), +(0xF760),(0xF761),(0xF762),(0xF763),(0xF764),(0xF765),(0xF766),(0xF767), +(0xF768),(0xF769),(0xF76A),(0xF76B),(0xF76C),(0xF76D),(0xF76E),(0xF76F), +(0xF770),(0xF771),(0xF772),(0xF773),(0xF774),(0xF775),(0xF776),(0xF777), +(0xF778),(0xF779),(0xF77A),(0xF77B),(0xF77C),(0xF77D),(0xF77E), +(0xF780),(0xF781),(0xF782),(0xF783),(0xF784),(0xF785),(0xF786),(0xF787), +(0xF788),(0xF789),(0xF78A),(0xF78B),(0xF78C),(0xF78D),(0xF78E),(0xF78F), +(0xF790),(0xF791),(0xF792),(0xF793),(0xF794),(0xF795),(0xF796),(0xF797), +(0xF798),(0xF799),(0xF79A),(0xF79B),(0xF79C),(0xF79D),(0xF79E),(0xF79F), +(0xF7A0),(0xF7A1),(0xF7A2),(0xF7A3),(0xF7A4),(0xF7A5),(0xF7A6),(0xF7A7), +(0xF7A8),(0xF7A9),(0xF7AA),(0xF7AB),(0xF7AC),(0xF7AD),(0xF7AE),(0xF7AF), +(0xF7B0),(0xF7B1),(0xF7B2),(0xF7B3),(0xF7B4),(0xF7B5),(0xF7B6),(0xF7B7), +(0xF7B8),(0xF7B9),(0xF7BA),(0xF7BB),(0xF7BC),(0xF7BD),(0xF7BE),(0xF7BF), +(0xF7C0),(0xF7C1),(0xF7C2),(0xF7C3),(0xF7C4),(0xF7C5),(0xF7C6),(0xF7C7), +(0xF7C8),(0xF7C9),(0xF7CA),(0xF7CB),(0xF7CC),(0xF7CD),(0xF7CE),(0xF7CF), +(0xF7D0),(0xF7D1),(0xF7D2),(0xF7D3),(0xF7D4),(0xF7D5),(0xF7D6),(0xF7D7), +(0xF7D8),(0xF7D9),(0xF7DA),(0xF7DB),(0xF7DC),(0xF7DD),(0xF7DE),(0xF7DF), +(0xF7E0),(0xF7E1),(0xF7E2),(0xF7E3),(0xF7E4),(0xF7E5),(0xF7E6),(0xF7E7), +(0xF7E8),(0xF7E9),(0xF7EA),(0xF7EB),(0xF7EC),(0xF7ED),(0xF7EE),(0xF7EF), +(0xF7F0),(0xF7F1),(0xF7F2),(0xF7F3),(0xF7F4),(0xF7F5),(0xF7F6),(0xF7F7), +(0xF7F8),(0xF7F9),(0xF7FA),(0xF7FB),(0xF7FC), +(0xF840),(0xF841),(0xF842),(0xF843),(0xF844),(0xF845),(0xF846),(0xF847), +(0xF848),(0xF849),(0xF84A),(0xF84B),(0xF84C),(0xF84D),(0xF84E),(0xF84F), +(0xF850),(0xF851),(0xF852),(0xF853),(0xF854),(0xF855),(0xF856),(0xF857), +(0xF858),(0xF859),(0xF85A),(0xF85B),(0xF85C),(0xF85D),(0xF85E),(0xF85F), +(0xF860),(0xF861),(0xF862),(0xF863),(0xF864),(0xF865),(0xF866),(0xF867), +(0xF868),(0xF869),(0xF86A),(0xF86B),(0xF86C),(0xF86D),(0xF86E),(0xF86F), +(0xF870),(0xF871),(0xF872),(0xF873),(0xF874),(0xF875),(0xF876),(0xF877), +(0xF878),(0xF879),(0xF87A),(0xF87B),(0xF87C),(0xF87D),(0xF87E), +(0xF880),(0xF881),(0xF882),(0xF883),(0xF884),(0xF885),(0xF886),(0xF887), +(0xF888),(0xF889),(0xF88A),(0xF88B),(0xF88C),(0xF88D),(0xF88E),(0xF88F), +(0xF890),(0xF891),(0xF892),(0xF893),(0xF894),(0xF895),(0xF896),(0xF897), +(0xF898),(0xF899),(0xF89A),(0xF89B),(0xF89C),(0xF89D),(0xF89E),(0xF89F), +(0xF8A0),(0xF8A1),(0xF8A2),(0xF8A3),(0xF8A4),(0xF8A5),(0xF8A6),(0xF8A7), +(0xF8A8),(0xF8A9),(0xF8AA),(0xF8AB),(0xF8AC),(0xF8AD),(0xF8AE),(0xF8AF), +(0xF8B0),(0xF8B1),(0xF8B2),(0xF8B3),(0xF8B4),(0xF8B5),(0xF8B6),(0xF8B7), +(0xF8B8),(0xF8B9),(0xF8BA),(0xF8BB),(0xF8BC),(0xF8BD),(0xF8BE),(0xF8BF), +(0xF8C0),(0xF8C1),(0xF8C2),(0xF8C3),(0xF8C4),(0xF8C5),(0xF8C6),(0xF8C7), +(0xF8C8),(0xF8C9),(0xF8CA),(0xF8CB),(0xF8CC),(0xF8CD),(0xF8CE),(0xF8CF), +(0xF8D0),(0xF8D1),(0xF8D2),(0xF8D3),(0xF8D4),(0xF8D5),(0xF8D6),(0xF8D7), +(0xF8D8),(0xF8D9),(0xF8DA),(0xF8DB),(0xF8DC),(0xF8DD),(0xF8DE),(0xF8DF), +(0xF8E0),(0xF8E1),(0xF8E2),(0xF8E3),(0xF8E4),(0xF8E5),(0xF8E6),(0xF8E7), +(0xF8E8),(0xF8E9),(0xF8EA),(0xF8EB),(0xF8EC),(0xF8ED),(0xF8EE),(0xF8EF), +(0xF8F0),(0xF8F1),(0xF8F2),(0xF8F3),(0xF8F4),(0xF8F5),(0xF8F6),(0xF8F7), +(0xF8F8),(0xF8F9),(0xF8FA),(0xF8FB),(0xF8FC), +(0xF940),(0xF941),(0xF942),(0xF943),(0xF944),(0xF945),(0xF946),(0xF947), +(0xF948),(0xF949),(0xF94A),(0xF94B),(0xF94C),(0xF94D),(0xF94E),(0xF94F), +(0xF950),(0xF951),(0xF952),(0xF953),(0xF954),(0xF955),(0xF956),(0xF957), +(0xF958),(0xF959),(0xF95A),(0xF95B),(0xF95C),(0xF95D),(0xF95E),(0xF95F), +(0xF960),(0xF961),(0xF962),(0xF963),(0xF964),(0xF965),(0xF966),(0xF967), +(0xF968),(0xF969),(0xF96A),(0xF96B),(0xF96C),(0xF96D),(0xF96E),(0xF96F), +(0xF970),(0xF971),(0xF972),(0xF973),(0xF974),(0xF975),(0xF976),(0xF977), +(0xF978),(0xF979),(0xF97A),(0xF97B),(0xF97C),(0xF97D),(0xF97E), +(0xF980),(0xF981),(0xF982),(0xF983),(0xF984),(0xF985),(0xF986),(0xF987), +(0xF988),(0xF989),(0xF98A),(0xF98B),(0xF98C),(0xF98D),(0xF98E),(0xF98F), +(0xF990),(0xF991),(0xF992),(0xF993),(0xF994),(0xF995),(0xF996),(0xF997), +(0xF998),(0xF999),(0xF99A),(0xF99B),(0xF99C),(0xF99D),(0xF99E),(0xF99F), +(0xF9A0),(0xF9A1),(0xF9A2),(0xF9A3),(0xF9A4),(0xF9A5),(0xF9A6),(0xF9A7), +(0xF9A8),(0xF9A9),(0xF9AA),(0xF9AB),(0xF9AC),(0xF9AD),(0xF9AE),(0xF9AF), +(0xF9B0),(0xF9B1),(0xF9B2),(0xF9B3),(0xF9B4),(0xF9B5),(0xF9B6),(0xF9B7), +(0xF9B8),(0xF9B9),(0xF9BA),(0xF9BB),(0xF9BC),(0xF9BD),(0xF9BE),(0xF9BF), +(0xF9C0),(0xF9C1),(0xF9C2),(0xF9C3),(0xF9C4),(0xF9C5),(0xF9C6),(0xF9C7), +(0xF9C8),(0xF9C9),(0xF9CA),(0xF9CB),(0xF9CC),(0xF9CD),(0xF9CE),(0xF9CF), +(0xF9D0),(0xF9D1),(0xF9D2),(0xF9D3),(0xF9D4),(0xF9D5),(0xF9D6),(0xF9D7), +(0xF9D8),(0xF9D9),(0xF9DA),(0xF9DB),(0xF9DC),(0xF9DD),(0xF9DE),(0xF9DF), +(0xF9E0),(0xF9E1),(0xF9E2),(0xF9E3),(0xF9E4),(0xF9E5),(0xF9E6),(0xF9E7), +(0xF9E8),(0xF9E9),(0xF9EA),(0xF9EB),(0xF9EC),(0xF9ED),(0xF9EE),(0xF9EF), +(0xF9F0),(0xF9F1),(0xF9F2),(0xF9F3),(0xF9F4),(0xF9F5),(0xF9F6),(0xF9F7), +(0xF9F8),(0xF9F9),(0xF9FA),(0xF9FB),(0xF9FC); + +#Test that all the characters are stored correctly +SELECT HEX(c1) FROM t1 ORDER BY BINARY c1; + +#Test conversion to ucs2 +CREATE TABLE t2 SELECT CONVERT(c1 USING ucs2) AS c1 FROM t1 ORDER BY BINARY c1; +SELECT HEX(c1) FROM t2 ORDER BY BINARY c1; + +#Test round trip conversion +CREATE TABLE t3 SELECT CONVERT(c1 USING cp932) AS c1 FROM t2 ORDER BY BINARY c1; +SELECT HEX(c1) FROM t3 ORDER BY BINARY c1; + +#eucjpms is only available from version 5.0 +#skip this test in version 4.1 +# +#Test conversion to eucjpms +#CREATE TABLE t4 SELECT CONVERT(c1 USING eucjpms) AS c1 FROM t1 ORDER BY BINARY c1; +#SELECT HEX(c1) FROM t4 ORDER BY BINARY c1; + +DROP TABLE t1; +DROP TABLE t2; +DROP TABLE t3; +#DROP TABLE t4; + + +SET collation_connection='cp932_japanese_ci'; +-- source include/ctype_filesort.inc +SET collation_connection='cp932_bin'; +-- source include/ctype_filesort.inc diff --git a/strings/ctype-cp932.c b/strings/ctype-cp932.c new file mode 100644 index 00000000000..0db38afa1f7 --- /dev/null +++ b/strings/ctype-cp932.c @@ -0,0 +1,5551 @@ +/* Copyright (C) 2000 MySQL AB + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ + +/* This file is for cp932 charaset (Windows Japanese), + and created based on ctype-sjis.c file */ + +#include +#include "m_string.h" +#include "m_ctype.h" + +#ifdef HAVE_CHARSET_cp932 + + +/* + * This comment is parsed by configure to create ctype.c, + * so don't change it unless you know what you are doing. + * + * .configure. strxfrm_multiply_cp932=1 + * .configure. mbmaxlen_cp932=2 + */ + +static uchar NEAR ctype_cp932[257] = +{ + 0, /* For standard library */ + 0040, 0040, 0040, 0040, 0040, 0040, 0040, 0040, /* NUL ^A - ^G */ + 0040, 0050, 0050, 0050, 0050, 0050, 0040, 0040, /* ^H - ^O */ + 0040, 0040, 0040, 0040, 0040, 0040, 0040, 0040, /* ^P - ^W */ + 0040, 0040, 0040, 0040, 0040, 0040, 0040, 0040, /* ^X - ^Z ^[ ^\ ^] ^^ ^_ */ + 0110, 0020, 0020, 0020, 0020, 0020, 0020, 0020, /* SPC ! " # $ % ^ ' */ + 0020, 0020, 0020, 0020, 0020, 0020, 0020, 0020, /* ( ) * + , - . / */ + 0204, 0204, 0204, 0204, 0204, 0204, 0204, 0204, /* 0 1 2 3 4 5 6 7 */ + 0204, 0204, 0020, 0020, 0020, 0020, 0020, 0020, /* 8 9 : ; < = > ? */ + 0020, 0201, 0201, 0201, 0201, 0201, 0201, 0001, /* @ A B C D E F G */ + 0001, 0001, 0001, 0001, 0001, 0001, 0001, 0001, /* H I J K L M N O */ + 0001, 0001, 0001, 0001, 0001, 0001, 0001, 0001, /* P Q R S T U V W */ + 0001, 0001, 0001, 0020, 0020, 0020, 0020, 0020, /* X Y Z [ \ ] ^ _ */ + 0020, 0202, 0202, 0202, 0202, 0202, 0202, 0002, /* ` a b c d e f g */ + 0002, 0002, 0002, 0002, 0002, 0002, 0002, 0002, /* h i j k l m n o */ + 0002, 0002, 0002, 0002, 0002, 0002, 0002, 0002, /* p q r s t u v w */ + 0002, 0002, 0002, 0020, 0020, 0020, 0020, 0040, /* x y z { | } + DEL */ + 0020, 0020, 0020, 0020, 0020, 0020, 0020, 0020, + 0020, 0020, 0020, 0020, 0020, 0020, 0020, 0020, + 0020, 0020, 0020, 0020, 0020, 0020, 0020, 0020, + 0020, 0020, 0020, 0020, 0020, 0020, 0020, 0020, + 0020, 0020, 0020, 0020, 0020, 0020, 0020, 0020, + 0020, 0020, 0020, 0020, 0020, 0020, 0020, 0020, + 0020, 0020, 0020, 0020, 0020, 0020, 0020, 0020, + 0020, 0020, 0020, 0020, 0020, 0020, 0020, 0020, + 0020, 0020, 0020, 0020, 0020, 0020, 0020, 0020, + 0020, 0020, 0020, 0020, 0020, 0020, 0020, 0020, + 0020, 0020, 0020, 0020, 0020, 0020, 0020, 0020, + 0020, 0020, 0020, 0020, 0020, 0020, 0020, 0020, + 0020, 0020, 0020, 0020, 0020, 0020, 0020, 0020, + 0020, 0020, 0020, 0020, 0020, 0020, 0020, 0020, + 0020, 0020, 0020, 0020, 0020, 0020, 0020, 0020, + 0020, 0020, 0020, 0020, 0020, 0000, 0000, 0000 +}; + +static uchar NEAR to_lower_cp932[]= +{ + '\000','\001','\002','\003','\004','\005','\006','\007', + '\010','\011','\012','\013','\014','\015','\016','\017', + '\020','\021','\022','\023','\024','\025','\026','\027', + '\030','\031','\032','\033','\034','\035','\036','\037', + ' ', '!', '"', '#', '$', '%', '&', '\'', + '(', ')', '*', '+', ',', '-', '.', '/', + '0', '1', '2', '3', '4', '5', '6', '7', + '8', '9', ':', ';', '<', '=', '>', '?', + '@', 'a', 'b', 'c', 'd', 'e', 'f', 'g', + 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', + 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', + 'x', 'y', 'z', '[', '\\', ']', '^', '_', + '`', 'a', 'b', 'c', 'd', 'e', 'f', 'g', + 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', + 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', + 'x', 'y', 'z', '{', '|', '}', '~', '\177', + (uchar) '\200',(uchar) '\201',(uchar) '\202',(uchar) '\203',(uchar) '\204',(uchar) '\205',(uchar) '\206',(uchar) '\207', + (uchar) '\210',(uchar) '\211',(uchar) '\212',(uchar) '\213',(uchar) '\214',(uchar) '\215',(uchar) '\216',(uchar) '\217', + (uchar) '\220',(uchar) '\221',(uchar) '\222',(uchar) '\223',(uchar) '\224',(uchar) '\225',(uchar) '\226',(uchar) '\227', + (uchar) '\230',(uchar) '\231',(uchar) '\232',(uchar) '\233',(uchar) '\234',(uchar) '\235',(uchar) '\236',(uchar) '\237', + (uchar) '\240',(uchar) '\241',(uchar) '\242',(uchar) '\243',(uchar) '\244',(uchar) '\245',(uchar) '\246',(uchar) '\247', + (uchar) '\250',(uchar) '\251',(uchar) '\252',(uchar) '\253',(uchar) '\254',(uchar) '\255',(uchar) '\256',(uchar) '\257', + (uchar) '\260',(uchar) '\261',(uchar) '\262',(uchar) '\263',(uchar) '\264',(uchar) '\265',(uchar) '\266',(uchar) '\267', + (uchar) '\270',(uchar) '\271',(uchar) '\272',(uchar) '\273',(uchar) '\274',(uchar) '\275',(uchar) '\276',(uchar) '\277', + (uchar) '\300',(uchar) '\301',(uchar) '\302',(uchar) '\303',(uchar) '\304',(uchar) '\305',(uchar) '\306',(uchar) '\307', + (uchar) '\310',(uchar) '\311',(uchar) '\312',(uchar) '\313',(uchar) '\314',(uchar) '\315',(uchar) '\316',(uchar) '\317', + (uchar) '\320',(uchar) '\321',(uchar) '\322',(uchar) '\323',(uchar) '\324',(uchar) '\325',(uchar) '\326',(uchar) '\327', + (uchar) '\330',(uchar) '\331',(uchar) '\332',(uchar) '\333',(uchar) '\334',(uchar) '\335',(uchar) '\336',(uchar) '\337', + (uchar) '\340',(uchar) '\341',(uchar) '\342',(uchar) '\343',(uchar) '\344',(uchar) '\345',(uchar) '\346',(uchar) '\347', + (uchar) '\350',(uchar) '\351',(uchar) '\352',(uchar) '\353',(uchar) '\354',(uchar) '\355',(uchar) '\356',(uchar) '\357', + (uchar) '\360',(uchar) '\361',(uchar) '\362',(uchar) '\363',(uchar) '\364',(uchar) '\365',(uchar) '\366',(uchar) '\367', + (uchar) '\370',(uchar) '\371',(uchar) '\372',(uchar) '\373',(uchar) '\374',(uchar) '\375',(uchar) '\376',(uchar) '\377' +}; + +static uchar NEAR to_upper_cp932[]= +{ + '\000','\001','\002','\003','\004','\005','\006','\007', + '\010','\011','\012','\013','\014','\015','\016','\017', + '\020','\021','\022','\023','\024','\025','\026','\027', + '\030','\031','\032','\033','\034','\035','\036','\037', + ' ', '!', '"', '#', '$', '%', '&', '\'', + '(', ')', '*', '+', ',', '-', '.', '/', + '0', '1', '2', '3', '4', '5', '6', '7', + '8', '9', ':', ';', '<', '=', '>', '?', + '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', + 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', + 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', + 'X', 'Y', 'Z', '[', '\\', ']', '^', '_', + '`', 'A', 'B', 'C', 'D', 'E', 'F', 'G', + 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', + 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', + 'X', 'Y', 'Z', '{', '|', '}', '~', '\177', + (uchar) '\200',(uchar) '\201',(uchar) '\202',(uchar) '\203',(uchar) '\204',(uchar) '\205',(uchar) '\206',(uchar) '\207', + (uchar) '\210',(uchar) '\211',(uchar) '\212',(uchar) '\213',(uchar) '\214',(uchar) '\215',(uchar) '\216',(uchar) '\217', + (uchar) '\220',(uchar) '\221',(uchar) '\222',(uchar) '\223',(uchar) '\224',(uchar) '\225',(uchar) '\226',(uchar) '\227', + (uchar) '\230',(uchar) '\231',(uchar) '\232',(uchar) '\233',(uchar) '\234',(uchar) '\235',(uchar) '\236',(uchar) '\237', + (uchar) '\240',(uchar) '\241',(uchar) '\242',(uchar) '\243',(uchar) '\244',(uchar) '\245',(uchar) '\246',(uchar) '\247', + (uchar) '\250',(uchar) '\251',(uchar) '\252',(uchar) '\253',(uchar) '\254',(uchar) '\255',(uchar) '\256',(uchar) '\257', + (uchar) '\260',(uchar) '\261',(uchar) '\262',(uchar) '\263',(uchar) '\264',(uchar) '\265',(uchar) '\266',(uchar) '\267', + (uchar) '\270',(uchar) '\271',(uchar) '\272',(uchar) '\273',(uchar) '\274',(uchar) '\275',(uchar) '\276',(uchar) '\277', + (uchar) '\300',(uchar) '\301',(uchar) '\302',(uchar) '\303',(uchar) '\304',(uchar) '\305',(uchar) '\306',(uchar) '\307', + (uchar) '\310',(uchar) '\311',(uchar) '\312',(uchar) '\313',(uchar) '\314',(uchar) '\315',(uchar) '\316',(uchar) '\317', + (uchar) '\320',(uchar) '\321',(uchar) '\322',(uchar) '\323',(uchar) '\324',(uchar) '\325',(uchar) '\326',(uchar) '\327', + (uchar) '\330',(uchar) '\331',(uchar) '\332',(uchar) '\333',(uchar) '\334',(uchar) '\335',(uchar) '\336',(uchar) '\337', + (uchar) '\340',(uchar) '\341',(uchar) '\342',(uchar) '\343',(uchar) '\344',(uchar) '\345',(uchar) '\346',(uchar) '\347', + (uchar) '\350',(uchar) '\351',(uchar) '\352',(uchar) '\353',(uchar) '\354',(uchar) '\355',(uchar) '\356',(uchar) '\357', + (uchar) '\360',(uchar) '\361',(uchar) '\362',(uchar) '\363',(uchar) '\364',(uchar) '\365',(uchar) '\366',(uchar) '\367', + (uchar) '\370',(uchar) '\371',(uchar) '\372',(uchar) '\373',(uchar) '\374',(uchar) '\375',(uchar) '\376',(uchar) '\377' +}; + +static uchar NEAR sort_order_cp932[]= +{ + '\000','\001','\002','\003','\004','\005','\006','\007', + '\010','\011','\012','\013','\014','\015','\016','\017', + '\020','\021','\022','\023','\024','\025','\026','\027', + '\030','\031','\032','\033','\034','\035','\036','\037', + ' ', '!', '"', '#', '$', '%', '&', '\'', + '(', ')', '*', '+', ',', '-', '.', '/', + '0', '1', '2', '3', '4', '5', '6', '7', + '8', '9', ':', ';', '<', '=', '>', '?', + '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', + 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', + 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', + 'X', 'Y', 'Z', '[', '\\', ']', '^', '_', + '`', 'A', 'B', 'C', 'D', 'E', 'F', 'G', + 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', + 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', + 'X', 'Y', 'Z', '{', '|', '}', '~', '\177', + (uchar) '\200',(uchar) '\201',(uchar) '\202',(uchar) '\203',(uchar) '\204',(uchar) '\205',(uchar) '\206',(uchar) '\207', + (uchar) '\210',(uchar) '\211',(uchar) '\212',(uchar) '\213',(uchar) '\214',(uchar) '\215',(uchar) '\216',(uchar) '\217', + (uchar) '\220',(uchar) '\221',(uchar) '\222',(uchar) '\223',(uchar) '\224',(uchar) '\225',(uchar) '\226',(uchar) '\227', + (uchar) '\230',(uchar) '\231',(uchar) '\232',(uchar) '\233',(uchar) '\234',(uchar) '\235',(uchar) '\236',(uchar) '\237', + (uchar) '\240',(uchar) '\241',(uchar) '\242',(uchar) '\243',(uchar) '\244',(uchar) '\245',(uchar) '\246',(uchar) '\247', + (uchar) '\250',(uchar) '\251',(uchar) '\252',(uchar) '\253',(uchar) '\254',(uchar) '\255',(uchar) '\256',(uchar) '\257', + (uchar) '\260',(uchar) '\261',(uchar) '\262',(uchar) '\263',(uchar) '\264',(uchar) '\265',(uchar) '\266',(uchar) '\267', + (uchar) '\270',(uchar) '\271',(uchar) '\272',(uchar) '\273',(uchar) '\274',(uchar) '\275',(uchar) '\276',(uchar) '\277', + (uchar) '\300',(uchar) '\301',(uchar) '\302',(uchar) '\303',(uchar) '\304',(uchar) '\305',(uchar) '\306',(uchar) '\307', + (uchar) '\310',(uchar) '\311',(uchar) '\312',(uchar) '\313',(uchar) '\314',(uchar) '\315',(uchar) '\316',(uchar) '\317', + (uchar) '\320',(uchar) '\321',(uchar) '\322',(uchar) '\323',(uchar) '\324',(uchar) '\325',(uchar) '\326',(uchar) '\327', + (uchar) '\330',(uchar) '\331',(uchar) '\332',(uchar) '\333',(uchar) '\334',(uchar) '\335',(uchar) '\336',(uchar) '\337', + (uchar) '\340',(uchar) '\341',(uchar) '\342',(uchar) '\343',(uchar) '\344',(uchar) '\345',(uchar) '\346',(uchar) '\347', + (uchar) '\350',(uchar) '\351',(uchar) '\352',(uchar) '\353',(uchar) '\354',(uchar) '\355',(uchar) '\356',(uchar) '\357', + (uchar) '\360',(uchar) '\361',(uchar) '\362',(uchar) '\363',(uchar) '\364',(uchar) '\365',(uchar) '\366',(uchar) '\367', + (uchar) '\370',(uchar) '\371',(uchar) '\372',(uchar) '\373',(uchar) '\374',(uchar) '\375',(uchar) '\376',(uchar) '\377' +}; + +#define iscp932head(c) ((0x81<=(c) && (c)<=0x9f) || \ + ((0xe0<=(c)) && (c)<=0xfc)) +#define iscp932tail(c) ((0x40<=(c) && (c)<=0x7e) || \ + (0x80<=(c) && (c)<=0xfc)) + + +static int ismbchar_cp932(CHARSET_INFO *cs __attribute__((unused)), + const char* p, const char *e) +{ + return (iscp932head((uchar) *p) && (e-p)>1 && iscp932tail((uchar)p[1]) ? 2: 0); +} + +static int mbcharlen_cp932(CHARSET_INFO *cs __attribute__((unused)),uint c) +{ + return (iscp932head((uchar) c) ? 2 : 1); +} + + +#define cp932code(c,d) ((((uint) (uchar)(c)) << 8) | (uint) (uchar) (d)) + + +static int my_strnncoll_cp932_internal(CHARSET_INFO *cs, + const uchar **a_res, uint a_length, + const uchar **b_res, uint b_length) +{ + const uchar *a= *a_res, *b= *b_res; + const uchar *a_end= a + a_length; + const uchar *b_end= b + b_length; + while (a < a_end && b < b_end) + { + if (ismbchar_cp932(cs,(char*) a, (char*) a_end) && + ismbchar_cp932(cs,(char*) b, (char*) b_end)) + { + uint a_char= cp932code(*a, *(a+1)); + uint b_char= cp932code(*b, *(b+1)); + if (a_char != b_char) + return a_char - b_char; + a += 2; + b += 2; + } else + { + if (sort_order_cp932[(uchar)*a] != sort_order_cp932[(uchar)*b]) + return sort_order_cp932[(uchar)*a] - sort_order_cp932[(uchar)*b]; + a++; + b++; + } + } + *a_res= a; + *b_res= b; + return 0; +} + + +static int my_strnncoll_cp932(CHARSET_INFO *cs __attribute__((unused)), + const uchar *a, uint a_length, + const uchar *b, uint b_length, + my_bool b_is_prefix) +{ + int res= my_strnncoll_cp932_internal(cs, &a, a_length, &b, b_length); + if (b_is_prefix && a_length > b_length) + a_length= b_length; + return res ? res : (int) (a_length - b_length); +} + + +static int my_strnncollsp_cp932(CHARSET_INFO *cs __attribute__((unused)), + const uchar *a, uint a_length, + const uchar *b, uint b_length, + my_bool diff_if_only_endspace_difference + __attribute__((unused))) +{ + const uchar *a_end= a + a_length; + const uchar *b_end= b + b_length; + int res= my_strnncoll_cp932_internal(cs, &a, a_length, &b, b_length); + if (!res && (a != a_end || b != b_end)) + { + int swap= 0; + /* + Check the next not space character of the longer key. If it's < ' ', + then it's smaller than the other key. + */ + if (a == a_end) + { + /* put shorter key in a */ + a_end= b_end; + a= b; + swap= -1; /* swap sign of result */ + } + for (; a < a_end ; a++) + { + if (*a != ' ') + return ((int) *a - (int) ' ') ^ swap; + } + } + return res; +} + + + +static int my_strnxfrm_cp932(CHARSET_INFO *cs __attribute__((unused)), + uchar *dest, uint len, + const uchar *src, uint srclen) +{ + uchar *d_end = dest + len; + uchar *s_end = (uchar*) src + srclen; + while (dest < d_end && src < s_end) + { + if (ismbchar_cp932(cs,(char*) src, (char*) s_end)) + { + *dest++ = *src++; + if (dest < d_end && src < s_end) + *dest++ = *src++; + } + else + *dest++ = sort_order_cp932[(uchar)*src++]; + } + if (len > srclen) + bfill(dest, len - srclen, ' '); + return len; +} + + +/* +** Calculate min_str and max_str that ranges a LIKE string. +** Arguments: +** ptr Pointer to LIKE string. +** ptr_length Length of LIKE string. +** escape Escape character in LIKE. (Normally '\'). +** All escape characters should be removed from min_str and max_str +** res_length Length of min_str and max_str. +** min_str Smallest case sensitive string that ranges LIKE. +** Should be space padded to res_length. +** max_str Largest case sensitive string that ranges LIKE. +** Normally padded with the biggest character sort value. +** +** The function should return 0 if ok and 1 if the LIKE string can't be +** optimized ! +*/ + +#define max_sort_char ((char) 255) + +static my_bool my_like_range_cp932(CHARSET_INFO *cs __attribute__((unused)), + const char *ptr,uint ptr_length, + pbool escape, pbool w_one, pbool w_many, + uint res_length, char *min_str,char *max_str, + uint *min_length,uint *max_length) +{ + const char *end=ptr+ptr_length; + char *min_org=min_str; + char *min_end=min_str+res_length; + + while (ptr < end && min_str < min_end) { + if (ismbchar_cp932(cs, ptr, end)) { + *min_str++ = *max_str++ = *ptr++; + if (min_str < min_end) + *min_str++ = *max_str++ = *ptr++; + continue; + } + if (*ptr == escape && ptr+1 < end) { + ptr++; /* Skip escape */ + if (ismbchar_cp932(cs, ptr, end)) + *min_str++ = *max_str++ = *ptr++; + if (min_str < min_end) + *min_str++ = *max_str++ = *ptr++; + continue; + } + if (*ptr == w_one) { /* '_' in SQL */ + *min_str++ = '\0'; /* This should be min char */ + *max_str++ = max_sort_char; + ptr++; + continue; + } + if (*ptr == w_many) + { /* '%' in SQL */ + *min_length = (uint)(min_str - min_org); + *max_length = res_length; + do + { + *min_str++= 0; + *max_str++= max_sort_char; + } while (min_str < min_end); + return 0; + } + *min_str++ = *max_str++ = *ptr++; + } + *min_length = *max_length = (uint)(min_str - min_org); + while (min_str < min_end) + *min_str++ = *max_str++ = ' '; /* Because if key compression */ + return 0; +} + +/* page 0 0x00A1-0x00DF */ +static uint16 tab_cp932_uni0[]={ +0xFF61,0xFF62,0xFF63,0xFF64,0xFF65,0xFF66,0xFF67,0xFF68, +0xFF69,0xFF6A,0xFF6B,0xFF6C,0xFF6D,0xFF6E,0xFF6F,0xFF70, +0xFF71,0xFF72,0xFF73,0xFF74,0xFF75,0xFF76,0xFF77,0xFF78, +0xFF79,0xFF7A,0xFF7B,0xFF7C,0xFF7D,0xFF7E,0xFF7F,0xFF80, +0xFF81,0xFF82,0xFF83,0xFF84,0xFF85,0xFF86,0xFF87,0xFF88, +0xFF89,0xFF8A,0xFF8B,0xFF8C,0xFF8D,0xFF8E,0xFF8F,0xFF90, +0xFF91,0xFF92,0xFF93,0xFF94,0xFF95,0xFF96,0xFF97,0xFF98, +0xFF99,0xFF9A,0xFF9B,0xFF9C,0xFF9D,0xFF9E,0xFF9F}; + +/* page 1 0x8140-0x84BE */ +static uint16 tab_cp932_uni1[]={ +0x3000,0x3001,0x3002,0xFF0C,0xFF0E,0x30FB,0xFF1A,0xFF1B, +0xFF1F,0xFF01,0x309B,0x309C,0x00B4,0xFF40,0x00A8,0xFF3E, +0xFFE3,0xFF3F,0x30FD,0x30FE,0x309D,0x309E,0x3003,0x4EDD, +0x3005,0x3006,0x3007,0x30FC,0x2015,0x2010,0xFF0F,0xFF3C, +0xFF5E,0x2225,0xFF5C,0x2026,0x2025,0x2018,0x2019,0x201C, +0x201D,0xFF08,0xFF09,0x3014,0x3015,0xFF3B,0xFF3D,0xFF5B, +0xFF5D,0x3008,0x3009,0x300A,0x300B,0x300C,0x300D,0x300E, +0x300F,0x3010,0x3011,0xFF0B,0xFF0D,0x00B1,0x00D7, 0, +0x00F7,0xFF1D,0x2260,0xFF1C,0xFF1E,0x2266,0x2267,0x221E, +0x2234,0x2642,0x2640,0x00B0,0x2032,0x2033,0x2103,0xFFE5, +0xFF04,0xFFE0,0xFFE1,0xFF05,0xFF03,0xFF06,0xFF0A,0xFF20, +0x00A7,0x2606,0x2605,0x25CB,0x25CF,0x25CE,0x25C7,0x25C6, +0x25A1,0x25A0,0x25B3,0x25B2,0x25BD,0x25BC,0x203B,0x3012, +0x2192,0x2190,0x2191,0x2193,0x3013, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, +0x2208,0x220B,0x2286,0x2287,0x2282,0x2283,0x222A,0x2229, + 0, 0, 0, 0, 0, 0, 0, 0, +0x2227,0x2228,0xFFE2,0x21D2,0x21D4,0x2200,0x2203, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,0x2220,0x22A5,0x2312,0x2202,0x2207,0x2261, +0x2252,0x226A,0x226B,0x221A,0x223D,0x221D,0x2235,0x222B, +0x222C, 0, 0, 0, 0, 0, 0, 0, +0x212B,0x2030,0x266F,0x266D,0x266A,0x2020,0x2021,0x00B6, + 0, 0, 0, 0,0x25EF, 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, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0,0xFF10, +0xFF11,0xFF12,0xFF13,0xFF14,0xFF15,0xFF16,0xFF17,0xFF18, +0xFF19, 0, 0, 0, 0, 0, 0, 0, +0xFF21,0xFF22,0xFF23,0xFF24,0xFF25,0xFF26,0xFF27,0xFF28, +0xFF29,0xFF2A,0xFF2B,0xFF2C,0xFF2D,0xFF2E,0xFF2F,0xFF30, +0xFF31,0xFF32,0xFF33,0xFF34,0xFF35,0xFF36,0xFF37,0xFF38, +0xFF39,0xFF3A, 0, 0, 0, 0, 0, 0, + 0,0xFF41,0xFF42,0xFF43,0xFF44,0xFF45,0xFF46,0xFF47, +0xFF48,0xFF49,0xFF4A,0xFF4B,0xFF4C,0xFF4D,0xFF4E,0xFF4F, +0xFF50,0xFF51,0xFF52,0xFF53,0xFF54,0xFF55,0xFF56,0xFF57, +0xFF58,0xFF59,0xFF5A, 0, 0, 0, 0,0x3041, +0x3042,0x3043,0x3044,0x3045,0x3046,0x3047,0x3048,0x3049, +0x304A,0x304B,0x304C,0x304D,0x304E,0x304F,0x3050,0x3051, +0x3052,0x3053,0x3054,0x3055,0x3056,0x3057,0x3058,0x3059, +0x305A,0x305B,0x305C,0x305D,0x305E,0x305F,0x3060,0x3061, +0x3062,0x3063,0x3064,0x3065,0x3066,0x3067,0x3068,0x3069, +0x306A,0x306B,0x306C,0x306D,0x306E,0x306F,0x3070,0x3071, +0x3072,0x3073,0x3074,0x3075,0x3076,0x3077,0x3078,0x3079, +0x307A,0x307B,0x307C,0x307D,0x307E,0x307F,0x3080,0x3081, +0x3082,0x3083,0x3084,0x3085,0x3086,0x3087,0x3088,0x3089, +0x308A,0x308B,0x308C,0x308D,0x308E,0x308F,0x3090,0x3091, +0x3092,0x3093, 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, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, +0x30A1,0x30A2,0x30A3,0x30A4,0x30A5,0x30A6,0x30A7,0x30A8, +0x30A9,0x30AA,0x30AB,0x30AC,0x30AD,0x30AE,0x30AF,0x30B0, +0x30B1,0x30B2,0x30B3,0x30B4,0x30B5,0x30B6,0x30B7,0x30B8, +0x30B9,0x30BA,0x30BB,0x30BC,0x30BD,0x30BE,0x30BF,0x30C0, +0x30C1,0x30C2,0x30C3,0x30C4,0x30C5,0x30C6,0x30C7,0x30C8, +0x30C9,0x30CA,0x30CB,0x30CC,0x30CD,0x30CE,0x30CF,0x30D0, +0x30D1,0x30D2,0x30D3,0x30D4,0x30D5,0x30D6,0x30D7,0x30D8, +0x30D9,0x30DA,0x30DB,0x30DC,0x30DD,0x30DE,0x30DF, 0, +0x30E0,0x30E1,0x30E2,0x30E3,0x30E4,0x30E5,0x30E6,0x30E7, +0x30E8,0x30E9,0x30EA,0x30EB,0x30EC,0x30ED,0x30EE,0x30EF, +0x30F0,0x30F1,0x30F2,0x30F3,0x30F4,0x30F5,0x30F6, 0, + 0, 0, 0, 0, 0, 0, 0,0x0391, +0x0392,0x0393,0x0394,0x0395,0x0396,0x0397,0x0398,0x0399, +0x039A,0x039B,0x039C,0x039D,0x039E,0x039F,0x03A0,0x03A1, +0x03A3,0x03A4,0x03A5,0x03A6,0x03A7,0x03A8,0x03A9, 0, + 0, 0, 0, 0, 0, 0, 0,0x03B1, +0x03B2,0x03B3,0x03B4,0x03B5,0x03B6,0x03B7,0x03B8,0x03B9, +0x03BA,0x03BB,0x03BC,0x03BD,0x03BE,0x03BF,0x03C0,0x03C1, +0x03C3,0x03C4,0x03C5,0x03C6,0x03C7,0x03C8,0x03C9, 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, 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, +0x0410,0x0411,0x0412,0x0413,0x0414,0x0415,0x0401,0x0416, +0x0417,0x0418,0x0419,0x041A,0x041B,0x041C,0x041D,0x041E, +0x041F,0x0420,0x0421,0x0422,0x0423,0x0424,0x0425,0x0426, +0x0427,0x0428,0x0429,0x042A,0x042B,0x042C,0x042D,0x042E, +0x042F, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, +0x0430,0x0431,0x0432,0x0433,0x0434,0x0435,0x0451,0x0436, +0x0437,0x0438,0x0439,0x043A,0x043B,0x043C,0x043D, 0, +0x043E,0x043F,0x0440,0x0441,0x0442,0x0443,0x0444,0x0445, +0x0446,0x0447,0x0448,0x0449,0x044A,0x044B,0x044C,0x044D, +0x044E,0x044F, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0,0x2500, +0x2502,0x250C,0x2510,0x2518,0x2514,0x251C,0x252C,0x2524, +0x2534,0x253C,0x2501,0x2503,0x250F,0x2513,0x251B,0x2517, +0x2523,0x2533,0x252B,0x253B,0x254B,0x2520,0x252F,0x2528, +0x2537,0x253F,0x251D,0x2530,0x2525,0x2538,0x2542}; + +/* page 2 0x8740-0x879C - NEC Row 13 */ +static uint16 tab_cp932_uni2[]={ +0x2460,0x2461,0x2462,0x2463,0x2464,0x2465,0x2466,0x2467, +0x2468,0x2469,0x246A,0x246B,0x246C,0x246D,0x246E,0x246F, +0x2470,0x2471,0x2472,0x2473,0x2160,0x2161,0x2162,0x2163, +0x2164,0x2165,0x2166,0x2167,0x2168,0x2169, 0,0x3349, +0x3314,0x3322,0x334D,0x3318,0x3327,0x3303,0x3336,0x3351, +0x3357,0x330D,0x3326,0x3323,0x332B,0x334A,0x333B,0x339C, +0x339D,0x339E,0x338E,0x338F,0x33C4,0x33A1, 0, 0, + 0, 0, 0, 0, 0, 0,0x337B, 0, +0x301D,0x301F,0x2116,0x33CD,0x2121,0x32A4,0x32A5,0x32A6, +0x32A7,0x32A8,0x3231,0x3232,0x3239,0x337E,0x337D,0x337C, +0x2252,0x2261,0x222B,0x222E,0x2211,0x221A,0x22A5,0x2220, +0x221F,0x22BF,0x2235,0x2229,0x222A}; + +/* page 3 0x889F-0x9FFC */ +static uint16 tab_cp932_uni3[]={ +0x4E9C,0x5516,0x5A03,0x963F,0x54C0,0x611B,0x6328,0x59F6, +0x9022,0x8475,0x831C,0x7A50,0x60AA,0x63E1,0x6E25,0x65ED, +0x8466,0x82A6,0x9BF5,0x6893,0x5727,0x65A1,0x6271,0x5B9B, +0x59D0,0x867B,0x98F4,0x7D62,0x7DBE,0x9B8E,0x6216,0x7C9F, +0x88B7,0x5B89,0x5EB5,0x6309,0x6697,0x6848,0x95C7,0x978D, +0x674F,0x4EE5,0x4F0A,0x4F4D,0x4F9D,0x5049,0x56F2,0x5937, +0x59D4,0x5A01,0x5C09,0x60DF,0x610F,0x6170,0x6613,0x6905, +0x70BA,0x754F,0x7570,0x79FB,0x7DAD,0x7DEF,0x80C3,0x840E, +0x8863,0x8B02,0x9055,0x907A,0x533B,0x4E95,0x4EA5,0x57DF, +0x80B2,0x90C1,0x78EF,0x4E00,0x58F1,0x6EA2,0x9038,0x7A32, +0x8328,0x828B,0x9C2F,0x5141,0x5370,0x54BD,0x54E1,0x56E0, +0x59FB,0x5F15,0x98F2,0x6DEB,0x80E4,0x852D, 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, 0, 0, 0, 0, 0, 0, + 0,0x9662,0x9670,0x96A0,0x97FB,0x540B,0x53F3,0x5B87, +0x70CF,0x7FBD,0x8FC2,0x96E8,0x536F,0x9D5C,0x7ABA,0x4E11, +0x7893,0x81FC,0x6E26,0x5618,0x5504,0x6B1D,0x851A,0x9C3B, +0x59E5,0x53A9,0x6D66,0x74DC,0x958F,0x5642,0x4E91,0x904B, +0x96F2,0x834F,0x990C,0x53E1,0x55B6,0x5B30,0x5F71,0x6620, +0x66F3,0x6804,0x6C38,0x6CF3,0x6D29,0x745B,0x76C8,0x7A4E, +0x9834,0x82F1,0x885B,0x8A60,0x92ED,0x6DB2,0x75AB,0x76CA, +0x99C5,0x60A6,0x8B01,0x8D8A,0x95B2,0x698E,0x53AD,0x5186, + 0,0x5712,0x5830,0x5944,0x5BB4,0x5EF6,0x6028,0x63A9, +0x63F4,0x6CBF,0x6F14,0x708E,0x7114,0x7159,0x71D5,0x733F, +0x7E01,0x8276,0x82D1,0x8597,0x9060,0x925B,0x9D1B,0x5869, +0x65BC,0x6C5A,0x7525,0x51F9,0x592E,0x5965,0x5F80,0x5FDC, +0x62BC,0x65FA,0x6A2A,0x6B27,0x6BB4,0x738B,0x7FC1,0x8956, +0x9D2C,0x9D0E,0x9EC4,0x5CA1,0x6C96,0x837B,0x5104,0x5C4B, +0x61B6,0x81C6,0x6876,0x7261,0x4E59,0x4FFA,0x5378,0x6069, +0x6E29,0x7A4F,0x97F3,0x4E0B,0x5316,0x4EEE,0x4F55,0x4F3D, +0x4FA1,0x4F73,0x52A0,0x53EF,0x5609,0x590F,0x5AC1,0x5BB6, +0x5BE1,0x79D1,0x6687,0x679C,0x67B6,0x6B4C,0x6CB3,0x706B, +0x73C2,0x798D,0x79BE,0x7A3C,0x7B87,0x82B1,0x82DB,0x8304, +0x8377,0x83EF,0x83D3,0x8766,0x8AB2,0x5629,0x8CA8,0x8FE6, +0x904E,0x971E,0x868A,0x4FC4,0x5CE8,0x6211,0x7259,0x753B, +0x81E5,0x82BD,0x86FE,0x8CC0,0x96C5,0x9913,0x99D5,0x4ECB, +0x4F1A,0x89E3,0x56DE,0x584A,0x58CA,0x5EFB,0x5FEB,0x602A, +0x6094,0x6062,0x61D0,0x6212,0x62D0,0x6539, 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, 0, 0, 0, 0, 0, 0, + 0,0x9B41,0x6666,0x68B0,0x6D77,0x7070,0x754C,0x7686, +0x7D75,0x82A5,0x87F9,0x958B,0x968E,0x8C9D,0x51F1,0x52BE, +0x5916,0x54B3,0x5BB3,0x5D16,0x6168,0x6982,0x6DAF,0x788D, +0x84CB,0x8857,0x8A72,0x93A7,0x9AB8,0x6D6C,0x99A8,0x86D9, +0x57A3,0x67FF,0x86CE,0x920E,0x5283,0x5687,0x5404,0x5ED3, +0x62E1,0x64B9,0x683C,0x6838,0x6BBB,0x7372,0x78BA,0x7A6B, +0x899A,0x89D2,0x8D6B,0x8F03,0x90ED,0x95A3,0x9694,0x9769, +0x5B66,0x5CB3,0x697D,0x984D,0x984E,0x639B,0x7B20,0x6A2B, + 0,0x6A7F,0x68B6,0x9C0D,0x6F5F,0x5272,0x559D,0x6070, +0x62EC,0x6D3B,0x6E07,0x6ED1,0x845B,0x8910,0x8F44,0x4E14, +0x9C39,0x53F6,0x691B,0x6A3A,0x9784,0x682A,0x515C,0x7AC3, +0x84B2,0x91DC,0x938C,0x565B,0x9D28,0x6822,0x8305,0x8431, +0x7CA5,0x5208,0x82C5,0x74E6,0x4E7E,0x4F83,0x51A0,0x5BD2, +0x520A,0x52D8,0x52E7,0x5DFB,0x559A,0x582A,0x59E6,0x5B8C, +0x5B98,0x5BDB,0x5E72,0x5E79,0x60A3,0x611F,0x6163,0x61BE, +0x63DB,0x6562,0x67D1,0x6853,0x68FA,0x6B3E,0x6B53,0x6C57, +0x6F22,0x6F97,0x6F45,0x74B0,0x7518,0x76E3,0x770B,0x7AFF, +0x7BA1,0x7C21,0x7DE9,0x7F36,0x7FF0,0x809D,0x8266,0x839E, +0x89B3,0x8ACC,0x8CAB,0x9084,0x9451,0x9593,0x9591,0x95A2, +0x9665,0x97D3,0x9928,0x8218,0x4E38,0x542B,0x5CB8,0x5DCC, +0x73A9,0x764C,0x773C,0x5CA9,0x7FEB,0x8D0B,0x96C1,0x9811, +0x9854,0x9858,0x4F01,0x4F0E,0x5371,0x559C,0x5668,0x57FA, +0x5947,0x5B09,0x5BC4,0x5C90,0x5E0C,0x5E7E,0x5FCC,0x63EE, +0x673A,0x65D7,0x65E2,0x671F,0x68CB,0x68C4, 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, 0, 0, 0, 0, 0, 0, + 0,0x6A5F,0x5E30,0x6BC5,0x6C17,0x6C7D,0x757F,0x7948, +0x5B63,0x7A00,0x7D00,0x5FBD,0x898F,0x8A18,0x8CB4,0x8D77, +0x8ECC,0x8F1D,0x98E2,0x9A0E,0x9B3C,0x4E80,0x507D,0x5100, +0x5993,0x5B9C,0x622F,0x6280,0x64EC,0x6B3A,0x72A0,0x7591, +0x7947,0x7FA9,0x87FB,0x8ABC,0x8B70,0x63AC,0x83CA,0x97A0, +0x5409,0x5403,0x55AB,0x6854,0x6A58,0x8A70,0x7827,0x6775, +0x9ECD,0x5374,0x5BA2,0x811A,0x8650,0x9006,0x4E18,0x4E45, +0x4EC7,0x4F11,0x53CA,0x5438,0x5BAE,0x5F13,0x6025,0x6551, + 0,0x673D,0x6C42,0x6C72,0x6CE3,0x7078,0x7403,0x7A76, +0x7AAE,0x7B08,0x7D1A,0x7CFE,0x7D66,0x65E7,0x725B,0x53BB, +0x5C45,0x5DE8,0x62D2,0x62E0,0x6319,0x6E20,0x865A,0x8A31, +0x8DDD,0x92F8,0x6F01,0x79A6,0x9B5A,0x4EA8,0x4EAB,0x4EAC, +0x4F9B,0x4FA0,0x50D1,0x5147,0x7AF6,0x5171,0x51F6,0x5354, +0x5321,0x537F,0x53EB,0x55AC,0x5883,0x5CE1,0x5F37,0x5F4A, +0x602F,0x6050,0x606D,0x631F,0x6559,0x6A4B,0x6CC1,0x72C2, +0x72ED,0x77EF,0x80F8,0x8105,0x8208,0x854E,0x90F7,0x93E1, +0x97FF,0x9957,0x9A5A,0x4EF0,0x51DD,0x5C2D,0x6681,0x696D, +0x5C40,0x66F2,0x6975,0x7389,0x6850,0x7C81,0x50C5,0x52E4, +0x5747,0x5DFE,0x9326,0x65A4,0x6B23,0x6B3D,0x7434,0x7981, +0x79BD,0x7B4B,0x7DCA,0x82B9,0x83CC,0x887F,0x895F,0x8B39, +0x8FD1,0x91D1,0x541F,0x9280,0x4E5D,0x5036,0x53E5,0x533A, +0x72D7,0x7396,0x77E9,0x82E6,0x8EAF,0x99C6,0x99C8,0x99D2, +0x5177,0x611A,0x865E,0x55B0,0x7A7A,0x5076,0x5BD3,0x9047, +0x9685,0x4E32,0x6ADB,0x91E7,0x5C51,0x5C48, 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, 0, 0, 0, 0, 0, 0, + 0,0x6398,0x7A9F,0x6C93,0x9774,0x8F61,0x7AAA,0x718A, +0x9688,0x7C82,0x6817,0x7E70,0x6851,0x936C,0x52F2,0x541B, +0x85AB,0x8A13,0x7FA4,0x8ECD,0x90E1,0x5366,0x8888,0x7941, +0x4FC2,0x50BE,0x5211,0x5144,0x5553,0x572D,0x73EA,0x578B, +0x5951,0x5F62,0x5F84,0x6075,0x6176,0x6167,0x61A9,0x63B2, +0x643A,0x656C,0x666F,0x6842,0x6E13,0x7566,0x7A3D,0x7CFB, +0x7D4C,0x7D99,0x7E4B,0x7F6B,0x830E,0x834A,0x86CD,0x8A08, +0x8A63,0x8B66,0x8EFD,0x981A,0x9D8F,0x82B8,0x8FCE,0x9BE8, + 0,0x5287,0x621F,0x6483,0x6FC0,0x9699,0x6841,0x5091, +0x6B20,0x6C7A,0x6F54,0x7A74,0x7D50,0x8840,0x8A23,0x6708, +0x4EF6,0x5039,0x5026,0x5065,0x517C,0x5238,0x5263,0x55A7, +0x570F,0x5805,0x5ACC,0x5EFA,0x61B2,0x61F8,0x62F3,0x6372, +0x691C,0x6A29,0x727D,0x72AC,0x732E,0x7814,0x786F,0x7D79, +0x770C,0x80A9,0x898B,0x8B19,0x8CE2,0x8ED2,0x9063,0x9375, +0x967A,0x9855,0x9A13,0x9E78,0x5143,0x539F,0x53B3,0x5E7B, +0x5F26,0x6E1B,0x6E90,0x7384,0x73FE,0x7D43,0x8237,0x8A00, +0x8AFA,0x9650,0x4E4E,0x500B,0x53E4,0x547C,0x56FA,0x59D1, +0x5B64,0x5DF1,0x5EAB,0x5F27,0x6238,0x6545,0x67AF,0x6E56, +0x72D0,0x7CCA,0x88B4,0x80A1,0x80E1,0x83F0,0x864E,0x8A87, +0x8DE8,0x9237,0x96C7,0x9867,0x9F13,0x4E94,0x4E92,0x4F0D, +0x5348,0x5449,0x543E,0x5A2F,0x5F8C,0x5FA1,0x609F,0x68A7, +0x6A8E,0x745A,0x7881,0x8A9E,0x8AA4,0x8B77,0x9190,0x4E5E, +0x9BC9,0x4EA4,0x4F7C,0x4FAF,0x5019,0x5016,0x5149,0x516C, +0x529F,0x52B9,0x52FE,0x539A,0x53E3,0x5411, 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, 0, 0, 0, 0, 0, 0, + 0,0x540E,0x5589,0x5751,0x57A2,0x597D,0x5B54,0x5B5D, +0x5B8F,0x5DE5,0x5DE7,0x5DF7,0x5E78,0x5E83,0x5E9A,0x5EB7, +0x5F18,0x6052,0x614C,0x6297,0x62D8,0x63A7,0x653B,0x6602, +0x6643,0x66F4,0x676D,0x6821,0x6897,0x69CB,0x6C5F,0x6D2A, +0x6D69,0x6E2F,0x6E9D,0x7532,0x7687,0x786C,0x7A3F,0x7CE0, +0x7D05,0x7D18,0x7D5E,0x7DB1,0x8015,0x8003,0x80AF,0x80B1, +0x8154,0x818F,0x822A,0x8352,0x884C,0x8861,0x8B1B,0x8CA2, +0x8CFC,0x90CA,0x9175,0x9271,0x783F,0x92FC,0x95A4,0x964D, + 0,0x9805,0x9999,0x9AD8,0x9D3B,0x525B,0x52AB,0x53F7, +0x5408,0x58D5,0x62F7,0x6FE0,0x8C6A,0x8F5F,0x9EB9,0x514B, +0x523B,0x544A,0x56FD,0x7A40,0x9177,0x9D60,0x9ED2,0x7344, +0x6F09,0x8170,0x7511,0x5FFD,0x60DA,0x9AA8,0x72DB,0x8FBC, +0x6B64,0x9803,0x4ECA,0x56F0,0x5764,0x58BE,0x5A5A,0x6068, +0x61C7,0x660F,0x6606,0x6839,0x68B1,0x6DF7,0x75D5,0x7D3A, +0x826E,0x9B42,0x4E9B,0x4F50,0x53C9,0x5506,0x5D6F,0x5DE6, +0x5DEE,0x67FB,0x6C99,0x7473,0x7802,0x8A50,0x9396,0x88DF, +0x5750,0x5EA7,0x632B,0x50B5,0x50AC,0x518D,0x6700,0x54C9, +0x585E,0x59BB,0x5BB0,0x5F69,0x624D,0x63A1,0x683D,0x6B73, +0x6E08,0x707D,0x91C7,0x7280,0x7815,0x7826,0x796D,0x658E, +0x7D30,0x83DC,0x88C1,0x8F09,0x969B,0x5264,0x5728,0x6750, +0x7F6A,0x8CA1,0x51B4,0x5742,0x962A,0x583A,0x698A,0x80B4, +0x54B2,0x5D0E,0x57FC,0x7895,0x9DFA,0x4F5C,0x524A,0x548B, +0x643E,0x6628,0x6714,0x67F5,0x7A84,0x7B56,0x7D22,0x932F, +0x685C,0x9BAD,0x7B39,0x5319,0x518A,0x5237, 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, 0, 0, 0, 0, 0, 0, + 0,0x5BDF,0x62F6,0x64AE,0x64E6,0x672D,0x6BBA,0x85A9, +0x96D1,0x7690,0x9BD6,0x634C,0x9306,0x9BAB,0x76BF,0x6652, +0x4E09,0x5098,0x53C2,0x5C71,0x60E8,0x6492,0x6563,0x685F, +0x71E6,0x73CA,0x7523,0x7B97,0x7E82,0x8695,0x8B83,0x8CDB, +0x9178,0x9910,0x65AC,0x66AB,0x6B8B,0x4ED5,0x4ED4,0x4F3A, +0x4F7F,0x523A,0x53F8,0x53F2,0x55E3,0x56DB,0x58EB,0x59CB, +0x59C9,0x59FF,0x5B50,0x5C4D,0x5E02,0x5E2B,0x5FD7,0x601D, +0x6307,0x652F,0x5B5C,0x65AF,0x65BD,0x65E8,0x679D,0x6B62, + 0,0x6B7B,0x6C0F,0x7345,0x7949,0x79C1,0x7CF8,0x7D19, +0x7D2B,0x80A2,0x8102,0x81F3,0x8996,0x8A5E,0x8A69,0x8A66, +0x8A8C,0x8AEE,0x8CC7,0x8CDC,0x96CC,0x98FC,0x6B6F,0x4E8B, +0x4F3C,0x4F8D,0x5150,0x5B57,0x5BFA,0x6148,0x6301,0x6642, +0x6B21,0x6ECB,0x6CBB,0x723E,0x74BD,0x75D4,0x78C1,0x793A, +0x800C,0x8033,0x81EA,0x8494,0x8F9E,0x6C50,0x9E7F,0x5F0F, +0x8B58,0x9D2B,0x7AFA,0x8EF8,0x5B8D,0x96EB,0x4E03,0x53F1, +0x57F7,0x5931,0x5AC9,0x5BA4,0x6089,0x6E7F,0x6F06,0x75BE, +0x8CEA,0x5B9F,0x8500,0x7BE0,0x5072,0x67F4,0x829D,0x5C61, +0x854A,0x7E1E,0x820E,0x5199,0x5C04,0x6368,0x8D66,0x659C, +0x716E,0x793E,0x7D17,0x8005,0x8B1D,0x8ECA,0x906E,0x86C7, +0x90AA,0x501F,0x52FA,0x5C3A,0x6753,0x707C,0x7235,0x914C, +0x91C8,0x932B,0x82E5,0x5BC2,0x5F31,0x60F9,0x4E3B,0x53D6, +0x5B88,0x624B,0x6731,0x6B8A,0x72E9,0x73E0,0x7A2E,0x816B, +0x8DA3,0x9152,0x9996,0x5112,0x53D7,0x546A,0x5BFF,0x6388, +0x6A39,0x7DAC,0x9700,0x56DA,0x53CE,0x5468, 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, 0, 0, 0, 0, 0, 0, + 0,0x5B97,0x5C31,0x5DDE,0x4FEE,0x6101,0x62FE,0x6D32, +0x79C0,0x79CB,0x7D42,0x7E4D,0x7FD2,0x81ED,0x821F,0x8490, +0x8846,0x8972,0x8B90,0x8E74,0x8F2F,0x9031,0x914B,0x916C, +0x96C6,0x919C,0x4EC0,0x4F4F,0x5145,0x5341,0x5F93,0x620E, +0x67D4,0x6C41,0x6E0B,0x7363,0x7E26,0x91CD,0x9283,0x53D4, +0x5919,0x5BBF,0x6DD1,0x795D,0x7E2E,0x7C9B,0x587E,0x719F, +0x51FA,0x8853,0x8FF0,0x4FCA,0x5CFB,0x6625,0x77AC,0x7AE3, +0x821C,0x99FF,0x51C6,0x5FAA,0x65EC,0x696F,0x6B89,0x6DF3, + 0,0x6E96,0x6F64,0x76FE,0x7D14,0x5DE1,0x9075,0x9187, +0x9806,0x51E6,0x521D,0x6240,0x6691,0x66D9,0x6E1A,0x5EB6, +0x7DD2,0x7F72,0x66F8,0x85AF,0x85F7,0x8AF8,0x52A9,0x53D9, +0x5973,0x5E8F,0x5F90,0x6055,0x92E4,0x9664,0x50B7,0x511F, +0x52DD,0x5320,0x5347,0x53EC,0x54E8,0x5546,0x5531,0x5617, +0x5968,0x59BE,0x5A3C,0x5BB5,0x5C06,0x5C0F,0x5C11,0x5C1A, +0x5E84,0x5E8A,0x5EE0,0x5F70,0x627F,0x6284,0x62DB,0x638C, +0x6377,0x6607,0x660C,0x662D,0x6676,0x677E,0x68A2,0x6A1F, +0x6A35,0x6CBC,0x6D88,0x6E09,0x6E58,0x713C,0x7126,0x7167, +0x75C7,0x7701,0x785D,0x7901,0x7965,0x79F0,0x7AE0,0x7B11, +0x7CA7,0x7D39,0x8096,0x83D6,0x848B,0x8549,0x885D,0x88F3, +0x8A1F,0x8A3C,0x8A54,0x8A73,0x8C61,0x8CDE,0x91A4,0x9266, +0x937E,0x9418,0x969C,0x9798,0x4E0A,0x4E08,0x4E1E,0x4E57, +0x5197,0x5270,0x57CE,0x5834,0x58CC,0x5B22,0x5E38,0x60C5, +0x64FE,0x6761,0x6756,0x6D44,0x72B6,0x7573,0x7A63,0x84B8, +0x8B72,0x91B8,0x9320,0x5631,0x57F4,0x98FE, 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, 0, 0, 0, 0, 0, 0, + 0,0x62ED,0x690D,0x6B96,0x71ED,0x7E54,0x8077,0x8272, +0x89E6,0x98DF,0x8755,0x8FB1,0x5C3B,0x4F38,0x4FE1,0x4FB5, +0x5507,0x5A20,0x5BDD,0x5BE9,0x5FC3,0x614E,0x632F,0x65B0, +0x664B,0x68EE,0x699B,0x6D78,0x6DF1,0x7533,0x75B9,0x771F, +0x795E,0x79E6,0x7D33,0x81E3,0x82AF,0x85AA,0x89AA,0x8A3A, +0x8EAB,0x8F9B,0x9032,0x91DD,0x9707,0x4EBA,0x4EC1,0x5203, +0x5875,0x58EC,0x5C0B,0x751A,0x5C3D,0x814E,0x8A0A,0x8FC5, +0x9663,0x976D,0x7B25,0x8ACF,0x9808,0x9162,0x56F3,0x53A8, + 0,0x9017,0x5439,0x5782,0x5E25,0x63A8,0x6C34,0x708A, +0x7761,0x7C8B,0x7FE0,0x8870,0x9042,0x9154,0x9310,0x9318, +0x968F,0x745E,0x9AC4,0x5D07,0x5D69,0x6570,0x67A2,0x8DA8, +0x96DB,0x636E,0x6749,0x6919,0x83C5,0x9817,0x96C0,0x88FE, +0x6F84,0x647A,0x5BF8,0x4E16,0x702C,0x755D,0x662F,0x51C4, +0x5236,0x52E2,0x59D3,0x5F81,0x6027,0x6210,0x653F,0x6574, +0x661F,0x6674,0x68F2,0x6816,0x6B63,0x6E05,0x7272,0x751F, +0x76DB,0x7CBE,0x8056,0x58F0,0x88FD,0x897F,0x8AA0,0x8A93, +0x8ACB,0x901D,0x9192,0x9752,0x9759,0x6589,0x7A0E,0x8106, +0x96BB,0x5E2D,0x60DC,0x621A,0x65A5,0x6614,0x6790,0x77F3, +0x7A4D,0x7C4D,0x7E3E,0x810A,0x8CAC,0x8D64,0x8DE1,0x8E5F, +0x78A9,0x5207,0x62D9,0x63A5,0x6442,0x6298,0x8A2D,0x7A83, +0x7BC0,0x8AAC,0x96EA,0x7D76,0x820C,0x8749,0x4ED9,0x5148, +0x5343,0x5360,0x5BA3,0x5C02,0x5C16,0x5DDD,0x6226,0x6247, +0x64B0,0x6813,0x6834,0x6CC9,0x6D45,0x6D17,0x67D3,0x6F5C, +0x714E,0x717D,0x65CB,0x7A7F,0x7BAD,0x7DDA, 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, 0, 0, 0, 0, 0, 0, + 0,0x7E4A,0x7FA8,0x817A,0x821B,0x8239,0x85A6,0x8A6E, +0x8CCE,0x8DF5,0x9078,0x9077,0x92AD,0x9291,0x9583,0x9BAE, +0x524D,0x5584,0x6F38,0x7136,0x5168,0x7985,0x7E55,0x81B3, +0x7CCE,0x564C,0x5851,0x5CA8,0x63AA,0x66FE,0x66FD,0x695A, +0x72D9,0x758F,0x758E,0x790E,0x7956,0x79DF,0x7C97,0x7D20, +0x7D44,0x8607,0x8A34,0x963B,0x9061,0x9F20,0x50E7,0x5275, +0x53CC,0x53E2,0x5009,0x55AA,0x58EE,0x594F,0x723D,0x5B8B, +0x5C64,0x531D,0x60E3,0x60F3,0x635C,0x6383,0x633F,0x63BB, + 0,0x64CD,0x65E9,0x66F9,0x5DE3,0x69CD,0x69FD,0x6F15, +0x71E5,0x4E89,0x75E9,0x76F8,0x7A93,0x7CDF,0x7DCF,0x7D9C, +0x8061,0x8349,0x8358,0x846C,0x84BC,0x85FB,0x88C5,0x8D70, +0x9001,0x906D,0x9397,0x971C,0x9A12,0x50CF,0x5897,0x618E, +0x81D3,0x8535,0x8D08,0x9020,0x4FC3,0x5074,0x5247,0x5373, +0x606F,0x6349,0x675F,0x6E2C,0x8DB3,0x901F,0x4FD7,0x5C5E, +0x8CCA,0x65CF,0x7D9A,0x5352,0x8896,0x5176,0x63C3,0x5B58, +0x5B6B,0x5C0A,0x640D,0x6751,0x905C,0x4ED6,0x591A,0x592A, +0x6C70,0x8A51,0x553E,0x5815,0x59A5,0x60F0,0x6253,0x67C1, +0x8235,0x6955,0x9640,0x99C4,0x9A28,0x4F53,0x5806,0x5BFE, +0x8010,0x5CB1,0x5E2F,0x5F85,0x6020,0x614B,0x6234,0x66FF, +0x6CF0,0x6EDE,0x80CE,0x817F,0x82D4,0x888B,0x8CB8,0x9000, +0x902E,0x968A,0x9EDB,0x9BDB,0x4EE3,0x53F0,0x5927,0x7B2C, +0x918D,0x984C,0x9DF9,0x6EDD,0x7027,0x5353,0x5544,0x5B85, +0x6258,0x629E,0x62D3,0x6CA2,0x6FEF,0x7422,0x8A17,0x9438, +0x6FC1,0x8AFE,0x8338,0x51E7,0x86F8,0x53EA, 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, 0, 0, 0, 0, 0, 0, + 0,0x53E9,0x4F46,0x9054,0x8FB0,0x596A,0x8131,0x5DFD, +0x7AEA,0x8FBF,0x68DA,0x8C37,0x72F8,0x9C48,0x6A3D,0x8AB0, +0x4E39,0x5358,0x5606,0x5766,0x62C5,0x63A2,0x65E6,0x6B4E, +0x6DE1,0x6E5B,0x70AD,0x77ED,0x7AEF,0x7BAA,0x7DBB,0x803D, +0x80C6,0x86CB,0x8A95,0x935B,0x56E3,0x58C7,0x5F3E,0x65AD, +0x6696,0x6A80,0x6BB5,0x7537,0x8AC7,0x5024,0x77E5,0x5730, +0x5F1B,0x6065,0x667A,0x6C60,0x75F4,0x7A1A,0x7F6E,0x81F4, +0x8718,0x9045,0x99B3,0x7BC9,0x755C,0x7AF9,0x7B51,0x84C4, + 0,0x9010,0x79E9,0x7A92,0x8336,0x5AE1,0x7740,0x4E2D, +0x4EF2,0x5B99,0x5FE0,0x62BD,0x663C,0x67F1,0x6CE8,0x866B, +0x8877,0x8A3B,0x914E,0x92F3,0x99D0,0x6A17,0x7026,0x732A, +0x82E7,0x8457,0x8CAF,0x4E01,0x5146,0x51CB,0x558B,0x5BF5, +0x5E16,0x5E33,0x5E81,0x5F14,0x5F35,0x5F6B,0x5FB4,0x61F2, +0x6311,0x66A2,0x671D,0x6F6E,0x7252,0x753A,0x773A,0x8074, +0x8139,0x8178,0x8776,0x8ABF,0x8ADC,0x8D85,0x8DF3,0x929A, +0x9577,0x9802,0x9CE5,0x52C5,0x6357,0x76F4,0x6715,0x6C88, +0x73CD,0x8CC3,0x93AE,0x9673,0x6D25,0x589C,0x690E,0x69CC, +0x8FFD,0x939A,0x75DB,0x901A,0x585A,0x6802,0x63B4,0x69FB, +0x4F43,0x6F2C,0x67D8,0x8FBB,0x8526,0x7DB4,0x9354,0x693F, +0x6F70,0x576A,0x58F7,0x5B2C,0x7D2C,0x722A,0x540A,0x91E3, +0x9DB4,0x4EAD,0x4F4E,0x505C,0x5075,0x5243,0x8C9E,0x5448, +0x5824,0x5B9A,0x5E1D,0x5E95,0x5EAD,0x5EF7,0x5F1F,0x608C, +0x62B5,0x633A,0x63D0,0x68AF,0x6C40,0x7887,0x798E,0x7A0B, +0x7DE0,0x8247,0x8A02,0x8AE6,0x8E44,0x9013, 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, 0, 0, 0, 0, 0, 0, + 0,0x90B8,0x912D,0x91D8,0x9F0E,0x6CE5,0x6458,0x64E2, +0x6575,0x6EF4,0x7684,0x7B1B,0x9069,0x93D1,0x6EBA,0x54F2, +0x5FB9,0x64A4,0x8F4D,0x8FED,0x9244,0x5178,0x586B,0x5929, +0x5C55,0x5E97,0x6DFB,0x7E8F,0x751C,0x8CBC,0x8EE2,0x985B, +0x70B9,0x4F1D,0x6BBF,0x6FB1,0x7530,0x96FB,0x514E,0x5410, +0x5835,0x5857,0x59AC,0x5C60,0x5F92,0x6597,0x675C,0x6E21, +0x767B,0x83DF,0x8CED,0x9014,0x90FD,0x934D,0x7825,0x783A, +0x52AA,0x5EA6,0x571F,0x5974,0x6012,0x5012,0x515A,0x51AC, + 0,0x51CD,0x5200,0x5510,0x5854,0x5858,0x5957,0x5B95, +0x5CF6,0x5D8B,0x60BC,0x6295,0x642D,0x6771,0x6843,0x68BC, +0x68DF,0x76D7,0x6DD8,0x6E6F,0x6D9B,0x706F,0x71C8,0x5F53, +0x75D8,0x7977,0x7B49,0x7B54,0x7B52,0x7CD6,0x7D71,0x5230, +0x8463,0x8569,0x85E4,0x8A0E,0x8B04,0x8C46,0x8E0F,0x9003, +0x900F,0x9419,0x9676,0x982D,0x9A30,0x95D8,0x50CD,0x52D5, +0x540C,0x5802,0x5C0E,0x61A7,0x649E,0x6D1E,0x77B3,0x7AE5, +0x80F4,0x8404,0x9053,0x9285,0x5CE0,0x9D07,0x533F,0x5F97, +0x5FB3,0x6D9C,0x7279,0x7763,0x79BF,0x7BE4,0x6BD2,0x72EC, +0x8AAD,0x6803,0x6A61,0x51F8,0x7A81,0x6934,0x5C4A,0x9CF6, +0x82EB,0x5BC5,0x9149,0x701E,0x5678,0x5C6F,0x60C7,0x6566, +0x6C8C,0x8C5A,0x9041,0x9813,0x5451,0x66C7,0x920D,0x5948, +0x90A3,0x5185,0x4E4D,0x51EA,0x8599,0x8B0E,0x7058,0x637A, +0x934B,0x6962,0x99B4,0x7E04,0x7577,0x5357,0x6960,0x8EDF, +0x96E3,0x6C5D,0x4E8C,0x5C3C,0x5F10,0x8FE9,0x5302,0x8CD1, +0x8089,0x8679,0x5EFF,0x65E5,0x4E73,0x5165, 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, 0, 0, 0, 0, 0, 0, + 0,0x5982,0x5C3F,0x97EE,0x4EFB,0x598A,0x5FCD,0x8A8D, +0x6FE1,0x79B0,0x7962,0x5BE7,0x8471,0x732B,0x71B1,0x5E74, +0x5FF5,0x637B,0x649A,0x71C3,0x7C98,0x4E43,0x5EFC,0x4E4B, +0x57DC,0x56A2,0x60A9,0x6FC3,0x7D0D,0x80FD,0x8133,0x81BF, +0x8FB2,0x8997,0x86A4,0x5DF4,0x628A,0x64AD,0x8987,0x6777, +0x6CE2,0x6D3E,0x7436,0x7834,0x5A46,0x7F75,0x82AD,0x99AC, +0x4FF3,0x5EC3,0x62DD,0x6392,0x6557,0x676F,0x76C3,0x724C, +0x80CC,0x80BA,0x8F29,0x914D,0x500D,0x57F9,0x5A92,0x6885, + 0,0x6973,0x7164,0x72FD,0x8CB7,0x58F2,0x8CE0,0x966A, +0x9019,0x877F,0x79E4,0x77E7,0x8429,0x4F2F,0x5265,0x535A, +0x62CD,0x67CF,0x6CCA,0x767D,0x7B94,0x7C95,0x8236,0x8584, +0x8FEB,0x66DD,0x6F20,0x7206,0x7E1B,0x83AB,0x99C1,0x9EA6, +0x51FD,0x7BB1,0x7872,0x7BB8,0x8087,0x7B48,0x6AE8,0x5E61, +0x808C,0x7551,0x7560,0x516B,0x9262,0x6E8C,0x767A,0x9197, +0x9AEA,0x4F10,0x7F70,0x629C,0x7B4F,0x95A5,0x9CE9,0x567A, +0x5859,0x86E4,0x96BC,0x4F34,0x5224,0x534A,0x53CD,0x53DB, +0x5E06,0x642C,0x6591,0x677F,0x6C3E,0x6C4E,0x7248,0x72AF, +0x73ED,0x7554,0x7E41,0x822C,0x85E9,0x8CA9,0x7BC4,0x91C6, +0x7169,0x9812,0x98EF,0x633D,0x6669,0x756A,0x76E4,0x78D0, +0x8543,0x86EE,0x532A,0x5351,0x5426,0x5983,0x5E87,0x5F7C, +0x60B2,0x6249,0x6279,0x62AB,0x6590,0x6BD4,0x6CCC,0x75B2, +0x76AE,0x7891,0x79D8,0x7DCB,0x7F77,0x80A5,0x88AB,0x8AB9, +0x8CBB,0x907F,0x975E,0x98DB,0x6A0B,0x7C38,0x5099,0x5C3E, +0x5FAE,0x6787,0x6BD8,0x7435,0x7709,0x7F8E, 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, 0, 0, 0, 0, 0, 0, + 0,0x9F3B,0x67CA,0x7A17,0x5339,0x758B,0x9AED,0x5F66, +0x819D,0x83F1,0x8098,0x5F3C,0x5FC5,0x7562,0x7B46,0x903C, +0x6867,0x59EB,0x5A9B,0x7D10,0x767E,0x8B2C,0x4FF5,0x5F6A, +0x6A19,0x6C37,0x6F02,0x74E2,0x7968,0x8868,0x8A55,0x8C79, +0x5EDF,0x63CF,0x75C5,0x79D2,0x82D7,0x9328,0x92F2,0x849C, +0x86ED,0x9C2D,0x54C1,0x5F6C,0x658C,0x6D5C,0x7015,0x8CA7, +0x8CD3,0x983B,0x654F,0x74F6,0x4E0D,0x4ED8,0x57E0,0x592B, +0x5A66,0x5BCC,0x51A8,0x5E03,0x5E9C,0x6016,0x6276,0x6577, + 0,0x65A7,0x666E,0x6D6E,0x7236,0x7B26,0x8150,0x819A, +0x8299,0x8B5C,0x8CA0,0x8CE6,0x8D74,0x961C,0x9644,0x4FAE, +0x64AB,0x6B66,0x821E,0x8461,0x856A,0x90E8,0x5C01,0x6953, +0x98A8,0x847A,0x8557,0x4F0F,0x526F,0x5FA9,0x5E45,0x670D, +0x798F,0x8179,0x8907,0x8986,0x6DF5,0x5F17,0x6255,0x6CB8, +0x4ECF,0x7269,0x9B92,0x5206,0x543B,0x5674,0x58B3,0x61A4, +0x626E,0x711A,0x596E,0x7C89,0x7CDE,0x7D1B,0x96F0,0x6587, +0x805E,0x4E19,0x4F75,0x5175,0x5840,0x5E63,0x5E73,0x5F0A, +0x67C4,0x4E26,0x853D,0x9589,0x965B,0x7C73,0x9801,0x50FB, +0x58C1,0x7656,0x78A7,0x5225,0x77A5,0x8511,0x7B86,0x504F, +0x5909,0x7247,0x7BC7,0x7DE8,0x8FBA,0x8FD4,0x904D,0x4FBF, +0x52C9,0x5A29,0x5F01,0x97AD,0x4FDD,0x8217,0x92EA,0x5703, +0x6355,0x6B69,0x752B,0x88DC,0x8F14,0x7A42,0x52DF,0x5893, +0x6155,0x620A,0x66AE,0x6BCD,0x7C3F,0x83E9,0x5023,0x4FF8, +0x5305,0x5446,0x5831,0x5949,0x5B9D,0x5CF0,0x5CEF,0x5D29, +0x5E96,0x62B1,0x6367,0x653E,0x65B9,0x670B, 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, 0, 0, 0, 0, 0, 0, + 0,0x6CD5,0x6CE1,0x70F9,0x7832,0x7E2B,0x80DE,0x82B3, +0x840C,0x84EC,0x8702,0x8912,0x8A2A,0x8C4A,0x90A6,0x92D2, +0x98FD,0x9CF3,0x9D6C,0x4E4F,0x4EA1,0x508D,0x5256,0x574A, +0x59A8,0x5E3D,0x5FD8,0x5FD9,0x623F,0x66B4,0x671B,0x67D0, +0x68D2,0x5192,0x7D21,0x80AA,0x81A8,0x8B00,0x8C8C,0x8CBF, +0x927E,0x9632,0x5420,0x982C,0x5317,0x50D5,0x535C,0x58A8, +0x64B2,0x6734,0x7267,0x7766,0x7A46,0x91E6,0x52C3,0x6CA1, +0x6B86,0x5800,0x5E4C,0x5954,0x672C,0x7FFB,0x51E1,0x76C6, + 0,0x6469,0x78E8,0x9B54,0x9EBB,0x57CB,0x59B9,0x6627, +0x679A,0x6BCE,0x54E9,0x69D9,0x5E55,0x819C,0x6795,0x9BAA, +0x67FE,0x9C52,0x685D,0x4EA6,0x4FE3,0x53C8,0x62B9,0x672B, +0x6CAB,0x8FC4,0x4FAD,0x7E6D,0x9EBF,0x4E07,0x6162,0x6E80, +0x6F2B,0x8513,0x5473,0x672A,0x9B45,0x5DF3,0x7B95,0x5CAC, +0x5BC6,0x871C,0x6E4A,0x84D1,0x7A14,0x8108,0x5999,0x7C8D, +0x6C11,0x7720,0x52D9,0x5922,0x7121,0x725F,0x77DB,0x9727, +0x9D61,0x690B,0x5A7F,0x5A18,0x51A5,0x540D,0x547D,0x660E, +0x76DF,0x8FF7,0x9298,0x9CF4,0x59EA,0x725D,0x6EC5,0x514D, +0x68C9,0x7DBF,0x7DEC,0x9762,0x9EBA,0x6478,0x6A21,0x8302, +0x5984,0x5B5F,0x6BDB,0x731B,0x76F2,0x7DB2,0x8017,0x8499, +0x5132,0x6728,0x9ED9,0x76EE,0x6762,0x52FF,0x9905,0x5C24, +0x623B,0x7C7E,0x8CB0,0x554F,0x60B6,0x7D0B,0x9580,0x5301, +0x4E5F,0x51B6,0x591C,0x723A,0x8036,0x91CE,0x5F25,0x77E2, +0x5384,0x5F79,0x7D04,0x85AC,0x8A33,0x8E8D,0x9756,0x67F3, +0x85AE,0x9453,0x6109,0x6108,0x6CB9,0x7652, 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, 0, 0, 0, 0, 0, 0, + 0,0x8AED,0x8F38,0x552F,0x4F51,0x512A,0x52C7,0x53CB, +0x5BA5,0x5E7D,0x60A0,0x6182,0x63D6,0x6709,0x67DA,0x6E67, +0x6D8C,0x7336,0x7337,0x7531,0x7950,0x88D5,0x8A98,0x904A, +0x9091,0x90F5,0x96C4,0x878D,0x5915,0x4E88,0x4F59,0x4E0E, +0x8A89,0x8F3F,0x9810,0x50AD,0x5E7C,0x5996,0x5BB9,0x5EB8, +0x63DA,0x63FA,0x64C1,0x66DC,0x694A,0x69D8,0x6D0B,0x6EB6, +0x7194,0x7528,0x7AAF,0x7F8A,0x8000,0x8449,0x84C9,0x8981, +0x8B21,0x8E0A,0x9065,0x967D,0x990A,0x617E,0x6291,0x6B32, + 0,0x6C83,0x6D74,0x7FCC,0x7FFC,0x6DC0,0x7F85,0x87BA, +0x88F8,0x6765,0x83B1,0x983C,0x96F7,0x6D1B,0x7D61,0x843D, +0x916A,0x4E71,0x5375,0x5D50,0x6B04,0x6FEB,0x85CD,0x862D, +0x89A7,0x5229,0x540F,0x5C65,0x674E,0x68A8,0x7406,0x7483, +0x75E2,0x88CF,0x88E1,0x91CC,0x96E2,0x9678,0x5F8B,0x7387, +0x7ACB,0x844E,0x63A0,0x7565,0x5289,0x6D41,0x6E9C,0x7409, +0x7559,0x786B,0x7C92,0x9686,0x7ADC,0x9F8D,0x4FB6,0x616E, +0x65C5,0x865C,0x4E86,0x4EAE,0x50DA,0x4E21,0x51CC,0x5BEE, +0x6599,0x6881,0x6DBC,0x731F,0x7642,0x77AD,0x7A1C,0x7CE7, +0x826F,0x8AD2,0x907C,0x91CF,0x9675,0x9818,0x529B,0x7DD1, +0x502B,0x5398,0x6797,0x6DCB,0x71D0,0x7433,0x81E8,0x8F2A, +0x96A3,0x9C57,0x9E9F,0x7460,0x5841,0x6D99,0x7D2F,0x985E, +0x4EE4,0x4F36,0x4F8B,0x51B7,0x52B1,0x5DBA,0x601C,0x73B2, +0x793C,0x82D3,0x9234,0x96B7,0x96F6,0x970A,0x9E97,0x9F62, +0x66A6,0x6B74,0x5217,0x52A3,0x70C8,0x88C2,0x5EC9,0x604B, +0x6190,0x6F23,0x7149,0x7C3E,0x7DF4,0x806F, 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, 0, 0, 0, 0, 0, 0, + 0,0x84EE,0x9023,0x932C,0x5442,0x9B6F,0x6AD3,0x7089, +0x8CC2,0x8DEF,0x9732,0x52B4,0x5A41,0x5ECA,0x5F04,0x6717, +0x697C,0x6994,0x6D6A,0x6F0F,0x7262,0x72FC,0x7BED,0x8001, +0x807E,0x874B,0x90CE,0x516D,0x9E93,0x7984,0x808B,0x9332, +0x8AD6,0x502D,0x548C,0x8A71,0x6B6A,0x8CC4,0x8107,0x60D1, +0x67A0,0x9DF2,0x4E99,0x4E98,0x9C10,0x8A6B,0x85C1,0x8568, +0x6900,0x6E7E,0x7897,0x8155, 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, +0x5F0C,0x4E10,0x4E15,0x4E2A,0x4E31,0x4E36,0x4E3C,0x4E3F, +0x4E42,0x4E56,0x4E58,0x4E82,0x4E85,0x8C6B,0x4E8A,0x8212, +0x5F0D,0x4E8E,0x4E9E,0x4E9F,0x4EA0,0x4EA2,0x4EB0,0x4EB3, +0x4EB6,0x4ECE,0x4ECD,0x4EC4,0x4EC6,0x4EC2,0x4ED7,0x4EDE, +0x4EED,0x4EDF,0x4EF7,0x4F09,0x4F5A,0x4F30,0x4F5B,0x4F5D, +0x4F57,0x4F47,0x4F76,0x4F88,0x4F8F,0x4F98,0x4F7B,0x4F69, +0x4F70,0x4F91,0x4F6F,0x4F86,0x4F96,0x5118,0x4FD4,0x4FDF, +0x4FCE,0x4FD8,0x4FDB,0x4FD1,0x4FDA,0x4FD0,0x4FE4,0x4FE5, +0x501A,0x5028,0x5014,0x502A,0x5025,0x5005,0x4F1C,0x4FF6, +0x5021,0x5029,0x502C,0x4FFE,0x4FEF,0x5011,0x5006,0x5043, +0x5047,0x6703,0x5055,0x5050,0x5048,0x505A,0x5056,0x506C, +0x5078,0x5080,0x509A,0x5085,0x50B4,0x50B2, 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, 0, 0, 0, 0, 0, 0, + 0,0x50C9,0x50CA,0x50B3,0x50C2,0x50D6,0x50DE,0x50E5, +0x50ED,0x50E3,0x50EE,0x50F9,0x50F5,0x5109,0x5101,0x5102, +0x5116,0x5115,0x5114,0x511A,0x5121,0x513A,0x5137,0x513C, +0x513B,0x513F,0x5140,0x5152,0x514C,0x5154,0x5162,0x7AF8, +0x5169,0x516A,0x516E,0x5180,0x5182,0x56D8,0x518C,0x5189, +0x518F,0x5191,0x5193,0x5195,0x5196,0x51A4,0x51A6,0x51A2, +0x51A9,0x51AA,0x51AB,0x51B3,0x51B1,0x51B2,0x51B0,0x51B5, +0x51BD,0x51C5,0x51C9,0x51DB,0x51E0,0x8655,0x51E9,0x51ED, + 0,0x51F0,0x51F5,0x51FE,0x5204,0x520B,0x5214,0x520E, +0x5227,0x522A,0x522E,0x5233,0x5239,0x524F,0x5244,0x524B, +0x524C,0x525E,0x5254,0x526A,0x5274,0x5269,0x5273,0x527F, +0x527D,0x528D,0x5294,0x5292,0x5271,0x5288,0x5291,0x8FA8, +0x8FA7,0x52AC,0x52AD,0x52BC,0x52B5,0x52C1,0x52CD,0x52D7, +0x52DE,0x52E3,0x52E6,0x98ED,0x52E0,0x52F3,0x52F5,0x52F8, +0x52F9,0x5306,0x5308,0x7538,0x530D,0x5310,0x530F,0x5315, +0x531A,0x5323,0x532F,0x5331,0x5333,0x5338,0x5340,0x5346, +0x5345,0x4E17,0x5349,0x534D,0x51D6,0x535E,0x5369,0x536E, +0x5918,0x537B,0x5377,0x5382,0x5396,0x53A0,0x53A6,0x53A5, +0x53AE,0x53B0,0x53B6,0x53C3,0x7C12,0x96D9,0x53DF,0x66FC, +0x71EE,0x53EE,0x53E8,0x53ED,0x53FA,0x5401,0x543D,0x5440, +0x542C,0x542D,0x543C,0x542E,0x5436,0x5429,0x541D,0x544E, +0x548F,0x5475,0x548E,0x545F,0x5471,0x5477,0x5470,0x5492, +0x547B,0x5480,0x5476,0x5484,0x5490,0x5486,0x54C7,0x54A2, +0x54B8,0x54A5,0x54AC,0x54C4,0x54C8,0x54A8, 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, 0, 0, 0, 0, 0, 0, + 0,0x54AB,0x54C2,0x54A4,0x54BE,0x54BC,0x54D8,0x54E5, +0x54E6,0x550F,0x5514,0x54FD,0x54EE,0x54ED,0x54FA,0x54E2, +0x5539,0x5540,0x5563,0x554C,0x552E,0x555C,0x5545,0x5556, +0x5557,0x5538,0x5533,0x555D,0x5599,0x5580,0x54AF,0x558A, +0x559F,0x557B,0x557E,0x5598,0x559E,0x55AE,0x557C,0x5583, +0x55A9,0x5587,0x55A8,0x55DA,0x55C5,0x55DF,0x55C4,0x55DC, +0x55E4,0x55D4,0x5614,0x55F7,0x5616,0x55FE,0x55FD,0x561B, +0x55F9,0x564E,0x5650,0x71DF,0x5634,0x5636,0x5632,0x5638, + 0,0x566B,0x5664,0x562F,0x566C,0x566A,0x5686,0x5680, +0x568A,0x56A0,0x5694,0x568F,0x56A5,0x56AE,0x56B6,0x56B4, +0x56C2,0x56BC,0x56C1,0x56C3,0x56C0,0x56C8,0x56CE,0x56D1, +0x56D3,0x56D7,0x56EE,0x56F9,0x5700,0x56FF,0x5704,0x5709, +0x5708,0x570B,0x570D,0x5713,0x5718,0x5716,0x55C7,0x571C, +0x5726,0x5737,0x5738,0x574E,0x573B,0x5740,0x574F,0x5769, +0x57C0,0x5788,0x5761,0x577F,0x5789,0x5793,0x57A0,0x57B3, +0x57A4,0x57AA,0x57B0,0x57C3,0x57C6,0x57D4,0x57D2,0x57D3, +0x580A,0x57D6,0x57E3,0x580B,0x5819,0x581D,0x5872,0x5821, +0x5862,0x584B,0x5870,0x6BC0,0x5852,0x583D,0x5879,0x5885, +0x58B9,0x589F,0x58AB,0x58BA,0x58DE,0x58BB,0x58B8,0x58AE, +0x58C5,0x58D3,0x58D1,0x58D7,0x58D9,0x58D8,0x58E5,0x58DC, +0x58E4,0x58DF,0x58EF,0x58FA,0x58F9,0x58FB,0x58FC,0x58FD, +0x5902,0x590A,0x5910,0x591B,0x68A6,0x5925,0x592C,0x592D, +0x5932,0x5938,0x593E,0x7AD2,0x5955,0x5950,0x594E,0x595A, +0x5958,0x5962,0x5960,0x5967,0x596C,0x5969, 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, 0, 0, 0, 0, 0, 0, + 0,0x5978,0x5981,0x599D,0x4F5E,0x4FAB,0x59A3,0x59B2, +0x59C6,0x59E8,0x59DC,0x598D,0x59D9,0x59DA,0x5A25,0x5A1F, +0x5A11,0x5A1C,0x5A09,0x5A1A,0x5A40,0x5A6C,0x5A49,0x5A35, +0x5A36,0x5A62,0x5A6A,0x5A9A,0x5ABC,0x5ABE,0x5ACB,0x5AC2, +0x5ABD,0x5AE3,0x5AD7,0x5AE6,0x5AE9,0x5AD6,0x5AFA,0x5AFB, +0x5B0C,0x5B0B,0x5B16,0x5B32,0x5AD0,0x5B2A,0x5B36,0x5B3E, +0x5B43,0x5B45,0x5B40,0x5B51,0x5B55,0x5B5A,0x5B5B,0x5B65, +0x5B69,0x5B70,0x5B73,0x5B75,0x5B78,0x6588,0x5B7A,0x5B80, + 0,0x5B83,0x5BA6,0x5BB8,0x5BC3,0x5BC7,0x5BC9,0x5BD4, +0x5BD0,0x5BE4,0x5BE6,0x5BE2,0x5BDE,0x5BE5,0x5BEB,0x5BF0, +0x5BF6,0x5BF3,0x5C05,0x5C07,0x5C08,0x5C0D,0x5C13,0x5C20, +0x5C22,0x5C28,0x5C38,0x5C39,0x5C41,0x5C46,0x5C4E,0x5C53, +0x5C50,0x5C4F,0x5B71,0x5C6C,0x5C6E,0x4E62,0x5C76,0x5C79, +0x5C8C,0x5C91,0x5C94,0x599B,0x5CAB,0x5CBB,0x5CB6,0x5CBC, +0x5CB7,0x5CC5,0x5CBE,0x5CC7,0x5CD9,0x5CE9,0x5CFD,0x5CFA, +0x5CED,0x5D8C,0x5CEA,0x5D0B,0x5D15,0x5D17,0x5D5C,0x5D1F, +0x5D1B,0x5D11,0x5D14,0x5D22,0x5D1A,0x5D19,0x5D18,0x5D4C, +0x5D52,0x5D4E,0x5D4B,0x5D6C,0x5D73,0x5D76,0x5D87,0x5D84, +0x5D82,0x5DA2,0x5D9D,0x5DAC,0x5DAE,0x5DBD,0x5D90,0x5DB7, +0x5DBC,0x5DC9,0x5DCD,0x5DD3,0x5DD2,0x5DD6,0x5DDB,0x5DEB, +0x5DF2,0x5DF5,0x5E0B,0x5E1A,0x5E19,0x5E11,0x5E1B,0x5E36, +0x5E37,0x5E44,0x5E43,0x5E40,0x5E4E,0x5E57,0x5E54,0x5E5F, +0x5E62,0x5E64,0x5E47,0x5E75,0x5E76,0x5E7A,0x9EBC,0x5E7F, +0x5EA0,0x5EC1,0x5EC2,0x5EC8,0x5ED0,0x5ECF, 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, 0, 0, 0, 0, 0, 0, + 0,0x5ED6,0x5EE3,0x5EDD,0x5EDA,0x5EDB,0x5EE2,0x5EE1, +0x5EE8,0x5EE9,0x5EEC,0x5EF1,0x5EF3,0x5EF0,0x5EF4,0x5EF8, +0x5EFE,0x5F03,0x5F09,0x5F5D,0x5F5C,0x5F0B,0x5F11,0x5F16, +0x5F29,0x5F2D,0x5F38,0x5F41,0x5F48,0x5F4C,0x5F4E,0x5F2F, +0x5F51,0x5F56,0x5F57,0x5F59,0x5F61,0x5F6D,0x5F73,0x5F77, +0x5F83,0x5F82,0x5F7F,0x5F8A,0x5F88,0x5F91,0x5F87,0x5F9E, +0x5F99,0x5F98,0x5FA0,0x5FA8,0x5FAD,0x5FBC,0x5FD6,0x5FFB, +0x5FE4,0x5FF8,0x5FF1,0x5FDD,0x60B3,0x5FFF,0x6021,0x6060, + 0,0x6019,0x6010,0x6029,0x600E,0x6031,0x601B,0x6015, +0x602B,0x6026,0x600F,0x603A,0x605A,0x6041,0x606A,0x6077, +0x605F,0x604A,0x6046,0x604D,0x6063,0x6043,0x6064,0x6042, +0x606C,0x606B,0x6059,0x6081,0x608D,0x60E7,0x6083,0x609A, +0x6084,0x609B,0x6096,0x6097,0x6092,0x60A7,0x608B,0x60E1, +0x60B8,0x60E0,0x60D3,0x60B4,0x5FF0,0x60BD,0x60C6,0x60B5, +0x60D8,0x614D,0x6115,0x6106,0x60F6,0x60F7,0x6100,0x60F4, +0x60FA,0x6103,0x6121,0x60FB,0x60F1,0x610D,0x610E,0x6147, +0x613E,0x6128,0x6127,0x614A,0x613F,0x613C,0x612C,0x6134, +0x613D,0x6142,0x6144,0x6173,0x6177,0x6158,0x6159,0x615A, +0x616B,0x6174,0x616F,0x6165,0x6171,0x615F,0x615D,0x6153, +0x6175,0x6199,0x6196,0x6187,0x61AC,0x6194,0x619A,0x618A, +0x6191,0x61AB,0x61AE,0x61CC,0x61CA,0x61C9,0x61F7,0x61C8, +0x61C3,0x61C6,0x61BA,0x61CB,0x7F79,0x61CD,0x61E6,0x61E3, +0x61F6,0x61FA,0x61F4,0x61FF,0x61FD,0x61FC,0x61FE,0x6200, +0x6208,0x6209,0x620D,0x620C,0x6214,0x621B, 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, 0, 0, 0, 0, 0, 0, + 0,0x621E,0x6221,0x622A,0x622E,0x6230,0x6232,0x6233, +0x6241,0x624E,0x625E,0x6263,0x625B,0x6260,0x6268,0x627C, +0x6282,0x6289,0x627E,0x6292,0x6293,0x6296,0x62D4,0x6283, +0x6294,0x62D7,0x62D1,0x62BB,0x62CF,0x62FF,0x62C6,0x64D4, +0x62C8,0x62DC,0x62CC,0x62CA,0x62C2,0x62C7,0x629B,0x62C9, +0x630C,0x62EE,0x62F1,0x6327,0x6302,0x6308,0x62EF,0x62F5, +0x6350,0x633E,0x634D,0x641C,0x634F,0x6396,0x638E,0x6380, +0x63AB,0x6376,0x63A3,0x638F,0x6389,0x639F,0x63B5,0x636B, + 0,0x6369,0x63BE,0x63E9,0x63C0,0x63C6,0x63E3,0x63C9, +0x63D2,0x63F6,0x63C4,0x6416,0x6434,0x6406,0x6413,0x6426, +0x6436,0x651D,0x6417,0x6428,0x640F,0x6467,0x646F,0x6476, +0x644E,0x652A,0x6495,0x6493,0x64A5,0x64A9,0x6488,0x64BC, +0x64DA,0x64D2,0x64C5,0x64C7,0x64BB,0x64D8,0x64C2,0x64F1, +0x64E7,0x8209,0x64E0,0x64E1,0x62AC,0x64E3,0x64EF,0x652C, +0x64F6,0x64F4,0x64F2,0x64FA,0x6500,0x64FD,0x6518,0x651C, +0x6505,0x6524,0x6523,0x652B,0x6534,0x6535,0x6537,0x6536, +0x6538,0x754B,0x6548,0x6556,0x6555,0x654D,0x6558,0x655E, +0x655D,0x6572,0x6578,0x6582,0x6583,0x8B8A,0x659B,0x659F, +0x65AB,0x65B7,0x65C3,0x65C6,0x65C1,0x65C4,0x65CC,0x65D2, +0x65DB,0x65D9,0x65E0,0x65E1,0x65F1,0x6772,0x660A,0x6603, +0x65FB,0x6773,0x6635,0x6636,0x6634,0x661C,0x664F,0x6644, +0x6649,0x6641,0x665E,0x665D,0x6664,0x6667,0x6668,0x665F, +0x6662,0x6670,0x6683,0x6688,0x668E,0x6689,0x6684,0x6698, +0x669D,0x66C1,0x66B9,0x66C9,0x66BE,0x66BC, 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, 0, 0, 0, 0, 0, 0, + 0,0x66C4,0x66B8,0x66D6,0x66DA,0x66E0,0x663F,0x66E6, +0x66E9,0x66F0,0x66F5,0x66F7,0x670F,0x6716,0x671E,0x6726, +0x6727,0x9738,0x672E,0x673F,0x6736,0x6741,0x6738,0x6737, +0x6746,0x675E,0x6760,0x6759,0x6763,0x6764,0x6789,0x6770, +0x67A9,0x677C,0x676A,0x678C,0x678B,0x67A6,0x67A1,0x6785, +0x67B7,0x67EF,0x67B4,0x67EC,0x67B3,0x67E9,0x67B8,0x67E4, +0x67DE,0x67DD,0x67E2,0x67EE,0x67B9,0x67CE,0x67C6,0x67E7, +0x6A9C,0x681E,0x6846,0x6829,0x6840,0x684D,0x6832,0x684E, + 0,0x68B3,0x682B,0x6859,0x6863,0x6877,0x687F,0x689F, +0x688F,0x68AD,0x6894,0x689D,0x689B,0x6883,0x6AAE,0x68B9, +0x6874,0x68B5,0x68A0,0x68BA,0x690F,0x688D,0x687E,0x6901, +0x68CA,0x6908,0x68D8,0x6922,0x6926,0x68E1,0x690C,0x68CD, +0x68D4,0x68E7,0x68D5,0x6936,0x6912,0x6904,0x68D7,0x68E3, +0x6925,0x68F9,0x68E0,0x68EF,0x6928,0x692A,0x691A,0x6923, +0x6921,0x68C6,0x6979,0x6977,0x695C,0x6978,0x696B,0x6954, +0x697E,0x696E,0x6939,0x6974,0x693D,0x6959,0x6930,0x6961, +0x695E,0x695D,0x6981,0x696A,0x69B2,0x69AE,0x69D0,0x69BF, +0x69C1,0x69D3,0x69BE,0x69CE,0x5BE8,0x69CA,0x69DD,0x69BB, +0x69C3,0x69A7,0x6A2E,0x6991,0x69A0,0x699C,0x6995,0x69B4, +0x69DE,0x69E8,0x6A02,0x6A1B,0x69FF,0x6B0A,0x69F9,0x69F2, +0x69E7,0x6A05,0x69B1,0x6A1E,0x69ED,0x6A14,0x69EB,0x6A0A, +0x6A12,0x6AC1,0x6A23,0x6A13,0x6A44,0x6A0C,0x6A72,0x6A36, +0x6A78,0x6A47,0x6A62,0x6A59,0x6A66,0x6A48,0x6A38,0x6A22, +0x6A90,0x6A8D,0x6AA0,0x6A84,0x6AA2,0x6AA3, 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, 0, 0, 0, 0, 0, 0, + 0,0x6A97,0x8617,0x6ABB,0x6AC3,0x6AC2,0x6AB8,0x6AB3, +0x6AAC,0x6ADE,0x6AD1,0x6ADF,0x6AAA,0x6ADA,0x6AEA,0x6AFB, +0x6B05,0x8616,0x6AFA,0x6B12,0x6B16,0x9B31,0x6B1F,0x6B38, +0x6B37,0x76DC,0x6B39,0x98EE,0x6B47,0x6B43,0x6B49,0x6B50, +0x6B59,0x6B54,0x6B5B,0x6B5F,0x6B61,0x6B78,0x6B79,0x6B7F, +0x6B80,0x6B84,0x6B83,0x6B8D,0x6B98,0x6B95,0x6B9E,0x6BA4, +0x6BAA,0x6BAB,0x6BAF,0x6BB2,0x6BB1,0x6BB3,0x6BB7,0x6BBC, +0x6BC6,0x6BCB,0x6BD3,0x6BDF,0x6BEC,0x6BEB,0x6BF3,0x6BEF, + 0,0x9EBE,0x6C08,0x6C13,0x6C14,0x6C1B,0x6C24,0x6C23, +0x6C5E,0x6C55,0x6C62,0x6C6A,0x6C82,0x6C8D,0x6C9A,0x6C81, +0x6C9B,0x6C7E,0x6C68,0x6C73,0x6C92,0x6C90,0x6CC4,0x6CF1, +0x6CD3,0x6CBD,0x6CD7,0x6CC5,0x6CDD,0x6CAE,0x6CB1,0x6CBE, +0x6CBA,0x6CDB,0x6CEF,0x6CD9,0x6CEA,0x6D1F,0x884D,0x6D36, +0x6D2B,0x6D3D,0x6D38,0x6D19,0x6D35,0x6D33,0x6D12,0x6D0C, +0x6D63,0x6D93,0x6D64,0x6D5A,0x6D79,0x6D59,0x6D8E,0x6D95, +0x6FE4,0x6D85,0x6DF9,0x6E15,0x6E0A,0x6DB5,0x6DC7,0x6DE6, +0x6DB8,0x6DC6,0x6DEC,0x6DDE,0x6DCC,0x6DE8,0x6DD2,0x6DC5, +0x6DFA,0x6DD9,0x6DE4,0x6DD5,0x6DEA,0x6DEE,0x6E2D,0x6E6E, +0x6E2E,0x6E19,0x6E72,0x6E5F,0x6E3E,0x6E23,0x6E6B,0x6E2B, +0x6E76,0x6E4D,0x6E1F,0x6E43,0x6E3A,0x6E4E,0x6E24,0x6EFF, +0x6E1D,0x6E38,0x6E82,0x6EAA,0x6E98,0x6EC9,0x6EB7,0x6ED3, +0x6EBD,0x6EAF,0x6EC4,0x6EB2,0x6ED4,0x6ED5,0x6E8F,0x6EA5, +0x6EC2,0x6E9F,0x6F41,0x6F11,0x704C,0x6EEC,0x6EF8,0x6EFE, +0x6F3F,0x6EF2,0x6F31,0x6EEF,0x6F32,0x6ECC}; + +/* page 4 0xE040-0xEAA4 */ +static uint16 tab_cp932_uni4[]={ +0x6F3E,0x6F13,0x6EF7,0x6F86,0x6F7A,0x6F78,0x6F81,0x6F80, +0x6F6F,0x6F5B,0x6FF3,0x6F6D,0x6F82,0x6F7C,0x6F58,0x6F8E, +0x6F91,0x6FC2,0x6F66,0x6FB3,0x6FA3,0x6FA1,0x6FA4,0x6FB9, +0x6FC6,0x6FAA,0x6FDF,0x6FD5,0x6FEC,0x6FD4,0x6FD8,0x6FF1, +0x6FEE,0x6FDB,0x7009,0x700B,0x6FFA,0x7011,0x7001,0x700F, +0x6FFE,0x701B,0x701A,0x6F74,0x701D,0x7018,0x701F,0x7030, +0x703E,0x7032,0x7051,0x7063,0x7099,0x7092,0x70AF,0x70F1, +0x70AC,0x70B8,0x70B3,0x70AE,0x70DF,0x70CB,0x70DD, 0, +0x70D9,0x7109,0x70FD,0x711C,0x7119,0x7165,0x7155,0x7188, +0x7166,0x7162,0x714C,0x7156,0x716C,0x718F,0x71FB,0x7184, +0x7195,0x71A8,0x71AC,0x71D7,0x71B9,0x71BE,0x71D2,0x71C9, +0x71D4,0x71CE,0x71E0,0x71EC,0x71E7,0x71F5,0x71FC,0x71F9, +0x71FF,0x720D,0x7210,0x721B,0x7228,0x722D,0x722C,0x7230, +0x7232,0x723B,0x723C,0x723F,0x7240,0x7246,0x724B,0x7258, +0x7274,0x727E,0x7282,0x7281,0x7287,0x7292,0x7296,0x72A2, +0x72A7,0x72B9,0x72B2,0x72C3,0x72C6,0x72C4,0x72CE,0x72D2, +0x72E2,0x72E0,0x72E1,0x72F9,0x72F7,0x500F,0x7317,0x730A, +0x731C,0x7316,0x731D,0x7334,0x732F,0x7329,0x7325,0x733E, +0x734E,0x734F,0x9ED8,0x7357,0x736A,0x7368,0x7370,0x7378, +0x7375,0x737B,0x737A,0x73C8,0x73B3,0x73CE,0x73BB,0x73C0, +0x73E5,0x73EE,0x73DE,0x74A2,0x7405,0x746F,0x7425,0x73F8, +0x7432,0x743A,0x7455,0x743F,0x745F,0x7459,0x7441,0x745C, +0x7469,0x7470,0x7463,0x746A,0x7476,0x747E,0x748B,0x749E, +0x74A7,0x74CA,0x74CF,0x74D4,0x73F1, 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, 0, 0, 0, 0, 0, 0, 0, +0x74E0,0x74E3,0x74E7,0x74E9,0x74EE,0x74F2,0x74F0,0x74F1, +0x74F8,0x74F7,0x7504,0x7503,0x7505,0x750C,0x750E,0x750D, +0x7515,0x7513,0x751E,0x7526,0x752C,0x753C,0x7544,0x754D, +0x754A,0x7549,0x755B,0x7546,0x755A,0x7569,0x7564,0x7567, +0x756B,0x756D,0x7578,0x7576,0x7586,0x7587,0x7574,0x758A, +0x7589,0x7582,0x7594,0x759A,0x759D,0x75A5,0x75A3,0x75C2, +0x75B3,0x75C3,0x75B5,0x75BD,0x75B8,0x75BC,0x75B1,0x75CD, +0x75CA,0x75D2,0x75D9,0x75E3,0x75DE,0x75FE,0x75FF, 0, +0x75FC,0x7601,0x75F0,0x75FA,0x75F2,0x75F3,0x760B,0x760D, +0x7609,0x761F,0x7627,0x7620,0x7621,0x7622,0x7624,0x7634, +0x7630,0x763B,0x7647,0x7648,0x7646,0x765C,0x7658,0x7661, +0x7662,0x7668,0x7669,0x766A,0x7667,0x766C,0x7670,0x7672, +0x7676,0x7678,0x767C,0x7680,0x7683,0x7688,0x768B,0x768E, +0x7696,0x7693,0x7699,0x769A,0x76B0,0x76B4,0x76B8,0x76B9, +0x76BA,0x76C2,0x76CD,0x76D6,0x76D2,0x76DE,0x76E1,0x76E5, +0x76E7,0x76EA,0x862F,0x76FB,0x7708,0x7707,0x7704,0x7729, +0x7724,0x771E,0x7725,0x7726,0x771B,0x7737,0x7738,0x7747, +0x775A,0x7768,0x776B,0x775B,0x7765,0x777F,0x777E,0x7779, +0x778E,0x778B,0x7791,0x77A0,0x779E,0x77B0,0x77B6,0x77B9, +0x77BF,0x77BC,0x77BD,0x77BB,0x77C7,0x77CD,0x77D7,0x77DA, +0x77DC,0x77E3,0x77EE,0x77FC,0x780C,0x7812,0x7926,0x7820, +0x792A,0x7845,0x788E,0x7874,0x7886,0x787C,0x789A,0x788C, +0x78A3,0x78B5,0x78AA,0x78AF,0x78D1,0x78C6,0x78CB,0x78D4, +0x78BE,0x78BC,0x78C5,0x78CA,0x78EC, 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, 0, 0, 0, 0, 0, 0, 0, +0x78E7,0x78DA,0x78FD,0x78F4,0x7907,0x7912,0x7911,0x7919, +0x792C,0x792B,0x7940,0x7960,0x7957,0x795F,0x795A,0x7955, +0x7953,0x797A,0x797F,0x798A,0x799D,0x79A7,0x9F4B,0x79AA, +0x79AE,0x79B3,0x79B9,0x79BA,0x79C9,0x79D5,0x79E7,0x79EC, +0x79E1,0x79E3,0x7A08,0x7A0D,0x7A18,0x7A19,0x7A20,0x7A1F, +0x7980,0x7A31,0x7A3B,0x7A3E,0x7A37,0x7A43,0x7A57,0x7A49, +0x7A61,0x7A62,0x7A69,0x9F9D,0x7A70,0x7A79,0x7A7D,0x7A88, +0x7A97,0x7A95,0x7A98,0x7A96,0x7AA9,0x7AC8,0x7AB0, 0, +0x7AB6,0x7AC5,0x7AC4,0x7ABF,0x9083,0x7AC7,0x7ACA,0x7ACD, +0x7ACF,0x7AD5,0x7AD3,0x7AD9,0x7ADA,0x7ADD,0x7AE1,0x7AE2, +0x7AE6,0x7AED,0x7AF0,0x7B02,0x7B0F,0x7B0A,0x7B06,0x7B33, +0x7B18,0x7B19,0x7B1E,0x7B35,0x7B28,0x7B36,0x7B50,0x7B7A, +0x7B04,0x7B4D,0x7B0B,0x7B4C,0x7B45,0x7B75,0x7B65,0x7B74, +0x7B67,0x7B70,0x7B71,0x7B6C,0x7B6E,0x7B9D,0x7B98,0x7B9F, +0x7B8D,0x7B9C,0x7B9A,0x7B8B,0x7B92,0x7B8F,0x7B5D,0x7B99, +0x7BCB,0x7BC1,0x7BCC,0x7BCF,0x7BB4,0x7BC6,0x7BDD,0x7BE9, +0x7C11,0x7C14,0x7BE6,0x7BE5,0x7C60,0x7C00,0x7C07,0x7C13, +0x7BF3,0x7BF7,0x7C17,0x7C0D,0x7BF6,0x7C23,0x7C27,0x7C2A, +0x7C1F,0x7C37,0x7C2B,0x7C3D,0x7C4C,0x7C43,0x7C54,0x7C4F, +0x7C40,0x7C50,0x7C58,0x7C5F,0x7C64,0x7C56,0x7C65,0x7C6C, +0x7C75,0x7C83,0x7C90,0x7CA4,0x7CAD,0x7CA2,0x7CAB,0x7CA1, +0x7CA8,0x7CB3,0x7CB2,0x7CB1,0x7CAE,0x7CB9,0x7CBD,0x7CC0, +0x7CC5,0x7CC2,0x7CD8,0x7CD2,0x7CDC,0x7CE2,0x9B3B,0x7CEF, +0x7CF2,0x7CF4,0x7CF6,0x7CFA,0x7D06, 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, 0, 0, 0, 0, 0, 0, 0, +0x7D02,0x7D1C,0x7D15,0x7D0A,0x7D45,0x7D4B,0x7D2E,0x7D32, +0x7D3F,0x7D35,0x7D46,0x7D73,0x7D56,0x7D4E,0x7D72,0x7D68, +0x7D6E,0x7D4F,0x7D63,0x7D93,0x7D89,0x7D5B,0x7D8F,0x7D7D, +0x7D9B,0x7DBA,0x7DAE,0x7DA3,0x7DB5,0x7DC7,0x7DBD,0x7DAB, +0x7E3D,0x7DA2,0x7DAF,0x7DDC,0x7DB8,0x7D9F,0x7DB0,0x7DD8, +0x7DDD,0x7DE4,0x7DDE,0x7DFB,0x7DF2,0x7DE1,0x7E05,0x7E0A, +0x7E23,0x7E21,0x7E12,0x7E31,0x7E1F,0x7E09,0x7E0B,0x7E22, +0x7E46,0x7E66,0x7E3B,0x7E35,0x7E39,0x7E43,0x7E37, 0, +0x7E32,0x7E3A,0x7E67,0x7E5D,0x7E56,0x7E5E,0x7E59,0x7E5A, +0x7E79,0x7E6A,0x7E69,0x7E7C,0x7E7B,0x7E83,0x7DD5,0x7E7D, +0x8FAE,0x7E7F,0x7E88,0x7E89,0x7E8C,0x7E92,0x7E90,0x7E93, +0x7E94,0x7E96,0x7E8E,0x7E9B,0x7E9C,0x7F38,0x7F3A,0x7F45, +0x7F4C,0x7F4D,0x7F4E,0x7F50,0x7F51,0x7F55,0x7F54,0x7F58, +0x7F5F,0x7F60,0x7F68,0x7F69,0x7F67,0x7F78,0x7F82,0x7F86, +0x7F83,0x7F88,0x7F87,0x7F8C,0x7F94,0x7F9E,0x7F9D,0x7F9A, +0x7FA3,0x7FAF,0x7FB2,0x7FB9,0x7FAE,0x7FB6,0x7FB8,0x8B71, +0x7FC5,0x7FC6,0x7FCA,0x7FD5,0x7FD4,0x7FE1,0x7FE6,0x7FE9, +0x7FF3,0x7FF9,0x98DC,0x8006,0x8004,0x800B,0x8012,0x8018, +0x8019,0x801C,0x8021,0x8028,0x803F,0x803B,0x804A,0x8046, +0x8052,0x8058,0x805A,0x805F,0x8062,0x8068,0x8073,0x8072, +0x8070,0x8076,0x8079,0x807D,0x807F,0x8084,0x8086,0x8085, +0x809B,0x8093,0x809A,0x80AD,0x5190,0x80AC,0x80DB,0x80E5, +0x80D9,0x80DD,0x80C4,0x80DA,0x80D6,0x8109,0x80EF,0x80F1, +0x811B,0x8129,0x8123,0x812F,0x814B, 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, 0, 0, 0, 0, 0, 0, 0, +0x968B,0x8146,0x813E,0x8153,0x8151,0x80FC,0x8171,0x816E, +0x8165,0x8166,0x8174,0x8183,0x8188,0x818A,0x8180,0x8182, +0x81A0,0x8195,0x81A4,0x81A3,0x815F,0x8193,0x81A9,0x81B0, +0x81B5,0x81BE,0x81B8,0x81BD,0x81C0,0x81C2,0x81BA,0x81C9, +0x81CD,0x81D1,0x81D9,0x81D8,0x81C8,0x81DA,0x81DF,0x81E0, +0x81E7,0x81FA,0x81FB,0x81FE,0x8201,0x8202,0x8205,0x8207, +0x820A,0x820D,0x8210,0x8216,0x8229,0x822B,0x8238,0x8233, +0x8240,0x8259,0x8258,0x825D,0x825A,0x825F,0x8264, 0, +0x8262,0x8268,0x826A,0x826B,0x822E,0x8271,0x8277,0x8278, +0x827E,0x828D,0x8292,0x82AB,0x829F,0x82BB,0x82AC,0x82E1, +0x82E3,0x82DF,0x82D2,0x82F4,0x82F3,0x82FA,0x8393,0x8303, +0x82FB,0x82F9,0x82DE,0x8306,0x82DC,0x8309,0x82D9,0x8335, +0x8334,0x8316,0x8332,0x8331,0x8340,0x8339,0x8350,0x8345, +0x832F,0x832B,0x8317,0x8318,0x8385,0x839A,0x83AA,0x839F, +0x83A2,0x8396,0x8323,0x838E,0x8387,0x838A,0x837C,0x83B5, +0x8373,0x8375,0x83A0,0x8389,0x83A8,0x83F4,0x8413,0x83EB, +0x83CE,0x83FD,0x8403,0x83D8,0x840B,0x83C1,0x83F7,0x8407, +0x83E0,0x83F2,0x840D,0x8422,0x8420,0x83BD,0x8438,0x8506, +0x83FB,0x846D,0x842A,0x843C,0x855A,0x8484,0x8477,0x846B, +0x84AD,0x846E,0x8482,0x8469,0x8446,0x842C,0x846F,0x8479, +0x8435,0x84CA,0x8462,0x84B9,0x84BF,0x849F,0x84D9,0x84CD, +0x84BB,0x84DA,0x84D0,0x84C1,0x84C6,0x84D6,0x84A1,0x8521, +0x84FF,0x84F4,0x8517,0x8518,0x852C,0x851F,0x8515,0x8514, +0x84FC,0x8540,0x8563,0x8558,0x8548, 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, 0, 0, 0, 0, 0, 0, 0, +0x8541,0x8602,0x854B,0x8555,0x8580,0x85A4,0x8588,0x8591, +0x858A,0x85A8,0x856D,0x8594,0x859B,0x85EA,0x8587,0x859C, +0x8577,0x857E,0x8590,0x85C9,0x85BA,0x85CF,0x85B9,0x85D0, +0x85D5,0x85DD,0x85E5,0x85DC,0x85F9,0x860A,0x8613,0x860B, +0x85FE,0x85FA,0x8606,0x8622,0x861A,0x8630,0x863F,0x864D, +0x4E55,0x8654,0x865F,0x8667,0x8671,0x8693,0x86A3,0x86A9, +0x86AA,0x868B,0x868C,0x86B6,0x86AF,0x86C4,0x86C6,0x86B0, +0x86C9,0x8823,0x86AB,0x86D4,0x86DE,0x86E9,0x86EC, 0, +0x86DF,0x86DB,0x86EF,0x8712,0x8706,0x8708,0x8700,0x8703, +0x86FB,0x8711,0x8709,0x870D,0x86F9,0x870A,0x8734,0x873F, +0x8737,0x873B,0x8725,0x8729,0x871A,0x8760,0x875F,0x8778, +0x874C,0x874E,0x8774,0x8757,0x8768,0x876E,0x8759,0x8753, +0x8763,0x876A,0x8805,0x87A2,0x879F,0x8782,0x87AF,0x87CB, +0x87BD,0x87C0,0x87D0,0x96D6,0x87AB,0x87C4,0x87B3,0x87C7, +0x87C6,0x87BB,0x87EF,0x87F2,0x87E0,0x880F,0x880D,0x87FE, +0x87F6,0x87F7,0x880E,0x87D2,0x8811,0x8816,0x8815,0x8822, +0x8821,0x8831,0x8836,0x8839,0x8827,0x883B,0x8844,0x8842, +0x8852,0x8859,0x885E,0x8862,0x886B,0x8881,0x887E,0x889E, +0x8875,0x887D,0x88B5,0x8872,0x8882,0x8897,0x8892,0x88AE, +0x8899,0x88A2,0x888D,0x88A4,0x88B0,0x88BF,0x88B1,0x88C3, +0x88C4,0x88D4,0x88D8,0x88D9,0x88DD,0x88F9,0x8902,0x88FC, +0x88F4,0x88E8,0x88F2,0x8904,0x890C,0x890A,0x8913,0x8943, +0x891E,0x8925,0x892A,0x892B,0x8941,0x8944,0x893B,0x8936, +0x8938,0x894C,0x891D,0x8960,0x895E, 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, 0, 0, 0, 0, 0, 0, 0, +0x8966,0x8964,0x896D,0x896A,0x896F,0x8974,0x8977,0x897E, +0x8983,0x8988,0x898A,0x8993,0x8998,0x89A1,0x89A9,0x89A6, +0x89AC,0x89AF,0x89B2,0x89BA,0x89BD,0x89BF,0x89C0,0x89DA, +0x89DC,0x89DD,0x89E7,0x89F4,0x89F8,0x8A03,0x8A16,0x8A10, +0x8A0C,0x8A1B,0x8A1D,0x8A25,0x8A36,0x8A41,0x8A5B,0x8A52, +0x8A46,0x8A48,0x8A7C,0x8A6D,0x8A6C,0x8A62,0x8A85,0x8A82, +0x8A84,0x8AA8,0x8AA1,0x8A91,0x8AA5,0x8AA6,0x8A9A,0x8AA3, +0x8AC4,0x8ACD,0x8AC2,0x8ADA,0x8AEB,0x8AF3,0x8AE7, 0, +0x8AE4,0x8AF1,0x8B14,0x8AE0,0x8AE2,0x8AF7,0x8ADE,0x8ADB, +0x8B0C,0x8B07,0x8B1A,0x8AE1,0x8B16,0x8B10,0x8B17,0x8B20, +0x8B33,0x97AB,0x8B26,0x8B2B,0x8B3E,0x8B28,0x8B41,0x8B4C, +0x8B4F,0x8B4E,0x8B49,0x8B56,0x8B5B,0x8B5A,0x8B6B,0x8B5F, +0x8B6C,0x8B6F,0x8B74,0x8B7D,0x8B80,0x8B8C,0x8B8E,0x8B92, +0x8B93,0x8B96,0x8B99,0x8B9A,0x8C3A,0x8C41,0x8C3F,0x8C48, +0x8C4C,0x8C4E,0x8C50,0x8C55,0x8C62,0x8C6C,0x8C78,0x8C7A, +0x8C82,0x8C89,0x8C85,0x8C8A,0x8C8D,0x8C8E,0x8C94,0x8C7C, +0x8C98,0x621D,0x8CAD,0x8CAA,0x8CBD,0x8CB2,0x8CB3,0x8CAE, +0x8CB6,0x8CC8,0x8CC1,0x8CE4,0x8CE3,0x8CDA,0x8CFD,0x8CFA, +0x8CFB,0x8D04,0x8D05,0x8D0A,0x8D07,0x8D0F,0x8D0D,0x8D10, +0x9F4E,0x8D13,0x8CCD,0x8D14,0x8D16,0x8D67,0x8D6D,0x8D71, +0x8D73,0x8D81,0x8D99,0x8DC2,0x8DBE,0x8DBA,0x8DCF,0x8DDA, +0x8DD6,0x8DCC,0x8DDB,0x8DCB,0x8DEA,0x8DEB,0x8DDF,0x8DE3, +0x8DFC,0x8E08,0x8E09,0x8DFF,0x8E1D,0x8E1E,0x8E10,0x8E1F, +0x8E42,0x8E35,0x8E30,0x8E34,0x8E4A, 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, 0, 0, 0, 0, 0, 0, 0, +0x8E47,0x8E49,0x8E4C,0x8E50,0x8E48,0x8E59,0x8E64,0x8E60, +0x8E2A,0x8E63,0x8E55,0x8E76,0x8E72,0x8E7C,0x8E81,0x8E87, +0x8E85,0x8E84,0x8E8B,0x8E8A,0x8E93,0x8E91,0x8E94,0x8E99, +0x8EAA,0x8EA1,0x8EAC,0x8EB0,0x8EC6,0x8EB1,0x8EBE,0x8EC5, +0x8EC8,0x8ECB,0x8EDB,0x8EE3,0x8EFC,0x8EFB,0x8EEB,0x8EFE, +0x8F0A,0x8F05,0x8F15,0x8F12,0x8F19,0x8F13,0x8F1C,0x8F1F, +0x8F1B,0x8F0C,0x8F26,0x8F33,0x8F3B,0x8F39,0x8F45,0x8F42, +0x8F3E,0x8F4C,0x8F49,0x8F46,0x8F4E,0x8F57,0x8F5C, 0, +0x8F62,0x8F63,0x8F64,0x8F9C,0x8F9F,0x8FA3,0x8FAD,0x8FAF, +0x8FB7,0x8FDA,0x8FE5,0x8FE2,0x8FEA,0x8FEF,0x9087,0x8FF4, +0x9005,0x8FF9,0x8FFA,0x9011,0x9015,0x9021,0x900D,0x901E, +0x9016,0x900B,0x9027,0x9036,0x9035,0x9039,0x8FF8,0x904F, +0x9050,0x9051,0x9052,0x900E,0x9049,0x903E,0x9056,0x9058, +0x905E,0x9068,0x906F,0x9076,0x96A8,0x9072,0x9082,0x907D, +0x9081,0x9080,0x908A,0x9089,0x908F,0x90A8,0x90AF,0x90B1, +0x90B5,0x90E2,0x90E4,0x6248,0x90DB,0x9102,0x9112,0x9119, +0x9132,0x9130,0x914A,0x9156,0x9158,0x9163,0x9165,0x9169, +0x9173,0x9172,0x918B,0x9189,0x9182,0x91A2,0x91AB,0x91AF, +0x91AA,0x91B5,0x91B4,0x91BA,0x91C0,0x91C1,0x91C9,0x91CB, +0x91D0,0x91D6,0x91DF,0x91E1,0x91DB,0x91FC,0x91F5,0x91F6, +0x921E,0x91FF,0x9214,0x922C,0x9215,0x9211,0x925E,0x9257, +0x9245,0x9249,0x9264,0x9248,0x9295,0x923F,0x924B,0x9250, +0x929C,0x9296,0x9293,0x929B,0x925A,0x92CF,0x92B9,0x92B7, +0x92E9,0x930F,0x92FA,0x9344,0x932E, 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, 0, 0, 0, 0, 0, 0, 0, +0x9319,0x9322,0x931A,0x9323,0x933A,0x9335,0x933B,0x935C, +0x9360,0x937C,0x936E,0x9356,0x93B0,0x93AC,0x93AD,0x9394, +0x93B9,0x93D6,0x93D7,0x93E8,0x93E5,0x93D8,0x93C3,0x93DD, +0x93D0,0x93C8,0x93E4,0x941A,0x9414,0x9413,0x9403,0x9407, +0x9410,0x9436,0x942B,0x9435,0x9421,0x943A,0x9441,0x9452, +0x9444,0x945B,0x9460,0x9462,0x945E,0x946A,0x9229,0x9470, +0x9475,0x9477,0x947D,0x945A,0x947C,0x947E,0x9481,0x947F, +0x9582,0x9587,0x958A,0x9594,0x9596,0x9598,0x9599, 0, +0x95A0,0x95A8,0x95A7,0x95AD,0x95BC,0x95BB,0x95B9,0x95BE, +0x95CA,0x6FF6,0x95C3,0x95CD,0x95CC,0x95D5,0x95D4,0x95D6, +0x95DC,0x95E1,0x95E5,0x95E2,0x9621,0x9628,0x962E,0x962F, +0x9642,0x964C,0x964F,0x964B,0x9677,0x965C,0x965E,0x965D, +0x965F,0x9666,0x9672,0x966C,0x968D,0x9698,0x9695,0x9697, +0x96AA,0x96A7,0x96B1,0x96B2,0x96B0,0x96B4,0x96B6,0x96B8, +0x96B9,0x96CE,0x96CB,0x96C9,0x96CD,0x894D,0x96DC,0x970D, +0x96D5,0x96F9,0x9704,0x9706,0x9708,0x9713,0x970E,0x9711, +0x970F,0x9716,0x9719,0x9724,0x972A,0x9730,0x9739,0x973D, +0x973E,0x9744,0x9746,0x9748,0x9742,0x9749,0x975C,0x9760, +0x9764,0x9766,0x9768,0x52D2,0x976B,0x9771,0x9779,0x9785, +0x977C,0x9781,0x977A,0x9786,0x978B,0x978F,0x9790,0x979C, +0x97A8,0x97A6,0x97A3,0x97B3,0x97B4,0x97C3,0x97C6,0x97C8, +0x97CB,0x97DC,0x97ED,0x9F4F,0x97F2,0x7ADF,0x97F6,0x97F5, +0x980F,0x980C,0x9838,0x9824,0x9821,0x9837,0x983D,0x9846, +0x984F,0x984B,0x986B,0x986F,0x9870, 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, 0, 0, 0, 0, 0, 0, 0, +0x9871,0x9874,0x9873,0x98AA,0x98AF,0x98B1,0x98B6,0x98C4, +0x98C3,0x98C6,0x98E9,0x98EB,0x9903,0x9909,0x9912,0x9914, +0x9918,0x9921,0x991D,0x991E,0x9924,0x9920,0x992C,0x992E, +0x993D,0x993E,0x9942,0x9949,0x9945,0x9950,0x994B,0x9951, +0x9952,0x994C,0x9955,0x9997,0x9998,0x99A5,0x99AD,0x99AE, +0x99BC,0x99DF,0x99DB,0x99DD,0x99D8,0x99D1,0x99ED,0x99EE, +0x99F1,0x99F2,0x99FB,0x99F8,0x9A01,0x9A0F,0x9A05,0x99E2, +0x9A19,0x9A2B,0x9A37,0x9A45,0x9A42,0x9A40,0x9A43, 0, +0x9A3E,0x9A55,0x9A4D,0x9A5B,0x9A57,0x9A5F,0x9A62,0x9A65, +0x9A64,0x9A69,0x9A6B,0x9A6A,0x9AAD,0x9AB0,0x9ABC,0x9AC0, +0x9ACF,0x9AD1,0x9AD3,0x9AD4,0x9ADE,0x9ADF,0x9AE2,0x9AE3, +0x9AE6,0x9AEF,0x9AEB,0x9AEE,0x9AF4,0x9AF1,0x9AF7,0x9AFB, +0x9B06,0x9B18,0x9B1A,0x9B1F,0x9B22,0x9B23,0x9B25,0x9B27, +0x9B28,0x9B29,0x9B2A,0x9B2E,0x9B2F,0x9B32,0x9B44,0x9B43, +0x9B4F,0x9B4D,0x9B4E,0x9B51,0x9B58,0x9B74,0x9B93,0x9B83, +0x9B91,0x9B96,0x9B97,0x9B9F,0x9BA0,0x9BA8,0x9BB4,0x9BC0, +0x9BCA,0x9BB9,0x9BC6,0x9BCF,0x9BD1,0x9BD2,0x9BE3,0x9BE2, +0x9BE4,0x9BD4,0x9BE1,0x9C3A,0x9BF2,0x9BF1,0x9BF0,0x9C15, +0x9C14,0x9C09,0x9C13,0x9C0C,0x9C06,0x9C08,0x9C12,0x9C0A, +0x9C04,0x9C2E,0x9C1B,0x9C25,0x9C24,0x9C21,0x9C30,0x9C47, +0x9C32,0x9C46,0x9C3E,0x9C5A,0x9C60,0x9C67,0x9C76,0x9C78, +0x9CE7,0x9CEC,0x9CF0,0x9D09,0x9D08,0x9CEB,0x9D03,0x9D06, +0x9D2A,0x9D26,0x9DAF,0x9D23,0x9D1F,0x9D44,0x9D15,0x9D12, +0x9D41,0x9D3F,0x9D3E,0x9D46,0x9D48, 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, 0, 0, 0, 0, 0, 0, 0, +0x9D5D,0x9D5E,0x9D64,0x9D51,0x9D50,0x9D59,0x9D72,0x9D89, +0x9D87,0x9DAB,0x9D6F,0x9D7A,0x9D9A,0x9DA4,0x9DA9,0x9DB2, +0x9DC4,0x9DC1,0x9DBB,0x9DB8,0x9DBA,0x9DC6,0x9DCF,0x9DC2, +0x9DD9,0x9DD3,0x9DF8,0x9DE6,0x9DED,0x9DEF,0x9DFD,0x9E1A, +0x9E1B,0x9E1E,0x9E75,0x9E79,0x9E7D,0x9E81,0x9E88,0x9E8B, +0x9E8C,0x9E92,0x9E95,0x9E91,0x9E9D,0x9EA5,0x9EA9,0x9EB8, +0x9EAA,0x9EAD,0x9761,0x9ECC,0x9ECE,0x9ECF,0x9ED0,0x9ED4, +0x9EDC,0x9EDE,0x9EDD,0x9EE0,0x9EE5,0x9EE8,0x9EEF, 0, +0x9EF4,0x9EF6,0x9EF7,0x9EF9,0x9EFB,0x9EFC,0x9EFD,0x9F07, +0x9F08,0x76B7,0x9F15,0x9F21,0x9F2C,0x9F3E,0x9F4A,0x9F52, +0x9F54,0x9F63,0x9F5F,0x9F60,0x9F61,0x9F66,0x9F67,0x9F6C, +0x9F6A,0x9F77,0x9F72,0x9F76,0x9F95,0x9F9C,0x9FA0,0x582F, +0x69C7,0x9059,0x7464,0x51DC,0x7199}; + +/* page 5 0xED40-0xEEFC - +IBM Selected Kanji and Non-Kanji(NEC implementation) */ +static uint16 tab_cp932_uni5[]={ +0x7E8A,0x891C,0x9348,0x9288,0x84DC,0x4FC9,0x70BB,0x6631, +0x68C8,0x92F9,0x66FB,0x5F45,0x4E28,0x4EE1,0x4EFC,0x4F00, +0x4F03,0x4F39,0x4F56,0x4F92,0x4F8A,0x4F9A,0x4F94,0x4FCD, +0x5040,0x5022,0x4FFF,0x501E,0x5046,0x5070,0x5042,0x5094, +0x50F4,0x50D8,0x514A,0x5164,0x519D,0x51BE,0x51EC,0x5215, +0x529C,0x52A6,0x52C0,0x52DB,0x5300,0x5307,0x5324,0x5372, +0x5393,0x53B2,0x53DD,0xFA0E,0x549C,0x548A,0x54A9,0x54FF, +0x5586,0x5759,0x5765,0x57AC,0x57C8,0x57C7,0xFA0F, 0, +0xFA10,0x589E,0x58B2,0x590B,0x5953,0x595B,0x595D,0x5963, +0x59A4,0x59BA,0x5B56,0x5BC0,0x752F,0x5BD8,0x5BEC,0x5C1E, +0x5CA6,0x5CBA,0x5CF5,0x5D27,0x5D53,0xFA11,0x5D42,0x5D6D, +0x5DB8,0x5DB9,0x5DD0,0x5F21,0x5F34,0x5F67,0x5FB7,0x5FDE, +0x605D,0x6085,0x608A,0x60DE,0x60D5,0x6120,0x60F2,0x6111, +0x6137,0x6130,0x6198,0x6213,0x62A6,0x63F5,0x6460,0x649D, +0x64CE,0x654E,0x6600,0x6615,0x663B,0x6609,0x662E,0x661E, +0x6624,0x6665,0x6657,0x6659,0xFA12,0x6673,0x6699,0x66A0, +0x66B2,0x66BF,0x66FA,0x670E,0xF929,0x6766,0x67BB,0x6852, +0x67C0,0x6801,0x6844,0x68CF,0xFA13,0x6968,0xFA14,0x6998, +0x69E2,0x6A30,0x6A6B,0x6A46,0x6A73,0x6A7E,0x6AE2,0x6AE4, +0x6BD6,0x6C3F,0x6C5C,0x6C86,0x6C6F,0x6CDA,0x6D04,0x6D87, +0x6D6F,0x6D96,0x6DAC,0x6DCF,0x6DF8,0x6DF2,0x6DFC,0x6E39, +0x6E5C,0x6E27,0x6E3C,0x6EBF,0x6F88,0x6FB5,0x6FF5,0x7005, +0x7007,0x7028,0x7085,0x70AB,0x710F,0x7104,0x715C,0x7146, +0x7147,0xFA15,0x71C1,0x71FE,0x72B1, 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, 0, 0, 0, 0, 0, 0, 0, +0x72BE,0x7324,0xFA16,0x7377,0x73BD,0x73C9,0x73D6,0x73E3, +0x73D2,0x7407,0x73F5,0x7426,0x742A,0x7429,0x742E,0x7462, +0x7489,0x749F,0x7501,0x756F,0x7682,0x769C,0x769E,0x769B, +0x76A6,0xFA17,0x7746,0x52AF,0x7821,0x784E,0x7864,0x787A, +0x7930,0xFA18,0xFA19,0xFA1A,0x7994,0xFA1B,0x799B,0x7AD1, +0x7AE7,0xFA1C,0x7AEB,0x7B9E,0xFA1D,0x7D48,0x7D5C,0x7DB7, +0x7DA0,0x7DD6,0x7E52,0x7F47,0x7FA1,0xFA1E,0x8301,0x8362, +0x837F,0x83C7,0x83F6,0x8448,0x84B4,0x8553,0x8559, 0, +0x856B,0xFA1F,0x85B0,0xFA20,0xFA21,0x8807,0x88F5,0x8A12, +0x8A37,0x8A79,0x8AA7,0x8ABE,0x8ADF,0xFA22,0x8AF6,0x8B53, +0x8B7F,0x8CF0,0x8CF4,0x8D12,0x8D76,0xFA23,0x8ECF,0xFA24, +0xFA25,0x9067,0x90DE,0xFA26,0x9115,0x9127,0x91DA,0x91D7, +0x91DE,0x91ED,0x91EE,0x91E4,0x91E5,0x9206,0x9210,0x920A, +0x923A,0x9240,0x923C,0x924E,0x9259,0x9251,0x9239,0x9267, +0x92A7,0x9277,0x9278,0x92E7,0x92D7,0x92D9,0x92D0,0xFA27, +0x92D5,0x92E0,0x92D3,0x9325,0x9321,0x92FB,0xFA28,0x931E, +0x92FF,0x931D,0x9302,0x9370,0x9357,0x93A4,0x93C6,0x93DE, +0x93F8,0x9431,0x9445,0x9448,0x9592,0xF9DC,0xFA29,0x969D, +0x96AF,0x9733,0x973B,0x9743,0x974D,0x974F,0x9751,0x9755, +0x9857,0x9865,0xFA2A,0xFA2B,0x9927,0xFA2C,0x999E,0x9A4E, +0x9AD9,0x9ADC,0x9B75,0x9B72,0x9B8F,0x9BB1,0x9BBB,0x9C00, +0x9D70,0x9D6B,0xFA2D,0x9E19,0x9ED1, 0, 0,0x2170, +0x2171,0x2172,0x2173,0x2174,0x2175,0x2176,0x2177,0x2178, +0x2179,0xFFE2,0xFFE4,0xFF07,0xFF02}; + +/* page 6 0xF040-0xF9FC - User defined characters */ +static uint16 tab_cp932_uni6[]={ +0xE000,0xE001,0xE002,0xE003,0xE004,0xE005,0xE006,0xE007, +0xE008,0xE009,0xE00A,0xE00B,0xE00C,0xE00D,0xE00E,0xE00F, +0xE010,0xE011,0xE012,0xE013,0xE014,0xE015,0xE016,0xE017, +0xE018,0xE019,0xE01A,0xE01B,0xE01C,0xE01D,0xE01E,0xE01F, +0xE020,0xE021,0xE022,0xE023,0xE024,0xE025,0xE026,0xE027, +0xE028,0xE029,0xE02A,0xE02B,0xE02C,0xE02D,0xE02E,0xE02F, +0xE030,0xE031,0xE032,0xE033,0xE034,0xE035,0xE036,0xE037, +0xE038,0xE039,0xE03A,0xE03B,0xE03C,0xE03D,0xE03E, 0, +0xE03F,0xE040,0xE041,0xE042,0xE043,0xE044,0xE045,0xE046, +0xE047,0xE048,0xE049,0xE04A,0xE04B,0xE04C,0xE04D,0xE04E, +0xE04F,0xE050,0xE051,0xE052,0xE053,0xE054,0xE055,0xE056, +0xE057,0xE058,0xE059,0xE05A,0xE05B,0xE05C,0xE05D,0xE05E, +0xE05F,0xE060,0xE061,0xE062,0xE063,0xE064,0xE065,0xE066, +0xE067,0xE068,0xE069,0xE06A,0xE06B,0xE06C,0xE06D,0xE06E, +0xE06F,0xE070,0xE071,0xE072,0xE073,0xE074,0xE075,0xE076, +0xE077,0xE078,0xE079,0xE07A,0xE07B,0xE07C,0xE07D,0xE07E, +0xE07F,0xE080,0xE081,0xE082,0xE083,0xE084,0xE085,0xE086, +0xE087,0xE088,0xE089,0xE08A,0xE08B,0xE08C,0xE08D,0xE08E, +0xE08F,0xE090,0xE091,0xE092,0xE093,0xE094,0xE095,0xE096, +0xE097,0xE098,0xE099,0xE09A,0xE09B,0xE09C,0xE09D,0xE09E, +0xE09F,0xE0A0,0xE0A1,0xE0A2,0xE0A3,0xE0A4,0xE0A5,0xE0A6, +0xE0A7,0xE0A8,0xE0A9,0xE0AA,0xE0AB,0xE0AC,0xE0AD,0xE0AE, +0xE0AF,0xE0B0,0xE0B1,0xE0B2,0xE0B3,0xE0B4,0xE0B5,0xE0B6, +0xE0B7,0xE0B8,0xE0B9,0xE0BA,0xE0BB, 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, 0, 0, 0, 0, 0, 0, 0, +0xE0BC,0xE0BD,0xE0BE,0xE0BF,0xE0C0,0xE0C1,0xE0C2,0xE0C3, +0xE0C4,0xE0C5,0xE0C6,0xE0C7,0xE0C8,0xE0C9,0xE0CA,0xE0CB, +0xE0CC,0xE0CD,0xE0CE,0xE0CF,0xE0D0,0xE0D1,0xE0D2,0xE0D3, +0xE0D4,0xE0D5,0xE0D6,0xE0D7,0xE0D8,0xE0D9,0xE0DA,0xE0DB, +0xE0DC,0xE0DD,0xE0DE,0xE0DF,0xE0E0,0xE0E1,0xE0E2,0xE0E3, +0xE0E4,0xE0E5,0xE0E6,0xE0E7,0xE0E8,0xE0E9,0xE0EA,0xE0EB, +0xE0EC,0xE0ED,0xE0EE,0xE0EF,0xE0F0,0xE0F1,0xE0F2,0xE0F3, +0xE0F4,0xE0F5,0xE0F6,0xE0F7,0xE0F8,0xE0F9,0xE0FA, 0, +0xE0FB,0xE0FC,0xE0FD,0xE0FE,0xE0FF,0xE100,0xE101,0xE102, +0xE103,0xE104,0xE105,0xE106,0xE107,0xE108,0xE109,0xE10A, +0xE10B,0xE10C,0xE10D,0xE10E,0xE10F,0xE110,0xE111,0xE112, +0xE113,0xE114,0xE115,0xE116,0xE117,0xE118,0xE119,0xE11A, +0xE11B,0xE11C,0xE11D,0xE11E,0xE11F,0xE120,0xE121,0xE122, +0xE123,0xE124,0xE125,0xE126,0xE127,0xE128,0xE129,0xE12A, +0xE12B,0xE12C,0xE12D,0xE12E,0xE12F,0xE130,0xE131,0xE132, +0xE133,0xE134,0xE135,0xE136,0xE137,0xE138,0xE139,0xE13A, +0xE13B,0xE13C,0xE13D,0xE13E,0xE13F,0xE140,0xE141,0xE142, +0xE143,0xE144,0xE145,0xE146,0xE147,0xE148,0xE149,0xE14A, +0xE14B,0xE14C,0xE14D,0xE14E,0xE14F,0xE150,0xE151,0xE152, +0xE153,0xE154,0xE155,0xE156,0xE157,0xE158,0xE159,0xE15A, +0xE15B,0xE15C,0xE15D,0xE15E,0xE15F,0xE160,0xE161,0xE162, +0xE163,0xE164,0xE165,0xE166,0xE167,0xE168,0xE169,0xE16A, +0xE16B,0xE16C,0xE16D,0xE16E,0xE16F,0xE170,0xE171,0xE172, +0xE173,0xE174,0xE175,0xE176,0xE177, 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, 0, 0, 0, 0, 0, 0, 0, +0xE178,0xE179,0xE17A,0xE17B,0xE17C,0xE17D,0xE17E,0xE17F, +0xE180,0xE181,0xE182,0xE183,0xE184,0xE185,0xE186,0xE187, +0xE188,0xE189,0xE18A,0xE18B,0xE18C,0xE18D,0xE18E,0xE18F, +0xE190,0xE191,0xE192,0xE193,0xE194,0xE195,0xE196,0xE197, +0xE198,0xE199,0xE19A,0xE19B,0xE19C,0xE19D,0xE19E,0xE19F, +0xE1A0,0xE1A1,0xE1A2,0xE1A3,0xE1A4,0xE1A5,0xE1A6,0xE1A7, +0xE1A8,0xE1A9,0xE1AA,0xE1AB,0xE1AC,0xE1AD,0xE1AE,0xE1AF, +0xE1B0,0xE1B1,0xE1B2,0xE1B3,0xE1B4,0xE1B5,0xE1B6, 0, +0xE1B7,0xE1B8,0xE1B9,0xE1BA,0xE1BB,0xE1BC,0xE1BD,0xE1BE, +0xE1BF,0xE1C0,0xE1C1,0xE1C2,0xE1C3,0xE1C4,0xE1C5,0xE1C6, +0xE1C7,0xE1C8,0xE1C9,0xE1CA,0xE1CB,0xE1CC,0xE1CD,0xE1CE, +0xE1CF,0xE1D0,0xE1D1,0xE1D2,0xE1D3,0xE1D4,0xE1D5,0xE1D6, +0xE1D7,0xE1D8,0xE1D9,0xE1DA,0xE1DB,0xE1DC,0xE1DD,0xE1DE, +0xE1DF,0xE1E0,0xE1E1,0xE1E2,0xE1E3,0xE1E4,0xE1E5,0xE1E6, +0xE1E7,0xE1E8,0xE1E9,0xE1EA,0xE1EB,0xE1EC,0xE1ED,0xE1EE, +0xE1EF,0xE1F0,0xE1F1,0xE1F2,0xE1F3,0xE1F4,0xE1F5,0xE1F6, +0xE1F7,0xE1F8,0xE1F9,0xE1FA,0xE1FB,0xE1FC,0xE1FD,0xE1FE, +0xE1FF,0xE200,0xE201,0xE202,0xE203,0xE204,0xE205,0xE206, +0xE207,0xE208,0xE209,0xE20A,0xE20B,0xE20C,0xE20D,0xE20E, +0xE20F,0xE210,0xE211,0xE212,0xE213,0xE214,0xE215,0xE216, +0xE217,0xE218,0xE219,0xE21A,0xE21B,0xE21C,0xE21D,0xE21E, +0xE21F,0xE220,0xE221,0xE222,0xE223,0xE224,0xE225,0xE226, +0xE227,0xE228,0xE229,0xE22A,0xE22B,0xE22C,0xE22D,0xE22E, +0xE22F,0xE230,0xE231,0xE232,0xE233, 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, 0, 0, 0, 0, 0, 0, 0, +0xE234,0xE235,0xE236,0xE237,0xE238,0xE239,0xE23A,0xE23B, +0xE23C,0xE23D,0xE23E,0xE23F,0xE240,0xE241,0xE242,0xE243, +0xE244,0xE245,0xE246,0xE247,0xE248,0xE249,0xE24A,0xE24B, +0xE24C,0xE24D,0xE24E,0xE24F,0xE250,0xE251,0xE252,0xE253, +0xE254,0xE255,0xE256,0xE257,0xE258,0xE259,0xE25A,0xE25B, +0xE25C,0xE25D,0xE25E,0xE25F,0xE260,0xE261,0xE262,0xE263, +0xE264,0xE265,0xE266,0xE267,0xE268,0xE269,0xE26A,0xE26B, +0xE26C,0xE26D,0xE26E,0xE26F,0xE270,0xE271,0xE272, 0, +0xE273,0xE274,0xE275,0xE276,0xE277,0xE278,0xE279,0xE27A, +0xE27B,0xE27C,0xE27D,0xE27E,0xE27F,0xE280,0xE281,0xE282, +0xE283,0xE284,0xE285,0xE286,0xE287,0xE288,0xE289,0xE28A, +0xE28B,0xE28C,0xE28D,0xE28E,0xE28F,0xE290,0xE291,0xE292, +0xE293,0xE294,0xE295,0xE296,0xE297,0xE298,0xE299,0xE29A, +0xE29B,0xE29C,0xE29D,0xE29E,0xE29F,0xE2A0,0xE2A1,0xE2A2, +0xE2A3,0xE2A4,0xE2A5,0xE2A6,0xE2A7,0xE2A8,0xE2A9,0xE2AA, +0xE2AB,0xE2AC,0xE2AD,0xE2AE,0xE2AF,0xE2B0,0xE2B1,0xE2B2, +0xE2B3,0xE2B4,0xE2B5,0xE2B6,0xE2B7,0xE2B8,0xE2B9,0xE2BA, +0xE2BB,0xE2BC,0xE2BD,0xE2BE,0xE2BF,0xE2C0,0xE2C1,0xE2C2, +0xE2C3,0xE2C4,0xE2C5,0xE2C6,0xE2C7,0xE2C8,0xE2C9,0xE2CA, +0xE2CB,0xE2CC,0xE2CD,0xE2CE,0xE2CF,0xE2D0,0xE2D1,0xE2D2, +0xE2D3,0xE2D4,0xE2D5,0xE2D6,0xE2D7,0xE2D8,0xE2D9,0xE2DA, +0xE2DB,0xE2DC,0xE2DD,0xE2DE,0xE2DF,0xE2E0,0xE2E1,0xE2E2, +0xE2E3,0xE2E4,0xE2E5,0xE2E6,0xE2E7,0xE2E8,0xE2E9,0xE2EA, +0xE2EB,0xE2EC,0xE2ED,0xE2EE,0xE2EF, 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, 0, 0, 0, 0, 0, 0, 0, +0xE2F0,0xE2F1,0xE2F2,0xE2F3,0xE2F4,0xE2F5,0xE2F6,0xE2F7, +0xE2F8,0xE2F9,0xE2FA,0xE2FB,0xE2FC,0xE2FD,0xE2FE,0xE2FF, +0xE300,0xE301,0xE302,0xE303,0xE304,0xE305,0xE306,0xE307, +0xE308,0xE309,0xE30A,0xE30B,0xE30C,0xE30D,0xE30E,0xE30F, +0xE310,0xE311,0xE312,0xE313,0xE314,0xE315,0xE316,0xE317, +0xE318,0xE319,0xE31A,0xE31B,0xE31C,0xE31D,0xE31E,0xE31F, +0xE320,0xE321,0xE322,0xE323,0xE324,0xE325,0xE326,0xE327, +0xE328,0xE329,0xE32A,0xE32B,0xE32C,0xE32D,0xE32E, 0, +0xE32F,0xE330,0xE331,0xE332,0xE333,0xE334,0xE335,0xE336, +0xE337,0xE338,0xE339,0xE33A,0xE33B,0xE33C,0xE33D,0xE33E, +0xE33F,0xE340,0xE341,0xE342,0xE343,0xE344,0xE345,0xE346, +0xE347,0xE348,0xE349,0xE34A,0xE34B,0xE34C,0xE34D,0xE34E, +0xE34F,0xE350,0xE351,0xE352,0xE353,0xE354,0xE355,0xE356, +0xE357,0xE358,0xE359,0xE35A,0xE35B,0xE35C,0xE35D,0xE35E, +0xE35F,0xE360,0xE361,0xE362,0xE363,0xE364,0xE365,0xE366, +0xE367,0xE368,0xE369,0xE36A,0xE36B,0xE36C,0xE36D,0xE36E, +0xE36F,0xE370,0xE371,0xE372,0xE373,0xE374,0xE375,0xE376, +0xE377,0xE378,0xE379,0xE37A,0xE37B,0xE37C,0xE37D,0xE37E, +0xE37F,0xE380,0xE381,0xE382,0xE383,0xE384,0xE385,0xE386, +0xE387,0xE388,0xE389,0xE38A,0xE38B,0xE38C,0xE38D,0xE38E, +0xE38F,0xE390,0xE391,0xE392,0xE393,0xE394,0xE395,0xE396, +0xE397,0xE398,0xE399,0xE39A,0xE39B,0xE39C,0xE39D,0xE39E, +0xE39F,0xE3A0,0xE3A1,0xE3A2,0xE3A3,0xE3A4,0xE3A5,0xE3A6, +0xE3A7,0xE3A8,0xE3A9,0xE3AA,0xE3AB, 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, 0, 0, 0, 0, 0, 0, 0, +0xE3AC,0xE3AD,0xE3AE,0xE3AF,0xE3B0,0xE3B1,0xE3B2,0xE3B3, +0xE3B4,0xE3B5,0xE3B6,0xE3B7,0xE3B8,0xE3B9,0xE3BA,0xE3BB, +0xE3BC,0xE3BD,0xE3BE,0xE3BF,0xE3C0,0xE3C1,0xE3C2,0xE3C3, +0xE3C4,0xE3C5,0xE3C6,0xE3C7,0xE3C8,0xE3C9,0xE3CA,0xE3CB, +0xE3CC,0xE3CD,0xE3CE,0xE3CF,0xE3D0,0xE3D1,0xE3D2,0xE3D3, +0xE3D4,0xE3D5,0xE3D6,0xE3D7,0xE3D8,0xE3D9,0xE3DA,0xE3DB, +0xE3DC,0xE3DD,0xE3DE,0xE3DF,0xE3E0,0xE3E1,0xE3E2,0xE3E3, +0xE3E4,0xE3E5,0xE3E6,0xE3E7,0xE3E8,0xE3E9,0xE3EA, 0, +0xE3EB,0xE3EC,0xE3ED,0xE3EE,0xE3EF,0xE3F0,0xE3F1,0xE3F2, +0xE3F3,0xE3F4,0xE3F5,0xE3F6,0xE3F7,0xE3F8,0xE3F9,0xE3FA, +0xE3FB,0xE3FC,0xE3FD,0xE3FE,0xE3FF,0xE400,0xE401,0xE402, +0xE403,0xE404,0xE405,0xE406,0xE407,0xE408,0xE409,0xE40A, +0xE40B,0xE40C,0xE40D,0xE40E,0xE40F,0xE410,0xE411,0xE412, +0xE413,0xE414,0xE415,0xE416,0xE417,0xE418,0xE419,0xE41A, +0xE41B,0xE41C,0xE41D,0xE41E,0xE41F,0xE420,0xE421,0xE422, +0xE423,0xE424,0xE425,0xE426,0xE427,0xE428,0xE429,0xE42A, +0xE42B,0xE42C,0xE42D,0xE42E,0xE42F,0xE430,0xE431,0xE432, +0xE433,0xE434,0xE435,0xE436,0xE437,0xE438,0xE439,0xE43A, +0xE43B,0xE43C,0xE43D,0xE43E,0xE43F,0xE440,0xE441,0xE442, +0xE443,0xE444,0xE445,0xE446,0xE447,0xE448,0xE449,0xE44A, +0xE44B,0xE44C,0xE44D,0xE44E,0xE44F,0xE450,0xE451,0xE452, +0xE453,0xE454,0xE455,0xE456,0xE457,0xE458,0xE459,0xE45A, +0xE45B,0xE45C,0xE45D,0xE45E,0xE45F,0xE460,0xE461,0xE462, +0xE463,0xE464,0xE465,0xE466,0xE467, 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, 0, 0, 0, 0, 0, 0, 0, +0xE468,0xE469,0xE46A,0xE46B,0xE46C,0xE46D,0xE46E,0xE46F, +0xE470,0xE471,0xE472,0xE473,0xE474,0xE475,0xE476,0xE477, +0xE478,0xE479,0xE47A,0xE47B,0xE47C,0xE47D,0xE47E,0xE47F, +0xE480,0xE481,0xE482,0xE483,0xE484,0xE485,0xE486,0xE487, +0xE488,0xE489,0xE48A,0xE48B,0xE48C,0xE48D,0xE48E,0xE48F, +0xE490,0xE491,0xE492,0xE493,0xE494,0xE495,0xE496,0xE497, +0xE498,0xE499,0xE49A,0xE49B,0xE49C,0xE49D,0xE49E,0xE49F, +0xE4A0,0xE4A1,0xE4A2,0xE4A3,0xE4A4,0xE4A5,0xE4A6, 0, +0xE4A7,0xE4A8,0xE4A9,0xE4AA,0xE4AB,0xE4AC,0xE4AD,0xE4AE, +0xE4AF,0xE4B0,0xE4B1,0xE4B2,0xE4B3,0xE4B4,0xE4B5,0xE4B6, +0xE4B7,0xE4B8,0xE4B9,0xE4BA,0xE4BB,0xE4BC,0xE4BD,0xE4BE, +0xE4BF,0xE4C0,0xE4C1,0xE4C2,0xE4C3,0xE4C4,0xE4C5,0xE4C6, +0xE4C7,0xE4C8,0xE4C9,0xE4CA,0xE4CB,0xE4CC,0xE4CD,0xE4CE, +0xE4CF,0xE4D0,0xE4D1,0xE4D2,0xE4D3,0xE4D4,0xE4D5,0xE4D6, +0xE4D7,0xE4D8,0xE4D9,0xE4DA,0xE4DB,0xE4DC,0xE4DD,0xE4DE, +0xE4DF,0xE4E0,0xE4E1,0xE4E2,0xE4E3,0xE4E4,0xE4E5,0xE4E6, +0xE4E7,0xE4E8,0xE4E9,0xE4EA,0xE4EB,0xE4EC,0xE4ED,0xE4EE, +0xE4EF,0xE4F0,0xE4F1,0xE4F2,0xE4F3,0xE4F4,0xE4F5,0xE4F6, +0xE4F7,0xE4F8,0xE4F9,0xE4FA,0xE4FB,0xE4FC,0xE4FD,0xE4FE, +0xE4FF,0xE500,0xE501,0xE502,0xE503,0xE504,0xE505,0xE506, +0xE507,0xE508,0xE509,0xE50A,0xE50B,0xE50C,0xE50D,0xE50E, +0xE50F,0xE510,0xE511,0xE512,0xE513,0xE514,0xE515,0xE516, +0xE517,0xE518,0xE519,0xE51A,0xE51B,0xE51C,0xE51D,0xE51E, +0xE51F,0xE520,0xE521,0xE522,0xE523, 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, 0, 0, 0, 0, 0, 0, 0, +0xE524,0xE525,0xE526,0xE527,0xE528,0xE529,0xE52A,0xE52B, +0xE52C,0xE52D,0xE52E,0xE52F,0xE530,0xE531,0xE532,0xE533, +0xE534,0xE535,0xE536,0xE537,0xE538,0xE539,0xE53A,0xE53B, +0xE53C,0xE53D,0xE53E,0xE53F,0xE540,0xE541,0xE542,0xE543, +0xE544,0xE545,0xE546,0xE547,0xE548,0xE549,0xE54A,0xE54B, +0xE54C,0xE54D,0xE54E,0xE54F,0xE550,0xE551,0xE552,0xE553, +0xE554,0xE555,0xE556,0xE557,0xE558,0xE559,0xE55A,0xE55B, +0xE55C,0xE55D,0xE55E,0xE55F,0xE560,0xE561,0xE562, 0, +0xE563,0xE564,0xE565,0xE566,0xE567,0xE568,0xE569,0xE56A, +0xE56B,0xE56C,0xE56D,0xE56E,0xE56F,0xE570,0xE571,0xE572, +0xE573,0xE574,0xE575,0xE576,0xE577,0xE578,0xE579,0xE57A, +0xE57B,0xE57C,0xE57D,0xE57E,0xE57F,0xE580,0xE581,0xE582, +0xE583,0xE584,0xE585,0xE586,0xE587,0xE588,0xE589,0xE58A, +0xE58B,0xE58C,0xE58D,0xE58E,0xE58F,0xE590,0xE591,0xE592, +0xE593,0xE594,0xE595,0xE596,0xE597,0xE598,0xE599,0xE59A, +0xE59B,0xE59C,0xE59D,0xE59E,0xE59F,0xE5A0,0xE5A1,0xE5A2, +0xE5A3,0xE5A4,0xE5A5,0xE5A6,0xE5A7,0xE5A8,0xE5A9,0xE5AA, +0xE5AB,0xE5AC,0xE5AD,0xE5AE,0xE5AF,0xE5B0,0xE5B1,0xE5B2, +0xE5B3,0xE5B4,0xE5B5,0xE5B6,0xE5B7,0xE5B8,0xE5B9,0xE5BA, +0xE5BB,0xE5BC,0xE5BD,0xE5BE,0xE5BF,0xE5C0,0xE5C1,0xE5C2, +0xE5C3,0xE5C4,0xE5C5,0xE5C6,0xE5C7,0xE5C8,0xE5C9,0xE5CA, +0xE5CB,0xE5CC,0xE5CD,0xE5CE,0xE5CF,0xE5D0,0xE5D1,0xE5D2, +0xE5D3,0xE5D4,0xE5D5,0xE5D6,0xE5D7,0xE5D8,0xE5D9,0xE5DA, +0xE5DB,0xE5DC,0xE5DD,0xE5DE,0xE5DF, 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, 0, 0, 0, 0, 0, 0, 0, +0xE5E0,0xE5E1,0xE5E2,0xE5E3,0xE5E4,0xE5E5,0xE5E6,0xE5E7, +0xE5E8,0xE5E9,0xE5EA,0xE5EB,0xE5EC,0xE5ED,0xE5EE,0xE5EF, +0xE5F0,0xE5F1,0xE5F2,0xE5F3,0xE5F4,0xE5F5,0xE5F6,0xE5F7, +0xE5F8,0xE5F9,0xE5FA,0xE5FB,0xE5FC,0xE5FD,0xE5FE,0xE5FF, +0xE600,0xE601,0xE602,0xE603,0xE604,0xE605,0xE606,0xE607, +0xE608,0xE609,0xE60A,0xE60B,0xE60C,0xE60D,0xE60E,0xE60F, +0xE610,0xE611,0xE612,0xE613,0xE614,0xE615,0xE616,0xE617, +0xE618,0xE619,0xE61A,0xE61B,0xE61C,0xE61D,0xE61E, 0, +0xE61F,0xE620,0xE621,0xE622,0xE623,0xE624,0xE625,0xE626, +0xE627,0xE628,0xE629,0xE62A,0xE62B,0xE62C,0xE62D,0xE62E, +0xE62F,0xE630,0xE631,0xE632,0xE633,0xE634,0xE635,0xE636, +0xE637,0xE638,0xE639,0xE63A,0xE63B,0xE63C,0xE63D,0xE63E, +0xE63F,0xE640,0xE641,0xE642,0xE643,0xE644,0xE645,0xE646, +0xE647,0xE648,0xE649,0xE64A,0xE64B,0xE64C,0xE64D,0xE64E, +0xE64F,0xE650,0xE651,0xE652,0xE653,0xE654,0xE655,0xE656, +0xE657,0xE658,0xE659,0xE65A,0xE65B,0xE65C,0xE65D,0xE65E, +0xE65F,0xE660,0xE661,0xE662,0xE663,0xE664,0xE665,0xE666, +0xE667,0xE668,0xE669,0xE66A,0xE66B,0xE66C,0xE66D,0xE66E, +0xE66F,0xE670,0xE671,0xE672,0xE673,0xE674,0xE675,0xE676, +0xE677,0xE678,0xE679,0xE67A,0xE67B,0xE67C,0xE67D,0xE67E, +0xE67F,0xE680,0xE681,0xE682,0xE683,0xE684,0xE685,0xE686, +0xE687,0xE688,0xE689,0xE68A,0xE68B,0xE68C,0xE68D,0xE68E, +0xE68F,0xE690,0xE691,0xE692,0xE693,0xE694,0xE695,0xE696, +0xE697,0xE698,0xE699,0xE69A,0xE69B, 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, 0, 0, 0, 0, 0, 0, 0, +0xE69C,0xE69D,0xE69E,0xE69F,0xE6A0,0xE6A1,0xE6A2,0xE6A3, +0xE6A4,0xE6A5,0xE6A6,0xE6A7,0xE6A8,0xE6A9,0xE6AA,0xE6AB, +0xE6AC,0xE6AD,0xE6AE,0xE6AF,0xE6B0,0xE6B1,0xE6B2,0xE6B3, +0xE6B4,0xE6B5,0xE6B6,0xE6B7,0xE6B8,0xE6B9,0xE6BA,0xE6BB, +0xE6BC,0xE6BD,0xE6BE,0xE6BF,0xE6C0,0xE6C1,0xE6C2,0xE6C3, +0xE6C4,0xE6C5,0xE6C6,0xE6C7,0xE6C8,0xE6C9,0xE6CA,0xE6CB, +0xE6CC,0xE6CD,0xE6CE,0xE6CF,0xE6D0,0xE6D1,0xE6D2,0xE6D3, +0xE6D4,0xE6D5,0xE6D6,0xE6D7,0xE6D8,0xE6D9,0xE6DA, 0, +0xE6DB,0xE6DC,0xE6DD,0xE6DE,0xE6DF,0xE6E0,0xE6E1,0xE6E2, +0xE6E3,0xE6E4,0xE6E5,0xE6E6,0xE6E7,0xE6E8,0xE6E9,0xE6EA, +0xE6EB,0xE6EC,0xE6ED,0xE6EE,0xE6EF,0xE6F0,0xE6F1,0xE6F2, +0xE6F3,0xE6F4,0xE6F5,0xE6F6,0xE6F7,0xE6F8,0xE6F9,0xE6FA, +0xE6FB,0xE6FC,0xE6FD,0xE6FE,0xE6FF,0xE700,0xE701,0xE702, +0xE703,0xE704,0xE705,0xE706,0xE707,0xE708,0xE709,0xE70A, +0xE70B,0xE70C,0xE70D,0xE70E,0xE70F,0xE710,0xE711,0xE712, +0xE713,0xE714,0xE715,0xE716,0xE717,0xE718,0xE719,0xE71A, +0xE71B,0xE71C,0xE71D,0xE71E,0xE71F,0xE720,0xE721,0xE722, +0xE723,0xE724,0xE725,0xE726,0xE727,0xE728,0xE729,0xE72A, +0xE72B,0xE72C,0xE72D,0xE72E,0xE72F,0xE730,0xE731,0xE732, +0xE733,0xE734,0xE735,0xE736,0xE737,0xE738,0xE739,0xE73A, +0xE73B,0xE73C,0xE73D,0xE73E,0xE73F,0xE740,0xE741,0xE742, +0xE743,0xE744,0xE745,0xE746,0xE747,0xE748,0xE749,0xE74A, +0xE74B,0xE74C,0xE74D,0xE74E,0xE74F,0xE750,0xE751,0xE752, +0xE753,0xE754,0xE755,0xE756,0xE757, 0, 0, 0}; + +/* page 7 0xFA40-0xFC4B - +IBM Selected Kanji and Non-Kanji */ +static uint16 tab_cp932_uni7[]={ +0x2170,0x2171,0x2172,0x2173,0x2174,0x2175,0x2176,0x2177, +0x2178,0x2179,0x2160,0x2161,0x2162,0x2163,0x2164,0x2165, +0x2166,0x2167,0x2168,0x2169,0xFFE2,0xFFE4,0xFF07,0xFF02, +0x3231,0x2116,0x2121,0x2235,0x7E8A,0x891C,0x9348,0x9288, +0x84DC,0x4FC9,0x70BB,0x6631,0x68C8,0x92F9,0x66FB,0x5F45, +0x4E28,0x4EE1,0x4EFC,0x4F00,0x4F03,0x4F39,0x4F56,0x4F92, +0x4F8A,0x4F9A,0x4F94,0x4FCD,0x5040,0x5022,0x4FFF,0x501E, +0x5046,0x5070,0x5042,0x5094,0x50F4,0x50D8,0x514A, 0, +0x5164,0x519D,0x51BE,0x51EC,0x5215,0x529C,0x52A6,0x52C0, +0x52DB,0x5300,0x5307,0x5324,0x5372,0x5393,0x53B2,0x53DD, +0xFA0E,0x549C,0x548A,0x54A9,0x54FF,0x5586,0x5759,0x5765, +0x57AC,0x57C8,0x57C7,0xFA0F,0xFA10,0x589E,0x58B2,0x590B, +0x5953,0x595B,0x595D,0x5963,0x59A4,0x59BA,0x5B56,0x5BC0, +0x752F,0x5BD8,0x5BEC,0x5C1E,0x5CA6,0x5CBA,0x5CF5,0x5D27, +0x5D53,0xFA11,0x5D42,0x5D6D,0x5DB8,0x5DB9,0x5DD0,0x5F21, +0x5F34,0x5F67,0x5FB7,0x5FDE,0x605D,0x6085,0x608A,0x60DE, +0x60D5,0x6120,0x60F2,0x6111,0x6137,0x6130,0x6198,0x6213, +0x62A6,0x63F5,0x6460,0x649D,0x64CE,0x654E,0x6600,0x6615, +0x663B,0x6609,0x662E,0x661E,0x6624,0x6665,0x6657,0x6659, +0xFA12,0x6673,0x6699,0x66A0,0x66B2,0x66BF,0x66FA,0x670E, +0xF929,0x6766,0x67BB,0x6852,0x67C0,0x6801,0x6844,0x68CF, +0xFA13,0x6968,0xFA14,0x6998,0x69E2,0x6A30,0x6A6B,0x6A46, +0x6A73,0x6A7E,0x6AE2,0x6AE4,0x6BD6,0x6C3F,0x6C5C,0x6C86, +0x6C6F,0x6CDA,0x6D04,0x6D87,0x6D6F, 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, 0, 0, 0, 0, 0, 0, 0, +0x6D96,0x6DAC,0x6DCF,0x6DF8,0x6DF2,0x6DFC,0x6E39,0x6E5C, +0x6E27,0x6E3C,0x6EBF,0x6F88,0x6FB5,0x6FF5,0x7005,0x7007, +0x7028,0x7085,0x70AB,0x710F,0x7104,0x715C,0x7146,0x7147, +0xFA15,0x71C1,0x71FE,0x72B1,0x72BE,0x7324,0xFA16,0x7377, +0x73BD,0x73C9,0x73D6,0x73E3,0x73D2,0x7407,0x73F5,0x7426, +0x742A,0x7429,0x742E,0x7462,0x7489,0x749F,0x7501,0x756F, +0x7682,0x769C,0x769E,0x769B,0x76A6,0xFA17,0x7746,0x52AF, +0x7821,0x784E,0x7864,0x787A,0x7930,0xFA18,0xFA19, 0, +0xFA1A,0x7994,0xFA1B,0x799B,0x7AD1,0x7AE7,0xFA1C,0x7AEB, +0x7B9E,0xFA1D,0x7D48,0x7D5C,0x7DB7,0x7DA0,0x7DD6,0x7E52, +0x7F47,0x7FA1,0xFA1E,0x8301,0x8362,0x837F,0x83C7,0x83F6, +0x8448,0x84B4,0x8553,0x8559,0x856B,0xFA1F,0x85B0,0xFA20, +0xFA21,0x8807,0x88F5,0x8A12,0x8A37,0x8A79,0x8AA7,0x8ABE, +0x8ADF,0xFA22,0x8AF6,0x8B53,0x8B7F,0x8CF0,0x8CF4,0x8D12, +0x8D76,0xFA23,0x8ECF,0xFA24,0xFA25,0x9067,0x90DE,0xFA26, +0x9115,0x9127,0x91DA,0x91D7,0x91DE,0x91ED,0x91EE,0x91E4, +0x91E5,0x9206,0x9210,0x920A,0x923A,0x9240,0x923C,0x924E, +0x9259,0x9251,0x9239,0x9267,0x92A7,0x9277,0x9278,0x92E7, +0x92D7,0x92D9,0x92D0,0xFA27,0x92D5,0x92E0,0x92D3,0x9325, +0x9321,0x92FB,0xFA28,0x931E,0x92FF,0x931D,0x9302,0x9370, +0x9357,0x93A4,0x93C6,0x93DE,0x93F8,0x9431,0x9445,0x9448, +0x9592,0xF9DC,0xFA29,0x969D,0x96AF,0x9733,0x973B,0x9743, +0x974D,0x974F,0x9751,0x9755,0x9857,0x9865,0xFA2A,0xFA2B, +0x9927,0xFA2C,0x999E,0x9A4E,0x9AD9, 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, 0, 0, 0, 0, 0, 0, 0, +0x9ADC,0x9B75,0x9B72,0x9B8F,0x9BB1,0x9BBB,0x9C00,0x9D70, +0x9D6B,0xFA2D,0x9E19,0x9ED1}; + +static int func_cp932_uni_onechar(int code){ + if ((code>=0x00A1)&&(code<=0x00DF)) + return(tab_cp932_uni0[code-0x00A1]); + if ((code>=0x8140)&&(code<=0x84BE)) + return(tab_cp932_uni1[code-0x8140]); + if ((code>=0x8740)&&(code<=0x879C)) + return(tab_cp932_uni2[code-0x8740]); + if ((code>=0x889F)&&(code<=0x9FFC)) + return(tab_cp932_uni3[code-0x889F]); + if ((code>=0xE040)&&(code<=0xEAA4)) + return(tab_cp932_uni4[code-0xE040]); + if ((code>=0xED40)&&(code<=0xEEFC)) + return(tab_cp932_uni5[code-0xED40]); + if ((code>=0xF040)&&(code<=0xF9FC)) + return(tab_cp932_uni6[code-0xF040]); + if ((code>=0xFA40)&&(code<=0xFC4B)) + return(tab_cp932_uni7[code-0xFA40]); + return(0); +} + +/* page 0 0x005C-0x00F7 */ +static uint16 tab_uni_cp9320[]={ + 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, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,0x8198,0x814E, 0, 0, 0, + 0, 0, 0, 0,0x818B,0x817D, 0, 0, +0x814C, 0,0x81F7, 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,0x817E, 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,0x8180}; + +/* page 1 0x0391-0x0451 */ +static uint16 tab_uni_cp9321[]={ +0x839F,0x83A0,0x83A1,0x83A2,0x83A3,0x83A4,0x83A5,0x83A6, +0x83A7,0x83A8,0x83A9,0x83AA,0x83AB,0x83AC,0x83AD,0x83AE, +0x83AF, 0,0x83B0,0x83B1,0x83B2,0x83B3,0x83B4,0x83B5, +0x83B6, 0, 0, 0, 0, 0, 0, 0, +0x83BF,0x83C0,0x83C1,0x83C2,0x83C3,0x83C4,0x83C5,0x83C6, +0x83C7,0x83C8,0x83C9,0x83CA,0x83CB,0x83CC,0x83CD,0x83CE, +0x83CF, 0,0x83D0,0x83D1,0x83D2,0x83D3,0x83D4,0x83D5, +0x83D6, 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, +0x8446, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0,0x8440, +0x8441,0x8442,0x8443,0x8444,0x8445,0x8447,0x8448,0x8449, +0x844A,0x844B,0x844C,0x844D,0x844E,0x844F,0x8450,0x8451, +0x8452,0x8453,0x8454,0x8455,0x8456,0x8457,0x8458,0x8459, +0x845A,0x845B,0x845C,0x845D,0x845E,0x845F,0x8460,0x8470, +0x8471,0x8472,0x8473,0x8474,0x8475,0x8477,0x8478,0x8479, +0x847A,0x847B,0x847C,0x847D,0x847E,0x8480,0x8481,0x8482, +0x8483,0x8484,0x8485,0x8486,0x8487,0x8488,0x8489,0x848A, +0x848B,0x848C,0x848D,0x848E,0x848F,0x8490,0x8491, 0, +0x8476}; + +/* page 2 0x2010-0x2473 */ +static uint16 tab_uni_cp9322[]={ +0x815D, 0, 0, 0, 0,0x815C, 0, 0, +0x8165,0x8166, 0, 0,0x8167,0x8168, 0, 0, +0x81F5,0x81F6, 0, 0, 0,0x8164,0x8163, 0, + 0, 0, 0, 0, 0, 0, 0, 0, +0x81F1, 0,0x818C,0x818D, 0, 0, 0, 0, + 0, 0, 0,0x81A6, 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, + 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, 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, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,0x818E, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,0x8782, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0,0x8784, 0, 0, 0, 0, 0, 0, + 0, 0, 0,0x81F0, 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, +0x8754,0x8755,0x8756,0x8757,0x8758,0x8759,0x875A,0x875B, +0x875C,0x875D, 0, 0, 0, 0, 0, 0, +0xFA40,0xFA41,0xFA42,0xFA43,0xFA44,0xFA45,0xFA46,0xFA47, +0xFA48,0xFA49, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, +0x81A9,0x81AA,0x81A8,0x81AB, 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, + 0, 0,0x81CB, 0,0x81CC, 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, +0x81CD, 0,0x81DD,0x81CE, 0, 0, 0,0x81DE, +0x81B8, 0, 0,0x81B9, 0, 0, 0, 0, + 0,0x8794, 0, 0, 0, 0, 0, 0, + 0, 0,0x81E3, 0, 0,0x81E5,0x8187,0x8798, +0x81DA, 0, 0, 0, 0,0x8161, 0,0x81C8, +0x81C9,0x81BF,0x81BE,0x81E7,0x81E8, 0,0x8793, 0, + 0, 0, 0, 0,0x8188,0x81E6, 0, 0, + 0, 0, 0, 0, 0,0x81E4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,0x81E0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, +0x8182,0x81DF, 0, 0, 0, 0,0x8185,0x8186, + 0, 0,0x81E1,0x81E2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,0x81BC,0x81BD, 0, 0,0x81BA,0x81BB, + 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,0x81DB, 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,0x8799, + 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, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,0x81DC, 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, 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, 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, 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, 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, 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, +0x8740,0x8741,0x8742,0x8743,0x8744,0x8745,0x8746,0x8747, +0x8748,0x8749,0x874A,0x874B,0x874C,0x874D,0x874E,0x874F, +0x8750,0x8751,0x8752,0x8753}; + +/* page 3 0x2500-0x266F */ +static uint16 tab_uni_cp9323[]={ +0x849F,0x84AA,0x84A0,0x84AB, 0, 0, 0, 0, + 0, 0, 0, 0,0x84A1, 0, 0,0x84AC, +0x84A2, 0, 0,0x84AD,0x84A4, 0, 0,0x84AF, +0x84A3, 0, 0,0x84AE,0x84A5,0x84BA, 0, 0, +0x84B5, 0, 0,0x84B0,0x84A7,0x84BC, 0, 0, +0x84B7, 0, 0,0x84B2,0x84A6, 0, 0,0x84B6, +0x84BB, 0, 0,0x84B1,0x84A8, 0, 0,0x84B8, +0x84BD, 0, 0,0x84B3,0x84A9, 0, 0,0x84B9, + 0, 0,0x84BE, 0, 0, 0, 0, 0, + 0, 0, 0,0x84B4, 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, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, +0x81A1,0x81A0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,0x81A3,0x81A2, 0, 0, 0, 0, + 0, 0, 0, 0,0x81A5,0x81A4, 0, 0, + 0, 0, 0, 0, 0, 0,0x819F,0x819E, + 0, 0, 0,0x819B, 0, 0,0x819D,0x819C, + 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,0x81FC, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,0x819A,0x8199, 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, +0x818A, 0,0x8189, 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,0x81F4, 0, 0,0x81F3, 0,0x81F2 +}; + +/* page 4 0x3000-0x30FE */ +static uint16 tab_uni_cp9324[]={ +0x8140,0x8141,0x8142,0x8156, 0,0x8158,0x8159,0x815A, +0x8171,0x8172,0x8173,0x8174,0x8175,0x8176,0x8177,0x8178, +0x8179,0x817A,0x81A7,0x81AC,0x816B,0x816C, 0, 0, + 0, 0, 0, 0, 0,0x8780, 0,0x8781, + 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,0x829F,0x82A0,0x82A1,0x82A2,0x82A3,0x82A4,0x82A5, +0x82A6,0x82A7,0x82A8,0x82A9,0x82AA,0x82AB,0x82AC,0x82AD, +0x82AE,0x82AF,0x82B0,0x82B1,0x82B2,0x82B3,0x82B4,0x82B5, +0x82B6,0x82B7,0x82B8,0x82B9,0x82BA,0x82BB,0x82BC,0x82BD, +0x82BE,0x82BF,0x82C0,0x82C1,0x82C2,0x82C3,0x82C4,0x82C5, +0x82C6,0x82C7,0x82C8,0x82C9,0x82CA,0x82CB,0x82CC,0x82CD, +0x82CE,0x82CF,0x82D0,0x82D1,0x82D2,0x82D3,0x82D4,0x82D5, +0x82D6,0x82D7,0x82D8,0x82D9,0x82DA,0x82DB,0x82DC,0x82DD, +0x82DE,0x82DF,0x82E0,0x82E1,0x82E2,0x82E3,0x82E4,0x82E5, +0x82E6,0x82E7,0x82E8,0x82E9,0x82EA,0x82EB,0x82EC,0x82ED, +0x82EE,0x82EF,0x82F0,0x82F1, 0, 0, 0, 0, + 0, 0, 0,0x814A,0x814B,0x8154,0x8155, 0, + 0,0x8340,0x8341,0x8342,0x8343,0x8344,0x8345,0x8346, +0x8347,0x8348,0x8349,0x834A,0x834B,0x834C,0x834D,0x834E, +0x834F,0x8350,0x8351,0x8352,0x8353,0x8354,0x8355,0x8356, +0x8357,0x8358,0x8359,0x835A,0x835B,0x835C,0x835D,0x835E, +0x835F,0x8360,0x8361,0x8362,0x8363,0x8364,0x8365,0x8366, +0x8367,0x8368,0x8369,0x836A,0x836B,0x836C,0x836D,0x836E, +0x836F,0x8370,0x8371,0x8372,0x8373,0x8374,0x8375,0x8376, +0x8377,0x8378,0x8379,0x837A,0x837B,0x837C,0x837D,0x837E, +0x8380,0x8381,0x8382,0x8383,0x8384,0x8385,0x8386,0x8387, +0x8388,0x8389,0x838A,0x838B,0x838C,0x838D,0x838E,0x838F, +0x8390,0x8391,0x8392,0x8393,0x8394,0x8395,0x8396, 0, + 0, 0, 0,0x8145,0x815B,0x8152,0x8153}; + +/* page 5 0x3230-0x33CD */ +static uint16 tab_uni_cp9325[]={ + 0,0x878A,0x878B, 0, 0, 0, 0, 0, + 0,0x878C, 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, 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,0x8785,0x8786,0x8787,0x8788, +0x8789, 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, 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,0x8765, 0, 0, 0, 0, + 0, 0, 0, 0, 0,0x8769, 0, 0, + 0, 0, 0, 0,0x8760, 0, 0, 0, +0x8763, 0, 0, 0, 0, 0, 0, 0, + 0, 0,0x8761,0x876B, 0, 0,0x876A,0x8764, + 0, 0, 0,0x876C, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,0x8766, 0, + 0, 0, 0,0x876E, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0,0x875F,0x876D, 0, 0,0x8762, 0, 0, + 0,0x8767, 0, 0, 0, 0, 0,0x8768, + 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,0x877E,0x878F,0x878E,0x878D, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,0x8772,0x8773, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,0x876F,0x8770,0x8771, 0, + 0,0x8775, 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,0x8774, 0, 0, 0, + 0, 0, 0, 0, 0,0x8783}; + +/* page 6 0x4E00-0x9481 */ +static uint16 tab_uni_cp9326[]={ +0x88EA,0x929A, 0,0x8EB5, 0, 0, 0,0x969C, +0x8FE4,0x8E4F,0x8FE3,0x89BA, 0,0x9573,0x975E, 0, +0x98A0,0x894E, 0, 0,0x8A8E,0x98A1,0x90A2,0x99C0, +0x8B75,0x95B8, 0, 0, 0, 0,0x8FE5, 0, + 0,0x97BC, 0, 0, 0, 0,0x95C0, 0, +0xFA68, 0,0x98A2, 0, 0,0x9286, 0, 0, + 0,0x98A3,0x8BF8, 0, 0, 0,0x98A4, 0, +0x8ADB,0x924F, 0,0x8EE5,0x98A5, 0, 0,0x98A6, + 0, 0,0x98A7,0x9454, 0,0x8B76, 0, 0, + 0, 0, 0,0x9456, 0,0x93E1,0x8CC1,0x9652, + 0, 0, 0, 0, 0,0xE568,0x98A8,0x8FE6, +0x98A9,0x89B3, 0, 0, 0,0x8BE3,0x8CEE,0x96E7, + 0, 0,0x9BA4, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0,0x9790, 0,0x93FB, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,0x8AA3, 0, +0x8B54, 0,0x98AA, 0, 0,0x98AB,0x97B9, 0, +0x975C,0x9188,0x98AD,0x8E96,0x93F1, 0,0x98B0, 0, + 0,0x895D,0x8CDD, 0,0x8CDC,0x88E4, 0, 0, +0x986A,0x9869, 0,0x8DB1,0x889F, 0,0x98B1,0x98B2, +0x98B3,0x9653,0x98B4, 0,0x8CF0,0x88E5,0x9692, 0, +0x8B9C, 0, 0,0x8B9D,0x8B9E,0x92E0,0x97BA, 0, +0x98B5, 0, 0,0x98B6, 0, 0,0x98B7, 0, + 0, 0,0x906C, 0, 0, 0, 0, 0, +0x8F59,0x906D,0x98BC, 0,0x98BA, 0,0x98BB,0x8B77, + 0, 0,0x8DA1,0x89EE, 0,0x98B9,0x98B8,0x95A7, + 0, 0, 0, 0,0x8E65,0x8E64,0x91BC,0x98BD, +0x9574,0x90E5, 0, 0, 0,0x8157,0x98BE,0x98C0, + 0,0xFA69, 0,0x91E3,0x97DF,0x88C8, 0, 0, + 0, 0, 0, 0, 0,0x98BF,0x89BC, 0, +0x8BC2, 0,0x9287, 0, 0, 0,0x8C8F,0x98C1, + 0, 0, 0,0x9443,0xFA6A, 0, 0, 0, +0xFA6B,0x8AE9, 0,0xFA6C, 0, 0, 0, 0, + 0,0x98C2,0x88C9, 0, 0,0x8CDE,0x8AEA,0x959A, +0x94B0,0x8B78, 0, 0, 0, 0, 0, 0, + 0, 0,0x89EF, 0,0x98E5,0x9360, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0,0x948C, +0x98C4, 0, 0, 0,0x94BA, 0,0x97E0, 0, +0x904C,0xFA6D,0x8E66, 0,0x8E97,0x89BE, 0, 0, + 0, 0, 0,0x92CF, 0, 0,0x9241,0x98C8, + 0, 0, 0, 0, 0,0x88CA,0x92E1,0x8F5A, +0x8DB2,0x9743, 0,0x91CC, 0,0x89BD,0xFA6E,0x98C7, + 0,0x975D,0x98C3,0x98C5,0x8DEC,0x98C6,0x9B43, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0,0x98CE, 0, 0, 0, 0, 0,0x98D1, +0x98CF, 0, 0,0x89C0, 0,0x95B9,0x98C9, 0, + 0, 0, 0,0x98CD,0x8CF1, 0, 0,0x8E67, + 0, 0, 0,0x8AA4, 0, 0,0x98D2, 0, +0x98CA, 0,0xFA70,0x97E1, 0,0x8E98, 0,0x98CB, + 0,0x98D0,0xFA6F, 0,0xFA72, 0,0x98D3, 0, +0x98CC, 0,0xFA71,0x8B9F, 0,0x88CB, 0, 0, +0x8BA0,0x89BF, 0, 0, 0, 0, 0, 0, + 0, 0, 0,0x9B44, 0,0x9699,0x958E,0x8CF2, + 0, 0, 0, 0, 0,0x904E,0x97B5, 0, + 0, 0, 0, 0, 0, 0, 0,0x95D6, + 0, 0,0x8C57,0x91A3,0x89E2, 0, 0, 0, + 0,0xFA61,0x8F72, 0, 0,0xFA73,0x98D7, 0, +0x98DC,0x98DA, 0, 0,0x98D5, 0, 0,0x91AD, +0x98D8, 0,0x98DB,0x98D9, 0,0x95DB, 0,0x98D6, + 0,0x904D, 0,0x9693,0x98DD,0x98DE, 0, 0, + 0, 0, 0, 0, 0, 0,0x8F43,0x98EB, + 0, 0, 0,0x946F, 0,0x9555,0x98E6, 0, +0x95EE, 0,0x89B4, 0, 0, 0,0x98EA,0xFA76, + 0, 0, 0, 0, 0,0x98E4,0x98ED, 0, + 0,0x9171, 0,0x8CC2, 0,0x947B, 0,0xE0C5, + 0,0x98EC,0x937C, 0,0x98E1, 0,0x8CF4, 0, + 0,0x8CF3,0x98DF, 0, 0, 0,0xFA77,0x8ED8, + 0,0x98E7,0xFA75,0x95ED,0x926C,0x98E3,0x8C91, 0, +0x98E0,0x98E8,0x98E2,0x97CF,0x98E9,0x9860, 0, 0, + 0, 0, 0, 0, 0, 0,0x8BE4, 0, + 0,0x8C90, 0, 0, 0, 0, 0, 0, +0xFA74, 0,0xFA7A,0x98EE, 0, 0,0xFA78,0x98EF, +0x98F3,0x88CC, 0, 0, 0, 0, 0,0x95CE, +0x98F2, 0, 0, 0, 0,0x98F1,0x98F5, 0, + 0, 0,0x98F4, 0,0x92E2, 0, 0, 0, + 0, 0, 0, 0, 0,0x8C92, 0, 0, + 0, 0, 0, 0,0x98F6, 0, 0, 0, +0xFA79, 0,0x8EC3, 0,0x91A4,0x92E3,0x8BF4, 0, +0x98F7, 0, 0, 0, 0,0x8B55, 0, 0, +0x98F8, 0, 0, 0, 0,0x98FA, 0, 0, + 0, 0, 0, 0, 0,0x9654, 0, 0, + 0,0x8C86, 0, 0,0xFA7B, 0, 0, 0, +0x8E50,0x94F5,0x98F9, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,0x8DC3,0x9762, 0, 0, + 0, 0,0x98FC,0x9942,0x98FB,0x8DC2, 0,0x8F9D, + 0, 0, 0, 0, 0, 0,0x8C58, 0, + 0, 0,0x9943, 0, 0,0x8BCD, 0, 0, + 0,0x9940,0x9941, 0, 0,0x93AD, 0,0x919C, + 0,0x8BA1, 0, 0, 0,0x966C,0x9944, 0, +0xFA7D, 0,0x97BB, 0, 0, 0,0x9945, 0, + 0, 0, 0,0x9948, 0,0x9946, 0,0x916D, + 0, 0, 0, 0, 0,0x9947,0x9949, 0, + 0, 0, 0, 0,0xFA7C,0x994B, 0, 0, + 0,0x994A, 0,0x95C6, 0, 0, 0, 0, +0x8B56,0x994D,0x994E, 0,0x89AD, 0, 0, 0, + 0,0x994C, 0, 0, 0, 0, 0, 0, + 0, 0,0x8EF2, 0,0x9951,0x9950,0x994F, 0, +0x98D4, 0,0x9952, 0, 0, 0, 0,0x8F9E, + 0,0x9953, 0, 0, 0, 0, 0, 0, + 0, 0,0x9744, 0, 0, 0, 0, 0, + 0, 0,0x96D7, 0, 0, 0, 0,0x9955, + 0, 0,0x9954,0x9957,0x9956, 0, 0,0x9958, +0x9959,0x88F2, 0,0x8CB3,0x8C5A,0x8F5B,0x929B,0x8BA2, +0x90E6,0x8CF5,0xFA7E,0x8D8E,0x995B,0x96C6,0x9365, 0, +0x8E99, 0,0x995A, 0,0x995C, 0, 0, 0, + 0, 0,0x937D, 0,0x8A95, 0, 0, 0, + 0, 0,0x995D, 0,0xFA80,0x93FC, 0, 0, +0x9153,0x995F,0x9960,0x94AA,0x8CF6,0x985A,0x9961, 0, + 0,0x8BA4, 0, 0, 0,0x95BA,0x91B4,0x8BEF, +0x9354, 0, 0, 0,0x8C93, 0, 0, 0, +0x9962, 0,0x9963, 0, 0,0x93E0,0x897E, 0, + 0,0x9966,0x8DFB, 0,0x9965,0x8DC4, 0,0x9967, +0xE3EC,0x9968,0x9660,0x9969, 0,0x996A,0x996B,0x8FE7, + 0,0x8ECA, 0, 0, 0,0xFA81, 0, 0, +0x8AA5, 0,0x996E, 0,0x996C,0x96BB,0x996D, 0, +0x9579,0x996F,0x9970,0x9971,0x937E, 0, 0, 0, +0x9975,0x9973,0x9974,0x9972,0x8DE1,0x9976,0x96E8,0x97E2, + 0, 0, 0, 0, 0,0x9977,0xFA82, 0, + 0, 0, 0, 0,0x90A6,0x9978,0x8F79, 0, + 0,0x9979, 0,0x929C,0x97BD,0x9380, 0, 0, + 0, 0, 0, 0, 0, 0,0x99C3, 0, + 0, 0, 0,0x997A,0xEAA3,0x8BC3, 0, 0, +0x997B,0x967D, 0, 0, 0, 0,0x8F88,0x91FA, + 0,0x997D,0x93E2, 0,0xFA83,0x997E, 0, 0, +0x9980,0x8A4D, 0, 0, 0,0x9981,0x8BA5, 0, +0x93CA,0x899A,0x8F6F, 0, 0,0x949F,0x9982, 0, +0x9381, 0, 0,0x906E,0x9983, 0,0x95AA,0x90D8, +0x8AA0, 0,0x8AA7,0x9984, 0, 0,0x9986, 0, + 0,0x8C59, 0, 0,0x9985,0xFA84, 0,0x97F1, + 0, 0, 0, 0, 0,0x8F89, 0, 0, + 0, 0, 0, 0,0x94BB,0x95CA, 0,0x9987, + 0,0x9798,0x9988, 0, 0, 0,0x9989, 0, +0x939E, 0, 0,0x998A, 0, 0,0x90A7,0x8DFC, +0x8C94,0x998B,0x8E68,0x8D8F, 0, 0, 0, 0, + 0, 0, 0,0x92E4,0x998D, 0, 0,0x91A5, + 0, 0,0x8DED,0x998E,0x998F,0x914F, 0,0x998C, + 0, 0, 0, 0,0x9991, 0,0x9655, 0, + 0, 0, 0,0x8D84, 0, 0,0x9990, 0, + 0, 0, 0,0x8C95,0x8DDC,0x948D, 0, 0, + 0,0x9994,0x9992, 0, 0, 0, 0,0x959B, +0x8FE8,0x999B,0x8A84,0x9995,0x9993,0x916E, 0, 0, + 0, 0, 0, 0, 0,0x9997, 0,0x9996, + 0, 0, 0,0x8A63, 0, 0, 0,0x8C80, +0x999C,0x97AB, 0, 0, 0,0x9998, 0, 0, + 0,0x999D,0x999A, 0,0x9999, 0, 0, 0, + 0, 0, 0,0x97CD,0xFA85, 0, 0,0x8CF7, +0x89C1, 0, 0,0x97F2, 0, 0,0xFA86, 0, + 0,0x8F95,0x9377,0x8D85,0x99A0,0x99A1, 0,0xFB77, + 0,0x97E3, 0, 0,0x984A,0x99A3, 0, 0, + 0,0x8CF8, 0, 0,0x99A2, 0,0x8A4E, 0, +0xFA87,0x99A4, 0,0x9675, 0,0x92BA, 0,0x9745, + 0,0x95D7, 0, 0, 0,0x99A5, 0, 0, + 0, 0,0xE8D3, 0, 0,0x93AE, 0,0x99A6, +0x8AA8,0x96B1, 0,0xFA88, 0,0x8F9F,0x99A7,0x95E5, +0x99AB, 0,0x90A8,0x99A8,0x8BCE, 0,0x99A9,0x8AA9, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,0x8C4D,0x99AC, 0,0x99AD, 0, 0, +0x99AE,0x99AF,0x8ED9, 0, 0, 0,0x8CF9,0x96DC, +0xFA89,0x96E6,0x93F5, 0, 0,0x95EF,0x99B0,0xFA8A, +0x99B1, 0, 0, 0, 0,0x99B3, 0,0x99B5, +0x99B4, 0, 0, 0, 0,0x99B6,0x89BB,0x966B, + 0,0x8DFA,0x99B7, 0, 0,0x9178, 0, 0, +0x8FA0,0x8BA7, 0,0x99B8,0xFA8B, 0, 0, 0, + 0, 0,0x94D9, 0, 0, 0, 0,0x99B9, + 0,0x99BA, 0,0x99BB, 0, 0, 0, 0, +0x99BC,0x9543,0x8BE6,0x88E3, 0, 0, 0,0x93BD, +0x99BD,0x8F5C, 0,0x90E7, 0,0x99BF,0x99BE,0x8FA1, +0x8CDF,0x99C1,0x94BC, 0, 0,0x99C2, 0, 0, + 0,0x94DA,0x91B2,0x91EC,0x8BA6, 0, 0,0x93EC, +0x9250, 0,0x948E, 0,0x966D, 0,0x99C4, 0, +0x90E8, 0, 0, 0, 0, 0,0x8C54, 0, + 0,0x99C5, 0, 0, 0, 0,0x99C6,0x894B, +0x88F3,0x8AEB,0xFA8C,0x91A6,0x8B70,0x9791, 0,0x99C9, +0x89B5, 0, 0,0x99C8, 0, 0, 0,0x8BA8, + 0, 0,0x99CA, 0,0x96EF, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,0xFA8D, 0, 0,0x99CB, 0, +0x97D0, 0,0x8CFA, 0, 0, 0, 0,0x8CB4, +0x99CC, 0, 0, 0, 0,0x99CE,0x99CD, 0, +0x907E,0x8958, 0, 0, 0,0x897D,0x99CF, 0, +0x99D0, 0,0xFA8E,0x8CB5, 0, 0,0x99D1, 0, + 0, 0, 0,0x8B8E, 0, 0, 0, 0, + 0, 0,0x8E51,0x99D2, 0, 0, 0, 0, +0x9694,0x8DB3,0x8B79,0x9746,0x916F,0x94BD,0x8EFB, 0, + 0, 0, 0, 0,0x8F66, 0,0x8EE6,0x8EF3, + 0,0x8F96, 0,0x94BE, 0,0xFA8F, 0,0x99D5, + 0,0x8962,0x9170,0x8CFB,0x8CC3,0x8BE5, 0, 0, +0x99D9,0x9240,0x91FC,0x8BA9,0x8FA2,0x99DA,0x99D8,0x89C2, +0x91E4,0x8EB6,0x8E6A,0x8945, 0, 0,0x8A90,0x8D86, +0x8E69, 0,0x99DB, 0, 0, 0, 0, 0, + 0,0x99DC, 0,0x8B68,0x8A65, 0, 0, 0, +0x8D87,0x8B67,0x92DD,0x8944,0x93AF,0x96BC,0x8D40,0x9799, +0x9366,0x8CFC, 0, 0, 0, 0, 0, 0, + 0, 0, 0,0x8C4E, 0,0x99E5, 0,0x8BE1, +0x9669, 0, 0, 0, 0, 0,0x94DB, 0, + 0,0x99E4, 0,0x8ADC,0x99DF,0x99E0,0x99E2, 0, + 0, 0, 0, 0, 0, 0,0x99E3, 0, +0x8B7A,0x9081, 0,0x95AB,0x99E1,0x99DD,0x8CE1, 0, +0x99DE, 0,0x9843, 0, 0, 0,0x95F0, 0, +0x92E6,0x8CE0,0x8D90, 0, 0, 0,0x99E6, 0, + 0,0x93DB, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0,0x99EA, + 0, 0, 0, 0, 0, 0, 0, 0, +0x8EFC, 0,0x8EF4, 0, 0, 0, 0, 0, +0x99ED,0x99EB, 0,0x96A1, 0,0x99E8,0x99F1,0x99EC, + 0, 0, 0,0x99EF,0x8CC4,0x96BD, 0, 0, +0x99F0, 0, 0, 0,0x99F2, 0,0x99F4, 0, + 0, 0,0xFA92,0x8DEE,0x9861, 0,0x99E9,0x99E7, +0x99F3, 0,0x99EE, 0, 0, 0, 0, 0, + 0, 0, 0, 0,0xFA91, 0, 0, 0, + 0, 0,0x99F6, 0,0x9A42,0x99F8, 0, 0, +0x99FC,0xFA93, 0,0x9A40,0x99F9, 0, 0,0x9A5D, + 0, 0,0x8DE7,0x8A50, 0, 0, 0, 0, +0x99F7, 0, 0, 0,0x9A44,0x88F4,0x9A43, 0, +0x88A3,0x9569,0x9A41, 0,0x99FA, 0, 0,0x99F5, +0x99FB,0x8DC6, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, +0x9A45, 0, 0, 0, 0, 0, 0, 0, + 0,0x88F5,0x9A4E, 0, 0,0x9A46,0x9A47, 0, +0x8FA3,0x9689, 0, 0, 0,0x9A4C,0x9A4B, 0, + 0, 0,0x934E, 0, 0, 0, 0, 0, + 0, 0,0x9A4D, 0, 0,0x9A4A, 0,0xFA94, + 0, 0, 0, 0,0x8953, 0,0x8DB4,0x904F, + 0, 0, 0, 0, 0, 0, 0,0x9A48, +0x9382, 0, 0, 0,0x9A49, 0,0x88A0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,0x9A53,0x9742, + 0,0x8FA5, 0,0x9A59, 0, 0, 0, 0, +0x9A58,0x9A4F, 0, 0, 0, 0,0x91C1, 0, +0x9A50, 0, 0, 0,0x91ED,0x9A55,0x8FA4, 0, + 0, 0, 0, 0,0x9A52, 0, 0,0x96E2, + 0, 0, 0,0x8C5B, 0, 0,0x9A56,0x9A57, + 0, 0, 0, 0,0x9A54,0x9A5A, 0, 0, + 0, 0, 0,0x9A51, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,0x9A60,0x9A65, 0,0x9A61, 0, +0x9A5C, 0, 0,0x9A66,0x9150, 0,0xFA95,0x9A68, + 0,0x8D41,0x9A5E,0x929D, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, +0x9A62,0x9A5B,0x8AAB, 0,0x8AEC,0x8A85,0x9A63,0x9A5F, + 0, 0, 0, 0, 0, 0, 0,0x8C96, +0x9A69,0x9A67,0x9172,0x8B69,0x8BAA, 0,0x9A64, 0, +0x8BF2, 0, 0, 0, 0, 0,0x8963, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,0x9A6D,0x9A6B, 0,0x9AA5, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,0x9A70, 0, 0, 0, + 0, 0,0x9A6A, 0,0x9A6E, 0, 0,0x9A6C, + 0, 0, 0,0x8E6B,0x9A6F, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0,0x9A72, + 0,0x9A77, 0, 0, 0,0x9A75,0x9A74, 0, + 0, 0, 0, 0, 0, 0,0x9251, 0, + 0,0x89C3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,0x9A71, 0,0x9A73,0x8FA6, +0x8952, 0, 0,0x9A76, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0,0x89DC, 0, 0, 0, 0, 0,0x9A82, + 0,0x8FFA,0x9A7D, 0,0x9A7B, 0,0x9A7C, 0, +0x9A7E, 0, 0, 0, 0, 0, 0, 0, + 0, 0,0x895C, 0, 0, 0, 0, 0, + 0, 0, 0, 0,0x9158, 0,0x9A78, 0, +0x9A79, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,0x8A9A, 0, 0, 0, 0, + 0, 0, 0, 0,0x9A81, 0, 0, 0, +0x8AED, 0,0x9A84,0x9A80,0x9A83, 0, 0, 0, + 0, 0, 0, 0,0x95AC, 0, 0, 0, +0x93D3, 0,0x94B6, 0, 0, 0, 0, 0, +0x9A86, 0, 0, 0, 0, 0,0x9A85,0x8A64, + 0, 0,0x9A87, 0, 0, 0, 0,0x9A8A, + 0, 0, 0, 0,0x9A89, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, +0x9A88, 0,0x9458, 0, 0,0x9A8B, 0, 0, + 0, 0, 0, 0, 0, 0,0x9A8C, 0, + 0, 0, 0, 0,0x9A8E, 0,0x9A8D, 0, + 0, 0, 0, 0,0x9A90, 0, 0, 0, +0x9A93,0x9A91,0x9A8F,0x9A92, 0, 0, 0, 0, +0x9A94, 0, 0, 0, 0, 0,0x9A95, 0, + 0,0x9A96, 0,0x9A97, 0, 0, 0,0x9A98, +0x9964, 0,0x8EFA,0x8E6C, 0, 0,0x89F1, 0, +0x88F6, 0, 0,0x9263, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,0x9A99, 0, +0x8DA2, 0,0x88CD,0x907D, 0, 0, 0, 0, + 0,0x9A9A,0x8CC5, 0, 0,0x8D91, 0,0x9A9C, +0x9A9B, 0, 0,0x95DE,0x9A9D, 0, 0, 0, +0x9A9F,0x9A9E, 0,0x9AA0, 0,0x9AA1, 0,0x8C97, + 0, 0,0x8980,0x9AA2, 0, 0,0x9AA4, 0, +0x9AA3, 0, 0, 0,0x9AA6, 0, 0,0x9379, + 0, 0, 0, 0, 0, 0,0x9AA7,0x88B3, +0x8DDD, 0, 0, 0, 0,0x8C5C, 0, 0, +0x926E, 0, 0, 0, 0, 0, 0,0x9AA8, +0x9AA9, 0, 0,0x9AAB, 0, 0, 0, 0, +0x9AAC, 0,0x8DE2, 0, 0, 0, 0,0x8BCF, + 0, 0,0x9656, 0, 0, 0,0x9AAA,0x9AAD, +0x8DBF,0x8D42, 0, 0, 0, 0, 0, 0, + 0,0xFA96, 0, 0, 0, 0, 0, 0, + 0,0x9AB1, 0, 0,0x8DA3,0xFA97,0x9252, 0, + 0,0x9AAE,0x92D8, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0,0x9AB2, + 0, 0,0x9082, 0, 0, 0, 0, 0, +0x9AB0,0x9AB3, 0,0x8C5E, 0, 0, 0, 0, + 0, 0, 0,0x9AB4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, +0x9AB5, 0,0x8D43,0x8A5F,0x9AB7, 0, 0, 0, + 0, 0,0x9AB8, 0,0xFA98, 0, 0, 0, +0x9AB9, 0, 0,0x9AB6, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, +0x9AAF, 0, 0,0x9ABA, 0, 0,0x9ABB,0xFA9A, +0xFA99, 0, 0,0x9684, 0, 0,0x8FE9, 0, + 0, 0,0x9ABD,0x9ABE,0x9ABC, 0,0x9AC0, 0, + 0, 0, 0, 0,0x9457, 0, 0,0x88E6, +0x9575, 0, 0,0x9AC1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,0x8FFB, 0, 0,0x8EB7, + 0,0x947C,0x8AEE, 0,0x8DE9, 0, 0, 0, +0x9678, 0,0x93B0, 0, 0,0x8C98,0x91CD, 0, + 0, 0,0x9ABF,0x9AC2, 0, 0, 0, 0, + 0, 0, 0, 0, 0,0x91C2, 0, 0, + 0,0x9AC3, 0, 0, 0,0x9AC4, 0, 0, + 0,0x9AC6, 0, 0,0x92E7, 0, 0, 0, + 0, 0,0x8AAC, 0, 0, 0, 0,0xEA9F, +0x8981,0x95F1, 0, 0,0x8FEA,0x9367, 0, 0, + 0, 0,0x8DE4, 0, 0,0x9ACC, 0, 0, +0x95BB,0x97DB, 0, 0, 0, 0, 0, 0, + 0, 0,0x89F2,0x9AC8, 0, 0, 0, 0, + 0,0x9159,0x9ACB, 0,0x9383, 0, 0,0x9368, +0x9384,0x94B7,0x92CB, 0, 0, 0,0x8DC7, 0, + 0, 0,0x9AC7, 0, 0, 0, 0, 0, + 0,0x8996, 0,0x9355, 0, 0, 0, 0, +0x9AC9, 0,0x9AC5, 0, 0,0x906F, 0, 0, + 0,0x9ACD, 0, 0, 0, 0,0x8F6D, 0, + 0, 0, 0,0x8BAB, 0,0x9ACE, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,0x95E6, 0, 0, 0,0x919D, + 0, 0, 0, 0,0x92C4, 0,0xFA9D,0x9AD0, + 0, 0, 0, 0, 0, 0, 0, 0, +0x966E, 0, 0,0x9AD1, 0, 0,0x9AD6, 0, + 0, 0,0xFA9E,0x95AD, 0, 0, 0, 0, +0x9AD5,0x9ACF,0x9AD2,0x9AD4, 0, 0,0x8DA4, 0, + 0,0x95C7, 0, 0, 0,0x9AD7, 0,0x9264, + 0, 0,0x89F3, 0,0x8FEB, 0, 0, 0, + 0,0x9AD9, 0,0x9AD8, 0,0x8D88, 0,0x9ADA, +0x9ADC,0x9ADB, 0, 0,0x9ADE, 0,0x9AD3,0x9AE0, + 0, 0, 0, 0,0x9ADF,0x9ADD, 0, 0, + 0, 0, 0,0x8E6D,0x9070, 0,0x9173,0x9AE1, +0x90BA,0x88EB,0x9484, 0, 0, 0, 0,0x92D9, + 0,0x9AE3,0x9AE2,0x9AE4,0x9AE5,0x9AE6, 0, 0, + 0, 0,0x9AE7, 0, 0, 0, 0, 0, + 0,0x95CF,0x9AE8,0xFA9F, 0, 0, 0,0x89C4, +0x9AE9, 0, 0, 0, 0,0x975B,0x8A4F, 0, +0x99C7,0x8F67,0x91BD,0x9AEA,0x96E9, 0, 0, 0, + 0, 0,0x96B2, 0, 0,0x9AEC, 0,0x91E5, + 0,0x9356,0x91BE,0x9576,0x9AED,0x9AEE,0x899B, 0, + 0,0x8EB8,0x9AEF, 0, 0, 0, 0,0x88CE, +0x9AF0, 0, 0, 0, 0, 0,0x9AF1, 0, + 0, 0, 0, 0,0x8982, 0, 0,0x8AEF, +0x93DE,0x95F2, 0, 0, 0, 0,0x9AF5,0x9174, +0x9AF4,0x8C5F, 0,0xFAA0,0x967A,0x9AF3, 0,0x9385, +0x9AF7, 0,0x9AF6,0xFAA1, 0,0xFAA2, 0, 0, +0x9AF9, 0,0x9AF8,0xFAA3, 0,0x899C, 0,0x9AFA, +0x8FA7,0x9AFC,0x9244, 0,0x9AFB, 0,0x95B1, 0, + 0, 0, 0,0x8F97,0x937A, 0, 0, 0, +0x9B40, 0, 0, 0, 0,0x8D44, 0, 0, + 0,0x9B41,0x9440,0x94DC,0x96CF, 0, 0, 0, + 0, 0,0x9444, 0, 0,0x9B4A, 0, 0, + 0, 0, 0,0x8B57, 0, 0,0x9764, 0, + 0,0x96AD, 0,0x9BAA, 0,0x9B42, 0, 0, + 0, 0, 0,0x9B45,0xFAA4,0x91C3, 0, 0, +0x9657, 0, 0, 0,0x9369, 0, 0, 0, + 0, 0,0x9B46, 0, 0, 0, 0, 0, + 0,0x9685,0xFAA5,0x8DC8, 0, 0,0x8FA8, 0, + 0, 0, 0, 0, 0, 0,0x9B47, 0, + 0,0x8E6F, 0,0x8E6E, 0, 0, 0, 0, +0x88B7,0x8CC6, 0,0x90A9,0x88CF, 0, 0, 0, + 0,0x9B4B,0x9B4C, 0,0x9B49, 0, 0, 0, + 0, 0, 0, 0, 0,0x8957,0x8AAD, 0, +0x9B48, 0,0x96C3,0x9550, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,0x88A6, 0, + 0, 0, 0,0x88F7, 0, 0, 0,0x8E70, + 0,0x88D0, 0,0x88A1, 0, 0, 0, 0, + 0,0x9B51, 0, 0, 0, 0, 0, 0, + 0,0x9B4F, 0, 0, 0, 0, 0, 0, +0x96BA, 0,0x9B52, 0,0x9B50, 0, 0,0x9B4E, +0x9050, 0, 0, 0, 0,0x9B4D, 0, 0, + 0,0x95D8, 0, 0, 0, 0, 0,0x8CE2, + 0, 0, 0, 0, 0,0x9B56,0x9B57, 0, + 0, 0, 0, 0,0x8FA9, 0, 0, 0, +0x9B53,0x984B, 0, 0, 0, 0,0x946B, 0, + 0,0x9B55, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,0x8DA5, 0, 0, 0, 0, 0, + 0, 0,0x9B58, 0, 0, 0,0x9577, 0, + 0, 0,0x9B59, 0,0x9B54, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0,0x96B9, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,0x947D, 0, 0, 0, 0, 0, + 0, 0,0x9B5A,0x9551, 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,0x9B5B,0x9B5F,0x9B5C, 0, + 0,0x89C5,0x9B5E, 0, 0, 0, 0, 0, + 0,0x8EB9, 0,0x9B5D,0x8C99, 0, 0, 0, +0x9B6B, 0, 0, 0, 0, 0,0x9B64,0x9B61, + 0, 0, 0, 0, 0, 0, 0, 0, + 0,0x9284, 0,0x9B60, 0, 0,0x9B62, 0, + 0,0x9B63, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,0x9B65,0x9B66, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0,0x8AF0, 0,0x9B68,0x9B67, 0, 0, 0, + 0, 0, 0, 0, 0, 0,0x9B69, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,0x8FEC, 0, 0, 0, 0, 0, + 0, 0,0x9B6C, 0,0x92DA, 0, 0, 0, +0x8964, 0,0x9B6A, 0, 0, 0,0x9B6D, 0, + 0, 0, 0, 0, 0, 0,0x9B6E, 0, +0x9B71, 0, 0,0x9B6F, 0,0x9B70, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, +0x8E71,0x9B72, 0, 0,0x8D45,0x9B73,0xFAA6,0x8E9A, +0x91B6, 0,0x9B74,0x9B75,0x8E79,0x8D46, 0,0x96D0, + 0, 0, 0,0x8B47,0x8CC7,0x9B76,0x8A77, 0, + 0,0x9B77, 0,0x91B7, 0, 0, 0, 0, +0x9B78,0x9BA1, 0,0x9B79, 0,0x9B7A, 0, 0, +0x9B7B, 0,0x9B7D, 0, 0, 0, 0, 0, +0x9B7E, 0, 0,0x9B80, 0,0x91EE, 0,0x8946, +0x8EE7,0x88C0, 0,0x9176,0x8AAE,0x8EB3, 0,0x8D47, + 0, 0, 0, 0, 0,0x9386, 0,0x8F40, +0x8AAF,0x9288,0x92E8,0x88B6,0x8B58,0x95F3, 0,0x8EC0, + 0, 0,0x8B71,0x90E9,0x8EBA,0x9747,0x9B81, 0, + 0, 0, 0, 0, 0, 0,0x8B7B, 0, +0x8DC9, 0, 0,0x8A51,0x8983,0x8FAA,0x89C6, 0, +0x9B82,0x9765, 0, 0, 0, 0, 0,0x8F68, +0xFAA7, 0,0x8EE2,0x9B83,0x8AF1,0x93D0,0x96A7,0x9B84, + 0,0x9B85, 0, 0,0x9578, 0, 0, 0, +0x9B87, 0,0x8AA6,0x8BF5,0x9B86, 0, 0, 0, +0xFAA9, 0, 0,0x8AB0, 0,0x9051,0x9B8B,0x8E40, + 0,0x89C7,0x9B8A, 0,0x9B88,0x9B8C,0x9B89,0x944A, +0x9ECB,0x9052, 0,0x9B8D,0xFAAA, 0,0x97BE, 0, +0x9B8E, 0, 0,0x9B90, 0,0x929E,0x9B8F, 0, +0x90A1, 0,0x8E9B, 0, 0, 0,0x91CE,0x8EF5, + 0,0x9595,0x90EA, 0,0x8ECB,0x9B91,0x8FAB,0x9B92, +0x9B93,0x88D1,0x91B8,0x9071, 0,0x9B94,0x93B1,0x8FAC, + 0,0x8FAD, 0,0x9B95, 0, 0,0x90EB, 0, + 0, 0,0x8FAE, 0, 0, 0,0xFAAB, 0, +0x9B96, 0,0x9B97, 0,0x96DE, 0, 0, 0, +0x9B98, 0, 0, 0, 0,0x8BC4, 0, 0, + 0,0x8F41, 0, 0, 0, 0, 0, 0, +0x9B99,0x9B9A,0x8EDA,0x904B,0x93F2,0x9073,0x94F6,0x9441, +0x8BC7,0x9B9B, 0, 0, 0,0x8B8F,0x9B9C, 0, +0x8BFC, 0,0x93CD,0x89AE, 0,0x8E72,0x9B9D,0x9BA0, +0x9B9F,0x8BFB, 0,0x9B9E, 0,0x9357, 0, 0, + 0, 0, 0, 0, 0, 0,0x91AE, 0, +0x936A,0x8EC6, 0, 0,0x9177,0x979A, 0, 0, + 0, 0, 0, 0,0x9BA2, 0,0x9BA3,0x93D4, + 0,0x8E52, 0, 0, 0, 0,0x9BA5, 0, + 0,0x9BA6, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,0x9BA7, 0, 0, 0, +0x8AF2,0x9BA8, 0, 0,0x9BA9, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0,0x89AA, 0, 0, 0, 0,0xFAAC, 0, +0x915A,0x8AE2, 0,0x9BAB,0x96A6, 0, 0, 0, + 0,0x91D0, 0,0x8A78, 0, 0,0x9BAD,0x9BAF, +0x8ADD, 0,0xFAAD,0x9BAC,0x9BAE, 0,0x9BB1, 0, + 0, 0, 0, 0, 0,0x9BB0, 0,0x9BB2, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0,0x9BB3, 0, 0, 0, 0, 0, 0, +0x93BB,0x8BAC, 0, 0, 0, 0, 0, 0, +0x89E3,0x9BB4,0x9BB9, 0, 0,0x9BB7, 0,0x95F5, +0x95F4, 0, 0, 0, 0,0xFAAE,0x9387, 0, + 0, 0,0x9BB6,0x8F73, 0,0x9BB5, 0, 0, + 0, 0, 0, 0, 0, 0, 0,0x9092, + 0, 0, 0,0x9BBA, 0, 0,0x8DE8, 0, + 0,0x9BC0, 0, 0,0x9BC1,0x9BBB,0x8A52,0x9BBC, +0x9BC5,0x9BC4,0x9BC3,0x9BBF, 0, 0, 0,0x9BBE, + 0, 0,0x9BC2, 0, 0, 0, 0,0xFAAF, + 0,0x95F6, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,0xFAB2, 0, 0, 0, 0, 0, + 0, 0, 0,0x9BC9,0x9BC6, 0,0x9BC8, 0, +0x9792, 0,0x9BC7,0xFAB0, 0, 0, 0, 0, + 0, 0, 0, 0,0x9BBD, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0,0x9093, 0, 0,0x9BCA,0xFAB3, 0,0x8DB5, + 0, 0, 0,0x9BCB, 0, 0,0x9BCC, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,0x9BCF, 0,0x9BCE, 0, 0,0x9BCD, + 0, 0, 0,0x9388,0x9BB8, 0, 0, 0, +0x9BD5, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,0x9BD1, 0, 0, + 0, 0,0x9BD0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,0x9BD2, 0,0x9BD3, 0, + 0, 0, 0, 0, 0, 0, 0,0x9BD6, +0xFAB4,0xFAB5,0x97E4, 0,0x9BD7,0x9BD4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0,0x9BD8, 0, 0,0x8ADE,0x9BD9, 0, 0, +0xFAB6, 0,0x9BDB,0x9BDA, 0, 0,0x9BDC, 0, + 0, 0, 0,0x9BDD, 0,0x90EC,0x8F42, 0, + 0,0x8F84, 0,0x9183, 0,0x8D48,0x8DB6,0x8D49, +0x8B90, 0, 0,0x9BDE, 0, 0,0x8DB7, 0, + 0,0x8CC8,0x9BDF,0x96A4,0x9462,0x9BE0, 0,0x8D4A, + 0, 0, 0,0x8AAA, 0,0x9246,0x8BD0, 0, + 0, 0,0x8E73,0x957A, 0, 0,0x94BF, 0, + 0, 0, 0,0x9BE1,0x8AF3, 0, 0, 0, + 0,0x9BE4, 0, 0, 0, 0,0x929F, 0, + 0,0x9BE3,0x9BE2,0x9BE5, 0,0x92E9, 0, 0, + 0, 0, 0, 0, 0,0x9083, 0, 0, + 0, 0, 0,0x8E74, 0,0x90C8, 0,0x91D1, +0x8B41, 0, 0,0x92A0, 0, 0,0x9BE6,0x9BE7, +0x8FED, 0, 0, 0, 0,0x9658, 0, 0, +0x9BEA, 0, 0,0x9BE9,0x9BE8,0x959D, 0,0x9BF1, + 0, 0, 0, 0,0x9679, 0,0x9BEB, 0, + 0, 0, 0, 0,0x9BED,0x968B, 0,0x9BEC, + 0, 0, 0, 0, 0, 0, 0,0x9BEE, + 0,0x94A6,0x9BEF,0x95BC,0x9BF0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,0x8AB1,0x95BD,0x944E,0x9BF2,0x9BF3, 0, +0x8D4B,0x8AB2,0x9BF4,0x8CB6,0x9763,0x9748,0x8AF4,0x9BF6, + 0,0x92A1, 0,0x8D4C,0x8FAF, 0, 0,0x94DD, + 0, 0,0x8FB0, 0, 0, 0, 0,0x8F98, + 0, 0, 0, 0, 0,0x92EA,0x95F7,0x9358, + 0, 0,0x8D4D, 0,0x957B, 0, 0, 0, +0x9BF7, 0, 0, 0, 0, 0,0x9378,0x8DC0, + 0, 0, 0,0x8CC9, 0,0x92EB, 0, 0, + 0, 0, 0, 0, 0,0x88C1,0x8F8E,0x8D4E, +0x9766, 0, 0, 0, 0, 0, 0, 0, + 0,0x9BF8,0x9BF9,0x9470, 0, 0, 0, 0, +0x9BFA,0x97F5,0x984C, 0, 0, 0, 0,0x9BFC, +0x9BFB, 0, 0,0x8A66, 0, 0,0x9C40, 0, + 0, 0,0x9C43,0x9C44, 0,0x9C42, 0,0x955F, +0x8FB1,0x9C46,0x9C45,0x9C41, 0, 0, 0, 0, +0x9C47,0x9C48, 0, 0,0x9C49, 0, 0, 0, +0x9C4C,0x9C4A, 0,0x9C4B,0x9C4D, 0,0x8984,0x92EC, +0x9C4E, 0,0x8C9A,0x89F4,0x9455, 0,0x9C4F,0x93F9, + 0,0x95D9, 0,0x9C50,0x984D, 0, 0, 0, + 0,0x9C51,0x95BE,0x9C54,0x989F,0x98AF, 0,0x8EAE, +0x93F3,0x9C55, 0,0x8B7C,0x92A2,0x88F8,0x9C56,0x95A4, +0x8D4F, 0, 0,0x926F, 0, 0, 0,0x92ED, + 0,0xFAB7, 0, 0, 0,0x96ED,0x8CB7,0x8CCA, + 0,0x9C57, 0, 0, 0,0x9C58, 0,0x9C5E, + 0,0x8EE3, 0, 0,0xFAB8,0x92A3, 0,0x8BAD, +0x9C59, 0, 0, 0,0x954A, 0,0x9265, 0, + 0,0x9C5A, 0, 0, 0,0xFA67, 0, 0, +0x9C5B, 0,0x8BAE, 0,0x9C5C, 0,0x9C5D, 0, + 0,0x9C5F, 0,0x9396, 0, 0,0x9C60,0x9C61, + 0,0x9C62, 0, 0,0x9C53,0x9C52, 0, 0, + 0,0x9C63,0x8C60, 0, 0, 0,0x9546,0xFAB9, + 0,0x8DCA,0x9556,0x92A4,0x956A,0x9C64, 0, 0, +0x8FB2,0x8965, 0,0x9C65, 0, 0, 0,0x9C66, + 0,0x96F0, 0, 0,0x94DE, 0, 0,0x9C69, +0x899D,0x90AA,0x9C68,0x9C67,0x8C61,0x91D2, 0,0x9C6D, +0x9C6B, 0,0x9C6A,0x97A5,0x8CE3, 0, 0, 0, +0x8F99,0x9C6C,0x936B,0x8F5D, 0, 0, 0,0x93BE, +0x9C70,0x9C6F, 0, 0, 0, 0,0x9C6E, 0, +0x9C71,0x8CE4, 0, 0, 0, 0, 0, 0, +0x9C72,0x959C,0x8F7A, 0, 0,0x9C73,0x94F7, 0, + 0, 0, 0,0x93BF,0x92A5, 0, 0,0xFABA, + 0,0x934F, 0, 0,0x9C74,0x8B4A, 0, 0, + 0, 0, 0,0x9053, 0,0x954B, 0, 0, + 0, 0, 0, 0,0x8AF5,0x9445, 0, 0, + 0, 0, 0, 0, 0, 0,0x9C75,0x8E75, +0x9659,0x965A, 0, 0,0x899E,0x9C7A,0xFABB, 0, +0x9289, 0, 0, 0,0x9C77, 0, 0, 0, + 0, 0, 0,0x89F5, 0, 0, 0, 0, +0x9CAB,0x9C79, 0, 0, 0,0x944F, 0, 0, +0x9C78, 0, 0,0x9C76, 0,0x8D9A, 0,0x9C7C, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,0x9C83,0x9C89, +0x9C81, 0,0x937B, 0, 0,0x9C86,0x957C, 0, + 0,0x9C80, 0,0x9C85,0x97E5,0x8E76, 0, 0, +0x91D3,0x9C7D, 0, 0, 0,0x8B7D,0x9C88,0x90AB, +0x8985,0x9C82,0x89F6,0x9C87, 0, 0, 0,0x8BAF, + 0,0x9C84, 0, 0, 0, 0, 0, 0, + 0, 0,0x9C8A, 0, 0, 0, 0, 0, + 0,0x9C8C,0x9C96,0x9C94, 0, 0,0x9C91, 0, + 0, 0,0x9C90,0x97F6, 0,0x9C92, 0, 0, +0x8BB0, 0,0x8D50, 0, 0,0x8F9A, 0, 0, + 0,0x9C99,0x9C8B, 0, 0,0xFABC, 0,0x9C8F, +0x9C7E, 0,0x89F8,0x9C93,0x9C95,0x9270, 0, 0, +0x8DA6,0x89B6,0x9C8D,0x9C98,0x9C97,0x8BB1, 0,0x91A7, +0x8A86, 0, 0, 0, 0,0x8C62, 0,0x9C8E, + 0, 0, 0, 0, 0, 0, 0, 0, + 0,0x9C9A, 0,0x9C9D,0x9C9F,0xFABD, 0, 0, + 0,0x8EBB,0xFABE,0x9CA5,0x92EE,0x9C9B, 0, 0, + 0, 0,0x9CA3, 0,0x89F7, 0,0x9CA1,0x9CA2, + 0, 0,0x9C9E,0x9CA0, 0, 0, 0,0x8CE5, +0x9749, 0, 0,0x8AB3, 0, 0,0x8978,0x9CA4, + 0,0x9459,0x88AB, 0, 0, 0, 0, 0, + 0, 0,0x94DF,0x9C7B,0x9CAA,0x9CAE,0x96E3, 0, +0x9CA7, 0, 0, 0,0x9389,0x9CAC, 0, 0, + 0, 0, 0, 0, 0,0x8FEE,0x9CAD,0x93D5, + 0, 0, 0, 0, 0, 0, 0, 0, + 0,0x9866, 0,0x9CA9, 0,0xFAC0, 0, 0, +0x9CAF, 0,0x8D9B, 0,0x90C9, 0,0xFABF,0x88D2, +0x9CA8,0x9CA6, 0,0x9179, 0, 0, 0,0x9C9C, +0x8E53, 0, 0, 0, 0, 0, 0, 0, +0x91C4,0x9CBB,0xFAC2,0x917A,0x9CB6, 0,0x9CB3,0x9CB4, + 0,0x8EE4,0x9CB7,0x9CBA, 0, 0, 0, 0, +0x9CB5,0x8F44, 0,0x9CB8, 0, 0,0x9CB2, 0, +0x96FA,0x96F9, 0, 0, 0,0x9CBC,0x9CBD,0x88D3, + 0,0xFAC3, 0, 0, 0,0x9CB1, 0, 0, + 0, 0,0x8BF0,0x88A4, 0, 0, 0,0x8AB4, +0xFAC1,0x9CB9, 0, 0, 0, 0, 0,0x9CC1, +0x9CC0, 0, 0, 0,0x9CC5, 0, 0, 0, +0xFAC5, 0, 0, 0,0x9CC6, 0, 0,0xFAC4, + 0, 0, 0, 0,0x9CC4,0x9CC7,0x9CBF,0x9CC3, + 0, 0,0x9CC8, 0,0x9CC9, 0, 0,0x9CBE, +0x8E9C, 0,0x9CC2,0x91D4,0x8D51,0x9CB0,0x9054, 0, + 0, 0, 0,0x9CD6, 0,0x95E7, 0, 0, +0x9CCC,0x9CCD,0x9CCE, 0, 0,0x9CD5, 0,0x9CD4, + 0, 0,0x969D,0x8AB5, 0,0x9CD2, 0,0x8C64, +0x8A53, 0, 0,0x9CCF, 0, 0,0x97B6,0x9CD1, +0x88D4,0x9CD3, 0,0x9CCA,0x9CD0,0x9CD7,0x8C63,0x9CCB, + 0, 0, 0, 0, 0, 0,0x977C, 0, + 0, 0,0x974A, 0, 0, 0, 0,0x9CDA, + 0, 0,0x9CDE, 0, 0, 0,0x919E, 0, +0x97F7,0x9CDF, 0, 0,0x9CDC, 0,0x9CD9, 0, +0xFAC6,0x9CD8,0x9CDD, 0, 0, 0, 0, 0, + 0, 0, 0, 0,0x95AE, 0, 0,0x93B2, + 0,0x8C65, 0,0x9CE0,0x9CDB, 0,0x9CE1, 0, + 0, 0,0x8C9B, 0, 0, 0,0x89AF, 0, + 0, 0,0x9CE9, 0, 0, 0,0x8AB6, 0, + 0, 0, 0,0x9CE7, 0, 0,0x9CE8,0x8DA7, +0x9CE6,0x9CE4,0x9CE3,0x9CEA,0x9CE2,0x9CEC, 0, 0, +0x89F9, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,0x9CEE, 0, 0,0x9CED, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,0x92A6, 0,0x9CF1, 0,0x9CEF,0x9CE5, +0x8C9C, 0,0x9CF0, 0,0x9CF4,0x9CF3,0x9CF5,0x9CF2, +0x9CF6, 0, 0, 0, 0, 0, 0, 0, +0x9CF7,0x9CF8,0x95E8, 0,0x9CFA,0x9CF9,0x8F5E, 0, +0x90AC,0x89E4,0x89FA,0xFAC7,0x9CFB, 0,0x88BD, 0, + 0, 0,0x90CA,0x9CFC, 0,0xE6C1,0x9D40,0x8C81, + 0,0x9D41, 0, 0, 0, 0,0x90ED, 0, + 0, 0,0x9D42, 0, 0, 0,0x9D43,0x8B59, +0x9D44, 0,0x9D45,0x9D46,0x91D5, 0, 0, 0, +0x8CCB, 0, 0,0x96DF, 0, 0, 0,0x965B, +0x8F8A,0x9D47, 0, 0, 0, 0, 0,0x90EE, +0xE7BB,0x94E0, 0,0x8EE8, 0,0x8DCB,0x9D48, 0, + 0, 0, 0,0x91C5, 0,0x95A5, 0, 0, +0x91EF, 0, 0,0x9D4B, 0, 0,0x9D49, 0, +0x9D4C, 0, 0,0x9D4A, 0, 0, 0, 0, +0x9D4D, 0, 0, 0, 0, 0,0x95AF, 0, + 0,0x88B5, 0, 0, 0, 0,0x957D, 0, + 0,0x94E1, 0, 0,0x9D4E, 0,0x9D51,0x8FB3, +0x8B5A, 0,0x9D4F,0x9D56,0x8FB4, 0, 0, 0, + 0,0x9D50,0x9463, 0, 0, 0, 0, 0, + 0,0x977D,0x9D52,0x9D53,0x9D57,0x938A,0x9D54,0x8D52, +0x90DC, 0, 0,0x9D65,0x94B2, 0,0x91F0, 0, + 0, 0, 0, 0, 0, 0,0xFAC8, 0, + 0, 0, 0,0x94E2,0x9DAB, 0, 0, 0, + 0,0x95F8, 0, 0, 0,0x92EF, 0, 0, + 0,0x9695, 0,0x9D5A,0x899F,0x928A, 0, 0, + 0, 0,0x9D63, 0, 0,0x9253,0x9D5D,0x9D64, +0x9D5F,0x9D66,0x9D62, 0,0x9D61,0x948F, 0,0x9D5B, +0x89FB,0x9D59,0x8B91,0x91F1,0x9D55, 0, 0,0x9D58, +0x8D53,0x90D9, 0,0x8FB5,0x9D60,0x9471, 0, 0, +0x8B92,0x8A67, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,0x8A87,0x9040,0x9D68,0x9D6D, + 0,0x9D69, 0,0x8C9D, 0,0x9D6E,0x8E41,0x8D89, + 0, 0, 0, 0, 0, 0,0x8F45,0x9D5C, + 0,0x8E9D,0x9D6B, 0, 0, 0, 0,0x8E77, +0x9D6C,0x88C2, 0, 0,0x9D67, 0, 0, 0, + 0,0x92A7, 0, 0, 0, 0, 0, 0, + 0,0x8B93, 0, 0, 0, 0, 0,0x8BB2, + 0, 0, 0, 0, 0, 0, 0,0x9D6A, +0x88A5, 0, 0,0x8DC1, 0, 0, 0,0x9055, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,0x92F0, 0, 0,0x94D2,0x9D70,0x917D, + 0, 0, 0, 0, 0, 0, 0, 0, + 0,0x91A8, 0, 0,0x8E4A,0x9D71, 0,0x9D73, +0x9D6F, 0, 0, 0, 0,0x95DF, 0,0x92BB, + 0, 0, 0, 0,0x917B, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0,0x95F9, +0x8ECC,0x9D80, 0,0x9D7E, 0, 0,0x9098, 0, + 0, 0,0x8C9E, 0, 0, 0,0x9D78,0x8FB7, + 0, 0,0x93E6,0x9450, 0, 0, 0, 0, +0x9D76, 0, 0,0x917C, 0, 0, 0, 0, +0x8EF6,0x9D7B, 0, 0,0x8FB6, 0,0x9D75,0x9D7A, + 0, 0,0x9472, 0, 0, 0,0x9D74, 0, +0x8C40, 0, 0,0x8A7C, 0, 0, 0,0x9D7C, +0x97A9,0x8DCC,0x9254,0x9D79, 0,0x90DA, 0,0x8D54, +0x9084,0x8986,0x915B,0x9D77,0x8B64, 0, 0, 0, + 0, 0,0x8C66, 0,0x92CD,0x9D7D, 0, 0, + 0, 0, 0,0x917E, 0, 0,0x9D81, 0, +0x9D83, 0, 0,0x91B5,0x9D89, 0,0x9D84, 0, + 0,0x9D86, 0, 0, 0, 0, 0,0x9560, +0x92F1, 0,0x9D87, 0, 0, 0,0x974B, 0, + 0, 0,0x9767,0x8AB7, 0, 0, 0, 0, + 0,0x88AC, 0,0x9D85, 0, 0, 0, 0, + 0,0x9D82, 0, 0, 0, 0,0x8AF6, 0, + 0, 0, 0, 0,0x8987,0xFAC9,0x9D88, 0, + 0, 0,0x9768, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,0x9D8C, 0, + 0, 0, 0, 0, 0,0x91B9, 0,0x9D93, + 0, 0, 0,0x9D8D, 0, 0,0x9D8A,0x9D91, + 0, 0, 0, 0,0x9D72, 0, 0, 0, + 0, 0, 0, 0, 0, 0,0x9D8E, 0, +0x9D92, 0, 0, 0,0x94C0,0x938B, 0, 0, + 0, 0, 0, 0,0x9D8B, 0,0x9D8F, 0, + 0, 0,0x8C67, 0, 0, 0,0x8DEF, 0, + 0, 0,0x90DB, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,0x9D97, 0, + 0, 0, 0, 0, 0, 0, 0, 0, +0x9345, 0, 0, 0, 0, 0, 0, 0, +0xFACA, 0, 0, 0, 0, 0, 0,0x9D94, + 0,0x9680, 0, 0, 0, 0, 0,0x9D95, + 0, 0, 0, 0, 0, 0,0x9D96, 0, +0x96CC, 0,0x90A0, 0, 0, 0, 0, 0, + 0, 0, 0,0x8C82, 0, 0, 0, 0, +0x9D9D, 0, 0, 0, 0, 0, 0, 0, + 0, 0,0x8E54,0x9D9A, 0,0x9D99, 0, 0, + 0, 0,0x9451, 0, 0,0xFACB,0x93B3, 0, + 0, 0, 0, 0,0x9350,0x9D9B, 0, 0, + 0,0x9D9C, 0,0x958F, 0,0x9464,0x8E42, 0, +0x90EF, 0,0x966F, 0, 0, 0, 0, 0, + 0,0x8A68, 0,0x9DA3,0x9D9E, 0, 0, 0, + 0,0x9769,0x9DA5, 0, 0,0x9DA1, 0,0x9DA2, + 0, 0, 0, 0, 0,0x9180,0xFACC, 0, + 0, 0,0x9DA0, 0,0x9D5E, 0, 0, 0, +0x9DA4, 0,0x9D9F, 0, 0, 0, 0, 0, +0x9DA9,0x9DAA,0x9346,0x9DAC, 0, 0,0x8E43,0x9DA7, + 0, 0, 0, 0,0x8B5B, 0, 0,0x9DAD, + 0,0x9DA6,0x9DB1, 0,0x9DB0, 0,0x9DAF, 0, + 0, 0,0x9DB2, 0, 0,0x9DB4,0x8FEF, 0, +0x9DB3, 0, 0, 0, 0,0x9DB7, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, +0x9DB5, 0, 0, 0,0x9DB6,0x9D90, 0, 0, + 0, 0, 0,0x9DB9,0x9DB8, 0, 0, 0, + 0, 0,0x9D98,0x9DBA,0x9DAE, 0, 0,0x8E78, + 0, 0, 0, 0,0x9DBB,0x9DBC,0x9DBE,0x9DBD, +0x9DBF,0x89FC, 0,0x8D55, 0, 0,0x95FA,0x90AD, + 0, 0, 0, 0, 0,0x8CCC, 0, 0, +0x9DC1, 0, 0, 0, 0,0x9DC4,0xFACD,0x9571, + 0,0x8B7E, 0, 0, 0,0x9DC3,0x9DC2,0x9473, +0x9DC5,0x8BB3, 0, 0, 0,0x9DC7,0x9DC6, 0, + 0, 0,0x8AB8,0x8E55, 0, 0,0x93D6, 0, + 0, 0, 0, 0,0x8C68, 0, 0, 0, +0x9094, 0,0x9DC8, 0,0x90AE,0x9347, 0,0x957E, +0x9DC9, 0, 0, 0, 0, 0, 0, 0, + 0, 0,0x9DCA,0x9DCB, 0, 0, 0,0x95B6, +0x9B7C,0x90C4, 0, 0,0x956B, 0,0x8DD6, 0, +0x94E3,0x94C1, 0, 0, 0, 0, 0,0x936C, + 0,0x97BF, 0,0x9DCD,0x8ECE, 0, 0,0x9DCE, + 0,0x88B4, 0, 0,0x8BD2,0x90CB, 0,0x9580, + 0, 0, 0,0x9DCF,0x8E61,0x9266, 0,0x8E7A, +0x9056, 0, 0, 0, 0, 0, 0,0x9DD0, + 0,0x95FB, 0, 0,0x8997,0x8E7B, 0, 0, + 0,0x9DD3, 0,0x9DD1,0x9DD4,0x97B7,0x9DD2, 0, + 0, 0, 0,0x90F9,0x9DD5, 0, 0,0x91B0, + 0, 0,0x9DD6, 0, 0, 0, 0,0x8AF8, + 0,0x9DD8, 0,0x9DD7, 0, 0, 0, 0, +0x9DD9,0x9DDA,0x8AF9, 0, 0,0x93FA,0x9255,0x8B8C, +0x8E7C,0x9181, 0, 0,0x8F7B,0x88AE, 0, 0, + 0,0x9DDB, 0, 0, 0, 0, 0, 0, + 0, 0,0x89A0,0x9DDF, 0, 0, 0, 0, +0xFACE, 0,0x8D56,0x9DDE, 0, 0,0x8DA9,0x8FB8, + 0,0xFAD1,0x9DDD, 0,0x8FB9, 0,0x96BE,0x8DA8, + 0, 0, 0,0x88D5,0x90CC,0xFACF, 0, 0, + 0, 0, 0, 0,0x9DE4, 0,0xFAD3,0x90AF, +0x8966, 0, 0, 0,0xFAD4,0x8F74, 0,0x9686, +0x8DF0, 0, 0, 0, 0,0x8FBA,0xFAD2,0x90A5, + 0,0xFA63, 0, 0,0x9DE3,0x9DE1,0x9DE2, 0, + 0, 0, 0,0xFAD0,0x928B, 0, 0,0x9E45, + 0,0x9DE8,0x8E9E,0x8D57,0x9DE6, 0, 0, 0, + 0,0x9DE7, 0,0x9057, 0, 0, 0,0x9DE5, + 0, 0,0x8E4E, 0, 0, 0, 0,0xFAD6, + 0,0xFAD7, 0, 0, 0,0x9DEA,0x9DE9,0x9DEE, + 0,0xFAD7,0x9DEF, 0,0x9DEB,0xFAD5,0x8A41,0x9DEC, +0x9DED,0x94D3, 0, 0, 0, 0,0x9581,0x8C69, +0x9DF0, 0, 0,0xFAD9,0x90B0, 0,0x8FBB, 0, + 0, 0,0x9271, 0, 0, 0, 0, 0, + 0,0x8BC5, 0,0x9DF1,0x9DF5, 0, 0,0x89C9, +0x9DF2,0x9DF4, 0, 0, 0, 0,0x9DF3, 0, + 0,0x8F8B, 0, 0, 0, 0,0x9267,0x88C3, +0x9DF6,0xFADA, 0, 0, 0,0x9DF7, 0, 0, +0xFADB, 0,0x92A8, 0, 0, 0,0x97EF, 0, + 0, 0, 0,0x8E62, 0, 0,0x95E9, 0, + 0, 0,0xFADC, 0,0x965C, 0, 0, 0, +0x9E41,0x9DF9, 0, 0,0x9DFC, 0,0x9DFB,0xFADD, + 0,0x9DF8, 0, 0,0x9E40, 0, 0,0x93DC, + 0,0x9DFA, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,0x9E42, 0, + 0,0x8F8C,0x9E43, 0,0x976A,0x9498, 0, 0, +0x9E44, 0, 0, 0, 0, 0,0x9E46, 0, + 0,0x9E47, 0, 0, 0, 0, 0, 0, +0x9E48, 0,0x8BC8,0x8967,0x8D58,0x9E49, 0,0x9E4A, +0x8F91,0x9182,0xFADE,0xFA66,0x99D6,0x915D,0x915C,0x91D6, +0x8DC5, 0, 0,0x98F0, 0, 0, 0, 0, +0x8C8E,0x974C, 0,0x95FC, 0,0x959E,0xFADF,0x9E4B, + 0, 0, 0, 0,0x8DF1,0x92BD,0x9E4C,0x984E, + 0, 0, 0,0x965D, 0,0x92A9,0x9E4D,0x8AFA, + 0, 0, 0, 0, 0, 0,0x9E4E,0x9E4F, +0x96D8, 0,0x96A2,0x9696,0x967B,0x8E44,0x9E51, 0, + 0,0x8EE9, 0, 0,0x9670, 0,0x9E53,0x9E56, +0x9E55, 0,0x8AF7, 0, 0,0x8B80, 0,0x9E52, + 0,0x9E54, 0, 0, 0, 0,0x9E57, 0, + 0,0x9099, 0, 0, 0, 0,0x979B,0x88C7, +0x8DDE,0x91BA, 0,0x8EDB, 0, 0,0x8FF1, 0, + 0,0x9E5A, 0, 0,0x936D, 0,0x9E58,0x91A9, +0x9E59,0x8FF0,0x96DB,0x9E5B,0x9E5C,0x9788,0xFAE1, 0, + 0, 0,0x9E61, 0, 0,0x8D59, 0,0x9474, +0x9E5E,0x938C,0x9DDC,0x9DE0, 0,0x8B6E, 0,0x9466, + 0, 0, 0, 0,0x9E60, 0,0x8FBC,0x94C2, + 0, 0, 0, 0, 0,0x9E66, 0,0x94F8, + 0,0x9E5D, 0,0x9E63,0x9E62, 0, 0, 0, +0x90CD, 0, 0, 0, 0,0x968D, 0,0x97D1, + 0, 0,0x9687, 0,0x89CA,0x8E7D, 0, 0, +0x9867,0x9E65,0x9095, 0, 0, 0,0x9E64, 0, + 0,0x9E5F, 0, 0, 0, 0, 0,0x8CCD, + 0, 0, 0,0x9E6B,0x9E69, 0,0x89CB,0x9E67, +0x9E6D,0x9E73, 0,0xFAE2, 0, 0, 0, 0, +0xFAE4,0x91C6, 0, 0,0x95BF, 0,0x9E75, 0, + 0, 0,0x9541, 0, 0, 0,0x9E74,0x9490, +0x965E,0x8AB9, 0,0x90F5,0x8F5F, 0, 0, 0, +0x92D1, 0,0x974D, 0, 0,0x9E70,0x9E6F, 0, + 0, 0,0x9E71, 0,0x9E6E, 0, 0,0x9E76, + 0,0x9E6C, 0, 0,0x9E6A, 0,0x9E72,0x9E68, + 0,0x928C, 0,0x96F6,0x8EC4,0x8DF2, 0, 0, + 0, 0, 0,0x8DB8, 0, 0,0x968F,0x8A60, + 0,0xFAE5,0x92CC,0x93C8,0x8968, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,0x90F0, 0, 0,0x90B2,0x8C49, + 0, 0, 0, 0, 0, 0,0x9E78, 0, + 0,0x8D5A,0x8A9C, 0, 0, 0, 0, 0, + 0,0x9E7A,0x8A94,0x9E81, 0, 0, 0, 0, + 0, 0,0x9E7D, 0,0x90F1, 0, 0, 0, +0x8A6A,0x8DAA, 0, 0,0x8A69,0x8DCD, 0, 0, +0x9E7B,0x8C85,0x8C6A,0x938D,0xFAE6, 0,0x9E79, 0, +0x88C4, 0, 0, 0, 0,0x9E7C,0x9E7E, 0, +0x8BCB,0x8C4B,0xFAE3,0x8ABA,0x8B6A, 0, 0, 0, + 0,0x9E82, 0, 0,0x8DF7,0x9691, 0,0x8E56, + 0, 0, 0,0x9E83, 0, 0, 0,0x954F, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,0x9E8F, 0,0x89B1,0x9E84, + 0, 0, 0, 0, 0, 0,0x9E95,0x9E85, + 0,0x97C0, 0,0x9E8C, 0,0x947E, 0, 0, + 0, 0, 0, 0, 0,0x9E94, 0,0x9E87, + 0, 0, 0,0x88B2,0x9E89, 0, 0,0x8D5B, + 0, 0, 0,0x9E8B, 0,0x9E8A, 0,0x9E86, +0x9E91, 0,0x8FBD, 0, 0, 0,0x9AEB,0x8CE6, +0x979C, 0, 0, 0, 0,0x9E88, 0,0x92F2, +0x8A42,0x8DAB, 0,0x9E80, 0,0x9E90,0x8A81, 0, + 0,0x9E8E,0x9E92, 0,0x938E, 0, 0, 0, + 0, 0, 0, 0,0x8AFC, 0,0x9EB0, 0, +0xFA64,0x96C7,0x9E97,0x8AFB, 0,0x9E9E, 0,0xFAE7, + 0, 0,0x965F, 0,0x9E9F,0x9EA1, 0,0x9EA5, +0x9E99, 0,0x9249, 0, 0, 0, 0,0x938F, +0x9EA9,0x9E9C, 0,0x9EA6, 0, 0, 0,0x9EA0, + 0, 0, 0, 0, 0, 0,0x9058,0x9EAA, + 0, 0,0x90B1, 0, 0, 0, 0, 0, + 0,0x9EA8,0x8ABB, 0, 0, 0, 0, 0, +0x986F,0x9E96, 0, 0,0x9EA4,0x88D6, 0, 0, +0x9E98, 0, 0,0x96B8,0x9E9D,0x9041,0x92C5,0x9E93, + 0, 0,0x9EA3, 0, 0, 0, 0, 0, + 0,0x909A,0x9EAD,0x8A91,0x8C9F, 0, 0, 0, + 0,0x9EAF,0x9E9A,0x9EAE, 0,0x9EA7,0x9E9B, 0, +0x9EAB, 0,0x9EAC, 0, 0, 0, 0, 0, +0x9EBD, 0, 0, 0,0x93CC, 0,0x9EA2, 0, + 0,0x9EB9, 0, 0, 0,0x9EBB, 0,0x92D6, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,0x976B, 0, 0, 0, 0, 0, + 0, 0, 0,0x9596,0x9EB6,0x91C8, 0, 0, + 0,0x9EBC,0x915E, 0,0x9EB3,0x9EC0,0x9EBF, 0, +0x93ED,0x9EBE,0x93E8, 0, 0, 0, 0, 0, +0xFAE9, 0,0x9EC2,0x9EB5, 0,0x8BC6,0x9EB8,0x8F7C, + 0, 0, 0,0x9480,0x9EBA,0x8BC9, 0,0x9EB2, +0x9EB4,0x9EB1, 0, 0,0x984F,0x8A79,0x9EB7, 0, + 0,0x9EC1,0x8A54, 0, 0, 0, 0, 0, + 0, 0,0x8DE5, 0, 0, 0,0x897C, 0, + 0,0x9ED2, 0, 0,0x9850,0x9ED5, 0, 0, +0xFAEB, 0, 0,0x9059,0x9ED4, 0, 0, 0, +0x9ED3, 0, 0, 0, 0, 0, 0,0x9ED0, + 0, 0, 0, 0, 0, 0,0x9EC4, 0, + 0,0x9EE1,0x9EC3, 0,0x9ED6, 0, 0, 0, + 0, 0, 0,0x9ECE, 0, 0,0x9EC9,0x9EC6, + 0,0x9EC7, 0,0x9ECF, 0, 0, 0,0xEAA0, + 0, 0,0x9ECC,0x8D5C,0x92C6,0x9184,0x9ECA, 0, +0x9EC5, 0, 0,0x9EC8, 0, 0, 0, 0, +0x976C,0x968A, 0, 0, 0,0x9ECD,0x9ED7, 0, + 0, 0,0xFAEC, 0, 0, 0, 0,0x9EDF, +0x9ED8, 0, 0,0x9EE5, 0,0x9EE3, 0, 0, + 0, 0,0x9EDE, 0, 0, 0, 0, 0, + 0,0x9EDD, 0,0x92CE, 0,0x9185, 0,0x9EDB, + 0, 0,0x9ED9, 0, 0,0x9EE0, 0, 0, + 0, 0,0x9EE6,0x94F3,0x9EEC, 0, 0, 0, + 0, 0,0x9EE7,0x9EEA,0x9EE4, 0, 0,0x9294, + 0,0x9557, 0,0x9EDA, 0, 0,0x9EE2,0x8FBE, + 0,0x96CD,0x9EF6,0x9EE9, 0, 0, 0, 0, + 0,0x8CA0,0x89A1,0x8A7E, 0, 0,0x9ED1, 0, +0xFAED, 0, 0, 0, 0,0x8FBF,0x9EEE, 0, +0x9EF5,0x8EF7,0x8A92, 0, 0,0x924D, 0, 0, + 0, 0, 0, 0,0x9EEB, 0,0xFAEF,0x9EF0, +0x9EF4, 0, 0,0x8BB4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, +0x8B6B,0x9EF2, 0, 0, 0, 0, 0,0x8B40, + 0,0x93C9,0x9EF1, 0, 0, 0,0x9EF3, 0, + 0, 0, 0,0xFAEE, 0, 0, 0, 0, + 0, 0,0x9EED,0xFAF0, 0, 0, 0, 0, +0x9EEF, 0, 0, 0, 0, 0,0xFAF1,0x8A80, +0x9268, 0, 0, 0,0x9EFA, 0, 0, 0, + 0, 0, 0, 0, 0,0x9EF8,0x8CE7, 0, +0x9EF7, 0, 0, 0, 0, 0, 0,0x9F40, + 0, 0, 0, 0,0x9E77, 0, 0, 0, +0x9EF9, 0,0x9EFB,0x9EFC, 0, 0, 0, 0, + 0, 0,0x9F4B, 0,0x9F47, 0,0x9E8D, 0, + 0, 0, 0,0x9F46, 0, 0, 0, 0, +0x9F45, 0, 0,0x9F42, 0, 0, 0, 0, + 0,0x9EE8,0x9F44,0x9F43, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0,0x9F49, 0,0x9845, 0, 0, 0, 0, + 0, 0,0x9F4C,0x8BF9, 0, 0,0x9F48,0x9F4A, + 0, 0,0xFAF2, 0,0xFAF3, 0, 0, 0, +0x94A5, 0,0x9F4D, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,0x9F51,0x9F4E, 0, 0, 0, 0, + 0, 0, 0, 0,0x9793,0x9F4F, 0, 0, + 0, 0,0x9EDC, 0, 0, 0, 0, 0, + 0, 0,0x9F52, 0, 0, 0,0x9F53, 0, + 0, 0, 0, 0, 0,0x8954, 0,0x9F55, +0x8C87,0x8E9F, 0,0x8BD3, 0, 0, 0,0x89A2, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,0x977E, 0, 0, 0, 0,0x9F57, +0x9F56,0x9F59,0x8B5C, 0, 0,0x8BD4,0x8ABC, 0, + 0, 0, 0,0x9F5C, 0, 0, 0,0x9F5B, + 0,0x9F5D, 0, 0,0x89CC, 0,0x9256, 0, +0x9F5E, 0, 0,0x8ABD,0x9F60, 0, 0, 0, + 0,0x9F5F, 0,0x9F61, 0, 0, 0,0x9F62, + 0,0x9F63,0x8E7E,0x90B3,0x8D9F, 0,0x9590, 0, + 0,0x95E0,0x9863, 0, 0, 0, 0,0x8E95, + 0, 0, 0,0x8DCE,0x97F0, 0, 0, 0, +0x9F64,0x9F65, 0,0x8E80, 0, 0, 0,0x9F66, +0x9F67, 0, 0,0x9F69,0x9F68, 0,0x9677, 0, + 0,0x8F7D,0x8EEA,0x8E63, 0,0x9F6A, 0, 0, + 0, 0, 0, 0, 0,0x9F6C,0x9042, 0, +0x9F6B, 0, 0, 0, 0, 0,0x9F6D, 0, + 0, 0, 0, 0,0x9F6E, 0, 0, 0, + 0, 0,0x9F6F,0x9F70, 0, 0, 0,0x9F71, + 0,0x9F73,0x9F72,0x9F74,0x89A3,0x9269, 0,0x9F75, + 0, 0,0x8E45,0x8A6B,0x9F76, 0, 0,0x9361, +0x9ACA, 0, 0, 0, 0,0x8B42,0x9F77, 0, + 0, 0, 0,0x9F78, 0,0x95EA,0x9688, 0, + 0, 0,0x93C5,0x9F79,0x94E4, 0,0xFAF4, 0, +0x94F9, 0, 0,0x96D1, 0, 0, 0,0x9F7A, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,0x9F7C,0x9F7B, 0, 0,0x9F7E, + 0, 0, 0,0x9F7D, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, +0x9F81, 0, 0, 0, 0, 0, 0,0x8E81, + 0,0x96AF, 0,0x9F82,0x9F83, 0, 0,0x8B43, + 0, 0, 0,0x9F84, 0, 0, 0, 0, + 0, 0, 0,0x9F86,0x9F85, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,0x9085, 0, 0,0x9558, +0x8969, 0, 0, 0, 0, 0,0x94C3,0xFAF5, +0x92F3,0x8F60,0x8B81, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,0x94C4, 0, +0x8EAC, 0, 0, 0, 0,0x9F88, 0,0x8ABE, + 0, 0,0x8998, 0,0xFAF6,0x93F0,0x9F87,0x8D5D, +0x9272, 0,0x9F89, 0, 0, 0, 0, 0, +0x9F91, 0,0x9F8A, 0, 0, 0, 0,0xFAF8, +0x91BF, 0,0x8B82,0x9F92, 0, 0, 0, 0, + 0, 0,0x8C88, 0, 0,0x8B44,0x9F90, 0, + 0,0x9F8E,0x9F8B,0x9780, 0, 0,0xFAF7, 0, +0x92BE, 0, 0, 0,0x93D7,0x9F8C, 0, 0, +0x9F94, 0,0x9F93,0x8C42, 0, 0,0x89AB, 0, + 0,0x8DB9,0x9F8D,0x9F8F, 0, 0, 0, 0, + 0,0x9676,0x91F2, 0, 0, 0, 0, 0, + 0, 0, 0,0x9697, 0, 0,0x9F9C, 0, + 0,0x9F9D, 0,0x89CD, 0, 0, 0, 0, +0x95A6,0x96FB,0x9F9F,0x8EA1,0x8FC0,0x9F98,0x9F9E,0x8988, + 0,0x8BB5, 0, 0,0x9F95,0x9F9A, 0, 0, + 0,0x90F2,0x9491, 0,0x94E5, 0, 0, 0, + 0, 0, 0,0x9F97, 0,0x9640, 0,0x9F99, + 0,0x9FA2,0xFAF9,0x9FA0, 0,0x9F9B, 0, 0, + 0,0x9641,0x9467,0x8B83, 0,0x9344, 0, 0, +0x928D, 0,0x9FA3, 0, 0, 0, 0,0x9FA1, +0x91D7,0x9F96, 0,0x896A, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,0xFAFA, 0, 0, 0, + 0, 0, 0,0x976D,0x9FAE, 0, 0, 0, + 0, 0,0x9FAD, 0, 0, 0, 0,0x90F4, + 0,0x9FAA, 0,0x978C, 0, 0,0x93B4,0x9FA4, + 0, 0, 0, 0, 0,0x92C3, 0, 0, + 0,0x896B,0x8D5E,0x9FA7, 0, 0, 0, 0, + 0, 0,0x8F46,0x9FAC, 0,0x9FAB,0x9FA6, 0, +0x9FA9, 0, 0,0x8A88, 0,0x9FA8,0x9468, 0, + 0,0x97AC, 0, 0,0x8FF2,0x90F3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0,0x9FB4,0x9FB2, 0,0x956C, 0, 0, 0, + 0, 0, 0,0x9FAF,0x9FB1, 0,0x8959, 0, + 0,0x8D5F,0x9851, 0,0x8A5C, 0,0x9582,0xFAFC, + 0, 0, 0, 0,0x9781, 0, 0,0x8A43, +0x905A,0x9FB3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,0x9FB8, 0,0xFAFB, +0x8FC1, 0, 0, 0,0x974F, 0,0x9FB5, 0, + 0, 0, 0,0x9FB0, 0,0x9FB6,0xFB40, 0, + 0,0x97DC, 0,0x9393,0x93C0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,0xFB41, 0, 0,0x8A55, + 0, 0,0x8974, 0, 0,0x9FBC, 0, 0, +0x9FBF, 0, 0, 0,0x97C1, 0, 0, 0, +0x9784, 0, 0, 0, 0,0x9FC6,0x9FC0,0x9FBD, + 0, 0, 0,0x97D2,0x9FC3, 0, 0,0xFB42, + 0,0x8F69,0x9FC5, 0, 0,0x9FCA, 0, 0, +0x9391,0x9FC8, 0, 0, 0, 0,0x9FC2, 0, + 0,0x9257, 0, 0,0x9FC9, 0,0x9FBE, 0, +0x9FC4, 0,0x9FCB,0x88FA,0x9FC1, 0,0x9FCC, 0, + 0,0x905B,0xFB44,0x8F7E, 0,0x95A3, 0,0x8DAC, +0xFB43,0x9FB9,0x9FC7,0x9359,0xFB45, 0, 0, 0, + 0, 0, 0, 0, 0,0x90B4, 0,0x8A89, +0x8DCF,0x8FC2,0x9FBB,0x8F61, 0, 0, 0, 0, + 0, 0, 0,0x8C6B, 0,0x9FBA, 0, 0, + 0,0x9FD0,0x8F8D,0x8CB8, 0,0x9FDF, 0,0x9FD9, +0x8B94,0x936E, 0,0x9FD4,0x9FDD,0x88AD,0x8951,0xFB48, + 0,0x89B7, 0,0x9FD6,0x91AA,0x9FCD,0x9FCF,0x8D60, + 0, 0, 0, 0, 0, 0, 0, 0, +0x9FE0,0xFB46,0x9FDB, 0,0xFB49, 0,0x9FD3, 0, + 0, 0, 0,0x9FDA, 0, 0, 0, 0, + 0, 0,0x96A9, 0, 0,0x9FD8,0x9FDC, 0, + 0, 0, 0, 0, 0, 0,0x8CCE, 0, +0x8FC3, 0, 0,0x9258,0xFB47, 0, 0,0x9FD2, + 0, 0, 0, 0, 0, 0, 0,0x974E, + 0, 0, 0,0x9FD5, 0, 0,0x9FCE,0x9392, + 0, 0,0x9FD1, 0, 0, 0,0x9FD7, 0, + 0, 0, 0, 0, 0, 0,0x9870,0x8EBC, +0x969E, 0,0x9FE1, 0, 0, 0, 0, 0, + 0, 0, 0, 0,0x94AC, 0, 0,0x9FED, +0x8CB9, 0, 0, 0, 0, 0,0x8F80, 0, +0x9FE3, 0, 0, 0,0x97AD,0x8D61, 0,0x9FF0, + 0, 0,0x88EC, 0, 0,0x9FEE, 0, 0, + 0, 0,0x9FE2, 0, 0, 0, 0,0x9FE8, + 0, 0,0x9FEA, 0, 0, 0,0x976E,0x9FE5, + 0, 0,0x934D, 0, 0,0x9FE7, 0,0xFB4A, + 0, 0,0x9FEF, 0,0x9FE9,0x96C5, 0, 0, + 0,0x9FE4, 0,0x8EA0,0x9FFC, 0, 0, 0, + 0,0x8A8A, 0,0x9FE6,0x9FEB,0x9FEC, 0, 0, + 0, 0, 0, 0, 0,0x91EA,0x91D8, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,0x9FF4, 0, 0,0x9FFA, + 0, 0,0x9FF8, 0,0x9348, 0, 0,0xE042, +0x9FF5, 0, 0, 0, 0, 0,0x9FF6,0x9FDE, + 0,0x8B99,0x9559, 0, 0, 0,0x8EBD, 0, + 0,0x8D97, 0, 0, 0, 0, 0,0x9852, + 0,0x9FF2, 0,0xE041,0x8989,0x9186, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, +0x9499, 0,0x8ABF,0x97F8, 0, 0, 0, 0, + 0, 0, 0,0x969F,0x92D0, 0, 0, 0, + 0,0x9FF9,0x9FFB, 0, 0, 0, 0, 0, +0x9151, 0, 0, 0, 0, 0,0xE040,0x9FF7, + 0,0x9FF1, 0, 0, 0,0x8AC1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,0x8C89, 0, 0, 0, +0xE04E, 0, 0,0xE049,0x90F6, 0, 0,0x8A83, + 0, 0, 0, 0,0x8F81, 0,0xE052, 0, + 0, 0, 0, 0, 0,0xE04B,0x92AA,0xE048, +0x92D7, 0, 0, 0,0xE06B, 0, 0, 0, +0xE045, 0,0xE044, 0,0xE04D, 0, 0, 0, +0xE047,0xE046,0xE04C, 0,0x909F, 0,0xE043, 0, +0xFB4B, 0, 0, 0, 0, 0,0xE04F, 0, + 0,0xE050, 0, 0, 0, 0, 0,0x8AC0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0,0xE055, 0,0xE054,0xE056, 0, 0, 0, + 0, 0,0xE059, 0, 0, 0, 0, 0, + 0,0x9362, 0,0xE053, 0,0xFB4C, 0, 0, + 0,0xE057, 0, 0, 0, 0, 0, 0, +0x8C83,0x91F7,0xE051,0x945A, 0, 0,0xE058, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,0xE05D,0xE05B, 0, 0, +0xE05E, 0, 0,0xE061, 0, 0, 0,0xE05A, +0x8D8A,0x9447, 0, 0,0x9FB7, 0, 0, 0, + 0, 0, 0,0x9794,0xE05C, 0,0xE060,0x91F3, + 0,0xE05F, 0,0xE04A, 0,0xFB4D,0xE889, 0, + 0, 0,0xE064, 0, 0, 0,0xE068, 0, + 0,0xE066, 0, 0, 0,0xFB4E, 0,0xFB4F, + 0,0xE062, 0,0xE063, 0, 0, 0,0xE067, + 0,0xE065, 0, 0, 0,0x956D, 0, 0, +0xE06D, 0,0xE06A,0xE069, 0,0xE06C,0x93D2,0xE06E, + 0, 0, 0, 0, 0, 0,0x9295,0x91EB, +0xFB50, 0, 0, 0,0x90A3, 0, 0, 0, +0xE06F, 0,0xE071, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,0xE070, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,0x9FF3, 0, 0, 0, + 0,0xE072, 0, 0, 0, 0, 0, 0, +0x93E5, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,0xE073, 0, 0, 0, 0, + 0, 0, 0,0x89CE, 0, 0, 0,0x9394, +0x8A44, 0, 0, 0, 0, 0, 0, 0, +0x8B84, 0, 0, 0,0x8EDC,0x8DD0, 0, 0, + 0, 0, 0, 0, 0,0xFB51, 0, 0, + 0,0x9846,0x9086, 0, 0, 0,0x898A, 0, + 0, 0,0xE075, 0, 0, 0, 0, 0, + 0,0xE074, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,0xFB52,0xE078,0x9259,0xE07B,0xE076, + 0, 0, 0,0xE07A, 0, 0, 0, 0, +0xE079,0x935F,0x88D7,0xFA62, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, +0x97F3, 0, 0,0xE07D, 0, 0, 0,0x8947, + 0, 0, 0, 0, 0, 0, 0, 0, + 0,0xE080, 0, 0, 0,0xE07E, 0,0xE07C, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0,0xE077, 0, 0, 0, 0, 0, 0, + 0,0x9642, 0, 0, 0,0xE082, 0, 0, + 0, 0, 0, 0,0xFB54, 0, 0, 0, + 0,0xE081, 0, 0, 0, 0, 0,0xFB53, + 0, 0, 0, 0,0x898B, 0, 0, 0, + 0,0xE084,0x95B0, 0,0xE083, 0, 0, 0, + 0,0x96B3, 0, 0, 0, 0,0x8FC5, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,0x9152, 0, + 0, 0, 0, 0,0x8FC4, 0, 0, 0, + 0, 0, 0, 0, 0, 0,0xFB56,0xFB57, + 0,0x97F9, 0, 0,0xE08A, 0,0x90F7, 0, + 0, 0, 0, 0, 0,0xE086,0xE08B, 0, + 0,0x898C, 0, 0,0xFB55, 0, 0, 0, + 0, 0,0xE089, 0,0x9481,0xE085,0xE088,0x8FC6, + 0,0x94CF, 0, 0,0xE08C, 0,0x8ECF, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,0x90F8, 0, 0, + 0, 0, 0, 0,0xE08F, 0, 0, 0, +0xE087, 0,0x8C46, 0, 0, 0, 0,0xE08D, + 0, 0, 0, 0,0x976F,0xE090, 0, 0, + 0,0xEAA4, 0, 0, 0, 0, 0,0x8F6E, + 0, 0, 0, 0, 0, 0, 0, 0, +0xE091, 0, 0, 0,0xE092, 0, 0, 0, + 0,0x944D, 0, 0, 0, 0, 0, 0, + 0,0xE094, 0, 0, 0, 0,0xE095, 0, + 0,0xFB59, 0,0x9452, 0, 0, 0, 0, +0x9395,0xE097, 0, 0, 0, 0,0xE099, 0, +0x97D3, 0,0xE096, 0,0xE098,0x898D, 0,0xE093, + 0, 0, 0, 0, 0, 0, 0,0x9A7A, +0xE09A, 0, 0, 0, 0,0x9187,0x8E57,0xE09C, + 0, 0, 0, 0,0xE09B,0x9043,0x99D7, 0, + 0, 0, 0, 0, 0,0xE09D, 0, 0, + 0,0xE09F, 0,0xE08E,0xE09E, 0,0xFB5A,0xE0A0, + 0, 0, 0, 0, 0, 0,0x949A, 0, + 0, 0, 0, 0, 0,0xE0A1, 0, 0, +0xE0A2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,0xE0A3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, +0xE0A4, 0,0x92DC, 0,0xE0A6,0xE0A5, 0, 0, +0xE0A7, 0,0xE0A8, 0, 0,0x8EDD,0x9583, 0, + 0, 0,0x96EA,0xE0A9,0xE0AA,0x9175,0x8EA2,0xE0AB, +0xE0AC, 0, 0, 0, 0, 0,0xE0AD,0x95D0, +0x94C5, 0, 0,0xE0AE,0x9476, 0, 0, 0, + 0, 0,0x92AB, 0, 0, 0, 0, 0, +0xE0AF,0x89E5, 0,0x8B8D, 0,0x96C4, 0,0x96B4, + 0,0x89B2,0x9853, 0, 0, 0, 0,0x9671, + 0,0x95A8, 0, 0, 0, 0, 0, 0, + 0, 0,0x90B5, 0,0xE0B0, 0, 0, 0, + 0,0x93C1, 0, 0, 0,0x8CA1,0xE0B1, 0, +0x8DD2,0xE0B3,0xE0B2, 0, 0, 0, 0,0xE0B4, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,0xE0B5, 0, 0, 0,0xE0B6, 0, + 0, 0, 0, 0, 0, 0, 0, 0, +0x8B5D, 0,0xE0B7, 0, 0, 0, 0,0xE0B8, + 0, 0, 0, 0,0x8CA2, 0, 0,0x94C6, + 0,0xFB5B,0xE0BA, 0, 0, 0,0x8FF3, 0, + 0,0xE0B9, 0, 0, 0, 0,0xFB5C, 0, + 0, 0,0x8BB6,0xE0BB,0xE0BD, 0,0xE0BC, 0, + 0, 0, 0, 0, 0, 0,0xE0BE, 0, +0x8CCF, 0,0xE0BF, 0, 0, 0, 0,0x8BE7, + 0,0x915F, 0,0x8D9D, 0, 0, 0, 0, +0xE0C1,0xE0C2,0xE0C0, 0, 0, 0, 0, 0, + 0,0x8EEB, 0, 0,0x93C6,0x8BB7, 0, 0, + 0, 0, 0, 0, 0, 0, 0,0xE0C4, +0x924B,0xE0C3, 0, 0,0x9854,0x9482, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,0xE0C7, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,0xE0C9,0xE0C6, + 0, 0, 0,0x96D2,0xE0C8,0xE0CA, 0,0x97C2, + 0, 0, 0, 0,0xFB5D,0xE0CE, 0, 0, + 0,0xE0CD,0x9296,0x944C, 0, 0,0x8CA3,0xE0CC, + 0, 0, 0, 0,0xE0CB, 0,0x9750,0x9751, + 0, 0, 0, 0, 0, 0,0xE0CF,0x898E, + 0, 0, 0, 0,0x8D96,0x8E82, 0, 0, + 0, 0, 0, 0, 0, 0,0xE0D0,0xE0D1, + 0, 0, 0, 0, 0, 0, 0,0xE0D3, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,0x8F62, 0, 0, 0, 0, +0xE0D5, 0,0xE0D4, 0, 0, 0, 0, 0, +0xE0D6, 0,0x8A6C, 0, 0,0xE0D8, 0,0xFB5F, +0xE0D7, 0,0xE0DA,0xE0D9, 0, 0, 0, 0, + 0, 0, 0, 0,0x8CBA, 0, 0,0x97A6, + 0,0x8BCA, 0,0x89A4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,0x8BE8, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0,0x8ADF, 0, 0, 0, 0, 0, 0, + 0, 0,0x97E6,0xE0DC, 0, 0, 0, 0, + 0, 0, 0,0xE0DE, 0,0xFB60, 0, 0, +0xE0DF, 0,0x89CF, 0, 0, 0, 0, 0, +0xE0DB,0xFB61,0x8E58, 0, 0,0x92BF,0xE0DD, 0, + 0, 0,0xFB64, 0, 0, 0,0xFB62, 0, + 0, 0, 0, 0, 0, 0,0xE0E2, 0, +0x8EEC, 0, 0,0xFB63, 0,0xE0E0, 0, 0, + 0, 0,0x8C5D, 0, 0,0x94C7,0xE0E1, 0, + 0,0xE0FC, 0, 0, 0,0xFB66, 0, 0, +0xE0E7, 0, 0, 0, 0, 0,0x8CBB, 0, + 0, 0, 0,0x8B85, 0,0xE0E4,0x979D,0xFB65, + 0,0x97AE, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,0x91F4, 0, 0,0xE0E6,0xFB67, 0, + 0,0xFB69,0xFB68, 0, 0, 0,0xFB6A, 0, + 0, 0,0xE0E8,0x97D4,0x8BD5,0x94FA,0x9469, 0, + 0, 0,0xE0E9, 0, 0, 0, 0,0xE0EB, + 0,0xE0EE, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,0xE0EA, 0, 0, + 0,0xE0ED,0x8CE8,0x896C,0xE0EF, 0,0x9090,0xE0EC, +0x97DA, 0,0xFB6B,0xE0F2,0xEAA2, 0, 0, 0, + 0,0xE0F0,0xE0F3, 0, 0, 0, 0,0xE0E5, +0xE0F1, 0, 0,0x8DBA, 0, 0,0xE0F4, 0, + 0, 0, 0, 0, 0, 0,0xE0F5, 0, + 0, 0, 0,0x979E, 0, 0, 0, 0, + 0,0xFB6C, 0,0xE0F6, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,0xE0F7,0xFB6D, + 0, 0,0xE0E3, 0, 0, 0, 0,0xE0F8, + 0, 0, 0, 0, 0, 0, 0, 0, +0x8AC2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,0x8EA3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,0xE0F9, 0, 0, 0, 0,0xE0FA, + 0, 0, 0, 0,0xE0FB, 0, 0, 0, + 0, 0, 0, 0,0x895A, 0, 0, 0, +0xE140, 0,0x955A,0xE141, 0, 0,0x8AA2,0xE142, + 0,0xE143, 0, 0, 0, 0,0xE144, 0, +0xE146,0xE147,0xE145, 0, 0, 0,0x9572,0xE149, +0xE148, 0, 0, 0, 0, 0, 0, 0, + 0,0xFB6E, 0,0xE14B,0xE14A,0xE14C, 0, 0, + 0, 0, 0, 0,0xE14D,0xE14F,0xE14E, 0, + 0,0x8D99, 0,0xE151, 0,0xE150, 0, 0, +0x8AC3, 0,0x9072, 0,0x935B, 0,0xE152,0x90B6, + 0, 0, 0,0x8E59, 0,0x8999,0xE153, 0, +0x9770, 0, 0,0x95E1,0xE154, 0, 0,0xFAA8, +0x9363,0x9752,0x8D62,0x905C, 0, 0, 0,0x926A, +0x99B2, 0,0x92AC,0x89E6,0xE155, 0, 0, 0, + 0, 0, 0, 0,0xE156, 0,0xE15B, 0, + 0,0xE159,0xE158,0x9DC0,0x8A45,0xE157, 0,0x88D8, + 0,0x94A8, 0, 0,0x94C8, 0, 0, 0, + 0,0x97AF,0xE15C,0xE15A,0x927B,0x90A4, 0, 0, +0x94A9, 0,0x954C, 0,0xE15E,0x97AA,0x8C6C,0xE15F, + 0,0xE15D,0x94D4,0xE160, 0,0xE161, 0,0xFB6F, +0x88D9, 0, 0,0x8FF4,0xE166, 0,0xE163,0x93EB, +0xE162, 0, 0, 0, 0, 0, 0,0x8B45, + 0, 0,0xE169, 0, 0, 0,0xE164,0xE165, + 0,0xE168,0xE167,0x9544, 0, 0,0x9161,0x9160, + 0,0x8B5E, 0, 0,0xE16A, 0, 0, 0, + 0, 0,0xE16B, 0, 0,0xE16C, 0, 0, + 0, 0, 0,0xE16E, 0,0xE16D, 0, 0, + 0, 0, 0,0x8975, 0, 0, 0, 0, + 0,0xE176,0x94E6,0xE170, 0,0xE172, 0, 0, +0xE174,0x905D, 0, 0,0xE175,0xE173,0x8EBE, 0, + 0, 0,0xE16F,0xE171, 0,0x9561, 0,0x8FC7, + 0, 0,0xE178, 0, 0,0xE177, 0, 0, + 0, 0,0xE179, 0,0x8EA4,0x8DAD, 0, 0, +0x9397,0xE17A, 0,0x92C9, 0, 0,0xE17C, 0, + 0, 0,0x979F,0xE17B, 0, 0, 0, 0, + 0,0x9189, 0, 0, 0, 0, 0, 0, +0xE182, 0,0xE184,0xE185,0x9273, 0, 0, 0, + 0, 0,0xE183, 0,0xE180, 0,0xE17D,0xE17E, + 0,0xE181, 0, 0, 0, 0, 0, 0, + 0,0xE188, 0,0xE186, 0,0xE187, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0,0xE189, +0xE18B,0xE18C,0xE18D, 0,0xE18E, 0, 0,0xE18A, + 0, 0, 0, 0, 0, 0, 0, 0, +0xE190, 0, 0, 0,0xE18F, 0, 0, 0, + 0, 0, 0,0xE191, 0, 0, 0, 0, + 0, 0,0x97C3, 0, 0, 0,0xE194,0xE192, +0xE193, 0, 0, 0,0x8AE0, 0, 0, 0, + 0, 0,0x96FC, 0, 0, 0,0x95C8, 0, +0xE196, 0, 0, 0,0xE195, 0, 0, 0, + 0,0xE197,0xE198, 0, 0, 0, 0,0xE19C, +0xE199,0xE19A,0xE19B, 0,0xE19D, 0, 0, 0, +0xE19E, 0,0xE19F, 0, 0, 0,0xE1A0, 0, +0xE1A1, 0,0x94AD,0x936F,0xE1A2,0x9492,0x9553, 0, +0xE1A3, 0,0xFB70,0xE1A4,0x9349, 0,0x8A46,0x8D63, +0xE1A5, 0, 0,0xE1A6, 0, 0,0xE1A7, 0, +0x8E48, 0, 0,0xE1A9, 0, 0,0xE1A8, 0, + 0,0xE1AA,0xE1AB,0xFB73,0xFB71, 0,0xFB72, 0, + 0, 0, 0, 0, 0, 0,0xFB74, 0, + 0, 0, 0, 0, 0, 0,0x94E7, 0, +0xE1AC, 0, 0, 0,0xE1AD, 0, 0,0xEA89, +0xE1AE,0xE1AF,0xE1B0, 0, 0, 0, 0,0x8E4D, + 0, 0,0xE1B1,0x9475, 0, 0,0x967E, 0, +0x896D, 0,0x8976, 0, 0,0xE1B2, 0, 0, + 0, 0,0xE1B4, 0, 0, 0,0xE1B3,0x9390, + 0, 0, 0,0x90B7,0x9F58, 0,0xE1B5,0x96BF, + 0,0xE1B6, 0,0x8AC4,0x94D5,0xE1B7, 0,0xE1B8, + 0, 0,0xE1B9, 0, 0, 0,0x96DA, 0, + 0, 0,0x96D3, 0,0x92BC, 0, 0, 0, +0x918A, 0, 0,0xE1BB, 0, 0,0x8F82, 0, + 0,0x8FC8, 0, 0,0xE1BE, 0, 0,0xE1BD, +0xE1BC,0x94FB, 0,0x8AC5,0x8CA7, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,0xE1C4, 0, 0,0xE1C1,0x905E, +0x96B0, 0, 0, 0,0xE1C0,0xE1C2,0xE1C3, 0, + 0,0xE1BF, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0,0xE1C5, +0xE1C6, 0,0x92AD, 0,0x8AE1, 0, 0, 0, +0x9285, 0, 0, 0, 0, 0,0xFB76,0xE1C7, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,0xE1C8,0xE1CB, 0, 0, 0, 0, + 0,0x9087, 0,0x93C2, 0,0xE1CC,0x9672, 0, +0xE1C9, 0, 0,0xE1CA, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0,0xE1CF, 0, 0, 0, 0,0xE1CE,0xE1CD, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,0xE1D1, 0, 0,0xE1D0, 0, + 0,0xE1D2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,0xE1D4, 0, +0xE1D3, 0, 0, 0, 0,0x95CB, 0, 0, + 0, 0, 0, 0,0x8F75,0x97C4, 0, 0, +0xE1D5, 0, 0,0x93B5, 0, 0,0xE1D6, 0, + 0,0xE1D7, 0,0xE1DB,0xE1D9,0xE1DA, 0,0xE1D8, + 0, 0, 0, 0, 0, 0, 0,0xE1DC, + 0, 0, 0, 0, 0,0xE1DD, 0, 0, + 0, 0, 0, 0, 0, 0, 0,0xE1DE, + 0, 0,0xE1DF,0x96B5,0xE1E0, 0, 0, 0, + 0, 0,0x96EE,0xE1E1, 0,0x926D, 0,0x948A, + 0,0x8BE9, 0, 0, 0,0x925A,0xE1E2,0x8BB8, + 0, 0, 0,0x90CE, 0, 0, 0, 0, + 0, 0, 0, 0,0xE1E3, 0, 0, 0, + 0, 0,0x8DBB, 0, 0, 0, 0, 0, + 0, 0, 0, 0,0xE1E4, 0, 0, 0, + 0, 0,0xE1E5, 0,0x8CA4,0x8DD3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, +0xE1E7,0xFB78, 0, 0, 0,0x9375,0x8DD4,0x8B6D, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,0x9643, 0,0x946A, 0, 0, 0, + 0, 0,0x9376, 0, 0, 0, 0,0x8D7B, + 0, 0, 0, 0, 0,0xE1E9, 0, 0, + 0, 0, 0, 0, 0, 0,0xFB79, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,0x8FC9, 0, 0, + 0, 0, 0, 0,0xFB7A, 0, 0, 0, + 0, 0, 0,0x97B0,0x8D64, 0, 0,0x8CA5, + 0, 0,0x94A1, 0,0xE1EB, 0, 0, 0, + 0, 0,0xFB7B, 0,0xE1ED, 0, 0, 0, + 0,0x8CE9, 0, 0, 0, 0,0xE1EC,0x92F4, + 0, 0, 0, 0,0xE1EF,0x8A56,0xE1EA, 0, + 0,0x94E8, 0,0x894F, 0,0x8DEA, 0,0x9871, + 0, 0,0xE1EE, 0, 0, 0, 0, 0, + 0, 0, 0,0xE1F0, 0, 0, 0,0x95C9, + 0,0x90D7,0xE1F2, 0, 0, 0, 0,0xE1F3, + 0, 0, 0, 0, 0,0xE1F1, 0, 0, + 0, 0,0x8A6D, 0,0xE1F9, 0,0xE1F8, 0, + 0,0x8EA5, 0, 0, 0,0xE1FA,0xE1F5, 0, + 0, 0,0xE1FB,0xE1F6, 0, 0, 0, 0, +0x94D6,0xE1F4, 0, 0,0xE1F7, 0, 0, 0, + 0, 0,0xE241, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0,0xE240, +0x9681, 0, 0, 0,0xE1FC, 0, 0,0x88E9, + 0, 0, 0, 0,0xE243, 0, 0, 0, + 0, 0, 0, 0, 0,0xE242, 0, 0, + 0,0x8FCA, 0, 0, 0, 0, 0,0xE244, + 0, 0, 0, 0, 0, 0,0x9162, 0, + 0,0xE246,0xE245, 0, 0, 0, 0, 0, + 0,0xE247, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,0xE1E6, 0, + 0, 0,0xE1E8,0xE249,0xE248, 0, 0, 0, +0xFB7C, 0, 0, 0, 0, 0, 0, 0, + 0, 0,0x8EA6, 0,0x97E7, 0,0x8ED0, 0, +0xE24A,0x8C56, 0, 0, 0, 0, 0,0x8B5F, +0x8B46,0x8E83, 0, 0, 0, 0, 0, 0, +0x9753, 0, 0,0xE250, 0,0xE24F,0x9163,0xE24C, + 0, 0,0xE24E, 0, 0,0x8F6A,0x905F,0xE24D, +0xE24B, 0,0x9449, 0, 0,0x8FCB, 0, 0, +0x955B, 0, 0, 0, 0,0x8DD5, 0, 0, + 0, 0, 0, 0, 0, 0, 0,0x9398, + 0, 0,0xE251, 0, 0, 0, 0,0xE252, +0xE268,0x8BD6, 0, 0,0x985C,0x9154, 0, 0, + 0, 0,0xE253, 0, 0,0x89D0,0x92F5,0x959F, + 0, 0, 0, 0,0xFB81, 0, 0, 0, + 0, 0, 0,0xFB83, 0,0xE254, 0, 0, + 0, 0, 0, 0, 0, 0,0x8B9A,0xE255, + 0, 0,0xE257, 0, 0, 0,0xE258, 0, +0x9448, 0, 0,0xE259, 0, 0, 0, 0, + 0,0xE25A,0xE25B, 0, 0,0x8BD7,0x89D1,0x93C3, +0x8F47,0x8E84, 0, 0, 0, 0, 0, 0, + 0,0xE25C, 0,0x8F48, 0, 0, 0, 0, + 0,0x89C8,0x9562, 0, 0,0xE25D, 0, 0, +0x94E9, 0, 0, 0, 0, 0, 0,0x9164, + 0,0xE260, 0,0xE261,0x9489, 0,0x9060,0xE25E, + 0,0x9281, 0, 0,0xE25F, 0, 0, 0, +0x8FCC, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,0x88DA, 0, 0, 0, 0, +0x8B48, 0, 0, 0, 0, 0, 0, 0, +0xE262, 0, 0,0x92F6, 0,0xE263,0x90C5, 0, + 0, 0, 0, 0,0x96AB, 0, 0,0x9542, +0xE264,0xE265,0x9274, 0,0x97C5, 0, 0,0xE267, +0xE266, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,0x8EED, 0, + 0,0xE269,0x88EE, 0, 0, 0, 0,0xE26C, + 0, 0, 0,0xE26A,0x89D2,0x8C6D,0xE26B,0x8D65, +0x8D92, 0,0x95E4,0xE26D, 0, 0,0x9673, 0, + 0,0xE26F, 0, 0, 0,0x90CF,0x896E,0x89B8, +0x88AA, 0, 0, 0, 0, 0, 0,0xE26E, + 0, 0, 0, 0, 0, 0, 0, 0, + 0,0xE270,0xE271,0x8FF5, 0, 0, 0, 0, + 0,0xE272, 0,0x8A6E, 0, 0, 0, 0, +0xE274, 0, 0, 0,0x8C8A, 0,0x8B86, 0, + 0,0xE275,0x8BF3, 0, 0,0xE276, 0,0x90FA, + 0,0x93CB, 0,0x90DE,0x8DF3, 0, 0, 0, +0xE277, 0, 0, 0, 0, 0, 0, 0, + 0, 0,0x9282,0x918B, 0,0xE279,0xE27B,0xE278, +0xE27A, 0, 0, 0, 0, 0, 0,0x8C41, + 0, 0, 0, 0, 0, 0, 0, 0, + 0,0xE27C,0x8C45, 0, 0, 0,0x8B87,0x9771, +0xE27E, 0, 0, 0, 0, 0,0xE280, 0, + 0, 0,0x894D, 0, 0, 0, 0,0xE283, + 0, 0, 0,0x8A96,0xE282,0xE281, 0,0xE285, +0xE27D, 0,0xE286,0x97A7, 0,0xE287, 0,0xE288, + 0,0xFB84,0x9AF2,0xE28A, 0,0xE289, 0, 0, + 0,0xE28B,0xE28C, 0,0x97B3,0xE28D, 0,0xE8ED, +0x8FCD,0xE28E,0xE28F,0x8F76, 0,0x93B6,0xE290,0xFB85, + 0, 0,0x9247,0xFB87, 0,0xE291, 0,0x925B, +0xE292, 0, 0, 0, 0, 0,0x8BA3, 0, +0x995E,0x927C,0x8EB1, 0, 0, 0, 0,0x8AC6, + 0, 0,0xE293, 0,0xE2A0, 0,0xE296, 0, +0x8B88, 0,0xE295,0xE2A2, 0, 0, 0,0xE294, + 0,0x8FCE, 0, 0, 0, 0, 0, 0, +0xE298,0xE299, 0,0x934A, 0, 0,0xE29A, 0, +0x8A7D, 0, 0, 0, 0,0x9079,0x9584, 0, +0xE29C, 0, 0, 0,0x91E6, 0, 0, 0, + 0, 0, 0,0xE297, 0,0xE29B,0xE29D, 0, + 0,0x8DF9, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,0xE2A4,0x954D, 0, +0x94A4,0x9399, 0,0x8BD8,0xE2A3,0xE2A1, 0,0x94B3, +0xE29E,0x927D,0x939B, 0,0x939A, 0,0x8DF4, 0, + 0, 0, 0, 0, 0,0xE2B6, 0, 0, + 0, 0, 0, 0, 0,0xE2A6, 0,0xE2A8, + 0, 0, 0, 0,0xE2AB, 0,0xE2AC, 0, +0xE2A9,0xE2AA, 0, 0,0xE2A7,0xE2A5, 0, 0, + 0, 0,0xE29F, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,0x95CD,0x89D3, + 0, 0, 0,0xE2B3, 0,0xE2B0, 0,0xE2B5, + 0, 0,0xE2B4, 0,0x9493,0x96A5, 0,0x8E5A, +0xE2AE,0xE2B7,0xE2B2, 0,0xE2B1,0xE2AD,0xFB88,0xE2AF, + 0,0x8AC7, 0, 0, 0, 0, 0, 0, + 0, 0,0x925C, 0, 0,0x90FB, 0, 0, + 0,0x94A0, 0, 0,0xE2BC, 0, 0, 0, +0x94A2, 0, 0, 0, 0, 0, 0, 0, +0x90DF,0xE2B9, 0, 0,0x94CD, 0,0xE2BD,0x95D1, + 0,0x927A, 0,0xE2B8,0xE2BA, 0, 0,0xE2BB, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,0xE2BE, 0, 0, +0x8EC2, 0, 0, 0,0x93C4,0xE2C3,0xE2C2, 0, + 0,0xE2BF, 0, 0, 0,0x9855, 0, 0, + 0, 0, 0,0xE2C8, 0, 0,0xE2CC,0xE2C9, + 0, 0, 0, 0, 0, 0, 0, 0, +0xE2C5, 0, 0, 0, 0, 0, 0,0xE2C6, + 0, 0, 0, 0, 0,0xE2CB, 0, 0, + 0,0xE2C0,0x99D3,0xE2C7,0xE2C1, 0, 0,0xE2CA, + 0, 0, 0, 0, 0, 0, 0,0xE2D0, + 0,0x8AC8, 0,0xE2CD, 0, 0, 0,0xE2CE, + 0, 0,0xE2CF,0xE2D2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0,0xE2D1, +0x94F4, 0, 0, 0, 0,0xE2D3,0x97FA,0x95EB, +0xE2D8, 0, 0,0xE2D5, 0, 0, 0, 0, + 0, 0, 0, 0,0xE2D4,0x90D0, 0,0xE2D7, +0xE2D9, 0, 0, 0,0xE2D6, 0,0xE2DD, 0, +0xE2DA, 0, 0, 0, 0, 0, 0,0xE2DB, +0xE2C4, 0, 0, 0,0xE2DC,0xE2DE, 0, 0, + 0, 0, 0, 0,0xE2DF, 0, 0, 0, + 0, 0, 0,0x95C4, 0,0xE2E0, 0, 0, + 0, 0, 0, 0, 0, 0,0x96E0, 0, + 0,0x8BCC,0x8C48,0xE2E1, 0, 0, 0, 0, + 0,0x95B2, 0,0x9088, 0,0x96AE, 0, 0, +0xE2E2, 0,0x97B1, 0, 0,0x9494, 0,0x9165, +0x9453, 0, 0,0x8F6C, 0, 0, 0,0x88BE, + 0,0xE2E7,0xE2E5, 0,0xE2E3,0x8A9F, 0,0x8FCF, +0xE2E8, 0, 0,0xE2E6, 0,0xE2E4,0xE2EC, 0, + 0,0xE2EB,0xE2EA,0xE2E9, 0, 0, 0, 0, + 0,0xE2ED, 0, 0, 0,0xE2EE,0x90B8, 0, +0xE2EF, 0,0xE2F1, 0, 0,0xE2F0, 0, 0, + 0, 0,0x8CD0, 0, 0, 0,0x9157, 0, + 0, 0,0xE2F3, 0, 0, 0,0x939C, 0, +0xE2F2, 0, 0, 0,0xE2F4, 0,0x95B3,0x918C, +0x8D66, 0,0xE2F5, 0, 0, 0, 0,0x97C6, + 0, 0, 0, 0, 0, 0, 0,0xE2F7, + 0, 0,0xE2F8, 0,0xE2F9, 0,0xE2FA, 0, +0x8E85, 0,0xE2FB,0x8C6E, 0, 0,0x8B8A, 0, +0x8B49, 0,0xE340, 0,0x96F1,0x8D67,0xE2FC, 0, + 0, 0,0xE343,0x96E4, 0,0x945B, 0, 0, +0x9552, 0, 0, 0,0x8F83,0xE342, 0,0x8ED1, +0x8D68,0x8E86,0x8B89,0x95B4,0xE341, 0, 0, 0, +0x9166,0x9661,0x8DF5, 0, 0, 0, 0, 0, + 0, 0, 0,0x8E87,0x92DB, 0,0xE346,0x97DD, +0x8DD7, 0,0xE347,0x9061, 0,0xE349, 0, 0, + 0,0x8FD0,0x8DAE, 0, 0, 0, 0,0xE348, + 0, 0,0x8F49,0x8CBC,0x9167,0xE344,0xE34A, 0, +0xFB8A, 0, 0,0xE345,0x8C6F, 0,0xE34D,0xE351, +0x8C8B, 0, 0, 0, 0, 0,0xE34C, 0, + 0, 0, 0,0xE355,0xFB8B, 0,0x8D69, 0, + 0,0x978D,0x88BA,0xE352, 0, 0,0x8B8B, 0, +0xE34F, 0, 0, 0, 0, 0,0xE350, 0, + 0,0x939D,0xE34E,0xE34B, 0,0x8A47,0x90E2, 0, + 0,0x8CA6, 0, 0, 0,0xE357, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0,0xE354, 0, 0, 0, 0, 0,0xE356, + 0, 0, 0,0xE353, 0, 0, 0, 0, + 0,0x8C70,0x91B1,0xE358,0x918E, 0, 0,0xE365, +0xFB8D, 0,0xE361,0xE35B, 0, 0, 0, 0, + 0, 0, 0,0xE35F,0x8EF8,0x88DB,0xE35A,0xE362, +0xE366,0x8D6A,0x96D4, 0,0x92D4,0xE35C, 0,0xFB8C, +0xE364, 0,0xE359,0x925D, 0,0xE35E,0x88BB,0x96C8, + 0, 0, 0, 0, 0, 0, 0,0xE35D, + 0, 0,0x8BD9,0x94EA, 0, 0, 0,0x918D, + 0,0x97CE,0x8F8F, 0, 0,0xE38E,0xFB8E, 0, +0xE367, 0,0x90FC, 0,0xE363,0xE368,0xE36A, 0, +0x92F7,0xE36D, 0, 0,0xE369, 0, 0, 0, +0x95D2,0x8AC9, 0, 0,0x96C9, 0, 0,0x88DC, + 0, 0,0xE36C, 0,0x97FB, 0, 0, 0, + 0, 0, 0,0xE36B, 0, 0, 0, 0, + 0,0x898F, 0, 0,0x93EA,0xE36E, 0, 0, + 0,0xE375,0xE36F,0xE376, 0, 0, 0, 0, + 0, 0,0xE372, 0, 0, 0, 0, 0, + 0, 0, 0,0x949B, 0, 0,0x8EC8,0xE374, + 0,0xE371,0xE377,0xE370, 0, 0,0x8F63, 0, + 0, 0, 0,0x9644, 0, 0,0x8F6B, 0, + 0,0xE373,0xE380, 0, 0,0xE37B, 0,0xE37E, + 0,0xE37C,0xE381,0xE37A, 0,0xE360,0x90D1, 0, + 0,0x94C9, 0,0xE37D, 0, 0,0xE378, 0, + 0, 0,0x9140,0x8C71, 0,0x8F4A, 0, 0, + 0, 0,0xFB8F, 0,0x9044,0x9155,0xE384, 0, + 0,0xE386,0xE387, 0, 0,0xE383,0xE385, 0, + 0, 0, 0, 0, 0, 0,0xE379,0xE382, + 0,0xE38A,0xE389, 0, 0,0x969A, 0, 0, +0x8C4A, 0, 0, 0, 0, 0, 0, 0, + 0,0xE388, 0,0xE38C,0xE38B,0xE38F, 0,0xE391, + 0, 0,0x8E5B,0xE38D, 0, 0, 0, 0, +0xE392,0xE393,0xFA5C, 0,0xE394, 0,0xE39A,0x935A, +0xE396, 0,0xE395,0xE397,0xE398, 0,0xE399, 0, + 0, 0, 0,0xE39B,0xE39C, 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, 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, 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,0x8ACA, 0, +0xE39D, 0,0xE39E, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,0xE39F, 0,0xFB90, + 0, 0, 0, 0,0xE3A0,0xE3A1,0xE3A2, 0, +0xE3A3,0xE3A4, 0, 0,0xE3A6,0xE3A5, 0, 0, +0xE3A7, 0, 0, 0, 0, 0, 0,0xE3A8, +0xE3A9, 0, 0, 0, 0, 0, 0,0xE3AC, +0xE3AA,0xE3AB,0x8DDF,0x8C72, 0, 0,0x9275, 0, +0x94B1, 0,0x8F90, 0, 0,0x946C, 0,0x94EB, +0xE3AD,0x9CEB, 0, 0, 0, 0, 0, 0, + 0, 0,0xE3AE,0xE3B0, 0,0x9785,0xE3AF,0xE3B2, +0xE3B1, 0,0x9772, 0,0xE3B3, 0,0x94FC, 0, + 0, 0, 0, 0,0xE3B4, 0, 0, 0, + 0, 0,0xE3B7, 0, 0,0xE3B6,0xE3B5, 0, + 0,0xFB91, 0,0xE3B8,0x8C51, 0, 0, 0, +0x9141,0x8B60, 0, 0, 0, 0,0xE3BC,0xE3B9, + 0, 0,0xE3BA, 0, 0, 0,0xE3BD, 0, +0xE3BE,0xE3BB, 0, 0, 0,0x8948, 0, 0, + 0,0x89A5, 0, 0, 0,0xE3C0,0xE3C1, 0, + 0, 0,0xE3C2, 0,0x9782, 0, 0, 0, + 0, 0,0x8F4B, 0,0xE3C4,0xE3C3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, +0x9089,0xE3C5, 0, 0, 0, 0,0xE3C6, 0, + 0,0xE3C7, 0,0x8AE3, 0, 0, 0, 0, +0x8ACB, 0, 0,0xE3C8, 0, 0, 0, 0, + 0,0xE3C9, 0,0x967C,0x9783, 0, 0, 0, +0x9773,0x9856, 0,0x8D6C,0xE3CC,0x8ED2,0xE3CB, 0, + 0, 0, 0,0xE3CD,0x8EA7, 0, 0, 0, +0x91CF, 0,0xE3CE, 0, 0,0x8D6B, 0,0x96D5, +0xE3CF,0xE3D0, 0, 0,0xE3D1, 0, 0, 0, + 0,0xE3D2, 0, 0, 0, 0, 0, 0, +0xE3D3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,0x8EA8, 0, 0,0x96EB, 0, + 0, 0, 0,0xE3D5, 0,0x925E, 0,0xE3D4, + 0, 0, 0, 0, 0, 0,0xE3D7, 0, + 0, 0,0xE3D6, 0, 0, 0, 0, 0, + 0, 0,0xE3D8, 0, 0, 0,0x90B9, 0, +0xE3D9, 0,0xE3DA, 0, 0, 0,0x95B7,0xE3DB, + 0,0x918F,0xE3DC, 0, 0, 0, 0, 0, +0xE3DD, 0, 0, 0, 0, 0, 0,0x97FC, +0xE3E0, 0,0xE3DF,0xE3DE,0x92AE, 0,0xE3E1,0x9045, + 0,0xE3E2, 0, 0, 0,0xE3E3,0x9857,0xE3E4, + 0, 0, 0, 0,0xE3E5,0xE3E7,0xE3E6,0x94A3, + 0,0x93F7, 0,0x985D,0x94A7, 0, 0, 0, + 0, 0, 0,0xE3E9, 0, 0,0x8FD1, 0, +0x9549, 0,0xE3EA,0xE3E8, 0,0x8ACC, 0, 0, + 0,0x8CD2,0x8E88, 0, 0,0x94EC, 0, 0, + 0,0x8CA8,0x9662, 0,0xE3ED,0xE3EB, 0,0x8D6D, + 0,0x8D6E,0x88E7, 0,0x8DE6, 0, 0, 0, + 0, 0,0x9478, 0, 0, 0, 0, 0, + 0, 0, 0,0x88DD,0xE3F2, 0,0x925F, 0, + 0, 0, 0, 0,0x9477, 0,0x91D9, 0, + 0, 0, 0, 0, 0, 0,0xE3F4, 0, + 0,0xE3F0,0xE3F3,0xE3EE, 0,0xE3F1,0x9645, 0, + 0,0x8CD3, 0, 0,0x88FB,0xE3EF, 0, 0, + 0, 0, 0, 0, 0, 0, 0,0xE3F6, + 0,0xE3F7, 0, 0,0x93B7, 0, 0, 0, +0x8BB9, 0, 0, 0,0xE445,0x945C, 0, 0, + 0, 0,0x8E89, 0, 0,0x8BBA,0x90C6,0x9865, +0x96AC,0xE3F5,0x90D2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,0x8B72,0xE3F8, 0, 0, 0, 0, + 0, 0, 0,0xE3FA, 0, 0, 0, 0, + 0,0xE3F9, 0, 0, 0, 0, 0,0xE3FB, + 0,0x9245, 0,0x945D, 0, 0, 0, 0, + 0,0x92AF, 0, 0, 0, 0,0xE442, 0, + 0, 0, 0, 0, 0, 0,0xE441, 0, + 0, 0, 0,0xE3FC, 0, 0,0x9074, 0, +0x9585,0xE444, 0,0xE443,0x8D6F,0x9872, 0, 0, + 0, 0, 0, 0, 0, 0, 0,0xE454, + 0, 0, 0, 0, 0,0xE448,0xE449, 0, + 0, 0, 0,0x8EEE, 0, 0,0xE447, 0, +0x8D98,0xE446, 0, 0,0xE44A, 0, 0, 0, +0x92B0,0x95A0,0x9142, 0, 0, 0, 0,0x91DA, +0xE44E, 0,0xE44F,0xE44B, 0, 0, 0, 0, +0xE44C, 0,0xE44D, 0, 0, 0, 0,0x8D70, + 0, 0, 0,0xE455, 0,0xE451, 0, 0, + 0, 0,0x9586, 0,0x968C,0x9547, 0, 0, +0xE450, 0, 0,0xE453,0xE452, 0, 0, 0, +0x9663,0xE456, 0, 0, 0, 0, 0, 0, +0xE457, 0, 0,0x9156, 0,0xE458, 0, 0, +0xE45A, 0,0xE45E, 0, 0,0xE45B,0xE459,0x945E, +0xE45C, 0,0xE45D, 0, 0, 0,0x89B0, 0, +0xE464,0xE45F, 0, 0, 0,0xE460, 0, 0, + 0,0xE461, 0,0x919F, 0, 0, 0, 0, +0xE463,0xE462,0xE465, 0, 0, 0, 0,0xE466, +0xE467, 0, 0,0x9062, 0,0x89E7, 0,0xE468, +0x97D5, 0,0x8EA9, 0, 0,0x8F4C, 0, 0, + 0, 0, 0,0x8E8A,0x9276, 0, 0, 0, + 0, 0,0xE469,0xE46A,0x8950, 0,0xE46B, 0, + 0,0xE46C,0xE46D, 0, 0,0xE46E, 0,0xE46F, +0x8BBB,0x9DA8,0xE470, 0,0x90E3,0xE471,0x8EC9, 0, +0xE472, 0,0x98AE, 0, 0, 0,0xE473,0x95DC, +0x8ADA, 0, 0,0x9143,0x8F77, 0,0x9591,0x8F4D, + 0, 0, 0, 0, 0, 0, 0, 0, + 0,0xE474,0x8D71,0xE475,0x94CA, 0,0xE484, 0, + 0, 0, 0,0xE477, 0,0x91C7,0x9495,0x8CBD, +0xE476,0x9144, 0, 0, 0, 0, 0, 0, +0xE478, 0, 0, 0, 0, 0, 0,0x92F8, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, +0xE47A,0xE479,0xE47C, 0, 0,0xE47B, 0,0xE47D, + 0, 0,0xE480, 0,0xE47E, 0,0x8ACD, 0, +0xE481, 0,0xE482,0xE483, 0, 0,0x8DAF,0x97C7, + 0,0xE485,0x9046, 0, 0, 0,0x8990,0xE486, +0xE487, 0, 0, 0, 0, 0,0xE488, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,0x88F0, 0,0xE489, 0, 0, + 0, 0,0xE48A, 0, 0, 0, 0, 0, + 0,0x9587, 0, 0, 0,0x8EC5, 0,0xE48C, + 0, 0, 0, 0, 0,0x8A48,0x88B0, 0, + 0, 0, 0,0xE48B,0xE48E,0x946D, 0,0x9063, + 0,0x89D4, 0,0x9646, 0, 0, 0, 0, +0x8C7C,0x8BDA, 0,0xE48D, 0,0x89E8, 0, 0, + 0, 0, 0, 0, 0,0x8AA1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0,0x8991,0xE492,0x97E8,0x91DB, 0, 0,0x9563, + 0,0xE49E, 0,0x89D5,0xE49C, 0,0xE49A,0xE491, + 0,0xE48F, 0,0xE490, 0,0x8EE1,0x8BEA,0x9297, + 0, 0, 0,0x93CF, 0, 0, 0, 0, + 0,0x8970, 0,0xE494,0xE493, 0, 0, 0, + 0,0xE499,0xE495,0xE498, 0, 0, 0, 0, + 0,0xFB93,0x96CE,0xE497,0x89D6,0x8A9D,0xE49B, 0, + 0,0xE49D, 0, 0, 0, 0,0x8C73, 0, + 0, 0, 0, 0, 0, 0,0xE4A1,0xE4AA, +0xE4AB, 0, 0, 0,0x88A9, 0, 0, 0, + 0, 0, 0,0xE4B2, 0, 0, 0, 0, +0x88EF, 0, 0,0xE4A9, 0, 0, 0,0xE4A8, + 0,0xE4A3,0xE4A2, 0,0xE4A0,0xE49F,0x9283, 0, +0x91F9,0xE4A5, 0, 0, 0, 0, 0, 0, +0xE4A4, 0, 0, 0, 0,0xE4A7, 0, 0, + 0,0x9190,0x8C74, 0, 0, 0, 0,0x8960, +0xE4A6, 0,0x8D72, 0, 0, 0, 0, 0, +0x9191, 0, 0, 0, 0, 0, 0, 0, + 0, 0,0xFB94, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,0xE4B8, 0,0xE4B9, 0,0x89D7, + 0, 0, 0,0x89AC,0xE4B6, 0, 0,0xFB95, + 0, 0, 0, 0, 0,0xE4AC, 0,0xE4B4, + 0,0xE4BB,0xE4B5, 0, 0, 0,0xE4B3, 0, + 0, 0, 0,0xE496, 0, 0,0xE4B1, 0, + 0, 0,0xE4AD, 0, 0, 0,0x8ACE,0xE4AF, +0xE4BA, 0,0xE4B0, 0, 0, 0, 0, 0, +0xE4BC, 0,0xE4AE,0x949C, 0, 0, 0, 0, + 0,0x9789, 0, 0, 0,0xE4B7, 0, 0, + 0, 0, 0, 0, 0,0xE4CD, 0, 0, + 0,0xE4C5, 0, 0, 0,0x909B, 0,0xFB96, + 0, 0,0x8B65, 0,0x8BDB, 0,0xE4C0, 0, + 0, 0, 0,0x89D9, 0, 0,0x8FD2, 0, +0xE4C3, 0, 0, 0,0x8DD8, 0, 0,0x9370, +0xE4C8, 0, 0, 0, 0, 0, 0, 0, + 0,0x95EC, 0,0xE4BF, 0, 0, 0,0x89D8, +0x8CD4,0x9548,0xE4C9, 0,0xE4BD, 0,0xFB97,0xE4C6, + 0, 0, 0,0xE4D0, 0,0xE4C1, 0, 0, + 0, 0, 0,0xE4C2,0x93B8, 0, 0,0xE4C7, + 0, 0, 0,0xE4C4,0x9647,0xE4CA,0x88DE, 0, + 0, 0, 0,0xE4BE, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, +0xE4CC, 0,0xE4CB, 0, 0, 0, 0, 0, + 0,0x948B,0xE4D2, 0,0xE4DD, 0, 0, 0, + 0,0x8A9E, 0, 0, 0,0xE4E0, 0, 0, +0xE4CE, 0, 0, 0,0xE4D3,0x978E, 0, 0, + 0, 0, 0, 0, 0, 0,0xE4DC, 0, +0xFB98,0x9774, 0, 0, 0, 0,0x97A8, 0, + 0, 0, 0, 0, 0, 0, 0,0x9298, + 0, 0, 0,0x8A8B, 0, 0, 0, 0, + 0,0x9592,0xE4E2,0x939F, 0, 0,0x88AF, 0, + 0,0xE4DB, 0,0xE4D7,0x9192,0xE4D1,0xE4D9,0xE4DE, + 0,0x944B, 0, 0, 0,0x88A8, 0,0xE4D6, + 0,0xE4DF,0x9598, 0, 0, 0, 0, 0, + 0, 0,0xE4DA, 0,0xE4D5, 0, 0, 0, + 0, 0, 0,0x8FD3, 0, 0, 0, 0, +0x8F4E, 0, 0, 0,0x8EAA, 0, 0, 0, + 0,0x96D6, 0, 0,0x9566, 0, 0,0xE4E5, + 0,0xE4EE, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,0xE4D8, 0, 0, + 0, 0,0x8A97, 0,0xFB99, 0, 0, 0, +0x8FF6,0xE4E3, 0,0xE4E8,0x9193, 0, 0,0xE4E4, + 0,0xE4EB, 0, 0,0x927E, 0,0xE4EC, 0, + 0,0x9775,0xE4E1,0x8A57, 0,0xE4E7, 0, 0, +0xE4EA,0x96AA, 0, 0, 0, 0,0xE4ED, 0, + 0,0xE4E6,0xE4E9, 0,0xFA60, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,0x9648, 0,0x9840, 0, + 0, 0, 0, 0,0xE4F1, 0, 0, 0, + 0, 0, 0, 0,0xE4F8, 0, 0,0xE4F0, +0x8EC1, 0, 0, 0, 0, 0,0xE4CF, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0,0x95CC, 0,0x96A0,0xE4F7,0xE4F6, 0,0xE4F2, +0xE4F3, 0,0x8955, 0, 0, 0, 0,0xE4F5, + 0,0xE4EF, 0, 0, 0, 0,0x92D3, 0, + 0, 0, 0, 0,0xE4F4,0x88FC, 0, 0, + 0, 0, 0, 0, 0,0x91A0, 0, 0, + 0, 0, 0, 0, 0,0x95C1, 0, 0, +0xE4F9,0xE540, 0,0x94D7, 0, 0, 0, 0, +0xE4FC,0x8FD4,0x8EC7,0xE542, 0, 0,0x8BBC, 0, + 0, 0, 0,0xFB9A, 0,0xE543, 0,0x9599, +0xE4FB,0xFB9B,0xE4D4, 0, 0, 0, 0, 0, + 0, 0, 0,0xE4FA, 0, 0, 0, 0, +0x986E,0x93A0,0x9593,0xFB9C, 0,0xE54A, 0, 0, + 0, 0, 0, 0, 0, 0, 0,0xE550, + 0, 0, 0, 0, 0, 0,0xE551, 0, +0xE544, 0, 0, 0,0x9496, 0, 0,0xE54E, +0xE546, 0,0xE548, 0, 0, 0, 0, 0, +0xE552,0xE547, 0, 0,0xE54B, 0, 0,0x8992, + 0,0x93E3, 0,0xE54C,0xE54F, 0, 0, 0, + 0, 0, 0, 0,0xE545, 0,0x9145, 0, +0xE549,0x8E46,0x9064,0x8C4F,0x96F2, 0,0x96F7,0x8F92, +0xFB9E, 0, 0, 0, 0, 0, 0, 0, + 0,0xE556,0xE554, 0, 0, 0, 0, 0, + 0,0x986D, 0, 0, 0, 0, 0, 0, + 0,0xE553, 0, 0, 0,0x9795, 0,0xE555, +0xE557, 0, 0, 0, 0,0xE558, 0, 0, + 0, 0, 0, 0,0xE55B,0xE559, 0, 0, + 0, 0, 0, 0,0x93A1,0xE55A, 0, 0, + 0,0x94CB,0xE54D, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0,0x8F93, + 0,0xE55C,0xE561,0x9194, 0, 0,0xE560, 0, + 0, 0,0xE541, 0, 0, 0,0xE562,0x9168, + 0, 0,0xE55D,0xE55F, 0, 0, 0, 0, + 0, 0, 0,0xE55E, 0, 0,0x9F50,0x9F41, + 0, 0,0xE564, 0, 0, 0, 0, 0, + 0, 0,0xE563, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,0x9796, 0,0xE1BA, +0xE565, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0,0xE566, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,0xE567,0x8CD5, 0, +0x8B73, 0, 0, 0,0xE569,0x997C, 0, 0, + 0, 0,0x8B95, 0,0x97B8, 0,0x8BF1,0xE56A, + 0, 0, 0, 0, 0, 0, 0,0xE56B, + 0, 0, 0,0x928E, 0, 0, 0, 0, + 0,0xE56C, 0, 0, 0, 0, 0, 0, + 0,0x93F8, 0,0x88B8, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,0x89E1,0xE571,0xE572, 0, 0, 0, + 0, 0, 0,0xE56D, 0,0x8E5C, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,0xE56E,0x9461, 0, 0, 0, + 0,0xE56F,0xE570,0xE57A, 0, 0, 0,0xE574, +0xE577, 0, 0, 0, 0, 0,0xE573, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,0xE575, 0,0xE576,0x8ED6, + 0,0xE578, 0,0x9260, 0,0x8C75,0x8A61, 0, + 0, 0, 0, 0,0xE57B, 0, 0, 0, + 0,0x8A5E, 0,0xE581, 0, 0,0xE57C,0xE580, + 0, 0, 0, 0,0x94B8, 0, 0, 0, + 0,0xE57D, 0, 0,0xE57E,0x9567,0x94D8,0xE582, + 0, 0, 0, 0, 0, 0, 0, 0, +0x91FB,0xE58C, 0,0xE588, 0, 0,0x89E9, 0, +0xE586, 0,0x9649,0xE587, 0, 0,0xE584, 0, +0xE585,0xE58A,0xE58D, 0, 0,0xE58B, 0, 0, + 0,0xE589,0xE583, 0, 0, 0, 0, 0, +0x9277, 0,0xE594, 0,0x96A8, 0, 0, 0, + 0, 0, 0, 0, 0,0xE592, 0, 0, + 0,0xE593, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,0xE58E, 0, 0,0xE590, + 0, 0, 0,0xE591, 0, 0, 0,0xE58F, + 0, 0, 0, 0, 0, 0, 0, 0, + 0,0x90E4, 0,0x9858,0xE598, 0,0xE599, 0, + 0, 0, 0,0xE59F, 0,0x9049, 0,0xE59B, + 0,0xE59E, 0, 0, 0, 0, 0,0xE596, +0xE595, 0, 0,0xE5A0, 0, 0,0x89DA, 0, +0xE59C, 0,0xE5A1, 0, 0, 0,0xE59D, 0, + 0, 0, 0, 0,0xE59A, 0,0x92B1, 0, +0xE597, 0, 0, 0, 0, 0, 0,0x9488, + 0, 0,0xE5A5, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,0x975A, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0,0xE5A4, + 0, 0,0xE5A3, 0, 0, 0, 0, 0, + 0, 0, 0,0xE5AC, 0, 0, 0,0xE5A6, + 0, 0, 0,0xE5AE, 0, 0, 0, 0, + 0, 0,0x9786,0xE5B1, 0,0xE5A8, 0, 0, +0xE5A9, 0, 0, 0,0xE5AD, 0,0xE5B0,0xE5AF, + 0, 0, 0,0xE5A7, 0, 0, 0, 0, +0xE5AA, 0,0xE5BB, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, +0xE5B4, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0,0xE5B2, + 0, 0,0xE5B3, 0, 0, 0,0xE5B8,0xE5B9, + 0,0x8A49, 0,0x8B61, 0, 0,0xE5B7, 0, + 0, 0, 0, 0, 0,0xE5A2, 0,0xFBA1, + 0, 0, 0, 0, 0,0xE5B6,0xE5BA,0xE5B5, + 0,0xE5BC, 0, 0, 0,0xE5BE,0xE5BD, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0,0xE5C0,0xE5BF,0xE579, 0, 0, 0,0xE5C4, + 0, 0, 0, 0, 0, 0, 0, 0, + 0,0xE5C1, 0, 0, 0, 0,0xE5C2, 0, + 0,0xE5C3, 0,0xE5C5, 0, 0, 0, 0, +0x8C8C, 0,0xE5C7, 0,0xE5C6, 0,0x8F4F, 0, + 0, 0, 0, 0,0x8D73,0x9FA5, 0, 0, + 0, 0,0xE5C8,0x8F70, 0, 0, 0,0x8A58, + 0,0xE5C9, 0,0x8971, 0,0x8FD5,0xE5CA, 0, + 0,0x8D74,0xE5CB,0x88DF, 0, 0, 0, 0, +0x955C, 0, 0,0xE5CC, 0, 0, 0, 0, +0x908A, 0,0xE5D3, 0, 0,0xE5D0, 0,0x928F, + 0, 0, 0, 0, 0,0xE5D1,0xE5CE,0x8BDC, + 0,0xE5CD,0xE5D4, 0, 0, 0, 0, 0, +0x8C55, 0, 0,0x91DC, 0,0xE5DA, 0, 0, + 0, 0,0xE5D6, 0, 0, 0,0x91B3,0xE5D5, + 0,0xE5D8, 0, 0, 0, 0,0xE5CF, 0, + 0, 0,0xE5D9, 0,0xE5DB, 0, 0, 0, + 0, 0, 0,0x94ED, 0, 0,0xE5D7, 0, +0xE5DC,0xE5DE, 0, 0,0x8CD1,0xE5D2, 0,0x88BF, + 0, 0, 0, 0, 0, 0, 0,0xE5DD, + 0,0x8DD9,0x97F4,0xE5DF,0xE5E0,0x9195, 0, 0, + 0, 0, 0, 0, 0, 0, 0,0x97A0, + 0, 0, 0, 0,0xE5E1,0x9754, 0, 0, +0xE5E2,0xE5E3, 0, 0,0x95E2,0xE5E4, 0,0x8DBE, + 0,0x97A1, 0, 0, 0, 0, 0, 0, +0xE5E9, 0, 0, 0, 0, 0, 0, 0, + 0, 0,0xE5EA,0x8FD6,0xE5E8,0xFBA2, 0, 0, +0x9787,0xE5E5, 0, 0,0xE5E7,0x90BB,0x909E, 0, + 0, 0,0xE5E6, 0,0xE5EB, 0, 0,0x95A1, + 0, 0,0xE5ED, 0,0xE5EC, 0, 0, 0, +0x8A8C, 0,0x964A,0xE5EE, 0, 0, 0, 0, + 0, 0, 0, 0,0xFA5D,0xE5FA,0xE5F0, 0, + 0, 0, 0, 0, 0,0xE5F1, 0, 0, + 0, 0,0xE5F2,0xE5F3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,0xE5F7, 0, +0xE5F8, 0, 0,0xE5F6, 0, 0, 0, 0, + 0,0xE5F4, 0,0xE5EF,0xE5F5, 0, 0, 0, + 0, 0, 0, 0,0xE5F9,0xE8B5, 0, 0, + 0, 0, 0, 0, 0, 0,0x89A6, 0, + 0, 0, 0, 0, 0, 0,0xE5FC,0x8BDD, +0xE5FB, 0, 0, 0,0xE641, 0,0xE640, 0, + 0, 0,0xE643, 0, 0,0xE642, 0,0xE644, + 0, 0,0x8F50, 0,0xE645, 0, 0,0xE646, + 0, 0, 0, 0, 0, 0,0xE647,0x90BC, + 0,0x9776, 0,0xE648, 0, 0,0x95A2,0x9465, +0xE649, 0,0xE64A,0x8CA9, 0, 0, 0,0x8B4B, + 0, 0, 0,0xE64B, 0, 0,0x8E8B,0x9460, +0xE64C, 0,0x8A6F, 0, 0, 0, 0, 0, + 0,0xE64D, 0, 0, 0, 0,0xE64F,0x9797, + 0,0xE64E,0x9065, 0,0xE650, 0, 0,0xE651, + 0, 0,0xE652,0x8ACF, 0, 0, 0, 0, + 0, 0,0xE653, 0, 0,0xE654, 0,0xE655, +0xE656, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,0x8A70, 0, 0, 0, 0, 0, + 0, 0,0xE657, 0,0xE658,0xE659, 0, 0, + 0, 0, 0,0x89F0, 0, 0,0x9047,0xE65A, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,0xE65B, 0, 0, 0, +0xE65C, 0, 0, 0, 0, 0, 0, 0, +0x8CBE, 0,0x92F9,0xE65D, 0, 0, 0, 0, +0x8C76, 0,0x9075, 0,0xE660, 0,0x93A2, 0, +0xE65F, 0,0xFBA3,0x8C50, 0, 0,0xE65E,0x91F5, +0x8B4C, 0, 0,0xE661, 0,0xE662, 0,0x8FD7, + 0, 0, 0,0x8C8D, 0,0xE663, 0, 0, + 0, 0,0x964B, 0, 0,0x90DD, 0, 0, + 0,0x8B96, 0,0x96F3,0x9169, 0,0xE664,0xFBA4, + 0, 0,0x9066,0x9290,0x8FD8, 0, 0, 0, + 0,0xE665, 0, 0, 0, 0,0xE668, 0, +0xE669, 0, 0, 0, 0, 0, 0, 0, +0x8DBC,0x91C0,0xE667, 0,0x8FD9,0x955D, 0, 0, + 0, 0, 0,0xE666, 0, 0,0x8E8C, 0, +0x8972, 0,0xE66D,0x8C77, 0, 0,0x8E8E, 0, + 0,0x8E8D, 0,0x986C,0xE66C,0xE66B,0x9146, 0, +0x8B6C,0x9862,0x8A59,0x8FDA, 0, 0, 0, 0, + 0,0xFBA5, 0, 0,0xE66A, 0, 0, 0, + 0, 0,0xE66F, 0,0xE670,0xE66E, 0,0x8CD6, + 0,0x975F, 0, 0,0x8E8F,0x9446, 0, 0, + 0,0xE673, 0,0x90BE, 0,0x9261, 0, 0, +0x9755, 0,0xE676, 0, 0, 0,0x8CEA, 0, +0x90BD,0xE672, 0,0xE677,0x8CEB,0xE674,0xE675,0xFBA6, +0xE671, 0, 0, 0,0x90E0,0x93C7, 0, 0, +0x924E, 0,0x89DB, 0, 0, 0, 0, 0, + 0,0x94EE, 0, 0,0x8B62, 0,0xFBA7,0x92B2, + 0, 0,0xE67A, 0,0xE678, 0, 0,0x926B, + 0, 0, 0,0x90BF,0x8AD0,0xE679, 0,0x907A, + 0, 0,0x97C8, 0, 0, 0,0x985F, 0, + 0, 0,0xE67B,0xE687,0x92B3, 0,0xE686,0xFBA8, +0xE683,0xE68B,0xE684, 0,0xE680, 0,0x92FA,0xE67E, + 0, 0, 0,0xE67C, 0,0x9740,0x8E90, 0, + 0,0xE681, 0,0xE67D, 0, 0,0xFBAA,0xE685, +0x8F94, 0,0x8CBF, 0, 0, 0,0x91F8, 0, +0x9664,0x8979,0x88E0, 0,0x93A3, 0, 0,0xE689, + 0, 0, 0, 0,0xE688, 0,0x93E4, 0, +0xE68D, 0, 0, 0,0xE682, 0,0xE68C,0xE68E, + 0,0x8CAA,0xE68A,0x8D75, 0,0x8ED3, 0, 0, +0xE68F,0x9777, 0, 0, 0, 0,0xE692, 0, +0xE695, 0, 0,0xE693,0x9554, 0, 0, 0, + 0, 0, 0,0xE690, 0, 0, 0, 0, + 0,0x8BDE, 0, 0, 0, 0,0xE694, 0, + 0,0xE696, 0, 0, 0, 0, 0, 0, + 0,0xE69A, 0, 0,0xE697, 0,0xE699,0xE698, + 0, 0, 0,0xFBAB, 0, 0,0xE69B, 0, +0x8EAF, 0,0xE69D,0xE69C,0x9588, 0, 0,0xE69F, + 0, 0, 0, 0, 0, 0,0x8C78, 0, + 0, 0, 0,0xE69E,0xE6A0, 0, 0,0xE6A1, +0x8B63,0xE3BF,0x8FF7, 0,0xE6A2, 0, 0,0x8CEC, + 0, 0, 0, 0, 0,0xE6A3, 0,0xFBAC, +0xE6A4, 0, 0,0x8E5D, 0, 0, 0, 0, + 0, 0,0x9DCC, 0,0xE6A5, 0,0xE6A6, 0, +0x8F51, 0,0xE6A7,0xE6A8, 0, 0,0xE6A9, 0, + 0,0xE6AA,0xE6AB, 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, 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, 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,0x924A, + 0, 0,0xE6AC, 0, 0, 0, 0,0xE6AE, + 0,0xE6AD, 0, 0, 0, 0,0x93A4, 0, +0xE6AF, 0,0x964C, 0,0xE6B0, 0,0xE6B1, 0, +0xE6B2, 0, 0, 0, 0,0xE6B3, 0, 0, + 0, 0,0x93D8, 0, 0, 0, 0, 0, + 0,0x8FDB,0xE6B4, 0, 0, 0, 0, 0, + 0, 0,0x8D8B,0x98AC,0xE6B5, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, +0xE6B6,0x955E,0xE6B7, 0,0xE6BF, 0, 0, 0, + 0, 0,0xE6B8, 0, 0,0xE6BA, 0, 0, + 0,0xE6B9,0xE6BB, 0,0x9665,0xE6BC,0xE6BD, 0, + 0, 0, 0, 0,0xE6BE, 0, 0, 0, +0xE6C0, 0, 0, 0, 0,0x8A4C,0x92E5, 0, +0x9589,0x8DE0,0x8D76, 0, 0, 0, 0,0x956E, +0x89DD,0x94CC,0xE6C3,0x8AD1,0x90D3,0xE6C2,0xE6C7,0x9299, +0x96E1, 0,0xE6C5,0xE6C6,0x8B4D, 0,0xE6C8,0x9483, +0x91DD, 0, 0,0x94EF,0x935C,0xE6C4, 0,0x9666, +0x89EA,0xE6CA,0x9847,0x92C0,0x9864, 0, 0,0x8E91, +0xE6C9, 0,0x91AF, 0, 0,0xE6DA,0x9147, 0, + 0,0x93F6, 0,0x956F, 0, 0, 0, 0, + 0, 0,0xE6CD,0x8E5E,0x8E92, 0,0x8FDC, 0, +0x9485, 0,0x8CAB,0xE6CC,0xE6CB, 0,0x958A, 0, + 0, 0,0x8EBF, 0, 0,0x9371, 0, 0, +0xFBAD, 0, 0, 0,0xFBAE, 0, 0, 0, + 0, 0,0xE6CF,0xE6D0,0x8D77,0xE6CE, 0, 0, + 0, 0, 0, 0,0xE6D1,0xE6D2, 0,0xE6D4, +0x91A1, 0,0xE6D3,0x8AE4, 0,0xE6D6, 0,0xE6D5, +0xE6D7, 0,0xFBAF,0xE6D9,0xE6DB, 0,0xE6DC, 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, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,0x90D4, 0,0x8ECD,0xE6DD, + 0, 0, 0,0x8A71, 0,0xE6DE, 0, 0, +0x9196,0xE6DF, 0,0xE6E0,0x958B, 0,0xFBB0,0x8B4E, + 0, 0, 0, 0, 0, 0, 0, 0, + 0,0xE6E1, 0, 0, 0,0x92B4, 0, 0, + 0, 0,0x897A, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0,0xE6E2, 0, 0, 0, 0, 0, 0, + 0, 0, 0,0x8EEF, 0, 0, 0, 0, +0x9096, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,0x91AB, 0, 0, 0, 0, + 0, 0,0xE6E5, 0, 0, 0,0xE6E4, 0, + 0, 0,0xE6E3, 0, 0, 0, 0, 0, + 0, 0, 0,0xE6EB,0xE6E9, 0, 0,0xE6E6, + 0, 0, 0, 0, 0, 0,0xE6E8, 0, + 0, 0,0xE6E7,0xE6EA, 0,0x8B97, 0,0xE6EE, + 0,0x90D5, 0,0xE6EF, 0, 0, 0, 0, +0x8CD7, 0,0xE6EC,0xE6ED, 0, 0, 0,0x9848, + 0, 0, 0,0x92B5, 0,0x9148, 0, 0, + 0, 0, 0, 0,0xE6F0, 0, 0,0xE6F3, + 0, 0, 0, 0, 0, 0, 0, 0, +0xE6F1,0xE6F2,0x9778, 0, 0, 0, 0,0x93A5, +0xE6F6, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,0xE6F4,0xE6F5,0xE6F7, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,0xE748, 0, 0, 0, 0, 0, +0xE6FA, 0, 0, 0,0xE6FB,0xE6F9, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,0xE6F8, 0,0x92FB, 0, 0,0xE740, +0xE744,0xE741,0xE6FC, 0,0xE742, 0, 0, 0, +0xE743, 0, 0, 0, 0,0xE74A, 0, 0, + 0,0xE745, 0, 0, 0, 0, 0,0x90D6, +0xE747, 0, 0,0xE749,0xE746, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,0xE74C, 0,0x8F52, 0,0xE74B, 0, + 0, 0, 0, 0,0xE74D, 0, 0, 0, + 0,0xE74E, 0, 0,0xE751,0xE750, 0,0xE74F, + 0, 0,0xE753,0xE752, 0,0x96F4, 0, 0, + 0,0xE755, 0,0xE754,0xE756, 0, 0, 0, + 0,0xE757, 0, 0, 0, 0, 0, 0, + 0,0xE759, 0, 0, 0, 0, 0, 0, + 0, 0,0xE758,0x9067,0xE75A, 0, 0,0x8BEB, +0xE75B,0xE75D, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,0xE75E, 0, + 0, 0, 0, 0, 0,0xE75F,0xE75C, 0, +0xE760, 0,0x8ED4,0xE761,0x8B4F,0x8C52, 0,0xFBB2, + 0, 0,0x8CAC, 0, 0, 0, 0, 0, + 0, 0, 0,0xE762, 0, 0, 0,0x93EE, + 0, 0,0x935D,0xE763, 0, 0, 0, 0, + 0, 0, 0,0xE766, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, +0x8EB2, 0, 0,0xE765,0xE764,0x8C79,0xE767, 0, + 0, 0, 0,0x8A72, 0,0xE769, 0, 0, + 0,0x8DDA,0xE768, 0,0xE771, 0, 0, 0, + 0, 0,0xE76B,0xE76D,0x95E3,0xE76A, 0, 0, + 0,0xE76C, 0,0xE770,0xE76E,0x8B50, 0,0xE76F, + 0, 0, 0, 0, 0, 0,0xE772, 0, + 0,0x9479,0x97D6, 0, 0, 0, 0,0x8F53, + 0, 0, 0,0xE773, 0, 0, 0, 0, +0x9741,0xE775, 0,0xE774, 0, 0,0xE778,0x9760, + 0, 0,0xE777, 0,0x8A8D,0xE776,0xE77B, 0, + 0,0xE77A, 0, 0,0xE779,0x9351,0xE77C, 0, + 0, 0, 0, 0, 0, 0, 0,0xE77D, + 0, 0, 0, 0,0xE77E, 0, 0,0x8D8C, + 0,0x8C44,0xE780,0xE781,0xE782, 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,0x9068,0xE783, 0,0x8EAB,0xE784, + 0, 0, 0,0xE785, 0, 0, 0,0x999F, +0x999E, 0, 0, 0, 0,0xE786,0xE390,0xE787, +0x9243,0x904A,0x945F, 0, 0, 0, 0,0xE788, + 0, 0,0x95D3,0x92D2,0x8D9E, 0, 0,0x9248, + 0, 0,0x8949, 0,0x9698,0x9076, 0, 0, + 0, 0, 0, 0, 0, 0,0x8C7D, 0, + 0,0x8BDF, 0, 0,0x95D4, 0, 0, 0, + 0, 0,0xE789, 0, 0, 0, 0, 0, + 0, 0,0xE78B, 0, 0,0xE78A,0x89DE, 0, + 0,0x93F4,0xE78C,0x9497, 0,0x9352, 0,0xE78D, +0x8F71, 0, 0, 0,0xE78F, 0, 0,0x96C0, +0xE79E,0xE791,0xE792, 0, 0,0x92C7, 0, 0, +0x91DE,0x9197, 0,0x93A6, 0,0xE790,0x8B74, 0, + 0, 0, 0,0xE799, 0,0xE796,0xE7A3,0x93A7, +0x9280,0xE793, 0,0x92FC,0x9372,0xE794,0xE798,0x9080, + 0,0x9487,0x92CA, 0, 0,0x90C0,0xE797,0x91AC, +0x91A2,0xE795,0x88A7,0x9841, 0, 0, 0,0xE79A, + 0, 0, 0, 0, 0, 0,0x91DF, 0, + 0,0x8F54,0x9069, 0, 0,0xE79C,0xE79B, 0, +0x88ED,0xE79D, 0, 0,0x954E, 0,0xE7A5, 0, + 0,0x93D9,0x908B, 0, 0,0x9278, 0,0x8BF6, + 0,0xE7A4,0x9756,0x895E, 0,0x95D5,0x89DF,0xE79F, +0xE7A0,0xE7A1,0xE7A2,0x93B9,0x9242,0x88E1,0xE7A6, 0, +0xE7A7,0xEAA1, 0, 0,0x91BB, 0,0xE7A8, 0, +0x8993,0x916B, 0,0x8CAD, 0,0x9779, 0,0xFBB5, +0xE7A9,0x934B, 0, 0, 0,0x9198,0x8ED5,0xE7AA, + 0, 0,0xE7AD, 0, 0,0x8F85,0xE7AB,0x914A, +0x9149, 0,0x88E2, 0,0x97C9,0xE7AF, 0,0x94F0, +0xE7B1,0xE7B0,0xE7AE,0xE284,0x8AD2, 0, 0,0xE78E, + 0,0xE7B3,0xE7B2, 0, 0, 0, 0,0xE7B4, + 0,0x9757, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,0x93DF, 0, 0,0x964D, 0, +0xE7B5, 0,0x8ED7, 0, 0, 0, 0,0xE7B6, + 0,0xE7B7, 0, 0, 0,0xE7B8, 0, 0, +0x9340, 0, 0, 0, 0, 0, 0, 0, + 0,0x88E8, 0, 0, 0, 0, 0, 0, + 0, 0,0x8D78, 0, 0, 0,0x9859, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,0xE7BC, 0, 0,0xFBB6, 0, + 0,0x8C53,0xE7B9, 0,0xE7BA, 0, 0, 0, +0x9594, 0, 0, 0, 0,0x8A73, 0, 0, + 0, 0, 0, 0, 0,0x9758, 0,0x8BBD, + 0, 0, 0, 0, 0,0x9373, 0, 0, + 0, 0,0xE7BD, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,0xE7BE, 0, 0,0xFBB8, 0, 0, + 0,0xE7BF, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0,0xFBB9, + 0, 0, 0, 0, 0,0x9341, 0, 0, +0xE7C1, 0,0xE7C0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0,0x93D1,0xE7C2,0x8F55,0x8EDE,0x947A,0x9291, 0, + 0, 0,0x8EF0, 0,0x908C, 0,0xE7C3, 0, +0xE7C4, 0, 0, 0, 0, 0, 0, 0, + 0, 0,0x907C,0xE7C5, 0,0xE7C6, 0, 0, + 0,0xE7C7,0x978F, 0,0x8F56, 0, 0, 0, + 0, 0,0xE7C9,0xE7C8, 0,0x8D79, 0,0x8D93, +0x8E5F, 0, 0, 0, 0, 0, 0, 0, + 0, 0,0xE7CC, 0, 0, 0, 0,0x8F86, + 0,0xE7CB, 0,0xE7CA, 0,0x91E7, 0, 0, +0x8CED, 0,0x90C1, 0, 0, 0, 0,0x94AE, + 0, 0, 0, 0,0x8F58, 0, 0, 0, + 0, 0,0xE7CD, 0,0x8FDD, 0, 0, 0, + 0, 0,0xE7D0,0xE7CE, 0, 0, 0,0xE7CF, + 0, 0, 0, 0,0xE7D2,0xE7D1, 0, 0, +0x8FF8, 0,0xE7D3, 0, 0, 0, 0, 0, +0xE7D4,0xE7D5, 0, 0, 0, 0,0x94CE,0x8DD1, +0x8EDF,0xE7D6, 0,0xE7D7,0x97A2,0x8F64,0x96EC,0x97CA, +0xE7D8,0x8BE0, 0, 0, 0, 0,0xE7D9,0xFBBB, +0x9342, 0,0xFBBA,0xE7DC,0x8A98,0x906A,0xFBBC,0xE7DA, + 0,0xE7DB, 0,0x92DE,0xFBBF,0xFBC0,0x9674,0x8BFA, + 0, 0, 0, 0, 0,0xFBBD,0xFBBE, 0, + 0, 0, 0, 0, 0,0xE7DE,0xE7DF, 0, + 0, 0, 0, 0,0xE7DD, 0, 0,0xE7E1, + 0, 0, 0, 0, 0, 0,0xFBC1, 0, + 0, 0,0xFBC3, 0, 0,0x93DD,0x8A62, 0, +0xFBC2,0xE7E5, 0, 0,0xE7E2,0xE7E4, 0, 0, + 0, 0, 0, 0, 0, 0,0xE7E0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0,0xE86E, 0, 0,0xE7E3, 0, 0, 0, + 0, 0, 0, 0,0x97E9, 0, 0,0x8CD8, + 0,0xFBCA,0xFBC4, 0,0xFBC6, 0, 0,0xE7ED, +0xFBC5, 0, 0, 0,0x9353,0xE7E8, 0, 0, +0xE7EB,0xE7E9, 0,0xE7EE, 0, 0,0xFBC7, 0, +0xE7EF,0xFBC9, 0, 0, 0, 0, 0,0xE7E7, + 0,0xFBC8,0xE7F4,0x8994, 0, 0,0xE7E6, 0, + 0, 0,0x94AB, 0,0xE7EA, 0,0x8FDE,0xFBCB, + 0, 0, 0, 0, 0, 0, 0, 0, + 0,0x8D7A, 0, 0, 0, 0, 0,0xFBCD, +0xFBCE, 0, 0, 0, 0, 0,0x9667, 0, +0x8BE2, 0, 0,0x8F65, 0,0x93BA, 0, 0, +0xFA5F, 0, 0, 0, 0, 0, 0, 0, + 0,0x914C, 0,0xE7F2, 0,0xE7EC,0xE7F1, 0, +0x96C1, 0,0x92B6,0xE7F3,0xE7F0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0,0xFBCC, + 0, 0, 0, 0, 0,0x914B, 0, 0, + 0, 0, 0, 0, 0, 0, 0,0xE7F7, + 0,0xE7F6, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0,0xE7F5, +0xFBD2, 0,0x964E,0xFBD6, 0,0xFBD4, 0,0xFBD0, + 0,0xFBD1, 0, 0, 0, 0, 0, 0, +0xFBD5, 0, 0, 0,0x8F9B, 0, 0,0xFBCF, + 0,0xE7F8,0x95DD, 0, 0,0x8973, 0, 0, + 0, 0,0x9565,0x9292, 0, 0, 0, 0, +0x8B98,0xFA65,0xE7FA,0xFBD9,0x8D7C, 0, 0,0xFBDC, + 0, 0,0xFBDE, 0, 0, 0,0x8E4B, 0, + 0, 0, 0, 0, 0, 0, 0,0xE7F9, +0x908D, 0, 0, 0, 0, 0, 0, 0, +0x908E,0xE840,0xE842, 0, 0,0xFBDD,0xFBDB, 0, +0x8FF9,0xFBD8,0xE841,0xE843, 0,0xFBD7,0x8BD1, 0, +0x9564, 0, 0,0x8EE0,0x9842, 0,0xE7FC,0x8DF6, + 0, 0,0x985E, 0, 0,0xE845, 0, 0, + 0, 0,0xE844,0xE846, 0, 0, 0, 0, + 0, 0, 0, 0,0xE7FB, 0, 0, 0, +0xFA5E, 0, 0,0x93E7, 0,0x9374, 0, 0, + 0, 0, 0, 0,0x92D5, 0,0xE84B,0xFBE0, + 0, 0, 0,0x9262,0xE847, 0, 0, 0, +0xE848, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,0x8C4C, 0,0xE84A, 0, +0xFBDF, 0, 0, 0, 0,0x8CAE, 0, 0, + 0, 0, 0, 0,0xE849, 0,0x8FDF, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,0x8A99, 0, 0, 0, + 0, 0, 0, 0,0xE84F, 0,0x8DBD,0x9199, + 0, 0,0x92C8, 0, 0, 0, 0, 0, + 0, 0, 0, 0,0xFBE1, 0, 0,0x8A5A, + 0, 0, 0, 0,0xE84D,0xE84E,0x92C1, 0, +0xE84C, 0, 0, 0, 0, 0, 0, 0, + 0,0xE850, 0, 0, 0, 0, 0, 0, + 0, 0, 0,0xE856, 0, 0,0xFBE2, 0, +0xE859, 0, 0, 0, 0, 0, 0, 0, +0xE858,0x934C, 0, 0, 0, 0,0xE851,0xE852, +0xE855, 0, 0, 0, 0,0xE857,0xFBE3, 0, + 0,0x8BBE, 0, 0,0xE85A,0xE854, 0, 0, +0xE853, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, +0xFBE4, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,0xE85E, 0, 0, 0,0xE85F, + 0, 0, 0, 0, 0, 0, 0, 0, +0xE860, 0, 0,0xE85D,0xE85C, 0, 0, 0, +0x8FE0,0x93A8,0xE85B, 0, 0, 0, 0, 0, + 0,0xE864, 0, 0, 0, 0, 0, 0, + 0, 0, 0,0xE862, 0, 0, 0, 0, + 0,0xFBE5, 0, 0, 0,0xE863,0xE861, 0, +0x91F6, 0,0xE865, 0, 0, 0, 0, 0, + 0,0xE866, 0, 0,0xE868,0xFBE6, 0, 0, +0xFBE7, 0, 0, 0, 0, 0, 0, 0, + 0,0x8AD3,0xE867,0x96F8, 0, 0, 0, 0, + 0, 0,0xE873,0xE869, 0, 0,0xE86C, 0, +0xE86A, 0,0xE86B, 0, 0, 0, 0, 0, + 0, 0,0xE86D, 0, 0, 0, 0, 0, +0xE86F, 0, 0, 0, 0,0xE870, 0,0xE871, + 0, 0, 0, 0,0xE874,0xE872,0xE875,0xE877, + 0,0xE876}; + +/* page 7 0x9577-0x9FA0 */ +static uint16 tab_uni_cp9327[]={ +0x92B7, 0, 0, 0, 0, 0, 0, 0, + 0,0x96E5, 0,0xE878,0x914D, 0, 0, 0, +0xE879, 0,0x95C2,0xE87A,0x8A4A, 0, 0, 0, +0x895B, 0,0x8AD5,0xFBE8,0x8AD4,0xE87B, 0,0xE87C, + 0,0xE87D,0xE87E, 0, 0, 0, 0, 0, + 0,0xE880, 0,0x8AD6,0x8A74,0x8D7D,0x94B4, 0, +0xE882,0xE881, 0, 0, 0, 0,0xE883, 0, + 0, 0, 0,0x897B, 0, 0, 0, 0, + 0, 0,0xE886, 0,0xE885,0xE884, 0,0xE887, + 0, 0, 0, 0,0xE88A, 0, 0, 0, +0x88C5, 0, 0,0xE888, 0,0xE88C,0xE88B, 0, + 0, 0, 0, 0, 0,0xE88E,0xE88D,0xE88F, + 0,0x93AC, 0, 0, 0,0xE890, 0, 0, + 0, 0,0xE891,0xE893, 0, 0,0xE892, 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,0x958C, 0, 0, + 0, 0,0xE894, 0, 0, 0, 0, 0, + 0,0xE895, 0,0x8DE3, 0, 0, 0,0xE896, +0xE897, 0, 0,0x9668, 0, 0, 0, 0, + 0, 0, 0, 0,0x916A, 0, 0, 0, +0x88A2,0x91C9, 0,0xE898, 0,0x958D, 0, 0, + 0, 0, 0, 0,0xE89B,0xE899,0x8D7E, 0, +0xE89A,0x8CC0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,0x95C3,0xE89D,0xE89F,0xE89E, +0xE8A0, 0, 0,0x8940,0x9077,0x8F9C,0x8AD7,0xE8A1, + 0, 0, 0,0x9486, 0,0xE8A3, 0, 0, + 0,0x8941, 0,0xE8A2,0x92C2, 0,0x97CB,0x93A9, +0xE89C,0x97A4, 0,0x8CAF, 0, 0,0x977A, 0, + 0, 0, 0, 0, 0, 0,0x8BF7,0x97B2, + 0,0x8C47, 0,0x91E0,0xE440, 0,0xE8A4,0x8A4B, +0x908F, 0, 0, 0, 0,0x8A75,0xE8A6, 0, +0xE8A7,0xE8A5,0x8C84, 0,0x8DDB,0x8FE1,0xFBEB, 0, + 0,0x8942, 0, 0,0x97D7, 0, 0, 0, +0xE8A9,0xE7AC, 0,0xE8A8, 0, 0, 0, 0, +0xFBEC,0xE8AC,0xE8AA,0xE8AB, 0,0xE8AD, 0,0xE8AE, +0x97EA,0xE8AF,0xE8B0, 0,0x90C7,0x94B9, 0, 0, + 0,0x909D,0x8AE5, 0, 0,0x9759,0x89EB,0x8F57, +0x8CD9, 0,0xE8B3, 0,0xE8B2,0x8E93,0xE8B4,0xE8B1, + 0, 0,0x8E47, 0, 0, 0,0xE8B8,0xE5AB, + 0, 0,0x99D4, 0,0x9097,0xE8B6, 0, 0, + 0, 0, 0,0x97A3,0x93EF, 0, 0, 0, + 0,0x894A, 0,0x90E1,0x8EB4, 0, 0, 0, + 0,0x95B5, 0,0x895F, 0, 0, 0,0x97EB, +0x978B, 0,0xE8B9, 0,0x9364, 0, 0, 0, + 0,0x8EF9, 0, 0, 0,0xE8BA, 0,0xE8BB, +0x906B,0xE8BC, 0,0x97EC, 0, 0,0xE8B7,0xE8BE, +0xE8C0, 0,0xE8BF, 0,0xE8BD, 0, 0,0xE8C1, + 0, 0,0xE8C2, 0, 0,0x919A, 0,0x89E0, + 0, 0, 0, 0, 0,0xE8C3, 0, 0, +0x96B6, 0, 0,0xE8C4, 0, 0, 0, 0, + 0,0xE8C5, 0,0x9849,0xFBED, 0, 0, 0, + 0,0x9E50,0xE8C6, 0,0xFBEE, 0,0xE8C7,0xE8C8, + 0, 0, 0,0xE8CC,0xFBEF,0xE8C9, 0,0xE8CA, + 0,0xE8CB,0xE8CD, 0, 0, 0,0xFBF0, 0, +0xFBF1, 0,0xFBF2,0x90C2, 0, 0,0xFBF3,0x96F5, + 0, 0,0x90C3, 0, 0,0xE8CE, 0,0x94F1, + 0,0xE8CF,0xEA72,0x96CA, 0,0xE8D0, 0,0xE8D1, + 0,0xE8D2,0x8A76, 0,0xE8D4, 0,0x9078, 0, + 0, 0,0xE8D5, 0, 0,0x8C43, 0, 0, + 0, 0,0xE8D6,0xE8DA, 0,0xE8D8, 0, 0, + 0, 0,0xE8D9, 0, 0,0x8A93,0xE8D7,0xE8DB, + 0, 0, 0, 0,0xE8DC, 0,0x88C6, 0, +0xE8DD,0xE8DE, 0, 0, 0, 0, 0, 0, + 0,0x8FE2, 0, 0, 0,0xE8DF, 0, 0, + 0,0x8B66, 0, 0,0xE8E2, 0, 0,0xE8E1, + 0,0xE8E0, 0, 0,0xE691, 0,0x95DA, 0, + 0, 0, 0, 0,0xE8E3,0xE8E4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,0xE8E5, 0, 0,0xE8E6, + 0,0xE8E7, 0, 0,0xE8E8, 0, 0, 0, + 0, 0, 0, 0,0x8AD8, 0, 0, 0, + 0, 0, 0, 0, 0,0xE8E9, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,0xE8EA,0x9442, + 0, 0, 0,0xE8EC,0x89B9, 0,0xE8EF,0xE8EE, + 0, 0, 0, 0,0x8943, 0, 0, 0, +0x8BBF, 0,0x95C5,0x92B8,0x8DA0, 0,0x8D80,0x8F87, + 0,0x907B, 0, 0, 0,0xE8F1, 0, 0, +0xE8F0,0x9761,0x8AE6,0x94D0,0x93DA, 0, 0, 0, +0x909C,0x97CC, 0,0x8C7A, 0, 0, 0, 0, + 0, 0,0xE8F4, 0, 0,0xE8F3, 0, 0, + 0, 0, 0, 0, 0,0x966A,0x93AA, 0, + 0, 0, 0, 0, 0,0x896F, 0, 0, +0xE8F5,0xE8F2, 0, 0,0x9570,0x978A,0xE8F6, 0, + 0, 0, 0, 0, 0, 0, 0,0xE8F7, + 0, 0, 0, 0,0xE8F9,0x91E8,0x8A7A,0x8A7B, +0xE8F8, 0, 0, 0, 0,0x8AE7,0x8CB0, 0, +0xFBF4,0x8AE8, 0, 0,0x935E, 0, 0,0x97DE, + 0, 0, 0, 0, 0, 0,0xFBF5, 0, +0x8CDA, 0, 0, 0,0xE8FA, 0, 0, 0, +0xE8FB,0xE8FC,0xE940, 0,0xE942,0xE941, 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,0x9597, 0,0xE943, 0, 0, 0, 0, +0xE944, 0,0xE945, 0, 0, 0, 0,0xE946, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,0xE948,0xE947, 0,0xE949, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,0x94F2,0xE3CA, 0, 0, +0x9048, 0, 0,0x8B51, 0, 0, 0, 0, + 0, 0,0xE94A, 0,0xE94B, 0,0x99AA,0x9F5A, +0x94D1, 0, 0,0x88F9, 0,0x88B9, 0, 0, + 0, 0, 0, 0, 0,0x8E94,0x964F,0x8FFC, + 0, 0, 0, 0,0xE94C, 0,0x96DD, 0, + 0, 0,0xE94D,0x977B, 0,0x8961, 0, 0, + 0,0x8E60, 0,0xE94E,0x89EC,0xE94F, 0, 0, + 0,0xE950, 0, 0, 0, 0,0xE952,0xE953, + 0,0xE955,0xE951, 0, 0,0xE954, 0, 0, +0xFBF8,0x8AD9, 0, 0, 0,0xE956, 0,0xE957, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,0xE958,0xE959, + 0, 0, 0,0xE95A, 0, 0,0xE95C, 0, + 0, 0,0xE95B, 0,0xE95E,0xE961, 0, 0, + 0,0xE95D,0xE95F,0xE960, 0, 0,0xE962, 0, +0x8BC0, 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, 0, 0,0x8EF1, +0xE963,0xE964,0x8D81, 0, 0, 0, 0,0xFBFA, + 0, 0, 0, 0, 0, 0,0xE965, 0, + 0,0x8A5D, 0, 0, 0,0x946E,0xE966,0xE967, + 0, 0, 0, 0,0x9279,0x93E9, 0, 0, + 0, 0, 0, 0, 0,0xE968, 0, 0, + 0, 0,0x949D, 0, 0,0x91CA,0x8977,0x8BEC, + 0,0x8BED, 0, 0, 0, 0, 0, 0, + 0,0x9293,0xE96D,0x8BEE, 0, 0,0x89ED, 0, + 0,0xE96C, 0, 0,0xE96A, 0,0xE96B, 0, +0xE969, 0, 0,0xE977, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,0xE96E,0xE96F, + 0, 0,0xE970,0xE971, 0, 0, 0, 0, + 0,0xE973, 0, 0,0xE972, 0, 0, 0, +0x8F78, 0,0xE974, 0, 0, 0,0xE976, 0, + 0, 0, 0, 0, 0, 0, 0,0x8B52, +0xE975, 0, 0,0x919B,0x8CB1, 0, 0, 0, + 0, 0,0xE978, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0,0x91CB, 0, 0,0xE979, 0, 0, 0, + 0,0x93AB, 0, 0, 0, 0, 0, 0, +0xE97A, 0, 0, 0, 0, 0, 0,0xE980, + 0,0xE97D, 0,0xE97C,0xE97E, 0,0xE97B, 0, + 0, 0, 0, 0, 0, 0,0xE982,0xFBFB, + 0, 0, 0, 0, 0, 0,0xE981, 0, +0xE984, 0, 0,0x8BC1,0xE983, 0, 0, 0, +0xE985, 0, 0,0xE986, 0,0xE988,0xE987, 0, + 0, 0,0xE989,0xE98B,0xE98A, 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,0x8D9C, 0, 0, 0, 0,0xE98C, 0, + 0,0xE98D, 0, 0, 0, 0, 0, 0, + 0,0x8A5B, 0, 0, 0,0xE98E, 0, 0, + 0,0xE98F, 0, 0, 0,0x9091, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, +0xE990, 0,0xE991, 0,0xE992,0xE993, 0, 0, + 0,0x8D82,0xFBFC, 0, 0,0xFC40, 0,0xE994, +0xE995, 0, 0,0xE996,0xE997, 0, 0,0xE998, + 0, 0, 0,0x94AF,0xE99A, 0,0x9545,0xE99B, +0xE999, 0,0xE99D, 0, 0,0xE99C, 0, 0, +0xE99E, 0, 0, 0,0xE99F, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0,0xE9A0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0,0xE9A1, 0,0xE9A2, 0, 0, 0, 0, +0xE9A3, 0, 0,0xE9A4,0xE9A5, 0,0xE9A6, 0, +0xE9A7,0xE9A8,0xE9A9,0xE9AA, 0, 0, 0,0xE9AB, +0xE9AC, 0,0x9F54,0xE9AD, 0, 0, 0, 0, + 0, 0, 0, 0,0xE2F6,0x8B53, 0, 0, + 0, 0,0x8A40,0x8DB0,0xE9AF,0xE9AE,0x96A3, 0, + 0, 0, 0, 0, 0, 0,0xE9B1,0xE9B2, +0xE9B0, 0,0xE9B3, 0, 0,0x9682, 0, 0, + 0,0xE9B4, 0,0x8B9B, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, +0x9844, 0, 0,0xFC42, 0,0xE9B5,0xFC41, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,0xE9B7, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0,0x88BC, +0xFC43, 0,0xE9B8,0x95A9,0xE9B6, 0, 0,0xE9B9, +0xE9BA, 0, 0, 0, 0, 0, 0, 0, +0xE9BB,0xE9BC, 0, 0, 0, 0, 0, 0, + 0,0xE9BD, 0,0x968E,0x8E4C, 0,0x8DF8,0x914E, + 0, 0,0xFC44, 0, 0,0xE9BE, 0, 0, + 0, 0,0xE9C1, 0,0xFC45, 0, 0, 0, + 0,0xE9BF, 0, 0, 0, 0, 0,0xE9C2, + 0, 0,0x8CEF,0xE9C0, 0, 0, 0, 0, +0xE9C3, 0,0xE9C4,0xE9C5, 0,0xE9C9, 0,0x8E49, + 0, 0, 0, 0,0x91E2, 0, 0, 0, + 0, 0,0xE9CA,0xE9C7,0xE9C6,0xE9C8, 0, 0, + 0,0x8C7E, 0, 0, 0, 0, 0, 0, + 0,0xE9CE,0xE9CD,0xE9CC, 0, 0,0x88B1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0,0xFC46, 0, 0, 0,0xE9D8, 0,0xE9D4, + 0,0xE9D5,0xE9D1,0xE9D7, 0,0xE9D3,0x8A82, 0, + 0,0x986B, 0,0xE9D6,0xE9D2,0xE9D0,0xE9CF, 0, + 0, 0, 0, 0,0xE9DA, 0, 0, 0, + 0, 0,0xE9DD, 0, 0,0xE9DC,0xE9DB, 0, + 0, 0, 0, 0, 0, 0,0x9568,0xE9D9, +0x88F1,0xE9DE, 0,0xE9E0, 0, 0, 0, 0, + 0, 0,0x8A8F,0xE9CB,0x8956, 0, 0,0xE9E2, + 0, 0, 0, 0, 0, 0, 0,0xE9E1, +0xE9DF,0x924C, 0, 0, 0, 0, 0, 0, + 0, 0, 0,0x9690, 0, 0, 0, 0, +0x97D8, 0, 0,0xE9E3, 0, 0, 0, 0, + 0,0xE9E4, 0, 0, 0, 0, 0, 0, +0xE9E5, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0,0xE9E6, + 0,0xE9E7, 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, 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,0x92B9, 0, +0xE9E8, 0,0x94B5, 0,0xE9ED,0xE9E9, 0, 0, + 0,0xE9EA, 0, 0,0x9650,0x96C2, 0,0x93CE, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,0xE9EE, 0, 0,0xE9EF, +0x93BC,0xE9EC,0xE9EB, 0, 0, 0, 0,0x89A8, + 0, 0, 0,0xE9F7, 0, 0,0xE9F6, 0, + 0, 0, 0, 0,0x8995, 0, 0, 0, +0xE9F4, 0, 0, 0,0xE9F3, 0, 0,0xE9F1, + 0,0x8A9B, 0,0xE9F0,0x8EB0,0x89A7, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,0x8D83, 0, 0,0xE9FA, +0xE9F9, 0,0xE9F8, 0, 0,0xE9F5, 0,0xE9FB, + 0,0xE9FC, 0, 0, 0, 0, 0, 0, + 0,0xEA44,0xEA43, 0, 0, 0, 0, 0, + 0, 0,0xEA45, 0, 0,0x894C,0xEA40,0xEA41, + 0,0x8D94,0x96B7, 0, 0,0xEA42, 0, 0, + 0, 0, 0, 0,0xFC48,0x9651, 0, 0, +0xEA4A,0xFC47, 0,0xEA46, 0, 0, 0, 0, + 0, 0, 0,0xEA4B, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, +0xEA48, 0,0xEA47, 0, 0, 0, 0, 0, +0x8C7B, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,0xEA4C, 0, 0, 0, 0, + 0, 0, 0, 0, 0,0xEA4D, 0, 0, + 0, 0,0xEA4E, 0,0xEA49, 0, 0, 0, +0xE9F2, 0, 0,0xEA4F, 0,0x92DF, 0, 0, + 0,0xEA53, 0,0xEA54,0xEA52, 0, 0, 0, + 0, 0,0xEA51,0xEA57, 0,0xEA50, 0,0xEA55, + 0, 0, 0, 0, 0, 0, 0, 0, +0xEA56, 0, 0, 0,0xEA59, 0, 0, 0, + 0, 0,0xEA58, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0,0xEA5B, + 0, 0, 0, 0, 0, 0,0xEA5C, 0, +0xEA5D, 0, 0,0x9868, 0, 0, 0, 0, + 0,0xEA5A,0x91E9,0x8DEB, 0, 0,0xEA5E, 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,0xFC4A,0xEA5F,0xEA60, 0, 0,0xEA61, + 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, 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,0xEA62, 0, + 0,0x8CB2,0xEA63, 0, 0, 0,0xEA64, 0, +0x8EAD, 0,0xEA65, 0, 0, 0, 0, 0, + 0,0xEA66, 0, 0,0xEA67,0xEA68, 0, 0, + 0, 0,0xEA6B,0xEA69,0x985B, 0,0xEA6A, 0, +0x97ED, 0, 0, 0, 0, 0,0xEA6C, 0, +0x97D9, 0, 0, 0, 0, 0,0xEA6D,0x949E, + 0, 0,0xEA6E,0xEA70, 0, 0,0xEA71, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0,0xEA6F,0x8D8D,0x96CB,0x9683,0x9BF5, 0,0x9F80, +0x969B, 0, 0, 0, 0,0x89A9, 0, 0, + 0, 0, 0, 0, 0,0xEA73,0x8B6F,0xEA74, +0xEA75,0xEA76,0xFC4B,0x8D95, 0,0xEA77, 0, 0, + 0,0xE0D2,0x96D9, 0,0x91E1,0xEA78,0xEA7A,0xEA79, + 0,0xEA7B, 0, 0, 0, 0,0xEA7C, 0, + 0,0xEA7D, 0, 0, 0, 0, 0, 0, +0xEA7E, 0, 0, 0, 0,0xEA80, 0,0xEA81, +0xEA82, 0,0xEA83, 0,0xEA84,0xEA85,0xEA86, 0, + 0, 0, 0, 0, 0, 0, 0, 0, +0xEA87,0xEA88, 0, 0, 0, 0, 0,0x9343, + 0, 0, 0, 0,0x8CDB, 0,0xEA8A, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0,0x916C,0xEA8B, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,0xEA8C, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,0x9540, 0, 0,0xEA8D, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,0xEA8E,0xE256, 0, 0,0xE6D8, +0xE8EB, 0, 0,0xEA8F, 0,0xEA90, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, +0xEA92,0xEA93,0xEA94,0x97EE,0xEA91, 0, 0,0xEA95, +0xEA96, 0, 0,0xEA98, 0,0xEA97, 0, 0, + 0, 0, 0,0xEA9A, 0, 0, 0,0xEA9B, +0xEA99, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,0x97B4, 0, + 0, 0, 0, 0, 0, 0,0xEA9C, 0, + 0, 0, 0, 0, 0,0xEA9D,0xE273, 0, + 0,0xEA9E}; + +/* page 8 0xE000-0xE757 - User defined characters */ +static uint16 tab_uni_cp9328[]={ +0xF040,0xF041,0xF042,0xF043,0xF044,0xF045,0xF046,0xF047, +0xF048,0xF049,0xF04A,0xF04B,0xF04C,0xF04D,0xF04E,0xF04F, +0xF050,0xF051,0xF052,0xF053,0xF054,0xF055,0xF056,0xF057, +0xF058,0xF059,0xF05A,0xF05B,0xF05C,0xF05D,0xF05E,0xF05F, +0xF060,0xF061,0xF062,0xF063,0xF064,0xF065,0xF066,0xF067, +0xF068,0xF069,0xF06A,0xF06B,0xF06C,0xF06D,0xF06E,0xF06F, +0xF070,0xF071,0xF072,0xF073,0xF074,0xF075,0xF076,0xF077, +0xF078,0xF079,0xF07A,0xF07B,0xF07C,0xF07D,0xF07E,0xF080, +0xF081,0xF082,0xF083,0xF084,0xF085,0xF086,0xF087,0xF088, +0xF089,0xF08A,0xF08B,0xF08C,0xF08D,0xF08E,0xF08F,0xF090, +0xF091,0xF092,0xF093,0xF094,0xF095,0xF096,0xF097,0xF098, +0xF099,0xF09A,0xF09B,0xF09C,0xF09D,0xF09E,0xF09F,0xF0A0, +0xF0A1,0xF0A2,0xF0A3,0xF0A4,0xF0A5,0xF0A6,0xF0A7,0xF0A8, +0xF0A9,0xF0AA,0xF0AB,0xF0AC,0xF0AD,0xF0AE,0xF0AF,0xF0B0, +0xF0B1,0xF0B2,0xF0B3,0xF0B4,0xF0B5,0xF0B6,0xF0B7,0xF0B8, +0xF0B9,0xF0BA,0xF0BB,0xF0BC,0xF0BD,0xF0BE,0xF0BF,0xF0C0, +0xF0C1,0xF0C2,0xF0C3,0xF0C4,0xF0C5,0xF0C6,0xF0C7,0xF0C8, +0xF0C9,0xF0CA,0xF0CB,0xF0CC,0xF0CD,0xF0CE,0xF0CF,0xF0D0, +0xF0D1,0xF0D2,0xF0D3,0xF0D4,0xF0D5,0xF0D6,0xF0D7,0xF0D8, +0xF0D9,0xF0DA,0xF0DB,0xF0DC,0xF0DD,0xF0DE,0xF0DF,0xF0E0, +0xF0E1,0xF0E2,0xF0E3,0xF0E4,0xF0E5,0xF0E6,0xF0E7,0xF0E8, +0xF0E9,0xF0EA,0xF0EB,0xF0EC,0xF0ED,0xF0EE,0xF0EF,0xF0F0, +0xF0F1,0xF0F2,0xF0F3,0xF0F4,0xF0F5,0xF0F6,0xF0F7,0xF0F8, +0xF0F9,0xF0FA,0xF0FB,0xF0FC,0xF140,0xF141,0xF142,0xF143, +0xF144,0xF145,0xF146,0xF147,0xF148,0xF149,0xF14A,0xF14B, +0xF14C,0xF14D,0xF14E,0xF14F,0xF150,0xF151,0xF152,0xF153, +0xF154,0xF155,0xF156,0xF157,0xF158,0xF159,0xF15A,0xF15B, +0xF15C,0xF15D,0xF15E,0xF15F,0xF160,0xF161,0xF162,0xF163, +0xF164,0xF165,0xF166,0xF167,0xF168,0xF169,0xF16A,0xF16B, +0xF16C,0xF16D,0xF16E,0xF16F,0xF170,0xF171,0xF172,0xF173, +0xF174,0xF175,0xF176,0xF177,0xF178,0xF179,0xF17A,0xF17B, +0xF17C,0xF17D,0xF17E,0xF180,0xF181,0xF182,0xF183,0xF184, +0xF185,0xF186,0xF187,0xF188,0xF189,0xF18A,0xF18B,0xF18C, +0xF18D,0xF18E,0xF18F,0xF190,0xF191,0xF192,0xF193,0xF194, +0xF195,0xF196,0xF197,0xF198,0xF199,0xF19A,0xF19B,0xF19C, +0xF19D,0xF19E,0xF19F,0xF1A0,0xF1A1,0xF1A2,0xF1A3,0xF1A4, +0xF1A5,0xF1A6,0xF1A7,0xF1A8,0xF1A9,0xF1AA,0xF1AB,0xF1AC, +0xF1AD,0xF1AE,0xF1AF,0xF1B0,0xF1B1,0xF1B2,0xF1B3,0xF1B4, +0xF1B5,0xF1B6,0xF1B7,0xF1B8,0xF1B9,0xF1BA,0xF1BB,0xF1BC, +0xF1BD,0xF1BE,0xF1BF,0xF1C0,0xF1C1,0xF1C2,0xF1C3,0xF1C4, +0xF1C5,0xF1C6,0xF1C7,0xF1C8,0xF1C9,0xF1CA,0xF1CB,0xF1CC, +0xF1CD,0xF1CE,0xF1CF,0xF1D0,0xF1D1,0xF1D2,0xF1D3,0xF1D4, +0xF1D5,0xF1D6,0xF1D7,0xF1D8,0xF1D9,0xF1DA,0xF1DB,0xF1DC, +0xF1DD,0xF1DE,0xF1DF,0xF1E0,0xF1E1,0xF1E2,0xF1E3,0xF1E4, +0xF1E5,0xF1E6,0xF1E7,0xF1E8,0xF1E9,0xF1EA,0xF1EB,0xF1EC, +0xF1ED,0xF1EE,0xF1EF,0xF1F0,0xF1F1,0xF1F2,0xF1F3,0xF1F4, +0xF1F5,0xF1F6,0xF1F7,0xF1F8,0xF1F9,0xF1FA,0xF1FB,0xF1FC, +0xF240,0xF241,0xF242,0xF243,0xF244,0xF245,0xF246,0xF247, +0xF248,0xF249,0xF24A,0xF24B,0xF24C,0xF24D,0xF24E,0xF24F, +0xF250,0xF251,0xF252,0xF253,0xF254,0xF255,0xF256,0xF257, +0xF258,0xF259,0xF25A,0xF25B,0xF25C,0xF25D,0xF25E,0xF25F, +0xF260,0xF261,0xF262,0xF263,0xF264,0xF265,0xF266,0xF267, +0xF268,0xF269,0xF26A,0xF26B,0xF26C,0xF26D,0xF26E,0xF26F, +0xF270,0xF271,0xF272,0xF273,0xF274,0xF275,0xF276,0xF277, +0xF278,0xF279,0xF27A,0xF27B,0xF27C,0xF27D,0xF27E,0xF280, +0xF281,0xF282,0xF283,0xF284,0xF285,0xF286,0xF287,0xF288, +0xF289,0xF28A,0xF28B,0xF28C,0xF28D,0xF28E,0xF28F,0xF290, +0xF291,0xF292,0xF293,0xF294,0xF295,0xF296,0xF297,0xF298, +0xF299,0xF29A,0xF29B,0xF29C,0xF29D,0xF29E,0xF29F,0xF2A0, +0xF2A1,0xF2A2,0xF2A3,0xF2A4,0xF2A5,0xF2A6,0xF2A7,0xF2A8, +0xF2A9,0xF2AA,0xF2AB,0xF2AC,0xF2AD,0xF2AE,0xF2AF,0xF2B0, +0xF2B1,0xF2B2,0xF2B3,0xF2B4,0xF2B5,0xF2B6,0xF2B7,0xF2B8, +0xF2B9,0xF2BA,0xF2BB,0xF2BC,0xF2BD,0xF2BE,0xF2BF,0xF2C0, +0xF2C1,0xF2C2,0xF2C3,0xF2C4,0xF2C5,0xF2C6,0xF2C7,0xF2C8, +0xF2C9,0xF2CA,0xF2CB,0xF2CC,0xF2CD,0xF2CE,0xF2CF,0xF2D0, +0xF2D1,0xF2D2,0xF2D3,0xF2D4,0xF2D5,0xF2D6,0xF2D7,0xF2D8, +0xF2D9,0xF2DA,0xF2DB,0xF2DC,0xF2DD,0xF2DE,0xF2DF,0xF2E0, +0xF2E1,0xF2E2,0xF2E3,0xF2E4,0xF2E5,0xF2E6,0xF2E7,0xF2E8, +0xF2E9,0xF2EA,0xF2EB,0xF2EC,0xF2ED,0xF2EE,0xF2EF,0xF2F0, +0xF2F1,0xF2F2,0xF2F3,0xF2F4,0xF2F5,0xF2F6,0xF2F7,0xF2F8, +0xF2F9,0xF2FA,0xF2FB,0xF2FC,0xF340,0xF341,0xF342,0xF343, +0xF344,0xF345,0xF346,0xF347,0xF348,0xF349,0xF34A,0xF34B, +0xF34C,0xF34D,0xF34E,0xF34F,0xF350,0xF351,0xF352,0xF353, +0xF354,0xF355,0xF356,0xF357,0xF358,0xF359,0xF35A,0xF35B, +0xF35C,0xF35D,0xF35E,0xF35F,0xF360,0xF361,0xF362,0xF363, +0xF364,0xF365,0xF366,0xF367,0xF368,0xF369,0xF36A,0xF36B, +0xF36C,0xF36D,0xF36E,0xF36F,0xF370,0xF371,0xF372,0xF373, +0xF374,0xF375,0xF376,0xF377,0xF378,0xF379,0xF37A,0xF37B, +0xF37C,0xF37D,0xF37E,0xF380,0xF381,0xF382,0xF383,0xF384, +0xF385,0xF386,0xF387,0xF388,0xF389,0xF38A,0xF38B,0xF38C, +0xF38D,0xF38E,0xF38F,0xF390,0xF391,0xF392,0xF393,0xF394, +0xF395,0xF396,0xF397,0xF398,0xF399,0xF39A,0xF39B,0xF39C, +0xF39D,0xF39E,0xF39F,0xF3A0,0xF3A1,0xF3A2,0xF3A3,0xF3A4, +0xF3A5,0xF3A6,0xF3A7,0xF3A8,0xF3A9,0xF3AA,0xF3AB,0xF3AC, +0xF3AD,0xF3AE,0xF3AF,0xF3B0,0xF3B1,0xF3B2,0xF3B3,0xF3B4, +0xF3B5,0xF3B6,0xF3B7,0xF3B8,0xF3B9,0xF3BA,0xF3BB,0xF3BC, +0xF3BD,0xF3BE,0xF3BF,0xF3C0,0xF3C1,0xF3C2,0xF3C3,0xF3C4, +0xF3C5,0xF3C6,0xF3C7,0xF3C8,0xF3C9,0xF3CA,0xF3CB,0xF3CC, +0xF3CD,0xF3CE,0xF3CF,0xF3D0,0xF3D1,0xF3D2,0xF3D3,0xF3D4, +0xF3D5,0xF3D6,0xF3D7,0xF3D8,0xF3D9,0xF3DA,0xF3DB,0xF3DC, +0xF3DD,0xF3DE,0xF3DF,0xF3E0,0xF3E1,0xF3E2,0xF3E3,0xF3E4, +0xF3E5,0xF3E6,0xF3E7,0xF3E8,0xF3E9,0xF3EA,0xF3EB,0xF3EC, +0xF3ED,0xF3EE,0xF3EF,0xF3F0,0xF3F1,0xF3F2,0xF3F3,0xF3F4, +0xF3F5,0xF3F6,0xF3F7,0xF3F8,0xF3F9,0xF3FA,0xF3FB,0xF3FC, +0xF440,0xF441,0xF442,0xF443,0xF444,0xF445,0xF446,0xF447, +0xF448,0xF449,0xF44A,0xF44B,0xF44C,0xF44D,0xF44E,0xF44F, +0xF450,0xF451,0xF452,0xF453,0xF454,0xF455,0xF456,0xF457, +0xF458,0xF459,0xF45A,0xF45B,0xF45C,0xF45D,0xF45E,0xF45F, +0xF460,0xF461,0xF462,0xF463,0xF464,0xF465,0xF466,0xF467, +0xF468,0xF469,0xF46A,0xF46B,0xF46C,0xF46D,0xF46E,0xF46F, +0xF470,0xF471,0xF472,0xF473,0xF474,0xF475,0xF476,0xF477, +0xF478,0xF479,0xF47A,0xF47B,0xF47C,0xF47D,0xF47E,0xF480, +0xF481,0xF482,0xF483,0xF484,0xF485,0xF486,0xF487,0xF488, +0xF489,0xF48A,0xF48B,0xF48C,0xF48D,0xF48E,0xF48F,0xF490, +0xF491,0xF492,0xF493,0xF494,0xF495,0xF496,0xF497,0xF498, +0xF499,0xF49A,0xF49B,0xF49C,0xF49D,0xF49E,0xF49F,0xF4A0, +0xF4A1,0xF4A2,0xF4A3,0xF4A4,0xF4A5,0xF4A6,0xF4A7,0xF4A8, +0xF4A9,0xF4AA,0xF4AB,0xF4AC,0xF4AD,0xF4AE,0xF4AF,0xF4B0, +0xF4B1,0xF4B2,0xF4B3,0xF4B4,0xF4B5,0xF4B6,0xF4B7,0xF4B8, +0xF4B9,0xF4BA,0xF4BB,0xF4BC,0xF4BD,0xF4BE,0xF4BF,0xF4C0, +0xF4C1,0xF4C2,0xF4C3,0xF4C4,0xF4C5,0xF4C6,0xF4C7,0xF4C8, +0xF4C9,0xF4CA,0xF4CB,0xF4CC,0xF4CD,0xF4CE,0xF4CF,0xF4D0, +0xF4D1,0xF4D2,0xF4D3,0xF4D4,0xF4D5,0xF4D6,0xF4D7,0xF4D8, +0xF4D9,0xF4DA,0xF4DB,0xF4DC,0xF4DD,0xF4DE,0xF4DF,0xF4E0, +0xF4E1,0xF4E2,0xF4E3,0xF4E4,0xF4E5,0xF4E6,0xF4E7,0xF4E8, +0xF4E9,0xF4EA,0xF4EB,0xF4EC,0xF4ED,0xF4EE,0xF4EF,0xF4F0, +0xF4F1,0xF4F2,0xF4F3,0xF4F4,0xF4F5,0xF4F6,0xF4F7,0xF4F8, +0xF4F9,0xF4FA,0xF4FB,0xF4FC,0xF540,0xF541,0xF542,0xF543, +0xF544,0xF545,0xF546,0xF547,0xF548,0xF549,0xF54A,0xF54B, +0xF54C,0xF54D,0xF54E,0xF54F,0xF550,0xF551,0xF552,0xF553, +0xF554,0xF555,0xF556,0xF557,0xF558,0xF559,0xF55A,0xF55B, +0xF55C,0xF55D,0xF55E,0xF55F,0xF560,0xF561,0xF562,0xF563, +0xF564,0xF565,0xF566,0xF567,0xF568,0xF569,0xF56A,0xF56B, +0xF56C,0xF56D,0xF56E,0xF56F,0xF570,0xF571,0xF572,0xF573, +0xF574,0xF575,0xF576,0xF577,0xF578,0xF579,0xF57A,0xF57B, +0xF57C,0xF57D,0xF57E,0xF580,0xF581,0xF582,0xF583,0xF584, +0xF585,0xF586,0xF587,0xF588,0xF589,0xF58A,0xF58B,0xF58C, +0xF58D,0xF58E,0xF58F,0xF590,0xF591,0xF592,0xF593,0xF594, +0xF595,0xF596,0xF597,0xF598,0xF599,0xF59A,0xF59B,0xF59C, +0xF59D,0xF59E,0xF59F,0xF5A0,0xF5A1,0xF5A2,0xF5A3,0xF5A4, +0xF5A5,0xF5A6,0xF5A7,0xF5A8,0xF5A9,0xF5AA,0xF5AB,0xF5AC, +0xF5AD,0xF5AE,0xF5AF,0xF5B0,0xF5B1,0xF5B2,0xF5B3,0xF5B4, +0xF5B5,0xF5B6,0xF5B7,0xF5B8,0xF5B9,0xF5BA,0xF5BB,0xF5BC, +0xF5BD,0xF5BE,0xF5BF,0xF5C0,0xF5C1,0xF5C2,0xF5C3,0xF5C4, +0xF5C5,0xF5C6,0xF5C7,0xF5C8,0xF5C9,0xF5CA,0xF5CB,0xF5CC, +0xF5CD,0xF5CE,0xF5CF,0xF5D0,0xF5D1,0xF5D2,0xF5D3,0xF5D4, +0xF5D5,0xF5D6,0xF5D7,0xF5D8,0xF5D9,0xF5DA,0xF5DB,0xF5DC, +0xF5DD,0xF5DE,0xF5DF,0xF5E0,0xF5E1,0xF5E2,0xF5E3,0xF5E4, +0xF5E5,0xF5E6,0xF5E7,0xF5E8,0xF5E9,0xF5EA,0xF5EB,0xF5EC, +0xF5ED,0xF5EE,0xF5EF,0xF5F0,0xF5F1,0xF5F2,0xF5F3,0xF5F4, +0xF5F5,0xF5F6,0xF5F7,0xF5F8,0xF5F9,0xF5FA,0xF5FB,0xF5FC, +0xF640,0xF641,0xF642,0xF643,0xF644,0xF645,0xF646,0xF647, +0xF648,0xF649,0xF64A,0xF64B,0xF64C,0xF64D,0xF64E,0xF64F, +0xF650,0xF651,0xF652,0xF653,0xF654,0xF655,0xF656,0xF657, +0xF658,0xF659,0xF65A,0xF65B,0xF65C,0xF65D,0xF65E,0xF65F, +0xF660,0xF661,0xF662,0xF663,0xF664,0xF665,0xF666,0xF667, +0xF668,0xF669,0xF66A,0xF66B,0xF66C,0xF66D,0xF66E,0xF66F, +0xF670,0xF671,0xF672,0xF673,0xF674,0xF675,0xF676,0xF677, +0xF678,0xF679,0xF67A,0xF67B,0xF67C,0xF67D,0xF67E,0xF680, +0xF681,0xF682,0xF683,0xF684,0xF685,0xF686,0xF687,0xF688, +0xF689,0xF68A,0xF68B,0xF68C,0xF68D,0xF68E,0xF68F,0xF690, +0xF691,0xF692,0xF693,0xF694,0xF695,0xF696,0xF697,0xF698, +0xF699,0xF69A,0xF69B,0xF69C,0xF69D,0xF69E,0xF69F,0xF6A0, +0xF6A1,0xF6A2,0xF6A3,0xF6A4,0xF6A5,0xF6A6,0xF6A7,0xF6A8, +0xF6A9,0xF6AA,0xF6AB,0xF6AC,0xF6AD,0xF6AE,0xF6AF,0xF6B0, +0xF6B1,0xF6B2,0xF6B3,0xF6B4,0xF6B5,0xF6B6,0xF6B7,0xF6B8, +0xF6B9,0xF6BA,0xF6BB,0xF6BC,0xF6BD,0xF6BE,0xF6BF,0xF6C0, +0xF6C1,0xF6C2,0xF6C3,0xF6C4,0xF6C5,0xF6C6,0xF6C7,0xF6C8, +0xF6C9,0xF6CA,0xF6CB,0xF6CC,0xF6CD,0xF6CE,0xF6CF,0xF6D0, +0xF6D1,0xF6D2,0xF6D3,0xF6D4,0xF6D5,0xF6D6,0xF6D7,0xF6D8, +0xF6D9,0xF6DA,0xF6DB,0xF6DC,0xF6DD,0xF6DE,0xF6DF,0xF6E0, +0xF6E1,0xF6E2,0xF6E3,0xF6E4,0xF6E5,0xF6E6,0xF6E7,0xF6E8, +0xF6E9,0xF6EA,0xF6EB,0xF6EC,0xF6ED,0xF6EE,0xF6EF,0xF6F0, +0xF6F1,0xF6F2,0xF6F3,0xF6F4,0xF6F5,0xF6F6,0xF6F7,0xF6F8, +0xF6F9,0xF6FA,0xF6FB,0xF6FC,0xF740,0xF741,0xF742,0xF743, +0xF744,0xF745,0xF746,0xF747,0xF748,0xF749,0xF74A,0xF74B, +0xF74C,0xF74D,0xF74E,0xF74F,0xF750,0xF751,0xF752,0xF753, +0xF754,0xF755,0xF756,0xF757,0xF758,0xF759,0xF75A,0xF75B, +0xF75C,0xF75D,0xF75E,0xF75F,0xF760,0xF761,0xF762,0xF763, +0xF764,0xF765,0xF766,0xF767,0xF768,0xF769,0xF76A,0xF76B, +0xF76C,0xF76D,0xF76E,0xF76F,0xF770,0xF771,0xF772,0xF773, +0xF774,0xF775,0xF776,0xF777,0xF778,0xF779,0xF77A,0xF77B, +0xF77C,0xF77D,0xF77E,0xF780,0xF781,0xF782,0xF783,0xF784, +0xF785,0xF786,0xF787,0xF788,0xF789,0xF78A,0xF78B,0xF78C, +0xF78D,0xF78E,0xF78F,0xF790,0xF791,0xF792,0xF793,0xF794, +0xF795,0xF796,0xF797,0xF798,0xF799,0xF79A,0xF79B,0xF79C, +0xF79D,0xF79E,0xF79F,0xF7A0,0xF7A1,0xF7A2,0xF7A3,0xF7A4, +0xF7A5,0xF7A6,0xF7A7,0xF7A8,0xF7A9,0xF7AA,0xF7AB,0xF7AC, +0xF7AD,0xF7AE,0xF7AF,0xF7B0,0xF7B1,0xF7B2,0xF7B3,0xF7B4, +0xF7B5,0xF7B6,0xF7B7,0xF7B8,0xF7B9,0xF7BA,0xF7BB,0xF7BC, +0xF7BD,0xF7BE,0xF7BF,0xF7C0,0xF7C1,0xF7C2,0xF7C3,0xF7C4, +0xF7C5,0xF7C6,0xF7C7,0xF7C8,0xF7C9,0xF7CA,0xF7CB,0xF7CC, +0xF7CD,0xF7CE,0xF7CF,0xF7D0,0xF7D1,0xF7D2,0xF7D3,0xF7D4, +0xF7D5,0xF7D6,0xF7D7,0xF7D8,0xF7D9,0xF7DA,0xF7DB,0xF7DC, +0xF7DD,0xF7DE,0xF7DF,0xF7E0,0xF7E1,0xF7E2,0xF7E3,0xF7E4, +0xF7E5,0xF7E6,0xF7E7,0xF7E8,0xF7E9,0xF7EA,0xF7EB,0xF7EC, +0xF7ED,0xF7EE,0xF7EF,0xF7F0,0xF7F1,0xF7F2,0xF7F3,0xF7F4, +0xF7F5,0xF7F6,0xF7F7,0xF7F8,0xF7F9,0xF7FA,0xF7FB,0xF7FC, +0xF840,0xF841,0xF842,0xF843,0xF844,0xF845,0xF846,0xF847, +0xF848,0xF849,0xF84A,0xF84B,0xF84C,0xF84D,0xF84E,0xF84F, +0xF850,0xF851,0xF852,0xF853,0xF854,0xF855,0xF856,0xF857, +0xF858,0xF859,0xF85A,0xF85B,0xF85C,0xF85D,0xF85E,0xF85F, +0xF860,0xF861,0xF862,0xF863,0xF864,0xF865,0xF866,0xF867, +0xF868,0xF869,0xF86A,0xF86B,0xF86C,0xF86D,0xF86E,0xF86F, +0xF870,0xF871,0xF872,0xF873,0xF874,0xF875,0xF876,0xF877, +0xF878,0xF879,0xF87A,0xF87B,0xF87C,0xF87D,0xF87E,0xF880, +0xF881,0xF882,0xF883,0xF884,0xF885,0xF886,0xF887,0xF888, +0xF889,0xF88A,0xF88B,0xF88C,0xF88D,0xF88E,0xF88F,0xF890, +0xF891,0xF892,0xF893,0xF894,0xF895,0xF896,0xF897,0xF898, +0xF899,0xF89A,0xF89B,0xF89C,0xF89D,0xF89E,0xF89F,0xF8A0, +0xF8A1,0xF8A2,0xF8A3,0xF8A4,0xF8A5,0xF8A6,0xF8A7,0xF8A8, +0xF8A9,0xF8AA,0xF8AB,0xF8AC,0xF8AD,0xF8AE,0xF8AF,0xF8B0, +0xF8B1,0xF8B2,0xF8B3,0xF8B4,0xF8B5,0xF8B6,0xF8B7,0xF8B8, +0xF8B9,0xF8BA,0xF8BB,0xF8BC,0xF8BD,0xF8BE,0xF8BF,0xF8C0, +0xF8C1,0xF8C2,0xF8C3,0xF8C4,0xF8C5,0xF8C6,0xF8C7,0xF8C8, +0xF8C9,0xF8CA,0xF8CB,0xF8CC,0xF8CD,0xF8CE,0xF8CF,0xF8D0, +0xF8D1,0xF8D2,0xF8D3,0xF8D4,0xF8D5,0xF8D6,0xF8D7,0xF8D8, +0xF8D9,0xF8DA,0xF8DB,0xF8DC,0xF8DD,0xF8DE,0xF8DF,0xF8E0, +0xF8E1,0xF8E2,0xF8E3,0xF8E4,0xF8E5,0xF8E6,0xF8E7,0xF8E8, +0xF8E9,0xF8EA,0xF8EB,0xF8EC,0xF8ED,0xF8EE,0xF8EF,0xF8F0, +0xF8F1,0xF8F2,0xF8F3,0xF8F4,0xF8F5,0xF8F6,0xF8F7,0xF8F8, +0xF8F9,0xF8FA,0xF8FB,0xF8FC,0xF940,0xF941,0xF942,0xF943, +0xF944,0xF945,0xF946,0xF947,0xF948,0xF949,0xF94A,0xF94B, +0xF94C,0xF94D,0xF94E,0xF94F,0xF950,0xF951,0xF952,0xF953, +0xF954,0xF955,0xF956,0xF957,0xF958,0xF959,0xF95A,0xF95B, +0xF95C,0xF95D,0xF95E,0xF95F,0xF960,0xF961,0xF962,0xF963, +0xF964,0xF965,0xF966,0xF967,0xF968,0xF969,0xF96A,0xF96B, +0xF96C,0xF96D,0xF96E,0xF96F,0xF970,0xF971,0xF972,0xF973, +0xF974,0xF975,0xF976,0xF977,0xF978,0xF979,0xF97A,0xF97B, +0xF97C,0xF97D,0xF97E,0xF980,0xF981,0xF982,0xF983,0xF984, +0xF985,0xF986,0xF987,0xF988,0xF989,0xF98A,0xF98B,0xF98C, +0xF98D,0xF98E,0xF98F,0xF990,0xF991,0xF992,0xF993,0xF994, +0xF995,0xF996,0xF997,0xF998,0xF999,0xF99A,0xF99B,0xF99C, +0xF99D,0xF99E,0xF99F,0xF9A0,0xF9A1,0xF9A2,0xF9A3,0xF9A4, +0xF9A5,0xF9A6,0xF9A7,0xF9A8,0xF9A9,0xF9AA,0xF9AB,0xF9AC, +0xF9AD,0xF9AE,0xF9AF,0xF9B0,0xF9B1,0xF9B2,0xF9B3,0xF9B4, +0xF9B5,0xF9B6,0xF9B7,0xF9B8,0xF9B9,0xF9BA,0xF9BB,0xF9BC, +0xF9BD,0xF9BE,0xF9BF,0xF9C0,0xF9C1,0xF9C2,0xF9C3,0xF9C4, +0xF9C5,0xF9C6,0xF9C7,0xF9C8,0xF9C9,0xF9CA,0xF9CB,0xF9CC, +0xF9CD,0xF9CE,0xF9CF,0xF9D0,0xF9D1,0xF9D2,0xF9D3,0xF9D4, +0xF9D5,0xF9D6,0xF9D7,0xF9D8,0xF9D9,0xF9DA,0xF9DB,0xF9DC, +0xF9DD,0xF9DE,0xF9DF,0xF9E0,0xF9E1,0xF9E2,0xF9E3,0xF9E4, +0xF9E5,0xF9E6,0xF9E7,0xF9E8,0xF9E9,0xF9EA,0xF9EB,0xF9EC, +0xF9ED,0xF9EE,0xF9EF,0xF9F0,0xF9F1,0xF9F2,0xF9F3,0xF9F4, +0xF9F5,0xF9F6,0xF9F7,0xF9F8,0xF9F9,0xF9FA,0xF9FB,0xF9FC}; + +/* page 9 0xF920-0xFA2D */ +static uint16 tab_uni_cp9329[]={ + 0, 0, 0, 0, 0, 0, 0, 0, + 0,0xFAE0, 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, 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, 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,0xFBE9, 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,0xFA90,0xFA9B, +0xFA9C,0xFAB1,0xFAD8,0xFAE8,0xFAEA,0xFB58,0xFB5E,0xFB75, +0xFB7D,0xFB7E,0xFB80,0xFB82,0xFB86,0xFB89,0xFB92,0xFB9D, +0xFB9F,0xFBA0,0xFBA9,0xFBB1,0xFBB3,0xFBB4,0xFBB7,0xFBD3, +0xFBDA,0xFBEA,0xFBF6,0xFBF7,0xFBF9,0xFC49}; + +/* page 10 0xFF01-0xFFE5 */ +static uint16 tab_uni_cp93210[]={ +0x8149,0xFA57,0x8194,0x8190,0x8193,0x8195,0xFA56,0x8169, +0x816A,0x8196,0x817B,0x8143,0x817C,0x8144,0x815E,0x824F, +0x8250,0x8251,0x8252,0x8253,0x8254,0x8255,0x8256,0x8257, +0x8258,0x8146,0x8147,0x8183,0x8181,0x8184,0x8148,0x8197, +0x8260,0x8261,0x8262,0x8263,0x8264,0x8265,0x8266,0x8267, +0x8268,0x8269,0x826A,0x826B,0x826C,0x826D,0x826E,0x826F, +0x8270,0x8271,0x8272,0x8273,0x8274,0x8275,0x8276,0x8277, +0x8278,0x8279,0x816D,0x815F,0x816E,0x814F,0x8151,0x814D, +0x8281,0x8282,0x8283,0x8284,0x8285,0x8286,0x8287,0x8288, +0x8289,0x828A,0x828B,0x828C,0x828D,0x828E,0x828F,0x8290, +0x8291,0x8292,0x8293,0x8294,0x8295,0x8296,0x8297,0x8298, +0x8299,0x829A,0x816F,0x8162,0x8170,0x8160, 0, 0, +0x00A1,0x00A2,0x00A3,0x00A4,0x00A5,0x00A6,0x00A7,0x00A8, +0x00A9,0x00AA,0x00AB,0x00AC,0x00AD,0x00AE,0x00AF,0x00B0, +0x00B1,0x00B2,0x00B3,0x00B4,0x00B5,0x00B6,0x00B7,0x00B8, +0x00B9,0x00BA,0x00BB,0x00BC,0x00BD,0x00BE,0x00BF,0x00C0, +0x00C1,0x00C2,0x00C3,0x00C4,0x00C5,0x00C6,0x00C7,0x00C8, +0x00C9,0x00CA,0x00CB,0x00CC,0x00CD,0x00CE,0x00CF,0x00D0, +0x00D1,0x00D2,0x00D3,0x00D4,0x00D5,0x00D6,0x00D7,0x00D8, +0x00D9,0x00DA,0x00DB,0x00DC,0x00DD,0x00DE,0x00DF, 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, 0, 0, 0, 0,0x8191, +0x8192,0x81CA,0x8150,0xFA55,0x818F}; + +static int func_uni_cp932_onechar(int code){ + if ((code>=0x005C)&&(code<=0x00F7)) + return(tab_uni_cp9320[code-0x005C]); + if ((code>=0x0391)&&(code<=0x0451)) + return(tab_uni_cp9321[code-0x0391]); + if ((code>=0x2010)&&(code<=0x2473)) + return(tab_uni_cp9322[code-0x2010]); + if ((code>=0x2500)&&(code<=0x266F)) + return(tab_uni_cp9323[code-0x2500]); + if ((code>=0x3000)&&(code<=0x30FE)) + return(tab_uni_cp9324[code-0x3000]); + if ((code>=0x3230)&&(code<=0x33CD)) + return(tab_uni_cp9325[code-0x3230]); + if ((code>=0x4E00)&&(code<=0x9481)) + return(tab_uni_cp9326[code-0x4E00]); + if ((code>=0x9577)&&(code<=0x9FA0)) + return(tab_uni_cp9327[code-0x9577]); + if ((code>=0xE000)&&(code<=0xE757)) + return(tab_uni_cp9328[code-0xE000]); + if ((code>=0xF920)&&(code<=0xFA2D)) + return(tab_uni_cp9329[code-0xF920]); + if ((code>=0xFF01)&&(code<=0xFFE5)) + return(tab_uni_cp93210[code-0xFF01]); + return(0); +} + + +static int +my_wc_mb_cp932(CHARSET_INFO *cs __attribute__((unused)), + my_wc_t wc, uchar *s, uchar *e) +{ + int code; + + if (s >= e) + return MY_CS_TOOSMALL; + + if ((int) wc < 0x80) + { + s[0]= (uchar) wc; + return 1; + } + + if (!(code=func_uni_cp932_onechar(wc))) + return MY_CS_ILUNI; + + if (code>=0xA1 && code <= 0xDF) + { + s[0]= code; + return 1; + } + + s[0]=code>>8; + s[1]=code&0xFF; + return 2; +} + + +static int +my_mb_wc_cp932(CHARSET_INFO *cs __attribute__((unused)), + my_wc_t *pwc, const uchar *s, const uchar *e){ + int hi=s[0]; + + if (s >= e) + return MY_CS_TOOFEW(0); + + if (hi < 0x80) + { + pwc[0]=hi; + return 1; + } + + if (hi >= 0xA1 && hi <= 0xDF) + { + pwc[0]= func_cp932_uni_onechar(hi); + return 1; + } + + if (s+2>e) + return MY_CS_TOOFEW(0); + + if (!(pwc[0]=func_cp932_uni_onechar((hi<<8)+s[1]))) + return MY_CS_ILSEQ; + + return 2; +} + +static +uint my_numcells_cp932(CHARSET_INFO *cs __attribute__((unused)), + const char *str, const char *strend) +{ + uint clen= 0; + const unsigned char *b= (const unsigned char *) str; + const unsigned char *e= (const unsigned char *) strend; + + for (clen= 0; b < e; ) + { + if (*b >= 0xA1 && *b <= 0xDF) + { + clen++; + b++; + } + else if (*b > 0x7F) + { + clen+= 2; + b+= 2; + } + else + { + clen++; + b++; + } + } + return clen; +} + +/* + Returns a well formed length of a cp932 string. + cp932 additional characters are also accepted. +*/ +static +uint my_well_formed_len_cp932(CHARSET_INFO *cs __attribute__((unused)), + const char *b, const char *e, uint pos, int *error) +{ + const char *b0= b; + *error= 0; + while (pos && b < e) + { + /* + Cast to int8 for extra safety. + "char" can be unsigned by default + on some platforms. + */ + if (((int8)b[0]) >= 0) + { + /* Single byte ascii character */ + b++; + } + else if (iscp932head((uchar)*b) && (e-b)>1 && iscp932tail((uchar)b[1])) + { + /* Double byte character */ + b+= 2; + } + else if (((uchar)*b) >= 0xA1 && ((uchar)*b) <= 0xDF) + { + /* Half width kana */ + b++; + } + else + { + /* Wrong byte sequence */ + *error= 1; + break; + } + } + return b - b0; +} + + +static MY_COLLATION_HANDLER my_collation_ci_handler = +{ + NULL, /* init */ + my_strnncoll_cp932, + my_strnncollsp_cp932, + my_strnxfrm_cp932, + my_like_range_cp932, + my_wildcmp_mb, /* wildcmp */ + my_strcasecmp_8bit, + my_instr_mb, + my_hash_sort_simple, +}; + + +static MY_CHARSET_HANDLER my_charset_handler= +{ + NULL, /* init */ + ismbchar_cp932, + mbcharlen_cp932, + my_numchars_mb, + my_charpos_mb, + my_well_formed_len_cp932, + my_lengthsp_8bit, + my_numcells_cp932, + my_mb_wc_cp932, /* mb_wc */ + my_wc_mb_cp932, /* wc_mb */ + my_caseup_str_8bit, + my_casedn_str_8bit, + my_caseup_8bit, + my_casedn_8bit, + my_snprintf_8bit, + my_long10_to_str_8bit, + my_longlong10_to_str_8bit, + my_fill_8bit, + my_strntol_8bit, + my_strntoul_8bit, + my_strntoll_8bit, + my_strntoull_8bit, + my_strntod_8bit, + my_strtoll10_8bit, + my_scan_8bit +}; + + +CHARSET_INFO my_charset_cp932_japanese_ci= +{ + 95,0,0, /* number */ + MY_CS_COMPILED|MY_CS_PRIMARY|MY_CS_STRNXFRM, /* state */ + "cp932", /* cs name */ + "cp932_japanese_ci", /* name */ + "", /* comment */ + NULL, /* tailoring */ + ctype_cp932, + to_lower_cp932, + to_upper_cp932, + sort_order_cp932, + NULL, /* contractions */ + NULL, /* sort_order_big*/ + NULL, /* tab_to_uni */ + NULL, /* tab_from_uni */ + NULL, /* state_map */ + NULL, /* ident_map */ + 1, /* strxfrm_multiply */ + 1, /* mbminlen */ + 2, /* mbmaxlen */ + 0, /* min_sort_char */ + 255, /* max_sort_char */ + &my_charset_handler, + &my_collation_ci_handler +}; + +CHARSET_INFO my_charset_cp932_bin= +{ + 96,0,0, /* number */ + MY_CS_COMPILED|MY_CS_BINSORT, /* state */ + "cp932", /* cs name */ + "cp932_bin", /* name */ + "", /* comment */ + NULL, /* tailoring */ + ctype_cp932, + to_lower_cp932, + to_upper_cp932, + NULL, /* sort_order */ + NULL, /* contractions */ + NULL, /* sort_order_big*/ + NULL, /* tab_to_uni */ + NULL, /* tab_from_uni */ + NULL, /* state_map */ + NULL, /* ident_map */ + 1, /* strxfrm_multiply */ + 1, /* mbminlen */ + 2, /* mbmaxlen */ + 0, /* min_sort_char */ + 255, /* max_sort_char */ + &my_charset_handler, + &my_collation_mb_bin_handler +}; + +#endif From fa3016a87615a8ca1f12a94f6e06707d0a7e5711 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 5 May 2005 11:37:52 -0700 Subject: [PATCH 23/29] Added cp932 character set --- configure.in | 13 +++++++++++-- include/m_ctype.h | 2 ++ libmysql/Makefile.shared | 2 +- mysys/charset-def.c | 5 +++++ sql/share/charsets/Index.xml | 22 +++++++++++++++++++++- strings/Makefile.am | 8 ++++---- 6 files changed, 44 insertions(+), 8 deletions(-) diff --git a/configure.in b/configure.in index b37f0b3c537..00ec737e76f 100644 --- a/configure.in +++ b/configure.in @@ -2500,14 +2500,14 @@ AC_DIVERT_PUSH(0) define(CHARSETS_AVAILABLE0,binary) define(CHARSETS_AVAILABLE1,armscii8 ascii big5 cp1250 cp1251 cp1256 cp1257) -define(CHARSETS_AVAILABLE2,cp850 cp852 cp866 dec8 euckr gb2312 gbk geostd8) +define(CHARSETS_AVAILABLE2,cp850 cp852 cp866 cp932 dec8 euckr gb2312 gbk geostd8) define(CHARSETS_AVAILABLE3,greek hebrew hp8 keybcs2 koi8r koi8u) define(CHARSETS_AVAILABLE4,latin1 latin2 latin5 latin7 macce macroman) define(CHARSETS_AVAILABLE5,sjis swe7 tis620 ucs2 ujis utf8) DEFAULT_CHARSET=latin1 CHARSETS_AVAILABLE="CHARSETS_AVAILABLE0 CHARSETS_AVAILABLE1 CHARSETS_AVAILABLE2 CHARSETS_AVAILABLE3 CHARSETS_AVAILABLE4 CHARSETS_AVAILABLE5" -CHARSETS_COMPLEX="big5 cp1250 euckr gb2312 gbk latin1 latin2 sjis tis620 ucs2 ujis utf8" +CHARSETS_COMPLEX="big5 cp1250 cp932 euckr gb2312 gbk latin1 latin2 sjis tis620 ucs2 ujis utf8" AC_DIVERT_POP @@ -2596,6 +2596,11 @@ do cp866) AC_DEFINE(HAVE_CHARSET_cp866, 1, [Define to enable charset cp866]) ;; + cp932) + AC_DEFINE(HAVE_CHARSET_cp932, 1, [Define to enable charset cp932]) + AC_DEFINE([USE_MB], 1, [Use multi-byte character routines]) + AC_DEFINE(USE_MB_IDENT, 1) + ;; dec8) AC_DEFINE(HAVE_CHARSET_dec8, 1, [Define to enable charset dec8]) ;; @@ -2734,6 +2739,10 @@ case $default_charset in default_charset_default_collation="cp866_general_ci" default_charset_collations="cp866_general_ci cp866_bin" ;; + cp932) + default_charset_default_collation="cp932_japanese_ci" + default_charset_collations="cp932_japanese_ci cp932_bin" + ;; dec8) default_charset_default_collation="dec8_swedish_ci" default_charset_collations="dec8_swedish_ci dec8_bin" diff --git a/include/m_ctype.h b/include/m_ctype.h index aab39156de1..ab63a1e0db1 100644 --- a/include/m_ctype.h +++ b/include/m_ctype.h @@ -230,6 +230,8 @@ typedef struct charset_info_st extern CHARSET_INFO my_charset_bin; extern CHARSET_INFO my_charset_big5_chinese_ci; extern CHARSET_INFO my_charset_big5_bin; +extern CHARSET_INFO my_charset_cp932_japanese_ci; +extern CHARSET_INFO my_charset_cp932_bin; extern CHARSET_INFO my_charset_euckr_korean_ci; extern CHARSET_INFO my_charset_euckr_bin; extern CHARSET_INFO my_charset_gb2312_chinese_ci; diff --git a/libmysql/Makefile.shared b/libmysql/Makefile.shared index 23a8201cbf6..bb4d252f385 100644 --- a/libmysql/Makefile.shared +++ b/libmysql/Makefile.shared @@ -42,7 +42,7 @@ mystringsobjects = strmov.lo strxmov.lo strxnmov.lo strnmov.lo \ bchange.lo bmove.lo bmove_upp.lo longlong2str.lo \ strtoull.lo strtoll.lo llstr.lo my_vsnprintf.lo \ ctype.lo ctype-simple.lo ctype-bin.lo ctype-mb.lo \ - ctype-big5.lo ctype-czech.lo ctype-euc_kr.lo \ + ctype-big5.lo ctype-cp932.lo ctype-czech.lo ctype-euc_kr.lo \ ctype-win1250ch.lo ctype-utf8.lo ctype-extra.lo \ ctype-ucs2.lo ctype-gb2312.lo ctype-gbk.lo \ ctype-sjis.lo ctype-tis620.lo ctype-ujis.lo \ diff --git a/mysys/charset-def.c b/mysys/charset-def.c index d4f69a49a2c..1fa87b715a8 100644 --- a/mysys/charset-def.c +++ b/mysys/charset-def.c @@ -88,6 +88,11 @@ my_bool init_compiled_charsets(myf flags __attribute__((unused))) add_compiled_collation(&my_charset_cp1250_czech_ci); #endif +#ifdef HAVE_CHARSET_cp932 + add_compiled_collation(&my_charset_cp932_japanese_ci); + add_compiled_collation(&my_charset_cp932_bin); +#endif + #ifdef HAVE_CHARSET_latin2 add_compiled_collation(&my_charset_latin2_czech_ci); #endif diff --git a/sql/share/charsets/Index.xml b/sql/share/charsets/Index.xml index 9595d4a7ddb..74763b195a8 100644 --- a/sql/share/charsets/Index.xml +++ b/sql/share/charsets/Index.xml @@ -1,6 +1,6 @@ - + Copyright (C) 2003 MySQL AB @@ -553,5 +553,25 @@ To make maintaining easier please: + + Japanese + SJIS for Windows Japanese + windows-31j + cswindows31j + sjisms + windows-95j + x-sjis-cp932 + ms932 + sjisms + + primary + compiled + + + binary + compiled + + + diff --git a/strings/Makefile.am b/strings/Makefile.am index 83f935a3fd2..fa149817270 100644 --- a/strings/Makefile.am +++ b/strings/Makefile.am @@ -22,26 +22,26 @@ pkglib_LIBRARIES = libmystrings.a # Exact one of ASSEMBLER_X if ASSEMBLER_x86 ASRCS = strings-x86.s longlong2str-x86.s my_strtoll10-x86.s -CSRCS = bfill.c bmove.c bmove512.c bchange.c strxnmov.c int2str.c str2int.c r_strinstr.c strtod.c bcmp.c strtol.c strtoul.c strtoll.c strtoull.c llstr.c strnlen.c ctype.c ctype-simple.c ctype-mb.c ctype-big5.c ctype-czech.c ctype-euc_kr.c ctype-gb2312.c ctype-gbk.c ctype-sjis.c ctype-tis620.c ctype-ujis.c ctype-utf8.c ctype-ucs2.c ctype-uca.c ctype-win1250ch.c ctype-bin.c ctype-latin1.c my_vsnprintf.c xml.c ctype-extra.c +CSRCS = bfill.c bmove.c bmove512.c bchange.c strxnmov.c int2str.c str2int.c r_strinstr.c strtod.c bcmp.c strtol.c strtoul.c strtoll.c strtoull.c llstr.c strnlen.c ctype.c ctype-simple.c ctype-mb.c ctype-big5.c ctype-cp932.c ctype-czech.c ctype-euc_kr.c ctype-gb2312.c ctype-gbk.c ctype-sjis.c ctype-tis620.c ctype-ujis.c ctype-utf8.c ctype-ucs2.c ctype-uca.c ctype-win1250ch.c ctype-bin.c ctype-latin1.c my_vsnprintf.c xml.c ctype-extra.c else if ASSEMBLER_sparc32 # These file MUST all be on the same line!! Otherwise automake # generats a very broken makefile ASRCS = bmove_upp-sparc.s strappend-sparc.s strend-sparc.s strinstr-sparc.s strmake-sparc.s strmov-sparc.s strnmov-sparc.s strstr-sparc.s -CSRCS = strcont.c strfill.c strcend.c is_prefix.c longlong2str.c bfill.c bmove.c bmove512.c bchange.c strxnmov.c int2str.c str2int.c r_strinstr.c strtod.c bcmp.c strtol.c strtoul.c strtoll.c strtoull.c llstr.c strnlen.c strxmov.c ctype.c ctype-simple.c ctype-mb.c ctype-big5.c ctype-czech.c ctype-euc_kr.c ctype-gb2312.c ctype-gbk.c ctype-sjis.c ctype-tis620.c ctype-ujis.c ctype-utf8.c ctype-ucs2.c ctype-uca.c ctype-win1250ch.c ctype-bin.c ctype-latin1.c my_vsnprintf.c xml.c ctype-extra.c my_strtoll10.c +CSRCS = strcont.c strfill.c strcend.c is_prefix.c longlong2str.c bfill.c bmove.c bmove512.c bchange.c strxnmov.c int2str.c str2int.c r_strinstr.c strtod.c bcmp.c strtol.c strtoul.c strtoll.c strtoull.c llstr.c strnlen.c strxmov.c ctype.c ctype-simple.c ctype-mb.c ctype-big5.c ctype-cp932.c ctype-czech.c ctype-euc_kr.c ctype-gb2312.c ctype-gbk.c ctype-sjis.c ctype-tis620.c ctype-ujis.c ctype-utf8.c ctype-ucs2.c ctype-uca.c ctype-win1250ch.c ctype-bin.c ctype-latin1.c my_vsnprintf.c xml.c ctype-extra.c my_strtoll10.c else #no assembler ASRCS = # These file MUST all be on the same line!! Otherwise automake # generats a very broken makefile -CSRCS = strxmov.c bmove_upp.c strappend.c strcont.c strend.c strfill.c strcend.c is_prefix.c strstr.c strinstr.c strmake.c strnmov.c strmov.c longlong2str.c bfill.c bmove.c bmove512.c bchange.c strxnmov.c int2str.c str2int.c r_strinstr.c strtod.c bcmp.c strtol.c strtoul.c strtoll.c strtoull.c llstr.c strnlen.c ctype.c ctype-simple.c ctype-mb.c ctype-big5.c ctype-czech.c ctype-euc_kr.c ctype-gb2312.c ctype-gbk.c ctype-sjis.c ctype-tis620.c ctype-ujis.c ctype-utf8.c ctype-ucs2.c ctype-uca.c ctype-win1250ch.c ctype-bin.c ctype-latin1.c my_vsnprintf.c xml.c ctype-extra.c my_strtoll10.c +CSRCS = strxmov.c bmove_upp.c strappend.c strcont.c strend.c strfill.c strcend.c is_prefix.c strstr.c strinstr.c strmake.c strnmov.c strmov.c longlong2str.c bfill.c bmove.c bmove512.c bchange.c strxnmov.c int2str.c str2int.c r_strinstr.c strtod.c bcmp.c strtol.c strtoul.c strtoll.c strtoull.c llstr.c strnlen.c ctype.c ctype-simple.c ctype-mb.c ctype-big5.c ctype-cp932.c ctype-czech.c ctype-euc_kr.c ctype-gb2312.c ctype-gbk.c ctype-sjis.c ctype-tis620.c ctype-ujis.c ctype-utf8.c ctype-ucs2.c ctype-uca.c ctype-win1250ch.c ctype-bin.c ctype-latin1.c my_vsnprintf.c xml.c ctype-extra.c my_strtoll10.c endif endif libmystrings_a_SOURCES = $(ASRCS) $(CSRCS) noinst_PROGRAMS = conf_to_src # Default charset definitions -EXTRA_DIST = ctype-big5.c ctype-czech.c ctype-euc_kr.c ctype-win1250ch.c \ +EXTRA_DIST = ctype-big5.c ctype-cp932.c ctype-czech.c ctype-euc_kr.c ctype-win1250ch.c \ ctype-gb2312.c ctype-gbk.c ctype-sjis.c ctype-utf8.c \ ctype-ucs2.c ctype-uca.c ctype-tis620.c ctype-ujis.c \ xml.c strto.c strings-x86.s \ From 8a27426fcdac4f2422f83cec2928004fd9074962 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 6 May 2005 01:01:39 +0500 Subject: [PATCH 24/29] Tests and results fixed with last precision/decimal related modifications mysql-test/r/case.result: test result fixed mysql-test/r/create.result: test result fixed mysql-test/r/distinct.result: test result fixed mysql-test/r/func_group.result: test result fixed mysql-test/r/func_op.result: test result fixed mysql-test/r/group_by.result: test result fixed mysql-test/r/metadata.result: test result fixed mysql-test/r/olap.result: test result fixed mysql-test/r/ps_2myisam.result: test result fixed mysql-test/r/ps_3innodb.result: test result fixed mysql-test/r/ps_4heap.result: test result fixed mysql-test/r/ps_5merge.result: test result fixed mysql-test/r/ps_6bdb.result: test result fixed mysql-test/r/ps_7ndb.result: test result fixed mysql-test/r/select.result: test result fixed mysql-test/r/sp.result: test result fixed mysql-test/r/type_decimal.result: test result fixed mysql-test/r/type_newdecimal.result: test result fixed mysql-test/r/union.result: test result fixed mysql-test/r/variables.result: test result fixed mysql-test/t/func_group.test: test modified mysql-test/t/olap.test: test modified mysql-test/t/type_decimal.test: test modified --- mysql-test/r/case.result | 10 +- mysql-test/r/create.result | 8 +- mysql-test/r/distinct.result | 2 +- mysql-test/r/func_group.result | 54 +-- mysql-test/r/func_op.result | 2 +- mysql-test/r/group_by.result | 8 +- mysql-test/r/metadata.result | 4 +- mysql-test/r/olap.result | 26 +- mysql-test/r/ps_2myisam.result | 258 +++++++------- mysql-test/r/ps_3innodb.result | 258 +++++++------- mysql-test/r/ps_4heap.result | 258 +++++++------- mysql-test/r/ps_5merge.result | 516 ++++++++++++++-------------- mysql-test/r/ps_6bdb.result | 258 +++++++------- mysql-test/r/ps_7ndb.result | 258 +++++++------- mysql-test/r/select.result | 4 +- mysql-test/r/sp.result | 4 +- mysql-test/r/type_decimal.result | 2 +- mysql-test/r/type_newdecimal.result | 62 ++-- mysql-test/r/union.result | 4 +- mysql-test/r/variables.result | 2 +- mysql-test/t/func_group.test | 4 + mysql-test/t/olap.test | 5 + mysql-test/t/type_decimal.test | 2 +- 23 files changed, 1015 insertions(+), 994 deletions(-) diff --git a/mysql-test/r/case.result b/mysql-test/r/case.result index 1ca913e1259..5fb21004469 100644 --- a/mysql-test/r/case.result +++ b/mysql-test/r/case.result @@ -105,9 +105,9 @@ t1 CREATE TABLE `t1` ( `c4` varbinary(1) NOT NULL default '', `c5` varbinary(4) NOT NULL default '', `c6` varbinary(4) NOT NULL default '', - `c7` decimal(5,1) NOT NULL default '0.0', - `c8` decimal(5,1) NOT NULL default '0.0', - `c9` decimal(5,1) default NULL, + `c7` decimal(2,1) NOT NULL default '0.0', + `c8` decimal(2,1) NOT NULL default '0.0', + `c9` decimal(2,1) default NULL, `c10` double NOT NULL default '0', `c11` double NOT NULL default '0', `c12` varbinary(5) NOT NULL default '' @@ -152,9 +152,9 @@ SHOW CREATE TABLE t1; Table Create Table t1 CREATE TABLE `t1` ( `COALESCE(1)` int(1) NOT NULL default '0', - `COALESCE(1.0)` decimal(5,1) NOT NULL default '0.0', + `COALESCE(1.0)` decimal(2,1) NOT NULL default '0.0', `COALESCE('a')` varchar(1) NOT NULL default '', - `COALESCE(1,1.0)` decimal(5,1) NOT NULL default '0.0', + `COALESCE(1,1.0)` decimal(2,1) NOT NULL default '0.0', `COALESCE(1,'1')` varbinary(1) NOT NULL default '', `COALESCE(1.1,'1')` varbinary(4) NOT NULL default '', `COALESCE('a' COLLATE latin1_bin,'b')` varchar(1) character set latin1 collate latin1_bin NOT NULL default '' diff --git a/mysql-test/r/create.result b/mysql-test/r/create.result index 4f4400b4a9b..82c0f4c1ce5 100644 --- a/mysql-test/r/create.result +++ b/mysql-test/r/create.result @@ -115,9 +115,9 @@ Field Type Null Key Default Extra a datetime NO 0000-00-00 00:00:00 b time NO 00:00:00 c date NO 0000-00-00 -d int(2) NO 0 -e decimal(6,1) NO 0.0 -f bigint(18) NO 0 +d int(3) NO 0 +e decimal(3,1) NO 0.0 +f bigint(19) NO 0 drop table t2; create table t2 select CAST("2001-12-29" AS DATE) as d, CAST("20:45:11" AS TIME) as t, CAST("2001-12-29 20:45:11" AS DATETIME) as dt; describe t2; @@ -453,7 +453,7 @@ t2 CREATE TABLE `t2` ( `ifnull(e,e)` bigint(20) default NULL, `ifnull(f,f)` float(3,2) default NULL, `ifnull(g,g)` double(4,3) default NULL, - `ifnull(h,h)` decimal(6,4) default NULL, + `ifnull(h,h)` decimal(5,4) default NULL, `ifnull(i,i)` year(4) default NULL, `ifnull(j,j)` date default NULL, `ifnull(k,k)` datetime NOT NULL default '0000-00-00 00:00:00', diff --git a/mysql-test/r/distinct.result b/mysql-test/r/distinct.result index 177994b488d..955ea5b8673 100644 --- a/mysql-test/r/distinct.result +++ b/mysql-test/r/distinct.result @@ -462,5 +462,5 @@ rout int(11) default '0' INSERT INTO t1 VALUES ('1',1,0); SELECT DISTINCT html,SUM(rout)/(SUM(rin)+1) as 'prod' FROM t1 GROUP BY rin; html prod -1 0.00000 +1 0.0000 drop table t1; diff --git a/mysql-test/r/func_group.result b/mysql-test/r/func_group.result index 1cf1a19056b..0db2ceb0e6b 100644 --- a/mysql-test/r/func_group.result +++ b/mysql-test/r/func_group.result @@ -1,4 +1,9 @@ drop table if exists t1,t2; +set @sav_dpi= @@div_precision_increment; +set div_precision_increment= 5; +show variables like 'div_precision_increment'; +Variable_name Value +div_precision_increment 5 create table t1 (grp int, a bigint unsigned, c char(10) not null); insert into t1 values (1,1,"a"); insert into t1 values (2,2,"b"); @@ -44,13 +49,13 @@ count(distinct a) count(distinct grp) 6 3 select sum(all a),count(all a),avg(all a),std(all a),variance(all a),bit_or(all a),bit_and(all a),min(all a),max(all a),min(all c),max(all c) from t1; sum(all a) count(all a) avg(all a) std(all a) variance(all a) bit_or(all a) bit_and(all a) min(all a) max(all a) min(all c) max(all c) -21 6 3.5000 1.7078 2.9167 7 0 1 6 E +21 6 3.50000 1.70783 2.91667 7 0 1 6 E select grp, sum(a),count(a),avg(a),std(a),variance(a),bit_or(a),bit_and(a),min(a),max(a),min(c),max(c) from t1 group by grp; grp sum(a) count(a) avg(a) std(a) variance(a) bit_or(a) bit_and(a) min(a) max(a) min(c) max(c) NULL NULL 0 NULL NULL NULL 0 18446744073709551615 NULL NULL -1 1 1 1.0000 0.0000 0.0000 1 1 1 1 a a -2 5 2 2.5000 0.5000 0.2500 3 2 2 3 b c -3 15 3 5.0000 0.8165 0.6667 7 4 4 6 C E +1 1 1 1.00000 0.00000 0.00000 1 1 1 1 a a +2 5 2 2.50000 0.50000 0.25000 3 2 2 3 b c +3 15 3 5.00000 0.81650 0.66667 7 4 4 6 C E select grp, sum(a)+count(a)+avg(a)+std(a)+variance(a)+bit_or(a)+bit_and(a)+min(a)+max(a)+min(c)+max(c) as sum from t1 group by grp; grp sum NULL NULL @@ -74,12 +79,12 @@ CREATE TABLE t2 (id int(11),name char(20)); INSERT INTO t2 VALUES (1,'Set One'),(2,'Set Two'); select id, avg(value1), std(value1), variance(value1) from t1 group by id; id avg(value1) std(value1) variance(value1) -1 1.000000 0.816497 0.666667 -2 11.000000 0.816497 0.666667 +1 1.0000000 0.816497 0.666667 +2 11.0000000 0.816497 0.666667 select name, avg(value1), std(value1), variance(value1) from t1, t2 where t1.id = t2.id group by t1.id; name avg(value1) std(value1) variance(value1) -Set One 1.000000 0.816497 0.666667 -Set Two 11.000000 0.816497 0.666667 +Set One 1.0000000 0.816497 0.666667 +Set Two 11.0000000 0.816497 0.666667 drop table t1,t2; create table t1 (id int not null); create table t2 (id int not null,rating int null); @@ -87,19 +92,19 @@ insert into t1 values(1),(2),(3); insert into t2 values(1, 3),(2, NULL),(2, NULL),(3, 2),(3, NULL); select t1.id, avg(rating) from t1 left join t2 on ( t1.id = t2.id ) group by t1.id; id avg(rating) -1 3.0000 +1 3.00000 2 NULL -3 2.0000 +3 2.00000 select sql_small_result t2.id, avg(rating) from t2 group by t2.id; id avg(rating) -1 3.0000 +1 3.00000 2 NULL -3 2.0000 +3 2.00000 select sql_big_result t2.id, avg(rating) from t2 group by t2.id; id avg(rating) -1 3.0000 +1 3.00000 2 NULL -3 2.0000 +3 2.00000 select sql_small_result t2.id, avg(rating+0.0e0) from t2 group by t2.id; id avg(rating+0.0e0) 1 3 @@ -265,22 +270,22 @@ insert into t1 values (2,1); select a,count(b), sum(b), avg(b), std(b), min(b), max(b), bit_and(b), bit_or(b) from t1 group by a; a count(b) sum(b) avg(b) std(b) min(b) max(b) bit_and(b) bit_or(b) 1 0 NULL NULL NULL NULL NULL 18446744073709551615 0 -2 1 1 1.0000 0.0000 1 1 1 1 +2 1 1 1.00000 0.00000 1 1 1 1 select SQL_BIG_RESULT a,count(b), sum(b), avg(b), std(b), min(b), max(b), bit_and(b), bit_or(b) from t1 group by a; a count(b) sum(b) avg(b) std(b) min(b) max(b) bit_and(b) bit_or(b) 1 0 NULL NULL NULL NULL NULL 18446744073709551615 0 -2 1 1 1.0000 0.0000 1 1 1 1 +2 1 1 1.00000 0.00000 1 1 1 1 insert into t1 values (3,1); select a,count(b), sum(b), avg(b), std(b), min(b), max(b), bit_and(b), bit_or(b) from t1 group by a; a count(b) sum(b) avg(b) std(b) min(b) max(b) bit_and(b) bit_or(b) 1 0 NULL NULL NULL NULL NULL 18446744073709551615 0 -2 1 1 1.0000 0.0000 1 1 1 1 -3 1 1 1.0000 0.0000 1 1 1 1 +2 1 1 1.00000 0.00000 1 1 1 1 +3 1 1 1.00000 0.00000 1 1 1 1 select SQL_BIG_RESULT a,count(b), sum(b), avg(b), std(b), min(b), max(b), bit_and(b), bit_or(b), bit_xor(b) from t1 group by a; a count(b) sum(b) avg(b) std(b) min(b) max(b) bit_and(b) bit_or(b) bit_xor(b) 1 0 NULL NULL NULL NULL NULL 18446744073709551615 0 0 -2 1 1 1.0000 0.0000 1 1 1 1 1 -3 1 1 1.0000 0.0000 1 1 1 1 1 +2 1 1 1.00000 0.00000 1 1 1 1 1 +3 1 1 1.00000 0.00000 1 1 1 1 1 explain extended select SQL_BIG_RESULT a,count(b), sum(b), avg(b), std(b), min(b), max(b), bit_and(b), bit_or(b), bit_xor(b) from t1 group by a; id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 ALL NULL NULL NULL NULL 5 Using filesort @@ -837,10 +842,10 @@ INSERT INTO t1 VALUES (-5.00000000001),(-5.00000000002),(-5.00000000003),(-5.000 insert into t1 select * from t1; select col1,count(col1),sum(col1),avg(col1) from t1 group by col1; col1 count(col1) sum(col1) avg(col1) --5.000000000030 2 -10.000000000060 -5.0000000000300000 --5.000000000020 4 -20.000000000080 -5.0000000000200000 --5.000000000010 4 -20.000000000040 -5.0000000000100000 --5.000000000000 2 -10.000000000000 -5.0000000000000000 +-5.000000000030 2 -10.000000000060 -5.00000000003000000 +-5.000000000020 4 -20.000000000080 -5.00000000002000000 +-5.000000000010 4 -20.000000000040 -5.00000000001000000 +-5.000000000000 2 -10.000000000000 -5.00000000000000000 DROP TABLE t1; create table t1 (col1 decimal(16,12)); insert into t1 values (-5.00000000001); @@ -947,3 +952,4 @@ SUM(a) 6 6 DROP TABLE t1; +set div_precision_increment= @sav_dpi; diff --git a/mysql-test/r/func_op.result b/mysql-test/r/func_op.result index 5f89fe7b727..61b29e9380d 100644 --- a/mysql-test/r/func_op.result +++ b/mysql-test/r/func_op.result @@ -1,6 +1,6 @@ select 1+1,1-1,1+1*2,8/5,8%5,mod(8,5),mod(8,5)|0,-(1+1)*-2; 1+1 1-1 1+1*2 8/5 8%5 mod(8,5) mod(8,5)|0 -(1+1)*-2 -2 0 3 1.60000 3 3 3 4 +2 0 3 1.6000 3 3 3 4 explain extended select 1+1,1-1,1+1*2,8/5,8%5,mod(8,5),mod(8,5)|0,-(1+1)*-2; id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE NULL NULL NULL NULL NULL NULL NULL No tables used diff --git a/mysql-test/r/group_by.result b/mysql-test/r/group_by.result index 5cee9b15dcd..88b43c7ce35 100644 --- a/mysql-test/r/group_by.result +++ b/mysql-test/r/group_by.result @@ -440,12 +440,12 @@ create table t2 (user_id integer not null, date date); insert into t2 values (1, '2002-06-09'),(2, '2002-06-09'),(1, '2002-06-09'),(3, '2002-06-09'),(4, '2002-06-09'),(4, '2002-06-09'); select u.gender as gender, count(distinct u.id) as dist_count, (count(distinct u.id)/5*100) as percentage from t1 u, t2 l where l.user_id = u.id group by u.gender; gender dist_count percentage -F 3 60.00000 -M 1 20.00000 +F 3 60.0000 +M 1 20.0000 select u.gender as gender, count(distinct u.id) as dist_count, (count(distinct u.id)/5*100) as percentage from t1 u, t2 l where l.user_id = u.id group by u.gender order by percentage; gender dist_count percentage -M 1 20.00000 -F 3 60.00000 +M 1 20.0000 +F 3 60.0000 drop table t1,t2; CREATE TABLE t1 (ID1 int, ID2 int, ID int NOT NULL AUTO_INCREMENT,PRIMARY KEY(ID )); diff --git a/mysql-test/r/metadata.result b/mysql-test/r/metadata.result index b5d5785f0f1..dcd32bf477b 100644 --- a/mysql-test/r/metadata.result +++ b/mysql-test/r/metadata.result @@ -2,7 +2,7 @@ drop table if exists t1,t2; select 1, 1.0, -1, "hello", NULL; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def 1 8 1 1 N 32897 0 63 -def 1.0 246 4 3 N 161 1 63 +def 1.0 246 4 3 N 129 1 63 def -1 8 2 2 N 32897 0 63 def hello 253 5 5 N 1 31 8 def NULL 6 0 0 Y 32896 0 63 @@ -18,7 +18,7 @@ def test t1 t1 d d 3 11 0 Y 32768 0 63 def test t1 t1 e e 8 20 0 Y 32768 0 63 def test t1 t1 f f 4 3 0 Y 32768 2 63 def test t1 t1 g g 5 4 0 Y 32768 3 63 -def test t1 t1 h h 246 5 0 Y 0 4 63 +def test t1 t1 h h 246 7 0 Y 0 4 63 def test t1 t1 i i 13 4 0 Y 32864 0 63 def test t1 t1 j j 10 10 0 Y 128 0 63 def test t1 t1 k k 7 19 0 N 1249 0 63 diff --git a/mysql-test/r/olap.result b/mysql-test/r/olap.result index 06f474923eb..1d8830b7d5f 100644 --- a/mysql-test/r/olap.result +++ b/mysql-test/r/olap.result @@ -1,4 +1,9 @@ drop table if exists t1,t2; +set @sav_dpi= @@div_precision_increment; +set div_precision_increment= 5; +show variables like 'div_precision_increment'; +Variable_name Value +div_precision_increment 5 create table t1 (product varchar(32), country_id int not null, year int, profit int); insert into t1 values ( 'Computer', 2,2000, 1200), ( 'TV', 1, 1999, 150), @@ -40,11 +45,11 @@ TV 600 NULL 7785 select product, sum(profit),avg(profit) from t1 group by product with rollup; product sum(profit) avg(profit) -Calculator 275 68.7500 -Computer 6900 1380.0000 -Phone 10 10.0000 -TV 600 120.0000 -NULL 7785 519.0000 +Calculator 275 68.75000 +Computer 6900 1380.00000 +Phone 10 10.00000 +TV 600 120.00000 +NULL 7785 519.00000 select product, country_id , year, sum(profit) from t1 group by product, country_id, year; product country_id year sum(profit) Calculator 1 1999 50 @@ -244,11 +249,11 @@ select product, country_id , year, sum(profit) from t1 group by product, country product country_id year sum(profit) select concat(':',product,':'), sum(profit),avg(profit) from t1 group by product with rollup; concat(':',product,':') sum(profit) avg(profit) -:Calculator: 275 68.7500 -:Computer: 6900 1380.0000 -:Phone: 10 10.0000 -:TV: 600 120.0000 -:TV: 7785 519.0000 +:Calculator: 275 68.75000 +:Computer: 6900 1380.00000 +:Phone: 10 10.00000 +:TV: 600 120.00000 +:TV: 7785 519.00000 select product, country_id , year, sum(profit) from t1 group by product, country_id, year with cube; ERROR 42000: This version of MySQL doesn't yet support 'CUBE' explain select product, country_id , year, sum(profit) from t1 group by product, country_id, year with cube; @@ -450,3 +455,4 @@ a m 2 2 NULL 3 DROP TABLE t1; +set div_precision_increment= @sav_dpi; diff --git a/mysql-test/r/ps_2myisam.result b/mysql-test/r/ps_2myisam.result index 37c3682cacd..d6c3d0e78d5 100644 --- a/mysql-test/r/ps_2myisam.result +++ b/mysql-test/r/ps_2myisam.result @@ -59,8 +59,8 @@ def test t9 t9 c7 c7 4 12 1 Y 32768 31 63 def test t9 t9 c8 c8 5 22 1 Y 32768 31 63 def test t9 t9 c9 c9 5 22 1 Y 32768 31 63 def test t9 t9 c10 c10 5 22 1 Y 32768 31 63 -def test t9 t9 c11 c11 246 7 6 Y 0 4 63 -def test t9 t9 c12 c12 246 8 6 Y 0 4 63 +def test t9 t9 c11 c11 246 9 6 Y 0 4 63 +def test t9 t9 c12 c12 246 10 6 Y 0 4 63 def test t9 t9 c13 c13 10 10 10 Y 128 0 63 def test t9 t9 c14 c14 12 19 19 Y 128 0 63 def test t9 t9 c15 c15 7 19 19 N 1249 0 63 @@ -1776,8 +1776,8 @@ Table Create Table t5 CREATE TABLE `t5` ( `const01` bigint(1) NOT NULL default '0', `param01` bigint(20) default NULL, - `const02` decimal(3,1) NOT NULL default '0.0', - `param02` decimal(64,30) default NULL, + `const02` decimal(2,1) NOT NULL default '0.0', + `param02` decimal(65,30) default NULL, `const03` double NOT NULL default '0', `param03` double default NULL, `const04` varchar(3) NOT NULL default '', @@ -1798,7 +1798,7 @@ t5 CREATE TABLE `t5` ( `param11` bigint(20) default NULL, `const12` binary(0) default NULL, `param12` bigint(20) default NULL, - `param13` decimal(64,30) default NULL, + `param13` decimal(65,30) default NULL, `param14` longtext, `param15` longblob ) ENGINE=MyISAM DEFAULT CHARSET=latin1 @@ -1806,10 +1806,10 @@ select * from t5 ; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def test t5 t5 const01 const01 8 1 1 N 32769 0 63 def test t5 t5 param01 param01 8 20 1 Y 32768 0 63 -def test t5 t5 const02 const02 246 3 3 N 1 1 63 -def test t5 t5 param02 param02 246 64 32 Y 0 30 63 +def test t5 t5 const02 const02 246 4 3 N 1 1 63 +def test t5 t5 param02 param02 246 67 32 Y 0 30 63 def test t5 t5 const03 const03 5 17 1 N 32769 31 63 -def test t5 t5 param03 param03 5 20 1 Y 32768 31 63 +def test t5 t5 param03 param03 5 23 1 Y 32768 31 63 def test t5 t5 const04 const04 253 3 3 N 1 0 8 def test t5 t5 param04 param04 252 16777215 3 Y 16 0 8 def test t5 t5 const05 const05 253 3 3 N 129 0 63 @@ -1828,7 +1828,7 @@ def test t5 t5 const11 const11 3 4 4 Y 32768 0 63 def test t5 t5 param11 param11 8 20 4 Y 32768 0 63 def test t5 t5 const12 const12 254 0 0 Y 128 0 63 def test t5 t5 param12 param12 8 20 0 Y 32768 0 63 -def test t5 t5 param13 param13 246 64 0 Y 0 30 63 +def test t5 t5 param13 param13 246 67 0 Y 0 30 63 def test t5 t5 param14 param14 252 16777215 0 Y 16 0 8 def test t5 t5 param15 param15 252 16777215 0 Y 144 0 63 const01 8 @@ -1916,25 +1916,25 @@ from t9 where c1= 1 ; 1 1 1 1 1 1 1 1 1 1 1.0000 1.0000 2004-02-29 2004-02-29 11:11:11 2004-02-29 11:11:11 11:11:11 2004 1 1 a 123456789a 123456789a123456789b123456789c tinyblob tinytext blob text mediumblob mediumtext longblob longtext one monday execute full_info ; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def @arg01 253 20 1 Y 128 31 63 -def @arg02 253 20 1 Y 128 31 63 -def @arg03 253 20 1 Y 128 31 63 -def @arg04 253 20 1 Y 128 31 63 -def @arg05 253 20 1 Y 128 31 63 -def @arg06 253 20 1 Y 128 31 63 -def @arg07 253 20 1 Y 128 31 63 -def @arg08 253 20 1 Y 128 31 63 -def @arg09 253 20 1 Y 128 31 63 -def @arg10 253 20 1 Y 128 31 63 -def @arg11 253 64 6 Y 128 30 63 -def @arg12 253 64 6 Y 128 30 63 +def @arg01 253 20 1 Y 128 0 63 +def @arg02 253 20 1 Y 128 0 63 +def @arg03 253 20 1 Y 128 0 63 +def @arg04 253 20 1 Y 128 0 63 +def @arg05 253 20 1 Y 128 0 63 +def @arg06 253 20 1 Y 128 0 63 +def @arg07 253 23 1 Y 128 31 63 +def @arg08 253 23 1 Y 128 31 63 +def @arg09 253 23 1 Y 128 31 63 +def @arg10 253 23 1 Y 128 31 63 +def @arg11 253 67 6 Y 128 30 63 +def @arg12 253 67 6 Y 128 30 63 def @arg13 253 8192 10 Y 128 31 63 def @arg14 253 8192 19 Y 128 31 63 def @arg15 253 8192 19 Y 128 31 63 def @arg16 253 8192 8 Y 128 31 63 -def @arg17 253 20 4 Y 128 31 63 -def @arg18 253 20 1 Y 128 31 63 -def @arg19 253 20 1 Y 128 31 63 +def @arg17 253 20 4 Y 128 0 63 +def @arg18 253 20 1 Y 128 0 63 +def @arg19 253 20 1 Y 128 0 63 def @arg20 253 8192 1 Y 0 31 8 def @arg21 253 8192 10 Y 0 31 8 def @arg22 253 8192 30 Y 0 31 8 @@ -1963,25 +1963,25 @@ from t9 where c1= 0 ; 0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1991-01-01 01:01:01 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL execute full_info ; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def @arg01 253 20 1 Y 128 31 63 -def @arg02 253 20 0 Y 128 31 63 -def @arg03 253 20 0 Y 128 31 63 -def @arg04 253 20 0 Y 128 31 63 -def @arg05 253 20 0 Y 128 31 63 -def @arg06 253 20 0 Y 128 31 63 -def @arg07 253 20 0 Y 128 31 63 -def @arg08 253 20 0 Y 128 31 63 -def @arg09 253 20 0 Y 128 31 63 -def @arg10 253 20 0 Y 128 31 63 -def @arg11 253 64 0 Y 128 30 63 -def @arg12 253 64 0 Y 128 30 63 +def @arg01 253 20 1 Y 128 0 63 +def @arg02 253 20 0 Y 128 0 63 +def @arg03 253 20 0 Y 128 0 63 +def @arg04 253 20 0 Y 128 0 63 +def @arg05 253 20 0 Y 128 0 63 +def @arg06 253 20 0 Y 128 0 63 +def @arg07 253 23 0 Y 128 31 63 +def @arg08 253 23 0 Y 128 31 63 +def @arg09 253 23 0 Y 128 31 63 +def @arg10 253 23 0 Y 128 31 63 +def @arg11 253 67 0 Y 128 30 63 +def @arg12 253 67 0 Y 128 30 63 def @arg13 253 8192 0 Y 128 31 63 def @arg14 253 8192 0 Y 128 31 63 def @arg15 253 8192 19 Y 128 31 63 def @arg16 253 8192 0 Y 128 31 63 -def @arg17 253 20 0 Y 128 31 63 -def @arg18 253 20 0 Y 128 31 63 -def @arg19 253 20 0 Y 128 31 63 +def @arg17 253 20 0 Y 128 0 63 +def @arg18 253 20 0 Y 128 0 63 +def @arg19 253 20 0 Y 128 0 63 def @arg20 253 8192 0 Y 0 31 8 def @arg21 253 8192 0 Y 0 31 8 def @arg22 253 8192 0 Y 0 31 8 @@ -2013,25 +2013,25 @@ execute stmt1 using @my_key ; 1 1 1 1 1 1 1 1 1 1 1.0000 1.0000 2004-02-29 2004-02-29 11:11:11 2004-02-29 11:11:11 11:11:11 2004 1 1 a 123456789a 123456789a123456789b123456789c tinyblob tinytext blob text mediumblob mediumtext longblob longtext one monday execute full_info ; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def @arg01 253 20 1 Y 128 31 63 -def @arg02 253 20 1 Y 128 31 63 -def @arg03 253 20 1 Y 128 31 63 -def @arg04 253 20 1 Y 128 31 63 -def @arg05 253 20 1 Y 128 31 63 -def @arg06 253 20 1 Y 128 31 63 -def @arg07 253 20 1 Y 128 31 63 -def @arg08 253 20 1 Y 128 31 63 -def @arg09 253 20 1 Y 128 31 63 -def @arg10 253 20 1 Y 128 31 63 -def @arg11 253 64 6 Y 128 30 63 -def @arg12 253 64 6 Y 128 30 63 +def @arg01 253 20 1 Y 128 0 63 +def @arg02 253 20 1 Y 128 0 63 +def @arg03 253 20 1 Y 128 0 63 +def @arg04 253 20 1 Y 128 0 63 +def @arg05 253 20 1 Y 128 0 63 +def @arg06 253 20 1 Y 128 0 63 +def @arg07 253 23 1 Y 128 31 63 +def @arg08 253 23 1 Y 128 31 63 +def @arg09 253 23 1 Y 128 31 63 +def @arg10 253 23 1 Y 128 31 63 +def @arg11 253 67 6 Y 128 30 63 +def @arg12 253 67 6 Y 128 30 63 def @arg13 253 8192 10 Y 128 31 63 def @arg14 253 8192 19 Y 128 31 63 def @arg15 253 8192 19 Y 128 31 63 def @arg16 253 8192 8 Y 128 31 63 -def @arg17 253 20 4 Y 128 31 63 -def @arg18 253 20 1 Y 128 31 63 -def @arg19 253 20 1 Y 128 31 63 +def @arg17 253 20 4 Y 128 0 63 +def @arg18 253 20 1 Y 128 0 63 +def @arg19 253 20 1 Y 128 0 63 def @arg20 253 8192 1 Y 0 31 8 def @arg21 253 8192 10 Y 0 31 8 def @arg22 253 8192 30 Y 0 31 8 @@ -2053,25 +2053,25 @@ execute stmt1 using @my_key ; 0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1991-01-01 01:01:01 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL execute full_info ; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def @arg01 253 20 1 Y 128 31 63 -def @arg02 253 20 0 Y 128 31 63 -def @arg03 253 20 0 Y 128 31 63 -def @arg04 253 20 0 Y 128 31 63 -def @arg05 253 20 0 Y 128 31 63 -def @arg06 253 20 0 Y 128 31 63 -def @arg07 253 20 0 Y 128 31 63 -def @arg08 253 20 0 Y 128 31 63 -def @arg09 253 20 0 Y 128 31 63 -def @arg10 253 20 0 Y 128 31 63 -def @arg11 253 64 0 Y 128 30 63 -def @arg12 253 64 0 Y 128 30 63 +def @arg01 253 20 1 Y 128 0 63 +def @arg02 253 20 0 Y 128 0 63 +def @arg03 253 20 0 Y 128 0 63 +def @arg04 253 20 0 Y 128 0 63 +def @arg05 253 20 0 Y 128 0 63 +def @arg06 253 20 0 Y 128 0 63 +def @arg07 253 23 0 Y 128 31 63 +def @arg08 253 23 0 Y 128 31 63 +def @arg09 253 23 0 Y 128 31 63 +def @arg10 253 23 0 Y 128 31 63 +def @arg11 253 67 0 Y 128 30 63 +def @arg12 253 67 0 Y 128 30 63 def @arg13 253 8192 0 Y 128 31 63 def @arg14 253 8192 0 Y 128 31 63 def @arg15 253 8192 19 Y 128 31 63 def @arg16 253 8192 0 Y 128 31 63 -def @arg17 253 20 0 Y 128 31 63 -def @arg18 253 20 0 Y 128 31 63 -def @arg19 253 20 0 Y 128 31 63 +def @arg17 253 20 0 Y 128 0 63 +def @arg18 253 20 0 Y 128 0 63 +def @arg19 253 20 0 Y 128 0 63 def @arg20 253 8192 0 Y 0 31 8 def @arg21 253 8192 0 Y 0 31 8 def @arg22 253 8192 0 Y 0 31 8 @@ -2101,25 +2101,25 @@ into @arg01, @arg02, @arg03, @arg04, @arg05, @arg06, @arg07, @arg08, from t9 where c1= 1 ; execute full_info ; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def @arg01 253 20 1 Y 128 31 63 -def @arg02 253 20 1 Y 128 31 63 -def @arg03 253 20 1 Y 128 31 63 -def @arg04 253 20 1 Y 128 31 63 -def @arg05 253 20 1 Y 128 31 63 -def @arg06 253 20 1 Y 128 31 63 -def @arg07 253 20 1 Y 128 31 63 -def @arg08 253 20 1 Y 128 31 63 -def @arg09 253 20 1 Y 128 31 63 -def @arg10 253 20 1 Y 128 31 63 -def @arg11 253 64 6 Y 128 30 63 -def @arg12 253 64 6 Y 128 30 63 +def @arg01 253 20 1 Y 128 0 63 +def @arg02 253 20 1 Y 128 0 63 +def @arg03 253 20 1 Y 128 0 63 +def @arg04 253 20 1 Y 128 0 63 +def @arg05 253 20 1 Y 128 0 63 +def @arg06 253 20 1 Y 128 0 63 +def @arg07 253 23 1 Y 128 31 63 +def @arg08 253 23 1 Y 128 31 63 +def @arg09 253 23 1 Y 128 31 63 +def @arg10 253 23 1 Y 128 31 63 +def @arg11 253 67 6 Y 128 30 63 +def @arg12 253 67 6 Y 128 30 63 def @arg13 253 8192 10 Y 128 31 63 def @arg14 253 8192 19 Y 128 31 63 def @arg15 253 8192 19 Y 128 31 63 def @arg16 253 8192 8 Y 128 31 63 -def @arg17 253 20 4 Y 128 31 63 -def @arg18 253 20 1 Y 128 31 63 -def @arg19 253 20 1 Y 128 31 63 +def @arg17 253 20 4 Y 128 0 63 +def @arg18 253 20 1 Y 128 0 63 +def @arg19 253 20 1 Y 128 0 63 def @arg20 253 8192 1 Y 0 31 8 def @arg21 253 8192 10 Y 0 31 8 def @arg22 253 8192 30 Y 0 31 8 @@ -2145,25 +2145,25 @@ into @arg01, @arg02, @arg03, @arg04, @arg05, @arg06, @arg07, @arg08, from t9 where c1= 0 ; execute full_info ; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def @arg01 253 20 1 Y 128 31 63 -def @arg02 253 20 0 Y 128 31 63 -def @arg03 253 20 0 Y 128 31 63 -def @arg04 253 20 0 Y 128 31 63 -def @arg05 253 20 0 Y 128 31 63 -def @arg06 253 20 0 Y 128 31 63 -def @arg07 253 20 0 Y 128 31 63 -def @arg08 253 20 0 Y 128 31 63 -def @arg09 253 20 0 Y 128 31 63 -def @arg10 253 20 0 Y 128 31 63 -def @arg11 253 64 0 Y 128 30 63 -def @arg12 253 64 0 Y 128 30 63 +def @arg01 253 20 1 Y 128 0 63 +def @arg02 253 20 0 Y 128 0 63 +def @arg03 253 20 0 Y 128 0 63 +def @arg04 253 20 0 Y 128 0 63 +def @arg05 253 20 0 Y 128 0 63 +def @arg06 253 20 0 Y 128 0 63 +def @arg07 253 23 0 Y 128 31 63 +def @arg08 253 23 0 Y 128 31 63 +def @arg09 253 23 0 Y 128 31 63 +def @arg10 253 23 0 Y 128 31 63 +def @arg11 253 67 0 Y 128 30 63 +def @arg12 253 67 0 Y 128 30 63 def @arg13 253 8192 0 Y 128 31 63 def @arg14 253 8192 0 Y 128 31 63 def @arg15 253 8192 19 Y 128 31 63 def @arg16 253 8192 0 Y 128 31 63 -def @arg17 253 20 0 Y 128 31 63 -def @arg18 253 20 0 Y 128 31 63 -def @arg19 253 20 0 Y 128 31 63 +def @arg17 253 20 0 Y 128 0 63 +def @arg18 253 20 0 Y 128 0 63 +def @arg19 253 20 0 Y 128 0 63 def @arg20 253 8192 0 Y 0 31 8 def @arg21 253 8192 0 Y 0 31 8 def @arg22 253 8192 0 Y 0 31 8 @@ -2191,25 +2191,25 @@ set @my_key= 1 ; execute stmt1 using @my_key ; execute full_info ; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def @arg01 253 20 1 Y 128 31 63 -def @arg02 253 20 1 Y 128 31 63 -def @arg03 253 20 1 Y 128 31 63 -def @arg04 253 20 1 Y 128 31 63 -def @arg05 253 20 1 Y 128 31 63 -def @arg06 253 20 1 Y 128 31 63 -def @arg07 253 20 1 Y 128 31 63 -def @arg08 253 20 1 Y 128 31 63 -def @arg09 253 20 1 Y 128 31 63 -def @arg10 253 20 1 Y 128 31 63 -def @arg11 253 64 6 Y 128 30 63 -def @arg12 253 64 6 Y 128 30 63 +def @arg01 253 20 1 Y 128 0 63 +def @arg02 253 20 1 Y 128 0 63 +def @arg03 253 20 1 Y 128 0 63 +def @arg04 253 20 1 Y 128 0 63 +def @arg05 253 20 1 Y 128 0 63 +def @arg06 253 20 1 Y 128 0 63 +def @arg07 253 23 1 Y 128 31 63 +def @arg08 253 23 1 Y 128 31 63 +def @arg09 253 23 1 Y 128 31 63 +def @arg10 253 23 1 Y 128 31 63 +def @arg11 253 67 6 Y 128 30 63 +def @arg12 253 67 6 Y 128 30 63 def @arg13 253 8192 10 Y 128 31 63 def @arg14 253 8192 19 Y 128 31 63 def @arg15 253 8192 19 Y 128 31 63 def @arg16 253 8192 8 Y 128 31 63 -def @arg17 253 20 4 Y 128 31 63 -def @arg18 253 20 1 Y 128 31 63 -def @arg19 253 20 1 Y 128 31 63 +def @arg17 253 20 4 Y 128 0 63 +def @arg18 253 20 1 Y 128 0 63 +def @arg19 253 20 1 Y 128 0 63 def @arg20 253 8192 1 Y 0 31 8 def @arg21 253 8192 10 Y 0 31 8 def @arg22 253 8192 30 Y 0 31 8 @@ -2229,25 +2229,25 @@ set @my_key= 0 ; execute stmt1 using @my_key ; execute full_info ; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def @arg01 253 20 1 Y 128 31 63 -def @arg02 253 20 0 Y 128 31 63 -def @arg03 253 20 0 Y 128 31 63 -def @arg04 253 20 0 Y 128 31 63 -def @arg05 253 20 0 Y 128 31 63 -def @arg06 253 20 0 Y 128 31 63 -def @arg07 253 20 0 Y 128 31 63 -def @arg08 253 20 0 Y 128 31 63 -def @arg09 253 20 0 Y 128 31 63 -def @arg10 253 20 0 Y 128 31 63 -def @arg11 253 64 0 Y 128 30 63 -def @arg12 253 64 0 Y 128 30 63 +def @arg01 253 20 1 Y 128 0 63 +def @arg02 253 20 0 Y 128 0 63 +def @arg03 253 20 0 Y 128 0 63 +def @arg04 253 20 0 Y 128 0 63 +def @arg05 253 20 0 Y 128 0 63 +def @arg06 253 20 0 Y 128 0 63 +def @arg07 253 23 0 Y 128 31 63 +def @arg08 253 23 0 Y 128 31 63 +def @arg09 253 23 0 Y 128 31 63 +def @arg10 253 23 0 Y 128 31 63 +def @arg11 253 67 0 Y 128 30 63 +def @arg12 253 67 0 Y 128 30 63 def @arg13 253 8192 0 Y 128 31 63 def @arg14 253 8192 0 Y 128 31 63 def @arg15 253 8192 19 Y 128 31 63 def @arg16 253 8192 0 Y 128 31 63 -def @arg17 253 20 0 Y 128 31 63 -def @arg18 253 20 0 Y 128 31 63 -def @arg19 253 20 0 Y 128 31 63 +def @arg17 253 20 0 Y 128 0 63 +def @arg18 253 20 0 Y 128 0 63 +def @arg19 253 20 0 Y 128 0 63 def @arg20 253 8192 0 Y 0 31 8 def @arg21 253 8192 0 Y 0 31 8 def @arg22 253 8192 0 Y 0 31 8 diff --git a/mysql-test/r/ps_3innodb.result b/mysql-test/r/ps_3innodb.result index d56fcb96726..1bbc1091393 100644 --- a/mysql-test/r/ps_3innodb.result +++ b/mysql-test/r/ps_3innodb.result @@ -59,8 +59,8 @@ def test t9 t9 c7 c7 4 12 1 Y 32768 31 63 def test t9 t9 c8 c8 5 22 1 Y 32768 31 63 def test t9 t9 c9 c9 5 22 1 Y 32768 31 63 def test t9 t9 c10 c10 5 22 1 Y 32768 31 63 -def test t9 t9 c11 c11 246 7 6 Y 0 4 63 -def test t9 t9 c12 c12 246 8 6 Y 0 4 63 +def test t9 t9 c11 c11 246 9 6 Y 0 4 63 +def test t9 t9 c12 c12 246 10 6 Y 0 4 63 def test t9 t9 c13 c13 10 10 10 Y 128 0 63 def test t9 t9 c14 c14 12 19 19 Y 128 0 63 def test t9 t9 c15 c15 7 19 19 N 1249 0 63 @@ -1759,8 +1759,8 @@ Table Create Table t5 CREATE TABLE `t5` ( `const01` bigint(1) NOT NULL default '0', `param01` bigint(20) default NULL, - `const02` decimal(3,1) NOT NULL default '0.0', - `param02` decimal(64,30) default NULL, + `const02` decimal(2,1) NOT NULL default '0.0', + `param02` decimal(65,30) default NULL, `const03` double NOT NULL default '0', `param03` double default NULL, `const04` varchar(3) NOT NULL default '', @@ -1781,7 +1781,7 @@ t5 CREATE TABLE `t5` ( `param11` bigint(20) default NULL, `const12` binary(0) default NULL, `param12` bigint(20) default NULL, - `param13` decimal(64,30) default NULL, + `param13` decimal(65,30) default NULL, `param14` longtext, `param15` longblob ) ENGINE=MyISAM DEFAULT CHARSET=latin1 @@ -1789,10 +1789,10 @@ select * from t5 ; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def test t5 t5 const01 const01 8 1 1 N 32769 0 63 def test t5 t5 param01 param01 8 20 1 Y 32768 0 63 -def test t5 t5 const02 const02 246 3 3 N 1 1 63 -def test t5 t5 param02 param02 246 64 32 Y 0 30 63 +def test t5 t5 const02 const02 246 4 3 N 1 1 63 +def test t5 t5 param02 param02 246 67 32 Y 0 30 63 def test t5 t5 const03 const03 5 17 1 N 32769 31 63 -def test t5 t5 param03 param03 5 20 1 Y 32768 31 63 +def test t5 t5 param03 param03 5 23 1 Y 32768 31 63 def test t5 t5 const04 const04 253 3 3 N 1 0 8 def test t5 t5 param04 param04 252 16777215 3 Y 16 0 8 def test t5 t5 const05 const05 253 3 3 N 129 0 63 @@ -1811,7 +1811,7 @@ def test t5 t5 const11 const11 3 4 4 Y 32768 0 63 def test t5 t5 param11 param11 8 20 4 Y 32768 0 63 def test t5 t5 const12 const12 254 0 0 Y 128 0 63 def test t5 t5 param12 param12 8 20 0 Y 32768 0 63 -def test t5 t5 param13 param13 246 64 0 Y 0 30 63 +def test t5 t5 param13 param13 246 67 0 Y 0 30 63 def test t5 t5 param14 param14 252 16777215 0 Y 16 0 8 def test t5 t5 param15 param15 252 16777215 0 Y 144 0 63 const01 8 @@ -1899,25 +1899,25 @@ from t9 where c1= 1 ; 1 1 1 1 1 1 1 1 1 1 1.0000 1.0000 2004-02-29 2004-02-29 11:11:11 2004-02-29 11:11:11 11:11:11 2004 1 1 a 123456789a 123456789a123456789b123456789c tinyblob tinytext blob text mediumblob mediumtext longblob longtext one monday execute full_info ; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def @arg01 253 20 1 Y 128 31 63 -def @arg02 253 20 1 Y 128 31 63 -def @arg03 253 20 1 Y 128 31 63 -def @arg04 253 20 1 Y 128 31 63 -def @arg05 253 20 1 Y 128 31 63 -def @arg06 253 20 1 Y 128 31 63 -def @arg07 253 20 1 Y 128 31 63 -def @arg08 253 20 1 Y 128 31 63 -def @arg09 253 20 1 Y 128 31 63 -def @arg10 253 20 1 Y 128 31 63 -def @arg11 253 64 6 Y 128 30 63 -def @arg12 253 64 6 Y 128 30 63 +def @arg01 253 20 1 Y 128 0 63 +def @arg02 253 20 1 Y 128 0 63 +def @arg03 253 20 1 Y 128 0 63 +def @arg04 253 20 1 Y 128 0 63 +def @arg05 253 20 1 Y 128 0 63 +def @arg06 253 20 1 Y 128 0 63 +def @arg07 253 23 1 Y 128 31 63 +def @arg08 253 23 1 Y 128 31 63 +def @arg09 253 23 1 Y 128 31 63 +def @arg10 253 23 1 Y 128 31 63 +def @arg11 253 67 6 Y 128 30 63 +def @arg12 253 67 6 Y 128 30 63 def @arg13 253 8192 10 Y 128 31 63 def @arg14 253 8192 19 Y 128 31 63 def @arg15 253 8192 19 Y 128 31 63 def @arg16 253 8192 8 Y 128 31 63 -def @arg17 253 20 4 Y 128 31 63 -def @arg18 253 20 1 Y 128 31 63 -def @arg19 253 20 1 Y 128 31 63 +def @arg17 253 20 4 Y 128 0 63 +def @arg18 253 20 1 Y 128 0 63 +def @arg19 253 20 1 Y 128 0 63 def @arg20 253 8192 1 Y 0 31 8 def @arg21 253 8192 10 Y 0 31 8 def @arg22 253 8192 30 Y 0 31 8 @@ -1946,25 +1946,25 @@ from t9 where c1= 0 ; 0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1991-01-01 01:01:01 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL execute full_info ; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def @arg01 253 20 1 Y 128 31 63 -def @arg02 253 20 0 Y 128 31 63 -def @arg03 253 20 0 Y 128 31 63 -def @arg04 253 20 0 Y 128 31 63 -def @arg05 253 20 0 Y 128 31 63 -def @arg06 253 20 0 Y 128 31 63 -def @arg07 253 20 0 Y 128 31 63 -def @arg08 253 20 0 Y 128 31 63 -def @arg09 253 20 0 Y 128 31 63 -def @arg10 253 20 0 Y 128 31 63 -def @arg11 253 64 0 Y 128 30 63 -def @arg12 253 64 0 Y 128 30 63 +def @arg01 253 20 1 Y 128 0 63 +def @arg02 253 20 0 Y 128 0 63 +def @arg03 253 20 0 Y 128 0 63 +def @arg04 253 20 0 Y 128 0 63 +def @arg05 253 20 0 Y 128 0 63 +def @arg06 253 20 0 Y 128 0 63 +def @arg07 253 23 0 Y 128 31 63 +def @arg08 253 23 0 Y 128 31 63 +def @arg09 253 23 0 Y 128 31 63 +def @arg10 253 23 0 Y 128 31 63 +def @arg11 253 67 0 Y 128 30 63 +def @arg12 253 67 0 Y 128 30 63 def @arg13 253 8192 0 Y 128 31 63 def @arg14 253 8192 0 Y 128 31 63 def @arg15 253 8192 19 Y 128 31 63 def @arg16 253 8192 0 Y 128 31 63 -def @arg17 253 20 0 Y 128 31 63 -def @arg18 253 20 0 Y 128 31 63 -def @arg19 253 20 0 Y 128 31 63 +def @arg17 253 20 0 Y 128 0 63 +def @arg18 253 20 0 Y 128 0 63 +def @arg19 253 20 0 Y 128 0 63 def @arg20 253 8192 0 Y 0 31 8 def @arg21 253 8192 0 Y 0 31 8 def @arg22 253 8192 0 Y 0 31 8 @@ -1996,25 +1996,25 @@ execute stmt1 using @my_key ; 1 1 1 1 1 1 1 1 1 1 1.0000 1.0000 2004-02-29 2004-02-29 11:11:11 2004-02-29 11:11:11 11:11:11 2004 1 1 a 123456789a 123456789a123456789b123456789c tinyblob tinytext blob text mediumblob mediumtext longblob longtext one monday execute full_info ; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def @arg01 253 20 1 Y 128 31 63 -def @arg02 253 20 1 Y 128 31 63 -def @arg03 253 20 1 Y 128 31 63 -def @arg04 253 20 1 Y 128 31 63 -def @arg05 253 20 1 Y 128 31 63 -def @arg06 253 20 1 Y 128 31 63 -def @arg07 253 20 1 Y 128 31 63 -def @arg08 253 20 1 Y 128 31 63 -def @arg09 253 20 1 Y 128 31 63 -def @arg10 253 20 1 Y 128 31 63 -def @arg11 253 64 6 Y 128 30 63 -def @arg12 253 64 6 Y 128 30 63 +def @arg01 253 20 1 Y 128 0 63 +def @arg02 253 20 1 Y 128 0 63 +def @arg03 253 20 1 Y 128 0 63 +def @arg04 253 20 1 Y 128 0 63 +def @arg05 253 20 1 Y 128 0 63 +def @arg06 253 20 1 Y 128 0 63 +def @arg07 253 23 1 Y 128 31 63 +def @arg08 253 23 1 Y 128 31 63 +def @arg09 253 23 1 Y 128 31 63 +def @arg10 253 23 1 Y 128 31 63 +def @arg11 253 67 6 Y 128 30 63 +def @arg12 253 67 6 Y 128 30 63 def @arg13 253 8192 10 Y 128 31 63 def @arg14 253 8192 19 Y 128 31 63 def @arg15 253 8192 19 Y 128 31 63 def @arg16 253 8192 8 Y 128 31 63 -def @arg17 253 20 4 Y 128 31 63 -def @arg18 253 20 1 Y 128 31 63 -def @arg19 253 20 1 Y 128 31 63 +def @arg17 253 20 4 Y 128 0 63 +def @arg18 253 20 1 Y 128 0 63 +def @arg19 253 20 1 Y 128 0 63 def @arg20 253 8192 1 Y 0 31 8 def @arg21 253 8192 10 Y 0 31 8 def @arg22 253 8192 30 Y 0 31 8 @@ -2036,25 +2036,25 @@ execute stmt1 using @my_key ; 0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1991-01-01 01:01:01 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL execute full_info ; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def @arg01 253 20 1 Y 128 31 63 -def @arg02 253 20 0 Y 128 31 63 -def @arg03 253 20 0 Y 128 31 63 -def @arg04 253 20 0 Y 128 31 63 -def @arg05 253 20 0 Y 128 31 63 -def @arg06 253 20 0 Y 128 31 63 -def @arg07 253 20 0 Y 128 31 63 -def @arg08 253 20 0 Y 128 31 63 -def @arg09 253 20 0 Y 128 31 63 -def @arg10 253 20 0 Y 128 31 63 -def @arg11 253 64 0 Y 128 30 63 -def @arg12 253 64 0 Y 128 30 63 +def @arg01 253 20 1 Y 128 0 63 +def @arg02 253 20 0 Y 128 0 63 +def @arg03 253 20 0 Y 128 0 63 +def @arg04 253 20 0 Y 128 0 63 +def @arg05 253 20 0 Y 128 0 63 +def @arg06 253 20 0 Y 128 0 63 +def @arg07 253 23 0 Y 128 31 63 +def @arg08 253 23 0 Y 128 31 63 +def @arg09 253 23 0 Y 128 31 63 +def @arg10 253 23 0 Y 128 31 63 +def @arg11 253 67 0 Y 128 30 63 +def @arg12 253 67 0 Y 128 30 63 def @arg13 253 8192 0 Y 128 31 63 def @arg14 253 8192 0 Y 128 31 63 def @arg15 253 8192 19 Y 128 31 63 def @arg16 253 8192 0 Y 128 31 63 -def @arg17 253 20 0 Y 128 31 63 -def @arg18 253 20 0 Y 128 31 63 -def @arg19 253 20 0 Y 128 31 63 +def @arg17 253 20 0 Y 128 0 63 +def @arg18 253 20 0 Y 128 0 63 +def @arg19 253 20 0 Y 128 0 63 def @arg20 253 8192 0 Y 0 31 8 def @arg21 253 8192 0 Y 0 31 8 def @arg22 253 8192 0 Y 0 31 8 @@ -2084,25 +2084,25 @@ into @arg01, @arg02, @arg03, @arg04, @arg05, @arg06, @arg07, @arg08, from t9 where c1= 1 ; execute full_info ; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def @arg01 253 20 1 Y 128 31 63 -def @arg02 253 20 1 Y 128 31 63 -def @arg03 253 20 1 Y 128 31 63 -def @arg04 253 20 1 Y 128 31 63 -def @arg05 253 20 1 Y 128 31 63 -def @arg06 253 20 1 Y 128 31 63 -def @arg07 253 20 1 Y 128 31 63 -def @arg08 253 20 1 Y 128 31 63 -def @arg09 253 20 1 Y 128 31 63 -def @arg10 253 20 1 Y 128 31 63 -def @arg11 253 64 6 Y 128 30 63 -def @arg12 253 64 6 Y 128 30 63 +def @arg01 253 20 1 Y 128 0 63 +def @arg02 253 20 1 Y 128 0 63 +def @arg03 253 20 1 Y 128 0 63 +def @arg04 253 20 1 Y 128 0 63 +def @arg05 253 20 1 Y 128 0 63 +def @arg06 253 20 1 Y 128 0 63 +def @arg07 253 23 1 Y 128 31 63 +def @arg08 253 23 1 Y 128 31 63 +def @arg09 253 23 1 Y 128 31 63 +def @arg10 253 23 1 Y 128 31 63 +def @arg11 253 67 6 Y 128 30 63 +def @arg12 253 67 6 Y 128 30 63 def @arg13 253 8192 10 Y 128 31 63 def @arg14 253 8192 19 Y 128 31 63 def @arg15 253 8192 19 Y 128 31 63 def @arg16 253 8192 8 Y 128 31 63 -def @arg17 253 20 4 Y 128 31 63 -def @arg18 253 20 1 Y 128 31 63 -def @arg19 253 20 1 Y 128 31 63 +def @arg17 253 20 4 Y 128 0 63 +def @arg18 253 20 1 Y 128 0 63 +def @arg19 253 20 1 Y 128 0 63 def @arg20 253 8192 1 Y 0 31 8 def @arg21 253 8192 10 Y 0 31 8 def @arg22 253 8192 30 Y 0 31 8 @@ -2128,25 +2128,25 @@ into @arg01, @arg02, @arg03, @arg04, @arg05, @arg06, @arg07, @arg08, from t9 where c1= 0 ; execute full_info ; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def @arg01 253 20 1 Y 128 31 63 -def @arg02 253 20 0 Y 128 31 63 -def @arg03 253 20 0 Y 128 31 63 -def @arg04 253 20 0 Y 128 31 63 -def @arg05 253 20 0 Y 128 31 63 -def @arg06 253 20 0 Y 128 31 63 -def @arg07 253 20 0 Y 128 31 63 -def @arg08 253 20 0 Y 128 31 63 -def @arg09 253 20 0 Y 128 31 63 -def @arg10 253 20 0 Y 128 31 63 -def @arg11 253 64 0 Y 128 30 63 -def @arg12 253 64 0 Y 128 30 63 +def @arg01 253 20 1 Y 128 0 63 +def @arg02 253 20 0 Y 128 0 63 +def @arg03 253 20 0 Y 128 0 63 +def @arg04 253 20 0 Y 128 0 63 +def @arg05 253 20 0 Y 128 0 63 +def @arg06 253 20 0 Y 128 0 63 +def @arg07 253 23 0 Y 128 31 63 +def @arg08 253 23 0 Y 128 31 63 +def @arg09 253 23 0 Y 128 31 63 +def @arg10 253 23 0 Y 128 31 63 +def @arg11 253 67 0 Y 128 30 63 +def @arg12 253 67 0 Y 128 30 63 def @arg13 253 8192 0 Y 128 31 63 def @arg14 253 8192 0 Y 128 31 63 def @arg15 253 8192 19 Y 128 31 63 def @arg16 253 8192 0 Y 128 31 63 -def @arg17 253 20 0 Y 128 31 63 -def @arg18 253 20 0 Y 128 31 63 -def @arg19 253 20 0 Y 128 31 63 +def @arg17 253 20 0 Y 128 0 63 +def @arg18 253 20 0 Y 128 0 63 +def @arg19 253 20 0 Y 128 0 63 def @arg20 253 8192 0 Y 0 31 8 def @arg21 253 8192 0 Y 0 31 8 def @arg22 253 8192 0 Y 0 31 8 @@ -2174,25 +2174,25 @@ set @my_key= 1 ; execute stmt1 using @my_key ; execute full_info ; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def @arg01 253 20 1 Y 128 31 63 -def @arg02 253 20 1 Y 128 31 63 -def @arg03 253 20 1 Y 128 31 63 -def @arg04 253 20 1 Y 128 31 63 -def @arg05 253 20 1 Y 128 31 63 -def @arg06 253 20 1 Y 128 31 63 -def @arg07 253 20 1 Y 128 31 63 -def @arg08 253 20 1 Y 128 31 63 -def @arg09 253 20 1 Y 128 31 63 -def @arg10 253 20 1 Y 128 31 63 -def @arg11 253 64 6 Y 128 30 63 -def @arg12 253 64 6 Y 128 30 63 +def @arg01 253 20 1 Y 128 0 63 +def @arg02 253 20 1 Y 128 0 63 +def @arg03 253 20 1 Y 128 0 63 +def @arg04 253 20 1 Y 128 0 63 +def @arg05 253 20 1 Y 128 0 63 +def @arg06 253 20 1 Y 128 0 63 +def @arg07 253 23 1 Y 128 31 63 +def @arg08 253 23 1 Y 128 31 63 +def @arg09 253 23 1 Y 128 31 63 +def @arg10 253 23 1 Y 128 31 63 +def @arg11 253 67 6 Y 128 30 63 +def @arg12 253 67 6 Y 128 30 63 def @arg13 253 8192 10 Y 128 31 63 def @arg14 253 8192 19 Y 128 31 63 def @arg15 253 8192 19 Y 128 31 63 def @arg16 253 8192 8 Y 128 31 63 -def @arg17 253 20 4 Y 128 31 63 -def @arg18 253 20 1 Y 128 31 63 -def @arg19 253 20 1 Y 128 31 63 +def @arg17 253 20 4 Y 128 0 63 +def @arg18 253 20 1 Y 128 0 63 +def @arg19 253 20 1 Y 128 0 63 def @arg20 253 8192 1 Y 0 31 8 def @arg21 253 8192 10 Y 0 31 8 def @arg22 253 8192 30 Y 0 31 8 @@ -2212,25 +2212,25 @@ set @my_key= 0 ; execute stmt1 using @my_key ; execute full_info ; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def @arg01 253 20 1 Y 128 31 63 -def @arg02 253 20 0 Y 128 31 63 -def @arg03 253 20 0 Y 128 31 63 -def @arg04 253 20 0 Y 128 31 63 -def @arg05 253 20 0 Y 128 31 63 -def @arg06 253 20 0 Y 128 31 63 -def @arg07 253 20 0 Y 128 31 63 -def @arg08 253 20 0 Y 128 31 63 -def @arg09 253 20 0 Y 128 31 63 -def @arg10 253 20 0 Y 128 31 63 -def @arg11 253 64 0 Y 128 30 63 -def @arg12 253 64 0 Y 128 30 63 +def @arg01 253 20 1 Y 128 0 63 +def @arg02 253 20 0 Y 128 0 63 +def @arg03 253 20 0 Y 128 0 63 +def @arg04 253 20 0 Y 128 0 63 +def @arg05 253 20 0 Y 128 0 63 +def @arg06 253 20 0 Y 128 0 63 +def @arg07 253 23 0 Y 128 31 63 +def @arg08 253 23 0 Y 128 31 63 +def @arg09 253 23 0 Y 128 31 63 +def @arg10 253 23 0 Y 128 31 63 +def @arg11 253 67 0 Y 128 30 63 +def @arg12 253 67 0 Y 128 30 63 def @arg13 253 8192 0 Y 128 31 63 def @arg14 253 8192 0 Y 128 31 63 def @arg15 253 8192 19 Y 128 31 63 def @arg16 253 8192 0 Y 128 31 63 -def @arg17 253 20 0 Y 128 31 63 -def @arg18 253 20 0 Y 128 31 63 -def @arg19 253 20 0 Y 128 31 63 +def @arg17 253 20 0 Y 128 0 63 +def @arg18 253 20 0 Y 128 0 63 +def @arg19 253 20 0 Y 128 0 63 def @arg20 253 8192 0 Y 0 31 8 def @arg21 253 8192 0 Y 0 31 8 def @arg22 253 8192 0 Y 0 31 8 diff --git a/mysql-test/r/ps_4heap.result b/mysql-test/r/ps_4heap.result index 899299fa36c..009b642d7e7 100644 --- a/mysql-test/r/ps_4heap.result +++ b/mysql-test/r/ps_4heap.result @@ -60,8 +60,8 @@ def test t9 t9 c7 c7 4 12 1 Y 32768 31 63 def test t9 t9 c8 c8 5 22 1 Y 32768 31 63 def test t9 t9 c9 c9 5 22 1 Y 32768 31 63 def test t9 t9 c10 c10 5 22 1 Y 32768 31 63 -def test t9 t9 c11 c11 246 7 6 Y 0 4 63 -def test t9 t9 c12 c12 246 8 6 Y 0 4 63 +def test t9 t9 c11 c11 246 9 6 Y 0 4 63 +def test t9 t9 c12 c12 246 10 6 Y 0 4 63 def test t9 t9 c13 c13 10 10 10 Y 128 0 63 def test t9 t9 c14 c14 12 19 19 Y 128 0 63 def test t9 t9 c15 c15 7 19 19 N 1249 0 63 @@ -1760,8 +1760,8 @@ Table Create Table t5 CREATE TABLE `t5` ( `const01` bigint(1) NOT NULL default '0', `param01` bigint(20) default NULL, - `const02` decimal(3,1) NOT NULL default '0.0', - `param02` decimal(64,30) default NULL, + `const02` decimal(2,1) NOT NULL default '0.0', + `param02` decimal(65,30) default NULL, `const03` double NOT NULL default '0', `param03` double default NULL, `const04` varchar(3) NOT NULL default '', @@ -1782,7 +1782,7 @@ t5 CREATE TABLE `t5` ( `param11` bigint(20) default NULL, `const12` binary(0) default NULL, `param12` bigint(20) default NULL, - `param13` decimal(64,30) default NULL, + `param13` decimal(65,30) default NULL, `param14` longtext, `param15` longblob ) ENGINE=MyISAM DEFAULT CHARSET=latin1 @@ -1790,10 +1790,10 @@ select * from t5 ; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def test t5 t5 const01 const01 8 1 1 N 32769 0 63 def test t5 t5 param01 param01 8 20 1 Y 32768 0 63 -def test t5 t5 const02 const02 246 3 3 N 1 1 63 -def test t5 t5 param02 param02 246 64 32 Y 0 30 63 +def test t5 t5 const02 const02 246 4 3 N 1 1 63 +def test t5 t5 param02 param02 246 67 32 Y 0 30 63 def test t5 t5 const03 const03 5 17 1 N 32769 31 63 -def test t5 t5 param03 param03 5 20 1 Y 32768 31 63 +def test t5 t5 param03 param03 5 23 1 Y 32768 31 63 def test t5 t5 const04 const04 253 3 3 N 1 0 8 def test t5 t5 param04 param04 252 16777215 3 Y 16 0 8 def test t5 t5 const05 const05 253 3 3 N 129 0 63 @@ -1812,7 +1812,7 @@ def test t5 t5 const11 const11 3 4 4 Y 32768 0 63 def test t5 t5 param11 param11 8 20 4 Y 32768 0 63 def test t5 t5 const12 const12 254 0 0 Y 128 0 63 def test t5 t5 param12 param12 8 20 0 Y 32768 0 63 -def test t5 t5 param13 param13 246 64 0 Y 0 30 63 +def test t5 t5 param13 param13 246 67 0 Y 0 30 63 def test t5 t5 param14 param14 252 16777215 0 Y 16 0 8 def test t5 t5 param15 param15 252 16777215 0 Y 144 0 63 const01 8 @@ -1900,25 +1900,25 @@ from t9 where c1= 1 ; 1 1 1 1 1 1 1 1 1 1 1.0000 1.0000 2004-02-29 2004-02-29 11:11:11 2004-02-29 11:11:11 11:11:11 2004 1 1 a 123456789a 123456789a123456789b123456789c tinyblob tinytext blob text mediumblob mediumtext longblob longtext one monday execute full_info ; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def @arg01 253 20 1 Y 128 31 63 -def @arg02 253 20 1 Y 128 31 63 -def @arg03 253 20 1 Y 128 31 63 -def @arg04 253 20 1 Y 128 31 63 -def @arg05 253 20 1 Y 128 31 63 -def @arg06 253 20 1 Y 128 31 63 -def @arg07 253 20 1 Y 128 31 63 -def @arg08 253 20 1 Y 128 31 63 -def @arg09 253 20 1 Y 128 31 63 -def @arg10 253 20 1 Y 128 31 63 -def @arg11 253 64 6 Y 128 30 63 -def @arg12 253 64 6 Y 128 30 63 +def @arg01 253 20 1 Y 128 0 63 +def @arg02 253 20 1 Y 128 0 63 +def @arg03 253 20 1 Y 128 0 63 +def @arg04 253 20 1 Y 128 0 63 +def @arg05 253 20 1 Y 128 0 63 +def @arg06 253 20 1 Y 128 0 63 +def @arg07 253 23 1 Y 128 31 63 +def @arg08 253 23 1 Y 128 31 63 +def @arg09 253 23 1 Y 128 31 63 +def @arg10 253 23 1 Y 128 31 63 +def @arg11 253 67 6 Y 128 30 63 +def @arg12 253 67 6 Y 128 30 63 def @arg13 253 8192 10 Y 128 31 63 def @arg14 253 8192 19 Y 128 31 63 def @arg15 253 8192 19 Y 128 31 63 def @arg16 253 8192 8 Y 128 31 63 -def @arg17 253 20 4 Y 128 31 63 -def @arg18 253 20 1 Y 128 31 63 -def @arg19 253 20 1 Y 128 31 63 +def @arg17 253 20 4 Y 128 0 63 +def @arg18 253 20 1 Y 128 0 63 +def @arg19 253 20 1 Y 128 0 63 def @arg20 253 8192 1 Y 0 31 8 def @arg21 253 8192 10 Y 0 31 8 def @arg22 253 8192 30 Y 0 31 8 @@ -1947,25 +1947,25 @@ from t9 where c1= 0 ; 0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1991-01-01 01:01:01 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL execute full_info ; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def @arg01 253 20 1 Y 128 31 63 -def @arg02 253 20 0 Y 128 31 63 -def @arg03 253 20 0 Y 128 31 63 -def @arg04 253 20 0 Y 128 31 63 -def @arg05 253 20 0 Y 128 31 63 -def @arg06 253 20 0 Y 128 31 63 -def @arg07 253 20 0 Y 128 31 63 -def @arg08 253 20 0 Y 128 31 63 -def @arg09 253 20 0 Y 128 31 63 -def @arg10 253 20 0 Y 128 31 63 -def @arg11 253 64 0 Y 128 30 63 -def @arg12 253 64 0 Y 128 30 63 +def @arg01 253 20 1 Y 128 0 63 +def @arg02 253 20 0 Y 128 0 63 +def @arg03 253 20 0 Y 128 0 63 +def @arg04 253 20 0 Y 128 0 63 +def @arg05 253 20 0 Y 128 0 63 +def @arg06 253 20 0 Y 128 0 63 +def @arg07 253 23 0 Y 128 31 63 +def @arg08 253 23 0 Y 128 31 63 +def @arg09 253 23 0 Y 128 31 63 +def @arg10 253 23 0 Y 128 31 63 +def @arg11 253 67 0 Y 128 30 63 +def @arg12 253 67 0 Y 128 30 63 def @arg13 253 8192 0 Y 128 31 63 def @arg14 253 8192 0 Y 128 31 63 def @arg15 253 8192 19 Y 128 31 63 def @arg16 253 8192 0 Y 128 31 63 -def @arg17 253 20 0 Y 128 31 63 -def @arg18 253 20 0 Y 128 31 63 -def @arg19 253 20 0 Y 128 31 63 +def @arg17 253 20 0 Y 128 0 63 +def @arg18 253 20 0 Y 128 0 63 +def @arg19 253 20 0 Y 128 0 63 def @arg20 253 8192 0 Y 0 31 8 def @arg21 253 8192 0 Y 0 31 8 def @arg22 253 8192 0 Y 0 31 8 @@ -1997,25 +1997,25 @@ execute stmt1 using @my_key ; 1 1 1 1 1 1 1 1 1 1 1.0000 1.0000 2004-02-29 2004-02-29 11:11:11 2004-02-29 11:11:11 11:11:11 2004 1 1 a 123456789a 123456789a123456789b123456789c tinyblob tinytext blob text mediumblob mediumtext longblob longtext one monday execute full_info ; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def @arg01 253 20 1 Y 128 31 63 -def @arg02 253 20 1 Y 128 31 63 -def @arg03 253 20 1 Y 128 31 63 -def @arg04 253 20 1 Y 128 31 63 -def @arg05 253 20 1 Y 128 31 63 -def @arg06 253 20 1 Y 128 31 63 -def @arg07 253 20 1 Y 128 31 63 -def @arg08 253 20 1 Y 128 31 63 -def @arg09 253 20 1 Y 128 31 63 -def @arg10 253 20 1 Y 128 31 63 -def @arg11 253 64 6 Y 128 30 63 -def @arg12 253 64 6 Y 128 30 63 +def @arg01 253 20 1 Y 128 0 63 +def @arg02 253 20 1 Y 128 0 63 +def @arg03 253 20 1 Y 128 0 63 +def @arg04 253 20 1 Y 128 0 63 +def @arg05 253 20 1 Y 128 0 63 +def @arg06 253 20 1 Y 128 0 63 +def @arg07 253 23 1 Y 128 31 63 +def @arg08 253 23 1 Y 128 31 63 +def @arg09 253 23 1 Y 128 31 63 +def @arg10 253 23 1 Y 128 31 63 +def @arg11 253 67 6 Y 128 30 63 +def @arg12 253 67 6 Y 128 30 63 def @arg13 253 8192 10 Y 128 31 63 def @arg14 253 8192 19 Y 128 31 63 def @arg15 253 8192 19 Y 128 31 63 def @arg16 253 8192 8 Y 128 31 63 -def @arg17 253 20 4 Y 128 31 63 -def @arg18 253 20 1 Y 128 31 63 -def @arg19 253 20 1 Y 128 31 63 +def @arg17 253 20 4 Y 128 0 63 +def @arg18 253 20 1 Y 128 0 63 +def @arg19 253 20 1 Y 128 0 63 def @arg20 253 8192 1 Y 0 31 8 def @arg21 253 8192 10 Y 0 31 8 def @arg22 253 8192 30 Y 0 31 8 @@ -2037,25 +2037,25 @@ execute stmt1 using @my_key ; 0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1991-01-01 01:01:01 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL execute full_info ; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def @arg01 253 20 1 Y 128 31 63 -def @arg02 253 20 0 Y 128 31 63 -def @arg03 253 20 0 Y 128 31 63 -def @arg04 253 20 0 Y 128 31 63 -def @arg05 253 20 0 Y 128 31 63 -def @arg06 253 20 0 Y 128 31 63 -def @arg07 253 20 0 Y 128 31 63 -def @arg08 253 20 0 Y 128 31 63 -def @arg09 253 20 0 Y 128 31 63 -def @arg10 253 20 0 Y 128 31 63 -def @arg11 253 64 0 Y 128 30 63 -def @arg12 253 64 0 Y 128 30 63 +def @arg01 253 20 1 Y 128 0 63 +def @arg02 253 20 0 Y 128 0 63 +def @arg03 253 20 0 Y 128 0 63 +def @arg04 253 20 0 Y 128 0 63 +def @arg05 253 20 0 Y 128 0 63 +def @arg06 253 20 0 Y 128 0 63 +def @arg07 253 23 0 Y 128 31 63 +def @arg08 253 23 0 Y 128 31 63 +def @arg09 253 23 0 Y 128 31 63 +def @arg10 253 23 0 Y 128 31 63 +def @arg11 253 67 0 Y 128 30 63 +def @arg12 253 67 0 Y 128 30 63 def @arg13 253 8192 0 Y 128 31 63 def @arg14 253 8192 0 Y 128 31 63 def @arg15 253 8192 19 Y 128 31 63 def @arg16 253 8192 0 Y 128 31 63 -def @arg17 253 20 0 Y 128 31 63 -def @arg18 253 20 0 Y 128 31 63 -def @arg19 253 20 0 Y 128 31 63 +def @arg17 253 20 0 Y 128 0 63 +def @arg18 253 20 0 Y 128 0 63 +def @arg19 253 20 0 Y 128 0 63 def @arg20 253 8192 0 Y 0 31 8 def @arg21 253 8192 0 Y 0 31 8 def @arg22 253 8192 0 Y 0 31 8 @@ -2085,25 +2085,25 @@ into @arg01, @arg02, @arg03, @arg04, @arg05, @arg06, @arg07, @arg08, from t9 where c1= 1 ; execute full_info ; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def @arg01 253 20 1 Y 128 31 63 -def @arg02 253 20 1 Y 128 31 63 -def @arg03 253 20 1 Y 128 31 63 -def @arg04 253 20 1 Y 128 31 63 -def @arg05 253 20 1 Y 128 31 63 -def @arg06 253 20 1 Y 128 31 63 -def @arg07 253 20 1 Y 128 31 63 -def @arg08 253 20 1 Y 128 31 63 -def @arg09 253 20 1 Y 128 31 63 -def @arg10 253 20 1 Y 128 31 63 -def @arg11 253 64 6 Y 128 30 63 -def @arg12 253 64 6 Y 128 30 63 +def @arg01 253 20 1 Y 128 0 63 +def @arg02 253 20 1 Y 128 0 63 +def @arg03 253 20 1 Y 128 0 63 +def @arg04 253 20 1 Y 128 0 63 +def @arg05 253 20 1 Y 128 0 63 +def @arg06 253 20 1 Y 128 0 63 +def @arg07 253 23 1 Y 128 31 63 +def @arg08 253 23 1 Y 128 31 63 +def @arg09 253 23 1 Y 128 31 63 +def @arg10 253 23 1 Y 128 31 63 +def @arg11 253 67 6 Y 128 30 63 +def @arg12 253 67 6 Y 128 30 63 def @arg13 253 8192 10 Y 128 31 63 def @arg14 253 8192 19 Y 128 31 63 def @arg15 253 8192 19 Y 128 31 63 def @arg16 253 8192 8 Y 128 31 63 -def @arg17 253 20 4 Y 128 31 63 -def @arg18 253 20 1 Y 128 31 63 -def @arg19 253 20 1 Y 128 31 63 +def @arg17 253 20 4 Y 128 0 63 +def @arg18 253 20 1 Y 128 0 63 +def @arg19 253 20 1 Y 128 0 63 def @arg20 253 8192 1 Y 0 31 8 def @arg21 253 8192 10 Y 0 31 8 def @arg22 253 8192 30 Y 0 31 8 @@ -2129,25 +2129,25 @@ into @arg01, @arg02, @arg03, @arg04, @arg05, @arg06, @arg07, @arg08, from t9 where c1= 0 ; execute full_info ; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def @arg01 253 20 1 Y 128 31 63 -def @arg02 253 20 0 Y 128 31 63 -def @arg03 253 20 0 Y 128 31 63 -def @arg04 253 20 0 Y 128 31 63 -def @arg05 253 20 0 Y 128 31 63 -def @arg06 253 20 0 Y 128 31 63 -def @arg07 253 20 0 Y 128 31 63 -def @arg08 253 20 0 Y 128 31 63 -def @arg09 253 20 0 Y 128 31 63 -def @arg10 253 20 0 Y 128 31 63 -def @arg11 253 64 0 Y 128 30 63 -def @arg12 253 64 0 Y 128 30 63 +def @arg01 253 20 1 Y 128 0 63 +def @arg02 253 20 0 Y 128 0 63 +def @arg03 253 20 0 Y 128 0 63 +def @arg04 253 20 0 Y 128 0 63 +def @arg05 253 20 0 Y 128 0 63 +def @arg06 253 20 0 Y 128 0 63 +def @arg07 253 23 0 Y 128 31 63 +def @arg08 253 23 0 Y 128 31 63 +def @arg09 253 23 0 Y 128 31 63 +def @arg10 253 23 0 Y 128 31 63 +def @arg11 253 67 0 Y 128 30 63 +def @arg12 253 67 0 Y 128 30 63 def @arg13 253 8192 0 Y 128 31 63 def @arg14 253 8192 0 Y 128 31 63 def @arg15 253 8192 19 Y 128 31 63 def @arg16 253 8192 0 Y 128 31 63 -def @arg17 253 20 0 Y 128 31 63 -def @arg18 253 20 0 Y 128 31 63 -def @arg19 253 20 0 Y 128 31 63 +def @arg17 253 20 0 Y 128 0 63 +def @arg18 253 20 0 Y 128 0 63 +def @arg19 253 20 0 Y 128 0 63 def @arg20 253 8192 0 Y 0 31 8 def @arg21 253 8192 0 Y 0 31 8 def @arg22 253 8192 0 Y 0 31 8 @@ -2175,25 +2175,25 @@ set @my_key= 1 ; execute stmt1 using @my_key ; execute full_info ; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def @arg01 253 20 1 Y 128 31 63 -def @arg02 253 20 1 Y 128 31 63 -def @arg03 253 20 1 Y 128 31 63 -def @arg04 253 20 1 Y 128 31 63 -def @arg05 253 20 1 Y 128 31 63 -def @arg06 253 20 1 Y 128 31 63 -def @arg07 253 20 1 Y 128 31 63 -def @arg08 253 20 1 Y 128 31 63 -def @arg09 253 20 1 Y 128 31 63 -def @arg10 253 20 1 Y 128 31 63 -def @arg11 253 64 6 Y 128 30 63 -def @arg12 253 64 6 Y 128 30 63 +def @arg01 253 20 1 Y 128 0 63 +def @arg02 253 20 1 Y 128 0 63 +def @arg03 253 20 1 Y 128 0 63 +def @arg04 253 20 1 Y 128 0 63 +def @arg05 253 20 1 Y 128 0 63 +def @arg06 253 20 1 Y 128 0 63 +def @arg07 253 23 1 Y 128 31 63 +def @arg08 253 23 1 Y 128 31 63 +def @arg09 253 23 1 Y 128 31 63 +def @arg10 253 23 1 Y 128 31 63 +def @arg11 253 67 6 Y 128 30 63 +def @arg12 253 67 6 Y 128 30 63 def @arg13 253 8192 10 Y 128 31 63 def @arg14 253 8192 19 Y 128 31 63 def @arg15 253 8192 19 Y 128 31 63 def @arg16 253 8192 8 Y 128 31 63 -def @arg17 253 20 4 Y 128 31 63 -def @arg18 253 20 1 Y 128 31 63 -def @arg19 253 20 1 Y 128 31 63 +def @arg17 253 20 4 Y 128 0 63 +def @arg18 253 20 1 Y 128 0 63 +def @arg19 253 20 1 Y 128 0 63 def @arg20 253 8192 1 Y 0 31 8 def @arg21 253 8192 10 Y 0 31 8 def @arg22 253 8192 30 Y 0 31 8 @@ -2213,25 +2213,25 @@ set @my_key= 0 ; execute stmt1 using @my_key ; execute full_info ; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def @arg01 253 20 1 Y 128 31 63 -def @arg02 253 20 0 Y 128 31 63 -def @arg03 253 20 0 Y 128 31 63 -def @arg04 253 20 0 Y 128 31 63 -def @arg05 253 20 0 Y 128 31 63 -def @arg06 253 20 0 Y 128 31 63 -def @arg07 253 20 0 Y 128 31 63 -def @arg08 253 20 0 Y 128 31 63 -def @arg09 253 20 0 Y 128 31 63 -def @arg10 253 20 0 Y 128 31 63 -def @arg11 253 64 0 Y 128 30 63 -def @arg12 253 64 0 Y 128 30 63 +def @arg01 253 20 1 Y 128 0 63 +def @arg02 253 20 0 Y 128 0 63 +def @arg03 253 20 0 Y 128 0 63 +def @arg04 253 20 0 Y 128 0 63 +def @arg05 253 20 0 Y 128 0 63 +def @arg06 253 20 0 Y 128 0 63 +def @arg07 253 23 0 Y 128 31 63 +def @arg08 253 23 0 Y 128 31 63 +def @arg09 253 23 0 Y 128 31 63 +def @arg10 253 23 0 Y 128 31 63 +def @arg11 253 67 0 Y 128 30 63 +def @arg12 253 67 0 Y 128 30 63 def @arg13 253 8192 0 Y 128 31 63 def @arg14 253 8192 0 Y 128 31 63 def @arg15 253 8192 19 Y 128 31 63 def @arg16 253 8192 0 Y 128 31 63 -def @arg17 253 20 0 Y 128 31 63 -def @arg18 253 20 0 Y 128 31 63 -def @arg19 253 20 0 Y 128 31 63 +def @arg17 253 20 0 Y 128 0 63 +def @arg18 253 20 0 Y 128 0 63 +def @arg19 253 20 0 Y 128 0 63 def @arg20 253 8192 0 Y 0 31 8 def @arg21 253 8192 0 Y 0 31 8 def @arg22 253 8192 0 Y 0 31 8 diff --git a/mysql-test/r/ps_5merge.result b/mysql-test/r/ps_5merge.result index 4a53fe47f3f..5bd18078213 100644 --- a/mysql-test/r/ps_5merge.result +++ b/mysql-test/r/ps_5merge.result @@ -102,8 +102,8 @@ def test t9 t9 c7 c7 4 12 1 Y 32768 31 63 def test t9 t9 c8 c8 5 22 1 Y 32768 31 63 def test t9 t9 c9 c9 5 22 1 Y 32768 31 63 def test t9 t9 c10 c10 5 22 1 Y 32768 31 63 -def test t9 t9 c11 c11 246 7 6 Y 0 4 63 -def test t9 t9 c12 c12 246 8 6 Y 0 4 63 +def test t9 t9 c11 c11 246 9 6 Y 0 4 63 +def test t9 t9 c12 c12 246 10 6 Y 0 4 63 def test t9 t9 c13 c13 10 10 10 Y 128 0 63 def test t9 t9 c14 c14 12 19 19 Y 128 0 63 def test t9 t9 c15 c15 7 19 19 N 1249 0 63 @@ -1696,8 +1696,8 @@ Table Create Table t5 CREATE TABLE `t5` ( `const01` bigint(1) NOT NULL default '0', `param01` bigint(20) default NULL, - `const02` decimal(3,1) NOT NULL default '0.0', - `param02` decimal(64,30) default NULL, + `const02` decimal(2,1) NOT NULL default '0.0', + `param02` decimal(65,30) default NULL, `const03` double NOT NULL default '0', `param03` double default NULL, `const04` varchar(3) NOT NULL default '', @@ -1718,7 +1718,7 @@ t5 CREATE TABLE `t5` ( `param11` bigint(20) default NULL, `const12` binary(0) default NULL, `param12` bigint(20) default NULL, - `param13` decimal(64,30) default NULL, + `param13` decimal(65,30) default NULL, `param14` longtext, `param15` longblob ) ENGINE=MyISAM DEFAULT CHARSET=latin1 @@ -1726,10 +1726,10 @@ select * from t5 ; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def test t5 t5 const01 const01 8 1 1 N 32769 0 63 def test t5 t5 param01 param01 8 20 1 Y 32768 0 63 -def test t5 t5 const02 const02 246 3 3 N 1 1 63 -def test t5 t5 param02 param02 246 64 32 Y 0 30 63 +def test t5 t5 const02 const02 246 4 3 N 1 1 63 +def test t5 t5 param02 param02 246 67 32 Y 0 30 63 def test t5 t5 const03 const03 5 17 1 N 32769 31 63 -def test t5 t5 param03 param03 5 20 1 Y 32768 31 63 +def test t5 t5 param03 param03 5 23 1 Y 32768 31 63 def test t5 t5 const04 const04 253 3 3 N 1 0 8 def test t5 t5 param04 param04 252 16777215 3 Y 16 0 8 def test t5 t5 const05 const05 253 3 3 N 129 0 63 @@ -1748,7 +1748,7 @@ def test t5 t5 const11 const11 3 4 4 Y 32768 0 63 def test t5 t5 param11 param11 8 20 4 Y 32768 0 63 def test t5 t5 const12 const12 254 0 0 Y 128 0 63 def test t5 t5 param12 param12 8 20 0 Y 32768 0 63 -def test t5 t5 param13 param13 246 64 0 Y 0 30 63 +def test t5 t5 param13 param13 246 67 0 Y 0 30 63 def test t5 t5 param14 param14 252 16777215 0 Y 16 0 8 def test t5 t5 param15 param15 252 16777215 0 Y 144 0 63 const01 8 @@ -1836,25 +1836,25 @@ from t9 where c1= 1 ; 1 1 1 1 1 1 1 1 1 1 1.0000 1.0000 2004-02-29 2004-02-29 11:11:11 2004-02-29 11:11:11 11:11:11 2004 1 1 a 123456789a 123456789a123456789b123456789c tinyblob tinytext blob text mediumblob mediumtext longblob longtext one monday execute full_info ; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def @arg01 253 20 1 Y 128 31 63 -def @arg02 253 20 1 Y 128 31 63 -def @arg03 253 20 1 Y 128 31 63 -def @arg04 253 20 1 Y 128 31 63 -def @arg05 253 20 1 Y 128 31 63 -def @arg06 253 20 1 Y 128 31 63 -def @arg07 253 20 1 Y 128 31 63 -def @arg08 253 20 1 Y 128 31 63 -def @arg09 253 20 1 Y 128 31 63 -def @arg10 253 20 1 Y 128 31 63 -def @arg11 253 64 6 Y 128 30 63 -def @arg12 253 64 6 Y 128 30 63 +def @arg01 253 20 1 Y 128 0 63 +def @arg02 253 20 1 Y 128 0 63 +def @arg03 253 20 1 Y 128 0 63 +def @arg04 253 20 1 Y 128 0 63 +def @arg05 253 20 1 Y 128 0 63 +def @arg06 253 20 1 Y 128 0 63 +def @arg07 253 23 1 Y 128 31 63 +def @arg08 253 23 1 Y 128 31 63 +def @arg09 253 23 1 Y 128 31 63 +def @arg10 253 23 1 Y 128 31 63 +def @arg11 253 67 6 Y 128 30 63 +def @arg12 253 67 6 Y 128 30 63 def @arg13 253 8192 10 Y 128 31 63 def @arg14 253 8192 19 Y 128 31 63 def @arg15 253 8192 19 Y 128 31 63 def @arg16 253 8192 8 Y 128 31 63 -def @arg17 253 20 4 Y 128 31 63 -def @arg18 253 20 1 Y 128 31 63 -def @arg19 253 20 1 Y 128 31 63 +def @arg17 253 20 4 Y 128 0 63 +def @arg18 253 20 1 Y 128 0 63 +def @arg19 253 20 1 Y 128 0 63 def @arg20 253 8192 1 Y 0 31 8 def @arg21 253 8192 10 Y 0 31 8 def @arg22 253 8192 30 Y 0 31 8 @@ -1883,25 +1883,25 @@ from t9 where c1= 0 ; 0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1991-01-01 01:01:01 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL execute full_info ; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def @arg01 253 20 1 Y 128 31 63 -def @arg02 253 20 0 Y 128 31 63 -def @arg03 253 20 0 Y 128 31 63 -def @arg04 253 20 0 Y 128 31 63 -def @arg05 253 20 0 Y 128 31 63 -def @arg06 253 20 0 Y 128 31 63 -def @arg07 253 20 0 Y 128 31 63 -def @arg08 253 20 0 Y 128 31 63 -def @arg09 253 20 0 Y 128 31 63 -def @arg10 253 20 0 Y 128 31 63 -def @arg11 253 64 0 Y 128 30 63 -def @arg12 253 64 0 Y 128 30 63 +def @arg01 253 20 1 Y 128 0 63 +def @arg02 253 20 0 Y 128 0 63 +def @arg03 253 20 0 Y 128 0 63 +def @arg04 253 20 0 Y 128 0 63 +def @arg05 253 20 0 Y 128 0 63 +def @arg06 253 20 0 Y 128 0 63 +def @arg07 253 23 0 Y 128 31 63 +def @arg08 253 23 0 Y 128 31 63 +def @arg09 253 23 0 Y 128 31 63 +def @arg10 253 23 0 Y 128 31 63 +def @arg11 253 67 0 Y 128 30 63 +def @arg12 253 67 0 Y 128 30 63 def @arg13 253 8192 0 Y 128 31 63 def @arg14 253 8192 0 Y 128 31 63 def @arg15 253 8192 19 Y 128 31 63 def @arg16 253 8192 0 Y 128 31 63 -def @arg17 253 20 0 Y 128 31 63 -def @arg18 253 20 0 Y 128 31 63 -def @arg19 253 20 0 Y 128 31 63 +def @arg17 253 20 0 Y 128 0 63 +def @arg18 253 20 0 Y 128 0 63 +def @arg19 253 20 0 Y 128 0 63 def @arg20 253 8192 0 Y 0 31 8 def @arg21 253 8192 0 Y 0 31 8 def @arg22 253 8192 0 Y 0 31 8 @@ -1933,25 +1933,25 @@ execute stmt1 using @my_key ; 1 1 1 1 1 1 1 1 1 1 1.0000 1.0000 2004-02-29 2004-02-29 11:11:11 2004-02-29 11:11:11 11:11:11 2004 1 1 a 123456789a 123456789a123456789b123456789c tinyblob tinytext blob text mediumblob mediumtext longblob longtext one monday execute full_info ; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def @arg01 253 20 1 Y 128 31 63 -def @arg02 253 20 1 Y 128 31 63 -def @arg03 253 20 1 Y 128 31 63 -def @arg04 253 20 1 Y 128 31 63 -def @arg05 253 20 1 Y 128 31 63 -def @arg06 253 20 1 Y 128 31 63 -def @arg07 253 20 1 Y 128 31 63 -def @arg08 253 20 1 Y 128 31 63 -def @arg09 253 20 1 Y 128 31 63 -def @arg10 253 20 1 Y 128 31 63 -def @arg11 253 64 6 Y 128 30 63 -def @arg12 253 64 6 Y 128 30 63 +def @arg01 253 20 1 Y 128 0 63 +def @arg02 253 20 1 Y 128 0 63 +def @arg03 253 20 1 Y 128 0 63 +def @arg04 253 20 1 Y 128 0 63 +def @arg05 253 20 1 Y 128 0 63 +def @arg06 253 20 1 Y 128 0 63 +def @arg07 253 23 1 Y 128 31 63 +def @arg08 253 23 1 Y 128 31 63 +def @arg09 253 23 1 Y 128 31 63 +def @arg10 253 23 1 Y 128 31 63 +def @arg11 253 67 6 Y 128 30 63 +def @arg12 253 67 6 Y 128 30 63 def @arg13 253 8192 10 Y 128 31 63 def @arg14 253 8192 19 Y 128 31 63 def @arg15 253 8192 19 Y 128 31 63 def @arg16 253 8192 8 Y 128 31 63 -def @arg17 253 20 4 Y 128 31 63 -def @arg18 253 20 1 Y 128 31 63 -def @arg19 253 20 1 Y 128 31 63 +def @arg17 253 20 4 Y 128 0 63 +def @arg18 253 20 1 Y 128 0 63 +def @arg19 253 20 1 Y 128 0 63 def @arg20 253 8192 1 Y 0 31 8 def @arg21 253 8192 10 Y 0 31 8 def @arg22 253 8192 30 Y 0 31 8 @@ -1973,25 +1973,25 @@ execute stmt1 using @my_key ; 0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1991-01-01 01:01:01 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL execute full_info ; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def @arg01 253 20 1 Y 128 31 63 -def @arg02 253 20 0 Y 128 31 63 -def @arg03 253 20 0 Y 128 31 63 -def @arg04 253 20 0 Y 128 31 63 -def @arg05 253 20 0 Y 128 31 63 -def @arg06 253 20 0 Y 128 31 63 -def @arg07 253 20 0 Y 128 31 63 -def @arg08 253 20 0 Y 128 31 63 -def @arg09 253 20 0 Y 128 31 63 -def @arg10 253 20 0 Y 128 31 63 -def @arg11 253 64 0 Y 128 30 63 -def @arg12 253 64 0 Y 128 30 63 +def @arg01 253 20 1 Y 128 0 63 +def @arg02 253 20 0 Y 128 0 63 +def @arg03 253 20 0 Y 128 0 63 +def @arg04 253 20 0 Y 128 0 63 +def @arg05 253 20 0 Y 128 0 63 +def @arg06 253 20 0 Y 128 0 63 +def @arg07 253 23 0 Y 128 31 63 +def @arg08 253 23 0 Y 128 31 63 +def @arg09 253 23 0 Y 128 31 63 +def @arg10 253 23 0 Y 128 31 63 +def @arg11 253 67 0 Y 128 30 63 +def @arg12 253 67 0 Y 128 30 63 def @arg13 253 8192 0 Y 128 31 63 def @arg14 253 8192 0 Y 128 31 63 def @arg15 253 8192 19 Y 128 31 63 def @arg16 253 8192 0 Y 128 31 63 -def @arg17 253 20 0 Y 128 31 63 -def @arg18 253 20 0 Y 128 31 63 -def @arg19 253 20 0 Y 128 31 63 +def @arg17 253 20 0 Y 128 0 63 +def @arg18 253 20 0 Y 128 0 63 +def @arg19 253 20 0 Y 128 0 63 def @arg20 253 8192 0 Y 0 31 8 def @arg21 253 8192 0 Y 0 31 8 def @arg22 253 8192 0 Y 0 31 8 @@ -2021,25 +2021,25 @@ into @arg01, @arg02, @arg03, @arg04, @arg05, @arg06, @arg07, @arg08, from t9 where c1= 1 ; execute full_info ; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def @arg01 253 20 1 Y 128 31 63 -def @arg02 253 20 1 Y 128 31 63 -def @arg03 253 20 1 Y 128 31 63 -def @arg04 253 20 1 Y 128 31 63 -def @arg05 253 20 1 Y 128 31 63 -def @arg06 253 20 1 Y 128 31 63 -def @arg07 253 20 1 Y 128 31 63 -def @arg08 253 20 1 Y 128 31 63 -def @arg09 253 20 1 Y 128 31 63 -def @arg10 253 20 1 Y 128 31 63 -def @arg11 253 64 6 Y 128 30 63 -def @arg12 253 64 6 Y 128 30 63 +def @arg01 253 20 1 Y 128 0 63 +def @arg02 253 20 1 Y 128 0 63 +def @arg03 253 20 1 Y 128 0 63 +def @arg04 253 20 1 Y 128 0 63 +def @arg05 253 20 1 Y 128 0 63 +def @arg06 253 20 1 Y 128 0 63 +def @arg07 253 23 1 Y 128 31 63 +def @arg08 253 23 1 Y 128 31 63 +def @arg09 253 23 1 Y 128 31 63 +def @arg10 253 23 1 Y 128 31 63 +def @arg11 253 67 6 Y 128 30 63 +def @arg12 253 67 6 Y 128 30 63 def @arg13 253 8192 10 Y 128 31 63 def @arg14 253 8192 19 Y 128 31 63 def @arg15 253 8192 19 Y 128 31 63 def @arg16 253 8192 8 Y 128 31 63 -def @arg17 253 20 4 Y 128 31 63 -def @arg18 253 20 1 Y 128 31 63 -def @arg19 253 20 1 Y 128 31 63 +def @arg17 253 20 4 Y 128 0 63 +def @arg18 253 20 1 Y 128 0 63 +def @arg19 253 20 1 Y 128 0 63 def @arg20 253 8192 1 Y 0 31 8 def @arg21 253 8192 10 Y 0 31 8 def @arg22 253 8192 30 Y 0 31 8 @@ -2065,25 +2065,25 @@ into @arg01, @arg02, @arg03, @arg04, @arg05, @arg06, @arg07, @arg08, from t9 where c1= 0 ; execute full_info ; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def @arg01 253 20 1 Y 128 31 63 -def @arg02 253 20 0 Y 128 31 63 -def @arg03 253 20 0 Y 128 31 63 -def @arg04 253 20 0 Y 128 31 63 -def @arg05 253 20 0 Y 128 31 63 -def @arg06 253 20 0 Y 128 31 63 -def @arg07 253 20 0 Y 128 31 63 -def @arg08 253 20 0 Y 128 31 63 -def @arg09 253 20 0 Y 128 31 63 -def @arg10 253 20 0 Y 128 31 63 -def @arg11 253 64 0 Y 128 30 63 -def @arg12 253 64 0 Y 128 30 63 +def @arg01 253 20 1 Y 128 0 63 +def @arg02 253 20 0 Y 128 0 63 +def @arg03 253 20 0 Y 128 0 63 +def @arg04 253 20 0 Y 128 0 63 +def @arg05 253 20 0 Y 128 0 63 +def @arg06 253 20 0 Y 128 0 63 +def @arg07 253 23 0 Y 128 31 63 +def @arg08 253 23 0 Y 128 31 63 +def @arg09 253 23 0 Y 128 31 63 +def @arg10 253 23 0 Y 128 31 63 +def @arg11 253 67 0 Y 128 30 63 +def @arg12 253 67 0 Y 128 30 63 def @arg13 253 8192 0 Y 128 31 63 def @arg14 253 8192 0 Y 128 31 63 def @arg15 253 8192 19 Y 128 31 63 def @arg16 253 8192 0 Y 128 31 63 -def @arg17 253 20 0 Y 128 31 63 -def @arg18 253 20 0 Y 128 31 63 -def @arg19 253 20 0 Y 128 31 63 +def @arg17 253 20 0 Y 128 0 63 +def @arg18 253 20 0 Y 128 0 63 +def @arg19 253 20 0 Y 128 0 63 def @arg20 253 8192 0 Y 0 31 8 def @arg21 253 8192 0 Y 0 31 8 def @arg22 253 8192 0 Y 0 31 8 @@ -2111,25 +2111,25 @@ set @my_key= 1 ; execute stmt1 using @my_key ; execute full_info ; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def @arg01 253 20 1 Y 128 31 63 -def @arg02 253 20 1 Y 128 31 63 -def @arg03 253 20 1 Y 128 31 63 -def @arg04 253 20 1 Y 128 31 63 -def @arg05 253 20 1 Y 128 31 63 -def @arg06 253 20 1 Y 128 31 63 -def @arg07 253 20 1 Y 128 31 63 -def @arg08 253 20 1 Y 128 31 63 -def @arg09 253 20 1 Y 128 31 63 -def @arg10 253 20 1 Y 128 31 63 -def @arg11 253 64 6 Y 128 30 63 -def @arg12 253 64 6 Y 128 30 63 +def @arg01 253 20 1 Y 128 0 63 +def @arg02 253 20 1 Y 128 0 63 +def @arg03 253 20 1 Y 128 0 63 +def @arg04 253 20 1 Y 128 0 63 +def @arg05 253 20 1 Y 128 0 63 +def @arg06 253 20 1 Y 128 0 63 +def @arg07 253 23 1 Y 128 31 63 +def @arg08 253 23 1 Y 128 31 63 +def @arg09 253 23 1 Y 128 31 63 +def @arg10 253 23 1 Y 128 31 63 +def @arg11 253 67 6 Y 128 30 63 +def @arg12 253 67 6 Y 128 30 63 def @arg13 253 8192 10 Y 128 31 63 def @arg14 253 8192 19 Y 128 31 63 def @arg15 253 8192 19 Y 128 31 63 def @arg16 253 8192 8 Y 128 31 63 -def @arg17 253 20 4 Y 128 31 63 -def @arg18 253 20 1 Y 128 31 63 -def @arg19 253 20 1 Y 128 31 63 +def @arg17 253 20 4 Y 128 0 63 +def @arg18 253 20 1 Y 128 0 63 +def @arg19 253 20 1 Y 128 0 63 def @arg20 253 8192 1 Y 0 31 8 def @arg21 253 8192 10 Y 0 31 8 def @arg22 253 8192 30 Y 0 31 8 @@ -2149,25 +2149,25 @@ set @my_key= 0 ; execute stmt1 using @my_key ; execute full_info ; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def @arg01 253 20 1 Y 128 31 63 -def @arg02 253 20 0 Y 128 31 63 -def @arg03 253 20 0 Y 128 31 63 -def @arg04 253 20 0 Y 128 31 63 -def @arg05 253 20 0 Y 128 31 63 -def @arg06 253 20 0 Y 128 31 63 -def @arg07 253 20 0 Y 128 31 63 -def @arg08 253 20 0 Y 128 31 63 -def @arg09 253 20 0 Y 128 31 63 -def @arg10 253 20 0 Y 128 31 63 -def @arg11 253 64 0 Y 128 30 63 -def @arg12 253 64 0 Y 128 30 63 +def @arg01 253 20 1 Y 128 0 63 +def @arg02 253 20 0 Y 128 0 63 +def @arg03 253 20 0 Y 128 0 63 +def @arg04 253 20 0 Y 128 0 63 +def @arg05 253 20 0 Y 128 0 63 +def @arg06 253 20 0 Y 128 0 63 +def @arg07 253 23 0 Y 128 31 63 +def @arg08 253 23 0 Y 128 31 63 +def @arg09 253 23 0 Y 128 31 63 +def @arg10 253 23 0 Y 128 31 63 +def @arg11 253 67 0 Y 128 30 63 +def @arg12 253 67 0 Y 128 30 63 def @arg13 253 8192 0 Y 128 31 63 def @arg14 253 8192 0 Y 128 31 63 def @arg15 253 8192 19 Y 128 31 63 def @arg16 253 8192 0 Y 128 31 63 -def @arg17 253 20 0 Y 128 31 63 -def @arg18 253 20 0 Y 128 31 63 -def @arg19 253 20 0 Y 128 31 63 +def @arg17 253 20 0 Y 128 0 63 +def @arg18 253 20 0 Y 128 0 63 +def @arg19 253 20 0 Y 128 0 63 def @arg20 253 8192 0 Y 0 31 8 def @arg21 253 8192 0 Y 0 31 8 def @arg22 253 8192 0 Y 0 31 8 @@ -3115,8 +3115,8 @@ def test t9 t9 c7 c7 4 12 1 Y 32768 31 63 def test t9 t9 c8 c8 5 22 1 Y 32768 31 63 def test t9 t9 c9 c9 5 22 1 Y 32768 31 63 def test t9 t9 c10 c10 5 22 1 Y 32768 31 63 -def test t9 t9 c11 c11 246 7 6 Y 0 4 63 -def test t9 t9 c12 c12 246 8 6 Y 0 4 63 +def test t9 t9 c11 c11 246 9 6 Y 0 4 63 +def test t9 t9 c12 c12 246 10 6 Y 0 4 63 def test t9 t9 c13 c13 10 10 10 Y 128 0 63 def test t9 t9 c14 c14 12 19 19 Y 128 0 63 def test t9 t9 c15 c15 7 19 19 N 1249 0 63 @@ -4709,8 +4709,8 @@ Table Create Table t5 CREATE TABLE `t5` ( `const01` bigint(1) NOT NULL default '0', `param01` bigint(20) default NULL, - `const02` decimal(3,1) NOT NULL default '0.0', - `param02` decimal(64,30) default NULL, + `const02` decimal(2,1) NOT NULL default '0.0', + `param02` decimal(65,30) default NULL, `const03` double NOT NULL default '0', `param03` double default NULL, `const04` varchar(3) NOT NULL default '', @@ -4731,7 +4731,7 @@ t5 CREATE TABLE `t5` ( `param11` bigint(20) default NULL, `const12` binary(0) default NULL, `param12` bigint(20) default NULL, - `param13` decimal(64,30) default NULL, + `param13` decimal(65,30) default NULL, `param14` longtext, `param15` longblob ) ENGINE=MyISAM DEFAULT CHARSET=latin1 @@ -4739,10 +4739,10 @@ select * from t5 ; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def test t5 t5 const01 const01 8 1 1 N 32769 0 63 def test t5 t5 param01 param01 8 20 1 Y 32768 0 63 -def test t5 t5 const02 const02 246 3 3 N 1 1 63 -def test t5 t5 param02 param02 246 64 32 Y 0 30 63 +def test t5 t5 const02 const02 246 4 3 N 1 1 63 +def test t5 t5 param02 param02 246 67 32 Y 0 30 63 def test t5 t5 const03 const03 5 17 1 N 32769 31 63 -def test t5 t5 param03 param03 5 20 1 Y 32768 31 63 +def test t5 t5 param03 param03 5 23 1 Y 32768 31 63 def test t5 t5 const04 const04 253 3 3 N 1 0 8 def test t5 t5 param04 param04 252 16777215 3 Y 16 0 8 def test t5 t5 const05 const05 253 3 3 N 129 0 63 @@ -4761,7 +4761,7 @@ def test t5 t5 const11 const11 3 4 4 Y 32768 0 63 def test t5 t5 param11 param11 8 20 4 Y 32768 0 63 def test t5 t5 const12 const12 254 0 0 Y 128 0 63 def test t5 t5 param12 param12 8 20 0 Y 32768 0 63 -def test t5 t5 param13 param13 246 64 0 Y 0 30 63 +def test t5 t5 param13 param13 246 67 0 Y 0 30 63 def test t5 t5 param14 param14 252 16777215 0 Y 16 0 8 def test t5 t5 param15 param15 252 16777215 0 Y 144 0 63 const01 8 @@ -4849,25 +4849,25 @@ from t9 where c1= 1 ; 1 1 1 1 1 1 1 1 1 1 1.0000 1.0000 2004-02-29 2004-02-29 11:11:11 2004-02-29 11:11:11 11:11:11 2004 1 1 a 123456789a 123456789a123456789b123456789c tinyblob tinytext blob text mediumblob mediumtext longblob longtext one monday execute full_info ; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def @arg01 253 20 1 Y 128 31 63 -def @arg02 253 20 1 Y 128 31 63 -def @arg03 253 20 1 Y 128 31 63 -def @arg04 253 20 1 Y 128 31 63 -def @arg05 253 20 1 Y 128 31 63 -def @arg06 253 20 1 Y 128 31 63 -def @arg07 253 20 1 Y 128 31 63 -def @arg08 253 20 1 Y 128 31 63 -def @arg09 253 20 1 Y 128 31 63 -def @arg10 253 20 1 Y 128 31 63 -def @arg11 253 64 6 Y 128 30 63 -def @arg12 253 64 6 Y 128 30 63 +def @arg01 253 20 1 Y 128 0 63 +def @arg02 253 20 1 Y 128 0 63 +def @arg03 253 20 1 Y 128 0 63 +def @arg04 253 20 1 Y 128 0 63 +def @arg05 253 20 1 Y 128 0 63 +def @arg06 253 20 1 Y 128 0 63 +def @arg07 253 23 1 Y 128 31 63 +def @arg08 253 23 1 Y 128 31 63 +def @arg09 253 23 1 Y 128 31 63 +def @arg10 253 23 1 Y 128 31 63 +def @arg11 253 67 6 Y 128 30 63 +def @arg12 253 67 6 Y 128 30 63 def @arg13 253 8192 10 Y 128 31 63 def @arg14 253 8192 19 Y 128 31 63 def @arg15 253 8192 19 Y 128 31 63 def @arg16 253 8192 8 Y 128 31 63 -def @arg17 253 20 4 Y 128 31 63 -def @arg18 253 20 1 Y 128 31 63 -def @arg19 253 20 1 Y 128 31 63 +def @arg17 253 20 4 Y 128 0 63 +def @arg18 253 20 1 Y 128 0 63 +def @arg19 253 20 1 Y 128 0 63 def @arg20 253 8192 1 Y 0 31 8 def @arg21 253 8192 10 Y 0 31 8 def @arg22 253 8192 30 Y 0 31 8 @@ -4896,25 +4896,25 @@ from t9 where c1= 0 ; 0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1991-01-01 01:01:01 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL execute full_info ; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def @arg01 253 20 1 Y 128 31 63 -def @arg02 253 20 0 Y 128 31 63 -def @arg03 253 20 0 Y 128 31 63 -def @arg04 253 20 0 Y 128 31 63 -def @arg05 253 20 0 Y 128 31 63 -def @arg06 253 20 0 Y 128 31 63 -def @arg07 253 20 0 Y 128 31 63 -def @arg08 253 20 0 Y 128 31 63 -def @arg09 253 20 0 Y 128 31 63 -def @arg10 253 20 0 Y 128 31 63 -def @arg11 253 64 0 Y 128 30 63 -def @arg12 253 64 0 Y 128 30 63 +def @arg01 253 20 1 Y 128 0 63 +def @arg02 253 20 0 Y 128 0 63 +def @arg03 253 20 0 Y 128 0 63 +def @arg04 253 20 0 Y 128 0 63 +def @arg05 253 20 0 Y 128 0 63 +def @arg06 253 20 0 Y 128 0 63 +def @arg07 253 23 0 Y 128 31 63 +def @arg08 253 23 0 Y 128 31 63 +def @arg09 253 23 0 Y 128 31 63 +def @arg10 253 23 0 Y 128 31 63 +def @arg11 253 67 0 Y 128 30 63 +def @arg12 253 67 0 Y 128 30 63 def @arg13 253 8192 0 Y 128 31 63 def @arg14 253 8192 0 Y 128 31 63 def @arg15 253 8192 19 Y 128 31 63 def @arg16 253 8192 0 Y 128 31 63 -def @arg17 253 20 0 Y 128 31 63 -def @arg18 253 20 0 Y 128 31 63 -def @arg19 253 20 0 Y 128 31 63 +def @arg17 253 20 0 Y 128 0 63 +def @arg18 253 20 0 Y 128 0 63 +def @arg19 253 20 0 Y 128 0 63 def @arg20 253 8192 0 Y 0 31 8 def @arg21 253 8192 0 Y 0 31 8 def @arg22 253 8192 0 Y 0 31 8 @@ -4946,25 +4946,25 @@ execute stmt1 using @my_key ; 1 1 1 1 1 1 1 1 1 1 1.0000 1.0000 2004-02-29 2004-02-29 11:11:11 2004-02-29 11:11:11 11:11:11 2004 1 1 a 123456789a 123456789a123456789b123456789c tinyblob tinytext blob text mediumblob mediumtext longblob longtext one monday execute full_info ; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def @arg01 253 20 1 Y 128 31 63 -def @arg02 253 20 1 Y 128 31 63 -def @arg03 253 20 1 Y 128 31 63 -def @arg04 253 20 1 Y 128 31 63 -def @arg05 253 20 1 Y 128 31 63 -def @arg06 253 20 1 Y 128 31 63 -def @arg07 253 20 1 Y 128 31 63 -def @arg08 253 20 1 Y 128 31 63 -def @arg09 253 20 1 Y 128 31 63 -def @arg10 253 20 1 Y 128 31 63 -def @arg11 253 64 6 Y 128 30 63 -def @arg12 253 64 6 Y 128 30 63 +def @arg01 253 20 1 Y 128 0 63 +def @arg02 253 20 1 Y 128 0 63 +def @arg03 253 20 1 Y 128 0 63 +def @arg04 253 20 1 Y 128 0 63 +def @arg05 253 20 1 Y 128 0 63 +def @arg06 253 20 1 Y 128 0 63 +def @arg07 253 23 1 Y 128 31 63 +def @arg08 253 23 1 Y 128 31 63 +def @arg09 253 23 1 Y 128 31 63 +def @arg10 253 23 1 Y 128 31 63 +def @arg11 253 67 6 Y 128 30 63 +def @arg12 253 67 6 Y 128 30 63 def @arg13 253 8192 10 Y 128 31 63 def @arg14 253 8192 19 Y 128 31 63 def @arg15 253 8192 19 Y 128 31 63 def @arg16 253 8192 8 Y 128 31 63 -def @arg17 253 20 4 Y 128 31 63 -def @arg18 253 20 1 Y 128 31 63 -def @arg19 253 20 1 Y 128 31 63 +def @arg17 253 20 4 Y 128 0 63 +def @arg18 253 20 1 Y 128 0 63 +def @arg19 253 20 1 Y 128 0 63 def @arg20 253 8192 1 Y 0 31 8 def @arg21 253 8192 10 Y 0 31 8 def @arg22 253 8192 30 Y 0 31 8 @@ -4986,25 +4986,25 @@ execute stmt1 using @my_key ; 0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1991-01-01 01:01:01 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL execute full_info ; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def @arg01 253 20 1 Y 128 31 63 -def @arg02 253 20 0 Y 128 31 63 -def @arg03 253 20 0 Y 128 31 63 -def @arg04 253 20 0 Y 128 31 63 -def @arg05 253 20 0 Y 128 31 63 -def @arg06 253 20 0 Y 128 31 63 -def @arg07 253 20 0 Y 128 31 63 -def @arg08 253 20 0 Y 128 31 63 -def @arg09 253 20 0 Y 128 31 63 -def @arg10 253 20 0 Y 128 31 63 -def @arg11 253 64 0 Y 128 30 63 -def @arg12 253 64 0 Y 128 30 63 +def @arg01 253 20 1 Y 128 0 63 +def @arg02 253 20 0 Y 128 0 63 +def @arg03 253 20 0 Y 128 0 63 +def @arg04 253 20 0 Y 128 0 63 +def @arg05 253 20 0 Y 128 0 63 +def @arg06 253 20 0 Y 128 0 63 +def @arg07 253 23 0 Y 128 31 63 +def @arg08 253 23 0 Y 128 31 63 +def @arg09 253 23 0 Y 128 31 63 +def @arg10 253 23 0 Y 128 31 63 +def @arg11 253 67 0 Y 128 30 63 +def @arg12 253 67 0 Y 128 30 63 def @arg13 253 8192 0 Y 128 31 63 def @arg14 253 8192 0 Y 128 31 63 def @arg15 253 8192 19 Y 128 31 63 def @arg16 253 8192 0 Y 128 31 63 -def @arg17 253 20 0 Y 128 31 63 -def @arg18 253 20 0 Y 128 31 63 -def @arg19 253 20 0 Y 128 31 63 +def @arg17 253 20 0 Y 128 0 63 +def @arg18 253 20 0 Y 128 0 63 +def @arg19 253 20 0 Y 128 0 63 def @arg20 253 8192 0 Y 0 31 8 def @arg21 253 8192 0 Y 0 31 8 def @arg22 253 8192 0 Y 0 31 8 @@ -5034,25 +5034,25 @@ into @arg01, @arg02, @arg03, @arg04, @arg05, @arg06, @arg07, @arg08, from t9 where c1= 1 ; execute full_info ; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def @arg01 253 20 1 Y 128 31 63 -def @arg02 253 20 1 Y 128 31 63 -def @arg03 253 20 1 Y 128 31 63 -def @arg04 253 20 1 Y 128 31 63 -def @arg05 253 20 1 Y 128 31 63 -def @arg06 253 20 1 Y 128 31 63 -def @arg07 253 20 1 Y 128 31 63 -def @arg08 253 20 1 Y 128 31 63 -def @arg09 253 20 1 Y 128 31 63 -def @arg10 253 20 1 Y 128 31 63 -def @arg11 253 64 6 Y 128 30 63 -def @arg12 253 64 6 Y 128 30 63 +def @arg01 253 20 1 Y 128 0 63 +def @arg02 253 20 1 Y 128 0 63 +def @arg03 253 20 1 Y 128 0 63 +def @arg04 253 20 1 Y 128 0 63 +def @arg05 253 20 1 Y 128 0 63 +def @arg06 253 20 1 Y 128 0 63 +def @arg07 253 23 1 Y 128 31 63 +def @arg08 253 23 1 Y 128 31 63 +def @arg09 253 23 1 Y 128 31 63 +def @arg10 253 23 1 Y 128 31 63 +def @arg11 253 67 6 Y 128 30 63 +def @arg12 253 67 6 Y 128 30 63 def @arg13 253 8192 10 Y 128 31 63 def @arg14 253 8192 19 Y 128 31 63 def @arg15 253 8192 19 Y 128 31 63 def @arg16 253 8192 8 Y 128 31 63 -def @arg17 253 20 4 Y 128 31 63 -def @arg18 253 20 1 Y 128 31 63 -def @arg19 253 20 1 Y 128 31 63 +def @arg17 253 20 4 Y 128 0 63 +def @arg18 253 20 1 Y 128 0 63 +def @arg19 253 20 1 Y 128 0 63 def @arg20 253 8192 1 Y 0 31 8 def @arg21 253 8192 10 Y 0 31 8 def @arg22 253 8192 30 Y 0 31 8 @@ -5078,25 +5078,25 @@ into @arg01, @arg02, @arg03, @arg04, @arg05, @arg06, @arg07, @arg08, from t9 where c1= 0 ; execute full_info ; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def @arg01 253 20 1 Y 128 31 63 -def @arg02 253 20 0 Y 128 31 63 -def @arg03 253 20 0 Y 128 31 63 -def @arg04 253 20 0 Y 128 31 63 -def @arg05 253 20 0 Y 128 31 63 -def @arg06 253 20 0 Y 128 31 63 -def @arg07 253 20 0 Y 128 31 63 -def @arg08 253 20 0 Y 128 31 63 -def @arg09 253 20 0 Y 128 31 63 -def @arg10 253 20 0 Y 128 31 63 -def @arg11 253 64 0 Y 128 30 63 -def @arg12 253 64 0 Y 128 30 63 +def @arg01 253 20 1 Y 128 0 63 +def @arg02 253 20 0 Y 128 0 63 +def @arg03 253 20 0 Y 128 0 63 +def @arg04 253 20 0 Y 128 0 63 +def @arg05 253 20 0 Y 128 0 63 +def @arg06 253 20 0 Y 128 0 63 +def @arg07 253 23 0 Y 128 31 63 +def @arg08 253 23 0 Y 128 31 63 +def @arg09 253 23 0 Y 128 31 63 +def @arg10 253 23 0 Y 128 31 63 +def @arg11 253 67 0 Y 128 30 63 +def @arg12 253 67 0 Y 128 30 63 def @arg13 253 8192 0 Y 128 31 63 def @arg14 253 8192 0 Y 128 31 63 def @arg15 253 8192 19 Y 128 31 63 def @arg16 253 8192 0 Y 128 31 63 -def @arg17 253 20 0 Y 128 31 63 -def @arg18 253 20 0 Y 128 31 63 -def @arg19 253 20 0 Y 128 31 63 +def @arg17 253 20 0 Y 128 0 63 +def @arg18 253 20 0 Y 128 0 63 +def @arg19 253 20 0 Y 128 0 63 def @arg20 253 8192 0 Y 0 31 8 def @arg21 253 8192 0 Y 0 31 8 def @arg22 253 8192 0 Y 0 31 8 @@ -5124,25 +5124,25 @@ set @my_key= 1 ; execute stmt1 using @my_key ; execute full_info ; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def @arg01 253 20 1 Y 128 31 63 -def @arg02 253 20 1 Y 128 31 63 -def @arg03 253 20 1 Y 128 31 63 -def @arg04 253 20 1 Y 128 31 63 -def @arg05 253 20 1 Y 128 31 63 -def @arg06 253 20 1 Y 128 31 63 -def @arg07 253 20 1 Y 128 31 63 -def @arg08 253 20 1 Y 128 31 63 -def @arg09 253 20 1 Y 128 31 63 -def @arg10 253 20 1 Y 128 31 63 -def @arg11 253 64 6 Y 128 30 63 -def @arg12 253 64 6 Y 128 30 63 +def @arg01 253 20 1 Y 128 0 63 +def @arg02 253 20 1 Y 128 0 63 +def @arg03 253 20 1 Y 128 0 63 +def @arg04 253 20 1 Y 128 0 63 +def @arg05 253 20 1 Y 128 0 63 +def @arg06 253 20 1 Y 128 0 63 +def @arg07 253 23 1 Y 128 31 63 +def @arg08 253 23 1 Y 128 31 63 +def @arg09 253 23 1 Y 128 31 63 +def @arg10 253 23 1 Y 128 31 63 +def @arg11 253 67 6 Y 128 30 63 +def @arg12 253 67 6 Y 128 30 63 def @arg13 253 8192 10 Y 128 31 63 def @arg14 253 8192 19 Y 128 31 63 def @arg15 253 8192 19 Y 128 31 63 def @arg16 253 8192 8 Y 128 31 63 -def @arg17 253 20 4 Y 128 31 63 -def @arg18 253 20 1 Y 128 31 63 -def @arg19 253 20 1 Y 128 31 63 +def @arg17 253 20 4 Y 128 0 63 +def @arg18 253 20 1 Y 128 0 63 +def @arg19 253 20 1 Y 128 0 63 def @arg20 253 8192 1 Y 0 31 8 def @arg21 253 8192 10 Y 0 31 8 def @arg22 253 8192 30 Y 0 31 8 @@ -5162,25 +5162,25 @@ set @my_key= 0 ; execute stmt1 using @my_key ; execute full_info ; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def @arg01 253 20 1 Y 128 31 63 -def @arg02 253 20 0 Y 128 31 63 -def @arg03 253 20 0 Y 128 31 63 -def @arg04 253 20 0 Y 128 31 63 -def @arg05 253 20 0 Y 128 31 63 -def @arg06 253 20 0 Y 128 31 63 -def @arg07 253 20 0 Y 128 31 63 -def @arg08 253 20 0 Y 128 31 63 -def @arg09 253 20 0 Y 128 31 63 -def @arg10 253 20 0 Y 128 31 63 -def @arg11 253 64 0 Y 128 30 63 -def @arg12 253 64 0 Y 128 30 63 +def @arg01 253 20 1 Y 128 0 63 +def @arg02 253 20 0 Y 128 0 63 +def @arg03 253 20 0 Y 128 0 63 +def @arg04 253 20 0 Y 128 0 63 +def @arg05 253 20 0 Y 128 0 63 +def @arg06 253 20 0 Y 128 0 63 +def @arg07 253 23 0 Y 128 31 63 +def @arg08 253 23 0 Y 128 31 63 +def @arg09 253 23 0 Y 128 31 63 +def @arg10 253 23 0 Y 128 31 63 +def @arg11 253 67 0 Y 128 30 63 +def @arg12 253 67 0 Y 128 30 63 def @arg13 253 8192 0 Y 128 31 63 def @arg14 253 8192 0 Y 128 31 63 def @arg15 253 8192 19 Y 128 31 63 def @arg16 253 8192 0 Y 128 31 63 -def @arg17 253 20 0 Y 128 31 63 -def @arg18 253 20 0 Y 128 31 63 -def @arg19 253 20 0 Y 128 31 63 +def @arg17 253 20 0 Y 128 0 63 +def @arg18 253 20 0 Y 128 0 63 +def @arg19 253 20 0 Y 128 0 63 def @arg20 253 8192 0 Y 0 31 8 def @arg21 253 8192 0 Y 0 31 8 def @arg22 253 8192 0 Y 0 31 8 diff --git a/mysql-test/r/ps_6bdb.result b/mysql-test/r/ps_6bdb.result index 8ea5b092b5e..753def70dc0 100644 --- a/mysql-test/r/ps_6bdb.result +++ b/mysql-test/r/ps_6bdb.result @@ -59,8 +59,8 @@ def test t9 t9 c7 c7 4 12 1 Y 32768 31 63 def test t9 t9 c8 c8 5 22 1 Y 32768 31 63 def test t9 t9 c9 c9 5 22 1 Y 32768 31 63 def test t9 t9 c10 c10 5 22 1 Y 32768 31 63 -def test t9 t9 c11 c11 246 7 6 Y 0 4 63 -def test t9 t9 c12 c12 246 8 6 Y 0 4 63 +def test t9 t9 c11 c11 246 9 6 Y 0 4 63 +def test t9 t9 c12 c12 246 10 6 Y 0 4 63 def test t9 t9 c13 c13 10 10 10 Y 128 0 63 def test t9 t9 c14 c14 12 19 19 Y 128 0 63 def test t9 t9 c15 c15 7 19 19 N 1249 0 63 @@ -1759,8 +1759,8 @@ Table Create Table t5 CREATE TABLE `t5` ( `const01` bigint(1) NOT NULL default '0', `param01` bigint(20) default NULL, - `const02` decimal(3,1) NOT NULL default '0.0', - `param02` decimal(64,30) default NULL, + `const02` decimal(2,1) NOT NULL default '0.0', + `param02` decimal(65,30) default NULL, `const03` double NOT NULL default '0', `param03` double default NULL, `const04` varchar(3) NOT NULL default '', @@ -1781,7 +1781,7 @@ t5 CREATE TABLE `t5` ( `param11` bigint(20) default NULL, `const12` binary(0) default NULL, `param12` bigint(20) default NULL, - `param13` decimal(64,30) default NULL, + `param13` decimal(65,30) default NULL, `param14` longtext, `param15` longblob ) ENGINE=MyISAM DEFAULT CHARSET=latin1 @@ -1789,10 +1789,10 @@ select * from t5 ; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def test t5 t5 const01 const01 8 1 1 N 32769 0 63 def test t5 t5 param01 param01 8 20 1 Y 32768 0 63 -def test t5 t5 const02 const02 246 3 3 N 1 1 63 -def test t5 t5 param02 param02 246 64 32 Y 0 30 63 +def test t5 t5 const02 const02 246 4 3 N 1 1 63 +def test t5 t5 param02 param02 246 67 32 Y 0 30 63 def test t5 t5 const03 const03 5 17 1 N 32769 31 63 -def test t5 t5 param03 param03 5 20 1 Y 32768 31 63 +def test t5 t5 param03 param03 5 23 1 Y 32768 31 63 def test t5 t5 const04 const04 253 3 3 N 1 0 8 def test t5 t5 param04 param04 252 16777215 3 Y 16 0 8 def test t5 t5 const05 const05 253 3 3 N 129 0 63 @@ -1811,7 +1811,7 @@ def test t5 t5 const11 const11 3 4 4 Y 32768 0 63 def test t5 t5 param11 param11 8 20 4 Y 32768 0 63 def test t5 t5 const12 const12 254 0 0 Y 128 0 63 def test t5 t5 param12 param12 8 20 0 Y 32768 0 63 -def test t5 t5 param13 param13 246 64 0 Y 0 30 63 +def test t5 t5 param13 param13 246 67 0 Y 0 30 63 def test t5 t5 param14 param14 252 16777215 0 Y 16 0 8 def test t5 t5 param15 param15 252 16777215 0 Y 144 0 63 const01 8 @@ -1899,25 +1899,25 @@ from t9 where c1= 1 ; 1 1 1 1 1 1 1 1 1 1 1.0000 1.0000 2004-02-29 2004-02-29 11:11:11 2004-02-29 11:11:11 11:11:11 2004 1 1 a 123456789a 123456789a123456789b123456789c tinyblob tinytext blob text mediumblob mediumtext longblob longtext one monday execute full_info ; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def @arg01 253 20 1 Y 128 31 63 -def @arg02 253 20 1 Y 128 31 63 -def @arg03 253 20 1 Y 128 31 63 -def @arg04 253 20 1 Y 128 31 63 -def @arg05 253 20 1 Y 128 31 63 -def @arg06 253 20 1 Y 128 31 63 -def @arg07 253 20 1 Y 128 31 63 -def @arg08 253 20 1 Y 128 31 63 -def @arg09 253 20 1 Y 128 31 63 -def @arg10 253 20 1 Y 128 31 63 -def @arg11 253 64 6 Y 128 30 63 -def @arg12 253 64 6 Y 128 30 63 +def @arg01 253 20 1 Y 128 0 63 +def @arg02 253 20 1 Y 128 0 63 +def @arg03 253 20 1 Y 128 0 63 +def @arg04 253 20 1 Y 128 0 63 +def @arg05 253 20 1 Y 128 0 63 +def @arg06 253 20 1 Y 128 0 63 +def @arg07 253 23 1 Y 128 31 63 +def @arg08 253 23 1 Y 128 31 63 +def @arg09 253 23 1 Y 128 31 63 +def @arg10 253 23 1 Y 128 31 63 +def @arg11 253 67 6 Y 128 30 63 +def @arg12 253 67 6 Y 128 30 63 def @arg13 253 8192 10 Y 128 31 63 def @arg14 253 8192 19 Y 128 31 63 def @arg15 253 8192 19 Y 128 31 63 def @arg16 253 8192 8 Y 128 31 63 -def @arg17 253 20 4 Y 128 31 63 -def @arg18 253 20 1 Y 128 31 63 -def @arg19 253 20 1 Y 128 31 63 +def @arg17 253 20 4 Y 128 0 63 +def @arg18 253 20 1 Y 128 0 63 +def @arg19 253 20 1 Y 128 0 63 def @arg20 253 8192 1 Y 0 31 8 def @arg21 253 8192 10 Y 0 31 8 def @arg22 253 8192 30 Y 0 31 8 @@ -1946,25 +1946,25 @@ from t9 where c1= 0 ; 0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1991-01-01 01:01:01 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL execute full_info ; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def @arg01 253 20 1 Y 128 31 63 -def @arg02 253 20 0 Y 128 31 63 -def @arg03 253 20 0 Y 128 31 63 -def @arg04 253 20 0 Y 128 31 63 -def @arg05 253 20 0 Y 128 31 63 -def @arg06 253 20 0 Y 128 31 63 -def @arg07 253 20 0 Y 128 31 63 -def @arg08 253 20 0 Y 128 31 63 -def @arg09 253 20 0 Y 128 31 63 -def @arg10 253 20 0 Y 128 31 63 -def @arg11 253 64 0 Y 128 30 63 -def @arg12 253 64 0 Y 128 30 63 +def @arg01 253 20 1 Y 128 0 63 +def @arg02 253 20 0 Y 128 0 63 +def @arg03 253 20 0 Y 128 0 63 +def @arg04 253 20 0 Y 128 0 63 +def @arg05 253 20 0 Y 128 0 63 +def @arg06 253 20 0 Y 128 0 63 +def @arg07 253 23 0 Y 128 31 63 +def @arg08 253 23 0 Y 128 31 63 +def @arg09 253 23 0 Y 128 31 63 +def @arg10 253 23 0 Y 128 31 63 +def @arg11 253 67 0 Y 128 30 63 +def @arg12 253 67 0 Y 128 30 63 def @arg13 253 8192 0 Y 128 31 63 def @arg14 253 8192 0 Y 128 31 63 def @arg15 253 8192 19 Y 128 31 63 def @arg16 253 8192 0 Y 128 31 63 -def @arg17 253 20 0 Y 128 31 63 -def @arg18 253 20 0 Y 128 31 63 -def @arg19 253 20 0 Y 128 31 63 +def @arg17 253 20 0 Y 128 0 63 +def @arg18 253 20 0 Y 128 0 63 +def @arg19 253 20 0 Y 128 0 63 def @arg20 253 8192 0 Y 0 31 8 def @arg21 253 8192 0 Y 0 31 8 def @arg22 253 8192 0 Y 0 31 8 @@ -1996,25 +1996,25 @@ execute stmt1 using @my_key ; 1 1 1 1 1 1 1 1 1 1 1.0000 1.0000 2004-02-29 2004-02-29 11:11:11 2004-02-29 11:11:11 11:11:11 2004 1 1 a 123456789a 123456789a123456789b123456789c tinyblob tinytext blob text mediumblob mediumtext longblob longtext one monday execute full_info ; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def @arg01 253 20 1 Y 128 31 63 -def @arg02 253 20 1 Y 128 31 63 -def @arg03 253 20 1 Y 128 31 63 -def @arg04 253 20 1 Y 128 31 63 -def @arg05 253 20 1 Y 128 31 63 -def @arg06 253 20 1 Y 128 31 63 -def @arg07 253 20 1 Y 128 31 63 -def @arg08 253 20 1 Y 128 31 63 -def @arg09 253 20 1 Y 128 31 63 -def @arg10 253 20 1 Y 128 31 63 -def @arg11 253 64 6 Y 128 30 63 -def @arg12 253 64 6 Y 128 30 63 +def @arg01 253 20 1 Y 128 0 63 +def @arg02 253 20 1 Y 128 0 63 +def @arg03 253 20 1 Y 128 0 63 +def @arg04 253 20 1 Y 128 0 63 +def @arg05 253 20 1 Y 128 0 63 +def @arg06 253 20 1 Y 128 0 63 +def @arg07 253 23 1 Y 128 31 63 +def @arg08 253 23 1 Y 128 31 63 +def @arg09 253 23 1 Y 128 31 63 +def @arg10 253 23 1 Y 128 31 63 +def @arg11 253 67 6 Y 128 30 63 +def @arg12 253 67 6 Y 128 30 63 def @arg13 253 8192 10 Y 128 31 63 def @arg14 253 8192 19 Y 128 31 63 def @arg15 253 8192 19 Y 128 31 63 def @arg16 253 8192 8 Y 128 31 63 -def @arg17 253 20 4 Y 128 31 63 -def @arg18 253 20 1 Y 128 31 63 -def @arg19 253 20 1 Y 128 31 63 +def @arg17 253 20 4 Y 128 0 63 +def @arg18 253 20 1 Y 128 0 63 +def @arg19 253 20 1 Y 128 0 63 def @arg20 253 8192 1 Y 0 31 8 def @arg21 253 8192 10 Y 0 31 8 def @arg22 253 8192 30 Y 0 31 8 @@ -2036,25 +2036,25 @@ execute stmt1 using @my_key ; 0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1991-01-01 01:01:01 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL execute full_info ; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def @arg01 253 20 1 Y 128 31 63 -def @arg02 253 20 0 Y 128 31 63 -def @arg03 253 20 0 Y 128 31 63 -def @arg04 253 20 0 Y 128 31 63 -def @arg05 253 20 0 Y 128 31 63 -def @arg06 253 20 0 Y 128 31 63 -def @arg07 253 20 0 Y 128 31 63 -def @arg08 253 20 0 Y 128 31 63 -def @arg09 253 20 0 Y 128 31 63 -def @arg10 253 20 0 Y 128 31 63 -def @arg11 253 64 0 Y 128 30 63 -def @arg12 253 64 0 Y 128 30 63 +def @arg01 253 20 1 Y 128 0 63 +def @arg02 253 20 0 Y 128 0 63 +def @arg03 253 20 0 Y 128 0 63 +def @arg04 253 20 0 Y 128 0 63 +def @arg05 253 20 0 Y 128 0 63 +def @arg06 253 20 0 Y 128 0 63 +def @arg07 253 23 0 Y 128 31 63 +def @arg08 253 23 0 Y 128 31 63 +def @arg09 253 23 0 Y 128 31 63 +def @arg10 253 23 0 Y 128 31 63 +def @arg11 253 67 0 Y 128 30 63 +def @arg12 253 67 0 Y 128 30 63 def @arg13 253 8192 0 Y 128 31 63 def @arg14 253 8192 0 Y 128 31 63 def @arg15 253 8192 19 Y 128 31 63 def @arg16 253 8192 0 Y 128 31 63 -def @arg17 253 20 0 Y 128 31 63 -def @arg18 253 20 0 Y 128 31 63 -def @arg19 253 20 0 Y 128 31 63 +def @arg17 253 20 0 Y 128 0 63 +def @arg18 253 20 0 Y 128 0 63 +def @arg19 253 20 0 Y 128 0 63 def @arg20 253 8192 0 Y 0 31 8 def @arg21 253 8192 0 Y 0 31 8 def @arg22 253 8192 0 Y 0 31 8 @@ -2084,25 +2084,25 @@ into @arg01, @arg02, @arg03, @arg04, @arg05, @arg06, @arg07, @arg08, from t9 where c1= 1 ; execute full_info ; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def @arg01 253 20 1 Y 128 31 63 -def @arg02 253 20 1 Y 128 31 63 -def @arg03 253 20 1 Y 128 31 63 -def @arg04 253 20 1 Y 128 31 63 -def @arg05 253 20 1 Y 128 31 63 -def @arg06 253 20 1 Y 128 31 63 -def @arg07 253 20 1 Y 128 31 63 -def @arg08 253 20 1 Y 128 31 63 -def @arg09 253 20 1 Y 128 31 63 -def @arg10 253 20 1 Y 128 31 63 -def @arg11 253 64 6 Y 128 30 63 -def @arg12 253 64 6 Y 128 30 63 +def @arg01 253 20 1 Y 128 0 63 +def @arg02 253 20 1 Y 128 0 63 +def @arg03 253 20 1 Y 128 0 63 +def @arg04 253 20 1 Y 128 0 63 +def @arg05 253 20 1 Y 128 0 63 +def @arg06 253 20 1 Y 128 0 63 +def @arg07 253 23 1 Y 128 31 63 +def @arg08 253 23 1 Y 128 31 63 +def @arg09 253 23 1 Y 128 31 63 +def @arg10 253 23 1 Y 128 31 63 +def @arg11 253 67 6 Y 128 30 63 +def @arg12 253 67 6 Y 128 30 63 def @arg13 253 8192 10 Y 128 31 63 def @arg14 253 8192 19 Y 128 31 63 def @arg15 253 8192 19 Y 128 31 63 def @arg16 253 8192 8 Y 128 31 63 -def @arg17 253 20 4 Y 128 31 63 -def @arg18 253 20 1 Y 128 31 63 -def @arg19 253 20 1 Y 128 31 63 +def @arg17 253 20 4 Y 128 0 63 +def @arg18 253 20 1 Y 128 0 63 +def @arg19 253 20 1 Y 128 0 63 def @arg20 253 8192 1 Y 0 31 8 def @arg21 253 8192 10 Y 0 31 8 def @arg22 253 8192 30 Y 0 31 8 @@ -2128,25 +2128,25 @@ into @arg01, @arg02, @arg03, @arg04, @arg05, @arg06, @arg07, @arg08, from t9 where c1= 0 ; execute full_info ; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def @arg01 253 20 1 Y 128 31 63 -def @arg02 253 20 0 Y 128 31 63 -def @arg03 253 20 0 Y 128 31 63 -def @arg04 253 20 0 Y 128 31 63 -def @arg05 253 20 0 Y 128 31 63 -def @arg06 253 20 0 Y 128 31 63 -def @arg07 253 20 0 Y 128 31 63 -def @arg08 253 20 0 Y 128 31 63 -def @arg09 253 20 0 Y 128 31 63 -def @arg10 253 20 0 Y 128 31 63 -def @arg11 253 64 0 Y 128 30 63 -def @arg12 253 64 0 Y 128 30 63 +def @arg01 253 20 1 Y 128 0 63 +def @arg02 253 20 0 Y 128 0 63 +def @arg03 253 20 0 Y 128 0 63 +def @arg04 253 20 0 Y 128 0 63 +def @arg05 253 20 0 Y 128 0 63 +def @arg06 253 20 0 Y 128 0 63 +def @arg07 253 23 0 Y 128 31 63 +def @arg08 253 23 0 Y 128 31 63 +def @arg09 253 23 0 Y 128 31 63 +def @arg10 253 23 0 Y 128 31 63 +def @arg11 253 67 0 Y 128 30 63 +def @arg12 253 67 0 Y 128 30 63 def @arg13 253 8192 0 Y 128 31 63 def @arg14 253 8192 0 Y 128 31 63 def @arg15 253 8192 19 Y 128 31 63 def @arg16 253 8192 0 Y 128 31 63 -def @arg17 253 20 0 Y 128 31 63 -def @arg18 253 20 0 Y 128 31 63 -def @arg19 253 20 0 Y 128 31 63 +def @arg17 253 20 0 Y 128 0 63 +def @arg18 253 20 0 Y 128 0 63 +def @arg19 253 20 0 Y 128 0 63 def @arg20 253 8192 0 Y 0 31 8 def @arg21 253 8192 0 Y 0 31 8 def @arg22 253 8192 0 Y 0 31 8 @@ -2174,25 +2174,25 @@ set @my_key= 1 ; execute stmt1 using @my_key ; execute full_info ; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def @arg01 253 20 1 Y 128 31 63 -def @arg02 253 20 1 Y 128 31 63 -def @arg03 253 20 1 Y 128 31 63 -def @arg04 253 20 1 Y 128 31 63 -def @arg05 253 20 1 Y 128 31 63 -def @arg06 253 20 1 Y 128 31 63 -def @arg07 253 20 1 Y 128 31 63 -def @arg08 253 20 1 Y 128 31 63 -def @arg09 253 20 1 Y 128 31 63 -def @arg10 253 20 1 Y 128 31 63 -def @arg11 253 64 6 Y 128 30 63 -def @arg12 253 64 6 Y 128 30 63 +def @arg01 253 20 1 Y 128 0 63 +def @arg02 253 20 1 Y 128 0 63 +def @arg03 253 20 1 Y 128 0 63 +def @arg04 253 20 1 Y 128 0 63 +def @arg05 253 20 1 Y 128 0 63 +def @arg06 253 20 1 Y 128 0 63 +def @arg07 253 23 1 Y 128 31 63 +def @arg08 253 23 1 Y 128 31 63 +def @arg09 253 23 1 Y 128 31 63 +def @arg10 253 23 1 Y 128 31 63 +def @arg11 253 67 6 Y 128 30 63 +def @arg12 253 67 6 Y 128 30 63 def @arg13 253 8192 10 Y 128 31 63 def @arg14 253 8192 19 Y 128 31 63 def @arg15 253 8192 19 Y 128 31 63 def @arg16 253 8192 8 Y 128 31 63 -def @arg17 253 20 4 Y 128 31 63 -def @arg18 253 20 1 Y 128 31 63 -def @arg19 253 20 1 Y 128 31 63 +def @arg17 253 20 4 Y 128 0 63 +def @arg18 253 20 1 Y 128 0 63 +def @arg19 253 20 1 Y 128 0 63 def @arg20 253 8192 1 Y 0 31 8 def @arg21 253 8192 10 Y 0 31 8 def @arg22 253 8192 30 Y 0 31 8 @@ -2212,25 +2212,25 @@ set @my_key= 0 ; execute stmt1 using @my_key ; execute full_info ; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def @arg01 253 20 1 Y 128 31 63 -def @arg02 253 20 0 Y 128 31 63 -def @arg03 253 20 0 Y 128 31 63 -def @arg04 253 20 0 Y 128 31 63 -def @arg05 253 20 0 Y 128 31 63 -def @arg06 253 20 0 Y 128 31 63 -def @arg07 253 20 0 Y 128 31 63 -def @arg08 253 20 0 Y 128 31 63 -def @arg09 253 20 0 Y 128 31 63 -def @arg10 253 20 0 Y 128 31 63 -def @arg11 253 64 0 Y 128 30 63 -def @arg12 253 64 0 Y 128 30 63 +def @arg01 253 20 1 Y 128 0 63 +def @arg02 253 20 0 Y 128 0 63 +def @arg03 253 20 0 Y 128 0 63 +def @arg04 253 20 0 Y 128 0 63 +def @arg05 253 20 0 Y 128 0 63 +def @arg06 253 20 0 Y 128 0 63 +def @arg07 253 23 0 Y 128 31 63 +def @arg08 253 23 0 Y 128 31 63 +def @arg09 253 23 0 Y 128 31 63 +def @arg10 253 23 0 Y 128 31 63 +def @arg11 253 67 0 Y 128 30 63 +def @arg12 253 67 0 Y 128 30 63 def @arg13 253 8192 0 Y 128 31 63 def @arg14 253 8192 0 Y 128 31 63 def @arg15 253 8192 19 Y 128 31 63 def @arg16 253 8192 0 Y 128 31 63 -def @arg17 253 20 0 Y 128 31 63 -def @arg18 253 20 0 Y 128 31 63 -def @arg19 253 20 0 Y 128 31 63 +def @arg17 253 20 0 Y 128 0 63 +def @arg18 253 20 0 Y 128 0 63 +def @arg19 253 20 0 Y 128 0 63 def @arg20 253 8192 0 Y 0 31 8 def @arg21 253 8192 0 Y 0 31 8 def @arg22 253 8192 0 Y 0 31 8 diff --git a/mysql-test/r/ps_7ndb.result b/mysql-test/r/ps_7ndb.result index ec8c47031c1..a6da6e169db 100644 --- a/mysql-test/r/ps_7ndb.result +++ b/mysql-test/r/ps_7ndb.result @@ -59,8 +59,8 @@ def test t9 t9 c7 c7 4 12 1 Y 32768 31 63 def test t9 t9 c8 c8 5 22 1 Y 32768 31 63 def test t9 t9 c9 c9 5 22 1 Y 32768 31 63 def test t9 t9 c10 c10 5 22 1 Y 32768 31 63 -def test t9 t9 c11 c11 246 7 6 Y 0 4 63 -def test t9 t9 c12 c12 246 8 6 Y 0 4 63 +def test t9 t9 c11 c11 246 9 6 Y 0 4 63 +def test t9 t9 c12 c12 246 10 6 Y 0 4 63 def test t9 t9 c13 c13 10 10 10 Y 128 0 63 def test t9 t9 c14 c14 12 19 19 Y 128 0 63 def test t9 t9 c15 c15 7 19 19 N 1249 0 63 @@ -1759,8 +1759,8 @@ Table Create Table t5 CREATE TABLE `t5` ( `const01` bigint(1) NOT NULL default '0', `param01` bigint(20) default NULL, - `const02` decimal(3,1) NOT NULL default '0.0', - `param02` decimal(64,30) default NULL, + `const02` decimal(2,1) NOT NULL default '0.0', + `param02` decimal(65,30) default NULL, `const03` double NOT NULL default '0', `param03` double default NULL, `const04` varchar(3) NOT NULL default '', @@ -1781,7 +1781,7 @@ t5 CREATE TABLE `t5` ( `param11` bigint(20) default NULL, `const12` binary(0) default NULL, `param12` bigint(20) default NULL, - `param13` decimal(64,30) default NULL, + `param13` decimal(65,30) default NULL, `param14` longtext, `param15` longblob ) ENGINE=MyISAM DEFAULT CHARSET=latin1 @@ -1789,10 +1789,10 @@ select * from t5 ; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def test t5 t5 const01 const01 8 1 1 N 32769 0 63 def test t5 t5 param01 param01 8 20 1 Y 32768 0 63 -def test t5 t5 const02 const02 246 3 3 N 1 1 63 -def test t5 t5 param02 param02 246 64 32 Y 0 30 63 +def test t5 t5 const02 const02 246 4 3 N 1 1 63 +def test t5 t5 param02 param02 246 67 32 Y 0 30 63 def test t5 t5 const03 const03 5 17 1 N 32769 31 63 -def test t5 t5 param03 param03 5 20 1 Y 32768 31 63 +def test t5 t5 param03 param03 5 23 1 Y 32768 31 63 def test t5 t5 const04 const04 253 3 3 N 1 0 8 def test t5 t5 param04 param04 252 16777215 3 Y 16 0 8 def test t5 t5 const05 const05 253 3 3 N 129 0 63 @@ -1811,7 +1811,7 @@ def test t5 t5 const11 const11 3 4 4 Y 32768 0 63 def test t5 t5 param11 param11 8 20 4 Y 32768 0 63 def test t5 t5 const12 const12 254 0 0 Y 128 0 63 def test t5 t5 param12 param12 8 20 0 Y 32768 0 63 -def test t5 t5 param13 param13 246 64 0 Y 0 30 63 +def test t5 t5 param13 param13 246 67 0 Y 0 30 63 def test t5 t5 param14 param14 252 16777215 0 Y 16 0 8 def test t5 t5 param15 param15 252 16777215 0 Y 144 0 63 const01 8 @@ -1899,25 +1899,25 @@ from t9 where c1= 1 ; 1 1 1 1 1 1 1 1 1 1 1.0000 1.0000 2004-02-29 2004-02-29 11:11:11 2004-02-29 11:11:11 11:11:11 2004 1 1 a 123456789a 123456789a123456789b123456789c tinyblob tinytext blob text mediumblob mediumtext longblob longtext one monday execute full_info ; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def @arg01 253 20 1 Y 128 31 63 -def @arg02 253 20 1 Y 128 31 63 -def @arg03 253 20 1 Y 128 31 63 -def @arg04 253 20 1 Y 128 31 63 -def @arg05 253 20 1 Y 128 31 63 -def @arg06 253 20 1 Y 128 31 63 -def @arg07 253 20 1 Y 128 31 63 -def @arg08 253 20 1 Y 128 31 63 -def @arg09 253 20 1 Y 128 31 63 -def @arg10 253 20 1 Y 128 31 63 -def @arg11 253 64 6 Y 128 30 63 -def @arg12 253 64 6 Y 128 30 63 +def @arg01 253 20 1 Y 128 0 63 +def @arg02 253 20 1 Y 128 0 63 +def @arg03 253 20 1 Y 128 0 63 +def @arg04 253 20 1 Y 128 0 63 +def @arg05 253 20 1 Y 128 0 63 +def @arg06 253 20 1 Y 128 0 63 +def @arg07 253 23 1 Y 128 31 63 +def @arg08 253 23 1 Y 128 31 63 +def @arg09 253 23 1 Y 128 31 63 +def @arg10 253 23 1 Y 128 31 63 +def @arg11 253 67 6 Y 128 30 63 +def @arg12 253 67 6 Y 128 30 63 def @arg13 253 8192 10 Y 128 31 63 def @arg14 253 8192 19 Y 128 31 63 def @arg15 253 8192 19 Y 128 31 63 def @arg16 253 8192 8 Y 128 31 63 -def @arg17 253 20 4 Y 128 31 63 -def @arg18 253 20 1 Y 128 31 63 -def @arg19 253 20 1 Y 128 31 63 +def @arg17 253 20 4 Y 128 0 63 +def @arg18 253 20 1 Y 128 0 63 +def @arg19 253 20 1 Y 128 0 63 def @arg20 253 8192 1 Y 0 31 8 def @arg21 253 8192 10 Y 0 31 8 def @arg22 253 8192 30 Y 0 31 8 @@ -1946,25 +1946,25 @@ from t9 where c1= 0 ; 0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1991-01-01 01:01:01 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL execute full_info ; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def @arg01 253 20 1 Y 128 31 63 -def @arg02 253 20 0 Y 128 31 63 -def @arg03 253 20 0 Y 128 31 63 -def @arg04 253 20 0 Y 128 31 63 -def @arg05 253 20 0 Y 128 31 63 -def @arg06 253 20 0 Y 128 31 63 -def @arg07 253 20 0 Y 128 31 63 -def @arg08 253 20 0 Y 128 31 63 -def @arg09 253 20 0 Y 128 31 63 -def @arg10 253 20 0 Y 128 31 63 -def @arg11 253 64 0 Y 128 30 63 -def @arg12 253 64 0 Y 128 30 63 +def @arg01 253 20 1 Y 128 0 63 +def @arg02 253 20 0 Y 128 0 63 +def @arg03 253 20 0 Y 128 0 63 +def @arg04 253 20 0 Y 128 0 63 +def @arg05 253 20 0 Y 128 0 63 +def @arg06 253 20 0 Y 128 0 63 +def @arg07 253 23 0 Y 128 31 63 +def @arg08 253 23 0 Y 128 31 63 +def @arg09 253 23 0 Y 128 31 63 +def @arg10 253 23 0 Y 128 31 63 +def @arg11 253 67 0 Y 128 30 63 +def @arg12 253 67 0 Y 128 30 63 def @arg13 253 8192 0 Y 128 31 63 def @arg14 253 8192 0 Y 128 31 63 def @arg15 253 8192 19 Y 128 31 63 def @arg16 253 8192 0 Y 128 31 63 -def @arg17 253 20 0 Y 128 31 63 -def @arg18 253 20 0 Y 128 31 63 -def @arg19 253 20 0 Y 128 31 63 +def @arg17 253 20 0 Y 128 0 63 +def @arg18 253 20 0 Y 128 0 63 +def @arg19 253 20 0 Y 128 0 63 def @arg20 253 8192 0 Y 0 31 8 def @arg21 253 8192 0 Y 0 31 8 def @arg22 253 8192 0 Y 0 31 8 @@ -1996,25 +1996,25 @@ execute stmt1 using @my_key ; 1 1 1 1 1 1 1 1 1 1 1.0000 1.0000 2004-02-29 2004-02-29 11:11:11 2004-02-29 11:11:11 11:11:11 2004 1 1 a 123456789a 123456789a123456789b123456789c tinyblob tinytext blob text mediumblob mediumtext longblob longtext one monday execute full_info ; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def @arg01 253 20 1 Y 128 31 63 -def @arg02 253 20 1 Y 128 31 63 -def @arg03 253 20 1 Y 128 31 63 -def @arg04 253 20 1 Y 128 31 63 -def @arg05 253 20 1 Y 128 31 63 -def @arg06 253 20 1 Y 128 31 63 -def @arg07 253 20 1 Y 128 31 63 -def @arg08 253 20 1 Y 128 31 63 -def @arg09 253 20 1 Y 128 31 63 -def @arg10 253 20 1 Y 128 31 63 -def @arg11 253 64 6 Y 128 30 63 -def @arg12 253 64 6 Y 128 30 63 +def @arg01 253 20 1 Y 128 0 63 +def @arg02 253 20 1 Y 128 0 63 +def @arg03 253 20 1 Y 128 0 63 +def @arg04 253 20 1 Y 128 0 63 +def @arg05 253 20 1 Y 128 0 63 +def @arg06 253 20 1 Y 128 0 63 +def @arg07 253 23 1 Y 128 31 63 +def @arg08 253 23 1 Y 128 31 63 +def @arg09 253 23 1 Y 128 31 63 +def @arg10 253 23 1 Y 128 31 63 +def @arg11 253 67 6 Y 128 30 63 +def @arg12 253 67 6 Y 128 30 63 def @arg13 253 8192 10 Y 128 31 63 def @arg14 253 8192 19 Y 128 31 63 def @arg15 253 8192 19 Y 128 31 63 def @arg16 253 8192 8 Y 128 31 63 -def @arg17 253 20 4 Y 128 31 63 -def @arg18 253 20 1 Y 128 31 63 -def @arg19 253 20 1 Y 128 31 63 +def @arg17 253 20 4 Y 128 0 63 +def @arg18 253 20 1 Y 128 0 63 +def @arg19 253 20 1 Y 128 0 63 def @arg20 253 8192 1 Y 0 31 8 def @arg21 253 8192 10 Y 0 31 8 def @arg22 253 8192 30 Y 0 31 8 @@ -2036,25 +2036,25 @@ execute stmt1 using @my_key ; 0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1991-01-01 01:01:01 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL execute full_info ; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def @arg01 253 20 1 Y 128 31 63 -def @arg02 253 20 0 Y 128 31 63 -def @arg03 253 20 0 Y 128 31 63 -def @arg04 253 20 0 Y 128 31 63 -def @arg05 253 20 0 Y 128 31 63 -def @arg06 253 20 0 Y 128 31 63 -def @arg07 253 20 0 Y 128 31 63 -def @arg08 253 20 0 Y 128 31 63 -def @arg09 253 20 0 Y 128 31 63 -def @arg10 253 20 0 Y 128 31 63 -def @arg11 253 64 0 Y 128 30 63 -def @arg12 253 64 0 Y 128 30 63 +def @arg01 253 20 1 Y 128 0 63 +def @arg02 253 20 0 Y 128 0 63 +def @arg03 253 20 0 Y 128 0 63 +def @arg04 253 20 0 Y 128 0 63 +def @arg05 253 20 0 Y 128 0 63 +def @arg06 253 20 0 Y 128 0 63 +def @arg07 253 23 0 Y 128 31 63 +def @arg08 253 23 0 Y 128 31 63 +def @arg09 253 23 0 Y 128 31 63 +def @arg10 253 23 0 Y 128 31 63 +def @arg11 253 67 0 Y 128 30 63 +def @arg12 253 67 0 Y 128 30 63 def @arg13 253 8192 0 Y 128 31 63 def @arg14 253 8192 0 Y 128 31 63 def @arg15 253 8192 19 Y 128 31 63 def @arg16 253 8192 0 Y 128 31 63 -def @arg17 253 20 0 Y 128 31 63 -def @arg18 253 20 0 Y 128 31 63 -def @arg19 253 20 0 Y 128 31 63 +def @arg17 253 20 0 Y 128 0 63 +def @arg18 253 20 0 Y 128 0 63 +def @arg19 253 20 0 Y 128 0 63 def @arg20 253 8192 0 Y 0 31 8 def @arg21 253 8192 0 Y 0 31 8 def @arg22 253 8192 0 Y 0 31 8 @@ -2084,25 +2084,25 @@ into @arg01, @arg02, @arg03, @arg04, @arg05, @arg06, @arg07, @arg08, from t9 where c1= 1 ; execute full_info ; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def @arg01 253 20 1 Y 128 31 63 -def @arg02 253 20 1 Y 128 31 63 -def @arg03 253 20 1 Y 128 31 63 -def @arg04 253 20 1 Y 128 31 63 -def @arg05 253 20 1 Y 128 31 63 -def @arg06 253 20 1 Y 128 31 63 -def @arg07 253 20 1 Y 128 31 63 -def @arg08 253 20 1 Y 128 31 63 -def @arg09 253 20 1 Y 128 31 63 -def @arg10 253 20 1 Y 128 31 63 -def @arg11 253 64 6 Y 128 30 63 -def @arg12 253 64 6 Y 128 30 63 +def @arg01 253 20 1 Y 128 0 63 +def @arg02 253 20 1 Y 128 0 63 +def @arg03 253 20 1 Y 128 0 63 +def @arg04 253 20 1 Y 128 0 63 +def @arg05 253 20 1 Y 128 0 63 +def @arg06 253 20 1 Y 128 0 63 +def @arg07 253 23 1 Y 128 31 63 +def @arg08 253 23 1 Y 128 31 63 +def @arg09 253 23 1 Y 128 31 63 +def @arg10 253 23 1 Y 128 31 63 +def @arg11 253 67 6 Y 128 30 63 +def @arg12 253 67 6 Y 128 30 63 def @arg13 253 8192 10 Y 128 31 63 def @arg14 253 8192 19 Y 128 31 63 def @arg15 253 8192 19 Y 128 31 63 def @arg16 253 8192 8 Y 128 31 63 -def @arg17 253 20 4 Y 128 31 63 -def @arg18 253 20 1 Y 128 31 63 -def @arg19 253 20 1 Y 128 31 63 +def @arg17 253 20 4 Y 128 0 63 +def @arg18 253 20 1 Y 128 0 63 +def @arg19 253 20 1 Y 128 0 63 def @arg20 253 8192 1 Y 0 31 8 def @arg21 253 8192 10 Y 0 31 8 def @arg22 253 8192 30 Y 0 31 8 @@ -2128,25 +2128,25 @@ into @arg01, @arg02, @arg03, @arg04, @arg05, @arg06, @arg07, @arg08, from t9 where c1= 0 ; execute full_info ; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def @arg01 253 20 1 Y 128 31 63 -def @arg02 253 20 0 Y 128 31 63 -def @arg03 253 20 0 Y 128 31 63 -def @arg04 253 20 0 Y 128 31 63 -def @arg05 253 20 0 Y 128 31 63 -def @arg06 253 20 0 Y 128 31 63 -def @arg07 253 20 0 Y 128 31 63 -def @arg08 253 20 0 Y 128 31 63 -def @arg09 253 20 0 Y 128 31 63 -def @arg10 253 20 0 Y 128 31 63 -def @arg11 253 64 0 Y 128 30 63 -def @arg12 253 64 0 Y 128 30 63 +def @arg01 253 20 1 Y 128 0 63 +def @arg02 253 20 0 Y 128 0 63 +def @arg03 253 20 0 Y 128 0 63 +def @arg04 253 20 0 Y 128 0 63 +def @arg05 253 20 0 Y 128 0 63 +def @arg06 253 20 0 Y 128 0 63 +def @arg07 253 23 0 Y 128 31 63 +def @arg08 253 23 0 Y 128 31 63 +def @arg09 253 23 0 Y 128 31 63 +def @arg10 253 23 0 Y 128 31 63 +def @arg11 253 67 0 Y 128 30 63 +def @arg12 253 67 0 Y 128 30 63 def @arg13 253 8192 0 Y 128 31 63 def @arg14 253 8192 0 Y 128 31 63 def @arg15 253 8192 19 Y 128 31 63 def @arg16 253 8192 0 Y 128 31 63 -def @arg17 253 20 0 Y 128 31 63 -def @arg18 253 20 0 Y 128 31 63 -def @arg19 253 20 0 Y 128 31 63 +def @arg17 253 20 0 Y 128 0 63 +def @arg18 253 20 0 Y 128 0 63 +def @arg19 253 20 0 Y 128 0 63 def @arg20 253 8192 0 Y 0 31 8 def @arg21 253 8192 0 Y 0 31 8 def @arg22 253 8192 0 Y 0 31 8 @@ -2174,25 +2174,25 @@ set @my_key= 1 ; execute stmt1 using @my_key ; execute full_info ; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def @arg01 253 20 1 Y 128 31 63 -def @arg02 253 20 1 Y 128 31 63 -def @arg03 253 20 1 Y 128 31 63 -def @arg04 253 20 1 Y 128 31 63 -def @arg05 253 20 1 Y 128 31 63 -def @arg06 253 20 1 Y 128 31 63 -def @arg07 253 20 1 Y 128 31 63 -def @arg08 253 20 1 Y 128 31 63 -def @arg09 253 20 1 Y 128 31 63 -def @arg10 253 20 1 Y 128 31 63 -def @arg11 253 64 6 Y 128 30 63 -def @arg12 253 64 6 Y 128 30 63 +def @arg01 253 20 1 Y 128 0 63 +def @arg02 253 20 1 Y 128 0 63 +def @arg03 253 20 1 Y 128 0 63 +def @arg04 253 20 1 Y 128 0 63 +def @arg05 253 20 1 Y 128 0 63 +def @arg06 253 20 1 Y 128 0 63 +def @arg07 253 23 1 Y 128 31 63 +def @arg08 253 23 1 Y 128 31 63 +def @arg09 253 23 1 Y 128 31 63 +def @arg10 253 23 1 Y 128 31 63 +def @arg11 253 67 6 Y 128 30 63 +def @arg12 253 67 6 Y 128 30 63 def @arg13 253 8192 10 Y 128 31 63 def @arg14 253 8192 19 Y 128 31 63 def @arg15 253 8192 19 Y 128 31 63 def @arg16 253 8192 8 Y 128 31 63 -def @arg17 253 20 4 Y 128 31 63 -def @arg18 253 20 1 Y 128 31 63 -def @arg19 253 20 1 Y 128 31 63 +def @arg17 253 20 4 Y 128 0 63 +def @arg18 253 20 1 Y 128 0 63 +def @arg19 253 20 1 Y 128 0 63 def @arg20 253 8192 1 Y 0 31 8 def @arg21 253 8192 10 Y 0 31 8 def @arg22 253 8192 30 Y 0 31 8 @@ -2212,25 +2212,25 @@ set @my_key= 0 ; execute stmt1 using @my_key ; execute full_info ; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def @arg01 253 20 1 Y 128 31 63 -def @arg02 253 20 0 Y 128 31 63 -def @arg03 253 20 0 Y 128 31 63 -def @arg04 253 20 0 Y 128 31 63 -def @arg05 253 20 0 Y 128 31 63 -def @arg06 253 20 0 Y 128 31 63 -def @arg07 253 20 0 Y 128 31 63 -def @arg08 253 20 0 Y 128 31 63 -def @arg09 253 20 0 Y 128 31 63 -def @arg10 253 20 0 Y 128 31 63 -def @arg11 253 64 0 Y 128 30 63 -def @arg12 253 64 0 Y 128 30 63 +def @arg01 253 20 1 Y 128 0 63 +def @arg02 253 20 0 Y 128 0 63 +def @arg03 253 20 0 Y 128 0 63 +def @arg04 253 20 0 Y 128 0 63 +def @arg05 253 20 0 Y 128 0 63 +def @arg06 253 20 0 Y 128 0 63 +def @arg07 253 23 0 Y 128 31 63 +def @arg08 253 23 0 Y 128 31 63 +def @arg09 253 23 0 Y 128 31 63 +def @arg10 253 23 0 Y 128 31 63 +def @arg11 253 67 0 Y 128 30 63 +def @arg12 253 67 0 Y 128 30 63 def @arg13 253 8192 0 Y 128 31 63 def @arg14 253 8192 0 Y 128 31 63 def @arg15 253 8192 19 Y 128 31 63 def @arg16 253 8192 0 Y 128 31 63 -def @arg17 253 20 0 Y 128 31 63 -def @arg18 253 20 0 Y 128 31 63 -def @arg19 253 20 0 Y 128 31 63 +def @arg17 253 20 0 Y 128 0 63 +def @arg18 253 20 0 Y 128 0 63 +def @arg19 253 20 0 Y 128 0 63 def @arg20 253 8192 0 Y 0 31 8 def @arg21 253 8192 0 Y 0 31 8 def @arg22 253 8192 0 Y 0 31 8 diff --git a/mysql-test/r/select.result b/mysql-test/r/select.result index 7f131c63421..ff45eff68da 100644 --- a/mysql-test/r/select.result +++ b/mysql-test/r/select.result @@ -1672,7 +1672,7 @@ fld1 count(*) 158402 4181 select sum(Period)/count(*) from t1; sum(Period)/count(*) -9410.00000 +9410.0000 select companynr,count(price) as "count",sum(price) as "sum" ,abs(sum(price)/count(price)-avg(price)) as "diff",(0+count(price))*companynr as func from t3 group by companynr; companynr count sum diff func 37 12543 309394878010 0.0000 464091 @@ -1684,7 +1684,7 @@ companynr count sum diff func 512 4181 3288532102 0.0000 2140672 select companynr,sum(price)/count(price) as avg from t3 group by companynr having avg > 70000000 order by avg; companynr avg -154 983543950.00 +154 983543950.0000 select companynr,count(*) from t2 group by companynr order by 2 desc; companynr count(*) 37 588 diff --git a/mysql-test/r/sp.result b/mysql-test/r/sp.result index a5cdee4b1bf..a57bd7139e2 100644 --- a/mysql-test/r/sp.result +++ b/mysql-test/r/sp.result @@ -2913,10 +2913,10 @@ select @sptmp| 10 call bug9674_2()| v/10 -10.00000 +10.0000 call bug9674_2()| v/10 -10.00000 +10.0000 drop procedure bug9674_1| drop procedure bug9674_2| drop procedure if exists bug9598_1| diff --git a/mysql-test/r/type_decimal.result b/mysql-test/r/type_decimal.result index a7b6fa1b376..ab57caacc0f 100644 --- a/mysql-test/r/type_decimal.result +++ b/mysql-test/r/type_decimal.result @@ -731,7 +731,7 @@ t1 CREATE TABLE `t1` ( `d` decimal(10,0) default NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 drop table t1; -create table t1 (d decimal(65,0)); +create table t1 (d decimal(66,0)); ERROR 42000: Incorrect column specifier for column 'd' CREATE TABLE t1 (i INT, d1 DECIMAL(9,2), d2 DECIMAL(9,2)); INSERT INTO t1 VALUES (1, 101.40, 21.40), (1, -80.00, 0.00), diff --git a/mysql-test/r/type_newdecimal.result b/mysql-test/r/type_newdecimal.result index 330caf68293..727d4886ad5 100644 --- a/mysql-test/r/type_newdecimal.result +++ b/mysql-test/r/type_newdecimal.result @@ -52,13 +52,13 @@ if(1, 1.1, 1.2) if(0, 1.1, 1.2) if(0.1, 1.1, 1.2) if(0, 1, 1.1) if(0, NULL, 1.2) show create table t1; Table Create Table t1 CREATE TABLE `t1` ( - `if(1, 1.1, 1.2)` decimal(5,1) NOT NULL default '0.0', - `if(0, 1.1, 1.2)` decimal(5,1) NOT NULL default '0.0', - `if(0.1, 1.1, 1.2)` decimal(5,1) NOT NULL default '0.0', - `if(0, 1, 1.1)` decimal(5,1) NOT NULL default '0.0', - `if(0, NULL, 1.2)` decimal(5,1) default NULL, + `if(1, 1.1, 1.2)` decimal(2,1) NOT NULL default '0.0', + `if(0, 1.1, 1.2)` decimal(2,1) NOT NULL default '0.0', + `if(0.1, 1.1, 1.2)` decimal(2,1) NOT NULL default '0.0', + `if(0, 1, 1.1)` decimal(2,1) NOT NULL default '0.0', + `if(0, NULL, 1.2)` decimal(2,1) default NULL, `if(1, 0.22e1, 1.1)` double NOT NULL default '0', - `if(1E0, 1.1, 1.2)` decimal(5,1) NOT NULL default '0.0' + `if(1E0, 1.1, 1.2)` decimal(2,1) NOT NULL default '0.0' ) ENGINE=MyISAM DEFAULT CHARSET=latin1 drop table t1; create table t1 select nullif(1.1, 1.1), nullif(1.1, 1.2), nullif(1.1, 0.11e1), nullif(1.0, 1), nullif(1, 1.0), nullif(1, 1.1); @@ -68,12 +68,12 @@ NULL 1.1 NULL NULL NULL 1 show create table t1; Table Create Table t1 CREATE TABLE `t1` ( - `nullif(1.1, 1.1)` decimal(5,1) default NULL, - `nullif(1.1, 1.2)` decimal(5,1) default NULL, - `nullif(1.1, 0.11e1)` double(4,1) default NULL, - `nullif(1.0, 1)` decimal(5,1) default NULL, - `nullif(1, 1.0)` decimal(1,0) default NULL, - `nullif(1, 1.1)` decimal(1,0) default NULL + `nullif(1.1, 1.1)` decimal(2,1) default NULL, + `nullif(1.1, 1.2)` decimal(2,1) default NULL, + `nullif(1.1, 0.11e1)` decimal(2,1) default NULL, + `nullif(1.0, 1)` decimal(2,1) default NULL, + `nullif(1, 1.0)` int(1) default NULL, + `nullif(1, 1.1)` int(1) default NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 drop table t1; create table t1 (a decimal(4,2)); @@ -174,10 +174,10 @@ create table t1 select round(15.4,-1), truncate(-5678.123451,-3), abs(-1.1), -(- show create table t1; Table Create Table t1 CREATE TABLE `t1` ( - `round(15.4,-1)` decimal(5,0) NOT NULL default '0', - `truncate(-5678.123451,-3)` decimal(13,0) NOT NULL default '0', - `abs(-1.1)` decimal(6,1) NOT NULL default '0.0', - `-(-1.1)` decimal(7,1) NOT NULL default '0.0' + `round(15.4,-1)` decimal(3,0) NOT NULL default '0', + `truncate(-5678.123451,-3)` decimal(4,0) NOT NULL default '0', + `abs(-1.1)` decimal(3,1) NOT NULL default '0.0', + `-(-1.1)` decimal(2,1) NOT NULL default '0.0' ) ENGINE=MyISAM DEFAULT CHARSET=latin1 drop table t1; set session sql_mode='traditional'; @@ -375,7 +375,7 @@ col1 drop table wl1612; select 1/3; 1/3 -0.33333 +0.3333 select 0.8=0.7+0.1; 0.8=0.7+0.1 1 @@ -398,7 +398,7 @@ select 0.07*0.07 from wl1612_1; 0.0049 select 0.07/0.07 from wl1612_1; 0.07/0.07 -1.000000000 +1.000000 drop table wl1612_1; create table wl1612_2 (col1 decimal(10,2), col2 numeric(10,2)); insert into wl1612_2 values(1,1); @@ -626,16 +626,16 @@ create table wl1612_4 (col1 int, col2 decimal(30,25), col3 numeric(30,25)); insert into wl1612_4 values(1,0.0123456789012345678912345,0.0123456789012345678912345); select col2/9999999999 from wl1612_4 where col1=1; col2/9999999999 -0.0000000000012345678902469135781481410000000000000000000 +0.00000000000123456789024691358 select col3/9999999999 from wl1612_4 where col1=1; col3/9999999999 -0.0000000000012345678902469135781481410000000000000000000 +0.00000000000123456789024691358 select 9999999999/col2 from wl1612_4 where col1=1; 9999999999/col2 -810000007209.00007 +810000007209.0001 select 9999999999/col3 from wl1612_4 where col1=1; 9999999999/col3 -810000007209.00007 +810000007209.0001 select col2*9999999999 from wl1612_4 where col1=1; col2*9999999999 123456789.0000000000111104321087655 @@ -645,16 +645,16 @@ col3*9999999999 insert into wl1612_4 values(2,55555.0123456789012345678912345,55555.0123456789012345678912345); select col2/9999999999 from wl1612_4 where col1=2; col2/9999999999 -0.0000055555012351234402469691331481460000000000000000000 +0.00000555550123512344024696913 select col3/9999999999 from wl1612_4 where col1=2; col3/9999999999 -0.0000055555012351234402469691331481460000000000000000000 +0.00000555550123512344024696913 select 9999999999/col2 from wl1612_4 where col1=2; 9999999999/col2 -180001.76000 +180001.7600 select 9999999999/col3 from wl1612_4 where col1=2; 9999999999/col3 -180001.76000 +180001.7600 select col2*9999999999 from wl1612_4 where col1=2; col2*9999999999 555550123401234.0000000000111104321087655 @@ -712,7 +712,7 @@ select .7777777777777777777777777777777777777 * 1000000000000000000; .7777777777777777777777777777777777777 * 1000000000000000000 -777777777777777777.7777777777777777777000000000000000000 +777777777777777777.777777777777777777700000000000 select .7777777777777777777777777777777777777 - 0.1; .7777777777777777777777777777777777777 - 0.1 0.6777777777777777777777777777777777777 @@ -772,10 +772,10 @@ round(-99999999999999999.999,3) -99999999999999999.999 select truncate(99999999999999999999999999999999999999,31); truncate(99999999999999999999999999999999999999,31) -99999999999999999999999999999999999999.000000000000000000000000000 +99999999999999999999999999999999999999.000000000000000000000000000000 select truncate(99.999999999999999999999999999999999999,31); truncate(99.999999999999999999999999999999999999,31) -99.9999999999999999999999999999999 +100.000000000000000000000000000000 select truncate(99999999999999999999999999999999999999,-31); truncate(99999999999999999999999999999999999999,-31) 99999990000000000000000000000000000000 @@ -783,7 +783,7 @@ create table t1 as select 0.5; show create table t1; Table Create Table t1 CREATE TABLE `t1` ( - `0.5` decimal(3,1) NOT NULL default '0.0' + `0.5` decimal(2,1) NOT NULL default '0.0' ) ENGINE=MyISAM DEFAULT CHARSET=latin1 drop table t1; select round(1.5),round(2.5); @@ -841,4 +841,4 @@ ERROR HY000: Incorrect decimal value: 'a59b' for column 'col1' at row 1 drop table Sow6_2f; select 10.3330000000000/12.34500000; 10.3330000000000/12.34500000 -0.8370190360469825840421223160000 +0.83701903604698258 diff --git a/mysql-test/r/union.result b/mysql-test/r/union.result index dcd364f1422..aae3c414c5c 100644 --- a/mysql-test/r/union.result +++ b/mysql-test/r/union.result @@ -565,7 +565,7 @@ a show create table t1; Table Create Table t1 CREATE TABLE `t1` ( - `a` decimal(19,1) NOT NULL default '0.0' + `a` decimal(3,1) NOT NULL default '0.0' ) ENGINE=MyISAM DEFAULT CHARSET=latin1 drop table t1; create table t2 (it1 tinyint, it2 tinyint not null, i int not null, ib bigint, f float, d double, y year, da date, dt datetime, sc char(10), sv varchar(10), b blob, tx text); @@ -792,7 +792,7 @@ d show create table t3; Table Create Table t3 CREATE TABLE `t3` ( - `d` decimal(19,9) default NULL + `d` decimal(18,9) default NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 drop table t1,t2,t3; create table t1 select 1 union select -1; diff --git a/mysql-test/r/variables.result b/mysql-test/r/variables.result index b3850bcc72c..3479d209019 100644 --- a/mysql-test/r/variables.result +++ b/mysql-test/r/variables.result @@ -504,7 +504,7 @@ show create table t1; Table Create Table t1 CREATE TABLE `t1` ( `c1` bigint(20) default NULL, - `c2` decimal(64,30) default NULL, + `c2` decimal(65,30) default NULL, `c3` longtext, `c4` double default NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 diff --git a/mysql-test/t/func_group.test b/mysql-test/t/func_group.test index 9b6f91067d4..459a40cfe87 100644 --- a/mysql-test/t/func_group.test +++ b/mysql-test/t/func_group.test @@ -6,6 +6,9 @@ drop table if exists t1,t2; --enable_warnings +set @sav_dpi= @@div_precision_increment; +set div_precision_increment= 5; +show variables like 'div_precision_increment'; create table t1 (grp int, a bigint unsigned, c char(10) not null); insert into t1 values (1,1,"a"); insert into t1 values (2,2,"b"); @@ -623,4 +626,5 @@ SELECT b/c as v, SUM(a) FROM t1 GROUP BY v; SELECT SUM(a) FROM t1 GROUP BY b/c; DROP TABLE t1; +set div_precision_increment= @sav_dpi; diff --git a/mysql-test/t/olap.test b/mysql-test/t/olap.test index 03b26e0b6c6..378f195406b 100644 --- a/mysql-test/t/olap.test +++ b/mysql-test/t/olap.test @@ -2,6 +2,10 @@ drop table if exists t1,t2; --enable_warnings +set @sav_dpi= @@div_precision_increment; +set div_precision_increment= 5; +show variables like 'div_precision_increment'; + create table t1 (product varchar(32), country_id int not null, year int, profit int); insert into t1 values ( 'Computer', 2,2000, 1200), ( 'TV', 1, 1999, 150), @@ -191,3 +195,4 @@ SELECT a, SUM(a) m FROM t1 GROUP BY a WITH ROLLUP; SELECT * FROM ( SELECT a, SUM(a) m FROM t1 GROUP BY a WITH ROLLUP ) t2; DROP TABLE t1; +set div_precision_increment= @sav_dpi; diff --git a/mysql-test/t/type_decimal.test b/mysql-test/t/type_decimal.test index f86113ac66b..7ce54847506 100644 --- a/mysql-test/t/type_decimal.test +++ b/mysql-test/t/type_decimal.test @@ -308,7 +308,7 @@ create table t1 (d decimal); show create table t1; drop table t1; --error 1063 -create table t1 (d decimal(65,0)); +create table t1 (d decimal(66,0)); # # Test example from manual From 0bd7e5f97b442f573ceaeffbf3360ff024b8dc51 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 6 May 2005 00:16:33 +0200 Subject: [PATCH 25/29] - fixed typo in variable name that caused compile errors on many platforms (tmp_error -> tmp_errno) --- sql/hostname.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql/hostname.cc b/sql/hostname.cc index fe2fad6f3b2..47960275e3a 100644 --- a/sql/hostname.cc +++ b/sql/hostname.cc @@ -183,7 +183,7 @@ my_string ip_to_hostname(struct in_addr *in, uint *errors) that attempted to connect during the outage) unable to connect indefinitely. */ - if (tmp_errno == HOST_NOT_FOUND || tmp_error == NO_DATA) + if (tmp_errno == HOST_NOT_FOUND || tmp_errno == NO_DATA) add_wrong_ip(in); my_gethostbyname_r_free(); DBUG_RETURN(0); From 56426fca8888bd867f6862561ae17fe6f5ca6669 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 6 May 2005 13:31:48 +0500 Subject: [PATCH 26/29] A fix (bug #10404: select 0/0 returns 0). strings/decimal.c: A fix (bug #10404: select 0/0 returns 0). We should check the second argument (0?) first. --- mysql-test/r/type_newdecimal.result | 4 ++++ mysql-test/t/type_newdecimal.test | 7 +++++++ strings/decimal.c | 26 +++++++++++++------------- 3 files changed, 24 insertions(+), 13 deletions(-) diff --git a/mysql-test/r/type_newdecimal.result b/mysql-test/r/type_newdecimal.result index 727d4886ad5..6702676fa35 100644 --- a/mysql-test/r/type_newdecimal.result +++ b/mysql-test/r/type_newdecimal.result @@ -842,3 +842,7 @@ drop table Sow6_2f; select 10.3330000000000/12.34500000; 10.3330000000000/12.34500000 0.83701903604698258 +set sql_mode=''; +select 0/0; +0/0 +NULL diff --git a/mysql-test/t/type_newdecimal.test b/mysql-test/t/type_newdecimal.test index e85cc3d55c6..19230c02743 100644 --- a/mysql-test/t/type_newdecimal.test +++ b/mysql-test/t/type_newdecimal.test @@ -869,3 +869,10 @@ drop table Sow6_2f; # bug#9501 # select 10.3330000000000/12.34500000; + +# +# Bug #10404 +# + +set sql_mode=''; +select 0/0; diff --git a/strings/decimal.c b/strings/decimal.c index 52003a930c0..4b7dc8803ee 100644 --- a/strings/decimal.c +++ b/strings/decimal.c @@ -1945,6 +1945,18 @@ static int do_div_mod(decimal_t *from1, decimal_t *from2, sanity(to); /* removing all the leading zeroes */ + i= ((prec2 - 1) % DIG_PER_DEC1) + 1; + while (prec2 > 0 && *buf2 == 0) + { + prec2-= i; + i= DIG_PER_DEC1; + buf2++; + } + if (prec2 <= 0) /* short-circuit everything: from2 == 0 */ + return E_DEC_DIV_ZERO; + for (i= (prec2 - 1) % DIG_PER_DEC1; *buf2 < powers10[i--]; prec2--) ; + DBUG_ASSERT(prec2 > 0); + i=((prec1-1) % DIG_PER_DEC1)+1; while (prec1 > 0 && *buf1 == 0) { @@ -1960,19 +1972,6 @@ static int do_div_mod(decimal_t *from1, decimal_t *from2, for (i=(prec1-1) % DIG_PER_DEC1; *buf1 < powers10[i--]; prec1--) ; DBUG_ASSERT(prec1 > 0); - i=((prec2-1) % DIG_PER_DEC1)+1; - while (prec2 > 0 && *buf2 == 0) - { - prec2-=i; - i=DIG_PER_DEC1; - buf2++; - } - if (prec2 <= 0) /* short-circuit everything: from2 == 0 */ - return E_DEC_DIV_ZERO; - - for (i=(prec2-1) % DIG_PER_DEC1; *buf2 < powers10[i--]; prec2--) ; - DBUG_ASSERT(prec2 > 0); - /* let's fix scale_incr, taking into account frac1,frac2 increase */ if ((scale_incr-= frac1 - from1->frac + frac2 - from2->frac) < 0) scale_incr=0; @@ -2723,6 +2722,7 @@ int main() test_dv("123", "0.01","12300.000000000", 0); test_dv("120", "100000000000.00000","0.000000001200000000", 0); test_dv("123", "0","", 4); + test_dv("0", "0", "", 4); test_dv("-12193185.1853376", "98765.4321","-123.456000000000000000", 0); test_dv("121931851853376", "987654321","123456.000000000", 0); test_dv("0", "987","0", 0); From 72490191019af446fccf3bd44ffb6b1a7519fc4c Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 6 May 2005 12:18:37 +0300 Subject: [PATCH 27/29] A fix for Bug#8467. BitKeeper/etc/logging_ok: Logging to logging@openlogging.org accepted --- BitKeeper/etc/logging_ok | 1 + sql/hostname.cc | 12 ++++++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/BitKeeper/etc/logging_ok b/BitKeeper/etc/logging_ok index 2e341a5e820..e8f1c57bd24 100644 --- a/BitKeeper/etc/logging_ok +++ b/BitKeeper/etc/logging_ok @@ -86,6 +86,7 @@ jani@dsl-jkl1657.dial.inet.fi jani@dsl-kpogw4gb5.dial.inet.fi jani@hynda.(none) jani@hynda.mysql.fi +jani@ibmlab.site jani@janikt.pp.saunalahti.fi jani@rhols221.adsl.netsonic.fi jani@rhols221.arenanet.fi diff --git a/sql/hostname.cc b/sql/hostname.cc index 47960275e3a..ec5c6f29a27 100644 --- a/sql/hostname.cc +++ b/sql/hostname.cc @@ -207,13 +207,17 @@ my_string ip_to_hostname(struct in_addr *in, uint *errors) { VOID(pthread_mutex_unlock(&LOCK_hostname)); DBUG_PRINT("error",("gethostbyaddr returned %d",errno)); - goto err; + + if (errno == HOST_NOT_FOUND || errno == NO_DATA) + add_wrong_ip(in); /* only cache negative responses, not failures */ + + DBUG_RETURN(0); } if (!hp->h_name[0]) // Don't allow empty hostnames { VOID(pthread_mutex_unlock(&LOCK_hostname)); DBUG_PRINT("error",("Got an empty hostname")); - goto err; + goto add_wrong_ip_and_return; } if (!(name=my_strdup(hp->h_name,MYF(0)))) { @@ -240,7 +244,7 @@ my_string ip_to_hostname(struct in_addr *in, uint *errors) { DBUG_PRINT("error",("mysqld doesn't accept hostnames that starts with a number followed by a '.'")); my_free(name,MYF(0)); - goto err; + goto add_wrong_ip_and_return; } } @@ -256,7 +260,7 @@ my_string ip_to_hostname(struct in_addr *in, uint *errors) DBUG_PRINT("error",("Couldn't verify hostname with gethostbyname")); my_free(name,MYF(0)); -err: +add_wrong_ip_and_return: add_wrong_ip(in); DBUG_RETURN(0); } From 698502867e344e90180538a85e37ff67a6f644b1 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 6 May 2005 12:43:10 +0300 Subject: [PATCH 28/29] After merge fix innobase/include/srv0srv.h: Restore accidentally deleted comment. --- innobase/include/srv0srv.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/innobase/include/srv0srv.h b/innobase/include/srv0srv.h index 9d96a372291..6e4241965c1 100644 --- a/innobase/include/srv0srv.h +++ b/innobase/include/srv0srv.h @@ -472,6 +472,9 @@ srv_printf_innodb_monitor( ulint* trx_end); /* out: file position of the end of the list of active transactions */ +/********************************************************************** +Function to pass InnoDB status variables to MySQL */ + void srv_export_innodb_status(void); /*=====================*/ From a0aa453934cf7969c3a8fef06028c9ae4d837a19 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 6 May 2005 15:22:55 +0500 Subject: [PATCH 29/29] bug#6504 Upper/Lower conversion bug: upper/lower conversion for LATIN LETTER D WITH STROKE was wrong in latin2. --- mysql-test/r/ctype_latin2.result | Bin 0 -> 6569 bytes mysql-test/t/ctype_latin2.test | 47 +++++++++++++++++++++++++++++++ sql/share/charsets/latin2.xml | 4 +-- 3 files changed, 49 insertions(+), 2 deletions(-) create mode 100644 mysql-test/r/ctype_latin2.result create mode 100644 mysql-test/t/ctype_latin2.test diff --git a/mysql-test/r/ctype_latin2.result b/mysql-test/r/ctype_latin2.result new file mode 100644 index 0000000000000000000000000000000000000000..2876accaf72bef7fcf4830192431a3bcb02d497b GIT binary patch literal 6569 zcmaKucevhnU4~UuxIZosx1uisl1SCx9tPCkgwiyHCN0Bx+NLCsHX(zihjMjvU+^zI1c& z^x+dHPi#)+dt(1`V6$&HciF!=vUBqA<;9+u&R>QD%jUo^?p^ef&90rz#fNr|@5*4tp=q_uG}7&a&NSoq6Pb6n>O` zRDRTcG=8*Ozg_1S^?nR~jDAdh%zi9>tlPd_Zo1rbx#@D#<)+I`mzyr%N|&21H(hSJ z+;q9=a?|Ce%eT@MrYlTWn65BgVY8h=CmFX(e zRi>*sn65EhW4dN5U2D45bgk)H)3v5+P1l;P-AdP* zt~Fh2y4G~9=~~mZrfav-b*Ae~*O{&}U1z$^be-wCt#qB~I@5Kg>rB^~t}|U{x^637 zZ@S)ez3F<>^``4h*PE{2O4pmNH(hVK-gLd`deil$>$lPkrW;H*m~JrLV7kF{gXxB? zbc5*z(+#E@OgETrFx_CfVJqEey3ur_=|87o8lj$bYO{SYnH<@lS-DJ9HE8T3m*>tn%X4B24n@u;H zZr(~an{GDUY`WQWv*~8j&8C~T(k-T2Ot+YBG2LRi#dM45maTM)=@!#1rdv$6m~JuM zV!CB3-Dio0I2D}v6Iq7)Ehv%YxZjErS%Ld)D3O)8*F%Y{!u@uX z$ZFj0K#8ou{Z5p~THNcSMAqTn041^>_gbofEHzLf8*#r2C9(|KKLW#V<{eG0lOWYfyL|)52Hlh z;r<9pqC`I6{uoN+Bkqr*L_XpE1WM#H?oCi4UvPgCCGr*br%GqGM~Py^{RNaLGhF>cCW|u1m00p93tZhz5oO7>MIS|3;Z`V7*0?oF zlnri!5@n0qqD0x@b|_KyxIIdg1MV-PL^r zxs)}kmZn8}Tkghfqv~inw726Bw~MN$>Cv9eVa|?fpc&BKp1X7Vs79I*?K#|obE2AP zCbWC?&a*eFnPx_NE|+m`R13|5b|06sFRGPhMSC7cIWOvrHbZ*{j&X;mbJ`s39l0lW zjJlvL(4Nn6&X2mJEz$1h1pA||Xe+b_ILU#iYg&n|xqwq#5OqV_puLcLabeW5+M>M^ zS8%7OJK7HIojJ{&qwZ;Yw0Gf3?h^GtJD|NQ_vWrqkGQ{z67_`pYba6AxWA4P^@95w zC{eGtzljn}hWlG6A-VRull)4q{a%#(O0NB0ocv0z{a%v%O0NALOnxQTelJaaCD(rM zmi$Vt{T@nwCD(orC%=+wzjsf5CD(rMk^D-o{T@kvCD(p0OMWHSelJgcCD(qBCclzv zzsHha$+h2mCclzvzsHkb$+h1T$*<(v@5$s>a_#q2@+-Oad#~hIa_#qu*fD&DS z`-dpemAHR|5?zJ+$0*U&xPO8YU4#3lDABdJe})pB-lbCi93{FQ_b*VQ8*u*;CAty! zz9`X6xPOHb-HiL!DA6sre}fX;iu<=H(Py}ShZ22``}Zi(7r6g`5`Bq#Ka}Vz-20aHh+$wH&_0pp@WdEK#u4q4crH(h zVPc%nKAGq77*@s=?NfOHPmM9d{Wp}*vA*|d>E2O4iBg}A z5<1rRJ|o>bR=EF;5<1rRJ~Q2`V}0+l(!FDg`yVJVcDVnE5<1rRK0Dp3V}0*)(!Dy? z_dYk>t7Cod^U}TJjQd|Gp<{jT^V7XL*7v?3-8*G08QK@}US1ee&XS{j5%1$gF%>KY z+86VFUK~@&q948`FX02cB&Ld`Li*~h zv&?8;!zX!7Obg3`_O*P9*T%H6tY}}yr+Hn>8Ec02^?Zic$DFg~Xy3qRc|*(vYk~HS ze2zE9T(XvE-^Ay6Q_K~se%YvaGhg7%G1sg$+PCmU-V(EZ(`eAXl`rwum|NWcMv1v& z?a;oBFY~sTd)6N9+xZG_k9lAn(7uDO@{X8C))DPH`5Nzxd19T=zKgH(u9#=m8ST6I z2Jen}VO`L^hi~$pm{;8YK?%vV-}ffJl54;3OMWHSe&3(`O0NBWAo-PC`@JUlm0bJ% zVDc-u_WPmaS90z5!^yAY+V4k_U&*!Kk0!s8Yrh{$ekIp_Kc4(buKj)@`ITJz{bceh zx%T_1&dU=+V3}#U&*!KZzjL% Jiu->k@&B3jt?mE- literal 0 HcmV?d00001 diff --git a/mysql-test/t/ctype_latin2.test b/mysql-test/t/ctype_latin2.test new file mode 100644 index 00000000000..445223f534c --- /dev/null +++ b/mysql-test/t/ctype_latin2.test @@ -0,0 +1,47 @@ + +# Tests with the latin1 character set +# +--disable_warnings +drop table if exists t1; +--enable_warnings + +SET NAMES latin2; +CREATE TABLE t1 (a char(1) character set latin2); +INSERT INTO t1 VALUES (0x00),(0x01),(0x02),(0x03),(0x04),(0x05),(0x06),(0x07); +INSERT INTO t1 VALUES (0x08),(0x09),(0x0A),(0x0B),(0x0C),(0x0D),(0x0E),(0x0F); +INSERT INTO t1 VALUES (0x10),(0x11),(0x12),(0x13),(0x14),(0x15),(0x16),(0x17); +INSERT INTO t1 VALUES (0x18),(0x19),(0x1A),(0x1B),(0x1C),(0x1D),(0x1E),(0x1F); +INSERT INTO t1 VALUES (0x20),(0x21),(0x22),(0x23),(0x24),(0x25),(0x26),(0x27); +INSERT INTO t1 VALUES (0x28),(0x29),(0x2A),(0x2B),(0x2C),(0x2D),(0x2E),(0x2F); +INSERT INTO t1 VALUES (0x30),(0x31),(0x32),(0x33),(0x34),(0x35),(0x36),(0x37); +INSERT INTO t1 VALUES (0x38),(0x39),(0x3A),(0x3B),(0x3C),(0x3D),(0x3E),(0x3F); +INSERT INTO t1 VALUES (0x40),(0x41),(0x42),(0x43),(0x44),(0x45),(0x46),(0x47); +INSERT INTO t1 VALUES (0x48),(0x49),(0x4A),(0x4B),(0x4C),(0x4D),(0x4E),(0x4F); +INSERT INTO t1 VALUES (0x50),(0x51),(0x52),(0x53),(0x54),(0x55),(0x56),(0x57); +INSERT INTO t1 VALUES (0x58),(0x59),(0x5A),(0x5B),(0x5C),(0x5D),(0x5E),(0x5F); +INSERT INTO t1 VALUES (0x60),(0x61),(0x62),(0x63),(0x64),(0x65),(0x66),(0x67); +INSERT INTO t1 VALUES (0x68),(0x69),(0x6A),(0x6B),(0x6C),(0x6D),(0x6E),(0x6F); +INSERT INTO t1 VALUES (0x70),(0x71),(0x72),(0x73),(0x74),(0x75),(0x76),(0x77); +INSERT INTO t1 VALUES (0x78),(0x79),(0x7A),(0x7B),(0x7C),(0x7D),(0x7E),(0x7F); +INSERT INTO t1 VALUES (0x80),(0x81),(0x82),(0x83),(0x84),(0x85),(0x86),(0x87); +INSERT INTO t1 VALUES (0x88),(0x89),(0x8A),(0x8B),(0x8C),(0x8D),(0x8E),(0x8F); +INSERT INTO t1 VALUES (0x90),(0x91),(0x92),(0x93),(0x94),(0x95),(0x96),(0x97); +INSERT INTO t1 VALUES (0x98),(0x99),(0x9A),(0x9B),(0x9C),(0x9D),(0x9E),(0x9F); +INSERT INTO t1 VALUES (0xA0),(0xA1),(0xA2),(0xA3),(0xA4),(0xA5),(0xA6),(0xA7); +INSERT INTO t1 VALUES (0xA8),(0xA9),(0xAA),(0xAB),(0xAC),(0xAD),(0xAE),(0xAF); +INSERT INTO t1 VALUES (0xB0),(0xB1),(0xB2),(0xB3),(0xB4),(0xB5),(0xB6),(0xB7); +INSERT INTO t1 VALUES (0xB8),(0xB9),(0xBA),(0xBB),(0xBC),(0xBD),(0xBE),(0xBF); +INSERT INTO t1 VALUES (0xC0),(0xC1),(0xC2),(0xC3),(0xC4),(0xC5),(0xC6),(0xC7); +INSERT INTO t1 VALUES (0xC8),(0xC9),(0xCA),(0xCB),(0xCC),(0xCD),(0xCE),(0xCF); +INSERT INTO t1 VALUES (0xD0),(0xD1),(0xD2),(0xD3),(0xD4),(0xD5),(0xD6),(0xD7); +INSERT INTO t1 VALUES (0xD8),(0xD9),(0xDA),(0xDB),(0xDC),(0xDD),(0xDE),(0xDF); +INSERT INTO t1 VALUES (0xE0),(0xE1),(0xE2),(0xE3),(0xE4),(0xE5),(0xE6),(0xE7); +INSERT INTO t1 VALUES (0xE8),(0xE9),(0xEA),(0xEB),(0xEC),(0xED),(0xEE),(0xEF); +INSERT INTO t1 VALUES (0xF0),(0xF1),(0xF2),(0xF3),(0xF4),(0xF5),(0xF6),(0xF7); +INSERT INTO t1 VALUES (0xF8),(0xF9),(0xFA),(0xFB),(0xFC),(0xFD),(0xFE),(0xFF); + +# +# Bug#6504 upper/lower conversion bug +# +SELECT hex(a) ha, hex(lower(a)) hl, hex(upper(a)) hu, +a, lower(a) l, upper(a) u from t1 order by ha; diff --git a/sql/share/charsets/latin2.xml b/sql/share/charsets/latin2.xml index 702f052604b..3ae239cb8fd 100644 --- a/sql/share/charsets/latin2.xml +++ b/sql/share/charsets/latin2.xml @@ -60,7 +60,7 @@ A0 B1 A2 B3 A4 B5 B6 A7 A8 B9 BA BB BC AD BE BF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF - D0 F1 F2 F3 F4 F5 F6 D7 F8 F9 FA FB FC FD FE DF + F0 F1 F2 F3 F4 F5 F6 D7 F8 F9 FA FB FC FD FE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF @@ -84,7 +84,7 @@ C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF - F0 D1 D2 D3 D4 D5 D6 F7 D8 D9 DA DB DC DD DE FF + D0 D1 D2 D3 D4 D5 D6 F7 D8 D9 DA DB DC DD DE FF