1
/* Copyright (C) 2000 MySQL AB
3
This library is free software; you can redistribute it and/or
4
modify it under the terms of the GNU Library General Public
5
License as published by the Free Software Foundation; version 2
8
This library is distributed in the hope that it will be useful,
9
but WITHOUT ANY WARRANTY; without even the implied warranty of
10
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11
Library General Public License for more details.
13
You should have received a copy of the GNU Library General Public
14
License along with this library; if not, write to the Free
15
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
18
/* UTF8 according RFC 2279 */
19
/* Written by Alexander Barkov <bar@udm.net> */
21
#include <my_global.h>
31
#define MY_UTF8MB3_GENERAL_CI MY_UTF8MB3 "_general_ci"
32
#define MY_UTF8MB3_GENERAL_CS MY_UTF8MB3 "_general_cs"
33
#define MY_UTF8MB3_BIN MY_UTF8MB3 "_bin"
34
#define MY_UTF8MB4_GENERAL_CI MY_UTF8MB4 "_general_ci"
35
#define MY_UTF8MB4_GENERAL_CS MY_UTF8MB4 "_general_cs"
36
#define MY_UTF8MB4_BIN MY_UTF8MB4 "_bin"
39
#ifdef HAVE_CHARSET_utf8mb3
43
#ifdef HAVE_CHARSET_ucs2
47
#ifdef HAVE_CHARSET_utf8mb4
51
#ifdef HAVE_CHARSET_utf16
55
#ifdef HAVE_CHARSET_utf32
61
#include "my_uctype.h"
63
static MY_UNICASE_INFO plane00[]={
64
{0x0000,0x0000,0x0000}, {0x0001,0x0001,0x0001},
65
{0x0002,0x0002,0x0002}, {0x0003,0x0003,0x0003},
66
{0x0004,0x0004,0x0004}, {0x0005,0x0005,0x0005},
67
{0x0006,0x0006,0x0006}, {0x0007,0x0007,0x0007},
68
{0x0008,0x0008,0x0008}, {0x0009,0x0009,0x0009},
69
{0x000A,0x000A,0x000A}, {0x000B,0x000B,0x000B},
70
{0x000C,0x000C,0x000C}, {0x000D,0x000D,0x000D},
71
{0x000E,0x000E,0x000E}, {0x000F,0x000F,0x000F},
72
{0x0010,0x0010,0x0010}, {0x0011,0x0011,0x0011},
73
{0x0012,0x0012,0x0012}, {0x0013,0x0013,0x0013},
74
{0x0014,0x0014,0x0014}, {0x0015,0x0015,0x0015},
75
{0x0016,0x0016,0x0016}, {0x0017,0x0017,0x0017},
76
{0x0018,0x0018,0x0018}, {0x0019,0x0019,0x0019},
77
{0x001A,0x001A,0x001A}, {0x001B,0x001B,0x001B},
78
{0x001C,0x001C,0x001C}, {0x001D,0x001D,0x001D},
79
{0x001E,0x001E,0x001E}, {0x001F,0x001F,0x001F},
80
{0x0020,0x0020,0x0020}, {0x0021,0x0021,0x0021},
81
{0x0022,0x0022,0x0022}, {0x0023,0x0023,0x0023},
82
{0x0024,0x0024,0x0024}, {0x0025,0x0025,0x0025},
83
{0x0026,0x0026,0x0026}, {0x0027,0x0027,0x0027},
84
{0x0028,0x0028,0x0028}, {0x0029,0x0029,0x0029},
85
{0x002A,0x002A,0x002A}, {0x002B,0x002B,0x002B},
86
{0x002C,0x002C,0x002C}, {0x002D,0x002D,0x002D},
87
{0x002E,0x002E,0x002E}, {0x002F,0x002F,0x002F},
88
{0x0030,0x0030,0x0030}, {0x0031,0x0031,0x0031},
89
{0x0032,0x0032,0x0032}, {0x0033,0x0033,0x0033},
90
{0x0034,0x0034,0x0034}, {0x0035,0x0035,0x0035},
91
{0x0036,0x0036,0x0036}, {0x0037,0x0037,0x0037},
92
{0x0038,0x0038,0x0038}, {0x0039,0x0039,0x0039},
93
{0x003A,0x003A,0x003A}, {0x003B,0x003B,0x003B},
94
{0x003C,0x003C,0x003C}, {0x003D,0x003D,0x003D},
95
{0x003E,0x003E,0x003E}, {0x003F,0x003F,0x003F},
96
{0x0040,0x0040,0x0040}, {0x0041,0x0061,0x0041},
97
{0x0042,0x0062,0x0042}, {0x0043,0x0063,0x0043},
98
{0x0044,0x0064,0x0044}, {0x0045,0x0065,0x0045},
99
{0x0046,0x0066,0x0046}, {0x0047,0x0067,0x0047},
100
{0x0048,0x0068,0x0048}, {0x0049,0x0069,0x0049},
101
{0x004A,0x006A,0x004A}, {0x004B,0x006B,0x004B},
102
{0x004C,0x006C,0x004C}, {0x004D,0x006D,0x004D},
103
{0x004E,0x006E,0x004E}, {0x004F,0x006F,0x004F},
104
{0x0050,0x0070,0x0050}, {0x0051,0x0071,0x0051},
105
{0x0052,0x0072,0x0052}, {0x0053,0x0073,0x0053},
106
{0x0054,0x0074,0x0054}, {0x0055,0x0075,0x0055},
107
{0x0056,0x0076,0x0056}, {0x0057,0x0077,0x0057},
108
{0x0058,0x0078,0x0058}, {0x0059,0x0079,0x0059},
109
{0x005A,0x007A,0x005A}, {0x005B,0x005B,0x005B},
110
{0x005C,0x005C,0x005C}, {0x005D,0x005D,0x005D},
111
{0x005E,0x005E,0x005E}, {0x005F,0x005F,0x005F},
112
{0x0060,0x0060,0x0060}, {0x0041,0x0061,0x0041},
113
{0x0042,0x0062,0x0042}, {0x0043,0x0063,0x0043},
114
{0x0044,0x0064,0x0044}, {0x0045,0x0065,0x0045},
115
{0x0046,0x0066,0x0046}, {0x0047,0x0067,0x0047},
116
{0x0048,0x0068,0x0048}, {0x0049,0x0069,0x0049},
117
{0x004A,0x006A,0x004A}, {0x004B,0x006B,0x004B},
118
{0x004C,0x006C,0x004C}, {0x004D,0x006D,0x004D},
119
{0x004E,0x006E,0x004E}, {0x004F,0x006F,0x004F},
120
{0x0050,0x0070,0x0050}, {0x0051,0x0071,0x0051},
121
{0x0052,0x0072,0x0052}, {0x0053,0x0073,0x0053},
122
{0x0054,0x0074,0x0054}, {0x0055,0x0075,0x0055},
123
{0x0056,0x0076,0x0056}, {0x0057,0x0077,0x0057},
124
{0x0058,0x0078,0x0058}, {0x0059,0x0079,0x0059},
125
{0x005A,0x007A,0x005A}, {0x007B,0x007B,0x007B},
126
{0x007C,0x007C,0x007C}, {0x007D,0x007D,0x007D},
127
{0x007E,0x007E,0x007E}, {0x007F,0x007F,0x007F},
128
{0x0080,0x0080,0x0080}, {0x0081,0x0081,0x0081},
129
{0x0082,0x0082,0x0082}, {0x0083,0x0083,0x0083},
130
{0x0084,0x0084,0x0084}, {0x0085,0x0085,0x0085},
131
{0x0086,0x0086,0x0086}, {0x0087,0x0087,0x0087},
132
{0x0088,0x0088,0x0088}, {0x0089,0x0089,0x0089},
133
{0x008A,0x008A,0x008A}, {0x008B,0x008B,0x008B},
134
{0x008C,0x008C,0x008C}, {0x008D,0x008D,0x008D},
135
{0x008E,0x008E,0x008E}, {0x008F,0x008F,0x008F},
136
{0x0090,0x0090,0x0090}, {0x0091,0x0091,0x0091},
137
{0x0092,0x0092,0x0092}, {0x0093,0x0093,0x0093},
138
{0x0094,0x0094,0x0094}, {0x0095,0x0095,0x0095},
139
{0x0096,0x0096,0x0096}, {0x0097,0x0097,0x0097},
140
{0x0098,0x0098,0x0098}, {0x0099,0x0099,0x0099},
141
{0x009A,0x009A,0x009A}, {0x009B,0x009B,0x009B},
142
{0x009C,0x009C,0x009C}, {0x009D,0x009D,0x009D},
143
{0x009E,0x009E,0x009E}, {0x009F,0x009F,0x009F},
144
{0x00A0,0x00A0,0x00A0}, {0x00A1,0x00A1,0x00A1},
145
{0x00A2,0x00A2,0x00A2}, {0x00A3,0x00A3,0x00A3},
146
{0x00A4,0x00A4,0x00A4}, {0x00A5,0x00A5,0x00A5},
147
{0x00A6,0x00A6,0x00A6}, {0x00A7,0x00A7,0x00A7},
148
{0x00A8,0x00A8,0x00A8}, {0x00A9,0x00A9,0x00A9},
149
{0x00AA,0x00AA,0x00AA}, {0x00AB,0x00AB,0x00AB},
150
{0x00AC,0x00AC,0x00AC}, {0x00AD,0x00AD,0x00AD},
151
{0x00AE,0x00AE,0x00AE}, {0x00AF,0x00AF,0x00AF},
152
{0x00B0,0x00B0,0x00B0}, {0x00B1,0x00B1,0x00B1},
153
{0x00B2,0x00B2,0x00B2}, {0x00B3,0x00B3,0x00B3},
154
{0x00B4,0x00B4,0x00B4}, {0x039C,0x00B5,0x039C},
155
{0x00B6,0x00B6,0x00B6}, {0x00B7,0x00B7,0x00B7},
156
{0x00B8,0x00B8,0x00B8}, {0x00B9,0x00B9,0x00B9},
157
{0x00BA,0x00BA,0x00BA}, {0x00BB,0x00BB,0x00BB},
158
{0x00BC,0x00BC,0x00BC}, {0x00BD,0x00BD,0x00BD},
159
{0x00BE,0x00BE,0x00BE}, {0x00BF,0x00BF,0x00BF},
160
{0x00C0,0x00E0,0x0041}, {0x00C1,0x00E1,0x0041},
161
{0x00C2,0x00E2,0x0041}, {0x00C3,0x00E3,0x0041},
162
{0x00C4,0x00E4,0x0041}, {0x00C5,0x00E5,0x0041},
163
{0x00C6,0x00E6,0x00C6}, {0x00C7,0x00E7,0x0043},
164
{0x00C8,0x00E8,0x0045}, {0x00C9,0x00E9,0x0045},
165
{0x00CA,0x00EA,0x0045}, {0x00CB,0x00EB,0x0045},
166
{0x00CC,0x00EC,0x0049}, {0x00CD,0x00ED,0x0049},
167
{0x00CE,0x00EE,0x0049}, {0x00CF,0x00EF,0x0049},
168
{0x00D0,0x00F0,0x00D0}, {0x00D1,0x00F1,0x004E},
169
{0x00D2,0x00F2,0x004F}, {0x00D3,0x00F3,0x004F},
170
{0x00D4,0x00F4,0x004F}, {0x00D5,0x00F5,0x004F},
171
{0x00D6,0x00F6,0x004F}, {0x00D7,0x00D7,0x00D7},
172
{0x00D8,0x00F8,0x00D8}, {0x00D9,0x00F9,0x0055},
173
{0x00DA,0x00FA,0x0055}, {0x00DB,0x00FB,0x0055},
174
{0x00DC,0x00FC,0x0055}, {0x00DD,0x00FD,0x0059},
175
{0x00DE,0x00FE,0x00DE}, {0x00DF,0x00DF,0x0053},
176
{0x00C0,0x00E0,0x0041}, {0x00C1,0x00E1,0x0041},
177
{0x00C2,0x00E2,0x0041}, {0x00C3,0x00E3,0x0041},
178
{0x00C4,0x00E4,0x0041}, {0x00C5,0x00E5,0x0041},
179
{0x00C6,0x00E6,0x00C6}, {0x00C7,0x00E7,0x0043},
180
{0x00C8,0x00E8,0x0045}, {0x00C9,0x00E9,0x0045},
181
{0x00CA,0x00EA,0x0045}, {0x00CB,0x00EB,0x0045},
182
{0x00CC,0x00EC,0x0049}, {0x00CD,0x00ED,0x0049},
183
{0x00CE,0x00EE,0x0049}, {0x00CF,0x00EF,0x0049},
184
{0x00D0,0x00F0,0x00D0}, {0x00D1,0x00F1,0x004E},
185
{0x00D2,0x00F2,0x004F}, {0x00D3,0x00F3,0x004F},
186
{0x00D4,0x00F4,0x004F}, {0x00D5,0x00F5,0x004F},
187
{0x00D6,0x00F6,0x004F}, {0x00F7,0x00F7,0x00F7},
188
{0x00D8,0x00F8,0x00D8}, {0x00D9,0x00F9,0x0055},
189
{0x00DA,0x00FA,0x0055}, {0x00DB,0x00FB,0x0055},
190
{0x00DC,0x00FC,0x0055}, {0x00DD,0x00FD,0x0059},
191
{0x00DE,0x00FE,0x00DE}, {0x0178,0x00FF,0x0059}
196
static MY_UNICASE_INFO plane01[]={
197
{0x0100,0x0101,0x0041}, {0x0100,0x0101,0x0041},
198
{0x0102,0x0103,0x0041}, {0x0102,0x0103,0x0041},
199
{0x0104,0x0105,0x0041}, {0x0104,0x0105,0x0041},
200
{0x0106,0x0107,0x0043}, {0x0106,0x0107,0x0043},
201
{0x0108,0x0109,0x0043}, {0x0108,0x0109,0x0043},
202
{0x010A,0x010B,0x0043}, {0x010A,0x010B,0x0043},
203
{0x010C,0x010D,0x0043}, {0x010C,0x010D,0x0043},
204
{0x010E,0x010F,0x0044}, {0x010E,0x010F,0x0044},
205
{0x0110,0x0111,0x0110}, {0x0110,0x0111,0x0110},
206
{0x0112,0x0113,0x0045}, {0x0112,0x0113,0x0045},
207
{0x0114,0x0115,0x0045}, {0x0114,0x0115,0x0045},
208
{0x0116,0x0117,0x0045}, {0x0116,0x0117,0x0045},
209
{0x0118,0x0119,0x0045}, {0x0118,0x0119,0x0045},
210
{0x011A,0x011B,0x0045}, {0x011A,0x011B,0x0045},
211
{0x011C,0x011D,0x0047}, {0x011C,0x011D,0x0047},
212
{0x011E,0x011F,0x0047}, {0x011E,0x011F,0x0047},
213
{0x0120,0x0121,0x0047}, {0x0120,0x0121,0x0047},
214
{0x0122,0x0123,0x0047}, {0x0122,0x0123,0x0047},
215
{0x0124,0x0125,0x0048}, {0x0124,0x0125,0x0048},
216
{0x0126,0x0127,0x0126}, {0x0126,0x0127,0x0126},
217
{0x0128,0x0129,0x0049}, {0x0128,0x0129,0x0049},
218
{0x012A,0x012B,0x0049}, {0x012A,0x012B,0x0049},
219
{0x012C,0x012D,0x0049}, {0x012C,0x012D,0x0049},
220
{0x012E,0x012F,0x0049}, {0x012E,0x012F,0x0049},
221
{0x0130,0x0069,0x0049}, {0x0049,0x0131,0x0049},
222
{0x0132,0x0133,0x0132}, {0x0132,0x0133,0x0132},
223
{0x0134,0x0135,0x004A}, {0x0134,0x0135,0x004A},
224
{0x0136,0x0137,0x004B}, {0x0136,0x0137,0x004B},
225
{0x0138,0x0138,0x0138}, {0x0139,0x013A,0x004C},
226
{0x0139,0x013A,0x004C}, {0x013B,0x013C,0x004C},
227
{0x013B,0x013C,0x004C}, {0x013D,0x013E,0x004C},
228
{0x013D,0x013E,0x004C}, {0x013F,0x0140,0x013F},
229
{0x013F,0x0140,0x013F}, {0x0141,0x0142,0x0141},
230
{0x0141,0x0142,0x0141}, {0x0143,0x0144,0x004E},
231
{0x0143,0x0144,0x004E}, {0x0145,0x0146,0x004E},
232
{0x0145,0x0146,0x004E}, {0x0147,0x0148,0x004E},
233
{0x0147,0x0148,0x004E}, {0x0149,0x0149,0x0149},
234
{0x014A,0x014B,0x014A}, {0x014A,0x014B,0x014A},
235
{0x014C,0x014D,0x004F}, {0x014C,0x014D,0x004F},
236
{0x014E,0x014F,0x004F}, {0x014E,0x014F,0x004F},
237
{0x0150,0x0151,0x004F}, {0x0150,0x0151,0x004F},
238
{0x0152,0x0153,0x0152}, {0x0152,0x0153,0x0152},
239
{0x0154,0x0155,0x0052}, {0x0154,0x0155,0x0052},
240
{0x0156,0x0157,0x0052}, {0x0156,0x0157,0x0052},
241
{0x0158,0x0159,0x0052}, {0x0158,0x0159,0x0052},
242
{0x015A,0x015B,0x0053}, {0x015A,0x015B,0x0053},
243
{0x015C,0x015D,0x0053}, {0x015C,0x015D,0x0053},
244
{0x015E,0x015F,0x0053}, {0x015E,0x015F,0x0053},
245
{0x0160,0x0161,0x0053}, {0x0160,0x0161,0x0053},
246
{0x0162,0x0163,0x0054}, {0x0162,0x0163,0x0054},
247
{0x0164,0x0165,0x0054}, {0x0164,0x0165,0x0054},
248
{0x0166,0x0167,0x0166}, {0x0166,0x0167,0x0166},
249
{0x0168,0x0169,0x0055}, {0x0168,0x0169,0x0055},
250
{0x016A,0x016B,0x0055}, {0x016A,0x016B,0x0055},
251
{0x016C,0x016D,0x0055}, {0x016C,0x016D,0x0055},
252
{0x016E,0x016F,0x0055}, {0x016E,0x016F,0x0055},
253
{0x0170,0x0171,0x0055}, {0x0170,0x0171,0x0055},
254
{0x0172,0x0173,0x0055}, {0x0172,0x0173,0x0055},
255
{0x0174,0x0175,0x0057}, {0x0174,0x0175,0x0057},
256
{0x0176,0x0177,0x0059}, {0x0176,0x0177,0x0059},
257
{0x0178,0x00FF,0x0059}, {0x0179,0x017A,0x005A},
258
{0x0179,0x017A,0x005A}, {0x017B,0x017C,0x005A},
259
{0x017B,0x017C,0x005A}, {0x017D,0x017E,0x005A},
260
{0x017D,0x017E,0x005A}, {0x0053,0x017F,0x0053},
261
{0x0180,0x0180,0x0180}, {0x0181,0x0253,0x0181},
262
{0x0182,0x0183,0x0182}, {0x0182,0x0183,0x0182},
263
{0x0184,0x0185,0x0184}, {0x0184,0x0185,0x0184},
264
{0x0186,0x0254,0x0186}, {0x0187,0x0188,0x0187},
265
{0x0187,0x0188,0x0187}, {0x0189,0x0256,0x0189},
266
{0x018A,0x0257,0x018A}, {0x018B,0x018C,0x018B},
267
{0x018B,0x018C,0x018B}, {0x018D,0x018D,0x018D},
268
{0x018E,0x01DD,0x018E}, {0x018F,0x0259,0x018F},
269
{0x0190,0x025B,0x0190}, {0x0191,0x0192,0x0191},
270
{0x0191,0x0192,0x0191}, {0x0193,0x0260,0x0193},
271
{0x0194,0x0263,0x0194}, {0x01F6,0x0195,0x01F6},
272
{0x0196,0x0269,0x0196}, {0x0197,0x0268,0x0197},
273
{0x0198,0x0199,0x0198}, {0x0198,0x0199,0x0198},
274
{0x019A,0x019A,0x019A}, {0x019B,0x019B,0x019B},
275
{0x019C,0x026F,0x019C}, {0x019D,0x0272,0x019D},
276
{0x019E,0x019E,0x019E}, {0x019F,0x0275,0x019F},
277
{0x01A0,0x01A1,0x004F}, {0x01A0,0x01A1,0x004F},
278
{0x01A2,0x01A3,0x01A2}, {0x01A2,0x01A3,0x01A2},
279
{0x01A4,0x01A5,0x01A4}, {0x01A4,0x01A5,0x01A4},
280
{0x01A6,0x0280,0x01A6}, {0x01A7,0x01A8,0x01A7},
281
{0x01A7,0x01A8,0x01A7}, {0x01A9,0x0283,0x01A9},
282
{0x01AA,0x01AA,0x01AA}, {0x01AB,0x01AB,0x01AB},
283
{0x01AC,0x01AD,0x01AC}, {0x01AC,0x01AD,0x01AC},
284
{0x01AE,0x0288,0x01AE}, {0x01AF,0x01B0,0x0055},
285
{0x01AF,0x01B0,0x0055}, {0x01B1,0x028A,0x01B1},
286
{0x01B2,0x028B,0x01B2}, {0x01B3,0x01B4,0x01B3},
287
{0x01B3,0x01B4,0x01B3}, {0x01B5,0x01B6,0x01B5},
288
{0x01B5,0x01B6,0x01B5}, {0x01B7,0x0292,0x01B7},
289
{0x01B8,0x01B9,0x01B8}, {0x01B8,0x01B9,0x01B8},
290
{0x01BA,0x01BA,0x01BA}, {0x01BB,0x01BB,0x01BB},
291
{0x01BC,0x01BD,0x01BC}, {0x01BC,0x01BD,0x01BC},
292
{0x01BE,0x01BE,0x01BE}, {0x01F7,0x01BF,0x01F7},
293
{0x01C0,0x01C0,0x01C0}, {0x01C1,0x01C1,0x01C1},
294
{0x01C2,0x01C2,0x01C2}, {0x01C3,0x01C3,0x01C3},
295
{0x01C4,0x01C6,0x01C4}, {0x01C4,0x01C6,0x01C4},
296
{0x01C4,0x01C6,0x01C4}, {0x01C7,0x01C9,0x01C7},
297
{0x01C7,0x01C9,0x01C7}, {0x01C7,0x01C9,0x01C7},
298
{0x01CA,0x01CC,0x01CA}, {0x01CA,0x01CC,0x01CA},
299
{0x01CA,0x01CC,0x01CA}, {0x01CD,0x01CE,0x0041},
300
{0x01CD,0x01CE,0x0041}, {0x01CF,0x01D0,0x0049},
301
{0x01CF,0x01D0,0x0049}, {0x01D1,0x01D2,0x004F},
302
{0x01D1,0x01D2,0x004F}, {0x01D3,0x01D4,0x0055},
303
{0x01D3,0x01D4,0x0055}, {0x01D5,0x01D6,0x0055},
304
{0x01D5,0x01D6,0x0055}, {0x01D7,0x01D8,0x0055},
305
{0x01D7,0x01D8,0x0055}, {0x01D9,0x01DA,0x0055},
306
{0x01D9,0x01DA,0x0055}, {0x01DB,0x01DC,0x0055},
307
{0x01DB,0x01DC,0x0055}, {0x018E,0x01DD,0x018E},
308
{0x01DE,0x01DF,0x0041}, {0x01DE,0x01DF,0x0041},
309
{0x01E0,0x01E1,0x0041}, {0x01E0,0x01E1,0x0041},
310
{0x01E2,0x01E3,0x00C6}, {0x01E2,0x01E3,0x00C6},
311
{0x01E4,0x01E5,0x01E4}, {0x01E4,0x01E5,0x01E4},
312
{0x01E6,0x01E7,0x0047}, {0x01E6,0x01E7,0x0047},
313
{0x01E8,0x01E9,0x004B}, {0x01E8,0x01E9,0x004B},
314
{0x01EA,0x01EB,0x004F}, {0x01EA,0x01EB,0x004F},
315
{0x01EC,0x01ED,0x004F}, {0x01EC,0x01ED,0x004F},
316
{0x01EE,0x01EF,0x01B7}, {0x01EE,0x01EF,0x01B7},
317
{0x01F0,0x01F0,0x004A}, {0x01F1,0x01F3,0x01F1},
318
{0x01F1,0x01F3,0x01F1}, {0x01F1,0x01F3,0x01F1},
319
{0x01F4,0x01F5,0x0047}, {0x01F4,0x01F5,0x0047},
320
{0x01F6,0x0195,0x01F6}, {0x01F7,0x01BF,0x01F7},
321
{0x01F8,0x01F9,0x004E}, {0x01F8,0x01F9,0x004E},
322
{0x01FA,0x01FB,0x0041}, {0x01FA,0x01FB,0x0041},
323
{0x01FC,0x01FD,0x00C6}, {0x01FC,0x01FD,0x00C6},
324
{0x01FE,0x01FF,0x00D8}, {0x01FE,0x01FF,0x00D8}
327
static MY_UNICASE_INFO plane02[]={
328
{0x0200,0x0201,0x0041}, {0x0200,0x0201,0x0041},
329
{0x0202,0x0203,0x0041}, {0x0202,0x0203,0x0041},
330
{0x0204,0x0205,0x0045}, {0x0204,0x0205,0x0045},
331
{0x0206,0x0207,0x0045}, {0x0206,0x0207,0x0045},
332
{0x0208,0x0209,0x0049}, {0x0208,0x0209,0x0049},
333
{0x020A,0x020B,0x0049}, {0x020A,0x020B,0x0049},
334
{0x020C,0x020D,0x004F}, {0x020C,0x020D,0x004F},
335
{0x020E,0x020F,0x004F}, {0x020E,0x020F,0x004F},
336
{0x0210,0x0211,0x0052}, {0x0210,0x0211,0x0052},
337
{0x0212,0x0213,0x0052}, {0x0212,0x0213,0x0052},
338
{0x0214,0x0215,0x0055}, {0x0214,0x0215,0x0055},
339
{0x0216,0x0217,0x0055}, {0x0216,0x0217,0x0055},
340
{0x0218,0x0219,0x0053}, {0x0218,0x0219,0x0053},
341
{0x021A,0x021B,0x0054}, {0x021A,0x021B,0x0054},
342
{0x021C,0x021D,0x021C}, {0x021C,0x021D,0x021C},
343
{0x021E,0x021F,0x0048}, {0x021E,0x021F,0x0048},
344
{0x0220,0x0220,0x0220}, {0x0221,0x0221,0x0221},
345
{0x0222,0x0223,0x0222}, {0x0222,0x0223,0x0222},
346
{0x0224,0x0225,0x0224}, {0x0224,0x0225,0x0224},
347
{0x0226,0x0227,0x0041}, {0x0226,0x0227,0x0041},
348
{0x0228,0x0229,0x0045}, {0x0228,0x0229,0x0045},
349
{0x022A,0x022B,0x004F}, {0x022A,0x022B,0x004F},
350
{0x022C,0x022D,0x004F}, {0x022C,0x022D,0x004F},
351
{0x022E,0x022F,0x004F}, {0x022E,0x022F,0x004F},
352
{0x0230,0x0231,0x004F}, {0x0230,0x0231,0x004F},
353
{0x0232,0x0233,0x0059}, {0x0232,0x0233,0x0059},
354
{0x0234,0x0234,0x0234}, {0x0235,0x0235,0x0235},
355
{0x0236,0x0236,0x0236}, {0x0237,0x0237,0x0237},
356
{0x0238,0x0238,0x0238}, {0x0239,0x0239,0x0239},
357
{0x023A,0x023A,0x023A}, {0x023B,0x023B,0x023B},
358
{0x023C,0x023C,0x023C}, {0x023D,0x023D,0x023D},
359
{0x023E,0x023E,0x023E}, {0x023F,0x023F,0x023F},
360
{0x0240,0x0240,0x0240}, {0x0241,0x0241,0x0241},
361
{0x0242,0x0242,0x0242}, {0x0243,0x0243,0x0243},
362
{0x0244,0x0244,0x0244}, {0x0245,0x0245,0x0245},
363
{0x0246,0x0246,0x0246}, {0x0247,0x0247,0x0247},
364
{0x0248,0x0248,0x0248}, {0x0249,0x0249,0x0249},
365
{0x024A,0x024A,0x024A}, {0x024B,0x024B,0x024B},
366
{0x024C,0x024C,0x024C}, {0x024D,0x024D,0x024D},
367
{0x024E,0x024E,0x024E}, {0x024F,0x024F,0x024F},
368
{0x0250,0x0250,0x0250}, {0x0251,0x0251,0x0251},
369
{0x0252,0x0252,0x0252}, {0x0181,0x0253,0x0181},
370
{0x0186,0x0254,0x0186}, {0x0255,0x0255,0x0255},
371
{0x0189,0x0256,0x0189}, {0x018A,0x0257,0x018A},
372
{0x0258,0x0258,0x0258}, {0x018F,0x0259,0x018F},
373
{0x025A,0x025A,0x025A}, {0x0190,0x025B,0x0190},
374
{0x025C,0x025C,0x025C}, {0x025D,0x025D,0x025D},
375
{0x025E,0x025E,0x025E}, {0x025F,0x025F,0x025F},
376
{0x0193,0x0260,0x0193}, {0x0261,0x0261,0x0261},
377
{0x0262,0x0262,0x0262}, {0x0194,0x0263,0x0194},
378
{0x0264,0x0264,0x0264}, {0x0265,0x0265,0x0265},
379
{0x0266,0x0266,0x0266}, {0x0267,0x0267,0x0267},
380
{0x0197,0x0268,0x0197}, {0x0196,0x0269,0x0196},
381
{0x026A,0x026A,0x026A}, {0x026B,0x026B,0x026B},
382
{0x026C,0x026C,0x026C}, {0x026D,0x026D,0x026D},
383
{0x026E,0x026E,0x026E}, {0x019C,0x026F,0x019C},
384
{0x0270,0x0270,0x0270}, {0x0271,0x0271,0x0271},
385
{0x019D,0x0272,0x019D}, {0x0273,0x0273,0x0273},
386
{0x0274,0x0274,0x0274}, {0x019F,0x0275,0x019F},
387
{0x0276,0x0276,0x0276}, {0x0277,0x0277,0x0277},
388
{0x0278,0x0278,0x0278}, {0x0279,0x0279,0x0279},
389
{0x027A,0x027A,0x027A}, {0x027B,0x027B,0x027B},
390
{0x027C,0x027C,0x027C}, {0x027D,0x027D,0x027D},
391
{0x027E,0x027E,0x027E}, {0x027F,0x027F,0x027F},
392
{0x01A6,0x0280,0x01A6}, {0x0281,0x0281,0x0281},
393
{0x0282,0x0282,0x0282}, {0x01A9,0x0283,0x01A9},
394
{0x0284,0x0284,0x0284}, {0x0285,0x0285,0x0285},
395
{0x0286,0x0286,0x0286}, {0x0287,0x0287,0x0287},
396
{0x01AE,0x0288,0x01AE}, {0x0289,0x0289,0x0289},
397
{0x01B1,0x028A,0x01B1}, {0x01B2,0x028B,0x01B2},
398
{0x028C,0x028C,0x028C}, {0x028D,0x028D,0x028D},
399
{0x028E,0x028E,0x028E}, {0x028F,0x028F,0x028F},
400
{0x0290,0x0290,0x0290}, {0x0291,0x0291,0x0291},
401
{0x01B7,0x0292,0x01B7}, {0x0293,0x0293,0x0293},
402
{0x0294,0x0294,0x0294}, {0x0295,0x0295,0x0295},
403
{0x0296,0x0296,0x0296}, {0x0297,0x0297,0x0297},
404
{0x0298,0x0298,0x0298}, {0x0299,0x0299,0x0299},
405
{0x029A,0x029A,0x029A}, {0x029B,0x029B,0x029B},
406
{0x029C,0x029C,0x029C}, {0x029D,0x029D,0x029D},
407
{0x029E,0x029E,0x029E}, {0x029F,0x029F,0x029F},
408
{0x02A0,0x02A0,0x02A0}, {0x02A1,0x02A1,0x02A1},
409
{0x02A2,0x02A2,0x02A2}, {0x02A3,0x02A3,0x02A3},
410
{0x02A4,0x02A4,0x02A4}, {0x02A5,0x02A5,0x02A5},
411
{0x02A6,0x02A6,0x02A6}, {0x02A7,0x02A7,0x02A7},
412
{0x02A8,0x02A8,0x02A8}, {0x02A9,0x02A9,0x02A9},
413
{0x02AA,0x02AA,0x02AA}, {0x02AB,0x02AB,0x02AB},
414
{0x02AC,0x02AC,0x02AC}, {0x02AD,0x02AD,0x02AD},
415
{0x02AE,0x02AE,0x02AE}, {0x02AF,0x02AF,0x02AF},
416
{0x02B0,0x02B0,0x02B0}, {0x02B1,0x02B1,0x02B1},
417
{0x02B2,0x02B2,0x02B2}, {0x02B3,0x02B3,0x02B3},
418
{0x02B4,0x02B4,0x02B4}, {0x02B5,0x02B5,0x02B5},
419
{0x02B6,0x02B6,0x02B6}, {0x02B7,0x02B7,0x02B7},
420
{0x02B8,0x02B8,0x02B8}, {0x02B9,0x02B9,0x02B9},
421
{0x02BA,0x02BA,0x02BA}, {0x02BB,0x02BB,0x02BB},
422
{0x02BC,0x02BC,0x02BC}, {0x02BD,0x02BD,0x02BD},
423
{0x02BE,0x02BE,0x02BE}, {0x02BF,0x02BF,0x02BF},
424
{0x02C0,0x02C0,0x02C0}, {0x02C1,0x02C1,0x02C1},
425
{0x02C2,0x02C2,0x02C2}, {0x02C3,0x02C3,0x02C3},
426
{0x02C4,0x02C4,0x02C4}, {0x02C5,0x02C5,0x02C5},
427
{0x02C6,0x02C6,0x02C6}, {0x02C7,0x02C7,0x02C7},
428
{0x02C8,0x02C8,0x02C8}, {0x02C9,0x02C9,0x02C9},
429
{0x02CA,0x02CA,0x02CA}, {0x02CB,0x02CB,0x02CB},
430
{0x02CC,0x02CC,0x02CC}, {0x02CD,0x02CD,0x02CD},
431
{0x02CE,0x02CE,0x02CE}, {0x02CF,0x02CF,0x02CF},
432
{0x02D0,0x02D0,0x02D0}, {0x02D1,0x02D1,0x02D1},
433
{0x02D2,0x02D2,0x02D2}, {0x02D3,0x02D3,0x02D3},
434
{0x02D4,0x02D4,0x02D4}, {0x02D5,0x02D5,0x02D5},
435
{0x02D6,0x02D6,0x02D6}, {0x02D7,0x02D7,0x02D7},
436
{0x02D8,0x02D8,0x02D8}, {0x02D9,0x02D9,0x02D9},
437
{0x02DA,0x02DA,0x02DA}, {0x02DB,0x02DB,0x02DB},
438
{0x02DC,0x02DC,0x02DC}, {0x02DD,0x02DD,0x02DD},
439
{0x02DE,0x02DE,0x02DE}, {0x02DF,0x02DF,0x02DF},
440
{0x02E0,0x02E0,0x02E0}, {0x02E1,0x02E1,0x02E1},
441
{0x02E2,0x02E2,0x02E2}, {0x02E3,0x02E3,0x02E3},
442
{0x02E4,0x02E4,0x02E4}, {0x02E5,0x02E5,0x02E5},
443
{0x02E6,0x02E6,0x02E6}, {0x02E7,0x02E7,0x02E7},
444
{0x02E8,0x02E8,0x02E8}, {0x02E9,0x02E9,0x02E9},
445
{0x02EA,0x02EA,0x02EA}, {0x02EB,0x02EB,0x02EB},
446
{0x02EC,0x02EC,0x02EC}, {0x02ED,0x02ED,0x02ED},
447
{0x02EE,0x02EE,0x02EE}, {0x02EF,0x02EF,0x02EF},
448
{0x02F0,0x02F0,0x02F0}, {0x02F1,0x02F1,0x02F1},
449
{0x02F2,0x02F2,0x02F2}, {0x02F3,0x02F3,0x02F3},
450
{0x02F4,0x02F4,0x02F4}, {0x02F5,0x02F5,0x02F5},
451
{0x02F6,0x02F6,0x02F6}, {0x02F7,0x02F7,0x02F7},
452
{0x02F8,0x02F8,0x02F8}, {0x02F9,0x02F9,0x02F9},
453
{0x02FA,0x02FA,0x02FA}, {0x02FB,0x02FB,0x02FB},
454
{0x02FC,0x02FC,0x02FC}, {0x02FD,0x02FD,0x02FD},
455
{0x02FE,0x02FE,0x02FE}, {0x02FF,0x02FF,0x02FF}
458
static MY_UNICASE_INFO plane03[]={
459
{0x0300,0x0300,0x0300}, {0x0301,0x0301,0x0301},
460
{0x0302,0x0302,0x0302}, {0x0303,0x0303,0x0303},
461
{0x0304,0x0304,0x0304}, {0x0305,0x0305,0x0305},
462
{0x0306,0x0306,0x0306}, {0x0307,0x0307,0x0307},
463
{0x0308,0x0308,0x0308}, {0x0309,0x0309,0x0309},
464
{0x030A,0x030A,0x030A}, {0x030B,0x030B,0x030B},
465
{0x030C,0x030C,0x030C}, {0x030D,0x030D,0x030D},
466
{0x030E,0x030E,0x030E}, {0x030F,0x030F,0x030F},
467
{0x0310,0x0310,0x0310}, {0x0311,0x0311,0x0311},
468
{0x0312,0x0312,0x0312}, {0x0313,0x0313,0x0313},
469
{0x0314,0x0314,0x0314}, {0x0315,0x0315,0x0315},
470
{0x0316,0x0316,0x0316}, {0x0317,0x0317,0x0317},
471
{0x0318,0x0318,0x0318}, {0x0319,0x0319,0x0319},
472
{0x031A,0x031A,0x031A}, {0x031B,0x031B,0x031B},
473
{0x031C,0x031C,0x031C}, {0x031D,0x031D,0x031D},
474
{0x031E,0x031E,0x031E}, {0x031F,0x031F,0x031F},
475
{0x0320,0x0320,0x0320}, {0x0321,0x0321,0x0321},
476
{0x0322,0x0322,0x0322}, {0x0323,0x0323,0x0323},
477
{0x0324,0x0324,0x0324}, {0x0325,0x0325,0x0325},
478
{0x0326,0x0326,0x0326}, {0x0327,0x0327,0x0327},
479
{0x0328,0x0328,0x0328}, {0x0329,0x0329,0x0329},
480
{0x032A,0x032A,0x032A}, {0x032B,0x032B,0x032B},
481
{0x032C,0x032C,0x032C}, {0x032D,0x032D,0x032D},
482
{0x032E,0x032E,0x032E}, {0x032F,0x032F,0x032F},
483
{0x0330,0x0330,0x0330}, {0x0331,0x0331,0x0331},
484
{0x0332,0x0332,0x0332}, {0x0333,0x0333,0x0333},
485
{0x0334,0x0334,0x0334}, {0x0335,0x0335,0x0335},
486
{0x0336,0x0336,0x0336}, {0x0337,0x0337,0x0337},
487
{0x0338,0x0338,0x0338}, {0x0339,0x0339,0x0339},
488
{0x033A,0x033A,0x033A}, {0x033B,0x033B,0x033B},
489
{0x033C,0x033C,0x033C}, {0x033D,0x033D,0x033D},
490
{0x033E,0x033E,0x033E}, {0x033F,0x033F,0x033F},
491
{0x0340,0x0340,0x0340}, {0x0341,0x0341,0x0341},
492
{0x0342,0x0342,0x0342}, {0x0343,0x0343,0x0343},
493
{0x0344,0x0344,0x0344}, {0x0399,0x0345,0x0399},
494
{0x0346,0x0346,0x0346}, {0x0347,0x0347,0x0347},
495
{0x0348,0x0348,0x0348}, {0x0349,0x0349,0x0349},
496
{0x034A,0x034A,0x034A}, {0x034B,0x034B,0x034B},
497
{0x034C,0x034C,0x034C}, {0x034D,0x034D,0x034D},
498
{0x034E,0x034E,0x034E}, {0x034F,0x034F,0x034F},
499
{0x0350,0x0350,0x0350}, {0x0351,0x0351,0x0351},
500
{0x0352,0x0352,0x0352}, {0x0353,0x0353,0x0353},
501
{0x0354,0x0354,0x0354}, {0x0355,0x0355,0x0355},
502
{0x0356,0x0356,0x0356}, {0x0357,0x0357,0x0357},
503
{0x0358,0x0358,0x0358}, {0x0359,0x0359,0x0359},
504
{0x035A,0x035A,0x035A}, {0x035B,0x035B,0x035B},
505
{0x035C,0x035C,0x035C}, {0x035D,0x035D,0x035D},
506
{0x035E,0x035E,0x035E}, {0x035F,0x035F,0x035F},
507
{0x0360,0x0360,0x0360}, {0x0361,0x0361,0x0361},
508
{0x0362,0x0362,0x0362}, {0x0363,0x0363,0x0363},
509
{0x0364,0x0364,0x0364}, {0x0365,0x0365,0x0365},
510
{0x0366,0x0366,0x0366}, {0x0367,0x0367,0x0367},
511
{0x0368,0x0368,0x0368}, {0x0369,0x0369,0x0369},
512
{0x036A,0x036A,0x036A}, {0x036B,0x036B,0x036B},
513
{0x036C,0x036C,0x036C}, {0x036D,0x036D,0x036D},
514
{0x036E,0x036E,0x036E}, {0x036F,0x036F,0x036F},
515
{0x0370,0x0370,0x0370}, {0x0371,0x0371,0x0371},
516
{0x0372,0x0372,0x0372}, {0x0373,0x0373,0x0373},
517
{0x0374,0x0374,0x0374}, {0x0375,0x0375,0x0375},
518
{0x0376,0x0376,0x0376}, {0x0377,0x0377,0x0377},
519
{0x0378,0x0378,0x0378}, {0x0379,0x0379,0x0379},
520
{0x037A,0x037A,0x037A}, {0x037B,0x037B,0x037B},
521
{0x037C,0x037C,0x037C}, {0x037D,0x037D,0x037D},
522
{0x037E,0x037E,0x037E}, {0x037F,0x037F,0x037F},
523
{0x0380,0x0380,0x0380}, {0x0381,0x0381,0x0381},
524
{0x0382,0x0382,0x0382}, {0x0383,0x0383,0x0383},
525
{0x0384,0x0384,0x0384}, {0x0385,0x0385,0x0385},
526
{0x0386,0x03AC,0x0391}, {0x0387,0x0387,0x0387},
527
{0x0388,0x03AD,0x0395}, {0x0389,0x03AE,0x0397},
528
{0x038A,0x03AF,0x0399}, {0x038B,0x038B,0x038B},
529
{0x038C,0x03CC,0x039F}, {0x038D,0x038D,0x038D},
530
{0x038E,0x03CD,0x03A5}, {0x038F,0x03CE,0x03A9},
531
{0x0390,0x0390,0x0399}, {0x0391,0x03B1,0x0391},
532
{0x0392,0x03B2,0x0392}, {0x0393,0x03B3,0x0393},
533
{0x0394,0x03B4,0x0394}, {0x0395,0x03B5,0x0395},
534
{0x0396,0x03B6,0x0396}, {0x0397,0x03B7,0x0397},
535
{0x0398,0x03B8,0x0398}, {0x0399,0x03B9,0x0399},
536
{0x039A,0x03BA,0x039A}, {0x039B,0x03BB,0x039B},
537
{0x039C,0x03BC,0x039C}, {0x039D,0x03BD,0x039D},
538
{0x039E,0x03BE,0x039E}, {0x039F,0x03BF,0x039F},
539
{0x03A0,0x03C0,0x03A0}, {0x03A1,0x03C1,0x03A1},
540
{0x03A2,0x03A2,0x03A2}, {0x03A3,0x03C3,0x03A3},
541
{0x03A4,0x03C4,0x03A4}, {0x03A5,0x03C5,0x03A5},
542
{0x03A6,0x03C6,0x03A6}, {0x03A7,0x03C7,0x03A7},
543
{0x03A8,0x03C8,0x03A8}, {0x03A9,0x03C9,0x03A9},
544
{0x03AA,0x03CA,0x0399}, {0x03AB,0x03CB,0x03A5},
545
{0x0386,0x03AC,0x0391}, {0x0388,0x03AD,0x0395},
546
{0x0389,0x03AE,0x0397}, {0x038A,0x03AF,0x0399},
547
{0x03B0,0x03B0,0x03A5}, {0x0391,0x03B1,0x0391},
548
{0x0392,0x03B2,0x0392}, {0x0393,0x03B3,0x0393},
549
{0x0394,0x03B4,0x0394}, {0x0395,0x03B5,0x0395},
550
{0x0396,0x03B6,0x0396}, {0x0397,0x03B7,0x0397},
551
{0x0398,0x03B8,0x0398}, {0x0399,0x03B9,0x0399},
552
{0x039A,0x03BA,0x039A}, {0x039B,0x03BB,0x039B},
553
{0x039C,0x03BC,0x039C}, {0x039D,0x03BD,0x039D},
554
{0x039E,0x03BE,0x039E}, {0x039F,0x03BF,0x039F},
555
{0x03A0,0x03C0,0x03A0}, {0x03A1,0x03C1,0x03A1},
556
{0x03A3,0x03C2,0x03A3}, {0x03A3,0x03C3,0x03A3},
557
{0x03A4,0x03C4,0x03A4}, {0x03A5,0x03C5,0x03A5},
558
{0x03A6,0x03C6,0x03A6}, {0x03A7,0x03C7,0x03A7},
559
{0x03A8,0x03C8,0x03A8}, {0x03A9,0x03C9,0x03A9},
560
{0x03AA,0x03CA,0x0399}, {0x03AB,0x03CB,0x03A5},
561
{0x038C,0x03CC,0x039F}, {0x038E,0x03CD,0x03A5},
562
{0x038F,0x03CE,0x03A9}, {0x03CF,0x03CF,0x03CF},
563
{0x0392,0x03D0,0x0392}, {0x0398,0x03D1,0x0398},
564
{0x03D2,0x03D2,0x03D2}, {0x03D3,0x03D3,0x03D2},
565
{0x03D4,0x03D4,0x03D2}, {0x03A6,0x03D5,0x03A6},
566
{0x03A0,0x03D6,0x03A0}, {0x03D7,0x03D7,0x03D7},
567
{0x03D8,0x03D8,0x03D8}, {0x03D9,0x03D9,0x03D9},
568
{0x03DA,0x03DB,0x03DA}, {0x03DA,0x03DB,0x03DA},
569
{0x03DC,0x03DD,0x03DC}, {0x03DC,0x03DD,0x03DC},
570
{0x03DE,0x03DF,0x03DE}, {0x03DE,0x03DF,0x03DE},
571
{0x03E0,0x03E1,0x03E0}, {0x03E0,0x03E1,0x03E0},
572
{0x03E2,0x03E3,0x03E2}, {0x03E2,0x03E3,0x03E2},
573
{0x03E4,0x03E5,0x03E4}, {0x03E4,0x03E5,0x03E4},
574
{0x03E6,0x03E7,0x03E6}, {0x03E6,0x03E7,0x03E6},
575
{0x03E8,0x03E9,0x03E8}, {0x03E8,0x03E9,0x03E8},
576
{0x03EA,0x03EB,0x03EA}, {0x03EA,0x03EB,0x03EA},
577
{0x03EC,0x03ED,0x03EC}, {0x03EC,0x03ED,0x03EC},
578
{0x03EE,0x03EF,0x03EE}, {0x03EE,0x03EF,0x03EE},
579
{0x039A,0x03F0,0x039A}, {0x03A1,0x03F1,0x03A1},
580
{0x03A3,0x03F2,0x03A3}, {0x03F3,0x03F3,0x03F3},
581
{0x03F4,0x03F4,0x03F4}, {0x03F5,0x03F5,0x03F5},
582
{0x03F6,0x03F6,0x03F6}, {0x03F7,0x03F7,0x03F7},
583
{0x03F8,0x03F8,0x03F8}, {0x03F9,0x03F9,0x03F9},
584
{0x03FA,0x03FA,0x03FA}, {0x03FB,0x03FB,0x03FB},
585
{0x03FC,0x03FC,0x03FC}, {0x03FD,0x03FD,0x03FD},
586
{0x03FE,0x03FE,0x03FE}, {0x03FF,0x03FF,0x03FF}
589
static MY_UNICASE_INFO plane04[]={
590
{0x0400,0x0450,0x0415}, {0x0401,0x0451,0x0415},
591
{0x0402,0x0452,0x0402}, {0x0403,0x0453,0x0413},
592
{0x0404,0x0454,0x0404}, {0x0405,0x0455,0x0405},
593
{0x0406,0x0456,0x0406}, {0x0407,0x0457,0x0406},
594
{0x0408,0x0458,0x0408}, {0x0409,0x0459,0x0409},
595
{0x040A,0x045A,0x040A}, {0x040B,0x045B,0x040B},
596
{0x040C,0x045C,0x041A}, {0x040D,0x045D,0x0418},
597
{0x040E,0x045E,0x0423}, {0x040F,0x045F,0x040F},
598
{0x0410,0x0430,0x0410}, {0x0411,0x0431,0x0411},
599
{0x0412,0x0432,0x0412}, {0x0413,0x0433,0x0413},
600
{0x0414,0x0434,0x0414}, {0x0415,0x0435,0x0415},
601
{0x0416,0x0436,0x0416}, {0x0417,0x0437,0x0417},
602
{0x0418,0x0438,0x0418}, {0x0419,0x0439,0x0419},
603
{0x041A,0x043A,0x041A}, {0x041B,0x043B,0x041B},
604
{0x041C,0x043C,0x041C}, {0x041D,0x043D,0x041D},
605
{0x041E,0x043E,0x041E}, {0x041F,0x043F,0x041F},
606
{0x0420,0x0440,0x0420}, {0x0421,0x0441,0x0421},
607
{0x0422,0x0442,0x0422}, {0x0423,0x0443,0x0423},
608
{0x0424,0x0444,0x0424}, {0x0425,0x0445,0x0425},
609
{0x0426,0x0446,0x0426}, {0x0427,0x0447,0x0427},
610
{0x0428,0x0448,0x0428}, {0x0429,0x0449,0x0429},
611
{0x042A,0x044A,0x042A}, {0x042B,0x044B,0x042B},
612
{0x042C,0x044C,0x042C}, {0x042D,0x044D,0x042D},
613
{0x042E,0x044E,0x042E}, {0x042F,0x044F,0x042F},
614
{0x0410,0x0430,0x0410}, {0x0411,0x0431,0x0411},
615
{0x0412,0x0432,0x0412}, {0x0413,0x0433,0x0413},
616
{0x0414,0x0434,0x0414}, {0x0415,0x0435,0x0415},
617
{0x0416,0x0436,0x0416}, {0x0417,0x0437,0x0417},
618
{0x0418,0x0438,0x0418}, {0x0419,0x0439,0x0419},
619
{0x041A,0x043A,0x041A}, {0x041B,0x043B,0x041B},
620
{0x041C,0x043C,0x041C}, {0x041D,0x043D,0x041D},
621
{0x041E,0x043E,0x041E}, {0x041F,0x043F,0x041F},
622
{0x0420,0x0440,0x0420}, {0x0421,0x0441,0x0421},
623
{0x0422,0x0442,0x0422}, {0x0423,0x0443,0x0423},
624
{0x0424,0x0444,0x0424}, {0x0425,0x0445,0x0425},
625
{0x0426,0x0446,0x0426}, {0x0427,0x0447,0x0427},
626
{0x0428,0x0448,0x0428}, {0x0429,0x0449,0x0429},
627
{0x042A,0x044A,0x042A}, {0x042B,0x044B,0x042B},
628
{0x042C,0x044C,0x042C}, {0x042D,0x044D,0x042D},
629
{0x042E,0x044E,0x042E}, {0x042F,0x044F,0x042F},
630
{0x0400,0x0450,0x0415}, {0x0401,0x0451,0x0415},
631
{0x0402,0x0452,0x0402}, {0x0403,0x0453,0x0413},
632
{0x0404,0x0454,0x0404}, {0x0405,0x0455,0x0405},
633
{0x0406,0x0456,0x0406}, {0x0407,0x0457,0x0406},
634
{0x0408,0x0458,0x0408}, {0x0409,0x0459,0x0409},
635
{0x040A,0x045A,0x040A}, {0x040B,0x045B,0x040B},
636
{0x040C,0x045C,0x041A}, {0x040D,0x045D,0x0418},
637
{0x040E,0x045E,0x0423}, {0x040F,0x045F,0x040F},
638
{0x0460,0x0461,0x0460}, {0x0460,0x0461,0x0460},
639
{0x0462,0x0463,0x0462}, {0x0462,0x0463,0x0462},
640
{0x0464,0x0465,0x0464}, {0x0464,0x0465,0x0464},
641
{0x0466,0x0467,0x0466}, {0x0466,0x0467,0x0466},
642
{0x0468,0x0469,0x0468}, {0x0468,0x0469,0x0468},
643
{0x046A,0x046B,0x046A}, {0x046A,0x046B,0x046A},
644
{0x046C,0x046D,0x046C}, {0x046C,0x046D,0x046C},
645
{0x046E,0x046F,0x046E}, {0x046E,0x046F,0x046E},
646
{0x0470,0x0471,0x0470}, {0x0470,0x0471,0x0470},
647
{0x0472,0x0473,0x0472}, {0x0472,0x0473,0x0472},
648
{0x0474,0x0475,0x0474}, {0x0474,0x0475,0x0474},
649
{0x0476,0x0477,0x0474}, {0x0476,0x0477,0x0474},
650
{0x0478,0x0479,0x0478}, {0x0478,0x0479,0x0478},
651
{0x047A,0x047B,0x047A}, {0x047A,0x047B,0x047A},
652
{0x047C,0x047D,0x047C}, {0x047C,0x047D,0x047C},
653
{0x047E,0x047F,0x047E}, {0x047E,0x047F,0x047E},
654
{0x0480,0x0481,0x0480}, {0x0480,0x0481,0x0480},
655
{0x0482,0x0482,0x0482}, {0x0483,0x0483,0x0483},
656
{0x0484,0x0484,0x0484}, {0x0485,0x0485,0x0485},
657
{0x0486,0x0486,0x0486}, {0x0487,0x0487,0x0487},
658
{0x0488,0x0488,0x0488}, {0x0489,0x0489,0x0489},
659
{0x048A,0x048A,0x048A}, {0x048B,0x048B,0x048B},
660
{0x048C,0x048D,0x048C}, {0x048C,0x048D,0x048C},
661
{0x048E,0x048F,0x048E}, {0x048E,0x048F,0x048E},
662
{0x0490,0x0491,0x0490}, {0x0490,0x0491,0x0490},
663
{0x0492,0x0493,0x0492}, {0x0492,0x0493,0x0492},
664
{0x0494,0x0495,0x0494}, {0x0494,0x0495,0x0494},
665
{0x0496,0x0497,0x0496}, {0x0496,0x0497,0x0496},
666
{0x0498,0x0499,0x0498}, {0x0498,0x0499,0x0498},
667
{0x049A,0x049B,0x049A}, {0x049A,0x049B,0x049A},
668
{0x049C,0x049D,0x049C}, {0x049C,0x049D,0x049C},
669
{0x049E,0x049F,0x049E}, {0x049E,0x049F,0x049E},
670
{0x04A0,0x04A1,0x04A0}, {0x04A0,0x04A1,0x04A0},
671
{0x04A2,0x04A3,0x04A2}, {0x04A2,0x04A3,0x04A2},
672
{0x04A4,0x04A5,0x04A4}, {0x04A4,0x04A5,0x04A4},
673
{0x04A6,0x04A7,0x04A6}, {0x04A6,0x04A7,0x04A6},
674
{0x04A8,0x04A9,0x04A8}, {0x04A8,0x04A9,0x04A8},
675
{0x04AA,0x04AB,0x04AA}, {0x04AA,0x04AB,0x04AA},
676
{0x04AC,0x04AD,0x04AC}, {0x04AC,0x04AD,0x04AC},
677
{0x04AE,0x04AF,0x04AE}, {0x04AE,0x04AF,0x04AE},
678
{0x04B0,0x04B1,0x04B0}, {0x04B0,0x04B1,0x04B0},
679
{0x04B2,0x04B3,0x04B2}, {0x04B2,0x04B3,0x04B2},
680
{0x04B4,0x04B5,0x04B4}, {0x04B4,0x04B5,0x04B4},
681
{0x04B6,0x04B7,0x04B6}, {0x04B6,0x04B7,0x04B6},
682
{0x04B8,0x04B9,0x04B8}, {0x04B8,0x04B9,0x04B8},
683
{0x04BA,0x04BB,0x04BA}, {0x04BA,0x04BB,0x04BA},
684
{0x04BC,0x04BD,0x04BC}, {0x04BC,0x04BD,0x04BC},
685
{0x04BE,0x04BF,0x04BE}, {0x04BE,0x04BF,0x04BE},
686
{0x04C0,0x04C0,0x04C0}, {0x04C1,0x04C2,0x0416},
687
{0x04C1,0x04C2,0x0416}, {0x04C3,0x04C4,0x04C3},
688
{0x04C3,0x04C4,0x04C3}, {0x04C5,0x04C5,0x04C5},
689
{0x04C6,0x04C6,0x04C6}, {0x04C7,0x04C8,0x04C7},
690
{0x04C7,0x04C8,0x04C7}, {0x04C9,0x04C9,0x04C9},
691
{0x04CA,0x04CA,0x04CA}, {0x04CB,0x04CC,0x04CB},
692
{0x04CB,0x04CC,0x04CB}, {0x04CD,0x04CD,0x04CD},
693
{0x04CE,0x04CE,0x04CE}, {0x04CF,0x04CF,0x04CF},
694
{0x04D0,0x04D1,0x0410}, {0x04D0,0x04D1,0x0410},
695
{0x04D2,0x04D3,0x0410}, {0x04D2,0x04D3,0x0410},
696
{0x04D4,0x04D5,0x04D4}, {0x04D4,0x04D5,0x04D4},
697
{0x04D6,0x04D7,0x0415}, {0x04D6,0x04D7,0x0415},
698
{0x04D8,0x04D9,0x04D8}, {0x04D8,0x04D9,0x04D8},
699
{0x04DA,0x04DB,0x04D8}, {0x04DA,0x04DB,0x04D8},
700
{0x04DC,0x04DD,0x0416}, {0x04DC,0x04DD,0x0416},
701
{0x04DE,0x04DF,0x0417}, {0x04DE,0x04DF,0x0417},
702
{0x04E0,0x04E1,0x04E0}, {0x04E0,0x04E1,0x04E0},
703
{0x04E2,0x04E3,0x0418}, {0x04E2,0x04E3,0x0418},
704
{0x04E4,0x04E5,0x0418}, {0x04E4,0x04E5,0x0418},
705
{0x04E6,0x04E7,0x041E}, {0x04E6,0x04E7,0x041E},
706
{0x04E8,0x04E9,0x04E8}, {0x04E8,0x04E9,0x04E8},
707
{0x04EA,0x04EB,0x04E8}, {0x04EA,0x04EB,0x04E8},
708
{0x04EC,0x04ED,0x042D}, {0x04EC,0x04ED,0x042D},
709
{0x04EE,0x04EF,0x0423}, {0x04EE,0x04EF,0x0423},
710
{0x04F0,0x04F1,0x0423}, {0x04F0,0x04F1,0x0423},
711
{0x04F2,0x04F3,0x0423}, {0x04F2,0x04F3,0x0423},
712
{0x04F4,0x04F5,0x0427}, {0x04F4,0x04F5,0x0427},
713
{0x04F6,0x04F6,0x04F6}, {0x04F7,0x04F7,0x04F7},
714
{0x04F8,0x04F9,0x042B}, {0x04F8,0x04F9,0x042B},
715
{0x04FA,0x04FA,0x04FA}, {0x04FB,0x04FB,0x04FB},
716
{0x04FC,0x04FC,0x04FC}, {0x04FD,0x04FD,0x04FD},
717
{0x04FE,0x04FE,0x04FE}, {0x04FF,0x04FF,0x04FF}
720
static MY_UNICASE_INFO plane05[]={
721
{0x0500,0x0500,0x0500}, {0x0501,0x0501,0x0501},
722
{0x0502,0x0502,0x0502}, {0x0503,0x0503,0x0503},
723
{0x0504,0x0504,0x0504}, {0x0505,0x0505,0x0505},
724
{0x0506,0x0506,0x0506}, {0x0507,0x0507,0x0507},
725
{0x0508,0x0508,0x0508}, {0x0509,0x0509,0x0509},
726
{0x050A,0x050A,0x050A}, {0x050B,0x050B,0x050B},
727
{0x050C,0x050C,0x050C}, {0x050D,0x050D,0x050D},
728
{0x050E,0x050E,0x050E}, {0x050F,0x050F,0x050F},
729
{0x0510,0x0510,0x0510}, {0x0511,0x0511,0x0511},
730
{0x0512,0x0512,0x0512}, {0x0513,0x0513,0x0513},
731
{0x0514,0x0514,0x0514}, {0x0515,0x0515,0x0515},
732
{0x0516,0x0516,0x0516}, {0x0517,0x0517,0x0517},
733
{0x0518,0x0518,0x0518}, {0x0519,0x0519,0x0519},
734
{0x051A,0x051A,0x051A}, {0x051B,0x051B,0x051B},
735
{0x051C,0x051C,0x051C}, {0x051D,0x051D,0x051D},
736
{0x051E,0x051E,0x051E}, {0x051F,0x051F,0x051F},
737
{0x0520,0x0520,0x0520}, {0x0521,0x0521,0x0521},
738
{0x0522,0x0522,0x0522}, {0x0523,0x0523,0x0523},
739
{0x0524,0x0524,0x0524}, {0x0525,0x0525,0x0525},
740
{0x0526,0x0526,0x0526}, {0x0527,0x0527,0x0527},
741
{0x0528,0x0528,0x0528}, {0x0529,0x0529,0x0529},
742
{0x052A,0x052A,0x052A}, {0x052B,0x052B,0x052B},
743
{0x052C,0x052C,0x052C}, {0x052D,0x052D,0x052D},
744
{0x052E,0x052E,0x052E}, {0x052F,0x052F,0x052F},
745
{0x0530,0x0530,0x0530}, {0x0531,0x0561,0x0531},
746
{0x0532,0x0562,0x0532}, {0x0533,0x0563,0x0533},
747
{0x0534,0x0564,0x0534}, {0x0535,0x0565,0x0535},
748
{0x0536,0x0566,0x0536}, {0x0537,0x0567,0x0537},
749
{0x0538,0x0568,0x0538}, {0x0539,0x0569,0x0539},
750
{0x053A,0x056A,0x053A}, {0x053B,0x056B,0x053B},
751
{0x053C,0x056C,0x053C}, {0x053D,0x056D,0x053D},
752
{0x053E,0x056E,0x053E}, {0x053F,0x056F,0x053F},
753
{0x0540,0x0570,0x0540}, {0x0541,0x0571,0x0541},
754
{0x0542,0x0572,0x0542}, {0x0543,0x0573,0x0543},
755
{0x0544,0x0574,0x0544}, {0x0545,0x0575,0x0545},
756
{0x0546,0x0576,0x0546}, {0x0547,0x0577,0x0547},
757
{0x0548,0x0578,0x0548}, {0x0549,0x0579,0x0549},
758
{0x054A,0x057A,0x054A}, {0x054B,0x057B,0x054B},
759
{0x054C,0x057C,0x054C}, {0x054D,0x057D,0x054D},
760
{0x054E,0x057E,0x054E}, {0x054F,0x057F,0x054F},
761
{0x0550,0x0580,0x0550}, {0x0551,0x0581,0x0551},
762
{0x0552,0x0582,0x0552}, {0x0553,0x0583,0x0553},
763
{0x0554,0x0584,0x0554}, {0x0555,0x0585,0x0555},
764
{0x0556,0x0586,0x0556}, {0x0557,0x0557,0x0557},
765
{0x0558,0x0558,0x0558}, {0x0559,0x0559,0x0559},
766
{0x055A,0x055A,0x055A}, {0x055B,0x055B,0x055B},
767
{0x055C,0x055C,0x055C}, {0x055D,0x055D,0x055D},
768
{0x055E,0x055E,0x055E}, {0x055F,0x055F,0x055F},
769
{0x0560,0x0560,0x0560}, {0x0531,0x0561,0x0531},
770
{0x0532,0x0562,0x0532}, {0x0533,0x0563,0x0533},
771
{0x0534,0x0564,0x0534}, {0x0535,0x0565,0x0535},
772
{0x0536,0x0566,0x0536}, {0x0537,0x0567,0x0537},
773
{0x0538,0x0568,0x0538}, {0x0539,0x0569,0x0539},
774
{0x053A,0x056A,0x053A}, {0x053B,0x056B,0x053B},
775
{0x053C,0x056C,0x053C}, {0x053D,0x056D,0x053D},
776
{0x053E,0x056E,0x053E}, {0x053F,0x056F,0x053F},
777
{0x0540,0x0570,0x0540}, {0x0541,0x0571,0x0541},
778
{0x0542,0x0572,0x0542}, {0x0543,0x0573,0x0543},
779
{0x0544,0x0574,0x0544}, {0x0545,0x0575,0x0545},
780
{0x0546,0x0576,0x0546}, {0x0547,0x0577,0x0547},
781
{0x0548,0x0578,0x0548}, {0x0549,0x0579,0x0549},
782
{0x054A,0x057A,0x054A}, {0x054B,0x057B,0x054B},
783
{0x054C,0x057C,0x054C}, {0x054D,0x057D,0x054D},
784
{0x054E,0x057E,0x054E}, {0x054F,0x057F,0x054F},
785
{0x0550,0x0580,0x0550}, {0x0551,0x0581,0x0551},
786
{0x0552,0x0582,0x0552}, {0x0553,0x0583,0x0553},
787
{0x0554,0x0584,0x0554}, {0x0555,0x0585,0x0555},
788
{0x0556,0x0586,0x0556}, {0x0587,0x0587,0x0587},
789
{0x0588,0x0588,0x0588}, {0x0589,0x0589,0x0589},
790
{0x058A,0x058A,0x058A}, {0x058B,0x058B,0x058B},
791
{0x058C,0x058C,0x058C}, {0x058D,0x058D,0x058D},
792
{0x058E,0x058E,0x058E}, {0x058F,0x058F,0x058F},
793
{0x0590,0x0590,0x0590}, {0x0591,0x0591,0x0591},
794
{0x0592,0x0592,0x0592}, {0x0593,0x0593,0x0593},
795
{0x0594,0x0594,0x0594}, {0x0595,0x0595,0x0595},
796
{0x0596,0x0596,0x0596}, {0x0597,0x0597,0x0597},
797
{0x0598,0x0598,0x0598}, {0x0599,0x0599,0x0599},
798
{0x059A,0x059A,0x059A}, {0x059B,0x059B,0x059B},
799
{0x059C,0x059C,0x059C}, {0x059D,0x059D,0x059D},
800
{0x059E,0x059E,0x059E}, {0x059F,0x059F,0x059F},
801
{0x05A0,0x05A0,0x05A0}, {0x05A1,0x05A1,0x05A1},
802
{0x05A2,0x05A2,0x05A2}, {0x05A3,0x05A3,0x05A3},
803
{0x05A4,0x05A4,0x05A4}, {0x05A5,0x05A5,0x05A5},
804
{0x05A6,0x05A6,0x05A6}, {0x05A7,0x05A7,0x05A7},
805
{0x05A8,0x05A8,0x05A8}, {0x05A9,0x05A9,0x05A9},
806
{0x05AA,0x05AA,0x05AA}, {0x05AB,0x05AB,0x05AB},
807
{0x05AC,0x05AC,0x05AC}, {0x05AD,0x05AD,0x05AD},
808
{0x05AE,0x05AE,0x05AE}, {0x05AF,0x05AF,0x05AF},
809
{0x05B0,0x05B0,0x05B0}, {0x05B1,0x05B1,0x05B1},
810
{0x05B2,0x05B2,0x05B2}, {0x05B3,0x05B3,0x05B3},
811
{0x05B4,0x05B4,0x05B4}, {0x05B5,0x05B5,0x05B5},
812
{0x05B6,0x05B6,0x05B6}, {0x05B7,0x05B7,0x05B7},
813
{0x05B8,0x05B8,0x05B8}, {0x05B9,0x05B9,0x05B9},
814
{0x05BA,0x05BA,0x05BA}, {0x05BB,0x05BB,0x05BB},
815
{0x05BC,0x05BC,0x05BC}, {0x05BD,0x05BD,0x05BD},
816
{0x05BE,0x05BE,0x05BE}, {0x05BF,0x05BF,0x05BF},
817
{0x05C0,0x05C0,0x05C0}, {0x05C1,0x05C1,0x05C1},
818
{0x05C2,0x05C2,0x05C2}, {0x05C3,0x05C3,0x05C3},
819
{0x05C4,0x05C4,0x05C4}, {0x05C5,0x05C5,0x05C5},
820
{0x05C6,0x05C6,0x05C6}, {0x05C7,0x05C7,0x05C7},
821
{0x05C8,0x05C8,0x05C8}, {0x05C9,0x05C9,0x05C9},
822
{0x05CA,0x05CA,0x05CA}, {0x05CB,0x05CB,0x05CB},
823
{0x05CC,0x05CC,0x05CC}, {0x05CD,0x05CD,0x05CD},
824
{0x05CE,0x05CE,0x05CE}, {0x05CF,0x05CF,0x05CF},
825
{0x05D0,0x05D0,0x05D0}, {0x05D1,0x05D1,0x05D1},
826
{0x05D2,0x05D2,0x05D2}, {0x05D3,0x05D3,0x05D3},
827
{0x05D4,0x05D4,0x05D4}, {0x05D5,0x05D5,0x05D5},
828
{0x05D6,0x05D6,0x05D6}, {0x05D7,0x05D7,0x05D7},
829
{0x05D8,0x05D8,0x05D8}, {0x05D9,0x05D9,0x05D9},
830
{0x05DA,0x05DA,0x05DA}, {0x05DB,0x05DB,0x05DB},
831
{0x05DC,0x05DC,0x05DC}, {0x05DD,0x05DD,0x05DD},
832
{0x05DE,0x05DE,0x05DE}, {0x05DF,0x05DF,0x05DF},
833
{0x05E0,0x05E0,0x05E0}, {0x05E1,0x05E1,0x05E1},
834
{0x05E2,0x05E2,0x05E2}, {0x05E3,0x05E3,0x05E3},
835
{0x05E4,0x05E4,0x05E4}, {0x05E5,0x05E5,0x05E5},
836
{0x05E6,0x05E6,0x05E6}, {0x05E7,0x05E7,0x05E7},
837
{0x05E8,0x05E8,0x05E8}, {0x05E9,0x05E9,0x05E9},
838
{0x05EA,0x05EA,0x05EA}, {0x05EB,0x05EB,0x05EB},
839
{0x05EC,0x05EC,0x05EC}, {0x05ED,0x05ED,0x05ED},
840
{0x05EE,0x05EE,0x05EE}, {0x05EF,0x05EF,0x05EF},
841
{0x05F0,0x05F0,0x05F0}, {0x05F1,0x05F1,0x05F1},
842
{0x05F2,0x05F2,0x05F2}, {0x05F3,0x05F3,0x05F3},
843
{0x05F4,0x05F4,0x05F4}, {0x05F5,0x05F5,0x05F5},
844
{0x05F6,0x05F6,0x05F6}, {0x05F7,0x05F7,0x05F7},
845
{0x05F8,0x05F8,0x05F8}, {0x05F9,0x05F9,0x05F9},
846
{0x05FA,0x05FA,0x05FA}, {0x05FB,0x05FB,0x05FB},
847
{0x05FC,0x05FC,0x05FC}, {0x05FD,0x05FD,0x05FD},
848
{0x05FE,0x05FE,0x05FE}, {0x05FF,0x05FF,0x05FF}
851
static MY_UNICASE_INFO plane1E[]={
852
{0x1E00,0x1E01,0x0041}, {0x1E00,0x1E01,0x0041},
853
{0x1E02,0x1E03,0x0042}, {0x1E02,0x1E03,0x0042},
854
{0x1E04,0x1E05,0x0042}, {0x1E04,0x1E05,0x0042},
855
{0x1E06,0x1E07,0x0042}, {0x1E06,0x1E07,0x0042},
856
{0x1E08,0x1E09,0x0043}, {0x1E08,0x1E09,0x0043},
857
{0x1E0A,0x1E0B,0x0044}, {0x1E0A,0x1E0B,0x0044},
858
{0x1E0C,0x1E0D,0x0044}, {0x1E0C,0x1E0D,0x0044},
859
{0x1E0E,0x1E0F,0x0044}, {0x1E0E,0x1E0F,0x0044},
860
{0x1E10,0x1E11,0x0044}, {0x1E10,0x1E11,0x0044},
861
{0x1E12,0x1E13,0x0044}, {0x1E12,0x1E13,0x0044},
862
{0x1E14,0x1E15,0x0045}, {0x1E14,0x1E15,0x0045},
863
{0x1E16,0x1E17,0x0045}, {0x1E16,0x1E17,0x0045},
864
{0x1E18,0x1E19,0x0045}, {0x1E18,0x1E19,0x0045},
865
{0x1E1A,0x1E1B,0x0045}, {0x1E1A,0x1E1B,0x0045},
866
{0x1E1C,0x1E1D,0x0045}, {0x1E1C,0x1E1D,0x0045},
867
{0x1E1E,0x1E1F,0x0046}, {0x1E1E,0x1E1F,0x0046},
868
{0x1E20,0x1E21,0x0047}, {0x1E20,0x1E21,0x0047},
869
{0x1E22,0x1E23,0x0048}, {0x1E22,0x1E23,0x0048},
870
{0x1E24,0x1E25,0x0048}, {0x1E24,0x1E25,0x0048},
871
{0x1E26,0x1E27,0x0048}, {0x1E26,0x1E27,0x0048},
872
{0x1E28,0x1E29,0x0048}, {0x1E28,0x1E29,0x0048},
873
{0x1E2A,0x1E2B,0x0048}, {0x1E2A,0x1E2B,0x0048},
874
{0x1E2C,0x1E2D,0x0049}, {0x1E2C,0x1E2D,0x0049},
875
{0x1E2E,0x1E2F,0x0049}, {0x1E2E,0x1E2F,0x0049},
876
{0x1E30,0x1E31,0x004B}, {0x1E30,0x1E31,0x004B},
877
{0x1E32,0x1E33,0x004B}, {0x1E32,0x1E33,0x004B},
878
{0x1E34,0x1E35,0x004B}, {0x1E34,0x1E35,0x004B},
879
{0x1E36,0x1E37,0x004C}, {0x1E36,0x1E37,0x004C},
880
{0x1E38,0x1E39,0x004C}, {0x1E38,0x1E39,0x004C},
881
{0x1E3A,0x1E3B,0x004C}, {0x1E3A,0x1E3B,0x004C},
882
{0x1E3C,0x1E3D,0x004C}, {0x1E3C,0x1E3D,0x004C},
883
{0x1E3E,0x1E3F,0x004D}, {0x1E3E,0x1E3F,0x004D},
884
{0x1E40,0x1E41,0x004D}, {0x1E40,0x1E41,0x004D},
885
{0x1E42,0x1E43,0x004D}, {0x1E42,0x1E43,0x004D},
886
{0x1E44,0x1E45,0x004E}, {0x1E44,0x1E45,0x004E},
887
{0x1E46,0x1E47,0x004E}, {0x1E46,0x1E47,0x004E},
888
{0x1E48,0x1E49,0x004E}, {0x1E48,0x1E49,0x004E},
889
{0x1E4A,0x1E4B,0x004E}, {0x1E4A,0x1E4B,0x004E},
890
{0x1E4C,0x1E4D,0x004F}, {0x1E4C,0x1E4D,0x004F},
891
{0x1E4E,0x1E4F,0x004F}, {0x1E4E,0x1E4F,0x004F},
892
{0x1E50,0x1E51,0x004F}, {0x1E50,0x1E51,0x004F},
893
{0x1E52,0x1E53,0x004F}, {0x1E52,0x1E53,0x004F},
894
{0x1E54,0x1E55,0x0050}, {0x1E54,0x1E55,0x0050},
895
{0x1E56,0x1E57,0x0050}, {0x1E56,0x1E57,0x0050},
896
{0x1E58,0x1E59,0x0052}, {0x1E58,0x1E59,0x0052},
897
{0x1E5A,0x1E5B,0x0052}, {0x1E5A,0x1E5B,0x0052},
898
{0x1E5C,0x1E5D,0x0052}, {0x1E5C,0x1E5D,0x0052},
899
{0x1E5E,0x1E5F,0x0052}, {0x1E5E,0x1E5F,0x0052},
900
{0x1E60,0x1E61,0x0053}, {0x1E60,0x1E61,0x0053},
901
{0x1E62,0x1E63,0x0053}, {0x1E62,0x1E63,0x0053},
902
{0x1E64,0x1E65,0x0053}, {0x1E64,0x1E65,0x0053},
903
{0x1E66,0x1E67,0x0053}, {0x1E66,0x1E67,0x0053},
904
{0x1E68,0x1E69,0x0053}, {0x1E68,0x1E69,0x0053},
905
{0x1E6A,0x1E6B,0x0054}, {0x1E6A,0x1E6B,0x0054},
906
{0x1E6C,0x1E6D,0x0054}, {0x1E6C,0x1E6D,0x0054},
907
{0x1E6E,0x1E6F,0x0054}, {0x1E6E,0x1E6F,0x0054},
908
{0x1E70,0x1E71,0x0054}, {0x1E70,0x1E71,0x0054},
909
{0x1E72,0x1E73,0x0055}, {0x1E72,0x1E73,0x0055},
910
{0x1E74,0x1E75,0x0055}, {0x1E74,0x1E75,0x0055},
911
{0x1E76,0x1E77,0x0055}, {0x1E76,0x1E77,0x0055},
912
{0x1E78,0x1E79,0x0055}, {0x1E78,0x1E79,0x0055},
913
{0x1E7A,0x1E7B,0x0055}, {0x1E7A,0x1E7B,0x0055},
914
{0x1E7C,0x1E7D,0x0056}, {0x1E7C,0x1E7D,0x0056},
915
{0x1E7E,0x1E7F,0x0056}, {0x1E7E,0x1E7F,0x0056},
916
{0x1E80,0x1E81,0x0057}, {0x1E80,0x1E81,0x0057},
917
{0x1E82,0x1E83,0x0057}, {0x1E82,0x1E83,0x0057},
918
{0x1E84,0x1E85,0x0057}, {0x1E84,0x1E85,0x0057},
919
{0x1E86,0x1E87,0x0057}, {0x1E86,0x1E87,0x0057},
920
{0x1E88,0x1E89,0x0057}, {0x1E88,0x1E89,0x0057},
921
{0x1E8A,0x1E8B,0x0058}, {0x1E8A,0x1E8B,0x0058},
922
{0x1E8C,0x1E8D,0x0058}, {0x1E8C,0x1E8D,0x0058},
923
{0x1E8E,0x1E8F,0x0059}, {0x1E8E,0x1E8F,0x0059},
924
{0x1E90,0x1E91,0x005A}, {0x1E90,0x1E91,0x005A},
925
{0x1E92,0x1E93,0x005A}, {0x1E92,0x1E93,0x005A},
926
{0x1E94,0x1E95,0x005A}, {0x1E94,0x1E95,0x005A},
927
{0x1E96,0x1E96,0x0048}, {0x1E97,0x1E97,0x0054},
928
{0x1E98,0x1E98,0x0057}, {0x1E99,0x1E99,0x0059},
929
{0x1E9A,0x1E9A,0x1E9A}, {0x1E60,0x1E9B,0x0053},
930
{0x1E9C,0x1E9C,0x1E9C}, {0x1E9D,0x1E9D,0x1E9D},
931
{0x1E9E,0x1E9E,0x1E9E}, {0x1E9F,0x1E9F,0x1E9F},
932
{0x1EA0,0x1EA1,0x0041}, {0x1EA0,0x1EA1,0x0041},
933
{0x1EA2,0x1EA3,0x0041}, {0x1EA2,0x1EA3,0x0041},
934
{0x1EA4,0x1EA5,0x0041}, {0x1EA4,0x1EA5,0x0041},
935
{0x1EA6,0x1EA7,0x0041}, {0x1EA6,0x1EA7,0x0041},
936
{0x1EA8,0x1EA9,0x0041}, {0x1EA8,0x1EA9,0x0041},
937
{0x1EAA,0x1EAB,0x0041}, {0x1EAA,0x1EAB,0x0041},
938
{0x1EAC,0x1EAD,0x0041}, {0x1EAC,0x1EAD,0x0041},
939
{0x1EAE,0x1EAF,0x0041}, {0x1EAE,0x1EAF,0x0041},
940
{0x1EB0,0x1EB1,0x0041}, {0x1EB0,0x1EB1,0x0041},
941
{0x1EB2,0x1EB3,0x0041}, {0x1EB2,0x1EB3,0x0041},
942
{0x1EB4,0x1EB5,0x0041}, {0x1EB4,0x1EB5,0x0041},
943
{0x1EB6,0x1EB7,0x0041}, {0x1EB6,0x1EB7,0x0041},
944
{0x1EB8,0x1EB9,0x0045}, {0x1EB8,0x1EB9,0x0045},
945
{0x1EBA,0x1EBB,0x0045}, {0x1EBA,0x1EBB,0x0045},
946
{0x1EBC,0x1EBD,0x0045}, {0x1EBC,0x1EBD,0x0045},
947
{0x1EBE,0x1EBF,0x0045}, {0x1EBE,0x1EBF,0x0045},
948
{0x1EC0,0x1EC1,0x0045}, {0x1EC0,0x1EC1,0x0045},
949
{0x1EC2,0x1EC3,0x0045}, {0x1EC2,0x1EC3,0x0045},
950
{0x1EC4,0x1EC5,0x0045}, {0x1EC4,0x1EC5,0x0045},
951
{0x1EC6,0x1EC7,0x0045}, {0x1EC6,0x1EC7,0x0045},
952
{0x1EC8,0x1EC9,0x0049}, {0x1EC8,0x1EC9,0x0049},
953
{0x1ECA,0x1ECB,0x0049}, {0x1ECA,0x1ECB,0x0049},
954
{0x1ECC,0x1ECD,0x004F}, {0x1ECC,0x1ECD,0x004F},
955
{0x1ECE,0x1ECF,0x004F}, {0x1ECE,0x1ECF,0x004F},
956
{0x1ED0,0x1ED1,0x004F}, {0x1ED0,0x1ED1,0x004F},
957
{0x1ED2,0x1ED3,0x004F}, {0x1ED2,0x1ED3,0x004F},
958
{0x1ED4,0x1ED5,0x004F}, {0x1ED4,0x1ED5,0x004F},
959
{0x1ED6,0x1ED7,0x004F}, {0x1ED6,0x1ED7,0x004F},
960
{0x1ED8,0x1ED9,0x004F}, {0x1ED8,0x1ED9,0x004F},
961
{0x1EDA,0x1EDB,0x004F}, {0x1EDA,0x1EDB,0x004F},
962
{0x1EDC,0x1EDD,0x004F}, {0x1EDC,0x1EDD,0x004F},
963
{0x1EDE,0x1EDF,0x004F}, {0x1EDE,0x1EDF,0x004F},
964
{0x1EE0,0x1EE1,0x004F}, {0x1EE0,0x1EE1,0x004F},
965
{0x1EE2,0x1EE3,0x004F}, {0x1EE2,0x1EE3,0x004F},
966
{0x1EE4,0x1EE5,0x0055}, {0x1EE4,0x1EE5,0x0055},
967
{0x1EE6,0x1EE7,0x0055}, {0x1EE6,0x1EE7,0x0055},
968
{0x1EE8,0x1EE9,0x0055}, {0x1EE8,0x1EE9,0x0055},
969
{0x1EEA,0x1EEB,0x0055}, {0x1EEA,0x1EEB,0x0055},
970
{0x1EEC,0x1EED,0x0055}, {0x1EEC,0x1EED,0x0055},
971
{0x1EEE,0x1EEF,0x0055}, {0x1EEE,0x1EEF,0x0055},
972
{0x1EF0,0x1EF1,0x0055}, {0x1EF0,0x1EF1,0x0055},
973
{0x1EF2,0x1EF3,0x0059}, {0x1EF2,0x1EF3,0x0059},
974
{0x1EF4,0x1EF5,0x0059}, {0x1EF4,0x1EF5,0x0059},
975
{0x1EF6,0x1EF7,0x0059}, {0x1EF6,0x1EF7,0x0059},
976
{0x1EF8,0x1EF9,0x0059}, {0x1EF8,0x1EF9,0x0059},
977
{0x1EFA,0x1EFA,0x1EFA}, {0x1EFB,0x1EFB,0x1EFB},
978
{0x1EFC,0x1EFC,0x1EFC}, {0x1EFD,0x1EFD,0x1EFD},
979
{0x1EFE,0x1EFE,0x1EFE}, {0x1EFF,0x1EFF,0x1EFF}
982
static MY_UNICASE_INFO plane1F[]={
983
{0x1F08,0x1F00,0x0391}, {0x1F09,0x1F01,0x0391},
984
{0x1F0A,0x1F02,0x0391}, {0x1F0B,0x1F03,0x0391},
985
{0x1F0C,0x1F04,0x0391}, {0x1F0D,0x1F05,0x0391},
986
{0x1F0E,0x1F06,0x0391}, {0x1F0F,0x1F07,0x0391},
987
{0x1F08,0x1F00,0x0391}, {0x1F09,0x1F01,0x0391},
988
{0x1F0A,0x1F02,0x0391}, {0x1F0B,0x1F03,0x0391},
989
{0x1F0C,0x1F04,0x0391}, {0x1F0D,0x1F05,0x0391},
990
{0x1F0E,0x1F06,0x0391}, {0x1F0F,0x1F07,0x0391},
991
{0x1F18,0x1F10,0x0395}, {0x1F19,0x1F11,0x0395},
992
{0x1F1A,0x1F12,0x0395}, {0x1F1B,0x1F13,0x0395},
993
{0x1F1C,0x1F14,0x0395}, {0x1F1D,0x1F15,0x0395},
994
{0x1F16,0x1F16,0x1F16}, {0x1F17,0x1F17,0x1F17},
995
{0x1F18,0x1F10,0x0395}, {0x1F19,0x1F11,0x0395},
996
{0x1F1A,0x1F12,0x0395}, {0x1F1B,0x1F13,0x0395},
997
{0x1F1C,0x1F14,0x0395}, {0x1F1D,0x1F15,0x0395},
998
{0x1F1E,0x1F1E,0x1F1E}, {0x1F1F,0x1F1F,0x1F1F},
999
{0x1F28,0x1F20,0x0397}, {0x1F29,0x1F21,0x0397},
1000
{0x1F2A,0x1F22,0x0397}, {0x1F2B,0x1F23,0x0397},
1001
{0x1F2C,0x1F24,0x0397}, {0x1F2D,0x1F25,0x0397},
1002
{0x1F2E,0x1F26,0x0397}, {0x1F2F,0x1F27,0x0397},
1003
{0x1F28,0x1F20,0x0397}, {0x1F29,0x1F21,0x0397},
1004
{0x1F2A,0x1F22,0x0397}, {0x1F2B,0x1F23,0x0397},
1005
{0x1F2C,0x1F24,0x0397}, {0x1F2D,0x1F25,0x0397},
1006
{0x1F2E,0x1F26,0x0397}, {0x1F2F,0x1F27,0x0397},
1007
{0x1F38,0x1F30,0x0399}, {0x1F39,0x1F31,0x0399},
1008
{0x1F3A,0x1F32,0x0399}, {0x1F3B,0x1F33,0x0399},
1009
{0x1F3C,0x1F34,0x0399}, {0x1F3D,0x1F35,0x0399},
1010
{0x1F3E,0x1F36,0x0399}, {0x1F3F,0x1F37,0x0399},
1011
{0x1F38,0x1F30,0x0399}, {0x1F39,0x1F31,0x0399},
1012
{0x1F3A,0x1F32,0x0399}, {0x1F3B,0x1F33,0x0399},
1013
{0x1F3C,0x1F34,0x0399}, {0x1F3D,0x1F35,0x0399},
1014
{0x1F3E,0x1F36,0x0399}, {0x1F3F,0x1F37,0x0399},
1015
{0x1F48,0x1F40,0x039F}, {0x1F49,0x1F41,0x039F},
1016
{0x1F4A,0x1F42,0x039F}, {0x1F4B,0x1F43,0x039F},
1017
{0x1F4C,0x1F44,0x039F}, {0x1F4D,0x1F45,0x039F},
1018
{0x1F46,0x1F46,0x1F46}, {0x1F47,0x1F47,0x1F47},
1019
{0x1F48,0x1F40,0x039F}, {0x1F49,0x1F41,0x039F},
1020
{0x1F4A,0x1F42,0x039F}, {0x1F4B,0x1F43,0x039F},
1021
{0x1F4C,0x1F44,0x039F}, {0x1F4D,0x1F45,0x039F},
1022
{0x1F4E,0x1F4E,0x1F4E}, {0x1F4F,0x1F4F,0x1F4F},
1023
{0x1F50,0x1F50,0x03A5}, {0x1F59,0x1F51,0x03A5},
1024
{0x1F52,0x1F52,0x03A5}, {0x1F5B,0x1F53,0x03A5},
1025
{0x1F54,0x1F54,0x03A5}, {0x1F5D,0x1F55,0x03A5},
1026
{0x1F56,0x1F56,0x03A5}, {0x1F5F,0x1F57,0x03A5},
1027
{0x1F58,0x1F58,0x1F58}, {0x1F59,0x1F51,0x03A5},
1028
{0x1F5A,0x1F5A,0x1F5A}, {0x1F5B,0x1F53,0x03A5},
1029
{0x1F5C,0x1F5C,0x1F5C}, {0x1F5D,0x1F55,0x03A5},
1030
{0x1F5E,0x1F5E,0x1F5E}, {0x1F5F,0x1F57,0x03A5},
1031
{0x1F68,0x1F60,0x03A9}, {0x1F69,0x1F61,0x03A9},
1032
{0x1F6A,0x1F62,0x03A9}, {0x1F6B,0x1F63,0x03A9},
1033
{0x1F6C,0x1F64,0x03A9}, {0x1F6D,0x1F65,0x03A9},
1034
{0x1F6E,0x1F66,0x03A9}, {0x1F6F,0x1F67,0x03A9},
1035
{0x1F68,0x1F60,0x03A9}, {0x1F69,0x1F61,0x03A9},
1036
{0x1F6A,0x1F62,0x03A9}, {0x1F6B,0x1F63,0x03A9},
1037
{0x1F6C,0x1F64,0x03A9}, {0x1F6D,0x1F65,0x03A9},
1038
{0x1F6E,0x1F66,0x03A9}, {0x1F6F,0x1F67,0x03A9},
1039
{0x1FBA,0x1F70,0x0391}, {0x1FBB,0x1F71,0x1FBB},
1040
{0x1FC8,0x1F72,0x0395}, {0x1FC9,0x1F73,0x1FC9},
1041
{0x1FCA,0x1F74,0x0397}, {0x1FCB,0x1F75,0x1FCB},
1042
{0x1FDA,0x1F76,0x0399}, {0x1FDB,0x1F77,0x1FDB},
1043
{0x1FF8,0x1F78,0x039F}, {0x1FF9,0x1F79,0x1FF9},
1044
{0x1FEA,0x1F7A,0x03A5}, {0x1FEB,0x1F7B,0x1FEB},
1045
{0x1FFA,0x1F7C,0x03A9}, {0x1FFB,0x1F7D,0x1FFB},
1046
{0x1F7E,0x1F7E,0x1F7E}, {0x1F7F,0x1F7F,0x1F7F},
1047
{0x1F88,0x1F80,0x0391}, {0x1F89,0x1F81,0x0391},
1048
{0x1F8A,0x1F82,0x0391}, {0x1F8B,0x1F83,0x0391},
1049
{0x1F8C,0x1F84,0x0391}, {0x1F8D,0x1F85,0x0391},
1050
{0x1F8E,0x1F86,0x0391}, {0x1F8F,0x1F87,0x0391},
1051
{0x1F88,0x1F80,0x0391}, {0x1F89,0x1F81,0x0391},
1052
{0x1F8A,0x1F82,0x0391}, {0x1F8B,0x1F83,0x0391},
1053
{0x1F8C,0x1F84,0x0391}, {0x1F8D,0x1F85,0x0391},
1054
{0x1F8E,0x1F86,0x0391}, {0x1F8F,0x1F87,0x0391},
1055
{0x1F98,0x1F90,0x0397}, {0x1F99,0x1F91,0x0397},
1056
{0x1F9A,0x1F92,0x0397}, {0x1F9B,0x1F93,0x0397},
1057
{0x1F9C,0x1F94,0x0397}, {0x1F9D,0x1F95,0x0397},
1058
{0x1F9E,0x1F96,0x0397}, {0x1F9F,0x1F97,0x0397},
1059
{0x1F98,0x1F90,0x0397}, {0x1F99,0x1F91,0x0397},
1060
{0x1F9A,0x1F92,0x0397}, {0x1F9B,0x1F93,0x0397},
1061
{0x1F9C,0x1F94,0x0397}, {0x1F9D,0x1F95,0x0397},
1062
{0x1F9E,0x1F96,0x0397}, {0x1F9F,0x1F97,0x0397},
1063
{0x1FA8,0x1FA0,0x03A9}, {0x1FA9,0x1FA1,0x03A9},
1064
{0x1FAA,0x1FA2,0x03A9}, {0x1FAB,0x1FA3,0x03A9},
1065
{0x1FAC,0x1FA4,0x03A9}, {0x1FAD,0x1FA5,0x03A9},
1066
{0x1FAE,0x1FA6,0x03A9}, {0x1FAF,0x1FA7,0x03A9},
1067
{0x1FA8,0x1FA0,0x03A9}, {0x1FA9,0x1FA1,0x03A9},
1068
{0x1FAA,0x1FA2,0x03A9}, {0x1FAB,0x1FA3,0x03A9},
1069
{0x1FAC,0x1FA4,0x03A9}, {0x1FAD,0x1FA5,0x03A9},
1070
{0x1FAE,0x1FA6,0x03A9}, {0x1FAF,0x1FA7,0x03A9},
1071
{0x1FB8,0x1FB0,0x0391}, {0x1FB9,0x1FB1,0x0391},
1072
{0x1FB2,0x1FB2,0x0391}, {0x1FBC,0x1FB3,0x0391},
1073
{0x1FB4,0x1FB4,0x0391}, {0x1FB5,0x1FB5,0x1FB5},
1074
{0x1FB6,0x1FB6,0x0391}, {0x1FB7,0x1FB7,0x0391},
1075
{0x1FB8,0x1FB0,0x0391}, {0x1FB9,0x1FB1,0x0391},
1076
{0x1FBA,0x1F70,0x0391}, {0x1FBB,0x1F71,0x1FBB},
1077
{0x1FBC,0x1FB3,0x0391}, {0x1FBD,0x1FBD,0x1FBD},
1078
{0x0399,0x1FBE,0x0399}, {0x1FBF,0x1FBF,0x1FBF},
1079
{0x1FC0,0x1FC0,0x1FC0}, {0x1FC1,0x1FC1,0x1FC1},
1080
{0x1FC2,0x1FC2,0x0397}, {0x1FCC,0x1FC3,0x0397},
1081
{0x1FC4,0x1FC4,0x0397}, {0x1FC5,0x1FC5,0x1FC5},
1082
{0x1FC6,0x1FC6,0x0397}, {0x1FC7,0x1FC7,0x0397},
1083
{0x1FC8,0x1F72,0x0395}, {0x1FC9,0x1F73,0x1FC9},
1084
{0x1FCA,0x1F74,0x0397}, {0x1FCB,0x1F75,0x1FCB},
1085
{0x1FCC,0x1FC3,0x0397}, {0x1FCD,0x1FCD,0x1FCD},
1086
{0x1FCE,0x1FCE,0x1FCE}, {0x1FCF,0x1FCF,0x1FCF},
1087
{0x1FD8,0x1FD0,0x0399}, {0x1FD9,0x1FD1,0x0399},
1088
{0x1FD2,0x1FD2,0x0399}, {0x1FD3,0x1FD3,0x1FD3},
1089
{0x1FD4,0x1FD4,0x1FD4}, {0x1FD5,0x1FD5,0x1FD5},
1090
{0x1FD6,0x1FD6,0x0399}, {0x1FD7,0x1FD7,0x0399},
1091
{0x1FD8,0x1FD0,0x0399}, {0x1FD9,0x1FD1,0x0399},
1092
{0x1FDA,0x1F76,0x0399}, {0x1FDB,0x1F77,0x1FDB},
1093
{0x1FDC,0x1FDC,0x1FDC}, {0x1FDD,0x1FDD,0x1FDD},
1094
{0x1FDE,0x1FDE,0x1FDE}, {0x1FDF,0x1FDF,0x1FDF},
1095
{0x1FE8,0x1FE0,0x03A5}, {0x1FE9,0x1FE1,0x03A5},
1096
{0x1FE2,0x1FE2,0x03A5}, {0x1FE3,0x1FE3,0x1FE3},
1097
{0x1FE4,0x1FE4,0x03A1}, {0x1FEC,0x1FE5,0x03A1},
1098
{0x1FE6,0x1FE6,0x03A5}, {0x1FE7,0x1FE7,0x03A5},
1099
{0x1FE8,0x1FE0,0x03A5}, {0x1FE9,0x1FE1,0x03A5},
1100
{0x1FEA,0x1F7A,0x03A5}, {0x1FEB,0x1F7B,0x1FEB},
1101
{0x1FEC,0x1FE5,0x03A1}, {0x1FED,0x1FED,0x1FED},
1102
{0x1FEE,0x1FEE,0x1FEE}, {0x1FEF,0x1FEF,0x1FEF},
1103
{0x1FF0,0x1FF0,0x1FF0}, {0x1FF1,0x1FF1,0x1FF1},
1104
{0x1FF2,0x1FF2,0x03A9}, {0x1FFC,0x1FF3,0x03A9},
1105
{0x1FF4,0x1FF4,0x03A9}, {0x1FF5,0x1FF5,0x1FF5},
1106
{0x1FF6,0x1FF6,0x03A9}, {0x1FF7,0x1FF7,0x03A9},
1107
{0x1FF8,0x1F78,0x039F}, {0x1FF9,0x1F79,0x1FF9},
1108
{0x1FFA,0x1F7C,0x03A9}, {0x1FFB,0x1F7D,0x1FFB},
1109
{0x1FFC,0x1FF3,0x03A9}, {0x1FFD,0x1FFD,0x1FFD},
1110
{0x1FFE,0x1FFE,0x1FFE}, {0x1FFF,0x1FFF,0x1FFF}
1113
static MY_UNICASE_INFO plane21[]={
1114
{0x2100,0x2100,0x2100}, {0x2101,0x2101,0x2101},
1115
{0x2102,0x2102,0x2102}, {0x2103,0x2103,0x2103},
1116
{0x2104,0x2104,0x2104}, {0x2105,0x2105,0x2105},
1117
{0x2106,0x2106,0x2106}, {0x2107,0x2107,0x2107},
1118
{0x2108,0x2108,0x2108}, {0x2109,0x2109,0x2109},
1119
{0x210A,0x210A,0x210A}, {0x210B,0x210B,0x210B},
1120
{0x210C,0x210C,0x210C}, {0x210D,0x210D,0x210D},
1121
{0x210E,0x210E,0x210E}, {0x210F,0x210F,0x210F},
1122
{0x2110,0x2110,0x2110}, {0x2111,0x2111,0x2111},
1123
{0x2112,0x2112,0x2112}, {0x2113,0x2113,0x2113},
1124
{0x2114,0x2114,0x2114}, {0x2115,0x2115,0x2115},
1125
{0x2116,0x2116,0x2116}, {0x2117,0x2117,0x2117},
1126
{0x2118,0x2118,0x2118}, {0x2119,0x2119,0x2119},
1127
{0x211A,0x211A,0x211A}, {0x211B,0x211B,0x211B},
1128
{0x211C,0x211C,0x211C}, {0x211D,0x211D,0x211D},
1129
{0x211E,0x211E,0x211E}, {0x211F,0x211F,0x211F},
1130
{0x2120,0x2120,0x2120}, {0x2121,0x2121,0x2121},
1131
{0x2122,0x2122,0x2122}, {0x2123,0x2123,0x2123},
1132
{0x2124,0x2124,0x2124}, {0x2125,0x2125,0x2125},
1133
{0x2126,0x03C9,0x2126}, {0x2127,0x2127,0x2127},
1134
{0x2128,0x2128,0x2128}, {0x2129,0x2129,0x2129},
1135
{0x212A,0x006B,0x212A}, {0x212B,0x00E5,0x212B},
1136
{0x212C,0x212C,0x212C}, {0x212D,0x212D,0x212D},
1137
{0x212E,0x212E,0x212E}, {0x212F,0x212F,0x212F},
1138
{0x2130,0x2130,0x2130}, {0x2131,0x2131,0x2131},
1139
{0x2132,0x2132,0x2132}, {0x2133,0x2133,0x2133},
1140
{0x2134,0x2134,0x2134}, {0x2135,0x2135,0x2135},
1141
{0x2136,0x2136,0x2136}, {0x2137,0x2137,0x2137},
1142
{0x2138,0x2138,0x2138}, {0x2139,0x2139,0x2139},
1143
{0x213A,0x213A,0x213A}, {0x213B,0x213B,0x213B},
1144
{0x213C,0x213C,0x213C}, {0x213D,0x213D,0x213D},
1145
{0x213E,0x213E,0x213E}, {0x213F,0x213F,0x213F},
1146
{0x2140,0x2140,0x2140}, {0x2141,0x2141,0x2141},
1147
{0x2142,0x2142,0x2142}, {0x2143,0x2143,0x2143},
1148
{0x2144,0x2144,0x2144}, {0x2145,0x2145,0x2145},
1149
{0x2146,0x2146,0x2146}, {0x2147,0x2147,0x2147},
1150
{0x2148,0x2148,0x2148}, {0x2149,0x2149,0x2149},
1151
{0x214A,0x214A,0x214A}, {0x214B,0x214B,0x214B},
1152
{0x214C,0x214C,0x214C}, {0x214D,0x214D,0x214D},
1153
{0x214E,0x214E,0x214E}, {0x214F,0x214F,0x214F},
1154
{0x2150,0x2150,0x2150}, {0x2151,0x2151,0x2151},
1155
{0x2152,0x2152,0x2152}, {0x2153,0x2153,0x2153},
1156
{0x2154,0x2154,0x2154}, {0x2155,0x2155,0x2155},
1157
{0x2156,0x2156,0x2156}, {0x2157,0x2157,0x2157},
1158
{0x2158,0x2158,0x2158}, {0x2159,0x2159,0x2159},
1159
{0x215A,0x215A,0x215A}, {0x215B,0x215B,0x215B},
1160
{0x215C,0x215C,0x215C}, {0x215D,0x215D,0x215D},
1161
{0x215E,0x215E,0x215E}, {0x215F,0x215F,0x215F},
1162
{0x2160,0x2170,0x2160}, {0x2161,0x2171,0x2161},
1163
{0x2162,0x2172,0x2162}, {0x2163,0x2173,0x2163},
1164
{0x2164,0x2174,0x2164}, {0x2165,0x2175,0x2165},
1165
{0x2166,0x2176,0x2166}, {0x2167,0x2177,0x2167},
1166
{0x2168,0x2178,0x2168}, {0x2169,0x2179,0x2169},
1167
{0x216A,0x217A,0x216A}, {0x216B,0x217B,0x216B},
1168
{0x216C,0x217C,0x216C}, {0x216D,0x217D,0x216D},
1169
{0x216E,0x217E,0x216E}, {0x216F,0x217F,0x216F},
1170
{0x2160,0x2170,0x2160}, {0x2161,0x2171,0x2161},
1171
{0x2162,0x2172,0x2162}, {0x2163,0x2173,0x2163},
1172
{0x2164,0x2174,0x2164}, {0x2165,0x2175,0x2165},
1173
{0x2166,0x2176,0x2166}, {0x2167,0x2177,0x2167},
1174
{0x2168,0x2178,0x2168}, {0x2169,0x2179,0x2169},
1175
{0x216A,0x217A,0x216A}, {0x216B,0x217B,0x216B},
1176
{0x216C,0x217C,0x216C}, {0x216D,0x217D,0x216D},
1177
{0x216E,0x217E,0x216E}, {0x216F,0x217F,0x216F},
1178
{0x2180,0x2180,0x2180}, {0x2181,0x2181,0x2181},
1179
{0x2182,0x2182,0x2182}, {0x2183,0x2183,0x2183},
1180
{0x2184,0x2184,0x2184}, {0x2185,0x2185,0x2185},
1181
{0x2186,0x2186,0x2186}, {0x2187,0x2187,0x2187},
1182
{0x2188,0x2188,0x2188}, {0x2189,0x2189,0x2189},
1183
{0x218A,0x218A,0x218A}, {0x218B,0x218B,0x218B},
1184
{0x218C,0x218C,0x218C}, {0x218D,0x218D,0x218D},
1185
{0x218E,0x218E,0x218E}, {0x218F,0x218F,0x218F},
1186
{0x2190,0x2190,0x2190}, {0x2191,0x2191,0x2191},
1187
{0x2192,0x2192,0x2192}, {0x2193,0x2193,0x2193},
1188
{0x2194,0x2194,0x2194}, {0x2195,0x2195,0x2195},
1189
{0x2196,0x2196,0x2196}, {0x2197,0x2197,0x2197},
1190
{0x2198,0x2198,0x2198}, {0x2199,0x2199,0x2199},
1191
{0x219A,0x219A,0x219A}, {0x219B,0x219B,0x219B},
1192
{0x219C,0x219C,0x219C}, {0x219D,0x219D,0x219D},
1193
{0x219E,0x219E,0x219E}, {0x219F,0x219F,0x219F},
1194
{0x21A0,0x21A0,0x21A0}, {0x21A1,0x21A1,0x21A1},
1195
{0x21A2,0x21A2,0x21A2}, {0x21A3,0x21A3,0x21A3},
1196
{0x21A4,0x21A4,0x21A4}, {0x21A5,0x21A5,0x21A5},
1197
{0x21A6,0x21A6,0x21A6}, {0x21A7,0x21A7,0x21A7},
1198
{0x21A8,0x21A8,0x21A8}, {0x21A9,0x21A9,0x21A9},
1199
{0x21AA,0x21AA,0x21AA}, {0x21AB,0x21AB,0x21AB},
1200
{0x21AC,0x21AC,0x21AC}, {0x21AD,0x21AD,0x21AD},
1201
{0x21AE,0x21AE,0x21AE}, {0x21AF,0x21AF,0x21AF},
1202
{0x21B0,0x21B0,0x21B0}, {0x21B1,0x21B1,0x21B1},
1203
{0x21B2,0x21B2,0x21B2}, {0x21B3,0x21B3,0x21B3},
1204
{0x21B4,0x21B4,0x21B4}, {0x21B5,0x21B5,0x21B5},
1205
{0x21B6,0x21B6,0x21B6}, {0x21B7,0x21B7,0x21B7},
1206
{0x21B8,0x21B8,0x21B8}, {0x21B9,0x21B9,0x21B9},
1207
{0x21BA,0x21BA,0x21BA}, {0x21BB,0x21BB,0x21BB},
1208
{0x21BC,0x21BC,0x21BC}, {0x21BD,0x21BD,0x21BD},
1209
{0x21BE,0x21BE,0x21BE}, {0x21BF,0x21BF,0x21BF},
1210
{0x21C0,0x21C0,0x21C0}, {0x21C1,0x21C1,0x21C1},
1211
{0x21C2,0x21C2,0x21C2}, {0x21C3,0x21C3,0x21C3},
1212
{0x21C4,0x21C4,0x21C4}, {0x21C5,0x21C5,0x21C5},
1213
{0x21C6,0x21C6,0x21C6}, {0x21C7,0x21C7,0x21C7},
1214
{0x21C8,0x21C8,0x21C8}, {0x21C9,0x21C9,0x21C9},
1215
{0x21CA,0x21CA,0x21CA}, {0x21CB,0x21CB,0x21CB},
1216
{0x21CC,0x21CC,0x21CC}, {0x21CD,0x21CD,0x21CD},
1217
{0x21CE,0x21CE,0x21CE}, {0x21CF,0x21CF,0x21CF},
1218
{0x21D0,0x21D0,0x21D0}, {0x21D1,0x21D1,0x21D1},
1219
{0x21D2,0x21D2,0x21D2}, {0x21D3,0x21D3,0x21D3},
1220
{0x21D4,0x21D4,0x21D4}, {0x21D5,0x21D5,0x21D5},
1221
{0x21D6,0x21D6,0x21D6}, {0x21D7,0x21D7,0x21D7},
1222
{0x21D8,0x21D8,0x21D8}, {0x21D9,0x21D9,0x21D9},
1223
{0x21DA,0x21DA,0x21DA}, {0x21DB,0x21DB,0x21DB},
1224
{0x21DC,0x21DC,0x21DC}, {0x21DD,0x21DD,0x21DD},
1225
{0x21DE,0x21DE,0x21DE}, {0x21DF,0x21DF,0x21DF},
1226
{0x21E0,0x21E0,0x21E0}, {0x21E1,0x21E1,0x21E1},
1227
{0x21E2,0x21E2,0x21E2}, {0x21E3,0x21E3,0x21E3},
1228
{0x21E4,0x21E4,0x21E4}, {0x21E5,0x21E5,0x21E5},
1229
{0x21E6,0x21E6,0x21E6}, {0x21E7,0x21E7,0x21E7},
1230
{0x21E8,0x21E8,0x21E8}, {0x21E9,0x21E9,0x21E9},
1231
{0x21EA,0x21EA,0x21EA}, {0x21EB,0x21EB,0x21EB},
1232
{0x21EC,0x21EC,0x21EC}, {0x21ED,0x21ED,0x21ED},
1233
{0x21EE,0x21EE,0x21EE}, {0x21EF,0x21EF,0x21EF},
1234
{0x21F0,0x21F0,0x21F0}, {0x21F1,0x21F1,0x21F1},
1235
{0x21F2,0x21F2,0x21F2}, {0x21F3,0x21F3,0x21F3},
1236
{0x21F4,0x21F4,0x21F4}, {0x21F5,0x21F5,0x21F5},
1237
{0x21F6,0x21F6,0x21F6}, {0x21F7,0x21F7,0x21F7},
1238
{0x21F8,0x21F8,0x21F8}, {0x21F9,0x21F9,0x21F9},
1239
{0x21FA,0x21FA,0x21FA}, {0x21FB,0x21FB,0x21FB},
1240
{0x21FC,0x21FC,0x21FC}, {0x21FD,0x21FD,0x21FD},
1241
{0x21FE,0x21FE,0x21FE}, {0x21FF,0x21FF,0x21FF}
1244
static MY_UNICASE_INFO plane24[]={
1245
{0x2400,0x2400,0x2400}, {0x2401,0x2401,0x2401},
1246
{0x2402,0x2402,0x2402}, {0x2403,0x2403,0x2403},
1247
{0x2404,0x2404,0x2404}, {0x2405,0x2405,0x2405},
1248
{0x2406,0x2406,0x2406}, {0x2407,0x2407,0x2407},
1249
{0x2408,0x2408,0x2408}, {0x2409,0x2409,0x2409},
1250
{0x240A,0x240A,0x240A}, {0x240B,0x240B,0x240B},
1251
{0x240C,0x240C,0x240C}, {0x240D,0x240D,0x240D},
1252
{0x240E,0x240E,0x240E}, {0x240F,0x240F,0x240F},
1253
{0x2410,0x2410,0x2410}, {0x2411,0x2411,0x2411},
1254
{0x2412,0x2412,0x2412}, {0x2413,0x2413,0x2413},
1255
{0x2414,0x2414,0x2414}, {0x2415,0x2415,0x2415},
1256
{0x2416,0x2416,0x2416}, {0x2417,0x2417,0x2417},
1257
{0x2418,0x2418,0x2418}, {0x2419,0x2419,0x2419},
1258
{0x241A,0x241A,0x241A}, {0x241B,0x241B,0x241B},
1259
{0x241C,0x241C,0x241C}, {0x241D,0x241D,0x241D},
1260
{0x241E,0x241E,0x241E}, {0x241F,0x241F,0x241F},
1261
{0x2420,0x2420,0x2420}, {0x2421,0x2421,0x2421},
1262
{0x2422,0x2422,0x2422}, {0x2423,0x2423,0x2423},
1263
{0x2424,0x2424,0x2424}, {0x2425,0x2425,0x2425},
1264
{0x2426,0x2426,0x2426}, {0x2427,0x2427,0x2427},
1265
{0x2428,0x2428,0x2428}, {0x2429,0x2429,0x2429},
1266
{0x242A,0x242A,0x242A}, {0x242B,0x242B,0x242B},
1267
{0x242C,0x242C,0x242C}, {0x242D,0x242D,0x242D},
1268
{0x242E,0x242E,0x242E}, {0x242F,0x242F,0x242F},
1269
{0x2430,0x2430,0x2430}, {0x2431,0x2431,0x2431},
1270
{0x2432,0x2432,0x2432}, {0x2433,0x2433,0x2433},
1271
{0x2434,0x2434,0x2434}, {0x2435,0x2435,0x2435},
1272
{0x2436,0x2436,0x2436}, {0x2437,0x2437,0x2437},
1273
{0x2438,0x2438,0x2438}, {0x2439,0x2439,0x2439},
1274
{0x243A,0x243A,0x243A}, {0x243B,0x243B,0x243B},
1275
{0x243C,0x243C,0x243C}, {0x243D,0x243D,0x243D},
1276
{0x243E,0x243E,0x243E}, {0x243F,0x243F,0x243F},
1277
{0x2440,0x2440,0x2440}, {0x2441,0x2441,0x2441},
1278
{0x2442,0x2442,0x2442}, {0x2443,0x2443,0x2443},
1279
{0x2444,0x2444,0x2444}, {0x2445,0x2445,0x2445},
1280
{0x2446,0x2446,0x2446}, {0x2447,0x2447,0x2447},
1281
{0x2448,0x2448,0x2448}, {0x2449,0x2449,0x2449},
1282
{0x244A,0x244A,0x244A}, {0x244B,0x244B,0x244B},
1283
{0x244C,0x244C,0x244C}, {0x244D,0x244D,0x244D},
1284
{0x244E,0x244E,0x244E}, {0x244F,0x244F,0x244F},
1285
{0x2450,0x2450,0x2450}, {0x2451,0x2451,0x2451},
1286
{0x2452,0x2452,0x2452}, {0x2453,0x2453,0x2453},
1287
{0x2454,0x2454,0x2454}, {0x2455,0x2455,0x2455},
1288
{0x2456,0x2456,0x2456}, {0x2457,0x2457,0x2457},
1289
{0x2458,0x2458,0x2458}, {0x2459,0x2459,0x2459},
1290
{0x245A,0x245A,0x245A}, {0x245B,0x245B,0x245B},
1291
{0x245C,0x245C,0x245C}, {0x245D,0x245D,0x245D},
1292
{0x245E,0x245E,0x245E}, {0x245F,0x245F,0x245F},
1293
{0x2460,0x2460,0x2460}, {0x2461,0x2461,0x2461},
1294
{0x2462,0x2462,0x2462}, {0x2463,0x2463,0x2463},
1295
{0x2464,0x2464,0x2464}, {0x2465,0x2465,0x2465},
1296
{0x2466,0x2466,0x2466}, {0x2467,0x2467,0x2467},
1297
{0x2468,0x2468,0x2468}, {0x2469,0x2469,0x2469},
1298
{0x246A,0x246A,0x246A}, {0x246B,0x246B,0x246B},
1299
{0x246C,0x246C,0x246C}, {0x246D,0x246D,0x246D},
1300
{0x246E,0x246E,0x246E}, {0x246F,0x246F,0x246F},
1301
{0x2470,0x2470,0x2470}, {0x2471,0x2471,0x2471},
1302
{0x2472,0x2472,0x2472}, {0x2473,0x2473,0x2473},
1303
{0x2474,0x2474,0x2474}, {0x2475,0x2475,0x2475},
1304
{0x2476,0x2476,0x2476}, {0x2477,0x2477,0x2477},
1305
{0x2478,0x2478,0x2478}, {0x2479,0x2479,0x2479},
1306
{0x247A,0x247A,0x247A}, {0x247B,0x247B,0x247B},
1307
{0x247C,0x247C,0x247C}, {0x247D,0x247D,0x247D},
1308
{0x247E,0x247E,0x247E}, {0x247F,0x247F,0x247F},
1309
{0x2480,0x2480,0x2480}, {0x2481,0x2481,0x2481},
1310
{0x2482,0x2482,0x2482}, {0x2483,0x2483,0x2483},
1311
{0x2484,0x2484,0x2484}, {0x2485,0x2485,0x2485},
1312
{0x2486,0x2486,0x2486}, {0x2487,0x2487,0x2487},
1313
{0x2488,0x2488,0x2488}, {0x2489,0x2489,0x2489},
1314
{0x248A,0x248A,0x248A}, {0x248B,0x248B,0x248B},
1315
{0x248C,0x248C,0x248C}, {0x248D,0x248D,0x248D},
1316
{0x248E,0x248E,0x248E}, {0x248F,0x248F,0x248F},
1317
{0x2490,0x2490,0x2490}, {0x2491,0x2491,0x2491},
1318
{0x2492,0x2492,0x2492}, {0x2493,0x2493,0x2493},
1319
{0x2494,0x2494,0x2494}, {0x2495,0x2495,0x2495},
1320
{0x2496,0x2496,0x2496}, {0x2497,0x2497,0x2497},
1321
{0x2498,0x2498,0x2498}, {0x2499,0x2499,0x2499},
1322
{0x249A,0x249A,0x249A}, {0x249B,0x249B,0x249B},
1323
{0x249C,0x249C,0x249C}, {0x249D,0x249D,0x249D},
1324
{0x249E,0x249E,0x249E}, {0x249F,0x249F,0x249F},
1325
{0x24A0,0x24A0,0x24A0}, {0x24A1,0x24A1,0x24A1},
1326
{0x24A2,0x24A2,0x24A2}, {0x24A3,0x24A3,0x24A3},
1327
{0x24A4,0x24A4,0x24A4}, {0x24A5,0x24A5,0x24A5},
1328
{0x24A6,0x24A6,0x24A6}, {0x24A7,0x24A7,0x24A7},
1329
{0x24A8,0x24A8,0x24A8}, {0x24A9,0x24A9,0x24A9},
1330
{0x24AA,0x24AA,0x24AA}, {0x24AB,0x24AB,0x24AB},
1331
{0x24AC,0x24AC,0x24AC}, {0x24AD,0x24AD,0x24AD},
1332
{0x24AE,0x24AE,0x24AE}, {0x24AF,0x24AF,0x24AF},
1333
{0x24B0,0x24B0,0x24B0}, {0x24B1,0x24B1,0x24B1},
1334
{0x24B2,0x24B2,0x24B2}, {0x24B3,0x24B3,0x24B3},
1335
{0x24B4,0x24B4,0x24B4}, {0x24B5,0x24B5,0x24B5},
1336
{0x24B6,0x24D0,0x24B6}, {0x24B7,0x24D1,0x24B7},
1337
{0x24B8,0x24D2,0x24B8}, {0x24B9,0x24D3,0x24B9},
1338
{0x24BA,0x24D4,0x24BA}, {0x24BB,0x24D5,0x24BB},
1339
{0x24BC,0x24D6,0x24BC}, {0x24BD,0x24D7,0x24BD},
1340
{0x24BE,0x24D8,0x24BE}, {0x24BF,0x24D9,0x24BF},
1341
{0x24C0,0x24DA,0x24C0}, {0x24C1,0x24DB,0x24C1},
1342
{0x24C2,0x24DC,0x24C2}, {0x24C3,0x24DD,0x24C3},
1343
{0x24C4,0x24DE,0x24C4}, {0x24C5,0x24DF,0x24C5},
1344
{0x24C6,0x24E0,0x24C6}, {0x24C7,0x24E1,0x24C7},
1345
{0x24C8,0x24E2,0x24C8}, {0x24C9,0x24E3,0x24C9},
1346
{0x24CA,0x24E4,0x24CA}, {0x24CB,0x24E5,0x24CB},
1347
{0x24CC,0x24E6,0x24CC}, {0x24CD,0x24E7,0x24CD},
1348
{0x24CE,0x24E8,0x24CE}, {0x24CF,0x24E9,0x24CF},
1349
{0x24B6,0x24D0,0x24B6}, {0x24B7,0x24D1,0x24B7},
1350
{0x24B8,0x24D2,0x24B8}, {0x24B9,0x24D3,0x24B9},
1351
{0x24BA,0x24D4,0x24BA}, {0x24BB,0x24D5,0x24BB},
1352
{0x24BC,0x24D6,0x24BC}, {0x24BD,0x24D7,0x24BD},
1353
{0x24BE,0x24D8,0x24BE}, {0x24BF,0x24D9,0x24BF},
1354
{0x24C0,0x24DA,0x24C0}, {0x24C1,0x24DB,0x24C1},
1355
{0x24C2,0x24DC,0x24C2}, {0x24C3,0x24DD,0x24C3},
1356
{0x24C4,0x24DE,0x24C4}, {0x24C5,0x24DF,0x24C5},
1357
{0x24C6,0x24E0,0x24C6}, {0x24C7,0x24E1,0x24C7},
1358
{0x24C8,0x24E2,0x24C8}, {0x24C9,0x24E3,0x24C9},
1359
{0x24CA,0x24E4,0x24CA}, {0x24CB,0x24E5,0x24CB},
1360
{0x24CC,0x24E6,0x24CC}, {0x24CD,0x24E7,0x24CD},
1361
{0x24CE,0x24E8,0x24CE}, {0x24CF,0x24E9,0x24CF},
1362
{0x24EA,0x24EA,0x24EA}, {0x24EB,0x24EB,0x24EB},
1363
{0x24EC,0x24EC,0x24EC}, {0x24ED,0x24ED,0x24ED},
1364
{0x24EE,0x24EE,0x24EE}, {0x24EF,0x24EF,0x24EF},
1365
{0x24F0,0x24F0,0x24F0}, {0x24F1,0x24F1,0x24F1},
1366
{0x24F2,0x24F2,0x24F2}, {0x24F3,0x24F3,0x24F3},
1367
{0x24F4,0x24F4,0x24F4}, {0x24F5,0x24F5,0x24F5},
1368
{0x24F6,0x24F6,0x24F6}, {0x24F7,0x24F7,0x24F7},
1369
{0x24F8,0x24F8,0x24F8}, {0x24F9,0x24F9,0x24F9},
1370
{0x24FA,0x24FA,0x24FA}, {0x24FB,0x24FB,0x24FB},
1371
{0x24FC,0x24FC,0x24FC}, {0x24FD,0x24FD,0x24FD},
1372
{0x24FE,0x24FE,0x24FE}, {0x24FF,0x24FF,0x24FF}
1375
static MY_UNICASE_INFO planeFF[]={
1376
{0xFF00,0xFF00,0xFF00}, {0xFF01,0xFF01,0xFF01},
1377
{0xFF02,0xFF02,0xFF02}, {0xFF03,0xFF03,0xFF03},
1378
{0xFF04,0xFF04,0xFF04}, {0xFF05,0xFF05,0xFF05},
1379
{0xFF06,0xFF06,0xFF06}, {0xFF07,0xFF07,0xFF07},
1380
{0xFF08,0xFF08,0xFF08}, {0xFF09,0xFF09,0xFF09},
1381
{0xFF0A,0xFF0A,0xFF0A}, {0xFF0B,0xFF0B,0xFF0B},
1382
{0xFF0C,0xFF0C,0xFF0C}, {0xFF0D,0xFF0D,0xFF0D},
1383
{0xFF0E,0xFF0E,0xFF0E}, {0xFF0F,0xFF0F,0xFF0F},
1384
{0xFF10,0xFF10,0xFF10}, {0xFF11,0xFF11,0xFF11},
1385
{0xFF12,0xFF12,0xFF12}, {0xFF13,0xFF13,0xFF13},
1386
{0xFF14,0xFF14,0xFF14}, {0xFF15,0xFF15,0xFF15},
1387
{0xFF16,0xFF16,0xFF16}, {0xFF17,0xFF17,0xFF17},
1388
{0xFF18,0xFF18,0xFF18}, {0xFF19,0xFF19,0xFF19},
1389
{0xFF1A,0xFF1A,0xFF1A}, {0xFF1B,0xFF1B,0xFF1B},
1390
{0xFF1C,0xFF1C,0xFF1C}, {0xFF1D,0xFF1D,0xFF1D},
1391
{0xFF1E,0xFF1E,0xFF1E}, {0xFF1F,0xFF1F,0xFF1F},
1392
{0xFF20,0xFF20,0xFF20}, {0xFF21,0xFF41,0xFF21},
1393
{0xFF22,0xFF42,0xFF22}, {0xFF23,0xFF43,0xFF23},
1394
{0xFF24,0xFF44,0xFF24}, {0xFF25,0xFF45,0xFF25},
1395
{0xFF26,0xFF46,0xFF26}, {0xFF27,0xFF47,0xFF27},
1396
{0xFF28,0xFF48,0xFF28}, {0xFF29,0xFF49,0xFF29},
1397
{0xFF2A,0xFF4A,0xFF2A}, {0xFF2B,0xFF4B,0xFF2B},
1398
{0xFF2C,0xFF4C,0xFF2C}, {0xFF2D,0xFF4D,0xFF2D},
1399
{0xFF2E,0xFF4E,0xFF2E}, {0xFF2F,0xFF4F,0xFF2F},
1400
{0xFF30,0xFF50,0xFF30}, {0xFF31,0xFF51,0xFF31},
1401
{0xFF32,0xFF52,0xFF32}, {0xFF33,0xFF53,0xFF33},
1402
{0xFF34,0xFF54,0xFF34}, {0xFF35,0xFF55,0xFF35},
1403
{0xFF36,0xFF56,0xFF36}, {0xFF37,0xFF57,0xFF37},
1404
{0xFF38,0xFF58,0xFF38}, {0xFF39,0xFF59,0xFF39},
1405
{0xFF3A,0xFF5A,0xFF3A}, {0xFF3B,0xFF3B,0xFF3B},
1406
{0xFF3C,0xFF3C,0xFF3C}, {0xFF3D,0xFF3D,0xFF3D},
1407
{0xFF3E,0xFF3E,0xFF3E}, {0xFF3F,0xFF3F,0xFF3F},
1408
{0xFF40,0xFF40,0xFF40}, {0xFF21,0xFF41,0xFF21},
1409
{0xFF22,0xFF42,0xFF22}, {0xFF23,0xFF43,0xFF23},
1410
{0xFF24,0xFF44,0xFF24}, {0xFF25,0xFF45,0xFF25},
1411
{0xFF26,0xFF46,0xFF26}, {0xFF27,0xFF47,0xFF27},
1412
{0xFF28,0xFF48,0xFF28}, {0xFF29,0xFF49,0xFF29},
1413
{0xFF2A,0xFF4A,0xFF2A}, {0xFF2B,0xFF4B,0xFF2B},
1414
{0xFF2C,0xFF4C,0xFF2C}, {0xFF2D,0xFF4D,0xFF2D},
1415
{0xFF2E,0xFF4E,0xFF2E}, {0xFF2F,0xFF4F,0xFF2F},
1416
{0xFF30,0xFF50,0xFF30}, {0xFF31,0xFF51,0xFF31},
1417
{0xFF32,0xFF52,0xFF32}, {0xFF33,0xFF53,0xFF33},
1418
{0xFF34,0xFF54,0xFF34}, {0xFF35,0xFF55,0xFF35},
1419
{0xFF36,0xFF56,0xFF36}, {0xFF37,0xFF57,0xFF37},
1420
{0xFF38,0xFF58,0xFF38}, {0xFF39,0xFF59,0xFF39},
1421
{0xFF3A,0xFF5A,0xFF3A}, {0xFF5B,0xFF5B,0xFF5B},
1422
{0xFF5C,0xFF5C,0xFF5C}, {0xFF5D,0xFF5D,0xFF5D},
1423
{0xFF5E,0xFF5E,0xFF5E}, {0xFF5F,0xFF5F,0xFF5F},
1424
{0xFF60,0xFF60,0xFF60}, {0xFF61,0xFF61,0xFF61},
1425
{0xFF62,0xFF62,0xFF62}, {0xFF63,0xFF63,0xFF63},
1426
{0xFF64,0xFF64,0xFF64}, {0xFF65,0xFF65,0xFF65},
1427
{0xFF66,0xFF66,0xFF66}, {0xFF67,0xFF67,0xFF67},
1428
{0xFF68,0xFF68,0xFF68}, {0xFF69,0xFF69,0xFF69},
1429
{0xFF6A,0xFF6A,0xFF6A}, {0xFF6B,0xFF6B,0xFF6B},
1430
{0xFF6C,0xFF6C,0xFF6C}, {0xFF6D,0xFF6D,0xFF6D},
1431
{0xFF6E,0xFF6E,0xFF6E}, {0xFF6F,0xFF6F,0xFF6F},
1432
{0xFF70,0xFF70,0xFF70}, {0xFF71,0xFF71,0xFF71},
1433
{0xFF72,0xFF72,0xFF72}, {0xFF73,0xFF73,0xFF73},
1434
{0xFF74,0xFF74,0xFF74}, {0xFF75,0xFF75,0xFF75},
1435
{0xFF76,0xFF76,0xFF76}, {0xFF77,0xFF77,0xFF77},
1436
{0xFF78,0xFF78,0xFF78}, {0xFF79,0xFF79,0xFF79},
1437
{0xFF7A,0xFF7A,0xFF7A}, {0xFF7B,0xFF7B,0xFF7B},
1438
{0xFF7C,0xFF7C,0xFF7C}, {0xFF7D,0xFF7D,0xFF7D},
1439
{0xFF7E,0xFF7E,0xFF7E}, {0xFF7F,0xFF7F,0xFF7F},
1440
{0xFF80,0xFF80,0xFF80}, {0xFF81,0xFF81,0xFF81},
1441
{0xFF82,0xFF82,0xFF82}, {0xFF83,0xFF83,0xFF83},
1442
{0xFF84,0xFF84,0xFF84}, {0xFF85,0xFF85,0xFF85},
1443
{0xFF86,0xFF86,0xFF86}, {0xFF87,0xFF87,0xFF87},
1444
{0xFF88,0xFF88,0xFF88}, {0xFF89,0xFF89,0xFF89},
1445
{0xFF8A,0xFF8A,0xFF8A}, {0xFF8B,0xFF8B,0xFF8B},
1446
{0xFF8C,0xFF8C,0xFF8C}, {0xFF8D,0xFF8D,0xFF8D},
1447
{0xFF8E,0xFF8E,0xFF8E}, {0xFF8F,0xFF8F,0xFF8F},
1448
{0xFF90,0xFF90,0xFF90}, {0xFF91,0xFF91,0xFF91},
1449
{0xFF92,0xFF92,0xFF92}, {0xFF93,0xFF93,0xFF93},
1450
{0xFF94,0xFF94,0xFF94}, {0xFF95,0xFF95,0xFF95},
1451
{0xFF96,0xFF96,0xFF96}, {0xFF97,0xFF97,0xFF97},
1452
{0xFF98,0xFF98,0xFF98}, {0xFF99,0xFF99,0xFF99},
1453
{0xFF9A,0xFF9A,0xFF9A}, {0xFF9B,0xFF9B,0xFF9B},
1454
{0xFF9C,0xFF9C,0xFF9C}, {0xFF9D,0xFF9D,0xFF9D},
1455
{0xFF9E,0xFF9E,0xFF9E}, {0xFF9F,0xFF9F,0xFF9F},
1456
{0xFFA0,0xFFA0,0xFFA0}, {0xFFA1,0xFFA1,0xFFA1},
1457
{0xFFA2,0xFFA2,0xFFA2}, {0xFFA3,0xFFA3,0xFFA3},
1458
{0xFFA4,0xFFA4,0xFFA4}, {0xFFA5,0xFFA5,0xFFA5},
1459
{0xFFA6,0xFFA6,0xFFA6}, {0xFFA7,0xFFA7,0xFFA7},
1460
{0xFFA8,0xFFA8,0xFFA8}, {0xFFA9,0xFFA9,0xFFA9},
1461
{0xFFAA,0xFFAA,0xFFAA}, {0xFFAB,0xFFAB,0xFFAB},
1462
{0xFFAC,0xFFAC,0xFFAC}, {0xFFAD,0xFFAD,0xFFAD},
1463
{0xFFAE,0xFFAE,0xFFAE}, {0xFFAF,0xFFAF,0xFFAF},
1464
{0xFFB0,0xFFB0,0xFFB0}, {0xFFB1,0xFFB1,0xFFB1},
1465
{0xFFB2,0xFFB2,0xFFB2}, {0xFFB3,0xFFB3,0xFFB3},
1466
{0xFFB4,0xFFB4,0xFFB4}, {0xFFB5,0xFFB5,0xFFB5},
1467
{0xFFB6,0xFFB6,0xFFB6}, {0xFFB7,0xFFB7,0xFFB7},
1468
{0xFFB8,0xFFB8,0xFFB8}, {0xFFB9,0xFFB9,0xFFB9},
1469
{0xFFBA,0xFFBA,0xFFBA}, {0xFFBB,0xFFBB,0xFFBB},
1470
{0xFFBC,0xFFBC,0xFFBC}, {0xFFBD,0xFFBD,0xFFBD},
1471
{0xFFBE,0xFFBE,0xFFBE}, {0xFFBF,0xFFBF,0xFFBF},
1472
{0xFFC0,0xFFC0,0xFFC0}, {0xFFC1,0xFFC1,0xFFC1},
1473
{0xFFC2,0xFFC2,0xFFC2}, {0xFFC3,0xFFC3,0xFFC3},
1474
{0xFFC4,0xFFC4,0xFFC4}, {0xFFC5,0xFFC5,0xFFC5},
1475
{0xFFC6,0xFFC6,0xFFC6}, {0xFFC7,0xFFC7,0xFFC7},
1476
{0xFFC8,0xFFC8,0xFFC8}, {0xFFC9,0xFFC9,0xFFC9},
1477
{0xFFCA,0xFFCA,0xFFCA}, {0xFFCB,0xFFCB,0xFFCB},
1478
{0xFFCC,0xFFCC,0xFFCC}, {0xFFCD,0xFFCD,0xFFCD},
1479
{0xFFCE,0xFFCE,0xFFCE}, {0xFFCF,0xFFCF,0xFFCF},
1480
{0xFFD0,0xFFD0,0xFFD0}, {0xFFD1,0xFFD1,0xFFD1},
1481
{0xFFD2,0xFFD2,0xFFD2}, {0xFFD3,0xFFD3,0xFFD3},
1482
{0xFFD4,0xFFD4,0xFFD4}, {0xFFD5,0xFFD5,0xFFD5},
1483
{0xFFD6,0xFFD6,0xFFD6}, {0xFFD7,0xFFD7,0xFFD7},
1484
{0xFFD8,0xFFD8,0xFFD8}, {0xFFD9,0xFFD9,0xFFD9},
1485
{0xFFDA,0xFFDA,0xFFDA}, {0xFFDB,0xFFDB,0xFFDB},
1486
{0xFFDC,0xFFDC,0xFFDC}, {0xFFDD,0xFFDD,0xFFDD},
1487
{0xFFDE,0xFFDE,0xFFDE}, {0xFFDF,0xFFDF,0xFFDF},
1488
{0xFFE0,0xFFE0,0xFFE0}, {0xFFE1,0xFFE1,0xFFE1},
1489
{0xFFE2,0xFFE2,0xFFE2}, {0xFFE3,0xFFE3,0xFFE3},
1490
{0xFFE4,0xFFE4,0xFFE4}, {0xFFE5,0xFFE5,0xFFE5},
1491
{0xFFE6,0xFFE6,0xFFE6}, {0xFFE7,0xFFE7,0xFFE7},
1492
{0xFFE8,0xFFE8,0xFFE8}, {0xFFE9,0xFFE9,0xFFE9},
1493
{0xFFEA,0xFFEA,0xFFEA}, {0xFFEB,0xFFEB,0xFFEB},
1494
{0xFFEC,0xFFEC,0xFFEC}, {0xFFED,0xFFED,0xFFED},
1495
{0xFFEE,0xFFEE,0xFFEE}, {0xFFEF,0xFFEF,0xFFEF},
1496
{0xFFF0,0xFFF0,0xFFF0}, {0xFFF1,0xFFF1,0xFFF1},
1497
{0xFFF2,0xFFF2,0xFFF2}, {0xFFF3,0xFFF3,0xFFF3},
1498
{0xFFF4,0xFFF4,0xFFF4}, {0xFFF5,0xFFF5,0xFFF5},
1499
{0xFFF6,0xFFF6,0xFFF6}, {0xFFF7,0xFFF7,0xFFF7},
1500
{0xFFF8,0xFFF8,0xFFF8}, {0xFFF9,0xFFF9,0xFFF9},
1501
{0xFFFA,0xFFFA,0xFFFA}, {0xFFFB,0xFFFB,0xFFFB},
1502
{0xFFFC,0xFFFC,0xFFFC}, {0xFFFD,0xFFFD,0xFFFD},
1503
{0xFFFE,0xFFFE,0xFFFE}, {0xFFFF,0xFFFF,0xFFFF}
1506
MY_UNICASE_INFO *my_unicase_default[256]={
1507
plane00, plane01, plane02, plane03, plane04, plane05, NULL, NULL,
1508
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1509
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1510
NULL, NULL, NULL, NULL, NULL, NULL, plane1E, plane1F,
1511
NULL, plane21, NULL, NULL, plane24, NULL, NULL, NULL,
1512
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1513
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1514
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1515
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1516
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1517
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1518
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1519
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1520
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1521
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1522
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1523
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1524
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1525
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1526
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1527
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1528
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1529
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1530
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1531
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1532
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1533
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1534
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1535
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1536
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1537
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1538
NULL, NULL, NULL, NULL, NULL, NULL, NULL, planeFF
1544
Turkish lower/upper mapping:
1545
1. LOWER(0x0049 LATIN CAPITAL LETTER I) ->
1546
0x0131 LATIN SMALL LETTER DOTLESS I
1547
2. UPPER(0x0069 LATIN SMALL LETTER I) ->
1548
0x0130 LATIN CAPITAL LETTER I WITH DOT ABOVE
1551
static MY_UNICASE_INFO turk00[]=
1553
{0x0000,0x0000,0x0000}, {0x0001,0x0001,0x0001},
1554
{0x0002,0x0002,0x0002}, {0x0003,0x0003,0x0003},
1555
{0x0004,0x0004,0x0004}, {0x0005,0x0005,0x0005},
1556
{0x0006,0x0006,0x0006}, {0x0007,0x0007,0x0007},
1557
{0x0008,0x0008,0x0008}, {0x0009,0x0009,0x0009},
1558
{0x000A,0x000A,0x000A}, {0x000B,0x000B,0x000B},
1559
{0x000C,0x000C,0x000C}, {0x000D,0x000D,0x000D},
1560
{0x000E,0x000E,0x000E}, {0x000F,0x000F,0x000F},
1561
{0x0010,0x0010,0x0010}, {0x0011,0x0011,0x0011},
1562
{0x0012,0x0012,0x0012}, {0x0013,0x0013,0x0013},
1563
{0x0014,0x0014,0x0014}, {0x0015,0x0015,0x0015},
1564
{0x0016,0x0016,0x0016}, {0x0017,0x0017,0x0017},
1565
{0x0018,0x0018,0x0018}, {0x0019,0x0019,0x0019},
1566
{0x001A,0x001A,0x001A}, {0x001B,0x001B,0x001B},
1567
{0x001C,0x001C,0x001C}, {0x001D,0x001D,0x001D},
1568
{0x001E,0x001E,0x001E}, {0x001F,0x001F,0x001F},
1569
{0x0020,0x0020,0x0020}, {0x0021,0x0021,0x0021},
1570
{0x0022,0x0022,0x0022}, {0x0023,0x0023,0x0023},
1571
{0x0024,0x0024,0x0024}, {0x0025,0x0025,0x0025},
1572
{0x0026,0x0026,0x0026}, {0x0027,0x0027,0x0027},
1573
{0x0028,0x0028,0x0028}, {0x0029,0x0029,0x0029},
1574
{0x002A,0x002A,0x002A}, {0x002B,0x002B,0x002B},
1575
{0x002C,0x002C,0x002C}, {0x002D,0x002D,0x002D},
1576
{0x002E,0x002E,0x002E}, {0x002F,0x002F,0x002F},
1577
{0x0030,0x0030,0x0030}, {0x0031,0x0031,0x0031},
1578
{0x0032,0x0032,0x0032}, {0x0033,0x0033,0x0033},
1579
{0x0034,0x0034,0x0034}, {0x0035,0x0035,0x0035},
1580
{0x0036,0x0036,0x0036}, {0x0037,0x0037,0x0037},
1581
{0x0038,0x0038,0x0038}, {0x0039,0x0039,0x0039},
1582
{0x003A,0x003A,0x003A}, {0x003B,0x003B,0x003B},
1583
{0x003C,0x003C,0x003C}, {0x003D,0x003D,0x003D},
1584
{0x003E,0x003E,0x003E}, {0x003F,0x003F,0x003F},
1585
{0x0040,0x0040,0x0040}, {0x0041,0x0061,0x0041},
1586
{0x0042,0x0062,0x0042}, {0x0043,0x0063,0x0043},
1587
{0x0044,0x0064,0x0044}, {0x0045,0x0065,0x0045},
1588
{0x0046,0x0066,0x0046}, {0x0047,0x0067,0x0047},
1589
{0x0048,0x0068,0x0048}, {0x0049,0x0131,0x0049},
1590
{0x004A,0x006A,0x004A}, {0x004B,0x006B,0x004B},
1591
{0x004C,0x006C,0x004C}, {0x004D,0x006D,0x004D},
1592
{0x004E,0x006E,0x004E}, {0x004F,0x006F,0x004F},
1593
{0x0050,0x0070,0x0050}, {0x0051,0x0071,0x0051},
1594
{0x0052,0x0072,0x0052}, {0x0053,0x0073,0x0053},
1595
{0x0054,0x0074,0x0054}, {0x0055,0x0075,0x0055},
1596
{0x0056,0x0076,0x0056}, {0x0057,0x0077,0x0057},
1597
{0x0058,0x0078,0x0058}, {0x0059,0x0079,0x0059},
1598
{0x005A,0x007A,0x005A}, {0x005B,0x005B,0x005B},
1599
{0x005C,0x005C,0x005C}, {0x005D,0x005D,0x005D},
1600
{0x005E,0x005E,0x005E}, {0x005F,0x005F,0x005F},
1601
{0x0060,0x0060,0x0060}, {0x0041,0x0061,0x0041},
1602
{0x0042,0x0062,0x0042}, {0x0043,0x0063,0x0043},
1603
{0x0044,0x0064,0x0044}, {0x0045,0x0065,0x0045},
1604
{0x0046,0x0066,0x0046}, {0x0047,0x0067,0x0047},
1605
{0x0048,0x0068,0x0048}, {0x0130,0x0069,0x0049},
1606
{0x004A,0x006A,0x004A}, {0x004B,0x006B,0x004B},
1607
{0x004C,0x006C,0x004C}, {0x004D,0x006D,0x004D},
1608
{0x004E,0x006E,0x004E}, {0x004F,0x006F,0x004F},
1609
{0x0050,0x0070,0x0050}, {0x0051,0x0071,0x0051},
1610
{0x0052,0x0072,0x0052}, {0x0053,0x0073,0x0053},
1611
{0x0054,0x0074,0x0054}, {0x0055,0x0075,0x0055},
1612
{0x0056,0x0076,0x0056}, {0x0057,0x0077,0x0057},
1613
{0x0058,0x0078,0x0058}, {0x0059,0x0079,0x0059},
1614
{0x005A,0x007A,0x005A}, {0x007B,0x007B,0x007B},
1615
{0x007C,0x007C,0x007C}, {0x007D,0x007D,0x007D},
1616
{0x007E,0x007E,0x007E}, {0x007F,0x007F,0x007F},
1617
{0x0080,0x0080,0x0080}, {0x0081,0x0081,0x0081},
1618
{0x0082,0x0082,0x0082}, {0x0083,0x0083,0x0083},
1619
{0x0084,0x0084,0x0084}, {0x0085,0x0085,0x0085},
1620
{0x0086,0x0086,0x0086}, {0x0087,0x0087,0x0087},
1621
{0x0088,0x0088,0x0088}, {0x0089,0x0089,0x0089},
1622
{0x008A,0x008A,0x008A}, {0x008B,0x008B,0x008B},
1623
{0x008C,0x008C,0x008C}, {0x008D,0x008D,0x008D},
1624
{0x008E,0x008E,0x008E}, {0x008F,0x008F,0x008F},
1625
{0x0090,0x0090,0x0090}, {0x0091,0x0091,0x0091},
1626
{0x0092,0x0092,0x0092}, {0x0093,0x0093,0x0093},
1627
{0x0094,0x0094,0x0094}, {0x0095,0x0095,0x0095},
1628
{0x0096,0x0096,0x0096}, {0x0097,0x0097,0x0097},
1629
{0x0098,0x0098,0x0098}, {0x0099,0x0099,0x0099},
1630
{0x009A,0x009A,0x009A}, {0x009B,0x009B,0x009B},
1631
{0x009C,0x009C,0x009C}, {0x009D,0x009D,0x009D},
1632
{0x009E,0x009E,0x009E}, {0x009F,0x009F,0x009F},
1633
{0x00A0,0x00A0,0x00A0}, {0x00A1,0x00A1,0x00A1},
1634
{0x00A2,0x00A2,0x00A2}, {0x00A3,0x00A3,0x00A3},
1635
{0x00A4,0x00A4,0x00A4}, {0x00A5,0x00A5,0x00A5},
1636
{0x00A6,0x00A6,0x00A6}, {0x00A7,0x00A7,0x00A7},
1637
{0x00A8,0x00A8,0x00A8}, {0x00A9,0x00A9,0x00A9},
1638
{0x00AA,0x00AA,0x00AA}, {0x00AB,0x00AB,0x00AB},
1639
{0x00AC,0x00AC,0x00AC}, {0x00AD,0x00AD,0x00AD},
1640
{0x00AE,0x00AE,0x00AE}, {0x00AF,0x00AF,0x00AF},
1641
{0x00B0,0x00B0,0x00B0}, {0x00B1,0x00B1,0x00B1},
1642
{0x00B2,0x00B2,0x00B2}, {0x00B3,0x00B3,0x00B3},
1643
{0x00B4,0x00B4,0x00B4}, {0x039C,0x00B5,0x039C},
1644
{0x00B6,0x00B6,0x00B6}, {0x00B7,0x00B7,0x00B7},
1645
{0x00B8,0x00B8,0x00B8}, {0x00B9,0x00B9,0x00B9},
1646
{0x00BA,0x00BA,0x00BA}, {0x00BB,0x00BB,0x00BB},
1647
{0x00BC,0x00BC,0x00BC}, {0x00BD,0x00BD,0x00BD},
1648
{0x00BE,0x00BE,0x00BE}, {0x00BF,0x00BF,0x00BF},
1649
{0x00C0,0x00E0,0x0041}, {0x00C1,0x00E1,0x0041},
1650
{0x00C2,0x00E2,0x0041}, {0x00C3,0x00E3,0x0041},
1651
{0x00C4,0x00E4,0x0041}, {0x00C5,0x00E5,0x0041},
1652
{0x00C6,0x00E6,0x00C6}, {0x00C7,0x00E7,0x0043},
1653
{0x00C8,0x00E8,0x0045}, {0x00C9,0x00E9,0x0045},
1654
{0x00CA,0x00EA,0x0045}, {0x00CB,0x00EB,0x0045},
1655
{0x00CC,0x00EC,0x0049}, {0x00CD,0x00ED,0x0049},
1656
{0x00CE,0x00EE,0x0049}, {0x00CF,0x00EF,0x0049},
1657
{0x00D0,0x00F0,0x00D0}, {0x00D1,0x00F1,0x004E},
1658
{0x00D2,0x00F2,0x004F}, {0x00D3,0x00F3,0x004F},
1659
{0x00D4,0x00F4,0x004F}, {0x00D5,0x00F5,0x004F},
1660
{0x00D6,0x00F6,0x004F}, {0x00D7,0x00D7,0x00D7},
1661
{0x00D8,0x00F8,0x00D8}, {0x00D9,0x00F9,0x0055},
1662
{0x00DA,0x00FA,0x0055}, {0x00DB,0x00FB,0x0055},
1663
{0x00DC,0x00FC,0x0055}, {0x00DD,0x00FD,0x0059},
1664
{0x00DE,0x00FE,0x00DE}, {0x00DF,0x00DF,0x00DF},
1665
{0x00C0,0x00E0,0x0041}, {0x00C1,0x00E1,0x0041},
1666
{0x00C2,0x00E2,0x0041}, {0x00C3,0x00E3,0x0041},
1667
{0x00C4,0x00E4,0x0041}, {0x00C5,0x00E5,0x0041},
1668
{0x00C6,0x00E6,0x00C6}, {0x00C7,0x00E7,0x0043},
1669
{0x00C8,0x00E8,0x0045}, {0x00C9,0x00E9,0x0045},
1670
{0x00CA,0x00EA,0x0045}, {0x00CB,0x00EB,0x0045},
1671
{0x00CC,0x00EC,0x0049}, {0x00CD,0x00ED,0x0049},
1672
{0x00CE,0x00EE,0x0049}, {0x00CF,0x00EF,0x0049},
1673
{0x00D0,0x00F0,0x00D0}, {0x00D1,0x00F1,0x004E},
1674
{0x00D2,0x00F2,0x004F}, {0x00D3,0x00F3,0x004F},
1675
{0x00D4,0x00F4,0x004F}, {0x00D5,0x00F5,0x004F},
1676
{0x00D6,0x00F6,0x004F}, {0x00F7,0x00F7,0x00F7},
1677
{0x00D8,0x00F8,0x00D8}, {0x00D9,0x00F9,0x0055},
1678
{0x00DA,0x00FA,0x0055}, {0x00DB,0x00FB,0x0055},
1679
{0x00DC,0x00FC,0x0055}, {0x00DD,0x00FD,0x0059},
1680
{0x00DE,0x00FE,0x00DE}, {0x0178,0x00FF,0x0059}
1685
MY_UNICASE_INFO *my_unicase_turkish[256]=
1687
turk00, plane01, plane02, plane03, plane04, plane05, NULL, NULL,
1688
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1689
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1690
NULL, NULL, NULL, NULL, NULL, NULL, plane1E, plane1F,
1691
NULL, plane21, NULL, NULL, plane24, NULL, NULL, NULL,
1692
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1693
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1694
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1695
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1696
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1697
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1698
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1699
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1700
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1701
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1702
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1703
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1704
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1705
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1706
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1707
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1708
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1709
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1710
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1711
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1712
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1713
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1714
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1715
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1716
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1717
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1718
NULL, NULL, NULL, NULL, NULL, NULL, NULL, planeFF
1724
Compare string against string with wildcard
1725
This function is used for utf8mb3, utf8mb4, ucs2, utf16, utf32
1727
@param cs Character set.
1729
@str_end End of string.
1730
@wildstr Wildcard pattern.
1731
@wildend End of wildcard pattern.
1732
@escape Escape characters, typically \\.
1733
@w_one "One character", typically _.
1734
@w_many "Many characters", typically %.
1736
@return Comparison result.
1737
@retval 0 if matched.
1738
@retval -1 if not matched with wildcard.
1739
@retval 1 if matched with wildcard.
1742
int my_wildcmp_unicode(CHARSET_INFO *cs,
1743
const char *str,const char *str_end,
1744
const char *wildstr,const char *wildend,
1745
int escape, int w_one, int w_many,
1746
MY_UNICASE_INFO **weights)
1748
int result= -1; /* Not found, using wildcards */
1751
int (*mb_wc)(struct charset_info_st *, my_wc_t *,
1752
const uchar *, const uchar *);
1753
mb_wc= cs->cset->mb_wc;
1755
while (wildstr != wildend)
1760
if ((scan= mb_wc(cs, &w_wc, (const uchar*)wildstr,
1761
(const uchar*)wildend)) <= 0)
1764
if (w_wc == (my_wc_t)w_many)
1766
result= 1; /* Found an anchor char */
1771
if (w_wc == (my_wc_t)escape && wildstr < wildend)
1773
if ((scan= mb_wc(cs, &w_wc, (const uchar*)wildstr,
1774
(const uchar*)wildend)) <= 0)
1780
if ((scan= mb_wc(cs, &s_wc, (const uchar*)str,
1781
(const uchar*)str_end)) <= 0)
1785
if (!escaped && w_wc == (my_wc_t)w_one)
1787
result= 1; /* Found an anchor char */
1795
plane=(s_wc>>8) & 0xFF;
1796
s_wc = weights[plane] ? weights[plane][s_wc & 0xFF].sort : s_wc;
1800
plane=(w_wc>>8) & 0xFF;
1801
w_wc = weights[plane] ? weights[plane][w_wc & 0xFF].sort : w_wc;
1805
return 1; /* No match */
1807
if (wildstr == wildend)
1808
return (str != str_end); /* Match if both are at end */
1812
if (w_wc == (my_wc_t)w_many)
1813
{ /* Found w_many */
1815
/* Remove any '%' and '_' from the wild search string */
1816
for (; wildstr != wildend ;)
1818
if ((scan= mb_wc(cs, &w_wc, (const uchar*)wildstr,
1819
(const uchar*)wildend)) <= 0)
1822
if (w_wc == (my_wc_t)w_many)
1828
if (w_wc == (my_wc_t)w_one)
1831
if ((scan= mb_wc(cs, &s_wc, (const uchar*)str,
1832
(const uchar*)str_end)) <=0)
1837
break; /* Not a wild character */
1840
if (wildstr == wildend)
1841
return 0; /* Ok if w_many is last */
1846
if ((scan= mb_wc(cs, &w_wc, (const uchar*)wildstr,
1847
(const uchar*)wildend)) <=0)
1851
if (w_wc == (my_wc_t)escape)
1853
if (wildstr < wildend)
1855
if ((scan= mb_wc(cs, &w_wc, (const uchar*)wildstr,
1856
(const uchar*)wildend)) <=0)
1864
/* Skip until the first character from wildstr is found */
1865
while (str != str_end)
1867
if ((scan= mb_wc(cs, &s_wc, (const uchar*)str,
1868
(const uchar*)str_end)) <=0)
1872
plane=(s_wc>>8) & 0xFF;
1873
s_wc = weights[plane] ? weights[plane][s_wc & 0xFF].sort : s_wc;
1874
plane=(w_wc>>8) & 0xFF;
1875
w_wc = weights[plane] ? weights[plane][w_wc & 0xFF].sort : w_wc;
1886
result= my_wildcmp_unicode(cs, str, str_end, wildstr, wildend,
1887
escape, w_one, w_many,
1894
return (str != str_end ? 1 : 0);
1900
#ifdef HAVE_CHARSET_utf8mb4
1903
We consider bytes with code more than 127 as a letter.
1904
This garantees that word boundaries work fine with regular
1905
expressions. Note, there is no need to mark byte 255 as a
1906
letter, it is illegal byte in UTF8.
1908
static uchar ctype_utf8mb4[]=
1911
32, 32, 32, 32, 32, 32, 32, 32, 32, 40, 40, 40, 40, 40, 32, 32,
1912
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
1913
72, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1914
132,132,132,132,132,132,132,132,132,132, 16, 16, 16, 16, 16, 16,
1915
16,129,129,129,129,129,129, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1916
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 16, 16, 16, 16,
1917
16,130,130,130,130,130,130, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1918
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 16, 16, 16, 16, 32,
1919
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1920
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1921
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1922
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1923
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1924
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1925
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1926
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0
1930
static uchar to_lower_utf8mb4[]=
1932
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
1933
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
1934
32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
1935
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
1936
64, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,
1937
112,113,114,115,116,117,118,119,120,121,122, 91, 92, 93, 94, 95,
1938
96, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,
1939
112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,
1940
128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,
1941
144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,
1942
160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,
1943
176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,
1944
192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,
1945
208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,
1946
224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,
1947
240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255
1951
static uchar to_upper_utf8mb4[]=
1953
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
1954
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
1955
32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
1956
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
1957
64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
1958
80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
1959
96, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
1960
80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,123,124,125,126,127,
1961
128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,
1962
144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,
1963
160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,
1964
176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,
1965
192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,
1966
208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,
1967
224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,
1968
240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255
1973
bincmp_utf8mb4(const uchar *s, const uchar *se,
1974
const uchar *t, const uchar *te)
1976
int slen= (int) (se - s), tlen= (int) (te - t);
1977
int len= min(slen, tlen);
1978
int cmp= memcmp(s, t, len);
1979
return cmp ? cmp : slen - tlen;
1984
my_mb_wc_utf8mb4(CHARSET_INFO *cs __attribute__((unused)),
1985
my_wc_t * pwc, const uchar *s, const uchar *e)
1990
return MY_CS_TOOSMALL;
2002
if (s + 2 > e) /* We need 2 characters */
2003
return MY_CS_TOOSMALL2;
2005
if (!((s[1] ^ 0x80) < 0x40))
2008
*pwc= ((my_wc_t) (c & 0x1f) << 6) | (my_wc_t) (s[1] ^ 0x80);
2013
if (s + 3 > e) /* We need 3 characters */
2014
return MY_CS_TOOSMALL3;
2016
if (!((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40 &&
2017
(c >= 0xe1 || s[1] >= 0xa0)))
2020
*pwc= ((my_wc_t) (c & 0x0f) << 12) |
2021
((my_wc_t) (s[1] ^ 0x80) << 6) |
2022
(my_wc_t) (s[2] ^ 0x80);
2027
if (s + 4 > e) /* We need 4 characters */
2028
return MY_CS_TOOSMALL4;
2030
if (!((s[1] ^ 0x80) < 0x40 &&
2031
(s[2] ^ 0x80) < 0x40 &&
2032
(s[3] ^ 0x80) < 0x40 &&
2033
(c >= 0xf1 || s[1] >= 0x90)))
2035
*pwc = ((my_wc_t) (c & 0x07) << 18) |
2036
((my_wc_t) (s[1] ^ 0x80) << 12) |
2037
((my_wc_t) (s[2] ^ 0x80) << 6) |
2038
(my_wc_t) (s[3] ^ 0x80);
2046
The same as above, but without range check
2047
for example, for a null-terminated string
2050
my_mb_wc_utf8mb4_no_range(CHARSET_INFO *cs __attribute__((unused)),
2051
my_wc_t *pwc, const uchar *s)
2067
if (!((s[1] ^ 0x80) < 0x40))
2070
*pwc = ((my_wc_t) (c & 0x1f) << 6) | (my_wc_t) (s[1] ^ 0x80);
2076
if (!((s[1] ^ 0x80) < 0x40 &&
2077
(s[2] ^ 0x80) < 0x40 &&
2078
(c >= 0xe1 || s[1] >= 0xa0)))
2080
*pwc= ((my_wc_t) (c & 0x0f) << 12) |
2081
((my_wc_t) (s[1] ^ 0x80) << 6) |
2082
(my_wc_t) (s[2] ^ 0x80);
2088
if (!((s[1] ^ 0x80) < 0x40 &&
2089
(s[2] ^ 0x80) < 0x40 &&
2090
(s[3] ^ 0x80) < 0x40 &&
2091
(c >= 0xf1 || s[1] >= 0x90)))
2093
*pwc = ((my_wc_t) (c & 0x07) << 18) |
2094
((my_wc_t) (s[1] ^ 0x80) << 12) |
2095
((my_wc_t) (s[2] ^ 0x80) << 6) |
2096
(my_wc_t) (s[3] ^ 0x80);
2104
my_wc_mb_utf8mb4(CHARSET_INFO *cs __attribute__((unused)),
2105
my_wc_t wc, uchar *r, uchar *e)
2110
return MY_CS_TOOSMALL;
2114
else if (wc < 0x800)
2116
else if (wc < 0x10000)
2118
else if (wc < 0x200000)
2120
else return MY_CS_ILUNI;
2123
return MY_CS_TOOSMALLN(count);
2126
/* Fall through all cases!!! */
2127
case 4: r[3] = (uchar) (0x80 | (wc & 0x3f)); wc = wc >> 6; wc |= 0x10000;
2128
case 3: r[2] = (uchar) (0x80 | (wc & 0x3f)); wc = wc >> 6; wc |= 0x800;
2129
case 2: r[1] = (uchar) (0x80 | (wc & 0x3f)); wc = wc >> 6; wc |= 0xc0;
2130
case 1: r[0] = (uchar) wc;
2137
The same as above, but without range check.
2140
my_wc_mb_utf8mb4_no_range(CHARSET_INFO *cs __attribute__((unused)),
2141
my_wc_t wc, uchar *r)
2147
else if (wc < 0x800)
2149
else if (wc < 0x10000)
2151
else if (wc < 0x200000)
2158
/* Fall through all cases!!! */
2159
case 4: r[3]= (uchar) (0x80 | (wc & 0x3f)); wc= wc >> 6; wc |= 0x10000;
2160
case 3: r[2]= (uchar) (0x80 | (wc & 0x3f)); wc= wc >> 6; wc |= 0x800;
2161
case 2: r[1]= (uchar) (0x80 | (wc & 0x3f)); wc= wc >> 6; wc |= 0xc0;
2162
case 1: r[0]= (uchar) wc;
2168
#define REPLACEMENT_CHAR 0xFFFD;
2172
my_tolower_utf8mb4(MY_UNICASE_INFO **uni_plane, my_wc_t *wc)
2175
if (page < 256 && uni_plane[page])
2176
*wc= uni_plane[page][*wc & 0xFF].tolower;
2181
my_toupper_utf8mb4(MY_UNICASE_INFO **uni_plane, my_wc_t *wc)
2184
if (page < 256 && uni_plane[page])
2185
*wc= uni_plane[page][*wc & 0xFF].toupper;
2190
my_tosort_utf8mb4(MY_UNICASE_INFO **uni_plane, my_wc_t *wc)
2195
if (uni_plane[page])
2196
*wc= uni_plane[page][*wc & 0xFF].sort;
2200
*wc= REPLACEMENT_CHAR;
2206
my_caseup_utf8mb4(CHARSET_INFO *cs, char *src, size_t srclen,
2207
char *dst, size_t dstlen)
2211
char *srcend= src + srclen, *dstend= dst + dstlen, *dst0= dst;
2212
MY_UNICASE_INFO **uni_plane= cs->caseinfo;
2213
DBUG_ASSERT(src != dst || cs->caseup_multiply == 1);
2215
while ((src < srcend) &&
2216
(srcres= my_mb_wc_utf8mb4(cs, &wc,
2217
(uchar *) src, (uchar*) srcend)) > 0)
2219
my_toupper_utf8mb4(uni_plane, &wc);
2220
if ((dstres= my_wc_mb_utf8mb4(cs, wc, (uchar*) dst, (uchar*) dstend)) <= 0)
2225
return (size_t) (dst - dst0);
2230
my_hash_add(ulong *n1, ulong *n2, uint ch)
2232
n1[0]^= (((n1[0] & 63) + n2[0]) * (ch)) + (n1[0] << 8);
2238
my_hash_sort_utf8mb4(CHARSET_INFO *cs, const uchar *s, size_t slen,
2239
ulong *n1, ulong *n2)
2243
const uchar *e= s + slen;
2244
MY_UNICASE_INFO **uni_plane= cs->caseinfo;
2247
Remove end space. We do this to be able to compare
2248
'A ' and 'A' as identical
2250
while (e > s && e[-1] == ' ')
2253
while ((res= my_mb_wc_utf8mb4(cs, &wc, (uchar*) s, (uchar*) e)) > 0)
2255
my_tosort_utf8mb4(uni_plane, &wc);
2256
my_hash_add(n1, n2, (uint) (wc & 0xFF));
2257
my_hash_add(n1, n2, (uint) (wc >> 8) & 0xFF);
2261
Put the highest byte only if it is non-zero,
2262
to make hash functions for utf8mb3 and utf8mb4
2263
compatible for BMP characters.
2264
This is useful to keep order of records in
2265
test results, e.g. for "SHOW GRANTS".
2267
my_hash_add(n1, n2, (uint) (wc >> 16) & 0xFF);
2275
my_caseup_str_utf8mb4(CHARSET_INFO *cs, char *src)
2279
char *dst= src, *dst0= src;
2280
MY_UNICASE_INFO **uni_plane= cs->caseinfo;
2281
DBUG_ASSERT(cs->caseup_multiply == 1);
2284
(srcres= my_mb_wc_utf8mb4_no_range(cs, &wc, (uchar *) src)) > 0)
2286
my_toupper_utf8mb4(uni_plane, &wc);
2287
if ((dstres= my_wc_mb_utf8mb4_no_range(cs, wc, (uchar*) dst)) <= 0)
2293
return (size_t) (dst - dst0);
2298
my_casedn_utf8mb4(CHARSET_INFO *cs,
2299
char *src, size_t srclen,
2300
char *dst, size_t dstlen)
2304
char *srcend= src + srclen, *dstend= dst + dstlen, *dst0= dst;
2305
MY_UNICASE_INFO **uni_plane= cs->caseinfo;
2306
DBUG_ASSERT(src != dst || cs->casedn_multiply == 1);
2308
while ((src < srcend) &&
2309
(srcres= my_mb_wc_utf8mb4(cs, &wc,
2310
(uchar*) src, (uchar*) srcend)) > 0)
2312
my_tolower_utf8mb4(uni_plane, &wc);
2313
if ((dstres= my_wc_mb_utf8mb4(cs, wc, (uchar*) dst, (uchar*) dstend)) <= 0)
2318
return (size_t) (dst - dst0);
2323
my_casedn_str_utf8mb4(CHARSET_INFO *cs, char *src)
2327
char *dst= src, *dst0= src;
2328
MY_UNICASE_INFO **uni_plane= cs->caseinfo;
2329
DBUG_ASSERT(cs->casedn_multiply == 1);
2332
(srcres= my_mb_wc_utf8mb4_no_range(cs, &wc, (uchar *) src)) > 0)
2334
my_tolower_utf8mb4(uni_plane, &wc);
2335
if ((dstres= my_wc_mb_utf8mb4_no_range(cs, wc, (uchar*) dst)) <= 0)
2342
In rare cases lower string can be shorter than
2343
the original string, for example:
2345
"U+0130 LATIN CAPITAL LETTER I WITH DOT ABOVE"
2346
(which is 0xC4B0 in utf8, i.e. two bytes)
2350
"U+0069 LATIN SMALL LETTER I"
2351
(which is 0x69 in utf8, i.e. one byte)
2353
So, we need to put '\0' terminator after converting.
2357
return (size_t) (dst - dst0);
2362
my_strnncoll_utf8mb4(CHARSET_INFO *cs,
2363
const uchar *s, size_t slen,
2364
const uchar *t, size_t tlen,
2365
my_bool t_is_prefix)
2368
const uchar *se= s + slen;
2369
const uchar *te= t + tlen;
2370
MY_UNICASE_INFO **uni_plane= cs->caseinfo;
2372
while ( s < se && t < te )
2374
int s_res= my_mb_wc_utf8mb4(cs, &s_wc, s, se);
2375
int t_res= my_mb_wc_utf8mb4(cs, &t_wc, t, te);
2377
if ( s_res <= 0 || t_res <= 0 )
2379
/* Incorrect string, compare bytewise */
2380
return bincmp_utf8mb4(s, se, t, te);
2383
my_tosort_utf8mb4(uni_plane, &s_wc);
2384
my_tosort_utf8mb4(uni_plane, &t_wc);
2388
return s_wc > t_wc ? 1 : -1;
2394
return (int) (t_is_prefix ? (t - te) : ((se - s) - (te - t)));
2399
Compare strings, discarding end space
2401
If one string is shorter as the other, then we space extend the other
2402
so that the strings have equal length.
2404
This will ensure that the following things hold:
2410
@param cs Character set pinter.
2411
@param a First string to compare.
2412
@param a_length Length of 'a'.
2413
@param b Second string to compare.
2414
@param b_length Length of 'b'.
2415
@param diff_if_only_endspace_difference
2416
Set to 1 if the strings should be regarded as different
2417
if they only difference in end space
2419
@return Comparison result.
2420
@retval Negative number, if a less than b.
2421
@retval 0, if a is equal to b
2422
@retval Positive number, if a > b
2426
my_strnncollsp_utf8mb4(CHARSET_INFO *cs,
2427
const uchar *s, size_t slen,
2428
const uchar *t, size_t tlen,
2429
my_bool diff_if_only_endspace_difference)
2433
const uchar *se= s + slen, *te= t + tlen;
2434
MY_UNICASE_INFO **uni_plane= cs->caseinfo;
2436
#ifndef VARCHAR_WITH_DIFF_ENDSPACE_ARE_DIFFERENT_FOR_UNIQUE
2437
diff_if_only_endspace_difference= FALSE;
2440
while ( s < se && t < te )
2442
int s_res= my_mb_wc_utf8mb4(cs, &s_wc, s, se);
2443
int t_res= my_mb_wc_utf8mb4(cs, &t_wc, t, te);
2445
if ( s_res <= 0 || t_res <= 0 )
2447
/* Incorrect string, compare bytewise */
2448
return bincmp_utf8mb4(s, se, t, te);
2451
my_tosort_utf8mb4(uni_plane, &s_wc);
2452
my_tosort_utf8mb4(uni_plane, &t_wc);
2456
return s_wc > t_wc ? 1 : -1;
2463
slen= (size_t) (se-s);
2464
tlen= (size_t) (te-t);
2470
if (diff_if_only_endspace_difference)
2471
res= 1; /* Assume 'a' is bigger */
2481
This following loop uses the fact that in UTF-8
2482
all multibyte characters are greater than space,
2483
and all multibyte head characters are greater than
2484
space. It means if we meet a character greater
2485
than space, it always means that the longer string
2486
is greater. So we can reuse the same loop from the
2487
8bit version, without having to process full multibute
2490
for ( ; s < se; s++)
2493
return (*s < ' ') ? -swap : swap;
2501
Compare 0-terminated UTF8 strings.
2503
@param cs character set handler
2504
@param s First 0-terminated string to compare
2505
@param t Second 0-terminated string to compare
2507
@return Comparison result.
2508
@retval negative number if s < t
2509
@retval positive number if s > t
2510
@retval 0 is the strings are equal
2514
my_strcasecmp_utf8mb4(CHARSET_INFO *cs, const char *s, const char *t)
2516
MY_UNICASE_INFO **uni_plane= cs->caseinfo;
2517
while (s[0] && t[0])
2521
if ((uchar) s[0] < 128)
2524
s[0] is between 0 and 127.
2525
It represents a single byte character.
2526
Convert it into weight according to collation.
2528
s_wc= plane00[(uchar) s[0]].tolower;
2533
int res= my_mb_wc_utf8mb4_no_range(cs, &s_wc, (const uchar*) s);
2536
In the case of wrong multibyte sequence we will
2537
call strcmp() for byte-to-byte comparison.
2540
return strcmp(s, t);
2543
my_tolower_utf8mb4(uni_plane, &s_wc);
2547
/* Do the same for the second string */
2549
if ((uchar) t[0] < 128)
2551
/* Convert single byte character into weight */
2552
t_wc= plane00[(uchar) t[0]].tolower;
2557
int res= my_mb_wc_utf8mb4_no_range(cs, &t_wc, (const uchar*) t);
2559
return strcmp(s, t);
2562
my_tolower_utf8mb4(uni_plane, &t_wc);
2565
/* Now we have two weights, let's compare them */
2567
return ((int) s_wc) - ((int) t_wc);
2569
return ((int) (uchar) s[0]) - ((int) (uchar) t[0]);
2574
my_wildcmp_utf8mb4(CHARSET_INFO *cs,
2575
const char *str, const char *strend,
2576
const char *wildstr, const char *wildend,
2577
int escape, int w_one, int w_many)
2579
return my_wildcmp_unicode(cs, str, strend, wildstr, wildend,
2580
escape, w_one, w_many, cs->caseinfo);
2585
my_strnxfrmlen_utf8mb4(CHARSET_INFO *cs __attribute__((unused)), size_t len)
2587
/* TODO: fix when working on WL "Unicode new version" */
2588
return (len * 2 + 2) / 4;
2593
my_strnxfrm_utf8mb4(CHARSET_INFO *cs,
2594
uchar *dst, size_t dstlen, uint nweights,
2595
const uchar *src, size_t srclen, uint flags)
2600
uchar *de= dst + dstlen;
2601
uchar *de_beg= de - 1;
2602
const uchar *se = src + srclen;
2603
MY_UNICASE_INFO **uni_plane= (cs->state & MY_CS_BINSORT) ?
2604
NULL : cs->caseinfo;
2606
for (; dst < de_beg && nweights; nweights--)
2608
if ((res= my_mb_wc_utf8mb4(cs,&wc, src, se)) <= 0)
2613
my_tosort_utf8mb4(uni_plane, &wc);
2615
*dst++= (uchar)(wc >> 8);
2616
*dst++= (uchar)(wc & 0xFF);
2620
if (dst < de && nweights && (flags & MY_STRXFRM_PAD_WITH_SPACE))
2622
/* Fill the tail with keys for space character */
2623
for (; dst < de_beg && nweights; nweights--)
2629
if (dst < de) /* Clear the last byte, if "dstlen" was an odd number */
2632
my_strxfrm_desc_and_reverse(dst0, dst, flags, 0);
2638
my_ismbchar_utf8mb4(CHARSET_INFO *cs, const char *b, const char *e)
2641
int res= my_mb_wc_utf8mb4(cs,&wc, (const uchar*)b, (const uchar*)e);
2642
return (res > 1) ? res : 0;
2647
my_mbcharlen_utf8mb4(CHARSET_INFO *cs __attribute__((unused)), uint c)
2652
return 0; /* Illegal mb head */
2659
return 0; /* Illegal mb head */;
2663
static MY_COLLATION_HANDLER my_collation_utf8mb4_general_ci_handler=
2666
my_strnncoll_utf8mb4,
2667
my_strnncollsp_utf8mb4,
2668
my_strnxfrm_utf8mb4,
2669
my_strnxfrmlen_utf8mb4,
2672
my_strcasecmp_utf8mb4,
2674
my_hash_sort_utf8mb4,
2675
my_propagate_complex
2679
static MY_COLLATION_HANDLER my_collation_utf8mb4_bin_handler =
2682
my_strnncoll_mb_bin,
2683
my_strnncollsp_mb_bin,
2684
my_strnxfrm_utf8mb4,
2685
my_strnxfrmlen_utf8mb4,
2688
my_strcasecmp_mb_bin,
2690
my_hash_sort_mb_bin,
2695
MY_CHARSET_HANDLER my_charset_utf8mb4_handler=
2698
my_ismbchar_utf8mb4,
2699
my_mbcharlen_utf8mb4,
2702
my_well_formed_len_mb,
2708
my_caseup_str_utf8mb4,
2709
my_casedn_str_utf8mb4,
2713
my_long10_to_str_8bit,
2714
my_longlong10_to_str_8bit,
2722
my_strntoull10rnd_8bit,
2728
CHARSET_INFO my_charset_utf8mb4_general_ci=
2730
45,0,0, /* number */
2731
MY_CS_COMPILED|MY_CS_PRIMARY|MY_CS_STRNXFRM|MY_CS_UNICODE, /* state */
2732
MY_UTF8MB4, /* cs name */
2733
MY_UTF8MB4_GENERAL_CI,/* name */
2734
"UTF-8 Unicode", /* comment */
2735
NULL, /* tailoring */
2736
ctype_utf8mb4, /* ctype */
2737
to_lower_utf8mb4, /* to_lower */
2738
to_upper_utf8mb4, /* to_upper */
2739
to_upper_utf8mb4, /* sort_order */
2740
NULL, /* contractions */
2741
NULL, /* sort_order_big*/
2742
NULL, /* tab_to_uni */
2743
NULL, /* tab_from_uni */
2744
my_unicase_default, /* caseinfo */
2745
NULL, /* state_map */
2746
NULL, /* ident_map */
2747
1, /* strxfrm_multiply */
2748
1, /* caseup_multiply */
2749
1, /* casedn_multiply */
2752
0, /* min_sort_char */
2753
0xFFFF, /* max_sort_char */
2755
0, /* escape_with_backslash_is_dangerous */
2756
1, /* levels_for_compare */
2757
1, /* levels_for_order */
2758
&my_charset_utf8mb4_handler,
2759
&my_collation_utf8mb4_general_ci_handler
2763
CHARSET_INFO my_charset_utf8mb4_bin=
2765
46,0,0, /* number */
2766
MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_UNICODE, /* state */
2767
MY_UTF8MB4, /* cs name */
2768
MY_UTF8MB4_BIN, /* name */
2769
"UTF-8 Unicode", /* comment */
2770
NULL, /* tailoring */
2771
ctype_utf8mb4, /* ctype */
2772
to_lower_utf8mb4, /* to_lower */
2773
to_upper_utf8mb4, /* to_upper */
2774
NULL, /* sort_order */
2775
NULL, /* contractions */
2776
NULL, /* sort_order_big*/
2777
NULL, /* tab_to_uni */
2778
NULL, /* tab_from_uni */
2779
my_unicase_default, /* caseinfo */
2780
NULL, /* state_map */
2781
NULL, /* ident_map */
2782
1, /* strxfrm_multiply */
2783
1, /* caseup_multiply */
2784
1, /* casedn_multiply */
2787
0, /* min_sort_char */
2788
0xFFFF, /* max_sort_char */
2790
0, /* escape_with_backslash_is_dangerous */
2791
1, /* levels_for_compare */
2792
1, /* levels_for_order */
2793
&my_charset_utf8mb4_handler,
2794
&my_collation_utf8mb4_bin_handler
2797
#endif /* HAVE_CHARSET_utf8mb4 */
2800
#ifdef HAVE_CHARSET_utf8mb3
2803
We consider bytes with code more than 127 as a letter.
2804
This garantees that word boundaries work fine with regular
2805
expressions. Note, there is no need to mark byte 255 as a
2806
letter, it is illegal byte in UTF8.
2808
static uchar ctype_utf8[] = {
2810
32, 32, 32, 32, 32, 32, 32, 32, 32, 40, 40, 40, 40, 40, 32, 32,
2811
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
2812
72, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
2813
132,132,132,132,132,132,132,132,132,132, 16, 16, 16, 16, 16, 16,
2814
16,129,129,129,129,129,129, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2815
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 16, 16, 16, 16,
2816
16,130,130,130,130,130,130, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2817
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 16, 16, 16, 16, 32,
2818
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
2819
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
2820
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
2821
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
2822
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
2823
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
2824
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
2825
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0
2828
/* The below are taken from usa7 implementation */
2830
static uchar to_lower_utf8[] = {
2831
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
2832
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
2833
32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
2834
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
2835
64, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,
2836
112,113,114,115,116,117,118,119,120,121,122, 91, 92, 93, 94, 95,
2837
96, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,
2838
112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,
2839
128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,
2840
144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,
2841
160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,
2842
176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,
2843
192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,
2844
208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,
2845
224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,
2846
240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255
2849
static uchar to_upper_utf8[] = {
2850
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
2851
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
2852
32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
2853
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
2854
64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
2855
80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
2856
96, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
2857
80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,123,124,125,126,127,
2858
128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,
2859
144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,
2860
160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,
2861
176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,
2862
192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,
2863
208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,
2864
224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,
2865
240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255
2868
static inline int bincmp(const uchar *s, const uchar *se,
2869
const uchar *t, const uchar *te)
2871
int slen= (int) (se-s), tlen= (int) (te-t);
2872
int len=min(slen,tlen);
2873
int cmp= memcmp(s,t,len);
2874
return cmp ? cmp : slen-tlen;
2879
my_mb_wc_utf8mb3(CHARSET_INFO *cs __attribute__((unused)),
2880
my_wc_t * pwc, const uchar *s, const uchar *e)
2885
return MY_CS_TOOSMALL;
2897
if (s+2 > e) /* We need 2 characters */
2898
return MY_CS_TOOSMALL2;
2900
if (!((s[1] ^ 0x80) < 0x40))
2903
*pwc = ((my_wc_t) (c & 0x1f) << 6) | (my_wc_t) (s[1] ^ 0x80);
2908
if (s+3 > e) /* We need 3 characters */
2909
return MY_CS_TOOSMALL3;
2911
if (!((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40 &&
2912
(c >= 0xe1 || s[1] >= 0xa0)))
2915
*pwc = ((my_wc_t) (c & 0x0f) << 12) |
2916
((my_wc_t) (s[1] ^ 0x80) << 6) |
2917
(my_wc_t) (s[2] ^ 0x80);
2921
#ifdef UNICODE_32BIT
2922
else if (c < 0xf8 && sizeof(my_wc_t)*8 >= 32)
2924
if (s+4 > e) /* We need 4 characters */
2925
return MY_CS_TOOSMALL4;
2927
if (!((s[1] ^ 0x80) < 0x40 &&
2928
(s[2] ^ 0x80) < 0x40 &&
2929
(s[3] ^ 0x80) < 0x40 &&
2930
(c >= 0xf1 || s[1] >= 0x90)))
2933
*pwc = ((my_wc_t) (c & 0x07) << 18) |
2934
((my_wc_t) (s[1] ^ 0x80) << 12) |
2935
((my_wc_t) (s[2] ^ 0x80) << 6) |
2936
(my_wc_t) (s[3] ^ 0x80);
2940
else if (c < 0xfc && sizeof(my_wc_t)*8 >= 32)
2942
if (s+5 >e) /* We need 5 characters */
2943
return MY_CS_TOOSMALL5;
2945
if (!((s[1] ^ 0x80) < 0x40 &&
2946
(s[2] ^ 0x80) < 0x40 &&
2947
(s[3] ^ 0x80) < 0x40 &&
2948
(s[4] ^ 0x80) < 0x40 &&
2949
(c >= 0xf9 || s[1] >= 0x88)))
2952
*pwc = ((my_wc_t) (c & 0x03) << 24) |
2953
((my_wc_t) (s[1] ^ 0x80) << 18) |
2954
((my_wc_t) (s[2] ^ 0x80) << 12) |
2955
((my_wc_t) (s[3] ^ 0x80) << 6) |
2956
(my_wc_t) (s[4] ^ 0x80);
2959
else if (c < 0xfe && sizeof(my_wc_t)*8 >= 32)
2961
if ( s+6 >e ) /* We need 6 characters */
2962
return MY_CS_TOOSMALL6;
2964
if (!((s[1] ^ 0x80) < 0x40 &&
2965
(s[2] ^ 0x80) < 0x40 &&
2966
(s[3] ^ 0x80) < 0x40 &&
2967
(s[4] ^ 0x80) < 0x40 &&
2968
(s[5] ^ 0x80) < 0x40 &&
2969
(c >= 0xfd || s[1] >= 0x84)))
2972
*pwc = ((my_wc_t) (c & 0x01) << 30)
2973
| ((my_wc_t) (s[1] ^ 0x80) << 24)
2974
| ((my_wc_t) (s[2] ^ 0x80) << 18)
2975
| ((my_wc_t) (s[3] ^ 0x80) << 12)
2976
| ((my_wc_t) (s[4] ^ 0x80) << 6)
2977
| (my_wc_t) (s[5] ^ 0x80);
2986
The same as above, but without range check
2987
for example, for a null-terminated string
2990
my_mb_wc_utf8mb3_no_range(CHARSET_INFO *cs __attribute__((unused)),
2991
my_wc_t * pwc, const uchar *s)
3007
if (!((s[1] ^ 0x80) < 0x40))
3010
*pwc = ((my_wc_t) (c & 0x1f) << 6) | (my_wc_t) (s[1] ^ 0x80);
3016
if (!((s[1] ^ 0x80) < 0x40 &&
3017
(s[2] ^ 0x80) < 0x40 &&
3018
(c >= 0xe1 || s[1] >= 0xa0)))
3021
*pwc= ((my_wc_t) (c & 0x0f) << 12) |
3022
((my_wc_t) (s[1] ^ 0x80) << 6) |
3023
(my_wc_t) (s[2] ^ 0x80);
3032
my_wc_mb_utf8mb3(CHARSET_INFO *cs __attribute__((unused)),
3033
my_wc_t wc, uchar *r, uchar *e)
3038
return MY_CS_TOOSMALL;
3042
else if (wc < 0x800)
3044
else if (wc < 0x10000)
3046
#ifdef UNICODE_32BIT
3047
else if (wc < 0x200000)
3049
else if (wc < 0x4000000)
3051
else if (wc <= 0x7fffffff)
3054
else return MY_CS_ILUNI;
3057
e is a character after the string r, not the last character of it.
3058
Because of it (r+count > e), not (r+count-1 >e )
3061
return MY_CS_TOOSMALLN(count);
3064
/* Fall through all cases!!! */
3065
#ifdef UNICODE_32BIT
3066
case 6: r[5] = (uchar) (0x80 | (wc & 0x3f)); wc = wc >> 6; wc |= 0x4000000;
3067
case 5: r[4] = (uchar) (0x80 | (wc & 0x3f)); wc = wc >> 6; wc |= 0x200000;
3068
case 4: r[3] = (uchar) (0x80 | (wc & 0x3f)); wc = wc >> 6; wc |= 0x10000;
3070
case 3: r[2] = (uchar) (0x80 | (wc & 0x3f)); wc = wc >> 6; wc |= 0x800;
3071
case 2: r[1] = (uchar) (0x80 | (wc & 0x3f)); wc = wc >> 6; wc |= 0xc0;
3072
case 1: r[0] = (uchar) wc;
3079
The same as above, but without range check.
3082
my_wc_mb_utf8mb3_no_range(CHARSET_INFO *cs __attribute__((unused)),
3083
my_wc_t wc, uchar *r)
3089
else if (wc < 0x800)
3091
else if (wc < 0x10000)
3098
/* Fall through all cases!!! */
3099
case 3: r[2]= (uchar) (0x80 | (wc & 0x3f)); wc= wc >> 6; wc |= 0x800;
3100
case 2: r[1]= (uchar) (0x80 | (wc & 0x3f)); wc= wc >> 6; wc |= 0xc0;
3101
case 1: r[0]= (uchar) wc;
3108
my_caseup_utf8mb3(CHARSET_INFO *cs, char *src, size_t srclen,
3109
char *dst, size_t dstlen)
3113
char *srcend= src + srclen, *dstend= dst + dstlen, *dst0= dst;
3114
MY_UNICASE_INFO **uni_plane= cs->caseinfo;
3115
DBUG_ASSERT(src != dst || cs->caseup_multiply == 1);
3117
while ((src < srcend) &&
3118
(srcres= my_mb_wc_utf8mb3(cs, &wc,
3119
(uchar *) src, (uchar*) srcend)) > 0)
3121
int plane= (wc>>8) & 0xFF;
3122
wc= uni_plane[plane] ? uni_plane[plane][wc & 0xFF].toupper : wc;
3123
if ((dstres= my_wc_mb_utf8mb3(cs, wc, (uchar*) dst, (uchar*) dstend)) <= 0)
3128
return (size_t) (dst - dst0);
3133
my_hash_sort_utf8mb3(CHARSET_INFO *cs, const uchar *s, size_t slen,
3134
ulong *n1, ulong *n2)
3138
const uchar *e=s+slen;
3139
MY_UNICASE_INFO **uni_plane= cs->caseinfo;
3142
Remove end space. We have to do this to be able to compare
3143
'A ' and 'A' as identical
3145
while (e > s && e[-1] == ' ')
3148
while ((s < e) && (res= my_mb_wc_utf8mb3(cs, &wc,
3149
(uchar *)s, (uchar*)e)) > 0)
3151
int plane = (wc>>8) & 0xFF;
3152
wc = uni_plane[plane] ? uni_plane[plane][wc & 0xFF].sort : wc;
3153
n1[0]^= (((n1[0] & 63)+n2[0])*(wc & 0xFF))+ (n1[0] << 8);
3155
n1[0]^= (((n1[0] & 63)+n2[0])*(wc >> 8))+ (n1[0] << 8);
3163
my_caseup_str_utf8mb3(CHARSET_INFO *cs, char *src)
3167
char *dst= src, *dst0= src;
3168
MY_UNICASE_INFO **uni_plane= cs->caseinfo;
3169
DBUG_ASSERT(cs->caseup_multiply == 1);
3172
(srcres= my_mb_wc_utf8mb3_no_range(cs, &wc, (uchar *) src)) > 0)
3174
int plane= (wc>>8) & 0xFF;
3175
wc= uni_plane[plane] ? uni_plane[plane][wc & 0xFF].toupper : wc;
3176
if ((dstres= my_wc_mb_utf8mb3_no_range(cs, wc, (uchar*) dst)) <= 0)
3182
return (size_t) (dst - dst0);
3187
my_casedn_utf8mb3(CHARSET_INFO *cs, char *src, size_t srclen,
3188
char *dst, size_t dstlen)
3192
char *srcend= src + srclen, *dstend= dst + dstlen, *dst0= dst;
3193
MY_UNICASE_INFO **uni_plane= cs->caseinfo;
3194
DBUG_ASSERT(src != dst || cs->casedn_multiply == 1);
3196
while ((src < srcend) &&
3197
(srcres= my_mb_wc_utf8mb3(cs, &wc,
3198
(uchar*) src, (uchar*)srcend)) > 0)
3200
int plane= (wc>>8) & 0xFF;
3201
wc= uni_plane[plane] ? uni_plane[plane][wc & 0xFF].tolower : wc;
3202
if ((dstres= my_wc_mb_utf8mb3(cs, wc, (uchar*) dst, (uchar*) dstend)) <= 0)
3207
return (size_t) (dst - dst0);
3212
my_casedn_str_utf8mb3(CHARSET_INFO *cs, char *src)
3216
char *dst= src, *dst0= src;
3217
MY_UNICASE_INFO **uni_plane= cs->caseinfo;
3218
DBUG_ASSERT(cs->casedn_multiply == 1);
3221
(srcres= my_mb_wc_utf8mb3_no_range(cs, &wc, (uchar *) src)) > 0)
3223
int plane= (wc>>8) & 0xFF;
3224
wc= uni_plane[plane] ? uni_plane[plane][wc & 0xFF].tolower : wc;
3225
if ((dstres= my_wc_mb_utf8mb3_no_range(cs, wc, (uchar*) dst)) <= 0)
3232
In rare cases lower string can be shorter than
3233
the original string, for example:
3235
"U+0130 LATIN CAPITAL LETTER I WITH DOT ABOVE"
3236
(which is 0xC4B0 in utf8, i.e. two bytes)
3240
"U+0069 LATIN SMALL LETTER I"
3241
(which is 0x69 in utf8, i.e. one byte)
3243
So, we need to put '\0' terminator after converting.
3247
return (size_t) (dst - dst0);
3252
my_strnncoll_utf8mb3(CHARSET_INFO *cs,
3253
const uchar *s, size_t slen,
3254
const uchar *t, size_t tlen,
3255
my_bool t_is_prefix)
3259
const uchar *se=s+slen;
3260
const uchar *te=t+tlen;
3261
MY_UNICASE_INFO **uni_plane= cs->caseinfo;
3263
while ( s < se && t < te )
3266
s_res= my_mb_wc_utf8mb3(cs,&s_wc, s, se);
3267
t_res= my_mb_wc_utf8mb3(cs,&t_wc, t, te);
3269
if ( s_res <= 0 || t_res <= 0 )
3271
/* Incorrect string, compare bytewise */
3272
return bincmp(s, se, t, te);
3275
plane=(s_wc>>8) & 0xFF;
3276
s_wc = uni_plane[plane] ? uni_plane[plane][s_wc & 0xFF].sort : s_wc;
3277
plane=(t_wc>>8) & 0xFF;
3278
t_wc = uni_plane[plane] ? uni_plane[plane][t_wc & 0xFF].sort : t_wc;
3281
return s_wc > t_wc ? 1 : -1;
3287
return (int) (t_is_prefix ? t-te : ((se-s) - (te-t)));
3292
Compare strings, discarding end space
3294
If one string is shorter as the other, then we space extend the other
3295
so that the strings have equal length.
3297
This will ensure that the following things hold:
3303
@param cs Character set pinter.
3304
@param a First string to compare.
3305
@param a_length Length of 'a'.
3306
@param b Second string to compare.
3307
@param b_length Length of 'b'.
3308
@param diff_if_only_endspace_difference
3309
Set to 1 if the strings should be regarded as different
3310
if they only difference in end space
3312
@return Comparison result.
3313
@retval Negative number, if a less than b.
3314
@retval 0, if a is equal to b
3315
@retval Positive number, if a > b
3319
my_strnncollsp_utf8mb3(CHARSET_INFO *cs,
3320
const uchar *s, size_t slen,
3321
const uchar *t, size_t tlen,
3322
my_bool diff_if_only_endspace_difference)
3324
int s_res, t_res, res;
3326
const uchar *se= s+slen, *te= t+tlen;
3327
MY_UNICASE_INFO **uni_plane= cs->caseinfo;
3329
#ifndef VARCHAR_WITH_DIFF_ENDSPACE_ARE_DIFFERENT_FOR_UNIQUE
3330
diff_if_only_endspace_difference= FALSE;
3333
while ( s < se && t < te )
3336
s_res= my_mb_wc_utf8mb3(cs,&s_wc, s, se);
3337
t_res= my_mb_wc_utf8mb3(cs,&t_wc, t, te);
3339
if ( s_res <= 0 || t_res <= 0 )
3341
/* Incorrect string, compare bytewise */
3342
return bincmp(s, se, t, te);
3345
plane=(s_wc>>8) & 0xFF;
3346
s_wc = uni_plane[plane] ? uni_plane[plane][s_wc & 0xFF].sort : s_wc;
3347
plane=(t_wc>>8) & 0xFF;
3348
t_wc = uni_plane[plane] ? uni_plane[plane][t_wc & 0xFF].sort : t_wc;
3351
return s_wc > t_wc ? 1 : -1;
3358
slen= (size_t) (se-s);
3359
tlen= (size_t) (te-t);
3365
if (diff_if_only_endspace_difference)
3366
res= 1; /* Assume 'a' is bigger */
3376
This following loop uses the fact that in UTF-8
3377
all multibyte characters are greater than space,
3378
and all multibyte head characters are greater than
3379
space. It means if we meet a character greater
3380
than space, it always means that the longer string
3381
is greater. So we can reuse the same loop from the
3382
8bit version, without having to process full multibute
3385
for ( ; s < se; s++)
3388
return (*s < ' ') ? -swap : swap;
3396
Compare 0-terminated UTF8 strings.
3399
my_strcasecmp_utf8mb3()
3400
cs character set handler
3401
s First 0-terminated string to compare
3402
t Second 0-terminated string to compare
3407
- negative number if s < t
3408
- positive number if s > t
3409
- 0 is the strings are equal
3413
my_strcasecmp_utf8mb3(CHARSET_INFO *cs, const char *s, const char *t)
3415
MY_UNICASE_INFO **uni_plane= cs->caseinfo;
3416
while (s[0] && t[0])
3420
if ((uchar) s[0] < 128)
3423
s[0] is between 0 and 127.
3424
It represents a single byte character.
3425
Convert it into weight according to collation.
3427
s_wc= plane00[(uchar) s[0]].tolower;
3435
Scan a multibyte character.
3437
In the future it is worth to write a special version of my_utf8_uni()
3438
for 0-terminated strings which will not take in account length. Now
3439
we call the regular version of my_utf8_uni() with s+3 in the
3440
last argument. s+3 is enough to scan any multibyte sequence.
3442
Calling the regular version of my_utf8_uni is safe for 0-terminated
3443
strings: we will never lose the end of the string:
3444
If we have 0 character in the middle of a multibyte sequence,
3445
then my_utf8_uni will always return a negative number, so the
3449
res= my_mb_wc_utf8mb3(cs, &s_wc, (const uchar*)s, (const uchar*) s + 3);
3452
In the case of wrong multibyte sequence we will
3453
call strcmp() for byte-to-byte comparison.
3456
return strcmp(s, t);
3459
/* Convert Unicode code into weight according to collation */
3460
plane=(s_wc>>8) & 0xFF;
3461
s_wc = uni_plane[plane] ? uni_plane[plane][s_wc & 0xFF].tolower : s_wc;
3465
/* Do the same for the second string */
3467
if ((uchar) t[0] < 128)
3469
/* Convert single byte character into weight */
3470
t_wc= plane00[(uchar) t[0]].tolower;
3476
int res= my_mb_wc_utf8mb3(cs, &t_wc,
3477
(const uchar*)t, (const uchar*) t + 3);
3479
return strcmp(s, t);
3482
/* Convert code into weight */
3483
plane=(t_wc>>8) & 0xFF;
3484
t_wc = uni_plane[plane] ? uni_plane[plane][t_wc & 0xFF].tolower : t_wc;
3487
/* Now we have two weights, let's compare them */
3489
return ((int) s_wc) - ((int) t_wc);
3491
return ((int)(uchar)s[0]) - ((int) (uchar) t[0]);
3496
my_wildcmp_utf8mb3(CHARSET_INFO *cs,
3497
const char *str,const char *str_end,
3498
const char *wildstr,const char *wildend,
3499
int escape, int w_one, int w_many)
3501
MY_UNICASE_INFO **uni_plane= cs->caseinfo;
3502
return my_wildcmp_unicode(cs,str,str_end,wildstr,wildend,
3503
escape,w_one,w_many,uni_plane);
3508
my_strnxfrmlen_utf8mb3(CHARSET_INFO *cs __attribute__((unused)), size_t len)
3510
return (len * 2 + 2) / 3;
3515
my_strnxfrm_utf8mb3(CHARSET_INFO *cs,
3516
uchar *dst, size_t dstlen, uint nweights,
3517
const uchar *src, size_t srclen, uint flags)
3523
uchar *de= dst + dstlen;
3524
uchar *de_beg= de - 1;
3525
const uchar *se = src + srclen;
3526
MY_UNICASE_INFO **uni_plane= cs->caseinfo;
3528
for (; dst < de_beg && nweights; nweights--)
3530
if ((res= my_mb_wc_utf8mb3(cs,&wc, src, se)) <= 0)
3534
plane=(wc>>8) & 0xFF;
3535
wc = uni_plane[plane] ? uni_plane[plane][wc & 0xFF].sort : wc;
3537
*dst++= (uchar)(wc >> 8);
3538
*dst++= (uchar)(wc & 0xFF);
3542
if (dst < de && nweights && (flags & MY_STRXFRM_PAD_WITH_SPACE))
3544
/* Fill the tail with keys for space character */
3545
for (; dst < de_beg && nweights; nweights--)
3551
if (dst < de) /* Clear the last byte, if "dstlen" was an odd number */
3554
my_strxfrm_desc_and_reverse(dst0, dst, flags, 0);
3560
my_strnxfrm_utf8mb3_bin(CHARSET_INFO *cs,
3561
uchar *dst, size_t dstlen, uint nweights,
3562
const uchar *src, size_t srclen, uint flags)
3567
uchar *de= dst + dstlen;
3568
uchar *de_beg= de - 1;
3569
const uchar *se= src + srclen;
3571
for (; dst < de_beg && nweights; nweights--)
3573
if ((res= my_mb_wc_utf8mb3(cs, &wc, src, se)) <= 0)
3577
*dst++= (uchar)(wc >> 8);
3578
*dst++= (uchar)(wc & 0xFF);
3581
if (dst < de && nweights && (flags & MY_STRXFRM_PAD_WITH_SPACE))
3583
/* Fill the tail with keys for space character */
3584
for (; dst < de_beg && nweights; nweights--)
3590
if (dst < de) /* Clear the last byte, if "dstlen" was an odd number */
3593
my_strxfrm_desc_and_reverse(dst0, dst, flags, 0);
3599
my_ismbchar_utf8mb3(CHARSET_INFO *cs, const char *b, const char *e)
3602
int res= my_mb_wc_utf8mb3(cs, &wc, (const uchar*) b, (const uchar*) e);
3603
return (res>1) ? res : 0;
3608
my_mbcharlen_utf8mb3(CHARSET_INFO *cs __attribute__((unused)), uint c)
3613
return 0; /* Illegal mb head */
3618
#ifdef UNICODE_32BIT
3626
return 0; /* Illegal mb head */;
3630
static MY_COLLATION_HANDLER my_collation_utf8mb3_general_ci_handler =
3633
my_strnncoll_utf8mb3,
3634
my_strnncollsp_utf8mb3,
3635
my_strnxfrm_utf8mb3,
3636
my_strnxfrmlen_utf8mb3,
3639
my_strcasecmp_utf8mb3,
3641
my_hash_sort_utf8mb3,
3642
my_propagate_complex
3646
static MY_COLLATION_HANDLER my_collation_utf8mb3_bin_handler =
3649
my_strnncoll_mb_bin,
3650
my_strnncollsp_mb_bin,
3651
my_strnxfrm_utf8mb3_bin,
3652
my_strnxfrmlen_utf8mb3,
3655
my_strcasecmp_mb_bin,
3657
my_hash_sort_mb_bin,
3662
MY_CHARSET_HANDLER my_charset_utf8mb3_handler=
3665
my_ismbchar_utf8mb3,
3666
my_mbcharlen_utf8mb3,
3669
my_well_formed_len_mb,
3675
my_caseup_str_utf8mb3,
3676
my_casedn_str_utf8mb3,
3680
my_long10_to_str_8bit,
3681
my_longlong10_to_str_8bit,
3689
my_strntoull10rnd_8bit,
3695
CHARSET_INFO my_charset_utf8mb3_general_ci=
3697
33,0,0, /* number */
3698
MY_CS_COMPILED|MY_CS_PRIMARY|MY_CS_STRNXFRM|MY_CS_UNICODE, /* state */
3699
MY_UTF8MB3, /* cs name */
3700
MY_UTF8MB3_GENERAL_CI,/* name */
3701
"UTF-8 Unicode", /* comment */
3702
NULL, /* tailoring */
3703
ctype_utf8, /* ctype */
3704
to_lower_utf8, /* to_lower */
3705
to_upper_utf8, /* to_upper */
3706
to_upper_utf8, /* sort_order */
3707
NULL, /* contractions */
3708
NULL, /* sort_order_big*/
3709
NULL, /* tab_to_uni */
3710
NULL, /* tab_from_uni */
3711
my_unicase_default, /* caseinfo */
3712
NULL, /* state_map */
3713
NULL, /* ident_map */
3714
1, /* strxfrm_multiply */
3715
1, /* caseup_multiply */
3716
1, /* casedn_multiply */
3719
0, /* min_sort_char */
3720
0xFFFF, /* max_sort_char */
3722
0, /* escape_with_backslash_is_dangerous */
3723
1, /* levels_for_compare */
3724
1, /* levels_for_order */
3725
&my_charset_utf8mb3_handler,
3726
&my_collation_utf8mb3_general_ci_handler
3730
CHARSET_INFO my_charset_utf8mb3_bin=
3732
83,0,0, /* number */
3733
MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_UNICODE, /* state */
3734
MY_UTF8MB3, /* cs name */
3735
MY_UTF8MB3_BIN, /* name */
3736
"UTF-8 Unicode", /* comment */
3737
NULL, /* tailoring */
3738
ctype_utf8, /* ctype */
3739
to_lower_utf8, /* to_lower */
3740
to_upper_utf8, /* to_upper */
3741
NULL, /* sort_order */
3742
NULL, /* contractions */
3743
NULL, /* sort_order_big*/
3744
NULL, /* tab_to_uni */
3745
NULL, /* tab_from_uni */
3746
my_unicase_default, /* caseinfo */
3747
NULL, /* state_map */
3748
NULL, /* ident_map */
3749
1, /* strxfrm_multiply */
3750
1, /* caseup_multiply */
3751
1, /* casedn_multiply */
3754
0, /* min_sort_char */
3755
0xFFFF, /* max_sort_char */
3757
0, /* escape_with_backslash_is_dangerous */
3758
1, /* levels_for_compare */
3759
1, /* levels_for_order */
3760
&my_charset_utf8mb3_handler,
3761
&my_collation_utf8mb3_bin_handler
3764
#ifdef HAVE_UTF8_GENERAL_CS
3767
* These functions bacically do the same as their original, except
3768
* that they return 0 only when two comparing unicode strings are
3769
* strictly the same in case-sensitive way. See "save_diff" local
3770
* variable to what they actually do.
3774
my_strnncoll_utf8mb3_cs(CHARSET_INFO *cs,
3775
const uchar *s, size_t slen,
3776
const uchar *t, size_t tlen,
3777
my_bool t_is_prefix)
3781
const uchar *se=s+slen;
3782
const uchar *te=t+tlen;
3785
MY_UNICASE_INFO **uni_plane= cs->caseinfo;
3787
while ( s < se && t < te )
3790
s_res= my_mb_wc_utf8mb3(cs, &s_wc, s, se);
3791
t_res= my_mb_wc_utf8mb3(cs, &t_wc, t, te);
3793
if ( s_res <= 0 || t_res <= 0 )
3796
/* Incorrect string, compare by char value */
3797
return ((int)s[0]-(int)t[0]);
3800
if ( save_diff == 0 )
3802
save_diff = ((int)s_wc) - ((int)t_wc);
3804
plane=(s_wc>>8) & 0xFF;
3805
s_wc = uni_plane[plane] ? uni_plane[plane][s_wc & 0xFF].sort : s_wc;
3806
plane=(t_wc>>8) & 0xFF;
3807
t_wc = uni_plane[plane] ? uni_plane[plane][t_wc & 0xFF].sort : t_wc;
3810
return ((int) s_wc) - ((int) t_wc);
3816
diff = ( (se-s) - (te-t) );
3817
return t_is_prefix ? t-te : ((diff == 0) ? save_diff : diff);
3821
my_strnncollsp_utf8mb3_cs(CHARSET_INFO *cs,
3822
const uchar *s, size_t slen,
3823
const uchar *t, size_t tlen,
3824
my_bool diff_if_only_endspace_difference)
3826
int s_res, t_res, res;
3828
const uchar *se= s + slen;
3829
const uchar *te= t + tlen;
3831
MY_UNICASE_INFO **uni_plane= cs->caseinfo;
3833
#ifndef VARCHAR_WITH_DIFF_ENDSPACE_ARE_DIFFERENT_FOR_UNIQUE
3834
diff_if_only_endspace_difference= FALSE;
3837
while ( s < se && t < te )
3840
s_res= my_mb_wc_utf8mb3(cs, &s_wc, s, se);
3841
t_res= my_mb_wc_utf8mb3(cs, &t_wc, t, te);
3843
if ( s_res <= 0 || t_res <= 0 )
3845
/* Incorrect string, compare by char value */
3846
return ((int)s[0]-(int)t[0]);
3849
if ( save_diff == 0 )
3851
save_diff = ((int)s_wc) - ((int)t_wc);
3853
plane=(s_wc>>8) & 0xFF;
3854
s_wc = uni_plane[plane] ? uni_plane[plane][s_wc & 0xFF].sort : s_wc;
3855
plane=(t_wc>>8) & 0xFF;
3856
t_wc = uni_plane[plane] ? uni_plane[plane][t_wc & 0xFF].sort : t_wc;
3859
return ((int) s_wc) - ((int) t_wc);
3873
if (diff_if_only_endspace_difference)
3874
res= 1; /* Assume 'a' is bigger */
3884
This following loop uses the fact that in UTF-8
3885
all multibyte characters are greater than space,
3886
and all multibyte head characters are greater than
3887
space. It means if we meet a character greater
3888
than space, it always means that the longer string
3889
is greater. So we can reuse the same loop from the
3890
8bit version, without having to process full multibute
3893
for ( ; s < se; s++)
3895
if (*s != (uchar) ' ')
3896
return (*s < (uchar) ' ') ? -swap : swap;
3903
static MY_COLLATION_HANDLER my_collation_utf8mb3_general_cs_handler =
3906
my_strnncoll_utf8mb3_cs,
3907
my_strnncollsp_utf8mb3_cs,
3908
my_strnxfrm_utf8mb3,
3909
my_strnxfrmlen_utf8mb3,
3910
my_like_range_simple,
3912
my_strcasecmp_utf8mb3,
3914
my_hash_sort_utf8mb3,
3919
CHARSET_INFO my_charset_utf8mb3_general_cs=
3921
254,0,0, /* number */
3922
MY_CS_COMPILED|MY_CS_UNICODE, /* state */
3923
MY_UTF8MB3, /* cs name */
3924
MY_UTF8MB3_GENERAL_CS,/* name */
3925
"UTF-8 Unicode", /* comment */
3926
NULL, /* tailoring */
3927
ctype_utf8, /* ctype */
3928
to_lower_utf8, /* to_lower */
3929
to_upper_utf8, /* to_upper */
3930
to_upper_utf8, /* sort_order */
3931
NULL, /* contractions */
3932
NULL, /* sort_order_big*/
3933
NULL, /* tab_to_uni */
3934
NULL, /* tab_from_uni */
3935
my_unicase_default, /* caseinfo */
3936
NULL, /* state_map */
3937
NULL, /* ident_map */
3938
1, /* strxfrm_multiply */
3939
1, /* caseup_multiply */
3940
1, /* casedn_multiply */
3943
0, /* min_sort_char */
3944
255, /* max_sort_char */
3946
0, /* escape_with_backslash_is_dangerous */
3947
1, /* levels_for_compare */
3948
1, /* levels_for_order */
3949
&my_charset_utf8mb3_handler,
3950
&my_collation_utf8mb3_general_cs_handler
3952
#endif /* Cybozu Hack */
3956
File system encoding components:
3958
Code range Pattern Number Used Unused Blocks
3959
-----------------------------------------------------------------------------
3960
00C0..017F [.][0..4][g..z] 5*20= 100 97 3 Latin1 Supplement + Ext A
3961
0370..03FF [.][5..9][g..z] 5*20= 100 88 12 Greek + Coptic
3962
0400..052F [.][g..z][0..6] 20*7= 140 140 137 Cyrillic
3963
0530..058F [.][g..z][7..8] 20*2= 40 38 2 Armenian
3964
2160..217F [.][g..z][9] 20*1= 20 16 4 Number Forms
3965
0180..02AF [.][g..z][a..k] 28*11=220 203 17 Latin Ext B + IPA
3966
1E00..0EFF [.][g..z][l..r] 20*7= 140 136 4 Latin Additional Extended
3967
1F00..1FFF [.][g..z][s..z] 20*8= 160 144 16 Greek Extended
3968
.... .... [.][a..f][g..z] 6*20= 120 0 120 RESERVED
3969
24B6..24E9 [.][@][a..z] 26 26 0 Enclosed Alphanumerics
3970
FF21..FF5A [.][a..z][@] 26 26 0 Full Width forms
3972
All other characters are encoded using five bytes:
3974
[.][0..9a..z][0..9a..z][0..9a..z][0..9a..z]
3979
static uint16 touni[5994]=
3981
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3982
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3983
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x00C0,
3984
0x00C1,0x00C2,0x00C3,0x00C4,0x00C5,0x00C6,0x00C7,0x00C8,
3985
0x00C9,0x00CA,0x00CB,0x00CC,0x00CD,0x00CE,0x00CF,0x00D0,
3986
0x00D1,0x00D2,0x00D3,0x0000,0x0000,0x0000,0x0000,0x0000,
3987
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x00E0,
3988
0x00E1,0x00E2,0x00E3,0x00E4,0x00E5,0x00E6,0x00E7,0x00E8,
3989
0x00E9,0x00EA,0x00EB,0x00EC,0x00ED,0x00EE,0x00EF,0x00F0,
3990
0x00F1,0x00F2,0x00F3,0x0000,0x0000,0x0000,0x0000,0x0000,
3991
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3992
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3993
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x00D4,
3994
0x00D5,0x00D6,0x0000,0x00D8,0x00D9,0x00DA,0x00DB,0x00DC,
3995
0x00DD,0x00DE,0x0178,0x0100,0x0102,0x0104,0x0106,0x0108,
3996
0x010A,0x010C,0x010E,0x0000,0x0000,0x0000,0x0000,0x0000,
3997
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x00F4,
3998
0x00F5,0x00F6,0x00DF,0x00F8,0x00F9,0x00FA,0x00FB,0x00FC,
3999
0x00FD,0x00FE,0x00FF,0x0101,0x0103,0x0105,0x0107,0x0109,
4000
0x010B,0x010D,0x010F,0x0000,0x0000,0x0000,0x0000,0x0000,
4001
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4002
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4003
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0110,
4004
0x0112,0x0114,0x0116,0x0118,0x011A,0x011C,0x011E,0x0120,
4005
0x0122,0x0124,0x0126,0x0128,0x012A,0x012C,0x012E,0x0000,
4006
0x0132,0x0134,0x0136,0x0000,0x0000,0x0000,0x0000,0x0000,
4007
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0111,
4008
0x0113,0x0115,0x0117,0x0119,0x011B,0x011D,0x011F,0x0121,
4009
0x0123,0x0125,0x0127,0x0129,0x012B,0x012D,0x012F,0x0131,
4010
0x0133,0x0135,0x0137,0x0000,0x0000,0x0000,0x0000,0x0000,
4011
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4012
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4013
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4014
0x0139,0x013B,0x013D,0x013F,0x0141,0x0143,0x0145,0x0147,
4015
0x0000,0x014A,0x014C,0x014E,0x0150,0x0152,0x0154,0x0156,
4016
0x0158,0x015A,0x015C,0x0000,0x0000,0x0000,0x0000,0x0000,
4017
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0138,
4018
0x013A,0x013C,0x013E,0x0140,0x0142,0x0144,0x0146,0x0148,
4019
0x0149,0x014B,0x014D,0x014F,0x0151,0x0153,0x0155,0x0157,
4020
0x0159,0x015B,0x015D,0x0000,0x0000,0x0000,0x0000,0x0000,
4021
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4022
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4023
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x015E,
4024
0x0160,0x0162,0x0164,0x0166,0x0168,0x016A,0x016C,0x016E,
4025
0x0170,0x0172,0x0174,0x0176,0x0179,0x017B,0x017D,0x0000,
4026
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4027
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x015F,
4028
0x0161,0x0163,0x0165,0x0167,0x0169,0x016B,0x016D,0x016F,
4029
0x0171,0x0173,0x0175,0x0177,0x017A,0x017C,0x017E,0x017F,
4030
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4031
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4032
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4033
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4034
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4035
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4036
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4037
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4038
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4039
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4040
0x0000,0x0390,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4041
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4042
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4043
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0386,
4044
0x0388,0x0389,0x038A,0x0000,0x0391,0x0000,0x0393,0x0394,
4045
0x0395,0x0396,0x0397,0x0000,0x0399,0x0000,0x039B,0x039C,
4046
0x039D,0x039E,0x039F,0x0000,0x0000,0x0000,0x0000,0x0000,
4047
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x03AC,
4048
0x03AD,0x03AE,0x03AF,0x03B0,0x03B1,0x03B2,0x03B3,0x03B4,
4049
0x03B5,0x03B6,0x03B7,0x03B8,0x03B9,0x03BA,0x03BB,0x03BC,
4050
0x03BD,0x03BE,0x03BF,0x0000,0x0000,0x0000,0x0000,0x0000,
4051
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4052
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4053
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4054
0x03A1,0x0000,0x0000,0x03A4,0x03A5,0x0000,0x03A7,0x03A8,
4055
0x03A9,0x03AA,0x03AB,0x038C,0x038E,0x038F,0x0000,0x0392,
4056
0x0398,0x03D2,0x03D3,0x0000,0x0000,0x0000,0x0000,0x0000,
4057
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x03C0,
4058
0x03C1,0x03C2,0x03C3,0x03C4,0x03C5,0x03C6,0x03C7,0x03C8,
4059
0x03C9,0x03CA,0x03CB,0x03CC,0x03CD,0x03CE,0x0000,0x03D0,
4060
0x03D1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4061
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4062
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4063
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x03D4,
4064
0x03A6,0x03A0,0x0000,0x0000,0x03DA,0x03DC,0x03DE,0x03E0,
4065
0x03E2,0x03E4,0x03E6,0x03E8,0x03EA,0x03EC,0x03EE,0x039A,
4066
0x0000,0x03A3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4067
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4068
0x03D5,0x03D6,0x03D7,0x03D9,0x03DB,0x03DD,0x03DF,0x03E1,
4069
0x03E3,0x03E5,0x03E7,0x03E9,0x03EB,0x03ED,0x03EF,0x03F0,
4070
0x03F1,0x03F2,0x03F3,0x0000,0x0000,0x0000,0x0000,0x0000,
4071
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4072
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4073
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4074
0x0000,0x0000,0x0000,0x0000,0x03FD,0x03FE,0x03FF,0x0000,
4075
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4076
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4077
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x03F5,
4078
0x03F6,0x03F8,0x03FB,0x03FC,0x0000,0x0000,0x0000,0x0000,
4079
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4080
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4081
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4082
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4083
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4084
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4085
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4086
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4087
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4088
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4089
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4090
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4091
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4092
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4093
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4094
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4095
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4096
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4097
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4098
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4099
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4100
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4101
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4102
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4103
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4104
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4105
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4106
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4107
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4108
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4109
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4110
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4111
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4112
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4113
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4114
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4115
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4116
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4117
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4118
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4119
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4120
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4121
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4122
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4123
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4124
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4125
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4126
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4127
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4128
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4129
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4130
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4131
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4132
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4133
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4134
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4135
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4136
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4137
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4138
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4139
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4140
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4141
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4142
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4143
0x0000,0x24B6,0x24B7,0x24B8,0x24B9,0x24BA,0x24BB,0x24BC,
4144
0x24BD,0x24BE,0x24BF,0x24C0,0x24C1,0x24C2,0x24C3,0x24C4,
4145
0x24C5,0x24C6,0x24C7,0x24C8,0x24C9,0x24CA,0x24CB,0x24CC,
4146
0x24CD,0x24CE,0x24CF,0x0000,0x0000,0x0000,0x0000,0x0000,
4147
0x0000,0x24D0,0x24D1,0x24D2,0x24D3,0x24D4,0x24D5,0x24D6,
4148
0x24D7,0x24D8,0x24D9,0x24DA,0x24DB,0x24DC,0x24DD,0x24DE,
4149
0x24DF,0x24E0,0x24E1,0x24E2,0x24E3,0x24E4,0x24E5,0x24E6,
4150
0x24E7,0x24E8,0x24E9,0x0000,0x0000,0x0000,0x0000,0x0000,
4151
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4152
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4153
0xFF21,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4154
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4155
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4156
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4157
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4158
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4159
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4160
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4161
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4162
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4163
0xFF22,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4164
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4165
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4166
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4167
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4168
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4169
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4170
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4171
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4172
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4173
0xFF23,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4174
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4175
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4176
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4177
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4178
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4179
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4180
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4181
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4182
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4183
0xFF24,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4184
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4185
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4186
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4187
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4188
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4189
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4190
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4191
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4192
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4193
0xFF25,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4194
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4195
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4196
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4197
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4198
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4199
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4200
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4201
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4202
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4203
0xFF26,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4204
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4205
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4206
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4207
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4208
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4209
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4210
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4211
0x0410,0x0424,0x0408,0x0478,0x04A6,0x04CD,0x04F4,0x0000,
4212
0x0544,0x2160,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4213
0xFF27,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4214
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4215
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4216
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4217
0x0000,0x0000,0x01B3,0x01DE,0x0208,0x0230,0x0000,0x0000,
4218
0x0000,0x0000,0x0000,0x0000,0x1E00,0x1E28,0x1E50,0x1E78,
4219
0x1E60,0x1EBE,0x1EE6,0x1F08,0x1F2A,0x0000,0x1F6C,0x1F88,
4220
0x1FAC,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4221
0x0411,0x0425,0x0409,0x047A,0x04A8,0x0000,0x04F6,0x0531,
4222
0x0545,0x2161,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4223
0xFF28,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4224
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4225
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4226
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4227
0x0000,0x0182,0x01B5,0x01E0,0x020A,0x0232,0x0000,0x0000,
4228
0x019D,0x0000,0x0000,0x0000,0x1E02,0x1E2A,0x1E52,0x1E7A,
4229
0x0000,0x1EC0,0x1EE8,0x1F09,0x1F2B,0x0000,0x1F6D,0x1F89,
4230
0x1FAD,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4231
0x0412,0x0426,0x040A,0x047C,0x04AA,0x04D0,0x04F8,0x0532,
4232
0x0546,0x2162,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4233
0xFF29,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4234
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4235
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4236
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4237
0x0000,0x0184,0x01B8,0x01E2,0x020C,0x0000,0x0000,0x0000,
4238
0x0000,0x0000,0x0000,0x0000,0x1E04,0x1E2C,0x1E54,0x1E7C,
4239
0x0000,0x1EC2,0x1EEA,0x1F0A,0x1F2C,0x0000,0x1F6E,0x1F8A,
4240
0x1FAE,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4241
0x0413,0x0427,0x040B,0x047E,0x04AC,0x04D2,0x0000,0x0533,
4242
0x0547,0x2163,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4243
0xFF2A,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4244
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4245
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4246
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4247
0x0000,0x0187,0x0000,0x01E4,0x020E,0x0000,0x0000,0x0193,
4248
0x0000,0x01AE,0x0000,0x0000,0x1E06,0x1E2E,0x1E56,0x1E7E,
4249
0x0000,0x1EC4,0x1EEC,0x1F0B,0x1F2D,0x0000,0x1F6F,0x1F8B,
4250
0x1FAF,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4251
0x0414,0x0428,0x040C,0x0480,0x04AE,0x04D4,0x0000,0x0534,
4252
0x0548,0x2164,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4253
0xFF2B,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4254
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4255
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4256
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4257
0x0000,0x018B,0x0000,0x01E6,0x0210,0x0000,0x0000,0x0000,
4258
0x019F,0x0000,0x0000,0x0000,0x1E08,0x1E30,0x1E58,0x1E80,
4259
0x0000,0x1EC6,0x1EEE,0x1F0C,0x1F2E,0x0000,0x1FBA,0x1F8C,
4260
0x1FB8,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4261
0x0415,0x0429,0x040D,0x0000,0x04B0,0x04D6,0x0000,0x0535,
4262
0x0549,0x2165,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4263
0xFF2C,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4264
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4265
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4266
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4267
0x0000,0x0000,0x0000,0x01E8,0x0212,0x0000,0x0000,0x0000,
4268
0x0000,0x01B1,0x0000,0x0000,0x1E0A,0x1E32,0x1E5A,0x1E82,
4269
0x1EA0,0x1EC8,0x1EF0,0x1F0D,0x1F2F,0x1F59,0x1FBB,0x1F8D,
4270
0x1FB9,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4271
0x0416,0x042A,0x040E,0x048A,0x04B2,0x04D8,0x0000,0x0536,
4272
0x054A,0x2166,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4273
0xFF2D,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4274
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4275
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4276
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4277
0x0000,0x0191,0x0000,0x01EA,0x0214,0x0000,0x0000,0x0194,
4278
0x0000,0x01B2,0x0000,0x0000,0x1E0C,0x1E34,0x1E5C,0x1E84,
4279
0x1EA2,0x1ECA,0x1EF2,0x1F0E,0x1F38,0x0000,0x1FC8,0x1F8E,
4280
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4281
0x0417,0x042B,0x040F,0x048C,0x04B4,0x04DA,0x0000,0x0537,
4282
0x054B,0x2167,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4283
0xFF2E,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4284
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4285
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4286
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4287
0x0000,0x01F6,0x01BC,0x01EC,0x0216,0x0000,0x0000,0x0000,
4288
0x0000,0x0000,0x0000,0x0000,0x1E0E,0x1E36,0x1E5E,0x1E86,
4289
0x1EA4,0x1ECC,0x1EF4,0x1F0F,0x1F39,0x1F5B,0x1FC9,0x1F8F,
4290
0x1FBC,0x1FE8,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4291
0x0418,0x042C,0x0460,0x048E,0x04B6,0x04DC,0x0000,0x0538,
4292
0x054C,0x2168,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4293
0xFF2F,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4294
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4295
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4296
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4297
0x0000,0x0198,0x01C4,0x01EE,0x0218,0x023A,0x0000,0x0000,
4298
0x0000,0x0000,0x0000,0x0000,0x1E10,0x1E38,0x0000,0x1E88,
4299
0x1EA6,0x1ECE,0x1EF6,0x1F18,0x1F3A,0x0000,0x1FCA,0x1F98,
4300
0x0000,0x1FE9,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4301
0x0419,0x042D,0x0462,0x0490,0x04B8,0x04DE,0x0500,0x0539,
4302
0x054D,0x2169,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4303
0xFF30,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4304
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4305
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4306
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4307
0x0000,0x023D,0x01C7,0x0000,0x021A,0x023B,0x0000,0x0000,
4308
0x0000,0x0000,0x0000,0x0000,0x1E12,0x1E3A,0x1E62,0x1E8A,
4309
0x1EA8,0x1ED0,0x1EF8,0x1F19,0x1F3B,0x1F5D,0x1FCB,0x1F99,
4310
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4311
0x041A,0x042E,0x0464,0x0492,0x04BA,0x04E0,0x0502,0x053A,
4312
0x054E,0x216A,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4313
0xFF31,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4314
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4315
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4316
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4317
0x0000,0x0000,0x01CA,0x01F1,0x021C,0x023E,0x0181,0x0000,
4318
0x0000,0x0000,0x0000,0x0000,0x1E14,0x1E3C,0x1E64,0x1E8C,
4319
0x1EAA,0x1ED2,0x0000,0x1F1A,0x1F3C,0x0000,0x1FDA,0x1F9A,
4320
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4321
0x041B,0x042F,0x0466,0x0494,0x04BC,0x04E2,0x0504,0x053B,
4322
0x054F,0x216B,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4323
0xFF32,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4324
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4325
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4326
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4327
0x0000,0x0220,0x01CD,0x01F4,0x021E,0x0000,0x0186,0x0197,
4328
0x0000,0x0000,0x0000,0x0000,0x1E16,0x1E3E,0x1E66,0x1E8E,
4329
0x1EAC,0x1ED4,0x0000,0x1F1B,0x1F3D,0x1F5F,0x1FDB,0x1F9B,
4330
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4331
0x041C,0x0400,0x0468,0x0496,0x04BE,0x04E4,0x0506,0x053C,
4332
0x0550,0x216C,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4333
0xFF33,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4334
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4335
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4336
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4337
0x0000,0x01A0,0x01CF,0x01F8,0x0000,0x0000,0x0000,0x0196,
4338
0x0000,0x0000,0x0000,0x0000,0x1E18,0x1E40,0x1E68,0x1E90,
4339
0x1EAE,0x1ED6,0x0000,0x1F1C,0x1F3E,0x0000,0x1FF8,0x1F9C,
4340
0x0000,0x1FEC,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4341
0x041D,0x0401,0x046A,0x0498,0x04C0,0x04E6,0x0508,0x053D,
4342
0x0551,0x216D,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4343
0xFF34,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4344
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4345
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4346
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4347
0x0000,0x01A2,0x01D1,0x01FA,0x0222,0x0000,0x0189,0x0000,
4348
0x0000,0x01B7,0x0000,0x0000,0x1E1A,0x1E42,0x1E6A,0x1E92,
4349
0x1EB0,0x1ED8,0x0000,0x1F1D,0x1F3F,0x0000,0x1FF9,0x1F9D,
4350
0x1FCC,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4351
0x041E,0x0402,0x046C,0x049A,0x04C1,0x04E8,0x050A,0x053E,
4352
0x0552,0x216E,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4353
0xFF35,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4354
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4355
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4356
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4357
0x0000,0x01A4,0x01D3,0x01FC,0x0224,0x0000,0x018A,0x0000,
4358
0x0000,0x0000,0x0000,0x0000,0x1E1C,0x1E44,0x1E6C,0x1E94,
4359
0x1EB2,0x1EDA,0x0000,0x0000,0x1F48,0x0000,0x1FEA,0x1F9E,
4360
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4361
0x041F,0x0403,0x046E,0x049C,0x04C3,0x04EA,0x050C,0x053F,
4362
0x0553,0x216F,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4363
0xFF36,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4364
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4365
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4366
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4367
0x0000,0x01A7,0x01D5,0x01FE,0x0226,0x0000,0x0000,0x0000,
4368
0x01A6,0x0241,0x0000,0x0000,0x1E1E,0x1E46,0x1E6E,0x0000,
4369
0x1EB4,0x1EDC,0x0000,0x0000,0x1F49,0x0000,0x1FEB,0x1F9F,
4370
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4371
0x0420,0x0404,0x0470,0x049E,0x04C5,0x04EC,0x050E,0x0540,
4372
0x0554,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4373
0xFF37,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4374
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4375
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4376
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4377
0x0000,0x0000,0x01D7,0x0200,0x0228,0x0000,0x018F,0x0000,
4378
0x0000,0x0000,0x0000,0x0000,0x1E20,0x1E48,0x1E70,0x0000,
4379
0x1EB6,0x1EDE,0x0000,0x0000,0x1F4A,0x1F68,0x1FFA,0x1FA8,
4380
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4381
0x0421,0x0405,0x0472,0x04A0,0x04C7,0x04EE,0x0000,0x0541,
4382
0x0555,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4383
0xFF38,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4384
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4385
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4386
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4387
0x0000,0x0000,0x01D9,0x0202,0x022A,0x0000,0x0000,0x0000,
4388
0x0000,0x0000,0x0000,0x0000,0x1E22,0x1E4A,0x1E72,0x0000,
4389
0x1EB8,0x1EE0,0x0000,0x0000,0x1F4B,0x1F69,0x1FFB,0x1FA9,
4390
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4391
0x0422,0x0406,0x0474,0x04A2,0x04C9,0x04F0,0x0000,0x0542,
4392
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4393
0xFF39,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4394
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4395
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4396
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4397
0x0000,0x01AC,0x01DB,0x0204,0x022C,0x0000,0x0190,0x019C,
4398
0x01A9,0x0000,0x0000,0x0000,0x1E24,0x1E4C,0x1E74,0x0000,
4399
0x1EBA,0x1EE2,0x0000,0x1F28,0x1F4C,0x1F6A,0x0000,0x1FAA,
4400
0x1FD8,0x1FFC,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4401
0x0423,0x0407,0x0476,0x04A4,0x04CB,0x04F2,0x0000,0x0543,
4402
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4403
0xFF3A,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4404
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4405
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4406
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4407
0x0000,0x01AF,0x018E,0x0206,0x022E,0x0000,0x0000,0x0000,
4408
0x0000,0x0000,0x0000,0x0000,0x1E26,0x1E4E,0x1E76,0x0000,
4409
0x1EBC,0x1EE4,0x0000,0x1F29,0x1F4D,0x1F6B,0x0000,0x1FAB,
4410
0x1FD9,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4411
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4412
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4413
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4414
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4415
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4416
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4417
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4418
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4419
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4420
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4421
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4422
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4423
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4424
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4425
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4426
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4427
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4428
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4429
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4430
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4431
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4432
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4433
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4434
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4435
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4436
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4437
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4438
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4439
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4440
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4441
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4442
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4443
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4444
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4445
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4446
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4447
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4448
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4449
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4450
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4451
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4452
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4453
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4454
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4455
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4456
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4457
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4458
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4459
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4460
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4461
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4462
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4463
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4464
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4465
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4466
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4467
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4468
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4469
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4470
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4471
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4472
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4473
0xFF41,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4474
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4475
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4476
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4477
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4478
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4479
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4480
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4481
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4482
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4483
0xFF42,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4484
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4485
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4486
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4487
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4488
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4489
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4490
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4491
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4492
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4493
0xFF43,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4494
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4495
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4496
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4497
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4498
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4499
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4500
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4501
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4502
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4503
0xFF44,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4504
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4505
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4506
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4507
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4508
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4509
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4510
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4511
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4512
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4513
0xFF45,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4514
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4515
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4516
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4517
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4518
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4519
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4520
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4521
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4522
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4523
0xFF46,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4524
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4525
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4526
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4527
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4528
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4529
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4530
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4531
0x0430,0x0444,0x0458,0x0479,0x04A7,0x04CE,0x04F5,0x0000,
4532
0x0574,0x2170,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4533
0xFF47,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4534
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4535
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4536
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4537
0x0000,0x0180,0x01B4,0x01DF,0x0209,0x0231,0x0000,0x025D,
4538
0x0271,0x0285,0x0299,0x02AD,0x1E01,0x1E29,0x1E51,0x1E79,
4539
0x1E9B,0x1EBF,0x1EE7,0x1F00,0x1F22,0x0000,0x1F64,0x1F80,
4540
0x1FA4,0x1FD2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4541
0x0431,0x0445,0x0459,0x047B,0x04A9,0x0000,0x04F7,0x0561,
4542
0x0575,0x2171,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4543
0xFF48,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4544
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4545
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4546
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4547
0x0000,0x0183,0x01B6,0x01E1,0x020B,0x0233,0x0000,0x025E,
4548
0x0272,0x0286,0x029A,0x02AE,0x1E03,0x1E2B,0x1E53,0x1E7B,
4549
0x0000,0x1EC1,0x1EE9,0x1F01,0x1F23,0x0000,0x1F65,0x1F81,
4550
0x1FA5,0x1FD3,0x1FF6,0x0000,0x0000,0x0000,0x0000,0x0000,
4551
0x0432,0x0446,0x045A,0x047D,0x04AB,0x04D1,0x04F9,0x0562,
4552
0x0576,0x2172,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4553
0xFF49,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4554
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4555
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4556
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4557
0x0000,0x0185,0x01B9,0x01E3,0x020D,0x0234,0x0000,0x025F,
4558
0x0273,0x0287,0x029B,0x02AF,0x1E05,0x1E2D,0x1E55,0x1E7D,
4559
0x0000,0x1EC3,0x1EEB,0x1F02,0x1F24,0x0000,0x1F66,0x1F82,
4560
0x1FA6,0x0000,0x1FF7,0x0000,0x0000,0x0000,0x0000,0x0000,
4561
0x0433,0x0447,0x045B,0x047F,0x04AD,0x04D3,0x0000,0x0563,
4562
0x0577,0x2173,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4563
0xFF4A,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4564
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4565
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4566
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4567
0x0000,0x0188,0x01BA,0x01E5,0x020F,0x0235,0x0000,0x0260,
4568
0x0274,0x0288,0x029C,0x0000,0x1E07,0x1E2F,0x1E57,0x1E7F,
4569
0x0000,0x1EC5,0x1EED,0x1F03,0x1F25,0x0000,0x1F67,0x1F83,
4570
0x1FA7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4571
0x0434,0x0448,0x045C,0x0481,0x04AF,0x04D5,0x0000,0x0564,
4572
0x0578,0x2174,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4573
0xFF4B,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4574
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4575
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4576
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4577
0x0000,0x018C,0x01BB,0x01E7,0x0211,0x0236,0x0000,0x0261,
4578
0x0275,0x0289,0x029D,0x0000,0x1E09,0x1E31,0x1E59,0x1E81,
4579
0x0000,0x1EC7,0x1EEF,0x1F04,0x1F26,0x1F50,0x1F70,0x1F84,
4580
0x1FB0,0x1FD6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4581
0x0435,0x0449,0x045D,0x0000,0x04B1,0x04D7,0x0000,0x0565,
4582
0x0579,0x2175,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4583
0xFF4C,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4584
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4585
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4586
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4587
0x0000,0x018D,0x0000,0x01E9,0x0213,0x0237,0x0000,0x0262,
4588
0x0276,0x028A,0x029E,0x0000,0x1E0B,0x1E33,0x1E5B,0x1E83,
4589
0x1EA1,0x1EC9,0x1EF1,0x1F05,0x1F27,0x1F51,0x1F71,0x1F85,
4590
0x1FB1,0x1FD7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4591
0x0436,0x044A,0x045E,0x048B,0x04B3,0x04D9,0x0000,0x0566,
4592
0x057A,0x2176,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4593
0xFF4D,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4594
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4595
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4596
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4597
0x0000,0x0192,0x01BE,0x01EB,0x0215,0x0238,0x0000,0x0263,
4598
0x0277,0x028B,0x029F,0x0000,0x1E0D,0x1E35,0x1E5D,0x1E85,
4599
0x1EA3,0x1ECB,0x1EF3,0x1F06,0x1F30,0x1F52,0x1F72,0x1F86,
4600
0x1FB2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4601
0x0437,0x044B,0x045F,0x048D,0x04B5,0x04DB,0x0000,0x0567,
4602
0x057B,0x2177,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4603
0xFF4E,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4604
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4605
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4606
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4607
0x0000,0x0195,0x01BD,0x01ED,0x0217,0x0239,0x0250,0x0264,
4608
0x0278,0x028C,0x02A0,0x0000,0x1E0F,0x1E37,0x1E5F,0x1E87,
4609
0x1EA5,0x1ECD,0x1EF5,0x1F07,0x1F31,0x1F53,0x1F73,0x1F87,
4610
0x1FB3,0x1FE0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4611
0x0438,0x044C,0x0461,0x048F,0x04B7,0x04DD,0x0000,0x0568,
4612
0x057C,0x2178,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4613
0xFF4F,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4614
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4615
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4616
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4617
0x0000,0x0199,0x01C6,0x01EF,0x0219,0x0000,0x0251,0x0265,
4618
0x0279,0x028D,0x02A1,0x0000,0x1E11,0x1E39,0x1E61,0x1E89,
4619
0x1EA7,0x1ECF,0x1EF7,0x1F10,0x1F32,0x1F54,0x1F74,0x1F90,
4620
0x1FB4,0x1FE1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4621
0x0439,0x044D,0x0463,0x0491,0x04B9,0x04DF,0x0501,0x0569,
4622
0x057D,0x2179,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4623
0xFF50,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4624
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4625
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4626
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4627
0x0000,0x019A,0x01C9,0x01F0,0x021B,0x023C,0x0252,0x0266,
4628
0x027A,0x028E,0x02A2,0x0000,0x1E13,0x1E3B,0x1E63,0x1E8B,
4629
0x1EA9,0x1ED1,0x1EF9,0x1F11,0x1F33,0x1F55,0x1F75,0x1F91,
4630
0x0000,0x1FE2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4631
0x043A,0x044E,0x0465,0x0493,0x04BB,0x04E1,0x0503,0x056A,
4632
0x057E,0x217A,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4633
0xFF51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4634
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4635
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4636
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4637
0x0000,0x019B,0x01CC,0x01F3,0x021D,0x0000,0x0253,0x0267,
4638
0x027B,0x028F,0x02A3,0x0000,0x1E15,0x1E3D,0x1E65,0x1E8D,
4639
0x1EAB,0x1ED3,0x0000,0x1F12,0x1F34,0x1F56,0x1F76,0x1F92,
4640
0x1FB6,0x1FE3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4641
0x043B,0x044F,0x0467,0x0495,0x04BD,0x04E3,0x0505,0x056B,
4642
0x057F,0x217B,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4643
0xFF52,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4644
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4645
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4646
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4647
0x0000,0x019E,0x01CE,0x01F5,0x021F,0x023F,0x0254,0x0268,
4648
0x027C,0x0290,0x02A4,0x0000,0x1E17,0x1E3F,0x1E67,0x1E8F,
4649
0x1EAD,0x1ED5,0x0000,0x1F13,0x1F35,0x1F57,0x1F77,0x1F93,
4650
0x1FB7,0x1FE4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4651
0x043C,0x0450,0x0469,0x0497,0x04BF,0x04E5,0x0507,0x056C,
4652
0x0580,0x217C,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4653
0xFF53,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4654
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4655
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4656
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4657
0x0000,0x01A1,0x01D0,0x01F9,0x0221,0x0240,0x0255,0x0269,
4658
0x027D,0x0291,0x02A5,0x0000,0x1E19,0x1E41,0x1E69,0x1E91,
4659
0x1EAF,0x1ED7,0x0000,0x1F14,0x1F36,0x0000,0x1F78,0x1F94,
4660
0x1FC2,0x1FE5,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4661
0x043D,0x0451,0x046B,0x0499,0x0000,0x04E7,0x0509,0x056D,
4662
0x0581,0x217D,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4663
0xFF54,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4664
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4665
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4666
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4667
0x0000,0x01A3,0x01D2,0x01FB,0x0223,0x0000,0x0256,0x026A,
4668
0x027E,0x0292,0x02A6,0x0000,0x1E1B,0x1E43,0x1E6B,0x1E93,
4669
0x1EB1,0x1ED9,0x0000,0x1F15,0x1F37,0x0000,0x1F79,0x1F95,
4670
0x1FC3,0x1FE6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4671
0x043E,0x0452,0x046D,0x049B,0x04C2,0x04E9,0x050B,0x056E,
4672
0x0582,0x217E,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4673
0xFF55,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4674
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4675
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4676
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4677
0x0000,0x01A5,0x01D4,0x01FD,0x0225,0x0000,0x0257,0x026B,
4678
0x027F,0x0293,0x02A7,0x0000,0x1E1D,0x1E45,0x1E6D,0x1E95,
4679
0x1EB3,0x1EDB,0x0000,0x0000,0x1F40,0x0000,0x1F7A,0x1F96,
4680
0x1FC4,0x1FE7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4681
0x043F,0x0453,0x046F,0x049D,0x04C4,0x04EB,0x050D,0x056F,
4682
0x0583,0x217F,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4683
0xFF56,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4684
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4685
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4686
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4687
0x0000,0x01A8,0x01D6,0x01FF,0x0227,0x0000,0x0258,0x026C,
4688
0x0280,0x0294,0x02A8,0x0000,0x1E1F,0x1E47,0x1E6F,0x1E96,
4689
0x1EB5,0x1EDD,0x0000,0x0000,0x1F41,0x0000,0x1F7B,0x1F97,
4690
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4691
0x0440,0x0454,0x0471,0x049F,0x04C6,0x04ED,0x050F,0x0570,
4692
0x0584,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4693
0xFF57,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4694
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4695
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4696
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4697
0x0000,0x01AA,0x01D8,0x0201,0x0229,0x0000,0x0259,0x026D,
4698
0x0281,0x0295,0x02A9,0x0000,0x1E21,0x1E49,0x1E71,0x1E97,
4699
0x1EB7,0x1EDF,0x0000,0x0000,0x1F42,0x1F60,0x1F7C,0x1FA0,
4700
0x1FC6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4701
0x0441,0x0455,0x0473,0x04A1,0x04C8,0x04EF,0x0000,0x0571,
4702
0x0585,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4703
0xFF58,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4704
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4705
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4706
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4707
0x0000,0x01AB,0x01DA,0x0203,0x022B,0x0000,0x025A,0x026E,
4708
0x0282,0x0296,0x02AA,0x0000,0x1E23,0x1E4B,0x1E73,0x1E98,
4709
0x1EB9,0x1EE1,0x0000,0x0000,0x1F43,0x1F61,0x1F7D,0x1FA1,
4710
0x1FC7,0x1FF2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4711
0x0442,0x0456,0x0475,0x04A3,0x04CA,0x04F1,0x0000,0x0572,
4712
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4713
0xFF59,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4714
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4715
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4716
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4717
0x0000,0x01AD,0x01DC,0x0205,0x022D,0x0000,0x025B,0x026F,
4718
0x0283,0x0297,0x02AB,0x0000,0x1E25,0x1E4D,0x1E75,0x1E99,
4719
0x1EBB,0x1EE3,0x0000,0x1F20,0x1F44,0x1F62,0x0000,0x1FA2,
4720
0x1FD0,0x1FF3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4721
0x0443,0x0457,0x0477,0x04A5,0x04CC,0x04F3,0x0000,0x0573,
4722
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4723
0xFF5A,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4724
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4725
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4726
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4727
0x0000,0x01B0,0x01DD,0x0207,0x022F,0x0000,0x025C,0x0270,
4728
0x0284,0x0298,0x02AC,0x0000,0x1E27,0x1E4F,0x1E77,0x1E9A,
4729
0x1EBD,0x1EE5,0x0000,0x1F21,0x1F45,0x1F63,0x0000,0x1FA3,
4735
static uint16 uni_0C00_05FF[1344]=
4737
0x0017,0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,
4738
0x001F,0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,
4739
0x0027,0x0028,0x0029,0x002A,0x0067,0x0068,0x0069,0x0000,
4740
0x006B,0x006C,0x006D,0x006E,0x006F,0x0070,0x0071,0x008A,
4741
0x0037,0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,
4742
0x003F,0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,
4743
0x0047,0x0048,0x0049,0x004A,0x0087,0x0088,0x0089,0x0000,
4744
0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,0x0092,
4745
0x0073,0x0093,0x0074,0x0094,0x0075,0x0095,0x0076,0x0096,
4746
0x0077,0x0097,0x0078,0x0098,0x0079,0x0099,0x007A,0x009A,
4747
0x00B7,0x00D7,0x00B8,0x00D8,0x00B9,0x00D9,0x00BA,0x00DA,
4748
0x00BB,0x00DB,0x00BC,0x00DC,0x00BD,0x00DD,0x00BE,0x00DE,
4749
0x00BF,0x00DF,0x00C0,0x00E0,0x00C1,0x00E1,0x00C2,0x00E2,
4750
0x00C3,0x00E3,0x00C4,0x00E4,0x00C5,0x00E5,0x00C6,0x00E6,
4751
0x0000,0x00E7,0x00C8,0x00E8,0x00C9,0x00E9,0x00CA,0x00EA,
4752
0x0127,0x0108,0x0128,0x0109,0x0129,0x010A,0x012A,0x010B,
4753
0x012B,0x010C,0x012C,0x010D,0x012D,0x010E,0x012E,0x010F,
4754
0x012F,0x0130,0x0111,0x0131,0x0112,0x0132,0x0113,0x0133,
4755
0x0114,0x0134,0x0115,0x0135,0x0116,0x0136,0x0117,0x0137,
4756
0x0118,0x0138,0x0119,0x0139,0x011A,0x013A,0x0157,0x0177,
4757
0x0158,0x0178,0x0159,0x0179,0x015A,0x017A,0x015B,0x017B,
4758
0x015C,0x017C,0x015D,0x017D,0x015E,0x017E,0x015F,0x017F,
4759
0x0160,0x0180,0x0161,0x0181,0x0162,0x0182,0x0163,0x0183,
4760
0x0072,0x0164,0x0184,0x0165,0x0185,0x0166,0x0186,0x0187,
4761
0x1161,0x0A86,0x07B1,0x11B1,0x0801,0x1201,0x0AD6,0x0851,
4762
0x1251,0x0B76,0x0BC6,0x08A1,0x12A1,0x12F1,0x0D52,0x0C66,
4763
0x0D06,0x0941,0x1341,0x0857,0x0947,0x1391,0x0B27,0x0AD7,
4764
0x09E1,0x13E1,0x1431,0x1481,0x0D07,0x07B8,0x14D1,0x08A8,
4765
0x0B21,0x1521,0x0B71,0x1571,0x0BC1,0x15C1,0x0C18,0x0C11,
4766
0x1611,0x0D08,0x1661,0x16B1,0x0D01,0x1701,0x0859,0x0D51,
4767
0x1751,0x08F9,0x0949,0x0762,0x1162,0x07B2,0x11B2,0x0B79,
4768
0x0802,0x1202,0x1252,0x12A2,0x0992,0x1392,0x1342,0x0000,
4769
0x0000,0x0000,0x0000,0x0000,0x09E2,0x0000,0x13E2,0x0A32,
4770
0x0000,0x1432,0x0A82,0x0000,0x1482,0x0AD2,0x14D2,0x0B22,
4771
0x1522,0x0B72,0x1572,0x0BC2,0x15C2,0x0C12,0x1612,0x0C62,
4772
0x1662,0x0CB2,0x16B2,0x0D02,0x1702,0x1752,0x0763,0x1163,
4773
0x07B3,0x11B3,0x0803,0x1203,0x0853,0x1253,0x08A3,0x12A3,
4774
0x08F3,0x12F3,0x0943,0x1343,0x0993,0x1393,0x09E3,0x13E3,
4775
0x1433,0x0A83,0x0000,0x1483,0x0AD3,0x14D3,0x0991,0x0000,
4776
0x0B23,0x1523,0x0B73,0x1573,0x0BC3,0x15C3,0x0C13,0x1613,
4777
0x0C63,0x1663,0x0CB3,0x16B3,0x0D03,0x1703,0x0D53,0x1753,
4778
0x0764,0x1164,0x07B4,0x11B4,0x0804,0x1204,0x0854,0x1254,
4779
0x08A4,0x12A4,0x08F4,0x12F4,0x0944,0x1344,0x0994,0x1394,
4780
0x09E4,0x13E4,0x0A34,0x1434,0x0A84,0x1484,0x0AD4,0x14D4,
4781
0x0AD1,0x1524,0x0B74,0x1574,0x0BC4,0x15C4,0x0C14,0x1614,
4782
0x0C64,0x1664,0x0CB4,0x16B4,0x0D04,0x1704,0x0D54,0x1754,
4783
0x0765,0x1165,0x07B5,0x11B5,0x1205,0x1255,0x12A5,0x12F5,
4784
0x1345,0x1395,0x09E5,0x0A35,0x1435,0x0A31,0x0A85,0x14D5,
4785
0x1525,0x0C19,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4786
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4787
0x1396,0x13E6,0x1436,0x1486,0x14D6,0x1526,0x1576,0x15C6,
4788
0x1616,0x1666,0x16B6,0x1706,0x1756,0x1167,0x11B7,0x1207,
4789
0x1257,0x12A7,0x12F7,0x1347,0x1397,0x13E7,0x1437,0x1487,
4790
0x14D7,0x1527,0x1577,0x15C7,0x1617,0x1667,0x16B7,0x1707,
4791
0x1757,0x1168,0x11B8,0x1208,0x1258,0x12A8,0x12F8,0x1348,
4792
0x1398,0x13E8,0x1438,0x1488,0x14D8,0x1528,0x1578,0x15C8,
4793
0x1618,0x1668,0x16B8,0x1708,0x1758,0x1169,0x11B9,0x1209,
4794
0x1259,0x12A9,0x12F9,0x1349,0x1399,0x13E9,0x1439,0x1489,
4795
0x14D9,0x1529,0x1579,0x15C9,0x1619,0x1669,0x16B9,0x1709,
4796
0x1759,0x116A,0x11BA,0x120A,0x125A,0x12AA,0x12FA,0x134A,
4797
0x139A,0x13EA,0x143A,0x148A,0x14DA,0x152A,0x157A,0x15CA,
4798
0x161A,0x166A,0x16BA,0x170A,0x175A,0x116B,0x11BB,0x120B,
4799
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4800
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4801
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4802
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4803
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4804
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4805
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4806
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4807
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4808
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4809
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4810
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4811
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4812
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4813
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4814
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4815
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4816
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4817
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4818
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4819
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4820
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4821
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4822
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4823
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4824
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4825
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x01F7,0x0000,
4826
0x01F8,0x01F9,0x01FA,0x0000,0x0253,0x0000,0x0254,0x0255,
4827
0x01D9,0x01FC,0x0257,0x01FE,0x01FF,0x0200,0x0201,0x0202,
4828
0x0258,0x0204,0x02A7,0x0206,0x0207,0x0208,0x0209,0x020A,
4829
0x0299,0x0248,0x0000,0x02A9,0x024B,0x024C,0x0298,0x024E,
4830
0x024F,0x0250,0x0251,0x0252,0x0217,0x0218,0x0219,0x021A,
4831
0x021B,0x021C,0x021D,0x021E,0x021F,0x0220,0x0221,0x0222,
4832
0x0223,0x0224,0x0225,0x0226,0x0227,0x0228,0x0229,0x022A,
4833
0x0267,0x0268,0x0269,0x026A,0x026B,0x026C,0x026D,0x026E,
4834
0x026F,0x0270,0x0271,0x0272,0x0273,0x0274,0x0275,0x0000,
4835
0x0277,0x0278,0x0259,0x025A,0x0297,0x02B8,0x02B9,0x02BA,
4836
0x0000,0x02BB,0x029C,0x02BC,0x029D,0x02BD,0x029E,0x02BE,
4837
0x029F,0x02BF,0x02A0,0x02C0,0x02A1,0x02C1,0x02A2,0x02C2,
4838
0x02A3,0x02C3,0x02A4,0x02C4,0x02A5,0x02C5,0x02A6,0x02C6,
4839
0x02C7,0x02C8,0x02C9,0x02CA,0x0000,0x0307,0x0308,0x0000,
4840
0x0309,0x0000,0x0000,0x030A,0x030B,0x02EC,0x02ED,0x02EE,
4841
0x0AF1,0x0B41,0x0B91,0x0BE1,0x0C31,0x0C81,0x0CD1,0x0D21,
4842
0x0732,0x0782,0x07D2,0x0822,0x0872,0x08C2,0x0912,0x0962,
4843
0x0730,0x0780,0x07D0,0x0820,0x0870,0x08C0,0x0910,0x0960,
4844
0x09B0,0x0A00,0x0A50,0x0AA0,0x0AF0,0x0B40,0x0B90,0x0BE0,
4845
0x0C30,0x0C80,0x0CD0,0x0D20,0x0731,0x0781,0x07D1,0x0821,
4846
0x0871,0x08C1,0x0911,0x0961,0x09B1,0x0A01,0x0A51,0x0AA1,
4847
0x1130,0x1180,0x11D0,0x1220,0x1270,0x12C0,0x1310,0x1360,
4848
0x13B0,0x1400,0x1450,0x14A0,0x14F0,0x1540,0x1590,0x15E0,
4849
0x1630,0x1680,0x16D0,0x1720,0x1131,0x1181,0x11D1,0x1221,
4850
0x1271,0x12C1,0x1311,0x1361,0x13B1,0x1401,0x1451,0x14A1,
4851
0x14F1,0x1541,0x1591,0x15E1,0x1631,0x1681,0x16D1,0x1721,
4852
0x1132,0x1182,0x11D2,0x1222,0x1272,0x12C2,0x1312,0x1362,
4853
0x09B2,0x13B2,0x0A02,0x1402,0x0A52,0x1452,0x0AA2,0x14A2,
4854
0x0AF2,0x14F2,0x0B42,0x1542,0x0B92,0x1592,0x0BE2,0x15E2,
4855
0x0C32,0x1632,0x0C82,0x1682,0x0CD2,0x16D2,0x0D22,0x1722,
4856
0x0733,0x1133,0x0783,0x1183,0x07D3,0x11D3,0x0823,0x1223,
4857
0x0873,0x1273,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4858
0x0000,0x0000,0x0913,0x1313,0x0963,0x1363,0x09B3,0x13B3,
4859
0x0A03,0x1403,0x0A53,0x1453,0x0AA3,0x14A3,0x0AF3,0x14F3,
4860
0x0B43,0x1543,0x0B93,0x1593,0x0BE3,0x15E3,0x0C33,0x1633,
4861
0x0C83,0x1683,0x0CD3,0x16D3,0x0D23,0x1723,0x0734,0x1134,
4862
0x0784,0x1184,0x07D4,0x11D4,0x0824,0x1224,0x0874,0x1274,
4863
0x08C4,0x12C4,0x0914,0x1314,0x0964,0x1364,0x09B4,0x13B4,
4864
0x0A04,0x1404,0x0A54,0x1454,0x0AA4,0x14A4,0x0AF4,0x14F4,
4865
0x0B44,0x0B94,0x1594,0x0BE4,0x15E4,0x0C34,0x1634,0x0C84,
4866
0x1684,0x0CD4,0x16D4,0x0D24,0x1724,0x0735,0x1135,0x0000,
4867
0x07D5,0x11D5,0x0825,0x1225,0x0875,0x1275,0x08C5,0x12C5,
4868
0x0915,0x1315,0x0965,0x1365,0x09B5,0x13B5,0x0A05,0x1405,
4869
0x0A55,0x1455,0x0AA5,0x14A5,0x0AF5,0x14F5,0x0B45,0x1545,
4870
0x0B95,0x1595,0x0BE5,0x15E5,0x0C35,0x1635,0x0C85,0x1685,
4871
0x0CD5,0x16D5,0x0D25,0x1725,0x0736,0x1136,0x0786,0x1186,
4872
0x07D6,0x11D6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4873
0x0A06,0x1406,0x0A56,0x1456,0x0AA6,0x14A6,0x0AF6,0x14F6,
4874
0x0B46,0x1546,0x0B96,0x1596,0x0BE6,0x15E6,0x0C36,0x1636,
4875
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4876
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4877
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4878
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4879
0x0000,0x0787,0x07D7,0x0827,0x0877,0x08C7,0x0917,0x0967,
4880
0x09B7,0x0A07,0x0A57,0x0AA7,0x0AF7,0x0B47,0x0B97,0x0BE7,
4881
0x0C37,0x0C87,0x0CD7,0x0D27,0x0738,0x0788,0x07D8,0x0828,
4882
0x0878,0x08C8,0x0918,0x0968,0x09B8,0x0A08,0x0A58,0x0AA8,
4883
0x0AF8,0x0B48,0x0B98,0x0BE8,0x0C38,0x0C88,0x0000,0x0000,
4884
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4885
0x0000,0x1187,0x11D7,0x1227,0x1277,0x12C7,0x1317,0x1367,
4886
0x13B7,0x1407,0x1457,0x14A7,0x14F7,0x1547,0x1597,0x15E7,
4887
0x1637,0x1687,0x16D7,0x1727,0x1138,0x1188,0x11D8,0x1228,
4888
0x1278,0x12C8,0x1318,0x1368,0x13B8,0x1408,0x1458,0x14A8,
4889
0x14F8,0x1548,0x1598,0x15E8,0x1638,0x1688,0x0000,0x0000,
4890
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4891
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4892
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4893
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4894
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4895
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4896
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4897
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4898
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4899
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4900
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4901
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4902
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4903
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4904
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
4909
static uint16 uni_1E00_1FFF[512]=
4911
0x076C,0x116C,0x07BC,0x11BC,0x080C,0x120C,0x085C,0x125C,
4912
0x08AC,0x12AC,0x08FC,0x12FC,0x094C,0x134C,0x099C,0x139C,
4913
0x09EC,0x13EC,0x0A3C,0x143C,0x0A8C,0x148C,0x0ADC,0x14DC,
4914
0x0B2C,0x152C,0x0B7C,0x157C,0x0BCC,0x15CC,0x0C1C,0x161C,
4915
0x0C6C,0x166C,0x0CBC,0x16BC,0x0D0C,0x170C,0x0D5C,0x175C,
4916
0x076D,0x116D,0x07BD,0x11BD,0x080D,0x120D,0x085D,0x125D,
4917
0x08AD,0x12AD,0x08FD,0x12FD,0x094D,0x134D,0x099D,0x139D,
4918
0x09ED,0x13ED,0x0A3D,0x143D,0x0A8D,0x148D,0x0ADD,0x14DD,
4919
0x0B2D,0x152D,0x0B7D,0x157D,0x0BCD,0x15CD,0x0C1D,0x161D,
4920
0x0C6D,0x166D,0x0CBD,0x16BD,0x0D0D,0x170D,0x0D5D,0x175D,
4921
0x076E,0x116E,0x07BE,0x11BE,0x080E,0x120E,0x085E,0x125E,
4922
0x08AE,0x12AE,0x08FE,0x12FE,0x094E,0x134E,0x099E,0x139E,
4923
0x0770,0x13EE,0x0A3E,0x143E,0x0A8E,0x148E,0x0ADE,0x14DE,
4924
0x0B2E,0x152E,0x0B7E,0x157E,0x0BCE,0x15CE,0x0C1E,0x161E,
4925
0x0C6E,0x166E,0x0CBE,0x16BE,0x0D0E,0x170E,0x0D5E,0x175E,
4926
0x076F,0x116F,0x07BF,0x11BF,0x080F,0x120F,0x085F,0x125F,
4927
0x08AF,0x12AF,0x08FF,0x12FF,0x094F,0x134F,0x099F,0x139F,
4928
0x09EF,0x13EF,0x0A3F,0x143F,0x0A8F,0x148F,0x0ADF,0x14DF,
4929
0x0B2F,0x152F,0x0B7F,0x157F,0x0BCF,0x15CF,0x161F,0x166F,
4930
0x16BF,0x170F,0x175F,0x1170,0x0000,0x0000,0x0000,0x0000,
4931
0x0900,0x1300,0x0950,0x1350,0x09A0,0x13A0,0x09F0,0x13F0,
4932
0x0A40,0x1440,0x0A90,0x1490,0x0AE0,0x14E0,0x0B30,0x1530,
4933
0x0B80,0x1580,0x0BD0,0x15D0,0x0C20,0x1620,0x0C70,0x1670,
4934
0x0CC0,0x16C0,0x0D10,0x1710,0x0D60,0x1760,0x0771,0x1171,
4935
0x07C1,0x11C1,0x0811,0x1211,0x0861,0x1261,0x08B1,0x12B1,
4936
0x0901,0x1301,0x0951,0x1351,0x09A1,0x13A1,0x09F1,0x13F1,
4937
0x0A41,0x1441,0x0A91,0x1491,0x0AE1,0x14E1,0x0B31,0x1531,
4938
0x0B81,0x1581,0x0BD1,0x15D1,0x0C21,0x1621,0x0C71,0x1671,
4939
0x0CC1,0x16C1,0x0D11,0x1711,0x0D61,0x1761,0x0772,0x1172,
4940
0x07C2,0x11C2,0x0812,0x1212,0x0862,0x1262,0x08B2,0x12B2,
4941
0x0902,0x1302,0x0952,0x1352,0x09A2,0x13A2,0x09F2,0x13F2,
4942
0x0A42,0x1442,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4943
0x1173,0x11C3,0x1213,0x1263,0x12B3,0x1303,0x1353,0x13A3,
4944
0x0773,0x07C3,0x0813,0x0863,0x08B3,0x0903,0x0953,0x09A3,
4945
0x13F3,0x1443,0x1493,0x14E3,0x1533,0x1583,0x0000,0x0000,
4946
0x09F3,0x0A43,0x0A93,0x0AE3,0x0B33,0x0B83,0x0000,0x0000,
4947
0x1713,0x1763,0x1174,0x11C4,0x1214,0x1264,0x12B4,0x1304,
4948
0x0D13,0x0D63,0x0774,0x07C4,0x0814,0x0864,0x08B4,0x0904,
4949
0x1354,0x13A4,0x13F4,0x1444,0x1494,0x14E4,0x1534,0x1584,
4950
0x0954,0x09A4,0x09F4,0x0A44,0x0A94,0x0AE4,0x0B34,0x0B84,
4951
0x15D4,0x1624,0x1674,0x16C4,0x1714,0x1764,0x0000,0x0000,
4952
0x0BD4,0x0C24,0x0C74,0x0CC4,0x0D14,0x0D64,0x0000,0x0000,
4953
0x12B5,0x1305,0x1355,0x13A5,0x13F5,0x1445,0x1495,0x14E5,
4954
0x0000,0x0905,0x0000,0x09A5,0x0000,0x0A45,0x0000,0x0AE5,
4955
0x1675,0x16C5,0x1715,0x1765,0x1176,0x11C6,0x1216,0x1266,
4956
0x0C75,0x0CC5,0x0D15,0x0D65,0x0776,0x07C6,0x0816,0x0866,
4957
0x12B6,0x1306,0x1356,0x13A6,0x13F6,0x1446,0x1496,0x14E6,
4958
0x1536,0x1586,0x15D6,0x1626,0x1676,0x16C6,0x0000,0x0000,
4959
0x1177,0x11C7,0x1217,0x1267,0x12B7,0x1307,0x1357,0x13A7,
4960
0x0777,0x07C7,0x0817,0x0867,0x08B7,0x0907,0x0957,0x09A7,
4961
0x13F7,0x1447,0x1497,0x14E7,0x1537,0x1587,0x15D7,0x1627,
4962
0x09F7,0x0A47,0x0A97,0x0AE7,0x0B37,0x0B87,0x0BD7,0x0C27,
4963
0x1677,0x16C7,0x1717,0x1767,0x1178,0x11C8,0x1218,0x1268,
4964
0x0C77,0x0CC7,0x0D17,0x0D67,0x0778,0x07C8,0x0818,0x0868,
4965
0x12B8,0x1308,0x1358,0x13A8,0x13F8,0x0000,0x1498,0x14E8,
4966
0x08B8,0x0908,0x08B6,0x0906,0x09A8,0x0000,0x0000,0x0000,
4967
0x0000,0x0000,0x1538,0x1588,0x15D8,0x0000,0x1678,0x16C8,
4968
0x0956,0x09A6,0x09F6,0x0A46,0x0B88,0x0000,0x0000,0x0000,
4969
0x1718,0x1768,0x1179,0x11C9,0x0000,0x0000,0x12B9,0x1309,
4970
0x0D18,0x0D68,0x0A96,0x0AE6,0x0000,0x0000,0x0000,0x0000,
4971
0x13A9,0x13F9,0x1449,0x1499,0x14E9,0x1539,0x1589,0x15D9,
4972
0x09A9,0x09F9,0x0BD6,0x0C26,0x0B39,0x0000,0x0000,0x0000,
4973
0x0000,0x0000,0x16C9,0x1719,0x0000,0x0000,0x11CA,0x121A,
4974
0x0B36,0x0B86,0x0C76,0x0CC6,0x0D19,0x0000,0x0000,0x0000
4979
static uint16 uni_2160_217F[32]=
4981
0x0739,0x0789,0x07D9,0x0829,0x0879,0x08C9,0x0919,0x0969,
4982
0x09B9,0x0A09,0x0A59,0x0AA9,0x0AF9,0x0B49,0x0B99,0x0BE9,
4983
0x1139,0x1189,0x11D9,0x1229,0x1279,0x12C9,0x1319,0x1369,
4984
0x13B9,0x1409,0x1459,0x14A9,0x14F9,0x1549,0x1599,0x15E9
4989
static uint16 uni_24B0_24EF[64]=
4991
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0511,0x0512,
4992
0x0513,0x0514,0x0515,0x0516,0x0517,0x0518,0x0519,0x051A,
4993
0x051B,0x051C,0x051D,0x051E,0x051F,0x0520,0x0521,0x0522,
4994
0x0523,0x0524,0x0525,0x0526,0x0527,0x0528,0x0529,0x052A,
4995
0x0531,0x0532,0x0533,0x0534,0x0535,0x0536,0x0537,0x0538,
4996
0x0539,0x053A,0x053B,0x053C,0x053D,0x053E,0x053F,0x0540,
4997
0x0541,0x0542,0x0543,0x0544,0x0545,0x0546,0x0547,0x0548,
4998
0x0549,0x054A,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
5003
static uint16 uni_FF20_FF5F[64]=
5005
0x0000,0x0560,0x05B0,0x0600,0x0650,0x06A0,0x06F0,0x0740,
5006
0x0790,0x07E0,0x0830,0x0880,0x08D0,0x0920,0x0970,0x09C0,
5007
0x0A10,0x0A60,0x0AB0,0x0B00,0x0B50,0x0BA0,0x0BF0,0x0C40,
5008
0x0C90,0x0CE0,0x0D30,0x0000,0x0000,0x0000,0x0000,0x0000,
5009
0x0000,0x0F60,0x0FB0,0x1000,0x1050,0x10A0,0x10F0,0x1140,
5010
0x1190,0x11E0,0x1230,0x1280,0x12D0,0x1320,0x1370,0x13C0,
5011
0x1410,0x1460,0x14B0,0x1500,0x1550,0x15A0,0x15F0,0x1640,
5012
0x1690,0x16E0,0x1730,0x0000,0x0000,0x0000,0x0000,0x0000
5021
a number 0..15, if a valid HEX digit in lower case,
5025
static int hexlo(int x)
5027
static char hex_lo_digit[256]=
5029
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* ................ */
5030
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* ................ */
5031
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* !"#$%&'()*+,-./ */
5032
0, 1, 2, 3, 4, 5, 6, 7, 8, 9,-1,-1,-1,-1,-1,-1, /* 0123456789:;<=>? */
5033
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* @ABCDEFGHIJKLMNO */
5034
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* PQRSTUVWXYZ[\]^_ */
5035
-1,10,11,12,13,14,15,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* `abcdefghijklmno */
5036
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* pqrstuvwxyz{|}~. */
5037
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* ................ */
5038
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* ................ */
5039
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* ................ */
5040
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* ................ */
5041
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* ................ */
5042
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* ................ */
5043
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* ................ */
5044
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* ................ */
5046
return hex_lo_digit[(unsigned int) x];
5053
A..Z capital letters,
5058
static char filename_safe_char[128]=
5060
1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* ................ */
5061
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* ................ */
5062
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* !"#$%&'()*+,-./ */
5063
1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0, /* 0123456789:;<=>? */
5064
0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* @ABCDEFGHIJKLMNO */
5065
1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1, /* PQRSTUVWXYZ[\]^_ */
5066
0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* `abcdefghijklmno */
5067
1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0, /* pqrstuvwxyz{|}~. */
5070
#define MY_FILENAME_ESCAPE '@'
5073
my_mb_wc_filename(CHARSET_INFO *cs __attribute__((unused)),
5074
my_wc_t *pwc, const uchar *s, const uchar *e)
5078
return MY_CS_TOOSMALL;
5080
if (*s < 128 && filename_safe_char[*s])
5086
if (*s != MY_FILENAME_ESCAPE)
5090
return MY_CS_TOOSMALL3;
5095
if (byte1 >= 0x30 && byte1 <= 0x7F &&
5096
byte2 >= 0x30 && byte2 <= 0x7F)
5098
int code= (byte1 - 0x30) * 80 + byte2 - 0x30;
5099
if (code < 5994 && touni[code])
5104
if (byte1 == '@' && byte2 == '@')
5112
return MY_CS_TOOSMALL4;
5114
if ((byte1= hexlo(byte1)) >= 0 &&
5115
(byte2= hexlo(byte2)) >= 0)
5117
int byte3= hexlo(s[3]);
5118
int byte4= hexlo(s[4]);
5119
if (byte3 >=0 && byte4 >=0)
5121
*pwc= (byte1 << 12) + (byte2 << 8) + (byte3 << 4) + byte4;
5131
my_wc_mb_filename(CHARSET_INFO *cs __attribute__((unused)),
5132
my_wc_t wc, uchar *s, uchar *e)
5135
char hex[]= "0123456789abcdef";
5136
if (wc < 128 && filename_safe_char[wc])
5143
return MY_CS_TOOSMALL3;
5145
*s++= MY_FILENAME_ESCAPE;
5146
if ((wc >= 0x00C0 && wc <= 0x05FF && (code= uni_0C00_05FF[wc - 0x00C0])) ||
5147
(wc >= 0x1E00 && wc <= 0x1FFF && (code= uni_1E00_1FFF[wc - 0x1E00])) ||
5148
(wc >= 0x2160 && wc <= 0x217F && (code= uni_2160_217F[wc - 0x2160])) ||
5149
(wc >= 0x24B0 && wc <= 0x24EF && (code= uni_24B0_24EF[wc - 0x24B0])) ||
5150
(wc >= 0xFF20 && wc <= 0xFF5F && (code= uni_FF20_FF5F[wc - 0xFF20])))
5152
*s++= (code / 80) + 0x30;
5153
*s++= (code % 80) + 0x30;
5159
return MY_CS_TOOSMALL5;
5161
*s++= hex[(wc >> 12) & 15];
5162
*s++= hex[(wc >> 8) & 15];
5163
*s++= hex[(wc >> 4) & 15];
5164
*s++= hex[(wc) & 15];
5169
static MY_COLLATION_HANDLER my_collation_filename_handler =
5172
my_strnncoll_utf8mb3,
5173
my_strnncollsp_utf8mb3,
5174
my_strnxfrm_utf8mb3,
5175
my_strnxfrmlen_utf8mb3,
5178
my_strcasecmp_utf8mb3,
5180
my_hash_sort_utf8mb3,
5181
my_propagate_complex
5185
static MY_CHARSET_HANDLER my_charset_filename_handler=
5188
my_ismbchar_utf8mb3,
5189
my_mbcharlen_utf8mb3,
5192
my_well_formed_len_mb,
5198
my_caseup_str_utf8mb3,
5199
my_casedn_str_utf8mb3,
5203
my_long10_to_str_8bit,
5204
my_longlong10_to_str_8bit,
5212
my_strntoull10rnd_8bit,
5218
CHARSET_INFO my_charset_filename=
5220
17,0,0, /* number */
5221
MY_CS_COMPILED|MY_CS_PRIMARY|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_HIDDEN|MY_CS_NONASCII,
5222
"filename", /* cs name */
5223
"filename", /* name */
5225
NULL, /* tailoring */
5226
ctype_utf8, /* ctype */
5227
to_lower_utf8, /* to_lower */
5228
to_upper_utf8, /* to_upper */
5229
to_upper_utf8, /* sort_order */
5230
NULL, /* contractions */
5231
NULL, /* sort_order_big*/
5232
NULL, /* tab_to_uni */
5233
NULL, /* tab_from_uni */
5234
my_unicase_default, /* caseinfo */
5235
NULL, /* state_map */
5236
NULL, /* ident_map */
5237
1, /* strxfrm_multiply */
5238
1, /* caseup_multiply */
5239
1, /* casedn_multiply */
5242
0, /* min_sort_char */
5243
0xFFFF, /* max_sort_char */
5245
0, /* escape_with_backslash_is_dangerous */
5246
1, /* levels_for_compare */
5247
1, /* levels_for_order */
5248
&my_charset_filename_handler,
5249
&my_collation_filename_handler
5255
static void test_mb(CHARSET_INFO *cs, uchar *s)
5259
if (my_ismbhead_utf8(cs,*s))
5261
uint len=my_mbcharlen_utf8(cs,*s);
5279
char str[1024]=" utf8 test проба ПЕРА по-РУССКИ";
5282
test_mb(cs,(uchar*)str);
5284
printf("orig :'%s'\n",str);
5286
my_caseup_utf8(cs,str,15);
5287
printf("caseup :'%s'\n",str);
5289
my_caseup_str_utf8(cs,str);
5290
printf("caseup_str:'%s'\n",str);
5292
my_casedn_utf8(cs,str,15);
5293
printf("casedn :'%s'\n",str);
5295
my_casedn_str_utf8(cs,str);
5296
printf("casedn_str:'%s'\n",str);
5303
#endif /* HAVE_CHARSET_utf8mb3 */