1/* Copyright (c) 2000, 2013, Oracle and/or its affiliates.
2 Copyright (c) 2009, 2017, MariaDB
3
4 This library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Library General Public
6 License as published by the Free Software Foundation; version 2
7 of the License.
8
9 This library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Library General Public License for more details.
13
14 You should have received a copy of the GNU Library General Public
15 License along with this library; if not, write to the Free
16 Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
17 MA 02110-1301, USA */
18
19/* UTF8 according RFC 2279 */
20/* Written by Alexander Barkov <bar@udm.net> */
21
22#include "strings_def.h"
23#include <m_ctype.h>
24
25#ifndef EILSEQ
26#define EILSEQ ENOENT
27#endif
28
29/* Detect special bytes and sequences */
30#define IS_CONTINUATION_BYTE(c) (((uchar) (c) ^ 0x80) < 0x40)
31
32/*
33 Check MB2 character assuming that b0 is alredy known to be >= 0xC2.
34 Use this macro if the caller already checked b0 for:
35 - an MB1 character
36 - an unused gap between MB1 and MB2HEAD
37*/
38#define IS_UTF8MB2_STEP2(b0,b1) (((uchar) (b0) < 0xE0) && \
39 IS_CONTINUATION_BYTE((uchar) b1))
40
41/*
42 Check MB3 character assuming that b0 is already known to be
43 in the valid MB3HEAD range [0xE0..0xEF].
44*/
45#define IS_UTF8MB3_STEP2(b0,b1,b2) (IS_CONTINUATION_BYTE(b1) && \
46 IS_CONTINUATION_BYTE(b2) && \
47 ((uchar) b0 >= 0xe1 || (uchar) b1 >= 0xa0))
48
49/*
50 Check MB3 character assuming that b0 is already known to be >= 0xE0,
51 but is not checked for the high end 0xF0 yet.
52 Use this macro if the caller already checked b0 for:
53 - an MB1 character
54 - an unused gap between MB1 and MB2HEAD
55 - an MB2HEAD
56*/
57#define IS_UTF8MB3_STEP3(b0,b1,b2) (((uchar) (b0) < 0xF0) && \
58 IS_UTF8MB3_STEP2(b0,b1,b2))
59
60/*
61 UTF-8 quick four-byte mask:
62 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
63 Encoding allows to encode U+00010000..U+001FFFFF
64
65 The maximum character defined in the Unicode standard is U+0010FFFF.
66 Higher characters U+00110000..U+001FFFFF are not used.
67
68 11110000.10010000.10xxxxxx.10xxxxxx == F0.90.80.80 == U+00010000 (min)
69 11110100.10001111.10111111.10111111 == F4.8F.BF.BF == U+0010FFFF (max)
70
71 Valid codes:
72 [F0][90..BF][80..BF][80..BF]
73 [F1][80..BF][80..BF][80..BF]
74 [F2][80..BF][80..BF][80..BF]
75 [F3][80..BF][80..BF][80..BF]
76 [F4][80..8F][80..BF][80..BF]
77*/
78
79/*
80 Check MB4 character assuming that b0 is already
81 known to be in the range [0xF0..0xF4]
82*/
83#define IS_UTF8MB4_STEP2(b0,b1,b2,b3) (IS_CONTINUATION_BYTE(b1) && \
84 IS_CONTINUATION_BYTE(b2) && \
85 IS_CONTINUATION_BYTE(b3) && \
86 (b0 >= 0xf1 || b1 >= 0x90) && \
87 (b0 <= 0xf3 || b1 <= 0x8F))
88#define IS_UTF8MB4_STEP3(b0,b1,b2,b3) (((uchar) (b0) < 0xF5) && \
89 IS_UTF8MB4_STEP2(b0,b1,b2,b3))
90
91/* Convert individual bytes to Unicode code points */
92#define UTF8MB2_CODE(b0,b1) (((my_wc_t) ((uchar) b0 & 0x1f) << 6) |\
93 ((my_wc_t) ((uchar) b1 ^ 0x80)))
94#define UTF8MB3_CODE(b0,b1,b2) (((my_wc_t) ((uchar) b0 & 0x0f) << 12) |\
95 ((my_wc_t) ((uchar) b1 ^ 0x80) << 6) |\
96 ((my_wc_t) ((uchar) b2 ^ 0x80)))
97#define UTF8MB4_CODE(b0,b1,b2,b3) (((my_wc_t) ((uchar) b0 & 0x07) << 18) |\
98 ((my_wc_t) ((uchar) b1 ^ 0x80) << 12) |\
99 ((my_wc_t) ((uchar) b2 ^ 0x80) << 6) |\
100 (my_wc_t) ((uchar) b3 ^ 0x80))
101
102/* Definitions for strcoll.ic */
103#define IS_MB1_CHAR(x) ((uchar) (x) < 0x80)
104#define IS_MB1_MBHEAD_UNUSED_GAP(x) ((uchar) (x) < 0xC2)
105#define IS_MB2_CHAR(x,y) IS_UTF8MB2_STEP2(x,y)
106#define IS_MB3_CHAR(x,y,z) IS_UTF8MB3_STEP3(x,y,z)
107
108/* Collation names */
109#define MY_UTF8MB3_GENERAL_CI MY_UTF8MB3 "_general_ci"
110#define MY_UTF8MB3_GENERAL_CS MY_UTF8MB3 "_general_cs"
111#define MY_UTF8MB3_BIN MY_UTF8MB3 "_bin"
112#define MY_UTF8MB4_GENERAL_CI MY_UTF8MB4 "_general_ci"
113#define MY_UTF8MB4_GENERAL_CS MY_UTF8MB4 "_general_cs"
114#define MY_UTF8MB4_GENERAL_NOPAD_CI MY_UTF8MB4 "_general_nopad_ci"
115#define MY_UTF8MB4_BIN MY_UTF8MB4 "_bin"
116#define MY_UTF8MB4_NOPAD_BIN MY_UTF8MB4 "_nopad_bin"
117
118
119
120#ifndef HAVE_CHARSET_utf8
121#define HAVE_CHARSET_utf8
122#endif
123
124#ifdef HAVE_CHARSET_utf8
125#define HAVE_UNIDATA
126#endif
127
128#ifdef HAVE_CHARSET_ucs2
129#define HAVE_UNIDATA
130#endif
131
132#ifdef HAVE_CHARSET_utf16
133#define HAVE_UNIDATA
134#endif
135
136#ifdef HAVE_CHARSET_utf32
137#define HAVE_UNIDATA
138#endif
139
140
141#if defined(HAVE_CHARSET_utf8) || defined(HAVE_CHARSET_utf8mb4)
142
143static inline
144int my_valid_mbcharlen_utf8mb3(const uchar *s, const uchar *e)
145{
146 uchar c;
147
148 DBUG_ASSERT(s < e);
149 c= s[0];
150 if (c < 0x80)
151 return 1;
152
153 if (c < 0xc2)
154 return MY_CS_ILSEQ;
155
156 if (c < 0xe0)
157 {
158 if (s+2 > e) /* We need 2 characters */
159 return MY_CS_TOOSMALL2;
160
161 if (!(IS_CONTINUATION_BYTE(s[1])))
162 return MY_CS_ILSEQ;
163
164 return 2;
165 }
166
167 DBUG_ASSERT(c < 0xf0);
168 if (s+3 > e) /* We need 3 characters */
169 return MY_CS_TOOSMALL3;
170
171 if (!IS_UTF8MB3_STEP2(c, s[1], s[2]))
172 return MY_CS_ILSEQ;
173
174 return 3;
175}
176
177#endif /*HAVE_CHARSET_utf8 || HAVE_CHARSET_utf8mb4*/
178
179#ifdef HAVE_UNIDATA
180
181#include "my_uctype.h"
182
183static MY_UNICASE_CHARACTER plane00[]={
184 {0x0000,0x0000,0x0000}, {0x0001,0x0001,0x0001},
185 {0x0002,0x0002,0x0002}, {0x0003,0x0003,0x0003},
186 {0x0004,0x0004,0x0004}, {0x0005,0x0005,0x0005},
187 {0x0006,0x0006,0x0006}, {0x0007,0x0007,0x0007},
188 {0x0008,0x0008,0x0008}, {0x0009,0x0009,0x0009},
189 {0x000A,0x000A,0x000A}, {0x000B,0x000B,0x000B},
190 {0x000C,0x000C,0x000C}, {0x000D,0x000D,0x000D},
191 {0x000E,0x000E,0x000E}, {0x000F,0x000F,0x000F},
192 {0x0010,0x0010,0x0010}, {0x0011,0x0011,0x0011},
193 {0x0012,0x0012,0x0012}, {0x0013,0x0013,0x0013},
194 {0x0014,0x0014,0x0014}, {0x0015,0x0015,0x0015},
195 {0x0016,0x0016,0x0016}, {0x0017,0x0017,0x0017},
196 {0x0018,0x0018,0x0018}, {0x0019,0x0019,0x0019},
197 {0x001A,0x001A,0x001A}, {0x001B,0x001B,0x001B},
198 {0x001C,0x001C,0x001C}, {0x001D,0x001D,0x001D},
199 {0x001E,0x001E,0x001E}, {0x001F,0x001F,0x001F},
200 {0x0020,0x0020,0x0020}, {0x0021,0x0021,0x0021},
201 {0x0022,0x0022,0x0022}, {0x0023,0x0023,0x0023},
202 {0x0024,0x0024,0x0024}, {0x0025,0x0025,0x0025},
203 {0x0026,0x0026,0x0026}, {0x0027,0x0027,0x0027},
204 {0x0028,0x0028,0x0028}, {0x0029,0x0029,0x0029},
205 {0x002A,0x002A,0x002A}, {0x002B,0x002B,0x002B},
206 {0x002C,0x002C,0x002C}, {0x002D,0x002D,0x002D},
207 {0x002E,0x002E,0x002E}, {0x002F,0x002F,0x002F},
208 {0x0030,0x0030,0x0030}, {0x0031,0x0031,0x0031},
209 {0x0032,0x0032,0x0032}, {0x0033,0x0033,0x0033},
210 {0x0034,0x0034,0x0034}, {0x0035,0x0035,0x0035},
211 {0x0036,0x0036,0x0036}, {0x0037,0x0037,0x0037},
212 {0x0038,0x0038,0x0038}, {0x0039,0x0039,0x0039},
213 {0x003A,0x003A,0x003A}, {0x003B,0x003B,0x003B},
214 {0x003C,0x003C,0x003C}, {0x003D,0x003D,0x003D},
215 {0x003E,0x003E,0x003E}, {0x003F,0x003F,0x003F},
216 {0x0040,0x0040,0x0040}, {0x0041,0x0061,0x0041},
217 {0x0042,0x0062,0x0042}, {0x0043,0x0063,0x0043},
218 {0x0044,0x0064,0x0044}, {0x0045,0x0065,0x0045},
219 {0x0046,0x0066,0x0046}, {0x0047,0x0067,0x0047},
220 {0x0048,0x0068,0x0048}, {0x0049,0x0069,0x0049},
221 {0x004A,0x006A,0x004A}, {0x004B,0x006B,0x004B},
222 {0x004C,0x006C,0x004C}, {0x004D,0x006D,0x004D},
223 {0x004E,0x006E,0x004E}, {0x004F,0x006F,0x004F},
224 {0x0050,0x0070,0x0050}, {0x0051,0x0071,0x0051},
225 {0x0052,0x0072,0x0052}, {0x0053,0x0073,0x0053},
226 {0x0054,0x0074,0x0054}, {0x0055,0x0075,0x0055},
227 {0x0056,0x0076,0x0056}, {0x0057,0x0077,0x0057},
228 {0x0058,0x0078,0x0058}, {0x0059,0x0079,0x0059},
229 {0x005A,0x007A,0x005A}, {0x005B,0x005B,0x005B},
230 {0x005C,0x005C,0x005C}, {0x005D,0x005D,0x005D},
231 {0x005E,0x005E,0x005E}, {0x005F,0x005F,0x005F},
232 {0x0060,0x0060,0x0060}, {0x0041,0x0061,0x0041},
233 {0x0042,0x0062,0x0042}, {0x0043,0x0063,0x0043},
234 {0x0044,0x0064,0x0044}, {0x0045,0x0065,0x0045},
235 {0x0046,0x0066,0x0046}, {0x0047,0x0067,0x0047},
236 {0x0048,0x0068,0x0048}, {0x0049,0x0069,0x0049},
237 {0x004A,0x006A,0x004A}, {0x004B,0x006B,0x004B},
238 {0x004C,0x006C,0x004C}, {0x004D,0x006D,0x004D},
239 {0x004E,0x006E,0x004E}, {0x004F,0x006F,0x004F},
240 {0x0050,0x0070,0x0050}, {0x0051,0x0071,0x0051},
241 {0x0052,0x0072,0x0052}, {0x0053,0x0073,0x0053},
242 {0x0054,0x0074,0x0054}, {0x0055,0x0075,0x0055},
243 {0x0056,0x0076,0x0056}, {0x0057,0x0077,0x0057},
244 {0x0058,0x0078,0x0058}, {0x0059,0x0079,0x0059},
245 {0x005A,0x007A,0x005A}, {0x007B,0x007B,0x007B},
246 {0x007C,0x007C,0x007C}, {0x007D,0x007D,0x007D},
247 {0x007E,0x007E,0x007E}, {0x007F,0x007F,0x007F},
248 {0x0080,0x0080,0x0080}, {0x0081,0x0081,0x0081},
249 {0x0082,0x0082,0x0082}, {0x0083,0x0083,0x0083},
250 {0x0084,0x0084,0x0084}, {0x0085,0x0085,0x0085},
251 {0x0086,0x0086,0x0086}, {0x0087,0x0087,0x0087},
252 {0x0088,0x0088,0x0088}, {0x0089,0x0089,0x0089},
253 {0x008A,0x008A,0x008A}, {0x008B,0x008B,0x008B},
254 {0x008C,0x008C,0x008C}, {0x008D,0x008D,0x008D},
255 {0x008E,0x008E,0x008E}, {0x008F,0x008F,0x008F},
256 {0x0090,0x0090,0x0090}, {0x0091,0x0091,0x0091},
257 {0x0092,0x0092,0x0092}, {0x0093,0x0093,0x0093},
258 {0x0094,0x0094,0x0094}, {0x0095,0x0095,0x0095},
259 {0x0096,0x0096,0x0096}, {0x0097,0x0097,0x0097},
260 {0x0098,0x0098,0x0098}, {0x0099,0x0099,0x0099},
261 {0x009A,0x009A,0x009A}, {0x009B,0x009B,0x009B},
262 {0x009C,0x009C,0x009C}, {0x009D,0x009D,0x009D},
263 {0x009E,0x009E,0x009E}, {0x009F,0x009F,0x009F},
264 {0x00A0,0x00A0,0x00A0}, {0x00A1,0x00A1,0x00A1},
265 {0x00A2,0x00A2,0x00A2}, {0x00A3,0x00A3,0x00A3},
266 {0x00A4,0x00A4,0x00A4}, {0x00A5,0x00A5,0x00A5},
267 {0x00A6,0x00A6,0x00A6}, {0x00A7,0x00A7,0x00A7},
268 {0x00A8,0x00A8,0x00A8}, {0x00A9,0x00A9,0x00A9},
269 {0x00AA,0x00AA,0x00AA}, {0x00AB,0x00AB,0x00AB},
270 {0x00AC,0x00AC,0x00AC}, {0x00AD,0x00AD,0x00AD},
271 {0x00AE,0x00AE,0x00AE}, {0x00AF,0x00AF,0x00AF},
272 {0x00B0,0x00B0,0x00B0}, {0x00B1,0x00B1,0x00B1},
273 {0x00B2,0x00B2,0x00B2}, {0x00B3,0x00B3,0x00B3},
274 {0x00B4,0x00B4,0x00B4}, {0x039C,0x00B5,0x039C},
275 {0x00B6,0x00B6,0x00B6}, {0x00B7,0x00B7,0x00B7},
276 {0x00B8,0x00B8,0x00B8}, {0x00B9,0x00B9,0x00B9},
277 {0x00BA,0x00BA,0x00BA}, {0x00BB,0x00BB,0x00BB},
278 {0x00BC,0x00BC,0x00BC}, {0x00BD,0x00BD,0x00BD},
279 {0x00BE,0x00BE,0x00BE}, {0x00BF,0x00BF,0x00BF},
280 {0x00C0,0x00E0,0x0041}, {0x00C1,0x00E1,0x0041},
281 {0x00C2,0x00E2,0x0041}, {0x00C3,0x00E3,0x0041},
282 {0x00C4,0x00E4,0x0041}, {0x00C5,0x00E5,0x0041},
283 {0x00C6,0x00E6,0x00C6}, {0x00C7,0x00E7,0x0043},
284 {0x00C8,0x00E8,0x0045}, {0x00C9,0x00E9,0x0045},
285 {0x00CA,0x00EA,0x0045}, {0x00CB,0x00EB,0x0045},
286 {0x00CC,0x00EC,0x0049}, {0x00CD,0x00ED,0x0049},
287 {0x00CE,0x00EE,0x0049}, {0x00CF,0x00EF,0x0049},
288 {0x00D0,0x00F0,0x00D0}, {0x00D1,0x00F1,0x004E},
289 {0x00D2,0x00F2,0x004F}, {0x00D3,0x00F3,0x004F},
290 {0x00D4,0x00F4,0x004F}, {0x00D5,0x00F5,0x004F},
291 {0x00D6,0x00F6,0x004F}, {0x00D7,0x00D7,0x00D7},
292 {0x00D8,0x00F8,0x00D8}, {0x00D9,0x00F9,0x0055},
293 {0x00DA,0x00FA,0x0055}, {0x00DB,0x00FB,0x0055},
294 {0x00DC,0x00FC,0x0055}, {0x00DD,0x00FD,0x0059},
295 {0x00DE,0x00FE,0x00DE}, {0x00DF,0x00DF,0x0053},
296 {0x00C0,0x00E0,0x0041}, {0x00C1,0x00E1,0x0041},
297 {0x00C2,0x00E2,0x0041}, {0x00C3,0x00E3,0x0041},
298 {0x00C4,0x00E4,0x0041}, {0x00C5,0x00E5,0x0041},
299 {0x00C6,0x00E6,0x00C6}, {0x00C7,0x00E7,0x0043},
300 {0x00C8,0x00E8,0x0045}, {0x00C9,0x00E9,0x0045},
301 {0x00CA,0x00EA,0x0045}, {0x00CB,0x00EB,0x0045},
302 {0x00CC,0x00EC,0x0049}, {0x00CD,0x00ED,0x0049},
303 {0x00CE,0x00EE,0x0049}, {0x00CF,0x00EF,0x0049},
304 {0x00D0,0x00F0,0x00D0}, {0x00D1,0x00F1,0x004E},
305 {0x00D2,0x00F2,0x004F}, {0x00D3,0x00F3,0x004F},
306 {0x00D4,0x00F4,0x004F}, {0x00D5,0x00F5,0x004F},
307 {0x00D6,0x00F6,0x004F}, {0x00F7,0x00F7,0x00F7},
308 {0x00D8,0x00F8,0x00D8}, {0x00D9,0x00F9,0x0055},
309 {0x00DA,0x00FA,0x0055}, {0x00DB,0x00FB,0x0055},
310 {0x00DC,0x00FC,0x0055}, {0x00DD,0x00FD,0x0059},
311 {0x00DE,0x00FE,0x00DE}, {0x0178,0x00FF,0x0059}
312};
313
314
315/*
316 Almost similar to plane00, but maps sorting order
317 for U+00DF to 0x00DF instead of 0x0053.
318*/
319static MY_UNICASE_CHARACTER plane00_mysql500[]={
320 {0x0000,0x0000,0x0000}, {0x0001,0x0001,0x0001},
321 {0x0002,0x0002,0x0002}, {0x0003,0x0003,0x0003},
322 {0x0004,0x0004,0x0004}, {0x0005,0x0005,0x0005},
323 {0x0006,0x0006,0x0006}, {0x0007,0x0007,0x0007},
324 {0x0008,0x0008,0x0008}, {0x0009,0x0009,0x0009},
325 {0x000A,0x000A,0x000A}, {0x000B,0x000B,0x000B},
326 {0x000C,0x000C,0x000C}, {0x000D,0x000D,0x000D},
327 {0x000E,0x000E,0x000E}, {0x000F,0x000F,0x000F},
328 {0x0010,0x0010,0x0010}, {0x0011,0x0011,0x0011},
329 {0x0012,0x0012,0x0012}, {0x0013,0x0013,0x0013},
330 {0x0014,0x0014,0x0014}, {0x0015,0x0015,0x0015},
331 {0x0016,0x0016,0x0016}, {0x0017,0x0017,0x0017},
332 {0x0018,0x0018,0x0018}, {0x0019,0x0019,0x0019},
333 {0x001A,0x001A,0x001A}, {0x001B,0x001B,0x001B},
334 {0x001C,0x001C,0x001C}, {0x001D,0x001D,0x001D},
335 {0x001E,0x001E,0x001E}, {0x001F,0x001F,0x001F},
336 {0x0020,0x0020,0x0020}, {0x0021,0x0021,0x0021},
337 {0x0022,0x0022,0x0022}, {0x0023,0x0023,0x0023},
338 {0x0024,0x0024,0x0024}, {0x0025,0x0025,0x0025},
339 {0x0026,0x0026,0x0026}, {0x0027,0x0027,0x0027},
340 {0x0028,0x0028,0x0028}, {0x0029,0x0029,0x0029},
341 {0x002A,0x002A,0x002A}, {0x002B,0x002B,0x002B},
342 {0x002C,0x002C,0x002C}, {0x002D,0x002D,0x002D},
343 {0x002E,0x002E,0x002E}, {0x002F,0x002F,0x002F},
344 {0x0030,0x0030,0x0030}, {0x0031,0x0031,0x0031},
345 {0x0032,0x0032,0x0032}, {0x0033,0x0033,0x0033},
346 {0x0034,0x0034,0x0034}, {0x0035,0x0035,0x0035},
347 {0x0036,0x0036,0x0036}, {0x0037,0x0037,0x0037},
348 {0x0038,0x0038,0x0038}, {0x0039,0x0039,0x0039},
349 {0x003A,0x003A,0x003A}, {0x003B,0x003B,0x003B},
350 {0x003C,0x003C,0x003C}, {0x003D,0x003D,0x003D},
351 {0x003E,0x003E,0x003E}, {0x003F,0x003F,0x003F},
352 {0x0040,0x0040,0x0040}, {0x0041,0x0061,0x0041},
353 {0x0042,0x0062,0x0042}, {0x0043,0x0063,0x0043},
354 {0x0044,0x0064,0x0044}, {0x0045,0x0065,0x0045},
355 {0x0046,0x0066,0x0046}, {0x0047,0x0067,0x0047},
356 {0x0048,0x0068,0x0048}, {0x0049,0x0069,0x0049},
357 {0x004A,0x006A,0x004A}, {0x004B,0x006B,0x004B},
358 {0x004C,0x006C,0x004C}, {0x004D,0x006D,0x004D},
359 {0x004E,0x006E,0x004E}, {0x004F,0x006F,0x004F},
360 {0x0050,0x0070,0x0050}, {0x0051,0x0071,0x0051},
361 {0x0052,0x0072,0x0052}, {0x0053,0x0073,0x0053},
362 {0x0054,0x0074,0x0054}, {0x0055,0x0075,0x0055},
363 {0x0056,0x0076,0x0056}, {0x0057,0x0077,0x0057},
364 {0x0058,0x0078,0x0058}, {0x0059,0x0079,0x0059},
365 {0x005A,0x007A,0x005A}, {0x005B,0x005B,0x005B},
366 {0x005C,0x005C,0x005C}, {0x005D,0x005D,0x005D},
367 {0x005E,0x005E,0x005E}, {0x005F,0x005F,0x005F},
368 {0x0060,0x0060,0x0060}, {0x0041,0x0061,0x0041},
369 {0x0042,0x0062,0x0042}, {0x0043,0x0063,0x0043},
370 {0x0044,0x0064,0x0044}, {0x0045,0x0065,0x0045},
371 {0x0046,0x0066,0x0046}, {0x0047,0x0067,0x0047},
372 {0x0048,0x0068,0x0048}, {0x0049,0x0069,0x0049},
373 {0x004A,0x006A,0x004A}, {0x004B,0x006B,0x004B},
374 {0x004C,0x006C,0x004C}, {0x004D,0x006D,0x004D},
375 {0x004E,0x006E,0x004E}, {0x004F,0x006F,0x004F},
376 {0x0050,0x0070,0x0050}, {0x0051,0x0071,0x0051},
377 {0x0052,0x0072,0x0052}, {0x0053,0x0073,0x0053},
378 {0x0054,0x0074,0x0054}, {0x0055,0x0075,0x0055},
379 {0x0056,0x0076,0x0056}, {0x0057,0x0077,0x0057},
380 {0x0058,0x0078,0x0058}, {0x0059,0x0079,0x0059},
381 {0x005A,0x007A,0x005A}, {0x007B,0x007B,0x007B},
382 {0x007C,0x007C,0x007C}, {0x007D,0x007D,0x007D},
383 {0x007E,0x007E,0x007E}, {0x007F,0x007F,0x007F},
384 {0x0080,0x0080,0x0080}, {0x0081,0x0081,0x0081},
385 {0x0082,0x0082,0x0082}, {0x0083,0x0083,0x0083},
386 {0x0084,0x0084,0x0084}, {0x0085,0x0085,0x0085},
387 {0x0086,0x0086,0x0086}, {0x0087,0x0087,0x0087},
388 {0x0088,0x0088,0x0088}, {0x0089,0x0089,0x0089},
389 {0x008A,0x008A,0x008A}, {0x008B,0x008B,0x008B},
390 {0x008C,0x008C,0x008C}, {0x008D,0x008D,0x008D},
391 {0x008E,0x008E,0x008E}, {0x008F,0x008F,0x008F},
392 {0x0090,0x0090,0x0090}, {0x0091,0x0091,0x0091},
393 {0x0092,0x0092,0x0092}, {0x0093,0x0093,0x0093},
394 {0x0094,0x0094,0x0094}, {0x0095,0x0095,0x0095},
395 {0x0096,0x0096,0x0096}, {0x0097,0x0097,0x0097},
396 {0x0098,0x0098,0x0098}, {0x0099,0x0099,0x0099},
397 {0x009A,0x009A,0x009A}, {0x009B,0x009B,0x009B},
398 {0x009C,0x009C,0x009C}, {0x009D,0x009D,0x009D},
399 {0x009E,0x009E,0x009E}, {0x009F,0x009F,0x009F},
400 {0x00A0,0x00A0,0x00A0}, {0x00A1,0x00A1,0x00A1},
401 {0x00A2,0x00A2,0x00A2}, {0x00A3,0x00A3,0x00A3},
402 {0x00A4,0x00A4,0x00A4}, {0x00A5,0x00A5,0x00A5},
403 {0x00A6,0x00A6,0x00A6}, {0x00A7,0x00A7,0x00A7},
404 {0x00A8,0x00A8,0x00A8}, {0x00A9,0x00A9,0x00A9},
405 {0x00AA,0x00AA,0x00AA}, {0x00AB,0x00AB,0x00AB},
406 {0x00AC,0x00AC,0x00AC}, {0x00AD,0x00AD,0x00AD},
407 {0x00AE,0x00AE,0x00AE}, {0x00AF,0x00AF,0x00AF},
408 {0x00B0,0x00B0,0x00B0}, {0x00B1,0x00B1,0x00B1},
409 {0x00B2,0x00B2,0x00B2}, {0x00B3,0x00B3,0x00B3},
410 {0x00B4,0x00B4,0x00B4}, {0x039C,0x00B5,0x039C},
411 {0x00B6,0x00B6,0x00B6}, {0x00B7,0x00B7,0x00B7},
412 {0x00B8,0x00B8,0x00B8}, {0x00B9,0x00B9,0x00B9},
413 {0x00BA,0x00BA,0x00BA}, {0x00BB,0x00BB,0x00BB},
414 {0x00BC,0x00BC,0x00BC}, {0x00BD,0x00BD,0x00BD},
415 {0x00BE,0x00BE,0x00BE}, {0x00BF,0x00BF,0x00BF},
416 {0x00C0,0x00E0,0x0041}, {0x00C1,0x00E1,0x0041},
417 {0x00C2,0x00E2,0x0041}, {0x00C3,0x00E3,0x0041},
418 {0x00C4,0x00E4,0x0041}, {0x00C5,0x00E5,0x0041},
419 {0x00C6,0x00E6,0x00C6}, {0x00C7,0x00E7,0x0043},
420 {0x00C8,0x00E8,0x0045}, {0x00C9,0x00E9,0x0045},
421 {0x00CA,0x00EA,0x0045}, {0x00CB,0x00EB,0x0045},
422 {0x00CC,0x00EC,0x0049}, {0x00CD,0x00ED,0x0049},
423 {0x00CE,0x00EE,0x0049}, {0x00CF,0x00EF,0x0049},
424 {0x00D0,0x00F0,0x00D0}, {0x00D1,0x00F1,0x004E},
425 {0x00D2,0x00F2,0x004F}, {0x00D3,0x00F3,0x004F},
426 {0x00D4,0x00F4,0x004F}, {0x00D5,0x00F5,0x004F},
427 {0x00D6,0x00F6,0x004F}, {0x00D7,0x00D7,0x00D7},
428 {0x00D8,0x00F8,0x00D8}, {0x00D9,0x00F9,0x0055},
429 {0x00DA,0x00FA,0x0055}, {0x00DB,0x00FB,0x0055},
430 {0x00DC,0x00FC,0x0055}, {0x00DD,0x00FD,0x0059},
431 {0x00DE,0x00FE,0x00DE}, {0x00DF,0x00DF,0x00DF},
432 {0x00C0,0x00E0,0x0041}, {0x00C1,0x00E1,0x0041},
433 {0x00C2,0x00E2,0x0041}, {0x00C3,0x00E3,0x0041},
434 {0x00C4,0x00E4,0x0041}, {0x00C5,0x00E5,0x0041},
435 {0x00C6,0x00E6,0x00C6}, {0x00C7,0x00E7,0x0043},
436 {0x00C8,0x00E8,0x0045}, {0x00C9,0x00E9,0x0045},
437 {0x00CA,0x00EA,0x0045}, {0x00CB,0x00EB,0x0045},
438 {0x00CC,0x00EC,0x0049}, {0x00CD,0x00ED,0x0049},
439 {0x00CE,0x00EE,0x0049}, {0x00CF,0x00EF,0x0049},
440 {0x00D0,0x00F0,0x00D0}, {0x00D1,0x00F1,0x004E},
441 {0x00D2,0x00F2,0x004F}, {0x00D3,0x00F3,0x004F},
442 {0x00D4,0x00F4,0x004F}, {0x00D5,0x00F5,0x004F},
443 {0x00D6,0x00F6,0x004F}, {0x00F7,0x00F7,0x00F7},
444 {0x00D8,0x00F8,0x00D8}, {0x00D9,0x00F9,0x0055},
445 {0x00DA,0x00FA,0x0055}, {0x00DB,0x00FB,0x0055},
446 {0x00DC,0x00FC,0x0055}, {0x00DD,0x00FD,0x0059},
447 {0x00DE,0x00FE,0x00DE}, {0x0178,0x00FF,0x0059}
448};
449
450
451static MY_UNICASE_CHARACTER plane01[]={
452 {0x0100,0x0101,0x0041}, {0x0100,0x0101,0x0041},
453 {0x0102,0x0103,0x0041}, {0x0102,0x0103,0x0041},
454 {0x0104,0x0105,0x0041}, {0x0104,0x0105,0x0041},
455 {0x0106,0x0107,0x0043}, {0x0106,0x0107,0x0043},
456 {0x0108,0x0109,0x0043}, {0x0108,0x0109,0x0043},
457 {0x010A,0x010B,0x0043}, {0x010A,0x010B,0x0043},
458 {0x010C,0x010D,0x0043}, {0x010C,0x010D,0x0043},
459 {0x010E,0x010F,0x0044}, {0x010E,0x010F,0x0044},
460 {0x0110,0x0111,0x0110}, {0x0110,0x0111,0x0110},
461 {0x0112,0x0113,0x0045}, {0x0112,0x0113,0x0045},
462 {0x0114,0x0115,0x0045}, {0x0114,0x0115,0x0045},
463 {0x0116,0x0117,0x0045}, {0x0116,0x0117,0x0045},
464 {0x0118,0x0119,0x0045}, {0x0118,0x0119,0x0045},
465 {0x011A,0x011B,0x0045}, {0x011A,0x011B,0x0045},
466 {0x011C,0x011D,0x0047}, {0x011C,0x011D,0x0047},
467 {0x011E,0x011F,0x0047}, {0x011E,0x011F,0x0047},
468 {0x0120,0x0121,0x0047}, {0x0120,0x0121,0x0047},
469 {0x0122,0x0123,0x0047}, {0x0122,0x0123,0x0047},
470 {0x0124,0x0125,0x0048}, {0x0124,0x0125,0x0048},
471 {0x0126,0x0127,0x0126}, {0x0126,0x0127,0x0126},
472 {0x0128,0x0129,0x0049}, {0x0128,0x0129,0x0049},
473 {0x012A,0x012B,0x0049}, {0x012A,0x012B,0x0049},
474 {0x012C,0x012D,0x0049}, {0x012C,0x012D,0x0049},
475 {0x012E,0x012F,0x0049}, {0x012E,0x012F,0x0049},
476 {0x0130,0x0069,0x0049}, {0x0049,0x0131,0x0049},
477 {0x0132,0x0133,0x0132}, {0x0132,0x0133,0x0132},
478 {0x0134,0x0135,0x004A}, {0x0134,0x0135,0x004A},
479 {0x0136,0x0137,0x004B}, {0x0136,0x0137,0x004B},
480 {0x0138,0x0138,0x0138}, {0x0139,0x013A,0x004C},
481 {0x0139,0x013A,0x004C}, {0x013B,0x013C,0x004C},
482 {0x013B,0x013C,0x004C}, {0x013D,0x013E,0x004C},
483 {0x013D,0x013E,0x004C}, {0x013F,0x0140,0x013F},
484 {0x013F,0x0140,0x013F}, {0x0141,0x0142,0x0141},
485 {0x0141,0x0142,0x0141}, {0x0143,0x0144,0x004E},
486 {0x0143,0x0144,0x004E}, {0x0145,0x0146,0x004E},
487 {0x0145,0x0146,0x004E}, {0x0147,0x0148,0x004E},
488 {0x0147,0x0148,0x004E}, {0x0149,0x0149,0x0149},
489 {0x014A,0x014B,0x014A}, {0x014A,0x014B,0x014A},
490 {0x014C,0x014D,0x004F}, {0x014C,0x014D,0x004F},
491 {0x014E,0x014F,0x004F}, {0x014E,0x014F,0x004F},
492 {0x0150,0x0151,0x004F}, {0x0150,0x0151,0x004F},
493 {0x0152,0x0153,0x0152}, {0x0152,0x0153,0x0152},
494 {0x0154,0x0155,0x0052}, {0x0154,0x0155,0x0052},
495 {0x0156,0x0157,0x0052}, {0x0156,0x0157,0x0052},
496 {0x0158,0x0159,0x0052}, {0x0158,0x0159,0x0052},
497 {0x015A,0x015B,0x0053}, {0x015A,0x015B,0x0053},
498 {0x015C,0x015D,0x0053}, {0x015C,0x015D,0x0053},
499 {0x015E,0x015F,0x0053}, {0x015E,0x015F,0x0053},
500 {0x0160,0x0161,0x0053}, {0x0160,0x0161,0x0053},
501 {0x0162,0x0163,0x0054}, {0x0162,0x0163,0x0054},
502 {0x0164,0x0165,0x0054}, {0x0164,0x0165,0x0054},
503 {0x0166,0x0167,0x0166}, {0x0166,0x0167,0x0166},
504 {0x0168,0x0169,0x0055}, {0x0168,0x0169,0x0055},
505 {0x016A,0x016B,0x0055}, {0x016A,0x016B,0x0055},
506 {0x016C,0x016D,0x0055}, {0x016C,0x016D,0x0055},
507 {0x016E,0x016F,0x0055}, {0x016E,0x016F,0x0055},
508 {0x0170,0x0171,0x0055}, {0x0170,0x0171,0x0055},
509 {0x0172,0x0173,0x0055}, {0x0172,0x0173,0x0055},
510 {0x0174,0x0175,0x0057}, {0x0174,0x0175,0x0057},
511 {0x0176,0x0177,0x0059}, {0x0176,0x0177,0x0059},
512 {0x0178,0x00FF,0x0059}, {0x0179,0x017A,0x005A},
513 {0x0179,0x017A,0x005A}, {0x017B,0x017C,0x005A},
514 {0x017B,0x017C,0x005A}, {0x017D,0x017E,0x005A},
515 {0x017D,0x017E,0x005A}, {0x0053,0x017F,0x0053},
516 {0x0180,0x0180,0x0180}, {0x0181,0x0253,0x0181},
517 {0x0182,0x0183,0x0182}, {0x0182,0x0183,0x0182},
518 {0x0184,0x0185,0x0184}, {0x0184,0x0185,0x0184},
519 {0x0186,0x0254,0x0186}, {0x0187,0x0188,0x0187},
520 {0x0187,0x0188,0x0187}, {0x0189,0x0256,0x0189},
521 {0x018A,0x0257,0x018A}, {0x018B,0x018C,0x018B},
522 {0x018B,0x018C,0x018B}, {0x018D,0x018D,0x018D},
523 {0x018E,0x01DD,0x018E}, {0x018F,0x0259,0x018F},
524 {0x0190,0x025B,0x0190}, {0x0191,0x0192,0x0191},
525 {0x0191,0x0192,0x0191}, {0x0193,0x0260,0x0193},
526 {0x0194,0x0263,0x0194}, {0x01F6,0x0195,0x01F6},
527 {0x0196,0x0269,0x0196}, {0x0197,0x0268,0x0197},
528 {0x0198,0x0199,0x0198}, {0x0198,0x0199,0x0198},
529 {0x019A,0x019A,0x019A}, {0x019B,0x019B,0x019B},
530 {0x019C,0x026F,0x019C}, {0x019D,0x0272,0x019D},
531 {0x019E,0x019E,0x019E}, {0x019F,0x0275,0x019F},
532 {0x01A0,0x01A1,0x004F}, {0x01A0,0x01A1,0x004F},
533 {0x01A2,0x01A3,0x01A2}, {0x01A2,0x01A3,0x01A2},
534 {0x01A4,0x01A5,0x01A4}, {0x01A4,0x01A5,0x01A4},
535 {0x01A6,0x0280,0x01A6}, {0x01A7,0x01A8,0x01A7},
536 {0x01A7,0x01A8,0x01A7}, {0x01A9,0x0283,0x01A9},
537 {0x01AA,0x01AA,0x01AA}, {0x01AB,0x01AB,0x01AB},
538 {0x01AC,0x01AD,0x01AC}, {0x01AC,0x01AD,0x01AC},
539 {0x01AE,0x0288,0x01AE}, {0x01AF,0x01B0,0x0055},
540 {0x01AF,0x01B0,0x0055}, {0x01B1,0x028A,0x01B1},
541 {0x01B2,0x028B,0x01B2}, {0x01B3,0x01B4,0x01B3},
542 {0x01B3,0x01B4,0x01B3}, {0x01B5,0x01B6,0x01B5},
543 {0x01B5,0x01B6,0x01B5}, {0x01B7,0x0292,0x01B7},
544 {0x01B8,0x01B9,0x01B8}, {0x01B8,0x01B9,0x01B8},
545 {0x01BA,0x01BA,0x01BA}, {0x01BB,0x01BB,0x01BB},
546 {0x01BC,0x01BD,0x01BC}, {0x01BC,0x01BD,0x01BC},
547 {0x01BE,0x01BE,0x01BE}, {0x01F7,0x01BF,0x01F7},
548 {0x01C0,0x01C0,0x01C0}, {0x01C1,0x01C1,0x01C1},
549 {0x01C2,0x01C2,0x01C2}, {0x01C3,0x01C3,0x01C3},
550 {0x01C4,0x01C6,0x01C4}, {0x01C4,0x01C6,0x01C4},
551 {0x01C4,0x01C6,0x01C4}, {0x01C7,0x01C9,0x01C7},
552 {0x01C7,0x01C9,0x01C7}, {0x01C7,0x01C9,0x01C7},
553 {0x01CA,0x01CC,0x01CA}, {0x01CA,0x01CC,0x01CA},
554 {0x01CA,0x01CC,0x01CA}, {0x01CD,0x01CE,0x0041},
555 {0x01CD,0x01CE,0x0041}, {0x01CF,0x01D0,0x0049},
556 {0x01CF,0x01D0,0x0049}, {0x01D1,0x01D2,0x004F},
557 {0x01D1,0x01D2,0x004F}, {0x01D3,0x01D4,0x0055},
558 {0x01D3,0x01D4,0x0055}, {0x01D5,0x01D6,0x0055},
559 {0x01D5,0x01D6,0x0055}, {0x01D7,0x01D8,0x0055},
560 {0x01D7,0x01D8,0x0055}, {0x01D9,0x01DA,0x0055},
561 {0x01D9,0x01DA,0x0055}, {0x01DB,0x01DC,0x0055},
562 {0x01DB,0x01DC,0x0055}, {0x018E,0x01DD,0x018E},
563 {0x01DE,0x01DF,0x0041}, {0x01DE,0x01DF,0x0041},
564 {0x01E0,0x01E1,0x0041}, {0x01E0,0x01E1,0x0041},
565 {0x01E2,0x01E3,0x00C6}, {0x01E2,0x01E3,0x00C6},
566 {0x01E4,0x01E5,0x01E4}, {0x01E4,0x01E5,0x01E4},
567 {0x01E6,0x01E7,0x0047}, {0x01E6,0x01E7,0x0047},
568 {0x01E8,0x01E9,0x004B}, {0x01E8,0x01E9,0x004B},
569 {0x01EA,0x01EB,0x004F}, {0x01EA,0x01EB,0x004F},
570 {0x01EC,0x01ED,0x004F}, {0x01EC,0x01ED,0x004F},
571 {0x01EE,0x01EF,0x01B7}, {0x01EE,0x01EF,0x01B7},
572 {0x01F0,0x01F0,0x004A}, {0x01F1,0x01F3,0x01F1},
573 {0x01F1,0x01F3,0x01F1}, {0x01F1,0x01F3,0x01F1},
574 {0x01F4,0x01F5,0x0047}, {0x01F4,0x01F5,0x0047},
575 {0x01F6,0x0195,0x01F6}, {0x01F7,0x01BF,0x01F7},
576 {0x01F8,0x01F9,0x004E}, {0x01F8,0x01F9,0x004E},
577 {0x01FA,0x01FB,0x0041}, {0x01FA,0x01FB,0x0041},
578 {0x01FC,0x01FD,0x00C6}, {0x01FC,0x01FD,0x00C6},
579 {0x01FE,0x01FF,0x00D8}, {0x01FE,0x01FF,0x00D8}
580};
581
582static MY_UNICASE_CHARACTER plane02[]={
583 {0x0200,0x0201,0x0041}, {0x0200,0x0201,0x0041},
584 {0x0202,0x0203,0x0041}, {0x0202,0x0203,0x0041},
585 {0x0204,0x0205,0x0045}, {0x0204,0x0205,0x0045},
586 {0x0206,0x0207,0x0045}, {0x0206,0x0207,0x0045},
587 {0x0208,0x0209,0x0049}, {0x0208,0x0209,0x0049},
588 {0x020A,0x020B,0x0049}, {0x020A,0x020B,0x0049},
589 {0x020C,0x020D,0x004F}, {0x020C,0x020D,0x004F},
590 {0x020E,0x020F,0x004F}, {0x020E,0x020F,0x004F},
591 {0x0210,0x0211,0x0052}, {0x0210,0x0211,0x0052},
592 {0x0212,0x0213,0x0052}, {0x0212,0x0213,0x0052},
593 {0x0214,0x0215,0x0055}, {0x0214,0x0215,0x0055},
594 {0x0216,0x0217,0x0055}, {0x0216,0x0217,0x0055},
595 {0x0218,0x0219,0x0053}, {0x0218,0x0219,0x0053},
596 {0x021A,0x021B,0x0054}, {0x021A,0x021B,0x0054},
597 {0x021C,0x021D,0x021C}, {0x021C,0x021D,0x021C},
598 {0x021E,0x021F,0x0048}, {0x021E,0x021F,0x0048},
599 {0x0220,0x0220,0x0220}, {0x0221,0x0221,0x0221},
600 {0x0222,0x0223,0x0222}, {0x0222,0x0223,0x0222},
601 {0x0224,0x0225,0x0224}, {0x0224,0x0225,0x0224},
602 {0x0226,0x0227,0x0041}, {0x0226,0x0227,0x0041},
603 {0x0228,0x0229,0x0045}, {0x0228,0x0229,0x0045},
604 {0x022A,0x022B,0x004F}, {0x022A,0x022B,0x004F},
605 {0x022C,0x022D,0x004F}, {0x022C,0x022D,0x004F},
606 {0x022E,0x022F,0x004F}, {0x022E,0x022F,0x004F},
607 {0x0230,0x0231,0x004F}, {0x0230,0x0231,0x004F},
608 {0x0232,0x0233,0x0059}, {0x0232,0x0233,0x0059},
609 {0x0234,0x0234,0x0234}, {0x0235,0x0235,0x0235},
610 {0x0236,0x0236,0x0236}, {0x0237,0x0237,0x0237},
611 {0x0238,0x0238,0x0238}, {0x0239,0x0239,0x0239},
612 {0x023A,0x023A,0x023A}, {0x023B,0x023B,0x023B},
613 {0x023C,0x023C,0x023C}, {0x023D,0x023D,0x023D},
614 {0x023E,0x023E,0x023E}, {0x023F,0x023F,0x023F},
615 {0x0240,0x0240,0x0240}, {0x0241,0x0241,0x0241},
616 {0x0242,0x0242,0x0242}, {0x0243,0x0243,0x0243},
617 {0x0244,0x0244,0x0244}, {0x0245,0x0245,0x0245},
618 {0x0246,0x0246,0x0246}, {0x0247,0x0247,0x0247},
619 {0x0248,0x0248,0x0248}, {0x0249,0x0249,0x0249},
620 {0x024A,0x024A,0x024A}, {0x024B,0x024B,0x024B},
621 {0x024C,0x024C,0x024C}, {0x024D,0x024D,0x024D},
622 {0x024E,0x024E,0x024E}, {0x024F,0x024F,0x024F},
623 {0x0250,0x0250,0x0250}, {0x0251,0x0251,0x0251},
624 {0x0252,0x0252,0x0252}, {0x0181,0x0253,0x0181},
625 {0x0186,0x0254,0x0186}, {0x0255,0x0255,0x0255},
626 {0x0189,0x0256,0x0189}, {0x018A,0x0257,0x018A},
627 {0x0258,0x0258,0x0258}, {0x018F,0x0259,0x018F},
628 {0x025A,0x025A,0x025A}, {0x0190,0x025B,0x0190},
629 {0x025C,0x025C,0x025C}, {0x025D,0x025D,0x025D},
630 {0x025E,0x025E,0x025E}, {0x025F,0x025F,0x025F},
631 {0x0193,0x0260,0x0193}, {0x0261,0x0261,0x0261},
632 {0x0262,0x0262,0x0262}, {0x0194,0x0263,0x0194},
633 {0x0264,0x0264,0x0264}, {0x0265,0x0265,0x0265},
634 {0x0266,0x0266,0x0266}, {0x0267,0x0267,0x0267},
635 {0x0197,0x0268,0x0197}, {0x0196,0x0269,0x0196},
636 {0x026A,0x026A,0x026A}, {0x026B,0x026B,0x026B},
637 {0x026C,0x026C,0x026C}, {0x026D,0x026D,0x026D},
638 {0x026E,0x026E,0x026E}, {0x019C,0x026F,0x019C},
639 {0x0270,0x0270,0x0270}, {0x0271,0x0271,0x0271},
640 {0x019D,0x0272,0x019D}, {0x0273,0x0273,0x0273},
641 {0x0274,0x0274,0x0274}, {0x019F,0x0275,0x019F},
642 {0x0276,0x0276,0x0276}, {0x0277,0x0277,0x0277},
643 {0x0278,0x0278,0x0278}, {0x0279,0x0279,0x0279},
644 {0x027A,0x027A,0x027A}, {0x027B,0x027B,0x027B},
645 {0x027C,0x027C,0x027C}, {0x027D,0x027D,0x027D},
646 {0x027E,0x027E,0x027E}, {0x027F,0x027F,0x027F},
647 {0x01A6,0x0280,0x01A6}, {0x0281,0x0281,0x0281},
648 {0x0282,0x0282,0x0282}, {0x01A9,0x0283,0x01A9},
649 {0x0284,0x0284,0x0284}, {0x0285,0x0285,0x0285},
650 {0x0286,0x0286,0x0286}, {0x0287,0x0287,0x0287},
651 {0x01AE,0x0288,0x01AE}, {0x0289,0x0289,0x0289},
652 {0x01B1,0x028A,0x01B1}, {0x01B2,0x028B,0x01B2},
653 {0x028C,0x028C,0x028C}, {0x028D,0x028D,0x028D},
654 {0x028E,0x028E,0x028E}, {0x028F,0x028F,0x028F},
655 {0x0290,0x0290,0x0290}, {0x0291,0x0291,0x0291},
656 {0x01B7,0x0292,0x01B7}, {0x0293,0x0293,0x0293},
657 {0x0294,0x0294,0x0294}, {0x0295,0x0295,0x0295},
658 {0x0296,0x0296,0x0296}, {0x0297,0x0297,0x0297},
659 {0x0298,0x0298,0x0298}, {0x0299,0x0299,0x0299},
660 {0x029A,0x029A,0x029A}, {0x029B,0x029B,0x029B},
661 {0x029C,0x029C,0x029C}, {0x029D,0x029D,0x029D},
662 {0x029E,0x029E,0x029E}, {0x029F,0x029F,0x029F},
663 {0x02A0,0x02A0,0x02A0}, {0x02A1,0x02A1,0x02A1},
664 {0x02A2,0x02A2,0x02A2}, {0x02A3,0x02A3,0x02A3},
665 {0x02A4,0x02A4,0x02A4}, {0x02A5,0x02A5,0x02A5},
666 {0x02A6,0x02A6,0x02A6}, {0x02A7,0x02A7,0x02A7},
667 {0x02A8,0x02A8,0x02A8}, {0x02A9,0x02A9,0x02A9},
668 {0x02AA,0x02AA,0x02AA}, {0x02AB,0x02AB,0x02AB},
669 {0x02AC,0x02AC,0x02AC}, {0x02AD,0x02AD,0x02AD},
670 {0x02AE,0x02AE,0x02AE}, {0x02AF,0x02AF,0x02AF},
671 {0x02B0,0x02B0,0x02B0}, {0x02B1,0x02B1,0x02B1},
672 {0x02B2,0x02B2,0x02B2}, {0x02B3,0x02B3,0x02B3},
673 {0x02B4,0x02B4,0x02B4}, {0x02B5,0x02B5,0x02B5},
674 {0x02B6,0x02B6,0x02B6}, {0x02B7,0x02B7,0x02B7},
675 {0x02B8,0x02B8,0x02B8}, {0x02B9,0x02B9,0x02B9},
676 {0x02BA,0x02BA,0x02BA}, {0x02BB,0x02BB,0x02BB},
677 {0x02BC,0x02BC,0x02BC}, {0x02BD,0x02BD,0x02BD},
678 {0x02BE,0x02BE,0x02BE}, {0x02BF,0x02BF,0x02BF},
679 {0x02C0,0x02C0,0x02C0}, {0x02C1,0x02C1,0x02C1},
680 {0x02C2,0x02C2,0x02C2}, {0x02C3,0x02C3,0x02C3},
681 {0x02C4,0x02C4,0x02C4}, {0x02C5,0x02C5,0x02C5},
682 {0x02C6,0x02C6,0x02C6}, {0x02C7,0x02C7,0x02C7},
683 {0x02C8,0x02C8,0x02C8}, {0x02C9,0x02C9,0x02C9},
684 {0x02CA,0x02CA,0x02CA}, {0x02CB,0x02CB,0x02CB},
685 {0x02CC,0x02CC,0x02CC}, {0x02CD,0x02CD,0x02CD},
686 {0x02CE,0x02CE,0x02CE}, {0x02CF,0x02CF,0x02CF},
687 {0x02D0,0x02D0,0x02D0}, {0x02D1,0x02D1,0x02D1},
688 {0x02D2,0x02D2,0x02D2}, {0x02D3,0x02D3,0x02D3},
689 {0x02D4,0x02D4,0x02D4}, {0x02D5,0x02D5,0x02D5},
690 {0x02D6,0x02D6,0x02D6}, {0x02D7,0x02D7,0x02D7},
691 {0x02D8,0x02D8,0x02D8}, {0x02D9,0x02D9,0x02D9},
692 {0x02DA,0x02DA,0x02DA}, {0x02DB,0x02DB,0x02DB},
693 {0x02DC,0x02DC,0x02DC}, {0x02DD,0x02DD,0x02DD},
694 {0x02DE,0x02DE,0x02DE}, {0x02DF,0x02DF,0x02DF},
695 {0x02E0,0x02E0,0x02E0}, {0x02E1,0x02E1,0x02E1},
696 {0x02E2,0x02E2,0x02E2}, {0x02E3,0x02E3,0x02E3},
697 {0x02E4,0x02E4,0x02E4}, {0x02E5,0x02E5,0x02E5},
698 {0x02E6,0x02E6,0x02E6}, {0x02E7,0x02E7,0x02E7},
699 {0x02E8,0x02E8,0x02E8}, {0x02E9,0x02E9,0x02E9},
700 {0x02EA,0x02EA,0x02EA}, {0x02EB,0x02EB,0x02EB},
701 {0x02EC,0x02EC,0x02EC}, {0x02ED,0x02ED,0x02ED},
702 {0x02EE,0x02EE,0x02EE}, {0x02EF,0x02EF,0x02EF},
703 {0x02F0,0x02F0,0x02F0}, {0x02F1,0x02F1,0x02F1},
704 {0x02F2,0x02F2,0x02F2}, {0x02F3,0x02F3,0x02F3},
705 {0x02F4,0x02F4,0x02F4}, {0x02F5,0x02F5,0x02F5},
706 {0x02F6,0x02F6,0x02F6}, {0x02F7,0x02F7,0x02F7},
707 {0x02F8,0x02F8,0x02F8}, {0x02F9,0x02F9,0x02F9},
708 {0x02FA,0x02FA,0x02FA}, {0x02FB,0x02FB,0x02FB},
709 {0x02FC,0x02FC,0x02FC}, {0x02FD,0x02FD,0x02FD},
710 {0x02FE,0x02FE,0x02FE}, {0x02FF,0x02FF,0x02FF}
711};
712
713static MY_UNICASE_CHARACTER plane03[]={
714 {0x0300,0x0300,0x0300}, {0x0301,0x0301,0x0301},
715 {0x0302,0x0302,0x0302}, {0x0303,0x0303,0x0303},
716 {0x0304,0x0304,0x0304}, {0x0305,0x0305,0x0305},
717 {0x0306,0x0306,0x0306}, {0x0307,0x0307,0x0307},
718 {0x0308,0x0308,0x0308}, {0x0309,0x0309,0x0309},
719 {0x030A,0x030A,0x030A}, {0x030B,0x030B,0x030B},
720 {0x030C,0x030C,0x030C}, {0x030D,0x030D,0x030D},
721 {0x030E,0x030E,0x030E}, {0x030F,0x030F,0x030F},
722 {0x0310,0x0310,0x0310}, {0x0311,0x0311,0x0311},
723 {0x0312,0x0312,0x0312}, {0x0313,0x0313,0x0313},
724 {0x0314,0x0314,0x0314}, {0x0315,0x0315,0x0315},
725 {0x0316,0x0316,0x0316}, {0x0317,0x0317,0x0317},
726 {0x0318,0x0318,0x0318}, {0x0319,0x0319,0x0319},
727 {0x031A,0x031A,0x031A}, {0x031B,0x031B,0x031B},
728 {0x031C,0x031C,0x031C}, {0x031D,0x031D,0x031D},
729 {0x031E,0x031E,0x031E}, {0x031F,0x031F,0x031F},
730 {0x0320,0x0320,0x0320}, {0x0321,0x0321,0x0321},
731 {0x0322,0x0322,0x0322}, {0x0323,0x0323,0x0323},
732 {0x0324,0x0324,0x0324}, {0x0325,0x0325,0x0325},
733 {0x0326,0x0326,0x0326}, {0x0327,0x0327,0x0327},
734 {0x0328,0x0328,0x0328}, {0x0329,0x0329,0x0329},
735 {0x032A,0x032A,0x032A}, {0x032B,0x032B,0x032B},
736 {0x032C,0x032C,0x032C}, {0x032D,0x032D,0x032D},
737 {0x032E,0x032E,0x032E}, {0x032F,0x032F,0x032F},
738 {0x0330,0x0330,0x0330}, {0x0331,0x0331,0x0331},
739 {0x0332,0x0332,0x0332}, {0x0333,0x0333,0x0333},
740 {0x0334,0x0334,0x0334}, {0x0335,0x0335,0x0335},
741 {0x0336,0x0336,0x0336}, {0x0337,0x0337,0x0337},
742 {0x0338,0x0338,0x0338}, {0x0339,0x0339,0x0339},
743 {0x033A,0x033A,0x033A}, {0x033B,0x033B,0x033B},
744 {0x033C,0x033C,0x033C}, {0x033D,0x033D,0x033D},
745 {0x033E,0x033E,0x033E}, {0x033F,0x033F,0x033F},
746 {0x0340,0x0340,0x0340}, {0x0341,0x0341,0x0341},
747 {0x0342,0x0342,0x0342}, {0x0343,0x0343,0x0343},
748 {0x0344,0x0344,0x0344}, {0x0399,0x0345,0x0399},
749 {0x0346,0x0346,0x0346}, {0x0347,0x0347,0x0347},
750 {0x0348,0x0348,0x0348}, {0x0349,0x0349,0x0349},
751 {0x034A,0x034A,0x034A}, {0x034B,0x034B,0x034B},
752 {0x034C,0x034C,0x034C}, {0x034D,0x034D,0x034D},
753 {0x034E,0x034E,0x034E}, {0x034F,0x034F,0x034F},
754 {0x0350,0x0350,0x0350}, {0x0351,0x0351,0x0351},
755 {0x0352,0x0352,0x0352}, {0x0353,0x0353,0x0353},
756 {0x0354,0x0354,0x0354}, {0x0355,0x0355,0x0355},
757 {0x0356,0x0356,0x0356}, {0x0357,0x0357,0x0357},
758 {0x0358,0x0358,0x0358}, {0x0359,0x0359,0x0359},
759 {0x035A,0x035A,0x035A}, {0x035B,0x035B,0x035B},
760 {0x035C,0x035C,0x035C}, {0x035D,0x035D,0x035D},
761 {0x035E,0x035E,0x035E}, {0x035F,0x035F,0x035F},
762 {0x0360,0x0360,0x0360}, {0x0361,0x0361,0x0361},
763 {0x0362,0x0362,0x0362}, {0x0363,0x0363,0x0363},
764 {0x0364,0x0364,0x0364}, {0x0365,0x0365,0x0365},
765 {0x0366,0x0366,0x0366}, {0x0367,0x0367,0x0367},
766 {0x0368,0x0368,0x0368}, {0x0369,0x0369,0x0369},
767 {0x036A,0x036A,0x036A}, {0x036B,0x036B,0x036B},
768 {0x036C,0x036C,0x036C}, {0x036D,0x036D,0x036D},
769 {0x036E,0x036E,0x036E}, {0x036F,0x036F,0x036F},
770 {0x0370,0x0370,0x0370}, {0x0371,0x0371,0x0371},
771 {0x0372,0x0372,0x0372}, {0x0373,0x0373,0x0373},
772 {0x0374,0x0374,0x0374}, {0x0375,0x0375,0x0375},
773 {0x0376,0x0376,0x0376}, {0x0377,0x0377,0x0377},
774 {0x0378,0x0378,0x0378}, {0x0379,0x0379,0x0379},
775 {0x037A,0x037A,0x037A}, {0x037B,0x037B,0x037B},
776 {0x037C,0x037C,0x037C}, {0x037D,0x037D,0x037D},
777 {0x037E,0x037E,0x037E}, {0x037F,0x037F,0x037F},
778 {0x0380,0x0380,0x0380}, {0x0381,0x0381,0x0381},
779 {0x0382,0x0382,0x0382}, {0x0383,0x0383,0x0383},
780 {0x0384,0x0384,0x0384}, {0x0385,0x0385,0x0385},
781 {0x0386,0x03AC,0x0391}, {0x0387,0x0387,0x0387},
782 {0x0388,0x03AD,0x0395}, {0x0389,0x03AE,0x0397},
783 {0x038A,0x03AF,0x0399}, {0x038B,0x038B,0x038B},
784 {0x038C,0x03CC,0x039F}, {0x038D,0x038D,0x038D},
785 {0x038E,0x03CD,0x03A5}, {0x038F,0x03CE,0x03A9},
786 {0x0390,0x0390,0x0399}, {0x0391,0x03B1,0x0391},
787 {0x0392,0x03B2,0x0392}, {0x0393,0x03B3,0x0393},
788 {0x0394,0x03B4,0x0394}, {0x0395,0x03B5,0x0395},
789 {0x0396,0x03B6,0x0396}, {0x0397,0x03B7,0x0397},
790 {0x0398,0x03B8,0x0398}, {0x0399,0x03B9,0x0399},
791 {0x039A,0x03BA,0x039A}, {0x039B,0x03BB,0x039B},
792 {0x039C,0x03BC,0x039C}, {0x039D,0x03BD,0x039D},
793 {0x039E,0x03BE,0x039E}, {0x039F,0x03BF,0x039F},
794 {0x03A0,0x03C0,0x03A0}, {0x03A1,0x03C1,0x03A1},
795 {0x03A2,0x03A2,0x03A2}, {0x03A3,0x03C3,0x03A3},
796 {0x03A4,0x03C4,0x03A4}, {0x03A5,0x03C5,0x03A5},
797 {0x03A6,0x03C6,0x03A6}, {0x03A7,0x03C7,0x03A7},
798 {0x03A8,0x03C8,0x03A8}, {0x03A9,0x03C9,0x03A9},
799 {0x03AA,0x03CA,0x0399}, {0x03AB,0x03CB,0x03A5},
800 {0x0386,0x03AC,0x0391}, {0x0388,0x03AD,0x0395},
801 {0x0389,0x03AE,0x0397}, {0x038A,0x03AF,0x0399},
802 {0x03B0,0x03B0,0x03A5}, {0x0391,0x03B1,0x0391},
803 {0x0392,0x03B2,0x0392}, {0x0393,0x03B3,0x0393},
804 {0x0394,0x03B4,0x0394}, {0x0395,0x03B5,0x0395},
805 {0x0396,0x03B6,0x0396}, {0x0397,0x03B7,0x0397},
806 {0x0398,0x03B8,0x0398}, {0x0399,0x03B9,0x0399},
807 {0x039A,0x03BA,0x039A}, {0x039B,0x03BB,0x039B},
808 {0x039C,0x03BC,0x039C}, {0x039D,0x03BD,0x039D},
809 {0x039E,0x03BE,0x039E}, {0x039F,0x03BF,0x039F},
810 {0x03A0,0x03C0,0x03A0}, {0x03A1,0x03C1,0x03A1},
811 {0x03A3,0x03C2,0x03A3}, {0x03A3,0x03C3,0x03A3},
812 {0x03A4,0x03C4,0x03A4}, {0x03A5,0x03C5,0x03A5},
813 {0x03A6,0x03C6,0x03A6}, {0x03A7,0x03C7,0x03A7},
814 {0x03A8,0x03C8,0x03A8}, {0x03A9,0x03C9,0x03A9},
815 {0x03AA,0x03CA,0x0399}, {0x03AB,0x03CB,0x03A5},
816 {0x038C,0x03CC,0x039F}, {0x038E,0x03CD,0x03A5},
817 {0x038F,0x03CE,0x03A9}, {0x03CF,0x03CF,0x03CF},
818 {0x0392,0x03D0,0x0392}, {0x0398,0x03D1,0x0398},
819 {0x03D2,0x03D2,0x03D2}, {0x03D3,0x03D3,0x03D2},
820 {0x03D4,0x03D4,0x03D2}, {0x03A6,0x03D5,0x03A6},
821 {0x03A0,0x03D6,0x03A0}, {0x03D7,0x03D7,0x03D7},
822 {0x03D8,0x03D8,0x03D8}, {0x03D9,0x03D9,0x03D9},
823 {0x03DA,0x03DB,0x03DA}, {0x03DA,0x03DB,0x03DA},
824 {0x03DC,0x03DD,0x03DC}, {0x03DC,0x03DD,0x03DC},
825 {0x03DE,0x03DF,0x03DE}, {0x03DE,0x03DF,0x03DE},
826 {0x03E0,0x03E1,0x03E0}, {0x03E0,0x03E1,0x03E0},
827 {0x03E2,0x03E3,0x03E2}, {0x03E2,0x03E3,0x03E2},
828 {0x03E4,0x03E5,0x03E4}, {0x03E4,0x03E5,0x03E4},
829 {0x03E6,0x03E7,0x03E6}, {0x03E6,0x03E7,0x03E6},
830 {0x03E8,0x03E9,0x03E8}, {0x03E8,0x03E9,0x03E8},
831 {0x03EA,0x03EB,0x03EA}, {0x03EA,0x03EB,0x03EA},
832 {0x03EC,0x03ED,0x03EC}, {0x03EC,0x03ED,0x03EC},
833 {0x03EE,0x03EF,0x03EE}, {0x03EE,0x03EF,0x03EE},
834 {0x039A,0x03F0,0x039A}, {0x03A1,0x03F1,0x03A1},
835 {0x03A3,0x03F2,0x03A3}, {0x03F3,0x03F3,0x03F3},
836 {0x03F4,0x03F4,0x03F4}, {0x03F5,0x03F5,0x03F5},
837 {0x03F6,0x03F6,0x03F6}, {0x03F7,0x03F7,0x03F7},
838 {0x03F8,0x03F8,0x03F8}, {0x03F9,0x03F9,0x03F9},
839 {0x03FA,0x03FA,0x03FA}, {0x03FB,0x03FB,0x03FB},
840 {0x03FC,0x03FC,0x03FC}, {0x03FD,0x03FD,0x03FD},
841 {0x03FE,0x03FE,0x03FE}, {0x03FF,0x03FF,0x03FF}
842};
843
844static MY_UNICASE_CHARACTER plane04[]={
845 {0x0400,0x0450,0x0415}, {0x0401,0x0451,0x0415},
846 {0x0402,0x0452,0x0402}, {0x0403,0x0453,0x0413},
847 {0x0404,0x0454,0x0404}, {0x0405,0x0455,0x0405},
848 {0x0406,0x0456,0x0406}, {0x0407,0x0457,0x0406},
849 {0x0408,0x0458,0x0408}, {0x0409,0x0459,0x0409},
850 {0x040A,0x045A,0x040A}, {0x040B,0x045B,0x040B},
851 {0x040C,0x045C,0x041A}, {0x040D,0x045D,0x0418},
852 {0x040E,0x045E,0x0423}, {0x040F,0x045F,0x040F},
853 {0x0410,0x0430,0x0410}, {0x0411,0x0431,0x0411},
854 {0x0412,0x0432,0x0412}, {0x0413,0x0433,0x0413},
855 {0x0414,0x0434,0x0414}, {0x0415,0x0435,0x0415},
856 {0x0416,0x0436,0x0416}, {0x0417,0x0437,0x0417},
857 {0x0418,0x0438,0x0418}, {0x0419,0x0439,0x0419},
858 {0x041A,0x043A,0x041A}, {0x041B,0x043B,0x041B},
859 {0x041C,0x043C,0x041C}, {0x041D,0x043D,0x041D},
860 {0x041E,0x043E,0x041E}, {0x041F,0x043F,0x041F},
861 {0x0420,0x0440,0x0420}, {0x0421,0x0441,0x0421},
862 {0x0422,0x0442,0x0422}, {0x0423,0x0443,0x0423},
863 {0x0424,0x0444,0x0424}, {0x0425,0x0445,0x0425},
864 {0x0426,0x0446,0x0426}, {0x0427,0x0447,0x0427},
865 {0x0428,0x0448,0x0428}, {0x0429,0x0449,0x0429},
866 {0x042A,0x044A,0x042A}, {0x042B,0x044B,0x042B},
867 {0x042C,0x044C,0x042C}, {0x042D,0x044D,0x042D},
868 {0x042E,0x044E,0x042E}, {0x042F,0x044F,0x042F},
869 {0x0410,0x0430,0x0410}, {0x0411,0x0431,0x0411},
870 {0x0412,0x0432,0x0412}, {0x0413,0x0433,0x0413},
871 {0x0414,0x0434,0x0414}, {0x0415,0x0435,0x0415},
872 {0x0416,0x0436,0x0416}, {0x0417,0x0437,0x0417},
873 {0x0418,0x0438,0x0418}, {0x0419,0x0439,0x0419},
874 {0x041A,0x043A,0x041A}, {0x041B,0x043B,0x041B},
875 {0x041C,0x043C,0x041C}, {0x041D,0x043D,0x041D},
876 {0x041E,0x043E,0x041E}, {0x041F,0x043F,0x041F},
877 {0x0420,0x0440,0x0420}, {0x0421,0x0441,0x0421},
878 {0x0422,0x0442,0x0422}, {0x0423,0x0443,0x0423},
879 {0x0424,0x0444,0x0424}, {0x0425,0x0445,0x0425},
880 {0x0426,0x0446,0x0426}, {0x0427,0x0447,0x0427},
881 {0x0428,0x0448,0x0428}, {0x0429,0x0449,0x0429},
882 {0x042A,0x044A,0x042A}, {0x042B,0x044B,0x042B},
883 {0x042C,0x044C,0x042C}, {0x042D,0x044D,0x042D},
884 {0x042E,0x044E,0x042E}, {0x042F,0x044F,0x042F},
885 {0x0400,0x0450,0x0415}, {0x0401,0x0451,0x0415},
886 {0x0402,0x0452,0x0402}, {0x0403,0x0453,0x0413},
887 {0x0404,0x0454,0x0404}, {0x0405,0x0455,0x0405},
888 {0x0406,0x0456,0x0406}, {0x0407,0x0457,0x0406},
889 {0x0408,0x0458,0x0408}, {0x0409,0x0459,0x0409},
890 {0x040A,0x045A,0x040A}, {0x040B,0x045B,0x040B},
891 {0x040C,0x045C,0x041A}, {0x040D,0x045D,0x0418},
892 {0x040E,0x045E,0x0423}, {0x040F,0x045F,0x040F},
893 {0x0460,0x0461,0x0460}, {0x0460,0x0461,0x0460},
894 {0x0462,0x0463,0x0462}, {0x0462,0x0463,0x0462},
895 {0x0464,0x0465,0x0464}, {0x0464,0x0465,0x0464},
896 {0x0466,0x0467,0x0466}, {0x0466,0x0467,0x0466},
897 {0x0468,0x0469,0x0468}, {0x0468,0x0469,0x0468},
898 {0x046A,0x046B,0x046A}, {0x046A,0x046B,0x046A},
899 {0x046C,0x046D,0x046C}, {0x046C,0x046D,0x046C},
900 {0x046E,0x046F,0x046E}, {0x046E,0x046F,0x046E},
901 {0x0470,0x0471,0x0470}, {0x0470,0x0471,0x0470},
902 {0x0472,0x0473,0x0472}, {0x0472,0x0473,0x0472},
903 {0x0474,0x0475,0x0474}, {0x0474,0x0475,0x0474},
904 {0x0476,0x0477,0x0474}, {0x0476,0x0477,0x0474},
905 {0x0478,0x0479,0x0478}, {0x0478,0x0479,0x0478},
906 {0x047A,0x047B,0x047A}, {0x047A,0x047B,0x047A},
907 {0x047C,0x047D,0x047C}, {0x047C,0x047D,0x047C},
908 {0x047E,0x047F,0x047E}, {0x047E,0x047F,0x047E},
909 {0x0480,0x0481,0x0480}, {0x0480,0x0481,0x0480},
910 {0x0482,0x0482,0x0482}, {0x0483,0x0483,0x0483},
911 {0x0484,0x0484,0x0484}, {0x0485,0x0485,0x0485},
912 {0x0486,0x0486,0x0486}, {0x0487,0x0487,0x0487},
913 {0x0488,0x0488,0x0488}, {0x0489,0x0489,0x0489},
914 {0x048A,0x048A,0x048A}, {0x048B,0x048B,0x048B},
915 {0x048C,0x048D,0x048C}, {0x048C,0x048D,0x048C},
916 {0x048E,0x048F,0x048E}, {0x048E,0x048F,0x048E},
917 {0x0490,0x0491,0x0490}, {0x0490,0x0491,0x0490},
918 {0x0492,0x0493,0x0492}, {0x0492,0x0493,0x0492},
919 {0x0494,0x0495,0x0494}, {0x0494,0x0495,0x0494},
920 {0x0496,0x0497,0x0496}, {0x0496,0x0497,0x0496},
921 {0x0498,0x0499,0x0498}, {0x0498,0x0499,0x0498},
922 {0x049A,0x049B,0x049A}, {0x049A,0x049B,0x049A},
923 {0x049C,0x049D,0x049C}, {0x049C,0x049D,0x049C},
924 {0x049E,0x049F,0x049E}, {0x049E,0x049F,0x049E},
925 {0x04A0,0x04A1,0x04A0}, {0x04A0,0x04A1,0x04A0},
926 {0x04A2,0x04A3,0x04A2}, {0x04A2,0x04A3,0x04A2},
927 {0x04A4,0x04A5,0x04A4}, {0x04A4,0x04A5,0x04A4},
928 {0x04A6,0x04A7,0x04A6}, {0x04A6,0x04A7,0x04A6},
929 {0x04A8,0x04A9,0x04A8}, {0x04A8,0x04A9,0x04A8},
930 {0x04AA,0x04AB,0x04AA}, {0x04AA,0x04AB,0x04AA},
931 {0x04AC,0x04AD,0x04AC}, {0x04AC,0x04AD,0x04AC},
932 {0x04AE,0x04AF,0x04AE}, {0x04AE,0x04AF,0x04AE},
933 {0x04B0,0x04B1,0x04B0}, {0x04B0,0x04B1,0x04B0},
934 {0x04B2,0x04B3,0x04B2}, {0x04B2,0x04B3,0x04B2},
935 {0x04B4,0x04B5,0x04B4}, {0x04B4,0x04B5,0x04B4},
936 {0x04B6,0x04B7,0x04B6}, {0x04B6,0x04B7,0x04B6},
937 {0x04B8,0x04B9,0x04B8}, {0x04B8,0x04B9,0x04B8},
938 {0x04BA,0x04BB,0x04BA}, {0x04BA,0x04BB,0x04BA},
939 {0x04BC,0x04BD,0x04BC}, {0x04BC,0x04BD,0x04BC},
940 {0x04BE,0x04BF,0x04BE}, {0x04BE,0x04BF,0x04BE},
941 {0x04C0,0x04C0,0x04C0}, {0x04C1,0x04C2,0x0416},
942 {0x04C1,0x04C2,0x0416}, {0x04C3,0x04C4,0x04C3},
943 {0x04C3,0x04C4,0x04C3}, {0x04C5,0x04C5,0x04C5},
944 {0x04C6,0x04C6,0x04C6}, {0x04C7,0x04C8,0x04C7},
945 {0x04C7,0x04C8,0x04C7}, {0x04C9,0x04C9,0x04C9},
946 {0x04CA,0x04CA,0x04CA}, {0x04CB,0x04CC,0x04CB},
947 {0x04CB,0x04CC,0x04CB}, {0x04CD,0x04CD,0x04CD},
948 {0x04CE,0x04CE,0x04CE}, {0x04CF,0x04CF,0x04CF},
949 {0x04D0,0x04D1,0x0410}, {0x04D0,0x04D1,0x0410},
950 {0x04D2,0x04D3,0x0410}, {0x04D2,0x04D3,0x0410},
951 {0x04D4,0x04D5,0x04D4}, {0x04D4,0x04D5,0x04D4},
952 {0x04D6,0x04D7,0x0415}, {0x04D6,0x04D7,0x0415},
953 {0x04D8,0x04D9,0x04D8}, {0x04D8,0x04D9,0x04D8},
954 {0x04DA,0x04DB,0x04D8}, {0x04DA,0x04DB,0x04D8},
955 {0x04DC,0x04DD,0x0416}, {0x04DC,0x04DD,0x0416},
956 {0x04DE,0x04DF,0x0417}, {0x04DE,0x04DF,0x0417},
957 {0x04E0,0x04E1,0x04E0}, {0x04E0,0x04E1,0x04E0},
958 {0x04E2,0x04E3,0x0418}, {0x04E2,0x04E3,0x0418},
959 {0x04E4,0x04E5,0x0418}, {0x04E4,0x04E5,0x0418},
960 {0x04E6,0x04E7,0x041E}, {0x04E6,0x04E7,0x041E},
961 {0x04E8,0x04E9,0x04E8}, {0x04E8,0x04E9,0x04E8},
962 {0x04EA,0x04EB,0x04E8}, {0x04EA,0x04EB,0x04E8},
963 {0x04EC,0x04ED,0x042D}, {0x04EC,0x04ED,0x042D},
964 {0x04EE,0x04EF,0x0423}, {0x04EE,0x04EF,0x0423},
965 {0x04F0,0x04F1,0x0423}, {0x04F0,0x04F1,0x0423},
966 {0x04F2,0x04F3,0x0423}, {0x04F2,0x04F3,0x0423},
967 {0x04F4,0x04F5,0x0427}, {0x04F4,0x04F5,0x0427},
968 {0x04F6,0x04F6,0x04F6}, {0x04F7,0x04F7,0x04F7},
969 {0x04F8,0x04F9,0x042B}, {0x04F8,0x04F9,0x042B},
970 {0x04FA,0x04FA,0x04FA}, {0x04FB,0x04FB,0x04FB},
971 {0x04FC,0x04FC,0x04FC}, {0x04FD,0x04FD,0x04FD},
972 {0x04FE,0x04FE,0x04FE}, {0x04FF,0x04FF,0x04FF}
973};
974
975static MY_UNICASE_CHARACTER plane05[]={
976 {0x0500,0x0500,0x0500}, {0x0501,0x0501,0x0501},
977 {0x0502,0x0502,0x0502}, {0x0503,0x0503,0x0503},
978 {0x0504,0x0504,0x0504}, {0x0505,0x0505,0x0505},
979 {0x0506,0x0506,0x0506}, {0x0507,0x0507,0x0507},
980 {0x0508,0x0508,0x0508}, {0x0509,0x0509,0x0509},
981 {0x050A,0x050A,0x050A}, {0x050B,0x050B,0x050B},
982 {0x050C,0x050C,0x050C}, {0x050D,0x050D,0x050D},
983 {0x050E,0x050E,0x050E}, {0x050F,0x050F,0x050F},
984 {0x0510,0x0510,0x0510}, {0x0511,0x0511,0x0511},
985 {0x0512,0x0512,0x0512}, {0x0513,0x0513,0x0513},
986 {0x0514,0x0514,0x0514}, {0x0515,0x0515,0x0515},
987 {0x0516,0x0516,0x0516}, {0x0517,0x0517,0x0517},
988 {0x0518,0x0518,0x0518}, {0x0519,0x0519,0x0519},
989 {0x051A,0x051A,0x051A}, {0x051B,0x051B,0x051B},
990 {0x051C,0x051C,0x051C}, {0x051D,0x051D,0x051D},
991 {0x051E,0x051E,0x051E}, {0x051F,0x051F,0x051F},
992 {0x0520,0x0520,0x0520}, {0x0521,0x0521,0x0521},
993 {0x0522,0x0522,0x0522}, {0x0523,0x0523,0x0523},
994 {0x0524,0x0524,0x0524}, {0x0525,0x0525,0x0525},
995 {0x0526,0x0526,0x0526}, {0x0527,0x0527,0x0527},
996 {0x0528,0x0528,0x0528}, {0x0529,0x0529,0x0529},
997 {0x052A,0x052A,0x052A}, {0x052B,0x052B,0x052B},
998 {0x052C,0x052C,0x052C}, {0x052D,0x052D,0x052D},
999 {0x052E,0x052E,0x052E}, {0x052F,0x052F,0x052F},
1000 {0x0530,0x0530,0x0530}, {0x0531,0x0561,0x0531},
1001 {0x0532,0x0562,0x0532}, {0x0533,0x0563,0x0533},
1002 {0x0534,0x0564,0x0534}, {0x0535,0x0565,0x0535},
1003 {0x0536,0x0566,0x0536}, {0x0537,0x0567,0x0537},
1004 {0x0538,0x0568,0x0538}, {0x0539,0x0569,0x0539},
1005 {0x053A,0x056A,0x053A}, {0x053B,0x056B,0x053B},
1006 {0x053C,0x056C,0x053C}, {0x053D,0x056D,0x053D},
1007 {0x053E,0x056E,0x053E}, {0x053F,0x056F,0x053F},
1008 {0x0540,0x0570,0x0540}, {0x0541,0x0571,0x0541},
1009 {0x0542,0x0572,0x0542}, {0x0543,0x0573,0x0543},
1010 {0x0544,0x0574,0x0544}, {0x0545,0x0575,0x0545},
1011 {0x0546,0x0576,0x0546}, {0x0547,0x0577,0x0547},
1012 {0x0548,0x0578,0x0548}, {0x0549,0x0579,0x0549},
1013 {0x054A,0x057A,0x054A}, {0x054B,0x057B,0x054B},
1014 {0x054C,0x057C,0x054C}, {0x054D,0x057D,0x054D},
1015 {0x054E,0x057E,0x054E}, {0x054F,0x057F,0x054F},
1016 {0x0550,0x0580,0x0550}, {0x0551,0x0581,0x0551},
1017 {0x0552,0x0582,0x0552}, {0x0553,0x0583,0x0553},
1018 {0x0554,0x0584,0x0554}, {0x0555,0x0585,0x0555},
1019 {0x0556,0x0586,0x0556}, {0x0557,0x0557,0x0557},
1020 {0x0558,0x0558,0x0558}, {0x0559,0x0559,0x0559},
1021 {0x055A,0x055A,0x055A}, {0x055B,0x055B,0x055B},
1022 {0x055C,0x055C,0x055C}, {0x055D,0x055D,0x055D},
1023 {0x055E,0x055E,0x055E}, {0x055F,0x055F,0x055F},
1024 {0x0560,0x0560,0x0560}, {0x0531,0x0561,0x0531},
1025 {0x0532,0x0562,0x0532}, {0x0533,0x0563,0x0533},
1026 {0x0534,0x0564,0x0534}, {0x0535,0x0565,0x0535},
1027 {0x0536,0x0566,0x0536}, {0x0537,0x0567,0x0537},
1028 {0x0538,0x0568,0x0538}, {0x0539,0x0569,0x0539},
1029 {0x053A,0x056A,0x053A}, {0x053B,0x056B,0x053B},
1030 {0x053C,0x056C,0x053C}, {0x053D,0x056D,0x053D},
1031 {0x053E,0x056E,0x053E}, {0x053F,0x056F,0x053F},
1032 {0x0540,0x0570,0x0540}, {0x0541,0x0571,0x0541},
1033 {0x0542,0x0572,0x0542}, {0x0543,0x0573,0x0543},
1034 {0x0544,0x0574,0x0544}, {0x0545,0x0575,0x0545},
1035 {0x0546,0x0576,0x0546}, {0x0547,0x0577,0x0547},
1036 {0x0548,0x0578,0x0548}, {0x0549,0x0579,0x0549},
1037 {0x054A,0x057A,0x054A}, {0x054B,0x057B,0x054B},
1038 {0x054C,0x057C,0x054C}, {0x054D,0x057D,0x054D},
1039 {0x054E,0x057E,0x054E}, {0x054F,0x057F,0x054F},
1040 {0x0550,0x0580,0x0550}, {0x0551,0x0581,0x0551},
1041 {0x0552,0x0582,0x0552}, {0x0553,0x0583,0x0553},
1042 {0x0554,0x0584,0x0554}, {0x0555,0x0585,0x0555},
1043 {0x0556,0x0586,0x0556}, {0x0587,0x0587,0x0587},
1044 {0x0588,0x0588,0x0588}, {0x0589,0x0589,0x0589},
1045 {0x058A,0x058A,0x058A}, {0x058B,0x058B,0x058B},
1046 {0x058C,0x058C,0x058C}, {0x058D,0x058D,0x058D},
1047 {0x058E,0x058E,0x058E}, {0x058F,0x058F,0x058F},
1048 {0x0590,0x0590,0x0590}, {0x0591,0x0591,0x0591},
1049 {0x0592,0x0592,0x0592}, {0x0593,0x0593,0x0593},
1050 {0x0594,0x0594,0x0594}, {0x0595,0x0595,0x0595},
1051 {0x0596,0x0596,0x0596}, {0x0597,0x0597,0x0597},
1052 {0x0598,0x0598,0x0598}, {0x0599,0x0599,0x0599},
1053 {0x059A,0x059A,0x059A}, {0x059B,0x059B,0x059B},
1054 {0x059C,0x059C,0x059C}, {0x059D,0x059D,0x059D},
1055 {0x059E,0x059E,0x059E}, {0x059F,0x059F,0x059F},
1056 {0x05A0,0x05A0,0x05A0}, {0x05A1,0x05A1,0x05A1},
1057 {0x05A2,0x05A2,0x05A2}, {0x05A3,0x05A3,0x05A3},
1058 {0x05A4,0x05A4,0x05A4}, {0x05A5,0x05A5,0x05A5},
1059 {0x05A6,0x05A6,0x05A6}, {0x05A7,0x05A7,0x05A7},
1060 {0x05A8,0x05A8,0x05A8}, {0x05A9,0x05A9,0x05A9},
1061 {0x05AA,0x05AA,0x05AA}, {0x05AB,0x05AB,0x05AB},
1062 {0x05AC,0x05AC,0x05AC}, {0x05AD,0x05AD,0x05AD},
1063 {0x05AE,0x05AE,0x05AE}, {0x05AF,0x05AF,0x05AF},
1064 {0x05B0,0x05B0,0x05B0}, {0x05B1,0x05B1,0x05B1},
1065 {0x05B2,0x05B2,0x05B2}, {0x05B3,0x05B3,0x05B3},
1066 {0x05B4,0x05B4,0x05B4}, {0x05B5,0x05B5,0x05B5},
1067 {0x05B6,0x05B6,0x05B6}, {0x05B7,0x05B7,0x05B7},
1068 {0x05B8,0x05B8,0x05B8}, {0x05B9,0x05B9,0x05B9},
1069 {0x05BA,0x05BA,0x05BA}, {0x05BB,0x05BB,0x05BB},
1070 {0x05BC,0x05BC,0x05BC}, {0x05BD,0x05BD,0x05BD},
1071 {0x05BE,0x05BE,0x05BE}, {0x05BF,0x05BF,0x05BF},
1072 {0x05C0,0x05C0,0x05C0}, {0x05C1,0x05C1,0x05C1},
1073 {0x05C2,0x05C2,0x05C2}, {0x05C3,0x05C3,0x05C3},
1074 {0x05C4,0x05C4,0x05C4}, {0x05C5,0x05C5,0x05C5},
1075 {0x05C6,0x05C6,0x05C6}, {0x05C7,0x05C7,0x05C7},
1076 {0x05C8,0x05C8,0x05C8}, {0x05C9,0x05C9,0x05C9},
1077 {0x05CA,0x05CA,0x05CA}, {0x05CB,0x05CB,0x05CB},
1078 {0x05CC,0x05CC,0x05CC}, {0x05CD,0x05CD,0x05CD},
1079 {0x05CE,0x05CE,0x05CE}, {0x05CF,0x05CF,0x05CF},
1080 {0x05D0,0x05D0,0x05D0}, {0x05D1,0x05D1,0x05D1},
1081 {0x05D2,0x05D2,0x05D2}, {0x05D3,0x05D3,0x05D3},
1082 {0x05D4,0x05D4,0x05D4}, {0x05D5,0x05D5,0x05D5},
1083 {0x05D6,0x05D6,0x05D6}, {0x05D7,0x05D7,0x05D7},
1084 {0x05D8,0x05D8,0x05D8}, {0x05D9,0x05D9,0x05D9},
1085 {0x05DA,0x05DA,0x05DA}, {0x05DB,0x05DB,0x05DB},
1086 {0x05DC,0x05DC,0x05DC}, {0x05DD,0x05DD,0x05DD},
1087 {0x05DE,0x05DE,0x05DE}, {0x05DF,0x05DF,0x05DF},
1088 {0x05E0,0x05E0,0x05E0}, {0x05E1,0x05E1,0x05E1},
1089 {0x05E2,0x05E2,0x05E2}, {0x05E3,0x05E3,0x05E3},
1090 {0x05E4,0x05E4,0x05E4}, {0x05E5,0x05E5,0x05E5},
1091 {0x05E6,0x05E6,0x05E6}, {0x05E7,0x05E7,0x05E7},
1092 {0x05E8,0x05E8,0x05E8}, {0x05E9,0x05E9,0x05E9},
1093 {0x05EA,0x05EA,0x05EA}, {0x05EB,0x05EB,0x05EB},
1094 {0x05EC,0x05EC,0x05EC}, {0x05ED,0x05ED,0x05ED},
1095 {0x05EE,0x05EE,0x05EE}, {0x05EF,0x05EF,0x05EF},
1096 {0x05F0,0x05F0,0x05F0}, {0x05F1,0x05F1,0x05F1},
1097 {0x05F2,0x05F2,0x05F2}, {0x05F3,0x05F3,0x05F3},
1098 {0x05F4,0x05F4,0x05F4}, {0x05F5,0x05F5,0x05F5},
1099 {0x05F6,0x05F6,0x05F6}, {0x05F7,0x05F7,0x05F7},
1100 {0x05F8,0x05F8,0x05F8}, {0x05F9,0x05F9,0x05F9},
1101 {0x05FA,0x05FA,0x05FA}, {0x05FB,0x05FB,0x05FB},
1102 {0x05FC,0x05FC,0x05FC}, {0x05FD,0x05FD,0x05FD},
1103 {0x05FE,0x05FE,0x05FE}, {0x05FF,0x05FF,0x05FF}
1104};
1105
1106static MY_UNICASE_CHARACTER plane1E[]={
1107 {0x1E00,0x1E01,0x0041}, {0x1E00,0x1E01,0x0041},
1108 {0x1E02,0x1E03,0x0042}, {0x1E02,0x1E03,0x0042},
1109 {0x1E04,0x1E05,0x0042}, {0x1E04,0x1E05,0x0042},
1110 {0x1E06,0x1E07,0x0042}, {0x1E06,0x1E07,0x0042},
1111 {0x1E08,0x1E09,0x0043}, {0x1E08,0x1E09,0x0043},
1112 {0x1E0A,0x1E0B,0x0044}, {0x1E0A,0x1E0B,0x0044},
1113 {0x1E0C,0x1E0D,0x0044}, {0x1E0C,0x1E0D,0x0044},
1114 {0x1E0E,0x1E0F,0x0044}, {0x1E0E,0x1E0F,0x0044},
1115 {0x1E10,0x1E11,0x0044}, {0x1E10,0x1E11,0x0044},
1116 {0x1E12,0x1E13,0x0044}, {0x1E12,0x1E13,0x0044},
1117 {0x1E14,0x1E15,0x0045}, {0x1E14,0x1E15,0x0045},
1118 {0x1E16,0x1E17,0x0045}, {0x1E16,0x1E17,0x0045},
1119 {0x1E18,0x1E19,0x0045}, {0x1E18,0x1E19,0x0045},
1120 {0x1E1A,0x1E1B,0x0045}, {0x1E1A,0x1E1B,0x0045},
1121 {0x1E1C,0x1E1D,0x0045}, {0x1E1C,0x1E1D,0x0045},
1122 {0x1E1E,0x1E1F,0x0046}, {0x1E1E,0x1E1F,0x0046},
1123 {0x1E20,0x1E21,0x0047}, {0x1E20,0x1E21,0x0047},
1124 {0x1E22,0x1E23,0x0048}, {0x1E22,0x1E23,0x0048},
1125 {0x1E24,0x1E25,0x0048}, {0x1E24,0x1E25,0x0048},
1126 {0x1E26,0x1E27,0x0048}, {0x1E26,0x1E27,0x0048},
1127 {0x1E28,0x1E29,0x0048}, {0x1E28,0x1E29,0x0048},
1128 {0x1E2A,0x1E2B,0x0048}, {0x1E2A,0x1E2B,0x0048},
1129 {0x1E2C,0x1E2D,0x0049}, {0x1E2C,0x1E2D,0x0049},
1130 {0x1E2E,0x1E2F,0x0049}, {0x1E2E,0x1E2F,0x0049},
1131 {0x1E30,0x1E31,0x004B}, {0x1E30,0x1E31,0x004B},
1132 {0x1E32,0x1E33,0x004B}, {0x1E32,0x1E33,0x004B},
1133 {0x1E34,0x1E35,0x004B}, {0x1E34,0x1E35,0x004B},
1134 {0x1E36,0x1E37,0x004C}, {0x1E36,0x1E37,0x004C},
1135 {0x1E38,0x1E39,0x004C}, {0x1E38,0x1E39,0x004C},
1136 {0x1E3A,0x1E3B,0x004C}, {0x1E3A,0x1E3B,0x004C},
1137 {0x1E3C,0x1E3D,0x004C}, {0x1E3C,0x1E3D,0x004C},
1138 {0x1E3E,0x1E3F,0x004D}, {0x1E3E,0x1E3F,0x004D},
1139 {0x1E40,0x1E41,0x004D}, {0x1E40,0x1E41,0x004D},
1140 {0x1E42,0x1E43,0x004D}, {0x1E42,0x1E43,0x004D},
1141 {0x1E44,0x1E45,0x004E}, {0x1E44,0x1E45,0x004E},
1142 {0x1E46,0x1E47,0x004E}, {0x1E46,0x1E47,0x004E},
1143 {0x1E48,0x1E49,0x004E}, {0x1E48,0x1E49,0x004E},
1144 {0x1E4A,0x1E4B,0x004E}, {0x1E4A,0x1E4B,0x004E},
1145 {0x1E4C,0x1E4D,0x004F}, {0x1E4C,0x1E4D,0x004F},
1146 {0x1E4E,0x1E4F,0x004F}, {0x1E4E,0x1E4F,0x004F},
1147 {0x1E50,0x1E51,0x004F}, {0x1E50,0x1E51,0x004F},
1148 {0x1E52,0x1E53,0x004F}, {0x1E52,0x1E53,0x004F},
1149 {0x1E54,0x1E55,0x0050}, {0x1E54,0x1E55,0x0050},
1150 {0x1E56,0x1E57,0x0050}, {0x1E56,0x1E57,0x0050},
1151 {0x1E58,0x1E59,0x0052}, {0x1E58,0x1E59,0x0052},
1152 {0x1E5A,0x1E5B,0x0052}, {0x1E5A,0x1E5B,0x0052},
1153 {0x1E5C,0x1E5D,0x0052}, {0x1E5C,0x1E5D,0x0052},
1154 {0x1E5E,0x1E5F,0x0052}, {0x1E5E,0x1E5F,0x0052},
1155 {0x1E60,0x1E61,0x0053}, {0x1E60,0x1E61,0x0053},
1156 {0x1E62,0x1E63,0x0053}, {0x1E62,0x1E63,0x0053},
1157 {0x1E64,0x1E65,0x0053}, {0x1E64,0x1E65,0x0053},
1158 {0x1E66,0x1E67,0x0053}, {0x1E66,0x1E67,0x0053},
1159 {0x1E68,0x1E69,0x0053}, {0x1E68,0x1E69,0x0053},
1160 {0x1E6A,0x1E6B,0x0054}, {0x1E6A,0x1E6B,0x0054},
1161 {0x1E6C,0x1E6D,0x0054}, {0x1E6C,0x1E6D,0x0054},
1162 {0x1E6E,0x1E6F,0x0054}, {0x1E6E,0x1E6F,0x0054},
1163 {0x1E70,0x1E71,0x0054}, {0x1E70,0x1E71,0x0054},
1164 {0x1E72,0x1E73,0x0055}, {0x1E72,0x1E73,0x0055},
1165 {0x1E74,0x1E75,0x0055}, {0x1E74,0x1E75,0x0055},
1166 {0x1E76,0x1E77,0x0055}, {0x1E76,0x1E77,0x0055},
1167 {0x1E78,0x1E79,0x0055}, {0x1E78,0x1E79,0x0055},
1168 {0x1E7A,0x1E7B,0x0055}, {0x1E7A,0x1E7B,0x0055},
1169 {0x1E7C,0x1E7D,0x0056}, {0x1E7C,0x1E7D,0x0056},
1170 {0x1E7E,0x1E7F,0x0056}, {0x1E7E,0x1E7F,0x0056},
1171 {0x1E80,0x1E81,0x0057}, {0x1E80,0x1E81,0x0057},
1172 {0x1E82,0x1E83,0x0057}, {0x1E82,0x1E83,0x0057},
1173 {0x1E84,0x1E85,0x0057}, {0x1E84,0x1E85,0x0057},
1174 {0x1E86,0x1E87,0x0057}, {0x1E86,0x1E87,0x0057},
1175 {0x1E88,0x1E89,0x0057}, {0x1E88,0x1E89,0x0057},
1176 {0x1E8A,0x1E8B,0x0058}, {0x1E8A,0x1E8B,0x0058},
1177 {0x1E8C,0x1E8D,0x0058}, {0x1E8C,0x1E8D,0x0058},
1178 {0x1E8E,0x1E8F,0x0059}, {0x1E8E,0x1E8F,0x0059},
1179 {0x1E90,0x1E91,0x005A}, {0x1E90,0x1E91,0x005A},
1180 {0x1E92,0x1E93,0x005A}, {0x1E92,0x1E93,0x005A},
1181 {0x1E94,0x1E95,0x005A}, {0x1E94,0x1E95,0x005A},
1182 {0x1E96,0x1E96,0x0048}, {0x1E97,0x1E97,0x0054},
1183 {0x1E98,0x1E98,0x0057}, {0x1E99,0x1E99,0x0059},
1184 {0x1E9A,0x1E9A,0x1E9A}, {0x1E60,0x1E9B,0x0053},
1185 {0x1E9C,0x1E9C,0x1E9C}, {0x1E9D,0x1E9D,0x1E9D},
1186 {0x1E9E,0x1E9E,0x1E9E}, {0x1E9F,0x1E9F,0x1E9F},
1187 {0x1EA0,0x1EA1,0x0041}, {0x1EA0,0x1EA1,0x0041},
1188 {0x1EA2,0x1EA3,0x0041}, {0x1EA2,0x1EA3,0x0041},
1189 {0x1EA4,0x1EA5,0x0041}, {0x1EA4,0x1EA5,0x0041},
1190 {0x1EA6,0x1EA7,0x0041}, {0x1EA6,0x1EA7,0x0041},
1191 {0x1EA8,0x1EA9,0x0041}, {0x1EA8,0x1EA9,0x0041},
1192 {0x1EAA,0x1EAB,0x0041}, {0x1EAA,0x1EAB,0x0041},
1193 {0x1EAC,0x1EAD,0x0041}, {0x1EAC,0x1EAD,0x0041},
1194 {0x1EAE,0x1EAF,0x0041}, {0x1EAE,0x1EAF,0x0041},
1195 {0x1EB0,0x1EB1,0x0041}, {0x1EB0,0x1EB1,0x0041},
1196 {0x1EB2,0x1EB3,0x0041}, {0x1EB2,0x1EB3,0x0041},
1197 {0x1EB4,0x1EB5,0x0041}, {0x1EB4,0x1EB5,0x0041},
1198 {0x1EB6,0x1EB7,0x0041}, {0x1EB6,0x1EB7,0x0041},
1199 {0x1EB8,0x1EB9,0x0045}, {0x1EB8,0x1EB9,0x0045},
1200 {0x1EBA,0x1EBB,0x0045}, {0x1EBA,0x1EBB,0x0045},
1201 {0x1EBC,0x1EBD,0x0045}, {0x1EBC,0x1EBD,0x0045},
1202 {0x1EBE,0x1EBF,0x0045}, {0x1EBE,0x1EBF,0x0045},
1203 {0x1EC0,0x1EC1,0x0045}, {0x1EC0,0x1EC1,0x0045},
1204 {0x1EC2,0x1EC3,0x0045}, {0x1EC2,0x1EC3,0x0045},
1205 {0x1EC4,0x1EC5,0x0045}, {0x1EC4,0x1EC5,0x0045},
1206 {0x1EC6,0x1EC7,0x0045}, {0x1EC6,0x1EC7,0x0045},
1207 {0x1EC8,0x1EC9,0x0049}, {0x1EC8,0x1EC9,0x0049},
1208 {0x1ECA,0x1ECB,0x0049}, {0x1ECA,0x1ECB,0x0049},
1209 {0x1ECC,0x1ECD,0x004F}, {0x1ECC,0x1ECD,0x004F},
1210 {0x1ECE,0x1ECF,0x004F}, {0x1ECE,0x1ECF,0x004F},
1211 {0x1ED0,0x1ED1,0x004F}, {0x1ED0,0x1ED1,0x004F},
1212 {0x1ED2,0x1ED3,0x004F}, {0x1ED2,0x1ED3,0x004F},
1213 {0x1ED4,0x1ED5,0x004F}, {0x1ED4,0x1ED5,0x004F},
1214 {0x1ED6,0x1ED7,0x004F}, {0x1ED6,0x1ED7,0x004F},
1215 {0x1ED8,0x1ED9,0x004F}, {0x1ED8,0x1ED9,0x004F},
1216 {0x1EDA,0x1EDB,0x004F}, {0x1EDA,0x1EDB,0x004F},
1217 {0x1EDC,0x1EDD,0x004F}, {0x1EDC,0x1EDD,0x004F},
1218 {0x1EDE,0x1EDF,0x004F}, {0x1EDE,0x1EDF,0x004F},
1219 {0x1EE0,0x1EE1,0x004F}, {0x1EE0,0x1EE1,0x004F},
1220 {0x1EE2,0x1EE3,0x004F}, {0x1EE2,0x1EE3,0x004F},
1221 {0x1EE4,0x1EE5,0x0055}, {0x1EE4,0x1EE5,0x0055},
1222 {0x1EE6,0x1EE7,0x0055}, {0x1EE6,0x1EE7,0x0055},
1223 {0x1EE8,0x1EE9,0x0055}, {0x1EE8,0x1EE9,0x0055},
1224 {0x1EEA,0x1EEB,0x0055}, {0x1EEA,0x1EEB,0x0055},
1225 {0x1EEC,0x1EED,0x0055}, {0x1EEC,0x1EED,0x0055},
1226 {0x1EEE,0x1EEF,0x0055}, {0x1EEE,0x1EEF,0x0055},
1227 {0x1EF0,0x1EF1,0x0055}, {0x1EF0,0x1EF1,0x0055},
1228 {0x1EF2,0x1EF3,0x0059}, {0x1EF2,0x1EF3,0x0059},
1229 {0x1EF4,0x1EF5,0x0059}, {0x1EF4,0x1EF5,0x0059},
1230 {0x1EF6,0x1EF7,0x0059}, {0x1EF6,0x1EF7,0x0059},
1231 {0x1EF8,0x1EF9,0x0059}, {0x1EF8,0x1EF9,0x0059},
1232 {0x1EFA,0x1EFA,0x1EFA}, {0x1EFB,0x1EFB,0x1EFB},
1233 {0x1EFC,0x1EFC,0x1EFC}, {0x1EFD,0x1EFD,0x1EFD},
1234 {0x1EFE,0x1EFE,0x1EFE}, {0x1EFF,0x1EFF,0x1EFF}
1235};
1236
1237static MY_UNICASE_CHARACTER plane1F[]={
1238 {0x1F08,0x1F00,0x0391}, {0x1F09,0x1F01,0x0391},
1239 {0x1F0A,0x1F02,0x0391}, {0x1F0B,0x1F03,0x0391},
1240 {0x1F0C,0x1F04,0x0391}, {0x1F0D,0x1F05,0x0391},
1241 {0x1F0E,0x1F06,0x0391}, {0x1F0F,0x1F07,0x0391},
1242 {0x1F08,0x1F00,0x0391}, {0x1F09,0x1F01,0x0391},
1243 {0x1F0A,0x1F02,0x0391}, {0x1F0B,0x1F03,0x0391},
1244 {0x1F0C,0x1F04,0x0391}, {0x1F0D,0x1F05,0x0391},
1245 {0x1F0E,0x1F06,0x0391}, {0x1F0F,0x1F07,0x0391},
1246 {0x1F18,0x1F10,0x0395}, {0x1F19,0x1F11,0x0395},
1247 {0x1F1A,0x1F12,0x0395}, {0x1F1B,0x1F13,0x0395},
1248 {0x1F1C,0x1F14,0x0395}, {0x1F1D,0x1F15,0x0395},
1249 {0x1F16,0x1F16,0x1F16}, {0x1F17,0x1F17,0x1F17},
1250 {0x1F18,0x1F10,0x0395}, {0x1F19,0x1F11,0x0395},
1251 {0x1F1A,0x1F12,0x0395}, {0x1F1B,0x1F13,0x0395},
1252 {0x1F1C,0x1F14,0x0395}, {0x1F1D,0x1F15,0x0395},
1253 {0x1F1E,0x1F1E,0x1F1E}, {0x1F1F,0x1F1F,0x1F1F},
1254 {0x1F28,0x1F20,0x0397}, {0x1F29,0x1F21,0x0397},
1255 {0x1F2A,0x1F22,0x0397}, {0x1F2B,0x1F23,0x0397},
1256 {0x1F2C,0x1F24,0x0397}, {0x1F2D,0x1F25,0x0397},
1257 {0x1F2E,0x1F26,0x0397}, {0x1F2F,0x1F27,0x0397},
1258 {0x1F28,0x1F20,0x0397}, {0x1F29,0x1F21,0x0397},
1259 {0x1F2A,0x1F22,0x0397}, {0x1F2B,0x1F23,0x0397},
1260 {0x1F2C,0x1F24,0x0397}, {0x1F2D,0x1F25,0x0397},
1261 {0x1F2E,0x1F26,0x0397}, {0x1F2F,0x1F27,0x0397},
1262 {0x1F38,0x1F30,0x0399}, {0x1F39,0x1F31,0x0399},
1263 {0x1F3A,0x1F32,0x0399}, {0x1F3B,0x1F33,0x0399},
1264 {0x1F3C,0x1F34,0x0399}, {0x1F3D,0x1F35,0x0399},
1265 {0x1F3E,0x1F36,0x0399}, {0x1F3F,0x1F37,0x0399},
1266 {0x1F38,0x1F30,0x0399}, {0x1F39,0x1F31,0x0399},
1267 {0x1F3A,0x1F32,0x0399}, {0x1F3B,0x1F33,0x0399},
1268 {0x1F3C,0x1F34,0x0399}, {0x1F3D,0x1F35,0x0399},
1269 {0x1F3E,0x1F36,0x0399}, {0x1F3F,0x1F37,0x0399},
1270 {0x1F48,0x1F40,0x039F}, {0x1F49,0x1F41,0x039F},
1271 {0x1F4A,0x1F42,0x039F}, {0x1F4B,0x1F43,0x039F},
1272 {0x1F4C,0x1F44,0x039F}, {0x1F4D,0x1F45,0x039F},
1273 {0x1F46,0x1F46,0x1F46}, {0x1F47,0x1F47,0x1F47},
1274 {0x1F48,0x1F40,0x039F}, {0x1F49,0x1F41,0x039F},
1275 {0x1F4A,0x1F42,0x039F}, {0x1F4B,0x1F43,0x039F},
1276 {0x1F4C,0x1F44,0x039F}, {0x1F4D,0x1F45,0x039F},
1277 {0x1F4E,0x1F4E,0x1F4E}, {0x1F4F,0x1F4F,0x1F4F},
1278 {0x1F50,0x1F50,0x03A5}, {0x1F59,0x1F51,0x03A5},
1279 {0x1F52,0x1F52,0x03A5}, {0x1F5B,0x1F53,0x03A5},
1280 {0x1F54,0x1F54,0x03A5}, {0x1F5D,0x1F55,0x03A5},
1281 {0x1F56,0x1F56,0x03A5}, {0x1F5F,0x1F57,0x03A5},
1282 {0x1F58,0x1F58,0x1F58}, {0x1F59,0x1F51,0x03A5},
1283 {0x1F5A,0x1F5A,0x1F5A}, {0x1F5B,0x1F53,0x03A5},
1284 {0x1F5C,0x1F5C,0x1F5C}, {0x1F5D,0x1F55,0x03A5},
1285 {0x1F5E,0x1F5E,0x1F5E}, {0x1F5F,0x1F57,0x03A5},
1286 {0x1F68,0x1F60,0x03A9}, {0x1F69,0x1F61,0x03A9},
1287 {0x1F6A,0x1F62,0x03A9}, {0x1F6B,0x1F63,0x03A9},
1288 {0x1F6C,0x1F64,0x03A9}, {0x1F6D,0x1F65,0x03A9},
1289 {0x1F6E,0x1F66,0x03A9}, {0x1F6F,0x1F67,0x03A9},
1290 {0x1F68,0x1F60,0x03A9}, {0x1F69,0x1F61,0x03A9},
1291 {0x1F6A,0x1F62,0x03A9}, {0x1F6B,0x1F63,0x03A9},
1292 {0x1F6C,0x1F64,0x03A9}, {0x1F6D,0x1F65,0x03A9},
1293 {0x1F6E,0x1F66,0x03A9}, {0x1F6F,0x1F67,0x03A9},
1294 {0x1FBA,0x1F70,0x0391}, {0x1FBB,0x1F71,0x1FBB},
1295 {0x1FC8,0x1F72,0x0395}, {0x1FC9,0x1F73,0x1FC9},
1296 {0x1FCA,0x1F74,0x0397}, {0x1FCB,0x1F75,0x1FCB},
1297 {0x1FDA,0x1F76,0x0399}, {0x1FDB,0x1F77,0x1FDB},
1298 {0x1FF8,0x1F78,0x039F}, {0x1FF9,0x1F79,0x1FF9},
1299 {0x1FEA,0x1F7A,0x03A5}, {0x1FEB,0x1F7B,0x1FEB},
1300 {0x1FFA,0x1F7C,0x03A9}, {0x1FFB,0x1F7D,0x1FFB},
1301 {0x1F7E,0x1F7E,0x1F7E}, {0x1F7F,0x1F7F,0x1F7F},
1302 {0x1F88,0x1F80,0x0391}, {0x1F89,0x1F81,0x0391},
1303 {0x1F8A,0x1F82,0x0391}, {0x1F8B,0x1F83,0x0391},
1304 {0x1F8C,0x1F84,0x0391}, {0x1F8D,0x1F85,0x0391},
1305 {0x1F8E,0x1F86,0x0391}, {0x1F8F,0x1F87,0x0391},
1306 {0x1F88,0x1F80,0x0391}, {0x1F89,0x1F81,0x0391},
1307 {0x1F8A,0x1F82,0x0391}, {0x1F8B,0x1F83,0x0391},
1308 {0x1F8C,0x1F84,0x0391}, {0x1F8D,0x1F85,0x0391},
1309 {0x1F8E,0x1F86,0x0391}, {0x1F8F,0x1F87,0x0391},
1310 {0x1F98,0x1F90,0x0397}, {0x1F99,0x1F91,0x0397},
1311 {0x1F9A,0x1F92,0x0397}, {0x1F9B,0x1F93,0x0397},
1312 {0x1F9C,0x1F94,0x0397}, {0x1F9D,0x1F95,0x0397},
1313 {0x1F9E,0x1F96,0x0397}, {0x1F9F,0x1F97,0x0397},
1314 {0x1F98,0x1F90,0x0397}, {0x1F99,0x1F91,0x0397},
1315 {0x1F9A,0x1F92,0x0397}, {0x1F9B,0x1F93,0x0397},
1316 {0x1F9C,0x1F94,0x0397}, {0x1F9D,0x1F95,0x0397},
1317 {0x1F9E,0x1F96,0x0397}, {0x1F9F,0x1F97,0x0397},
1318 {0x1FA8,0x1FA0,0x03A9}, {0x1FA9,0x1FA1,0x03A9},
1319 {0x1FAA,0x1FA2,0x03A9}, {0x1FAB,0x1FA3,0x03A9},
1320 {0x1FAC,0x1FA4,0x03A9}, {0x1FAD,0x1FA5,0x03A9},
1321 {0x1FAE,0x1FA6,0x03A9}, {0x1FAF,0x1FA7,0x03A9},
1322 {0x1FA8,0x1FA0,0x03A9}, {0x1FA9,0x1FA1,0x03A9},
1323 {0x1FAA,0x1FA2,0x03A9}, {0x1FAB,0x1FA3,0x03A9},
1324 {0x1FAC,0x1FA4,0x03A9}, {0x1FAD,0x1FA5,0x03A9},
1325 {0x1FAE,0x1FA6,0x03A9}, {0x1FAF,0x1FA7,0x03A9},
1326 {0x1FB8,0x1FB0,0x0391}, {0x1FB9,0x1FB1,0x0391},
1327 {0x1FB2,0x1FB2,0x0391}, {0x1FBC,0x1FB3,0x0391},
1328 {0x1FB4,0x1FB4,0x0391}, {0x1FB5,0x1FB5,0x1FB5},
1329 {0x1FB6,0x1FB6,0x0391}, {0x1FB7,0x1FB7,0x0391},
1330 {0x1FB8,0x1FB0,0x0391}, {0x1FB9,0x1FB1,0x0391},
1331 {0x1FBA,0x1F70,0x0391}, {0x1FBB,0x1F71,0x1FBB},
1332 {0x1FBC,0x1FB3,0x0391}, {0x1FBD,0x1FBD,0x1FBD},
1333 {0x0399,0x1FBE,0x0399}, {0x1FBF,0x1FBF,0x1FBF},
1334 {0x1FC0,0x1FC0,0x1FC0}, {0x1FC1,0x1FC1,0x1FC1},
1335 {0x1FC2,0x1FC2,0x0397}, {0x1FCC,0x1FC3,0x0397},
1336 {0x1FC4,0x1FC4,0x0397}, {0x1FC5,0x1FC5,0x1FC5},
1337 {0x1FC6,0x1FC6,0x0397}, {0x1FC7,0x1FC7,0x0397},
1338 {0x1FC8,0x1F72,0x0395}, {0x1FC9,0x1F73,0x1FC9},
1339 {0x1FCA,0x1F74,0x0397}, {0x1FCB,0x1F75,0x1FCB},
1340 {0x1FCC,0x1FC3,0x0397}, {0x1FCD,0x1FCD,0x1FCD},
1341 {0x1FCE,0x1FCE,0x1FCE}, {0x1FCF,0x1FCF,0x1FCF},
1342 {0x1FD8,0x1FD0,0x0399}, {0x1FD9,0x1FD1,0x0399},
1343 {0x1FD2,0x1FD2,0x0399}, {0x1FD3,0x1FD3,0x1FD3},
1344 {0x1FD4,0x1FD4,0x1FD4}, {0x1FD5,0x1FD5,0x1FD5},
1345 {0x1FD6,0x1FD6,0x0399}, {0x1FD7,0x1FD7,0x0399},
1346 {0x1FD8,0x1FD0,0x0399}, {0x1FD9,0x1FD1,0x0399},
1347 {0x1FDA,0x1F76,0x0399}, {0x1FDB,0x1F77,0x1FDB},
1348 {0x1FDC,0x1FDC,0x1FDC}, {0x1FDD,0x1FDD,0x1FDD},
1349 {0x1FDE,0x1FDE,0x1FDE}, {0x1FDF,0x1FDF,0x1FDF},
1350 {0x1FE8,0x1FE0,0x03A5}, {0x1FE9,0x1FE1,0x03A5},
1351 {0x1FE2,0x1FE2,0x03A5}, {0x1FE3,0x1FE3,0x1FE3},
1352 {0x1FE4,0x1FE4,0x03A1}, {0x1FEC,0x1FE5,0x03A1},
1353 {0x1FE6,0x1FE6,0x03A5}, {0x1FE7,0x1FE7,0x03A5},
1354 {0x1FE8,0x1FE0,0x03A5}, {0x1FE9,0x1FE1,0x03A5},
1355 {0x1FEA,0x1F7A,0x03A5}, {0x1FEB,0x1F7B,0x1FEB},
1356 {0x1FEC,0x1FE5,0x03A1}, {0x1FED,0x1FED,0x1FED},
1357 {0x1FEE,0x1FEE,0x1FEE}, {0x1FEF,0x1FEF,0x1FEF},
1358 {0x1FF0,0x1FF0,0x1FF0}, {0x1FF1,0x1FF1,0x1FF1},
1359 {0x1FF2,0x1FF2,0x03A9}, {0x1FFC,0x1FF3,0x03A9},
1360 {0x1FF4,0x1FF4,0x03A9}, {0x1FF5,0x1FF5,0x1FF5},
1361 {0x1FF6,0x1FF6,0x03A9}, {0x1FF7,0x1FF7,0x03A9},
1362 {0x1FF8,0x1F78,0x039F}, {0x1FF9,0x1F79,0x1FF9},
1363 {0x1FFA,0x1F7C,0x03A9}, {0x1FFB,0x1F7D,0x1FFB},
1364 {0x1FFC,0x1FF3,0x03A9}, {0x1FFD,0x1FFD,0x1FFD},
1365 {0x1FFE,0x1FFE,0x1FFE}, {0x1FFF,0x1FFF,0x1FFF}
1366};
1367
1368static MY_UNICASE_CHARACTER plane21[]={
1369 {0x2100,0x2100,0x2100}, {0x2101,0x2101,0x2101},
1370 {0x2102,0x2102,0x2102}, {0x2103,0x2103,0x2103},
1371 {0x2104,0x2104,0x2104}, {0x2105,0x2105,0x2105},
1372 {0x2106,0x2106,0x2106}, {0x2107,0x2107,0x2107},
1373 {0x2108,0x2108,0x2108}, {0x2109,0x2109,0x2109},
1374 {0x210A,0x210A,0x210A}, {0x210B,0x210B,0x210B},
1375 {0x210C,0x210C,0x210C}, {0x210D,0x210D,0x210D},
1376 {0x210E,0x210E,0x210E}, {0x210F,0x210F,0x210F},
1377 {0x2110,0x2110,0x2110}, {0x2111,0x2111,0x2111},
1378 {0x2112,0x2112,0x2112}, {0x2113,0x2113,0x2113},
1379 {0x2114,0x2114,0x2114}, {0x2115,0x2115,0x2115},
1380 {0x2116,0x2116,0x2116}, {0x2117,0x2117,0x2117},
1381 {0x2118,0x2118,0x2118}, {0x2119,0x2119,0x2119},
1382 {0x211A,0x211A,0x211A}, {0x211B,0x211B,0x211B},
1383 {0x211C,0x211C,0x211C}, {0x211D,0x211D,0x211D},
1384 {0x211E,0x211E,0x211E}, {0x211F,0x211F,0x211F},
1385 {0x2120,0x2120,0x2120}, {0x2121,0x2121,0x2121},
1386 {0x2122,0x2122,0x2122}, {0x2123,0x2123,0x2123},
1387 {0x2124,0x2124,0x2124}, {0x2125,0x2125,0x2125},
1388 {0x2126,0x03C9,0x2126}, {0x2127,0x2127,0x2127},
1389 {0x2128,0x2128,0x2128}, {0x2129,0x2129,0x2129},
1390 {0x212A,0x006B,0x212A}, {0x212B,0x00E5,0x212B},
1391 {0x212C,0x212C,0x212C}, {0x212D,0x212D,0x212D},
1392 {0x212E,0x212E,0x212E}, {0x212F,0x212F,0x212F},
1393 {0x2130,0x2130,0x2130}, {0x2131,0x2131,0x2131},
1394 {0x2132,0x2132,0x2132}, {0x2133,0x2133,0x2133},
1395 {0x2134,0x2134,0x2134}, {0x2135,0x2135,0x2135},
1396 {0x2136,0x2136,0x2136}, {0x2137,0x2137,0x2137},
1397 {0x2138,0x2138,0x2138}, {0x2139,0x2139,0x2139},
1398 {0x213A,0x213A,0x213A}, {0x213B,0x213B,0x213B},
1399 {0x213C,0x213C,0x213C}, {0x213D,0x213D,0x213D},
1400 {0x213E,0x213E,0x213E}, {0x213F,0x213F,0x213F},
1401 {0x2140,0x2140,0x2140}, {0x2141,0x2141,0x2141},
1402 {0x2142,0x2142,0x2142}, {0x2143,0x2143,0x2143},
1403 {0x2144,0x2144,0x2144}, {0x2145,0x2145,0x2145},
1404 {0x2146,0x2146,0x2146}, {0x2147,0x2147,0x2147},
1405 {0x2148,0x2148,0x2148}, {0x2149,0x2149,0x2149},
1406 {0x214A,0x214A,0x214A}, {0x214B,0x214B,0x214B},
1407 {0x214C,0x214C,0x214C}, {0x214D,0x214D,0x214D},
1408 {0x214E,0x214E,0x214E}, {0x214F,0x214F,0x214F},
1409 {0x2150,0x2150,0x2150}, {0x2151,0x2151,0x2151},
1410 {0x2152,0x2152,0x2152}, {0x2153,0x2153,0x2153},
1411 {0x2154,0x2154,0x2154}, {0x2155,0x2155,0x2155},
1412 {0x2156,0x2156,0x2156}, {0x2157,0x2157,0x2157},
1413 {0x2158,0x2158,0x2158}, {0x2159,0x2159,0x2159},
1414 {0x215A,0x215A,0x215A}, {0x215B,0x215B,0x215B},
1415 {0x215C,0x215C,0x215C}, {0x215D,0x215D,0x215D},
1416 {0x215E,0x215E,0x215E}, {0x215F,0x215F,0x215F},
1417 {0x2160,0x2170,0x2160}, {0x2161,0x2171,0x2161},
1418 {0x2162,0x2172,0x2162}, {0x2163,0x2173,0x2163},
1419 {0x2164,0x2174,0x2164}, {0x2165,0x2175,0x2165},
1420 {0x2166,0x2176,0x2166}, {0x2167,0x2177,0x2167},
1421 {0x2168,0x2178,0x2168}, {0x2169,0x2179,0x2169},
1422 {0x216A,0x217A,0x216A}, {0x216B,0x217B,0x216B},
1423 {0x216C,0x217C,0x216C}, {0x216D,0x217D,0x216D},
1424 {0x216E,0x217E,0x216E}, {0x216F,0x217F,0x216F},
1425 {0x2160,0x2170,0x2160}, {0x2161,0x2171,0x2161},
1426 {0x2162,0x2172,0x2162}, {0x2163,0x2173,0x2163},
1427 {0x2164,0x2174,0x2164}, {0x2165,0x2175,0x2165},
1428 {0x2166,0x2176,0x2166}, {0x2167,0x2177,0x2167},
1429 {0x2168,0x2178,0x2168}, {0x2169,0x2179,0x2169},
1430 {0x216A,0x217A,0x216A}, {0x216B,0x217B,0x216B},
1431 {0x216C,0x217C,0x216C}, {0x216D,0x217D,0x216D},
1432 {0x216E,0x217E,0x216E}, {0x216F,0x217F,0x216F},
1433 {0x2180,0x2180,0x2180}, {0x2181,0x2181,0x2181},
1434 {0x2182,0x2182,0x2182}, {0x2183,0x2183,0x2183},
1435 {0x2184,0x2184,0x2184}, {0x2185,0x2185,0x2185},
1436 {0x2186,0x2186,0x2186}, {0x2187,0x2187,0x2187},
1437 {0x2188,0x2188,0x2188}, {0x2189,0x2189,0x2189},
1438 {0x218A,0x218A,0x218A}, {0x218B,0x218B,0x218B},
1439 {0x218C,0x218C,0x218C}, {0x218D,0x218D,0x218D},
1440 {0x218E,0x218E,0x218E}, {0x218F,0x218F,0x218F},
1441 {0x2190,0x2190,0x2190}, {0x2191,0x2191,0x2191},
1442 {0x2192,0x2192,0x2192}, {0x2193,0x2193,0x2193},
1443 {0x2194,0x2194,0x2194}, {0x2195,0x2195,0x2195},
1444 {0x2196,0x2196,0x2196}, {0x2197,0x2197,0x2197},
1445 {0x2198,0x2198,0x2198}, {0x2199,0x2199,0x2199},
1446 {0x219A,0x219A,0x219A}, {0x219B,0x219B,0x219B},
1447 {0x219C,0x219C,0x219C}, {0x219D,0x219D,0x219D},
1448 {0x219E,0x219E,0x219E}, {0x219F,0x219F,0x219F},
1449 {0x21A0,0x21A0,0x21A0}, {0x21A1,0x21A1,0x21A1},
1450 {0x21A2,0x21A2,0x21A2}, {0x21A3,0x21A3,0x21A3},
1451 {0x21A4,0x21A4,0x21A4}, {0x21A5,0x21A5,0x21A5},
1452 {0x21A6,0x21A6,0x21A6}, {0x21A7,0x21A7,0x21A7},
1453 {0x21A8,0x21A8,0x21A8}, {0x21A9,0x21A9,0x21A9},
1454 {0x21AA,0x21AA,0x21AA}, {0x21AB,0x21AB,0x21AB},
1455 {0x21AC,0x21AC,0x21AC}, {0x21AD,0x21AD,0x21AD},
1456 {0x21AE,0x21AE,0x21AE}, {0x21AF,0x21AF,0x21AF},
1457 {0x21B0,0x21B0,0x21B0}, {0x21B1,0x21B1,0x21B1},
1458 {0x21B2,0x21B2,0x21B2}, {0x21B3,0x21B3,0x21B3},
1459 {0x21B4,0x21B4,0x21B4}, {0x21B5,0x21B5,0x21B5},
1460 {0x21B6,0x21B6,0x21B6}, {0x21B7,0x21B7,0x21B7},
1461 {0x21B8,0x21B8,0x21B8}, {0x21B9,0x21B9,0x21B9},
1462 {0x21BA,0x21BA,0x21BA}, {0x21BB,0x21BB,0x21BB},
1463 {0x21BC,0x21BC,0x21BC}, {0x21BD,0x21BD,0x21BD},
1464 {0x21BE,0x21BE,0x21BE}, {0x21BF,0x21BF,0x21BF},
1465 {0x21C0,0x21C0,0x21C0}, {0x21C1,0x21C1,0x21C1},
1466 {0x21C2,0x21C2,0x21C2}, {0x21C3,0x21C3,0x21C3},
1467 {0x21C4,0x21C4,0x21C4}, {0x21C5,0x21C5,0x21C5},
1468 {0x21C6,0x21C6,0x21C6}, {0x21C7,0x21C7,0x21C7},
1469 {0x21C8,0x21C8,0x21C8}, {0x21C9,0x21C9,0x21C9},
1470 {0x21CA,0x21CA,0x21CA}, {0x21CB,0x21CB,0x21CB},
1471 {0x21CC,0x21CC,0x21CC}, {0x21CD,0x21CD,0x21CD},
1472 {0x21CE,0x21CE,0x21CE}, {0x21CF,0x21CF,0x21CF},
1473 {0x21D0,0x21D0,0x21D0}, {0x21D1,0x21D1,0x21D1},
1474 {0x21D2,0x21D2,0x21D2}, {0x21D3,0x21D3,0x21D3},
1475 {0x21D4,0x21D4,0x21D4}, {0x21D5,0x21D5,0x21D5},
1476 {0x21D6,0x21D6,0x21D6}, {0x21D7,0x21D7,0x21D7},
1477 {0x21D8,0x21D8,0x21D8}, {0x21D9,0x21D9,0x21D9},
1478 {0x21DA,0x21DA,0x21DA}, {0x21DB,0x21DB,0x21DB},
1479 {0x21DC,0x21DC,0x21DC}, {0x21DD,0x21DD,0x21DD},
1480 {0x21DE,0x21DE,0x21DE}, {0x21DF,0x21DF,0x21DF},
1481 {0x21E0,0x21E0,0x21E0}, {0x21E1,0x21E1,0x21E1},
1482 {0x21E2,0x21E2,0x21E2}, {0x21E3,0x21E3,0x21E3},
1483 {0x21E4,0x21E4,0x21E4}, {0x21E5,0x21E5,0x21E5},
1484 {0x21E6,0x21E6,0x21E6}, {0x21E7,0x21E7,0x21E7},
1485 {0x21E8,0x21E8,0x21E8}, {0x21E9,0x21E9,0x21E9},
1486 {0x21EA,0x21EA,0x21EA}, {0x21EB,0x21EB,0x21EB},
1487 {0x21EC,0x21EC,0x21EC}, {0x21ED,0x21ED,0x21ED},
1488 {0x21EE,0x21EE,0x21EE}, {0x21EF,0x21EF,0x21EF},
1489 {0x21F0,0x21F0,0x21F0}, {0x21F1,0x21F1,0x21F1},
1490 {0x21F2,0x21F2,0x21F2}, {0x21F3,0x21F3,0x21F3},
1491 {0x21F4,0x21F4,0x21F4}, {0x21F5,0x21F5,0x21F5},
1492 {0x21F6,0x21F6,0x21F6}, {0x21F7,0x21F7,0x21F7},
1493 {0x21F8,0x21F8,0x21F8}, {0x21F9,0x21F9,0x21F9},
1494 {0x21FA,0x21FA,0x21FA}, {0x21FB,0x21FB,0x21FB},
1495 {0x21FC,0x21FC,0x21FC}, {0x21FD,0x21FD,0x21FD},
1496 {0x21FE,0x21FE,0x21FE}, {0x21FF,0x21FF,0x21FF}
1497};
1498
1499static MY_UNICASE_CHARACTER plane24[]={
1500 {0x2400,0x2400,0x2400}, {0x2401,0x2401,0x2401},
1501 {0x2402,0x2402,0x2402}, {0x2403,0x2403,0x2403},
1502 {0x2404,0x2404,0x2404}, {0x2405,0x2405,0x2405},
1503 {0x2406,0x2406,0x2406}, {0x2407,0x2407,0x2407},
1504 {0x2408,0x2408,0x2408}, {0x2409,0x2409,0x2409},
1505 {0x240A,0x240A,0x240A}, {0x240B,0x240B,0x240B},
1506 {0x240C,0x240C,0x240C}, {0x240D,0x240D,0x240D},
1507 {0x240E,0x240E,0x240E}, {0x240F,0x240F,0x240F},
1508 {0x2410,0x2410,0x2410}, {0x2411,0x2411,0x2411},
1509 {0x2412,0x2412,0x2412}, {0x2413,0x2413,0x2413},
1510 {0x2414,0x2414,0x2414}, {0x2415,0x2415,0x2415},
1511 {0x2416,0x2416,0x2416}, {0x2417,0x2417,0x2417},
1512 {0x2418,0x2418,0x2418}, {0x2419,0x2419,0x2419},
1513 {0x241A,0x241A,0x241A}, {0x241B,0x241B,0x241B},
1514 {0x241C,0x241C,0x241C}, {0x241D,0x241D,0x241D},
1515 {0x241E,0x241E,0x241E}, {0x241F,0x241F,0x241F},
1516 {0x2420,0x2420,0x2420}, {0x2421,0x2421,0x2421},
1517 {0x2422,0x2422,0x2422}, {0x2423,0x2423,0x2423},
1518 {0x2424,0x2424,0x2424}, {0x2425,0x2425,0x2425},
1519 {0x2426,0x2426,0x2426}, {0x2427,0x2427,0x2427},
1520 {0x2428,0x2428,0x2428}, {0x2429,0x2429,0x2429},
1521 {0x242A,0x242A,0x242A}, {0x242B,0x242B,0x242B},
1522 {0x242C,0x242C,0x242C}, {0x242D,0x242D,0x242D},
1523 {0x242E,0x242E,0x242E}, {0x242F,0x242F,0x242F},
1524 {0x2430,0x2430,0x2430}, {0x2431,0x2431,0x2431},
1525 {0x2432,0x2432,0x2432}, {0x2433,0x2433,0x2433},
1526 {0x2434,0x2434,0x2434}, {0x2435,0x2435,0x2435},
1527 {0x2436,0x2436,0x2436}, {0x2437,0x2437,0x2437},
1528 {0x2438,0x2438,0x2438}, {0x2439,0x2439,0x2439},
1529 {0x243A,0x243A,0x243A}, {0x243B,0x243B,0x243B},
1530 {0x243C,0x243C,0x243C}, {0x243D,0x243D,0x243D},
1531 {0x243E,0x243E,0x243E}, {0x243F,0x243F,0x243F},
1532 {0x2440,0x2440,0x2440}, {0x2441,0x2441,0x2441},
1533 {0x2442,0x2442,0x2442}, {0x2443,0x2443,0x2443},
1534 {0x2444,0x2444,0x2444}, {0x2445,0x2445,0x2445},
1535 {0x2446,0x2446,0x2446}, {0x2447,0x2447,0x2447},
1536 {0x2448,0x2448,0x2448}, {0x2449,0x2449,0x2449},
1537 {0x244A,0x244A,0x244A}, {0x244B,0x244B,0x244B},
1538 {0x244C,0x244C,0x244C}, {0x244D,0x244D,0x244D},
1539 {0x244E,0x244E,0x244E}, {0x244F,0x244F,0x244F},
1540 {0x2450,0x2450,0x2450}, {0x2451,0x2451,0x2451},
1541 {0x2452,0x2452,0x2452}, {0x2453,0x2453,0x2453},
1542 {0x2454,0x2454,0x2454}, {0x2455,0x2455,0x2455},
1543 {0x2456,0x2456,0x2456}, {0x2457,0x2457,0x2457},
1544 {0x2458,0x2458,0x2458}, {0x2459,0x2459,0x2459},
1545 {0x245A,0x245A,0x245A}, {0x245B,0x245B,0x245B},
1546 {0x245C,0x245C,0x245C}, {0x245D,0x245D,0x245D},
1547 {0x245E,0x245E,0x245E}, {0x245F,0x245F,0x245F},
1548 {0x2460,0x2460,0x2460}, {0x2461,0x2461,0x2461},
1549 {0x2462,0x2462,0x2462}, {0x2463,0x2463,0x2463},
1550 {0x2464,0x2464,0x2464}, {0x2465,0x2465,0x2465},
1551 {0x2466,0x2466,0x2466}, {0x2467,0x2467,0x2467},
1552 {0x2468,0x2468,0x2468}, {0x2469,0x2469,0x2469},
1553 {0x246A,0x246A,0x246A}, {0x246B,0x246B,0x246B},
1554 {0x246C,0x246C,0x246C}, {0x246D,0x246D,0x246D},
1555 {0x246E,0x246E,0x246E}, {0x246F,0x246F,0x246F},
1556 {0x2470,0x2470,0x2470}, {0x2471,0x2471,0x2471},
1557 {0x2472,0x2472,0x2472}, {0x2473,0x2473,0x2473},
1558 {0x2474,0x2474,0x2474}, {0x2475,0x2475,0x2475},
1559 {0x2476,0x2476,0x2476}, {0x2477,0x2477,0x2477},
1560 {0x2478,0x2478,0x2478}, {0x2479,0x2479,0x2479},
1561 {0x247A,0x247A,0x247A}, {0x247B,0x247B,0x247B},
1562 {0x247C,0x247C,0x247C}, {0x247D,0x247D,0x247D},
1563 {0x247E,0x247E,0x247E}, {0x247F,0x247F,0x247F},
1564 {0x2480,0x2480,0x2480}, {0x2481,0x2481,0x2481},
1565 {0x2482,0x2482,0x2482}, {0x2483,0x2483,0x2483},
1566 {0x2484,0x2484,0x2484}, {0x2485,0x2485,0x2485},
1567 {0x2486,0x2486,0x2486}, {0x2487,0x2487,0x2487},
1568 {0x2488,0x2488,0x2488}, {0x2489,0x2489,0x2489},
1569 {0x248A,0x248A,0x248A}, {0x248B,0x248B,0x248B},
1570 {0x248C,0x248C,0x248C}, {0x248D,0x248D,0x248D},
1571 {0x248E,0x248E,0x248E}, {0x248F,0x248F,0x248F},
1572 {0x2490,0x2490,0x2490}, {0x2491,0x2491,0x2491},
1573 {0x2492,0x2492,0x2492}, {0x2493,0x2493,0x2493},
1574 {0x2494,0x2494,0x2494}, {0x2495,0x2495,0x2495},
1575 {0x2496,0x2496,0x2496}, {0x2497,0x2497,0x2497},
1576 {0x2498,0x2498,0x2498}, {0x2499,0x2499,0x2499},
1577 {0x249A,0x249A,0x249A}, {0x249B,0x249B,0x249B},
1578 {0x249C,0x249C,0x249C}, {0x249D,0x249D,0x249D},
1579 {0x249E,0x249E,0x249E}, {0x249F,0x249F,0x249F},
1580 {0x24A0,0x24A0,0x24A0}, {0x24A1,0x24A1,0x24A1},
1581 {0x24A2,0x24A2,0x24A2}, {0x24A3,0x24A3,0x24A3},
1582 {0x24A4,0x24A4,0x24A4}, {0x24A5,0x24A5,0x24A5},
1583 {0x24A6,0x24A6,0x24A6}, {0x24A7,0x24A7,0x24A7},
1584 {0x24A8,0x24A8,0x24A8}, {0x24A9,0x24A9,0x24A9},
1585 {0x24AA,0x24AA,0x24AA}, {0x24AB,0x24AB,0x24AB},
1586 {0x24AC,0x24AC,0x24AC}, {0x24AD,0x24AD,0x24AD},
1587 {0x24AE,0x24AE,0x24AE}, {0x24AF,0x24AF,0x24AF},
1588 {0x24B0,0x24B0,0x24B0}, {0x24B1,0x24B1,0x24B1},
1589 {0x24B2,0x24B2,0x24B2}, {0x24B3,0x24B3,0x24B3},
1590 {0x24B4,0x24B4,0x24B4}, {0x24B5,0x24B5,0x24B5},
1591 {0x24B6,0x24D0,0x24B6}, {0x24B7,0x24D1,0x24B7},
1592 {0x24B8,0x24D2,0x24B8}, {0x24B9,0x24D3,0x24B9},
1593 {0x24BA,0x24D4,0x24BA}, {0x24BB,0x24D5,0x24BB},
1594 {0x24BC,0x24D6,0x24BC}, {0x24BD,0x24D7,0x24BD},
1595 {0x24BE,0x24D8,0x24BE}, {0x24BF,0x24D9,0x24BF},
1596 {0x24C0,0x24DA,0x24C0}, {0x24C1,0x24DB,0x24C1},
1597 {0x24C2,0x24DC,0x24C2}, {0x24C3,0x24DD,0x24C3},
1598 {0x24C4,0x24DE,0x24C4}, {0x24C5,0x24DF,0x24C5},
1599 {0x24C6,0x24E0,0x24C6}, {0x24C7,0x24E1,0x24C7},
1600 {0x24C8,0x24E2,0x24C8}, {0x24C9,0x24E3,0x24C9},
1601 {0x24CA,0x24E4,0x24CA}, {0x24CB,0x24E5,0x24CB},
1602 {0x24CC,0x24E6,0x24CC}, {0x24CD,0x24E7,0x24CD},
1603 {0x24CE,0x24E8,0x24CE}, {0x24CF,0x24E9,0x24CF},
1604 {0x24B6,0x24D0,0x24B6}, {0x24B7,0x24D1,0x24B7},
1605 {0x24B8,0x24D2,0x24B8}, {0x24B9,0x24D3,0x24B9},
1606 {0x24BA,0x24D4,0x24BA}, {0x24BB,0x24D5,0x24BB},
1607 {0x24BC,0x24D6,0x24BC}, {0x24BD,0x24D7,0x24BD},
1608 {0x24BE,0x24D8,0x24BE}, {0x24BF,0x24D9,0x24BF},
1609 {0x24C0,0x24DA,0x24C0}, {0x24C1,0x24DB,0x24C1},
1610 {0x24C2,0x24DC,0x24C2}, {0x24C3,0x24DD,0x24C3},
1611 {0x24C4,0x24DE,0x24C4}, {0x24C5,0x24DF,0x24C5},
1612 {0x24C6,0x24E0,0x24C6}, {0x24C7,0x24E1,0x24C7},
1613 {0x24C8,0x24E2,0x24C8}, {0x24C9,0x24E3,0x24C9},
1614 {0x24CA,0x24E4,0x24CA}, {0x24CB,0x24E5,0x24CB},
1615 {0x24CC,0x24E6,0x24CC}, {0x24CD,0x24E7,0x24CD},
1616 {0x24CE,0x24E8,0x24CE}, {0x24CF,0x24E9,0x24CF},
1617 {0x24EA,0x24EA,0x24EA}, {0x24EB,0x24EB,0x24EB},
1618 {0x24EC,0x24EC,0x24EC}, {0x24ED,0x24ED,0x24ED},
1619 {0x24EE,0x24EE,0x24EE}, {0x24EF,0x24EF,0x24EF},
1620 {0x24F0,0x24F0,0x24F0}, {0x24F1,0x24F1,0x24F1},
1621 {0x24F2,0x24F2,0x24F2}, {0x24F3,0x24F3,0x24F3},
1622 {0x24F4,0x24F4,0x24F4}, {0x24F5,0x24F5,0x24F5},
1623 {0x24F6,0x24F6,0x24F6}, {0x24F7,0x24F7,0x24F7},
1624 {0x24F8,0x24F8,0x24F8}, {0x24F9,0x24F9,0x24F9},
1625 {0x24FA,0x24FA,0x24FA}, {0x24FB,0x24FB,0x24FB},
1626 {0x24FC,0x24FC,0x24FC}, {0x24FD,0x24FD,0x24FD},
1627 {0x24FE,0x24FE,0x24FE}, {0x24FF,0x24FF,0x24FF}
1628};
1629
1630static MY_UNICASE_CHARACTER planeFF[]={
1631 {0xFF00,0xFF00,0xFF00}, {0xFF01,0xFF01,0xFF01},
1632 {0xFF02,0xFF02,0xFF02}, {0xFF03,0xFF03,0xFF03},
1633 {0xFF04,0xFF04,0xFF04}, {0xFF05,0xFF05,0xFF05},
1634 {0xFF06,0xFF06,0xFF06}, {0xFF07,0xFF07,0xFF07},
1635 {0xFF08,0xFF08,0xFF08}, {0xFF09,0xFF09,0xFF09},
1636 {0xFF0A,0xFF0A,0xFF0A}, {0xFF0B,0xFF0B,0xFF0B},
1637 {0xFF0C,0xFF0C,0xFF0C}, {0xFF0D,0xFF0D,0xFF0D},
1638 {0xFF0E,0xFF0E,0xFF0E}, {0xFF0F,0xFF0F,0xFF0F},
1639 {0xFF10,0xFF10,0xFF10}, {0xFF11,0xFF11,0xFF11},
1640 {0xFF12,0xFF12,0xFF12}, {0xFF13,0xFF13,0xFF13},
1641 {0xFF14,0xFF14,0xFF14}, {0xFF15,0xFF15,0xFF15},
1642 {0xFF16,0xFF16,0xFF16}, {0xFF17,0xFF17,0xFF17},
1643 {0xFF18,0xFF18,0xFF18}, {0xFF19,0xFF19,0xFF19},
1644 {0xFF1A,0xFF1A,0xFF1A}, {0xFF1B,0xFF1B,0xFF1B},
1645 {0xFF1C,0xFF1C,0xFF1C}, {0xFF1D,0xFF1D,0xFF1D},
1646 {0xFF1E,0xFF1E,0xFF1E}, {0xFF1F,0xFF1F,0xFF1F},
1647 {0xFF20,0xFF20,0xFF20}, {0xFF21,0xFF41,0xFF21},
1648 {0xFF22,0xFF42,0xFF22}, {0xFF23,0xFF43,0xFF23},
1649 {0xFF24,0xFF44,0xFF24}, {0xFF25,0xFF45,0xFF25},
1650 {0xFF26,0xFF46,0xFF26}, {0xFF27,0xFF47,0xFF27},
1651 {0xFF28,0xFF48,0xFF28}, {0xFF29,0xFF49,0xFF29},
1652 {0xFF2A,0xFF4A,0xFF2A}, {0xFF2B,0xFF4B,0xFF2B},
1653 {0xFF2C,0xFF4C,0xFF2C}, {0xFF2D,0xFF4D,0xFF2D},
1654 {0xFF2E,0xFF4E,0xFF2E}, {0xFF2F,0xFF4F,0xFF2F},
1655 {0xFF30,0xFF50,0xFF30}, {0xFF31,0xFF51,0xFF31},
1656 {0xFF32,0xFF52,0xFF32}, {0xFF33,0xFF53,0xFF33},
1657 {0xFF34,0xFF54,0xFF34}, {0xFF35,0xFF55,0xFF35},
1658 {0xFF36,0xFF56,0xFF36}, {0xFF37,0xFF57,0xFF37},
1659 {0xFF38,0xFF58,0xFF38}, {0xFF39,0xFF59,0xFF39},
1660 {0xFF3A,0xFF5A,0xFF3A}, {0xFF3B,0xFF3B,0xFF3B},
1661 {0xFF3C,0xFF3C,0xFF3C}, {0xFF3D,0xFF3D,0xFF3D},
1662 {0xFF3E,0xFF3E,0xFF3E}, {0xFF3F,0xFF3F,0xFF3F},
1663 {0xFF40,0xFF40,0xFF40}, {0xFF21,0xFF41,0xFF21},
1664 {0xFF22,0xFF42,0xFF22}, {0xFF23,0xFF43,0xFF23},
1665 {0xFF24,0xFF44,0xFF24}, {0xFF25,0xFF45,0xFF25},
1666 {0xFF26,0xFF46,0xFF26}, {0xFF27,0xFF47,0xFF27},
1667 {0xFF28,0xFF48,0xFF28}, {0xFF29,0xFF49,0xFF29},
1668 {0xFF2A,0xFF4A,0xFF2A}, {0xFF2B,0xFF4B,0xFF2B},
1669 {0xFF2C,0xFF4C,0xFF2C}, {0xFF2D,0xFF4D,0xFF2D},
1670 {0xFF2E,0xFF4E,0xFF2E}, {0xFF2F,0xFF4F,0xFF2F},
1671 {0xFF30,0xFF50,0xFF30}, {0xFF31,0xFF51,0xFF31},
1672 {0xFF32,0xFF52,0xFF32}, {0xFF33,0xFF53,0xFF33},
1673 {0xFF34,0xFF54,0xFF34}, {0xFF35,0xFF55,0xFF35},
1674 {0xFF36,0xFF56,0xFF36}, {0xFF37,0xFF57,0xFF37},
1675 {0xFF38,0xFF58,0xFF38}, {0xFF39,0xFF59,0xFF39},
1676 {0xFF3A,0xFF5A,0xFF3A}, {0xFF5B,0xFF5B,0xFF5B},
1677 {0xFF5C,0xFF5C,0xFF5C}, {0xFF5D,0xFF5D,0xFF5D},
1678 {0xFF5E,0xFF5E,0xFF5E}, {0xFF5F,0xFF5F,0xFF5F},
1679 {0xFF60,0xFF60,0xFF60}, {0xFF61,0xFF61,0xFF61},
1680 {0xFF62,0xFF62,0xFF62}, {0xFF63,0xFF63,0xFF63},
1681 {0xFF64,0xFF64,0xFF64}, {0xFF65,0xFF65,0xFF65},
1682 {0xFF66,0xFF66,0xFF66}, {0xFF67,0xFF67,0xFF67},
1683 {0xFF68,0xFF68,0xFF68}, {0xFF69,0xFF69,0xFF69},
1684 {0xFF6A,0xFF6A,0xFF6A}, {0xFF6B,0xFF6B,0xFF6B},
1685 {0xFF6C,0xFF6C,0xFF6C}, {0xFF6D,0xFF6D,0xFF6D},
1686 {0xFF6E,0xFF6E,0xFF6E}, {0xFF6F,0xFF6F,0xFF6F},
1687 {0xFF70,0xFF70,0xFF70}, {0xFF71,0xFF71,0xFF71},
1688 {0xFF72,0xFF72,0xFF72}, {0xFF73,0xFF73,0xFF73},
1689 {0xFF74,0xFF74,0xFF74}, {0xFF75,0xFF75,0xFF75},
1690 {0xFF76,0xFF76,0xFF76}, {0xFF77,0xFF77,0xFF77},
1691 {0xFF78,0xFF78,0xFF78}, {0xFF79,0xFF79,0xFF79},
1692 {0xFF7A,0xFF7A,0xFF7A}, {0xFF7B,0xFF7B,0xFF7B},
1693 {0xFF7C,0xFF7C,0xFF7C}, {0xFF7D,0xFF7D,0xFF7D},
1694 {0xFF7E,0xFF7E,0xFF7E}, {0xFF7F,0xFF7F,0xFF7F},
1695 {0xFF80,0xFF80,0xFF80}, {0xFF81,0xFF81,0xFF81},
1696 {0xFF82,0xFF82,0xFF82}, {0xFF83,0xFF83,0xFF83},
1697 {0xFF84,0xFF84,0xFF84}, {0xFF85,0xFF85,0xFF85},
1698 {0xFF86,0xFF86,0xFF86}, {0xFF87,0xFF87,0xFF87},
1699 {0xFF88,0xFF88,0xFF88}, {0xFF89,0xFF89,0xFF89},
1700 {0xFF8A,0xFF8A,0xFF8A}, {0xFF8B,0xFF8B,0xFF8B},
1701 {0xFF8C,0xFF8C,0xFF8C}, {0xFF8D,0xFF8D,0xFF8D},
1702 {0xFF8E,0xFF8E,0xFF8E}, {0xFF8F,0xFF8F,0xFF8F},
1703 {0xFF90,0xFF90,0xFF90}, {0xFF91,0xFF91,0xFF91},
1704 {0xFF92,0xFF92,0xFF92}, {0xFF93,0xFF93,0xFF93},
1705 {0xFF94,0xFF94,0xFF94}, {0xFF95,0xFF95,0xFF95},
1706 {0xFF96,0xFF96,0xFF96}, {0xFF97,0xFF97,0xFF97},
1707 {0xFF98,0xFF98,0xFF98}, {0xFF99,0xFF99,0xFF99},
1708 {0xFF9A,0xFF9A,0xFF9A}, {0xFF9B,0xFF9B,0xFF9B},
1709 {0xFF9C,0xFF9C,0xFF9C}, {0xFF9D,0xFF9D,0xFF9D},
1710 {0xFF9E,0xFF9E,0xFF9E}, {0xFF9F,0xFF9F,0xFF9F},
1711 {0xFFA0,0xFFA0,0xFFA0}, {0xFFA1,0xFFA1,0xFFA1},
1712 {0xFFA2,0xFFA2,0xFFA2}, {0xFFA3,0xFFA3,0xFFA3},
1713 {0xFFA4,0xFFA4,0xFFA4}, {0xFFA5,0xFFA5,0xFFA5},
1714 {0xFFA6,0xFFA6,0xFFA6}, {0xFFA7,0xFFA7,0xFFA7},
1715 {0xFFA8,0xFFA8,0xFFA8}, {0xFFA9,0xFFA9,0xFFA9},
1716 {0xFFAA,0xFFAA,0xFFAA}, {0xFFAB,0xFFAB,0xFFAB},
1717 {0xFFAC,0xFFAC,0xFFAC}, {0xFFAD,0xFFAD,0xFFAD},
1718 {0xFFAE,0xFFAE,0xFFAE}, {0xFFAF,0xFFAF,0xFFAF},
1719 {0xFFB0,0xFFB0,0xFFB0}, {0xFFB1,0xFFB1,0xFFB1},
1720 {0xFFB2,0xFFB2,0xFFB2}, {0xFFB3,0xFFB3,0xFFB3},
1721 {0xFFB4,0xFFB4,0xFFB4}, {0xFFB5,0xFFB5,0xFFB5},
1722 {0xFFB6,0xFFB6,0xFFB6}, {0xFFB7,0xFFB7,0xFFB7},
1723 {0xFFB8,0xFFB8,0xFFB8}, {0xFFB9,0xFFB9,0xFFB9},
1724 {0xFFBA,0xFFBA,0xFFBA}, {0xFFBB,0xFFBB,0xFFBB},
1725 {0xFFBC,0xFFBC,0xFFBC}, {0xFFBD,0xFFBD,0xFFBD},
1726 {0xFFBE,0xFFBE,0xFFBE}, {0xFFBF,0xFFBF,0xFFBF},
1727 {0xFFC0,0xFFC0,0xFFC0}, {0xFFC1,0xFFC1,0xFFC1},
1728 {0xFFC2,0xFFC2,0xFFC2}, {0xFFC3,0xFFC3,0xFFC3},
1729 {0xFFC4,0xFFC4,0xFFC4}, {0xFFC5,0xFFC5,0xFFC5},
1730 {0xFFC6,0xFFC6,0xFFC6}, {0xFFC7,0xFFC7,0xFFC7},
1731 {0xFFC8,0xFFC8,0xFFC8}, {0xFFC9,0xFFC9,0xFFC9},
1732 {0xFFCA,0xFFCA,0xFFCA}, {0xFFCB,0xFFCB,0xFFCB},
1733 {0xFFCC,0xFFCC,0xFFCC}, {0xFFCD,0xFFCD,0xFFCD},
1734 {0xFFCE,0xFFCE,0xFFCE}, {0xFFCF,0xFFCF,0xFFCF},
1735 {0xFFD0,0xFFD0,0xFFD0}, {0xFFD1,0xFFD1,0xFFD1},
1736 {0xFFD2,0xFFD2,0xFFD2}, {0xFFD3,0xFFD3,0xFFD3},
1737 {0xFFD4,0xFFD4,0xFFD4}, {0xFFD5,0xFFD5,0xFFD5},
1738 {0xFFD6,0xFFD6,0xFFD6}, {0xFFD7,0xFFD7,0xFFD7},
1739 {0xFFD8,0xFFD8,0xFFD8}, {0xFFD9,0xFFD9,0xFFD9},
1740 {0xFFDA,0xFFDA,0xFFDA}, {0xFFDB,0xFFDB,0xFFDB},
1741 {0xFFDC,0xFFDC,0xFFDC}, {0xFFDD,0xFFDD,0xFFDD},
1742 {0xFFDE,0xFFDE,0xFFDE}, {0xFFDF,0xFFDF,0xFFDF},
1743 {0xFFE0,0xFFE0,0xFFE0}, {0xFFE1,0xFFE1,0xFFE1},
1744 {0xFFE2,0xFFE2,0xFFE2}, {0xFFE3,0xFFE3,0xFFE3},
1745 {0xFFE4,0xFFE4,0xFFE4}, {0xFFE5,0xFFE5,0xFFE5},
1746 {0xFFE6,0xFFE6,0xFFE6}, {0xFFE7,0xFFE7,0xFFE7},
1747 {0xFFE8,0xFFE8,0xFFE8}, {0xFFE9,0xFFE9,0xFFE9},
1748 {0xFFEA,0xFFEA,0xFFEA}, {0xFFEB,0xFFEB,0xFFEB},
1749 {0xFFEC,0xFFEC,0xFFEC}, {0xFFED,0xFFED,0xFFED},
1750 {0xFFEE,0xFFEE,0xFFEE}, {0xFFEF,0xFFEF,0xFFEF},
1751 {0xFFF0,0xFFF0,0xFFF0}, {0xFFF1,0xFFF1,0xFFF1},
1752 {0xFFF2,0xFFF2,0xFFF2}, {0xFFF3,0xFFF3,0xFFF3},
1753 {0xFFF4,0xFFF4,0xFFF4}, {0xFFF5,0xFFF5,0xFFF5},
1754 {0xFFF6,0xFFF6,0xFFF6}, {0xFFF7,0xFFF7,0xFFF7},
1755 {0xFFF8,0xFFF8,0xFFF8}, {0xFFF9,0xFFF9,0xFFF9},
1756 {0xFFFA,0xFFFA,0xFFFA}, {0xFFFB,0xFFFB,0xFFFB},
1757 {0xFFFC,0xFFFC,0xFFFC}, {0xFFFD,0xFFFD,0xFFFD},
1758 {0xFFFE,0xFFFE,0xFFFE}, {0xFFFF,0xFFFF,0xFFFF}
1759};
1760
1761
1762static MY_UNICASE_CHARACTER *my_unicase_pages_default[256]=
1763{
1764 plane00, plane01, plane02, plane03, plane04, plane05, NULL, NULL,
1765 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1766 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1767 NULL, NULL, NULL, NULL, NULL, NULL, plane1E, plane1F,
1768 NULL, plane21, NULL, NULL, plane24, NULL, NULL, NULL,
1769 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1770 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1771 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1772 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1773 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1774 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1775 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1776 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1777 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1778 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1779 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1780 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1781 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1782 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1783 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1784 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1785 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1786 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1787 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1788 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1789 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1790 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1791 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1792 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1793 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1794 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1795 NULL, NULL, NULL, NULL, NULL, NULL, NULL, planeFF
1796};
1797
1798
1799MY_UNICASE_INFO my_unicase_default=
1800{
1801 0xFFFF,
1802 my_unicase_pages_default
1803};
1804
1805
1806/*
1807 Reproduce old utf8_general_ci behaviour before we fixed Bug#27877.
1808*/
1809MY_UNICASE_CHARACTER *my_unicase_pages_mysql500[256]={
1810 plane00_mysql500,
1811 plane01, plane02, plane03, plane04, plane05, NULL, NULL,
1812 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1813 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1814 NULL, NULL, NULL, NULL, NULL, NULL, plane1E, plane1F,
1815 NULL, plane21, NULL, NULL, plane24, NULL, NULL, NULL,
1816 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1817 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1818 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1819 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1820 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1821 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1822 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1823 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1824 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1825 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1826 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1827 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1828 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1829 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1830 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1831 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1832 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1833 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1834 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1835 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1836 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1837 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1838 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1839 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1840 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1841 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1842 NULL, NULL, NULL, NULL, NULL, NULL, NULL, planeFF
1843
1844};
1845
1846
1847MY_UNICASE_INFO my_unicase_mysql500=
1848{
1849 0xFFFF,
1850 my_unicase_pages_mysql500
1851};
1852
1853
1854/*
1855 Turkish lower/upper mapping:
1856 1. LOWER(0x0049 LATIN CAPITAL LETTER I) ->
1857 0x0131 LATIN SMALL LETTER DOTLESS I
1858 2. UPPER(0x0069 LATIN SMALL LETTER I) ->
1859 0x0130 LATIN CAPITAL LETTER I WITH DOT ABOVE
1860*/
1861
1862static MY_UNICASE_CHARACTER turk00[]=
1863{
1864 {0x0000,0x0000,0x0000}, {0x0001,0x0001,0x0001},
1865 {0x0002,0x0002,0x0002}, {0x0003,0x0003,0x0003},
1866 {0x0004,0x0004,0x0004}, {0x0005,0x0005,0x0005},
1867 {0x0006,0x0006,0x0006}, {0x0007,0x0007,0x0007},
1868 {0x0008,0x0008,0x0008}, {0x0009,0x0009,0x0009},
1869 {0x000A,0x000A,0x000A}, {0x000B,0x000B,0x000B},
1870 {0x000C,0x000C,0x000C}, {0x000D,0x000D,0x000D},
1871 {0x000E,0x000E,0x000E}, {0x000F,0x000F,0x000F},
1872 {0x0010,0x0010,0x0010}, {0x0011,0x0011,0x0011},
1873 {0x0012,0x0012,0x0012}, {0x0013,0x0013,0x0013},
1874 {0x0014,0x0014,0x0014}, {0x0015,0x0015,0x0015},
1875 {0x0016,0x0016,0x0016}, {0x0017,0x0017,0x0017},
1876 {0x0018,0x0018,0x0018}, {0x0019,0x0019,0x0019},
1877 {0x001A,0x001A,0x001A}, {0x001B,0x001B,0x001B},
1878 {0x001C,0x001C,0x001C}, {0x001D,0x001D,0x001D},
1879 {0x001E,0x001E,0x001E}, {0x001F,0x001F,0x001F},
1880 {0x0020,0x0020,0x0020}, {0x0021,0x0021,0x0021},
1881 {0x0022,0x0022,0x0022}, {0x0023,0x0023,0x0023},
1882 {0x0024,0x0024,0x0024}, {0x0025,0x0025,0x0025},
1883 {0x0026,0x0026,0x0026}, {0x0027,0x0027,0x0027},
1884 {0x0028,0x0028,0x0028}, {0x0029,0x0029,0x0029},
1885 {0x002A,0x002A,0x002A}, {0x002B,0x002B,0x002B},
1886 {0x002C,0x002C,0x002C}, {0x002D,0x002D,0x002D},
1887 {0x002E,0x002E,0x002E}, {0x002F,0x002F,0x002F},
1888 {0x0030,0x0030,0x0030}, {0x0031,0x0031,0x0031},
1889 {0x0032,0x0032,0x0032}, {0x0033,0x0033,0x0033},
1890 {0x0034,0x0034,0x0034}, {0x0035,0x0035,0x0035},
1891 {0x0036,0x0036,0x0036}, {0x0037,0x0037,0x0037},
1892 {0x0038,0x0038,0x0038}, {0x0039,0x0039,0x0039},
1893 {0x003A,0x003A,0x003A}, {0x003B,0x003B,0x003B},
1894 {0x003C,0x003C,0x003C}, {0x003D,0x003D,0x003D},
1895 {0x003E,0x003E,0x003E}, {0x003F,0x003F,0x003F},
1896 {0x0040,0x0040,0x0040}, {0x0041,0x0061,0x0041},
1897 {0x0042,0x0062,0x0042}, {0x0043,0x0063,0x0043},
1898 {0x0044,0x0064,0x0044}, {0x0045,0x0065,0x0045},
1899 {0x0046,0x0066,0x0046}, {0x0047,0x0067,0x0047},
1900 {0x0048,0x0068,0x0048}, {0x0049,0x0131,0x0049},
1901 {0x004A,0x006A,0x004A}, {0x004B,0x006B,0x004B},
1902 {0x004C,0x006C,0x004C}, {0x004D,0x006D,0x004D},
1903 {0x004E,0x006E,0x004E}, {0x004F,0x006F,0x004F},
1904 {0x0050,0x0070,0x0050}, {0x0051,0x0071,0x0051},
1905 {0x0052,0x0072,0x0052}, {0x0053,0x0073,0x0053},
1906 {0x0054,0x0074,0x0054}, {0x0055,0x0075,0x0055},
1907 {0x0056,0x0076,0x0056}, {0x0057,0x0077,0x0057},
1908 {0x0058,0x0078,0x0058}, {0x0059,0x0079,0x0059},
1909 {0x005A,0x007A,0x005A}, {0x005B,0x005B,0x005B},
1910 {0x005C,0x005C,0x005C}, {0x005D,0x005D,0x005D},
1911 {0x005E,0x005E,0x005E}, {0x005F,0x005F,0x005F},
1912 {0x0060,0x0060,0x0060}, {0x0041,0x0061,0x0041},
1913 {0x0042,0x0062,0x0042}, {0x0043,0x0063,0x0043},
1914 {0x0044,0x0064,0x0044}, {0x0045,0x0065,0x0045},
1915 {0x0046,0x0066,0x0046}, {0x0047,0x0067,0x0047},
1916 {0x0048,0x0068,0x0048}, {0x0130,0x0069,0x0049},
1917 {0x004A,0x006A,0x004A}, {0x004B,0x006B,0x004B},
1918 {0x004C,0x006C,0x004C}, {0x004D,0x006D,0x004D},
1919 {0x004E,0x006E,0x004E}, {0x004F,0x006F,0x004F},
1920 {0x0050,0x0070,0x0050}, {0x0051,0x0071,0x0051},
1921 {0x0052,0x0072,0x0052}, {0x0053,0x0073,0x0053},
1922 {0x0054,0x0074,0x0054}, {0x0055,0x0075,0x0055},
1923 {0x0056,0x0076,0x0056}, {0x0057,0x0077,0x0057},
1924 {0x0058,0x0078,0x0058}, {0x0059,0x0079,0x0059},
1925 {0x005A,0x007A,0x005A}, {0x007B,0x007B,0x007B},
1926 {0x007C,0x007C,0x007C}, {0x007D,0x007D,0x007D},
1927 {0x007E,0x007E,0x007E}, {0x007F,0x007F,0x007F},
1928 {0x0080,0x0080,0x0080}, {0x0081,0x0081,0x0081},
1929 {0x0082,0x0082,0x0082}, {0x0083,0x0083,0x0083},
1930 {0x0084,0x0084,0x0084}, {0x0085,0x0085,0x0085},
1931 {0x0086,0x0086,0x0086}, {0x0087,0x0087,0x0087},
1932 {0x0088,0x0088,0x0088}, {0x0089,0x0089,0x0089},
1933 {0x008A,0x008A,0x008A}, {0x008B,0x008B,0x008B},
1934 {0x008C,0x008C,0x008C}, {0x008D,0x008D,0x008D},
1935 {0x008E,0x008E,0x008E}, {0x008F,0x008F,0x008F},
1936 {0x0090,0x0090,0x0090}, {0x0091,0x0091,0x0091},
1937 {0x0092,0x0092,0x0092}, {0x0093,0x0093,0x0093},
1938 {0x0094,0x0094,0x0094}, {0x0095,0x0095,0x0095},
1939 {0x0096,0x0096,0x0096}, {0x0097,0x0097,0x0097},
1940 {0x0098,0x0098,0x0098}, {0x0099,0x0099,0x0099},
1941 {0x009A,0x009A,0x009A}, {0x009B,0x009B,0x009B},
1942 {0x009C,0x009C,0x009C}, {0x009D,0x009D,0x009D},
1943 {0x009E,0x009E,0x009E}, {0x009F,0x009F,0x009F},
1944 {0x00A0,0x00A0,0x00A0}, {0x00A1,0x00A1,0x00A1},
1945 {0x00A2,0x00A2,0x00A2}, {0x00A3,0x00A3,0x00A3},
1946 {0x00A4,0x00A4,0x00A4}, {0x00A5,0x00A5,0x00A5},
1947 {0x00A6,0x00A6,0x00A6}, {0x00A7,0x00A7,0x00A7},
1948 {0x00A8,0x00A8,0x00A8}, {0x00A9,0x00A9,0x00A9},
1949 {0x00AA,0x00AA,0x00AA}, {0x00AB,0x00AB,0x00AB},
1950 {0x00AC,0x00AC,0x00AC}, {0x00AD,0x00AD,0x00AD},
1951 {0x00AE,0x00AE,0x00AE}, {0x00AF,0x00AF,0x00AF},
1952 {0x00B0,0x00B0,0x00B0}, {0x00B1,0x00B1,0x00B1},
1953 {0x00B2,0x00B2,0x00B2}, {0x00B3,0x00B3,0x00B3},
1954 {0x00B4,0x00B4,0x00B4}, {0x039C,0x00B5,0x039C},
1955 {0x00B6,0x00B6,0x00B6}, {0x00B7,0x00B7,0x00B7},
1956 {0x00B8,0x00B8,0x00B8}, {0x00B9,0x00B9,0x00B9},
1957 {0x00BA,0x00BA,0x00BA}, {0x00BB,0x00BB,0x00BB},
1958 {0x00BC,0x00BC,0x00BC}, {0x00BD,0x00BD,0x00BD},
1959 {0x00BE,0x00BE,0x00BE}, {0x00BF,0x00BF,0x00BF},
1960 {0x00C0,0x00E0,0x0041}, {0x00C1,0x00E1,0x0041},
1961 {0x00C2,0x00E2,0x0041}, {0x00C3,0x00E3,0x0041},
1962 {0x00C4,0x00E4,0x0041}, {0x00C5,0x00E5,0x0041},
1963 {0x00C6,0x00E6,0x00C6}, {0x00C7,0x00E7,0x0043},
1964 {0x00C8,0x00E8,0x0045}, {0x00C9,0x00E9,0x0045},
1965 {0x00CA,0x00EA,0x0045}, {0x00CB,0x00EB,0x0045},
1966 {0x00CC,0x00EC,0x0049}, {0x00CD,0x00ED,0x0049},
1967 {0x00CE,0x00EE,0x0049}, {0x00CF,0x00EF,0x0049},
1968 {0x00D0,0x00F0,0x00D0}, {0x00D1,0x00F1,0x004E},
1969 {0x00D2,0x00F2,0x004F}, {0x00D3,0x00F3,0x004F},
1970 {0x00D4,0x00F4,0x004F}, {0x00D5,0x00F5,0x004F},
1971 {0x00D6,0x00F6,0x004F}, {0x00D7,0x00D7,0x00D7},
1972 {0x00D8,0x00F8,0x00D8}, {0x00D9,0x00F9,0x0055},
1973 {0x00DA,0x00FA,0x0055}, {0x00DB,0x00FB,0x0055},
1974 {0x00DC,0x00FC,0x0055}, {0x00DD,0x00FD,0x0059},
1975 {0x00DE,0x00FE,0x00DE}, {0x00DF,0x00DF,0x00DF},
1976 {0x00C0,0x00E0,0x0041}, {0x00C1,0x00E1,0x0041},
1977 {0x00C2,0x00E2,0x0041}, {0x00C3,0x00E3,0x0041},
1978 {0x00C4,0x00E4,0x0041}, {0x00C5,0x00E5,0x0041},
1979 {0x00C6,0x00E6,0x00C6}, {0x00C7,0x00E7,0x0043},
1980 {0x00C8,0x00E8,0x0045}, {0x00C9,0x00E9,0x0045},
1981 {0x00CA,0x00EA,0x0045}, {0x00CB,0x00EB,0x0045},
1982 {0x00CC,0x00EC,0x0049}, {0x00CD,0x00ED,0x0049},
1983 {0x00CE,0x00EE,0x0049}, {0x00CF,0x00EF,0x0049},
1984 {0x00D0,0x00F0,0x00D0}, {0x00D1,0x00F1,0x004E},
1985 {0x00D2,0x00F2,0x004F}, {0x00D3,0x00F3,0x004F},
1986 {0x00D4,0x00F4,0x004F}, {0x00D5,0x00F5,0x004F},
1987 {0x00D6,0x00F6,0x004F}, {0x00F7,0x00F7,0x00F7},
1988 {0x00D8,0x00F8,0x00D8}, {0x00D9,0x00F9,0x0055},
1989 {0x00DA,0x00FA,0x0055}, {0x00DB,0x00FB,0x0055},
1990 {0x00DC,0x00FC,0x0055}, {0x00DD,0x00FD,0x0059},
1991 {0x00DE,0x00FE,0x00DE}, {0x0178,0x00FF,0x0059}
1992};
1993
1994
1995
1996static MY_UNICASE_CHARACTER *my_unicase_pages_turkish[256]=
1997{
1998 turk00, plane01, plane02, plane03, plane04, plane05, NULL, NULL,
1999 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
2000 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
2001 NULL, NULL, NULL, NULL, NULL, NULL, plane1E, plane1F,
2002 NULL, plane21, NULL, NULL, plane24, NULL, NULL, NULL,
2003 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
2004 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
2005 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
2006 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
2007 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
2008 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
2009 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
2010 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
2011 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
2012 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
2013 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
2014 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
2015 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
2016 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
2017 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
2018 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
2019 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
2020 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
2021 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
2022 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
2023 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
2024 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
2025 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
2026 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
2027 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
2028 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
2029 NULL, NULL, NULL, NULL, NULL, NULL, NULL, planeFF
2030};
2031
2032
2033MY_UNICASE_INFO my_unicase_turkish=
2034{
2035 0xFFFF,
2036 my_unicase_pages_turkish
2037};
2038
2039
2040/* Unicode-5.2.0 case folding information */
2041static MY_UNICASE_CHARACTER u520p00[]={
2042 {0x0000,0x0000,0x0000}, {0x0001,0x0001,0x0001}, /* 0000 */
2043 {0x0002,0x0002,0x0002}, {0x0003,0x0003,0x0003}, /* 0002 */
2044 {0x0004,0x0004,0x0004}, {0x0005,0x0005,0x0005}, /* 0004 */
2045 {0x0006,0x0006,0x0006}, {0x0007,0x0007,0x0007}, /* 0006 */
2046 {0x0008,0x0008,0x0008}, {0x0009,0x0009,0x0009}, /* 0008 */
2047 {0x000A,0x000A,0x000A}, {0x000B,0x000B,0x000B}, /* 000A */
2048 {0x000C,0x000C,0x000C}, {0x000D,0x000D,0x000D}, /* 000C */
2049 {0x000E,0x000E,0x000E}, {0x000F,0x000F,0x000F}, /* 000E */
2050 {0x0010,0x0010,0x0010}, {0x0011,0x0011,0x0011}, /* 0010 */
2051 {0x0012,0x0012,0x0012}, {0x0013,0x0013,0x0013}, /* 0012 */
2052 {0x0014,0x0014,0x0014}, {0x0015,0x0015,0x0015}, /* 0014 */
2053 {0x0016,0x0016,0x0016}, {0x0017,0x0017,0x0017}, /* 0016 */
2054 {0x0018,0x0018,0x0018}, {0x0019,0x0019,0x0019}, /* 0018 */
2055 {0x001A,0x001A,0x001A}, {0x001B,0x001B,0x001B}, /* 001A */
2056 {0x001C,0x001C,0x001C}, {0x001D,0x001D,0x001D}, /* 001C */
2057 {0x001E,0x001E,0x001E}, {0x001F,0x001F,0x001F}, /* 001E */
2058 {0x0020,0x0020,0x0020}, {0x0021,0x0021,0x0021}, /* 0020 */
2059 {0x0022,0x0022,0x0022}, {0x0023,0x0023,0x0023}, /* 0022 */
2060 {0x0024,0x0024,0x0024}, {0x0025,0x0025,0x0025}, /* 0024 */
2061 {0x0026,0x0026,0x0026}, {0x0027,0x0027,0x0027}, /* 0026 */
2062 {0x0028,0x0028,0x0028}, {0x0029,0x0029,0x0029}, /* 0028 */
2063 {0x002A,0x002A,0x002A}, {0x002B,0x002B,0x002B}, /* 002A */
2064 {0x002C,0x002C,0x002C}, {0x002D,0x002D,0x002D}, /* 002C */
2065 {0x002E,0x002E,0x002E}, {0x002F,0x002F,0x002F}, /* 002E */
2066 {0x0030,0x0030,0x0030}, {0x0031,0x0031,0x0031}, /* 0030 */
2067 {0x0032,0x0032,0x0032}, {0x0033,0x0033,0x0033}, /* 0032 */
2068 {0x0034,0x0034,0x0034}, {0x0035,0x0035,0x0035}, /* 0034 */
2069 {0x0036,0x0036,0x0036}, {0x0037,0x0037,0x0037}, /* 0036 */
2070 {0x0038,0x0038,0x0038}, {0x0039,0x0039,0x0039}, /* 0038 */
2071 {0x003A,0x003A,0x003A}, {0x003B,0x003B,0x003B}, /* 003A */
2072 {0x003C,0x003C,0x003C}, {0x003D,0x003D,0x003D}, /* 003C */
2073 {0x003E,0x003E,0x003E}, {0x003F,0x003F,0x003F}, /* 003E */
2074 {0x0040,0x0040,0x0040}, {0x0041,0x0061,0x0041}, /* 0040 */
2075 {0x0042,0x0062,0x0042}, {0x0043,0x0063,0x0043}, /* 0042 */
2076 {0x0044,0x0064,0x0044}, {0x0045,0x0065,0x0045}, /* 0044 */
2077 {0x0046,0x0066,0x0046}, {0x0047,0x0067,0x0047}, /* 0046 */
2078 {0x0048,0x0068,0x0048}, {0x0049,0x0069,0x0049}, /* 0048 */
2079 {0x004A,0x006A,0x004A}, {0x004B,0x006B,0x004B}, /* 004A */
2080 {0x004C,0x006C,0x004C}, {0x004D,0x006D,0x004D}, /* 004C */
2081 {0x004E,0x006E,0x004E}, {0x004F,0x006F,0x004F}, /* 004E */
2082 {0x0050,0x0070,0x0050}, {0x0051,0x0071,0x0051}, /* 0050 */
2083 {0x0052,0x0072,0x0052}, {0x0053,0x0073,0x0053}, /* 0052 */
2084 {0x0054,0x0074,0x0054}, {0x0055,0x0075,0x0055}, /* 0054 */
2085 {0x0056,0x0076,0x0056}, {0x0057,0x0077,0x0057}, /* 0056 */
2086 {0x0058,0x0078,0x0058}, {0x0059,0x0079,0x0059}, /* 0058 */
2087 {0x005A,0x007A,0x005A}, {0x005B,0x005B,0x005B}, /* 005A */
2088 {0x005C,0x005C,0x005C}, {0x005D,0x005D,0x005D}, /* 005C */
2089 {0x005E,0x005E,0x005E}, {0x005F,0x005F,0x005F}, /* 005E */
2090 {0x0060,0x0060,0x0060}, {0x0041,0x0061,0x0041}, /* 0060 */
2091 {0x0042,0x0062,0x0042}, {0x0043,0x0063,0x0043}, /* 0062 */
2092 {0x0044,0x0064,0x0044}, {0x0045,0x0065,0x0045}, /* 0064 */
2093 {0x0046,0x0066,0x0046}, {0x0047,0x0067,0x0047}, /* 0066 */
2094 {0x0048,0x0068,0x0048}, {0x0049,0x0069,0x0049}, /* 0068 */
2095 {0x004A,0x006A,0x004A}, {0x004B,0x006B,0x004B}, /* 006A */
2096 {0x004C,0x006C,0x004C}, {0x004D,0x006D,0x004D}, /* 006C */
2097 {0x004E,0x006E,0x004E}, {0x004F,0x006F,0x004F}, /* 006E */
2098 {0x0050,0x0070,0x0050}, {0x0051,0x0071,0x0051}, /* 0070 */
2099 {0x0052,0x0072,0x0052}, {0x0053,0x0073,0x0053}, /* 0072 */
2100 {0x0054,0x0074,0x0054}, {0x0055,0x0075,0x0055}, /* 0074 */
2101 {0x0056,0x0076,0x0056}, {0x0057,0x0077,0x0057}, /* 0076 */
2102 {0x0058,0x0078,0x0058}, {0x0059,0x0079,0x0059}, /* 0078 */
2103 {0x005A,0x007A,0x005A}, {0x007B,0x007B,0x007B}, /* 007A */
2104 {0x007C,0x007C,0x007C}, {0x007D,0x007D,0x007D}, /* 007C */
2105 {0x007E,0x007E,0x007E}, {0x007F,0x007F,0x007F}, /* 007E */
2106 {0x0080,0x0080,0x0080}, {0x0081,0x0081,0x0081}, /* 0080 */
2107 {0x0082,0x0082,0x0082}, {0x0083,0x0083,0x0083}, /* 0082 */
2108 {0x0084,0x0084,0x0084}, {0x0085,0x0085,0x0085}, /* 0084 */
2109 {0x0086,0x0086,0x0086}, {0x0087,0x0087,0x0087}, /* 0086 */
2110 {0x0088,0x0088,0x0088}, {0x0089,0x0089,0x0089}, /* 0088 */
2111 {0x008A,0x008A,0x008A}, {0x008B,0x008B,0x008B}, /* 008A */
2112 {0x008C,0x008C,0x008C}, {0x008D,0x008D,0x008D}, /* 008C */
2113 {0x008E,0x008E,0x008E}, {0x008F,0x008F,0x008F}, /* 008E */
2114 {0x0090,0x0090,0x0090}, {0x0091,0x0091,0x0091}, /* 0090 */
2115 {0x0092,0x0092,0x0092}, {0x0093,0x0093,0x0093}, /* 0092 */
2116 {0x0094,0x0094,0x0094}, {0x0095,0x0095,0x0095}, /* 0094 */
2117 {0x0096,0x0096,0x0096}, {0x0097,0x0097,0x0097}, /* 0096 */
2118 {0x0098,0x0098,0x0098}, {0x0099,0x0099,0x0099}, /* 0098 */
2119 {0x009A,0x009A,0x009A}, {0x009B,0x009B,0x009B}, /* 009A */
2120 {0x009C,0x009C,0x009C}, {0x009D,0x009D,0x009D}, /* 009C */
2121 {0x009E,0x009E,0x009E}, {0x009F,0x009F,0x009F}, /* 009E */
2122 {0x00A0,0x00A0,0x00A0}, {0x00A1,0x00A1,0x00A1}, /* 00A0 */
2123 {0x00A2,0x00A2,0x00A2}, {0x00A3,0x00A3,0x00A3}, /* 00A2 */
2124 {0x00A4,0x00A4,0x00A4}, {0x00A5,0x00A5,0x00A5}, /* 00A4 */
2125 {0x00A6,0x00A6,0x00A6}, {0x00A7,0x00A7,0x00A7}, /* 00A6 */
2126 {0x00A8,0x00A8,0x00A8}, {0x00A9,0x00A9,0x00A9}, /* 00A8 */
2127 {0x00AA,0x00AA,0x00AA}, {0x00AB,0x00AB,0x00AB}, /* 00AA */
2128 {0x00AC,0x00AC,0x00AC}, {0x00AD,0x00AD,0x00AD}, /* 00AC */
2129 {0x00AE,0x00AE,0x00AE}, {0x00AF,0x00AF,0x00AF}, /* 00AE */
2130 {0x00B0,0x00B0,0x00B0}, {0x00B1,0x00B1,0x00B1}, /* 00B0 */
2131 {0x00B2,0x00B2,0x00B2}, {0x00B3,0x00B3,0x00B3}, /* 00B2 */
2132 {0x00B4,0x00B4,0x00B4}, {0x039C,0x00B5,0x039C}, /* 00B4 */
2133 {0x00B6,0x00B6,0x00B6}, {0x00B7,0x00B7,0x00B7}, /* 00B6 */
2134 {0x00B8,0x00B8,0x00B8}, {0x00B9,0x00B9,0x00B9}, /* 00B8 */
2135 {0x00BA,0x00BA,0x00BA}, {0x00BB,0x00BB,0x00BB}, /* 00BA */
2136 {0x00BC,0x00BC,0x00BC}, {0x00BD,0x00BD,0x00BD}, /* 00BC */
2137 {0x00BE,0x00BE,0x00BE}, {0x00BF,0x00BF,0x00BF}, /* 00BE */
2138 {0x00C0,0x00E0,0x0041}, {0x00C1,0x00E1,0x0041}, /* 00C0 */
2139 {0x00C2,0x00E2,0x0041}, {0x00C3,0x00E3,0x0041}, /* 00C2 */
2140 {0x00C4,0x00E4,0x0041}, {0x00C5,0x00E5,0x0041}, /* 00C4 */
2141 {0x00C6,0x00E6,0x00C6}, {0x00C7,0x00E7,0x0043}, /* 00C6 */
2142 {0x00C8,0x00E8,0x0045}, {0x00C9,0x00E9,0x0045}, /* 00C8 */
2143 {0x00CA,0x00EA,0x0045}, {0x00CB,0x00EB,0x0045}, /* 00CA */
2144 {0x00CC,0x00EC,0x0049}, {0x00CD,0x00ED,0x0049}, /* 00CC */
2145 {0x00CE,0x00EE,0x0049}, {0x00CF,0x00EF,0x0049}, /* 00CE */
2146 {0x00D0,0x00F0,0x00D0}, {0x00D1,0x00F1,0x004E}, /* 00D0 */
2147 {0x00D2,0x00F2,0x004F}, {0x00D3,0x00F3,0x004F}, /* 00D2 */
2148 {0x00D4,0x00F4,0x004F}, {0x00D5,0x00F5,0x004F}, /* 00D4 */
2149 {0x00D6,0x00F6,0x004F}, {0x00D7,0x00D7,0x00D7}, /* 00D6 */
2150 {0x00D8,0x00F8,0x00D8}, {0x00D9,0x00F9,0x0055}, /* 00D8 */
2151 {0x00DA,0x00FA,0x0055}, {0x00DB,0x00FB,0x0055}, /* 00DA */
2152 {0x00DC,0x00FC,0x0055}, {0x00DD,0x00FD,0x0059}, /* 00DC */
2153 {0x00DE,0x00FE,0x00DE}, {0x00DF,0x00DF,0x0053}, /* 00DE */
2154 {0x00C0,0x00E0,0x0041}, {0x00C1,0x00E1,0x0041}, /* 00E0 */
2155 {0x00C2,0x00E2,0x0041}, {0x00C3,0x00E3,0x0041}, /* 00E2 */
2156 {0x00C4,0x00E4,0x0041}, {0x00C5,0x00E5,0x0041}, /* 00E4 */
2157 {0x00C6,0x00E6,0x00C6}, {0x00C7,0x00E7,0x0043}, /* 00E6 */
2158 {0x00C8,0x00E8,0x0045}, {0x00C9,0x00E9,0x0045}, /* 00E8 */
2159 {0x00CA,0x00EA,0x0045}, {0x00CB,0x00EB,0x0045}, /* 00EA */
2160 {0x00CC,0x00EC,0x0049}, {0x00CD,0x00ED,0x0049}, /* 00EC */
2161 {0x00CE,0x00EE,0x0049}, {0x00CF,0x00EF,0x0049}, /* 00EE */
2162 {0x00D0,0x00F0,0x00D0}, {0x00D1,0x00F1,0x004E}, /* 00F0 */
2163 {0x00D2,0x00F2,0x004F}, {0x00D3,0x00F3,0x004F}, /* 00F2 */
2164 {0x00D4,0x00F4,0x004F}, {0x00D5,0x00F5,0x004F}, /* 00F4 */
2165 {0x00D6,0x00F6,0x004F}, {0x00F7,0x00F7,0x00F7}, /* 00F6 */
2166 {0x00D8,0x00F8,0x00D8}, {0x00D9,0x00F9,0x0055}, /* 00F8 */
2167 {0x00DA,0x00FA,0x0055}, {0x00DB,0x00FB,0x0055}, /* 00FA */
2168 {0x00DC,0x00FC,0x0055}, {0x00DD,0x00FD,0x0059}, /* 00FC */
2169 {0x00DE,0x00FE,0x00DE}, {0x0178,0x00FF,0x0059} /* 00FE */
2170};
2171
2172static MY_UNICASE_CHARACTER u520p01[]={
2173 {0x0100,0x0101,0x0041}, {0x0100,0x0101,0x0041}, /* 0100 */
2174 {0x0102,0x0103,0x0041}, {0x0102,0x0103,0x0041}, /* 0102 */
2175 {0x0104,0x0105,0x0041}, {0x0104,0x0105,0x0041}, /* 0104 */
2176 {0x0106,0x0107,0x0043}, {0x0106,0x0107,0x0043}, /* 0106 */
2177 {0x0108,0x0109,0x0043}, {0x0108,0x0109,0x0043}, /* 0108 */
2178 {0x010A,0x010B,0x0043}, {0x010A,0x010B,0x0043}, /* 010A */
2179 {0x010C,0x010D,0x0043}, {0x010C,0x010D,0x0043}, /* 010C */
2180 {0x010E,0x010F,0x0044}, {0x010E,0x010F,0x0044}, /* 010E */
2181 {0x0110,0x0111,0x0110}, {0x0110,0x0111,0x0110}, /* 0110 */
2182 {0x0112,0x0113,0x0045}, {0x0112,0x0113,0x0045}, /* 0112 */
2183 {0x0114,0x0115,0x0045}, {0x0114,0x0115,0x0045}, /* 0114 */
2184 {0x0116,0x0117,0x0045}, {0x0116,0x0117,0x0045}, /* 0116 */
2185 {0x0118,0x0119,0x0045}, {0x0118,0x0119,0x0045}, /* 0118 */
2186 {0x011A,0x011B,0x0045}, {0x011A,0x011B,0x0045}, /* 011A */
2187 {0x011C,0x011D,0x0047}, {0x011C,0x011D,0x0047}, /* 011C */
2188 {0x011E,0x011F,0x0047}, {0x011E,0x011F,0x0047}, /* 011E */
2189 {0x0120,0x0121,0x0047}, {0x0120,0x0121,0x0047}, /* 0120 */
2190 {0x0122,0x0123,0x0047}, {0x0122,0x0123,0x0047}, /* 0122 */
2191 {0x0124,0x0125,0x0048}, {0x0124,0x0125,0x0048}, /* 0124 */
2192 {0x0126,0x0127,0x0126}, {0x0126,0x0127,0x0126}, /* 0126 */
2193 {0x0128,0x0129,0x0049}, {0x0128,0x0129,0x0049}, /* 0128 */
2194 {0x012A,0x012B,0x0049}, {0x012A,0x012B,0x0049}, /* 012A */
2195 {0x012C,0x012D,0x0049}, {0x012C,0x012D,0x0049}, /* 012C */
2196 {0x012E,0x012F,0x0049}, {0x012E,0x012F,0x0049}, /* 012E */
2197 {0x0130,0x0069,0x0049}, {0x0049,0x0131,0x0049}, /* 0130 */
2198 {0x0132,0x0133,0x0132}, {0x0132,0x0133,0x0132}, /* 0132 */
2199 {0x0134,0x0135,0x004A}, {0x0134,0x0135,0x004A}, /* 0134 */
2200 {0x0136,0x0137,0x004B}, {0x0136,0x0137,0x004B}, /* 0136 */
2201 {0x0138,0x0138,0x0138}, {0x0139,0x013A,0x004C}, /* 0138 */
2202 {0x0139,0x013A,0x004C}, {0x013B,0x013C,0x004C}, /* 013A */
2203 {0x013B,0x013C,0x004C}, {0x013D,0x013E,0x004C}, /* 013C */
2204 {0x013D,0x013E,0x004C}, {0x013F,0x0140,0x013F}, /* 013E */
2205 {0x013F,0x0140,0x013F}, {0x0141,0x0142,0x0141}, /* 0140 */
2206 {0x0141,0x0142,0x0141}, {0x0143,0x0144,0x004E}, /* 0142 */
2207 {0x0143,0x0144,0x004E}, {0x0145,0x0146,0x004E}, /* 0144 */
2208 {0x0145,0x0146,0x004E}, {0x0147,0x0148,0x004E}, /* 0146 */
2209 {0x0147,0x0148,0x004E}, {0x0149,0x0149,0x0149}, /* 0148 */
2210 {0x014A,0x014B,0x014A}, {0x014A,0x014B,0x014A}, /* 014A */
2211 {0x014C,0x014D,0x004F}, {0x014C,0x014D,0x004F}, /* 014C */
2212 {0x014E,0x014F,0x004F}, {0x014E,0x014F,0x004F}, /* 014E */
2213 {0x0150,0x0151,0x004F}, {0x0150,0x0151,0x004F}, /* 0150 */
2214 {0x0152,0x0153,0x0152}, {0x0152,0x0153,0x0152}, /* 0152 */
2215 {0x0154,0x0155,0x0052}, {0x0154,0x0155,0x0052}, /* 0154 */
2216 {0x0156,0x0157,0x0052}, {0x0156,0x0157,0x0052}, /* 0156 */
2217 {0x0158,0x0159,0x0052}, {0x0158,0x0159,0x0052}, /* 0158 */
2218 {0x015A,0x015B,0x0053}, {0x015A,0x015B,0x0053}, /* 015A */
2219 {0x015C,0x015D,0x0053}, {0x015C,0x015D,0x0053}, /* 015C */
2220 {0x015E,0x015F,0x0053}, {0x015E,0x015F,0x0053}, /* 015E */
2221 {0x0160,0x0161,0x0053}, {0x0160,0x0161,0x0053}, /* 0160 */
2222 {0x0162,0x0163,0x0054}, {0x0162,0x0163,0x0054}, /* 0162 */
2223 {0x0164,0x0165,0x0054}, {0x0164,0x0165,0x0054}, /* 0164 */
2224 {0x0166,0x0167,0x0166}, {0x0166,0x0167,0x0166}, /* 0166 */
2225 {0x0168,0x0169,0x0055}, {0x0168,0x0169,0x0055}, /* 0168 */
2226 {0x016A,0x016B,0x0055}, {0x016A,0x016B,0x0055}, /* 016A */
2227 {0x016C,0x016D,0x0055}, {0x016C,0x016D,0x0055}, /* 016C */
2228 {0x016E,0x016F,0x0055}, {0x016E,0x016F,0x0055}, /* 016E */
2229 {0x0170,0x0171,0x0055}, {0x0170,0x0171,0x0055}, /* 0170 */
2230 {0x0172,0x0173,0x0055}, {0x0172,0x0173,0x0055}, /* 0172 */
2231 {0x0174,0x0175,0x0057}, {0x0174,0x0175,0x0057}, /* 0174 */
2232 {0x0176,0x0177,0x0059}, {0x0176,0x0177,0x0059}, /* 0176 */
2233 {0x0178,0x00FF,0x0059}, {0x0179,0x017A,0x005A}, /* 0178 */
2234 {0x0179,0x017A,0x005A}, {0x017B,0x017C,0x005A}, /* 017A */
2235 {0x017B,0x017C,0x005A}, {0x017D,0x017E,0x005A}, /* 017C */
2236 {0x017D,0x017E,0x005A}, {0x0053,0x017F,0x0053}, /* 017E */
2237 {0x0243,0x0180,0x0243}, {0x0181,0x0253,0x0181}, /* 0180 */
2238 {0x0182,0x0183,0x0182}, {0x0182,0x0183,0x0182}, /* 0182 */
2239 {0x0184,0x0185,0x0184}, {0x0184,0x0185,0x0184}, /* 0184 */
2240 {0x0186,0x0254,0x0186}, {0x0187,0x0188,0x0187}, /* 0186 */
2241 {0x0187,0x0188,0x0187}, {0x0189,0x0256,0x0189}, /* 0188 */
2242 {0x018A,0x0257,0x018A}, {0x018B,0x018C,0x018B}, /* 018A */
2243 {0x018B,0x018C,0x018B}, {0x018D,0x018D,0x018D}, /* 018C */
2244 {0x018E,0x01DD,0x018E}, {0x018F,0x0259,0x018F}, /* 018E */
2245 {0x0190,0x025B,0x0190}, {0x0191,0x0192,0x0191}, /* 0190 */
2246 {0x0191,0x0192,0x0191}, {0x0193,0x0260,0x0193}, /* 0192 */
2247 {0x0194,0x0263,0x0194}, {0x01F6,0x0195,0x01F6}, /* 0194 */
2248 {0x0196,0x0269,0x0196}, {0x0197,0x0268,0x0197}, /* 0196 */
2249 {0x0198,0x0199,0x0198}, {0x0198,0x0199,0x0198}, /* 0198 */
2250 {0x023D,0x019A,0x023D}, {0x019B,0x019B,0x019B}, /* 019A */
2251 {0x019C,0x026F,0x019C}, {0x019D,0x0272,0x019D}, /* 019C */
2252 {0x0220,0x019E,0x0220}, {0x019F,0x0275,0x019F}, /* 019E */
2253 {0x01A0,0x01A1,0x004F}, {0x01A0,0x01A1,0x004F}, /* 01A0 */
2254 {0x01A2,0x01A3,0x01A2}, {0x01A2,0x01A3,0x01A2}, /* 01A2 */
2255 {0x01A4,0x01A5,0x01A4}, {0x01A4,0x01A5,0x01A4}, /* 01A4 */
2256 {0x01A6,0x0280,0x01A6}, {0x01A7,0x01A8,0x01A7}, /* 01A6 */
2257 {0x01A7,0x01A8,0x01A7}, {0x01A9,0x0283,0x01A9}, /* 01A8 */
2258 {0x01AA,0x01AA,0x01AA}, {0x01AB,0x01AB,0x01AB}, /* 01AA */
2259 {0x01AC,0x01AD,0x01AC}, {0x01AC,0x01AD,0x01AC}, /* 01AC */
2260 {0x01AE,0x0288,0x01AE}, {0x01AF,0x01B0,0x0055}, /* 01AE */
2261 {0x01AF,0x01B0,0x0055}, {0x01B1,0x028A,0x01B1}, /* 01B0 */
2262 {0x01B2,0x028B,0x01B2}, {0x01B3,0x01B4,0x01B3}, /* 01B2 */
2263 {0x01B3,0x01B4,0x01B3}, {0x01B5,0x01B6,0x01B5}, /* 01B4 */
2264 {0x01B5,0x01B6,0x01B5}, {0x01B7,0x0292,0x01B7}, /* 01B6 */
2265 {0x01B8,0x01B9,0x01B8}, {0x01B8,0x01B9,0x01B8}, /* 01B8 */
2266 {0x01BA,0x01BA,0x01BA}, {0x01BB,0x01BB,0x01BB}, /* 01BA */
2267 {0x01BC,0x01BD,0x01BC}, {0x01BC,0x01BD,0x01BC}, /* 01BC */
2268 {0x01BE,0x01BE,0x01BE}, {0x01F7,0x01BF,0x01F7}, /* 01BE */
2269 {0x01C0,0x01C0,0x01C0}, {0x01C1,0x01C1,0x01C1}, /* 01C0 */
2270 {0x01C2,0x01C2,0x01C2}, {0x01C3,0x01C3,0x01C3}, /* 01C2 */
2271 {0x01C4,0x01C6,0x01C4}, {0x01C4,0x01C6,0x01C4}, /* 01C4 */
2272 {0x01C4,0x01C6,0x01C4}, {0x01C7,0x01C9,0x01C7}, /* 01C6 */
2273 {0x01C7,0x01C9,0x01C7}, {0x01C7,0x01C9,0x01C7}, /* 01C8 */
2274 {0x01CA,0x01CC,0x01CA}, {0x01CA,0x01CC,0x01CA}, /* 01CA */
2275 {0x01CA,0x01CC,0x01CA}, {0x01CD,0x01CE,0x0041}, /* 01CC */
2276 {0x01CD,0x01CE,0x0041}, {0x01CF,0x01D0,0x0049}, /* 01CE */
2277 {0x01CF,0x01D0,0x0049}, {0x01D1,0x01D2,0x004F}, /* 01D0 */
2278 {0x01D1,0x01D2,0x004F}, {0x01D3,0x01D4,0x0055}, /* 01D2 */
2279 {0x01D3,0x01D4,0x0055}, {0x01D5,0x01D6,0x0055}, /* 01D4 */
2280 {0x01D5,0x01D6,0x0055}, {0x01D7,0x01D8,0x0055}, /* 01D6 */
2281 {0x01D7,0x01D8,0x0055}, {0x01D9,0x01DA,0x0055}, /* 01D8 */
2282 {0x01D9,0x01DA,0x0055}, {0x01DB,0x01DC,0x0055}, /* 01DA */
2283 {0x01DB,0x01DC,0x0055}, {0x018E,0x01DD,0x018E}, /* 01DC */
2284 {0x01DE,0x01DF,0x0041}, {0x01DE,0x01DF,0x0041}, /* 01DE */
2285 {0x01E0,0x01E1,0x0041}, {0x01E0,0x01E1,0x0041}, /* 01E0 */
2286 {0x01E2,0x01E3,0x00C6}, {0x01E2,0x01E3,0x00C6}, /* 01E2 */
2287 {0x01E4,0x01E5,0x01E4}, {0x01E4,0x01E5,0x01E4}, /* 01E4 */
2288 {0x01E6,0x01E7,0x0047}, {0x01E6,0x01E7,0x0047}, /* 01E6 */
2289 {0x01E8,0x01E9,0x004B}, {0x01E8,0x01E9,0x004B}, /* 01E8 */
2290 {0x01EA,0x01EB,0x004F}, {0x01EA,0x01EB,0x004F}, /* 01EA */
2291 {0x01EC,0x01ED,0x004F}, {0x01EC,0x01ED,0x004F}, /* 01EC */
2292 {0x01EE,0x01EF,0x01B7}, {0x01EE,0x01EF,0x01B7}, /* 01EE */
2293 {0x01F0,0x01F0,0x004A}, {0x01F1,0x01F3,0x01F1}, /* 01F0 */
2294 {0x01F1,0x01F3,0x01F1}, {0x01F1,0x01F3,0x01F1}, /* 01F2 */
2295 {0x01F4,0x01F5,0x0047}, {0x01F4,0x01F5,0x0047}, /* 01F4 */
2296 {0x01F6,0x0195,0x01F6}, {0x01F7,0x01BF,0x01F7}, /* 01F6 */
2297 {0x01F8,0x01F9,0x004E}, {0x01F8,0x01F9,0x004E}, /* 01F8 */
2298 {0x01FA,0x01FB,0x0041}, {0x01FA,0x01FB,0x0041}, /* 01FA */
2299 {0x01FC,0x01FD,0x00C6}, {0x01FC,0x01FD,0x00C6}, /* 01FC */
2300 {0x01FE,0x01FF,0x00D8}, {0x01FE,0x01FF,0x00D8} /* 01FE */
2301};
2302
2303static MY_UNICASE_CHARACTER u520p02[]={
2304 {0x0200,0x0201,0x0041}, {0x0200,0x0201,0x0041}, /* 0200 */
2305 {0x0202,0x0203,0x0041}, {0x0202,0x0203,0x0041}, /* 0202 */
2306 {0x0204,0x0205,0x0045}, {0x0204,0x0205,0x0045}, /* 0204 */
2307 {0x0206,0x0207,0x0045}, {0x0206,0x0207,0x0045}, /* 0206 */
2308 {0x0208,0x0209,0x0049}, {0x0208,0x0209,0x0049}, /* 0208 */
2309 {0x020A,0x020B,0x0049}, {0x020A,0x020B,0x0049}, /* 020A */
2310 {0x020C,0x020D,0x004F}, {0x020C,0x020D,0x004F}, /* 020C */
2311 {0x020E,0x020F,0x004F}, {0x020E,0x020F,0x004F}, /* 020E */
2312 {0x0210,0x0211,0x0052}, {0x0210,0x0211,0x0052}, /* 0210 */
2313 {0x0212,0x0213,0x0052}, {0x0212,0x0213,0x0052}, /* 0212 */
2314 {0x0214,0x0215,0x0055}, {0x0214,0x0215,0x0055}, /* 0214 */
2315 {0x0216,0x0217,0x0055}, {0x0216,0x0217,0x0055}, /* 0216 */
2316 {0x0218,0x0219,0x0053}, {0x0218,0x0219,0x0053}, /* 0218 */
2317 {0x021A,0x021B,0x0054}, {0x021A,0x021B,0x0054}, /* 021A */
2318 {0x021C,0x021D,0x021C}, {0x021C,0x021D,0x021C}, /* 021C */
2319 {0x021E,0x021F,0x0048}, {0x021E,0x021F,0x0048}, /* 021E */
2320 {0x0220,0x019E,0x0220}, {0x0221,0x0221,0x0221}, /* 0220 */
2321 {0x0222,0x0223,0x0222}, {0x0222,0x0223,0x0222}, /* 0222 */
2322 {0x0224,0x0225,0x0224}, {0x0224,0x0225,0x0224}, /* 0224 */
2323 {0x0226,0x0227,0x0041}, {0x0226,0x0227,0x0041}, /* 0226 */
2324 {0x0228,0x0229,0x0045}, {0x0228,0x0229,0x0045}, /* 0228 */
2325 {0x022A,0x022B,0x004F}, {0x022A,0x022B,0x004F}, /* 022A */
2326 {0x022C,0x022D,0x004F}, {0x022C,0x022D,0x004F}, /* 022C */
2327 {0x022E,0x022F,0x004F}, {0x022E,0x022F,0x004F}, /* 022E */
2328 {0x0230,0x0231,0x004F}, {0x0230,0x0231,0x004F}, /* 0230 */
2329 {0x0232,0x0233,0x0059}, {0x0232,0x0233,0x0059}, /* 0232 */
2330 {0x0234,0x0234,0x0234}, {0x0235,0x0235,0x0235}, /* 0234 */
2331 {0x0236,0x0236,0x0236}, {0x0237,0x0237,0x0237}, /* 0236 */
2332 {0x0238,0x0238,0x0238}, {0x0239,0x0239,0x0239}, /* 0238 */
2333 {0x023A,0x2C65,0x023A}, {0x023B,0x023C,0x023B}, /* 023A */
2334 {0x023B,0x023C,0x023B}, {0x023D,0x019A,0x023D}, /* 023C */
2335 {0x023E,0x2C66,0x023E}, {0x2C7E,0x023F,0x2C7E}, /* 023E */
2336 {0x2C7F,0x0240,0x2C7F}, {0x0241,0x0242,0x0241}, /* 0240 */
2337 {0x0241,0x0242,0x0241}, {0x0243,0x0180,0x0243}, /* 0242 */
2338 {0x0244,0x0289,0x0244}, {0x0245,0x028C,0x0245}, /* 0244 */
2339 {0x0246,0x0247,0x0246}, {0x0246,0x0247,0x0246}, /* 0246 */
2340 {0x0248,0x0249,0x0248}, {0x0248,0x0249,0x0248}, /* 0248 */
2341 {0x024A,0x024B,0x024A}, {0x024A,0x024B,0x024A}, /* 024A */
2342 {0x024C,0x024D,0x024C}, {0x024C,0x024D,0x024C}, /* 024C */
2343 {0x024E,0x024F,0x024E}, {0x024E,0x024F,0x024E}, /* 024E */
2344 {0x2C6F,0x0250,0x2C6F}, {0x2C6D,0x0251,0x2C6D}, /* 0250 */
2345 {0x2C70,0x0252,0x2C70}, {0x0181,0x0253,0x0181}, /* 0252 */
2346 {0x0186,0x0254,0x0186}, {0x0255,0x0255,0x0255}, /* 0254 */
2347 {0x0189,0x0256,0x0189}, {0x018A,0x0257,0x018A}, /* 0256 */
2348 {0x0258,0x0258,0x0258}, {0x018F,0x0259,0x018F}, /* 0258 */
2349 {0x025A,0x025A,0x025A}, {0x0190,0x025B,0x0190}, /* 025A */
2350 {0x025C,0x025C,0x025C}, {0x025D,0x025D,0x025D}, /* 025C */
2351 {0x025E,0x025E,0x025E}, {0x025F,0x025F,0x025F}, /* 025E */
2352 {0x0193,0x0260,0x0193}, {0x0261,0x0261,0x0261}, /* 0260 */
2353 {0x0262,0x0262,0x0262}, {0x0194,0x0263,0x0194}, /* 0262 */
2354 {0x0264,0x0264,0x0264}, {0x0265,0x0265,0x0265}, /* 0264 */
2355 {0x0266,0x0266,0x0266}, {0x0267,0x0267,0x0267}, /* 0266 */
2356 {0x0197,0x0268,0x0197}, {0x0196,0x0269,0x0196}, /* 0268 */
2357 {0x026A,0x026A,0x026A}, {0x2C62,0x026B,0x2C62}, /* 026A */
2358 {0x026C,0x026C,0x026C}, {0x026D,0x026D,0x026D}, /* 026C */
2359 {0x026E,0x026E,0x026E}, {0x019C,0x026F,0x019C}, /* 026E */
2360 {0x0270,0x0270,0x0270}, {0x2C6E,0x0271,0x2C6E}, /* 0270 */
2361 {0x019D,0x0272,0x019D}, {0x0273,0x0273,0x0273}, /* 0272 */
2362 {0x0274,0x0274,0x0274}, {0x019F,0x0275,0x019F}, /* 0274 */
2363 {0x0276,0x0276,0x0276}, {0x0277,0x0277,0x0277}, /* 0276 */
2364 {0x0278,0x0278,0x0278}, {0x0279,0x0279,0x0279}, /* 0278 */
2365 {0x027A,0x027A,0x027A}, {0x027B,0x027B,0x027B}, /* 027A */
2366 {0x027C,0x027C,0x027C}, {0x2C64,0x027D,0x2C64}, /* 027C */
2367 {0x027E,0x027E,0x027E}, {0x027F,0x027F,0x027F}, /* 027E */
2368 {0x01A6,0x0280,0x01A6}, {0x0281,0x0281,0x0281}, /* 0280 */
2369 {0x0282,0x0282,0x0282}, {0x01A9,0x0283,0x01A9}, /* 0282 */
2370 {0x0284,0x0284,0x0284}, {0x0285,0x0285,0x0285}, /* 0284 */
2371 {0x0286,0x0286,0x0286}, {0x0287,0x0287,0x0287}, /* 0286 */
2372 {0x01AE,0x0288,0x01AE}, {0x0244,0x0289,0x0244}, /* 0288 */
2373 {0x01B1,0x028A,0x01B1}, {0x01B2,0x028B,0x01B2}, /* 028A */
2374 {0x0245,0x028C,0x0245}, {0x028D,0x028D,0x028D}, /* 028C */
2375 {0x028E,0x028E,0x028E}, {0x028F,0x028F,0x028F}, /* 028E */
2376 {0x0290,0x0290,0x0290}, {0x0291,0x0291,0x0291}, /* 0290 */
2377 {0x01B7,0x0292,0x01B7}, {0x0293,0x0293,0x0293}, /* 0292 */
2378 {0x0294,0x0294,0x0294}, {0x0295,0x0295,0x0295}, /* 0294 */
2379 {0x0296,0x0296,0x0296}, {0x0297,0x0297,0x0297}, /* 0296 */
2380 {0x0298,0x0298,0x0298}, {0x0299,0x0299,0x0299}, /* 0298 */
2381 {0x029A,0x029A,0x029A}, {0x029B,0x029B,0x029B}, /* 029A */
2382 {0x029C,0x029C,0x029C}, {0x029D,0x029D,0x029D}, /* 029C */
2383 {0x029E,0x029E,0x029E}, {0x029F,0x029F,0x029F}, /* 029E */
2384 {0x02A0,0x02A0,0x02A0}, {0x02A1,0x02A1,0x02A1}, /* 02A0 */
2385 {0x02A2,0x02A2,0x02A2}, {0x02A3,0x02A3,0x02A3}, /* 02A2 */
2386 {0x02A4,0x02A4,0x02A4}, {0x02A5,0x02A5,0x02A5}, /* 02A4 */
2387 {0x02A6,0x02A6,0x02A6}, {0x02A7,0x02A7,0x02A7}, /* 02A6 */
2388 {0x02A8,0x02A8,0x02A8}, {0x02A9,0x02A9,0x02A9}, /* 02A8 */
2389 {0x02AA,0x02AA,0x02AA}, {0x02AB,0x02AB,0x02AB}, /* 02AA */
2390 {0x02AC,0x02AC,0x02AC}, {0x02AD,0x02AD,0x02AD}, /* 02AC */
2391 {0x02AE,0x02AE,0x02AE}, {0x02AF,0x02AF,0x02AF}, /* 02AE */
2392 {0x02B0,0x02B0,0x02B0}, {0x02B1,0x02B1,0x02B1}, /* 02B0 */
2393 {0x02B2,0x02B2,0x02B2}, {0x02B3,0x02B3,0x02B3}, /* 02B2 */
2394 {0x02B4,0x02B4,0x02B4}, {0x02B5,0x02B5,0x02B5}, /* 02B4 */
2395 {0x02B6,0x02B6,0x02B6}, {0x02B7,0x02B7,0x02B7}, /* 02B6 */
2396 {0x02B8,0x02B8,0x02B8}, {0x02B9,0x02B9,0x02B9}, /* 02B8 */
2397 {0x02BA,0x02BA,0x02BA}, {0x02BB,0x02BB,0x02BB}, /* 02BA */
2398 {0x02BC,0x02BC,0x02BC}, {0x02BD,0x02BD,0x02BD}, /* 02BC */
2399 {0x02BE,0x02BE,0x02BE}, {0x02BF,0x02BF,0x02BF}, /* 02BE */
2400 {0x02C0,0x02C0,0x02C0}, {0x02C1,0x02C1,0x02C1}, /* 02C0 */
2401 {0x02C2,0x02C2,0x02C2}, {0x02C3,0x02C3,0x02C3}, /* 02C2 */
2402 {0x02C4,0x02C4,0x02C4}, {0x02C5,0x02C5,0x02C5}, /* 02C4 */
2403 {0x02C6,0x02C6,0x02C6}, {0x02C7,0x02C7,0x02C7}, /* 02C6 */
2404 {0x02C8,0x02C8,0x02C8}, {0x02C9,0x02C9,0x02C9}, /* 02C8 */
2405 {0x02CA,0x02CA,0x02CA}, {0x02CB,0x02CB,0x02CB}, /* 02CA */
2406 {0x02CC,0x02CC,0x02CC}, {0x02CD,0x02CD,0x02CD}, /* 02CC */
2407 {0x02CE,0x02CE,0x02CE}, {0x02CF,0x02CF,0x02CF}, /* 02CE */
2408 {0x02D0,0x02D0,0x02D0}, {0x02D1,0x02D1,0x02D1}, /* 02D0 */
2409 {0x02D2,0x02D2,0x02D2}, {0x02D3,0x02D3,0x02D3}, /* 02D2 */
2410 {0x02D4,0x02D4,0x02D4}, {0x02D5,0x02D5,0x02D5}, /* 02D4 */
2411 {0x02D6,0x02D6,0x02D6}, {0x02D7,0x02D7,0x02D7}, /* 02D6 */
2412 {0x02D8,0x02D8,0x02D8}, {0x02D9,0x02D9,0x02D9}, /* 02D8 */
2413 {0x02DA,0x02DA,0x02DA}, {0x02DB,0x02DB,0x02DB}, /* 02DA */
2414 {0x02DC,0x02DC,0x02DC}, {0x02DD,0x02DD,0x02DD}, /* 02DC */
2415 {0x02DE,0x02DE,0x02DE}, {0x02DF,0x02DF,0x02DF}, /* 02DE */
2416 {0x02E0,0x02E0,0x02E0}, {0x02E1,0x02E1,0x02E1}, /* 02E0 */
2417 {0x02E2,0x02E2,0x02E2}, {0x02E3,0x02E3,0x02E3}, /* 02E2 */
2418 {0x02E4,0x02E4,0x02E4}, {0x02E5,0x02E5,0x02E5}, /* 02E4 */
2419 {0x02E6,0x02E6,0x02E6}, {0x02E7,0x02E7,0x02E7}, /* 02E6 */
2420 {0x02E8,0x02E8,0x02E8}, {0x02E9,0x02E9,0x02E9}, /* 02E8 */
2421 {0x02EA,0x02EA,0x02EA}, {0x02EB,0x02EB,0x02EB}, /* 02EA */
2422 {0x02EC,0x02EC,0x02EC}, {0x02ED,0x02ED,0x02ED}, /* 02EC */
2423 {0x02EE,0x02EE,0x02EE}, {0x02EF,0x02EF,0x02EF}, /* 02EE */
2424 {0x02F0,0x02F0,0x02F0}, {0x02F1,0x02F1,0x02F1}, /* 02F0 */
2425 {0x02F2,0x02F2,0x02F2}, {0x02F3,0x02F3,0x02F3}, /* 02F2 */
2426 {0x02F4,0x02F4,0x02F4}, {0x02F5,0x02F5,0x02F5}, /* 02F4 */
2427 {0x02F6,0x02F6,0x02F6}, {0x02F7,0x02F7,0x02F7}, /* 02F6 */
2428 {0x02F8,0x02F8,0x02F8}, {0x02F9,0x02F9,0x02F9}, /* 02F8 */
2429 {0x02FA,0x02FA,0x02FA}, {0x02FB,0x02FB,0x02FB}, /* 02FA */
2430 {0x02FC,0x02FC,0x02FC}, {0x02FD,0x02FD,0x02FD}, /* 02FC */
2431 {0x02FE,0x02FE,0x02FE}, {0x02FF,0x02FF,0x02FF} /* 02FE */
2432};
2433
2434static MY_UNICASE_CHARACTER u520p03[]={
2435 {0x0300,0x0300,0x0300}, {0x0301,0x0301,0x0301}, /* 0300 */
2436 {0x0302,0x0302,0x0302}, {0x0303,0x0303,0x0303}, /* 0302 */
2437 {0x0304,0x0304,0x0304}, {0x0305,0x0305,0x0305}, /* 0304 */
2438 {0x0306,0x0306,0x0306}, {0x0307,0x0307,0x0307}, /* 0306 */
2439 {0x0308,0x0308,0x0308}, {0x0309,0x0309,0x0309}, /* 0308 */
2440 {0x030A,0x030A,0x030A}, {0x030B,0x030B,0x030B}, /* 030A */
2441 {0x030C,0x030C,0x030C}, {0x030D,0x030D,0x030D}, /* 030C */
2442 {0x030E,0x030E,0x030E}, {0x030F,0x030F,0x030F}, /* 030E */
2443 {0x0310,0x0310,0x0310}, {0x0311,0x0311,0x0311}, /* 0310 */
2444 {0x0312,0x0312,0x0312}, {0x0313,0x0313,0x0313}, /* 0312 */
2445 {0x0314,0x0314,0x0314}, {0x0315,0x0315,0x0315}, /* 0314 */
2446 {0x0316,0x0316,0x0316}, {0x0317,0x0317,0x0317}, /* 0316 */
2447 {0x0318,0x0318,0x0318}, {0x0319,0x0319,0x0319}, /* 0318 */
2448 {0x031A,0x031A,0x031A}, {0x031B,0x031B,0x031B}, /* 031A */
2449 {0x031C,0x031C,0x031C}, {0x031D,0x031D,0x031D}, /* 031C */
2450 {0x031E,0x031E,0x031E}, {0x031F,0x031F,0x031F}, /* 031E */
2451 {0x0320,0x0320,0x0320}, {0x0321,0x0321,0x0321}, /* 0320 */
2452 {0x0322,0x0322,0x0322}, {0x0323,0x0323,0x0323}, /* 0322 */
2453 {0x0324,0x0324,0x0324}, {0x0325,0x0325,0x0325}, /* 0324 */
2454 {0x0326,0x0326,0x0326}, {0x0327,0x0327,0x0327}, /* 0326 */
2455 {0x0328,0x0328,0x0328}, {0x0329,0x0329,0x0329}, /* 0328 */
2456 {0x032A,0x032A,0x032A}, {0x032B,0x032B,0x032B}, /* 032A */
2457 {0x032C,0x032C,0x032C}, {0x032D,0x032D,0x032D}, /* 032C */
2458 {0x032E,0x032E,0x032E}, {0x032F,0x032F,0x032F}, /* 032E */
2459 {0x0330,0x0330,0x0330}, {0x0331,0x0331,0x0331}, /* 0330 */
2460 {0x0332,0x0332,0x0332}, {0x0333,0x0333,0x0333}, /* 0332 */
2461 {0x0334,0x0334,0x0334}, {0x0335,0x0335,0x0335}, /* 0334 */
2462 {0x0336,0x0336,0x0336}, {0x0337,0x0337,0x0337}, /* 0336 */
2463 {0x0338,0x0338,0x0338}, {0x0339,0x0339,0x0339}, /* 0338 */
2464 {0x033A,0x033A,0x033A}, {0x033B,0x033B,0x033B}, /* 033A */
2465 {0x033C,0x033C,0x033C}, {0x033D,0x033D,0x033D}, /* 033C */
2466 {0x033E,0x033E,0x033E}, {0x033F,0x033F,0x033F}, /* 033E */
2467 {0x0340,0x0340,0x0340}, {0x0341,0x0341,0x0341}, /* 0340 */
2468 {0x0342,0x0342,0x0342}, {0x0343,0x0343,0x0343}, /* 0342 */
2469 {0x0344,0x0344,0x0344}, {0x0399,0x0345,0x0399}, /* 0344 */
2470 {0x0346,0x0346,0x0346}, {0x0347,0x0347,0x0347}, /* 0346 */
2471 {0x0348,0x0348,0x0348}, {0x0349,0x0349,0x0349}, /* 0348 */
2472 {0x034A,0x034A,0x034A}, {0x034B,0x034B,0x034B}, /* 034A */
2473 {0x034C,0x034C,0x034C}, {0x034D,0x034D,0x034D}, /* 034C */
2474 {0x034E,0x034E,0x034E}, {0x034F,0x034F,0x034F}, /* 034E */
2475 {0x0350,0x0350,0x0350}, {0x0351,0x0351,0x0351}, /* 0350 */
2476 {0x0352,0x0352,0x0352}, {0x0353,0x0353,0x0353}, /* 0352 */
2477 {0x0354,0x0354,0x0354}, {0x0355,0x0355,0x0355}, /* 0354 */
2478 {0x0356,0x0356,0x0356}, {0x0357,0x0357,0x0357}, /* 0356 */
2479 {0x0358,0x0358,0x0358}, {0x0359,0x0359,0x0359}, /* 0358 */
2480 {0x035A,0x035A,0x035A}, {0x035B,0x035B,0x035B}, /* 035A */
2481 {0x035C,0x035C,0x035C}, {0x035D,0x035D,0x035D}, /* 035C */
2482 {0x035E,0x035E,0x035E}, {0x035F,0x035F,0x035F}, /* 035E */
2483 {0x0360,0x0360,0x0360}, {0x0361,0x0361,0x0361}, /* 0360 */
2484 {0x0362,0x0362,0x0362}, {0x0363,0x0363,0x0363}, /* 0362 */
2485 {0x0364,0x0364,0x0364}, {0x0365,0x0365,0x0365}, /* 0364 */
2486 {0x0366,0x0366,0x0366}, {0x0367,0x0367,0x0367}, /* 0366 */
2487 {0x0368,0x0368,0x0368}, {0x0369,0x0369,0x0369}, /* 0368 */
2488 {0x036A,0x036A,0x036A}, {0x036B,0x036B,0x036B}, /* 036A */
2489 {0x036C,0x036C,0x036C}, {0x036D,0x036D,0x036D}, /* 036C */
2490 {0x036E,0x036E,0x036E}, {0x036F,0x036F,0x036F}, /* 036E */
2491 {0x0370,0x0371,0x0370}, {0x0370,0x0371,0x0370}, /* 0370 */
2492 {0x0372,0x0373,0x0372}, {0x0372,0x0373,0x0372}, /* 0372 */
2493 {0x0374,0x0374,0x0374}, {0x0375,0x0375,0x0375}, /* 0374 */
2494 {0x0376,0x0377,0x0376}, {0x0376,0x0377,0x0376}, /* 0376 */
2495 {0x0378,0x0378,0x0378}, {0x0379,0x0379,0x0379}, /* 0378 */
2496 {0x037A,0x037A,0x037A}, {0x03FD,0x037B,0x03FD}, /* 037A */
2497 {0x03FE,0x037C,0x03FE}, {0x03FF,0x037D,0x03FF}, /* 037C */
2498 {0x037E,0x037E,0x037E}, {0x037F,0x037F,0x037F}, /* 037E */
2499 {0x0380,0x0380,0x0380}, {0x0381,0x0381,0x0381}, /* 0380 */
2500 {0x0382,0x0382,0x0382}, {0x0383,0x0383,0x0383}, /* 0382 */
2501 {0x0384,0x0384,0x0384}, {0x0385,0x0385,0x0385}, /* 0384 */
2502 {0x0386,0x03AC,0x0391}, {0x0387,0x0387,0x0387}, /* 0386 */
2503 {0x0388,0x03AD,0x0395}, {0x0389,0x03AE,0x0397}, /* 0388 */
2504 {0x038A,0x03AF,0x0399}, {0x038B,0x038B,0x038B}, /* 038A */
2505 {0x038C,0x03CC,0x039F}, {0x038D,0x038D,0x038D}, /* 038C */
2506 {0x038E,0x03CD,0x03A5}, {0x038F,0x03CE,0x03A9}, /* 038E */
2507 {0x0390,0x0390,0x0399}, {0x0391,0x03B1,0x0391}, /* 0390 */
2508 {0x0392,0x03B2,0x0392}, {0x0393,0x03B3,0x0393}, /* 0392 */
2509 {0x0394,0x03B4,0x0394}, {0x0395,0x03B5,0x0395}, /* 0394 */
2510 {0x0396,0x03B6,0x0396}, {0x0397,0x03B7,0x0397}, /* 0396 */
2511 {0x0398,0x03B8,0x0398}, {0x0399,0x03B9,0x0399}, /* 0398 */
2512 {0x039A,0x03BA,0x039A}, {0x039B,0x03BB,0x039B}, /* 039A */
2513 {0x039C,0x03BC,0x039C}, {0x039D,0x03BD,0x039D}, /* 039C */
2514 {0x039E,0x03BE,0x039E}, {0x039F,0x03BF,0x039F}, /* 039E */
2515 {0x03A0,0x03C0,0x03A0}, {0x03A1,0x03C1,0x03A1}, /* 03A0 */
2516 {0x03A2,0x03A2,0x03A2}, {0x03A3,0x03C3,0x03A3}, /* 03A2 */
2517 {0x03A4,0x03C4,0x03A4}, {0x03A5,0x03C5,0x03A5}, /* 03A4 */
2518 {0x03A6,0x03C6,0x03A6}, {0x03A7,0x03C7,0x03A7}, /* 03A6 */
2519 {0x03A8,0x03C8,0x03A8}, {0x03A9,0x03C9,0x03A9}, /* 03A8 */
2520 {0x03AA,0x03CA,0x0399}, {0x03AB,0x03CB,0x03A5}, /* 03AA */
2521 {0x0386,0x03AC,0x0391}, {0x0388,0x03AD,0x0395}, /* 03AC */
2522 {0x0389,0x03AE,0x0397}, {0x038A,0x03AF,0x0399}, /* 03AE */
2523 {0x03B0,0x03B0,0x03A5}, {0x0391,0x03B1,0x0391}, /* 03B0 */
2524 {0x0392,0x03B2,0x0392}, {0x0393,0x03B3,0x0393}, /* 03B2 */
2525 {0x0394,0x03B4,0x0394}, {0x0395,0x03B5,0x0395}, /* 03B4 */
2526 {0x0396,0x03B6,0x0396}, {0x0397,0x03B7,0x0397}, /* 03B6 */
2527 {0x0398,0x03B8,0x0398}, {0x0399,0x03B9,0x0399}, /* 03B8 */
2528 {0x039A,0x03BA,0x039A}, {0x039B,0x03BB,0x039B}, /* 03BA */
2529 {0x039C,0x03BC,0x039C}, {0x039D,0x03BD,0x039D}, /* 03BC */
2530 {0x039E,0x03BE,0x039E}, {0x039F,0x03BF,0x039F}, /* 03BE */
2531 {0x03A0,0x03C0,0x03A0}, {0x03A1,0x03C1,0x03A1}, /* 03C0 */
2532 {0x03A3,0x03C2,0x03A3}, {0x03A3,0x03C3,0x03A3}, /* 03C2 */
2533 {0x03A4,0x03C4,0x03A4}, {0x03A5,0x03C5,0x03A5}, /* 03C4 */
2534 {0x03A6,0x03C6,0x03A6}, {0x03A7,0x03C7,0x03A7}, /* 03C6 */
2535 {0x03A8,0x03C8,0x03A8}, {0x03A9,0x03C9,0x03A9}, /* 03C8 */
2536 {0x03AA,0x03CA,0x0399}, {0x03AB,0x03CB,0x03A5}, /* 03CA */
2537 {0x038C,0x03CC,0x039F}, {0x038E,0x03CD,0x03A5}, /* 03CC */
2538 {0x038F,0x03CE,0x03A9}, {0x03CF,0x03D7,0x03CF}, /* 03CE */
2539 {0x0392,0x03D0,0x0392}, {0x0398,0x03D1,0x0398}, /* 03D0 */
2540 {0x03D2,0x03D2,0x03D2}, {0x03D3,0x03D3,0x03D2}, /* 03D2 */
2541 {0x03D4,0x03D4,0x03D2}, {0x03A6,0x03D5,0x03A6}, /* 03D4 */
2542 {0x03A0,0x03D6,0x03A0}, {0x03CF,0x03D7,0x03CF}, /* 03D6 */
2543 {0x03D8,0x03D9,0x03D8}, {0x03D8,0x03D9,0x03D8}, /* 03D8 */
2544 {0x03DA,0x03DB,0x03DA}, {0x03DA,0x03DB,0x03DA}, /* 03DA */
2545 {0x03DC,0x03DD,0x03DC}, {0x03DC,0x03DD,0x03DC}, /* 03DC */
2546 {0x03DE,0x03DF,0x03DE}, {0x03DE,0x03DF,0x03DE}, /* 03DE */
2547 {0x03E0,0x03E1,0x03E0}, {0x03E0,0x03E1,0x03E0}, /* 03E0 */
2548 {0x03E2,0x03E3,0x03E2}, {0x03E2,0x03E3,0x03E2}, /* 03E2 */
2549 {0x03E4,0x03E5,0x03E4}, {0x03E4,0x03E5,0x03E4}, /* 03E4 */
2550 {0x03E6,0x03E7,0x03E6}, {0x03E6,0x03E7,0x03E6}, /* 03E6 */
2551 {0x03E8,0x03E9,0x03E8}, {0x03E8,0x03E9,0x03E8}, /* 03E8 */
2552 {0x03EA,0x03EB,0x03EA}, {0x03EA,0x03EB,0x03EA}, /* 03EA */
2553 {0x03EC,0x03ED,0x03EC}, {0x03EC,0x03ED,0x03EC}, /* 03EC */
2554 {0x03EE,0x03EF,0x03EE}, {0x03EE,0x03EF,0x03EE}, /* 03EE */
2555 {0x039A,0x03F0,0x039A}, {0x03A1,0x03F1,0x03A1}, /* 03F0 */
2556 {0x03F9,0x03F2,0x03F9}, {0x03F3,0x03F3,0x03F3}, /* 03F2 */
2557 {0x03F4,0x03B8,0x03F4}, {0x0395,0x03F5,0x0395}, /* 03F4 */
2558 {0x03F6,0x03F6,0x03F6}, {0x03F7,0x03F8,0x03F7}, /* 03F6 */
2559 {0x03F7,0x03F8,0x03F7}, {0x03F9,0x03F2,0x03F9}, /* 03F8 */
2560 {0x03FA,0x03FB,0x03FA}, {0x03FA,0x03FB,0x03FA}, /* 03FA */
2561 {0x03FC,0x03FC,0x03FC}, {0x03FD,0x037B,0x03FD}, /* 03FC */
2562 {0x03FE,0x037C,0x03FE}, {0x03FF,0x037D,0x03FF} /* 03FE */
2563};
2564
2565static MY_UNICASE_CHARACTER u520p04[]={
2566 {0x0400,0x0450,0x0415}, {0x0401,0x0451,0x0415}, /* 0400 */
2567 {0x0402,0x0452,0x0402}, {0x0403,0x0453,0x0413}, /* 0402 */
2568 {0x0404,0x0454,0x0404}, {0x0405,0x0455,0x0405}, /* 0404 */
2569 {0x0406,0x0456,0x0406}, {0x0407,0x0457,0x0406}, /* 0406 */
2570 {0x0408,0x0458,0x0408}, {0x0409,0x0459,0x0409}, /* 0408 */
2571 {0x040A,0x045A,0x040A}, {0x040B,0x045B,0x040B}, /* 040A */
2572 {0x040C,0x045C,0x041A}, {0x040D,0x045D,0x0418}, /* 040C */
2573 {0x040E,0x045E,0x0423}, {0x040F,0x045F,0x040F}, /* 040E */
2574 {0x0410,0x0430,0x0410}, {0x0411,0x0431,0x0411}, /* 0410 */
2575 {0x0412,0x0432,0x0412}, {0x0413,0x0433,0x0413}, /* 0412 */
2576 {0x0414,0x0434,0x0414}, {0x0415,0x0435,0x0415}, /* 0414 */
2577 {0x0416,0x0436,0x0416}, {0x0417,0x0437,0x0417}, /* 0416 */
2578 {0x0418,0x0438,0x0418}, {0x0419,0x0439,0x0419}, /* 0418 */
2579 {0x041A,0x043A,0x041A}, {0x041B,0x043B,0x041B}, /* 041A */
2580 {0x041C,0x043C,0x041C}, {0x041D,0x043D,0x041D}, /* 041C */
2581 {0x041E,0x043E,0x041E}, {0x041F,0x043F,0x041F}, /* 041E */
2582 {0x0420,0x0440,0x0420}, {0x0421,0x0441,0x0421}, /* 0420 */
2583 {0x0422,0x0442,0x0422}, {0x0423,0x0443,0x0423}, /* 0422 */
2584 {0x0424,0x0444,0x0424}, {0x0425,0x0445,0x0425}, /* 0424 */
2585 {0x0426,0x0446,0x0426}, {0x0427,0x0447,0x0427}, /* 0426 */
2586 {0x0428,0x0448,0x0428}, {0x0429,0x0449,0x0429}, /* 0428 */
2587 {0x042A,0x044A,0x042A}, {0x042B,0x044B,0x042B}, /* 042A */
2588 {0x042C,0x044C,0x042C}, {0x042D,0x044D,0x042D}, /* 042C */
2589 {0x042E,0x044E,0x042E}, {0x042F,0x044F,0x042F}, /* 042E */
2590 {0x0410,0x0430,0x0410}, {0x0411,0x0431,0x0411}, /* 0430 */
2591 {0x0412,0x0432,0x0412}, {0x0413,0x0433,0x0413}, /* 0432 */
2592 {0x0414,0x0434,0x0414}, {0x0415,0x0435,0x0415}, /* 0434 */
2593 {0x0416,0x0436,0x0416}, {0x0417,0x0437,0x0417}, /* 0436 */
2594 {0x0418,0x0438,0x0418}, {0x0419,0x0439,0x0419}, /* 0438 */
2595 {0x041A,0x043A,0x041A}, {0x041B,0x043B,0x041B}, /* 043A */
2596 {0x041C,0x043C,0x041C}, {0x041D,0x043D,0x041D}, /* 043C */
2597 {0x041E,0x043E,0x041E}, {0x041F,0x043F,0x041F}, /* 043E */
2598 {0x0420,0x0440,0x0420}, {0x0421,0x0441,0x0421}, /* 0440 */
2599 {0x0422,0x0442,0x0422}, {0x0423,0x0443,0x0423}, /* 0442 */
2600 {0x0424,0x0444,0x0424}, {0x0425,0x0445,0x0425}, /* 0444 */
2601 {0x0426,0x0446,0x0426}, {0x0427,0x0447,0x0427}, /* 0446 */
2602 {0x0428,0x0448,0x0428}, {0x0429,0x0449,0x0429}, /* 0448 */
2603 {0x042A,0x044A,0x042A}, {0x042B,0x044B,0x042B}, /* 044A */
2604 {0x042C,0x044C,0x042C}, {0x042D,0x044D,0x042D}, /* 044C */
2605 {0x042E,0x044E,0x042E}, {0x042F,0x044F,0x042F}, /* 044E */
2606 {0x0400,0x0450,0x0415}, {0x0401,0x0451,0x0415}, /* 0450 */
2607 {0x0402,0x0452,0x0402}, {0x0403,0x0453,0x0413}, /* 0452 */
2608 {0x0404,0x0454,0x0404}, {0x0405,0x0455,0x0405}, /* 0454 */
2609 {0x0406,0x0456,0x0406}, {0x0407,0x0457,0x0406}, /* 0456 */
2610 {0x0408,0x0458,0x0408}, {0x0409,0x0459,0x0409}, /* 0458 */
2611 {0x040A,0x045A,0x040A}, {0x040B,0x045B,0x040B}, /* 045A */
2612 {0x040C,0x045C,0x041A}, {0x040D,0x045D,0x0418}, /* 045C */
2613 {0x040E,0x045E,0x0423}, {0x040F,0x045F,0x040F}, /* 045E */
2614 {0x0460,0x0461,0x0460}, {0x0460,0x0461,0x0460}, /* 0460 */
2615 {0x0462,0x0463,0x0462}, {0x0462,0x0463,0x0462}, /* 0462 */
2616 {0x0464,0x0465,0x0464}, {0x0464,0x0465,0x0464}, /* 0464 */
2617 {0x0466,0x0467,0x0466}, {0x0466,0x0467,0x0466}, /* 0466 */
2618 {0x0468,0x0469,0x0468}, {0x0468,0x0469,0x0468}, /* 0468 */
2619 {0x046A,0x046B,0x046A}, {0x046A,0x046B,0x046A}, /* 046A */
2620 {0x046C,0x046D,0x046C}, {0x046C,0x046D,0x046C}, /* 046C */
2621 {0x046E,0x046F,0x046E}, {0x046E,0x046F,0x046E}, /* 046E */
2622 {0x0470,0x0471,0x0470}, {0x0470,0x0471,0x0470}, /* 0470 */
2623 {0x0472,0x0473,0x0472}, {0x0472,0x0473,0x0472}, /* 0472 */
2624 {0x0474,0x0475,0x0474}, {0x0474,0x0475,0x0474}, /* 0474 */
2625 {0x0476,0x0477,0x0474}, {0x0476,0x0477,0x0474}, /* 0476 */
2626 {0x0478,0x0479,0x0478}, {0x0478,0x0479,0x0478}, /* 0478 */
2627 {0x047A,0x047B,0x047A}, {0x047A,0x047B,0x047A}, /* 047A */
2628 {0x047C,0x047D,0x047C}, {0x047C,0x047D,0x047C}, /* 047C */
2629 {0x047E,0x047F,0x047E}, {0x047E,0x047F,0x047E}, /* 047E */
2630 {0x0480,0x0481,0x0480}, {0x0480,0x0481,0x0480}, /* 0480 */
2631 {0x0482,0x0482,0x0482}, {0x0483,0x0483,0x0483}, /* 0482 */
2632 {0x0484,0x0484,0x0484}, {0x0485,0x0485,0x0485}, /* 0484 */
2633 {0x0486,0x0486,0x0486}, {0x0487,0x0487,0x0487}, /* 0486 */
2634 {0x0488,0x0488,0x0488}, {0x0489,0x0489,0x0489}, /* 0488 */
2635 {0x048A,0x048B,0x048A}, {0x048A,0x048B,0x048A}, /* 048A */
2636 {0x048C,0x048D,0x048C}, {0x048C,0x048D,0x048C}, /* 048C */
2637 {0x048E,0x048F,0x048E}, {0x048E,0x048F,0x048E}, /* 048E */
2638 {0x0490,0x0491,0x0490}, {0x0490,0x0491,0x0490}, /* 0490 */
2639 {0x0492,0x0493,0x0492}, {0x0492,0x0493,0x0492}, /* 0492 */
2640 {0x0494,0x0495,0x0494}, {0x0494,0x0495,0x0494}, /* 0494 */
2641 {0x0496,0x0497,0x0496}, {0x0496,0x0497,0x0496}, /* 0496 */
2642 {0x0498,0x0499,0x0498}, {0x0498,0x0499,0x0498}, /* 0498 */
2643 {0x049A,0x049B,0x049A}, {0x049A,0x049B,0x049A}, /* 049A */
2644 {0x049C,0x049D,0x049C}, {0x049C,0x049D,0x049C}, /* 049C */
2645 {0x049E,0x049F,0x049E}, {0x049E,0x049F,0x049E}, /* 049E */
2646 {0x04A0,0x04A1,0x04A0}, {0x04A0,0x04A1,0x04A0}, /* 04A0 */
2647 {0x04A2,0x04A3,0x04A2}, {0x04A2,0x04A3,0x04A2}, /* 04A2 */
2648 {0x04A4,0x04A5,0x04A4}, {0x04A4,0x04A5,0x04A4}, /* 04A4 */
2649 {0x04A6,0x04A7,0x04A6}, {0x04A6,0x04A7,0x04A6}, /* 04A6 */
2650 {0x04A8,0x04A9,0x04A8}, {0x04A8,0x04A9,0x04A8}, /* 04A8 */
2651 {0x04AA,0x04AB,0x04AA}, {0x04AA,0x04AB,0x04AA}, /* 04AA */
2652 {0x04AC,0x04AD,0x04AC}, {0x04AC,0x04AD,0x04AC}, /* 04AC */
2653 {0x04AE,0x04AF,0x04AE}, {0x04AE,0x04AF,0x04AE}, /* 04AE */
2654 {0x04B0,0x04B1,0x04B0}, {0x04B0,0x04B1,0x04B0}, /* 04B0 */
2655 {0x04B2,0x04B3,0x04B2}, {0x04B2,0x04B3,0x04B2}, /* 04B2 */
2656 {0x04B4,0x04B5,0x04B4}, {0x04B4,0x04B5,0x04B4}, /* 04B4 */
2657 {0x04B6,0x04B7,0x04B6}, {0x04B6,0x04B7,0x04B6}, /* 04B6 */
2658 {0x04B8,0x04B9,0x04B8}, {0x04B8,0x04B9,0x04B8}, /* 04B8 */
2659 {0x04BA,0x04BB,0x04BA}, {0x04BA,0x04BB,0x04BA}, /* 04BA */
2660 {0x04BC,0x04BD,0x04BC}, {0x04BC,0x04BD,0x04BC}, /* 04BC */
2661 {0x04BE,0x04BF,0x04BE}, {0x04BE,0x04BF,0x04BE}, /* 04BE */
2662 {0x04C0,0x04CF,0x04C0}, {0x04C1,0x04C2,0x0416}, /* 04C0 */
2663 {0x04C1,0x04C2,0x0416}, {0x04C3,0x04C4,0x04C3}, /* 04C2 */
2664 {0x04C3,0x04C4,0x04C3}, {0x04C5,0x04C6,0x04C5}, /* 04C4 */
2665 {0x04C5,0x04C6,0x04C5}, {0x04C7,0x04C8,0x04C7}, /* 04C6 */
2666 {0x04C7,0x04C8,0x04C7}, {0x04C9,0x04CA,0x04C9}, /* 04C8 */
2667 {0x04C9,0x04CA,0x04C9}, {0x04CB,0x04CC,0x04CB}, /* 04CA */
2668 {0x04CB,0x04CC,0x04CB}, {0x04CD,0x04CE,0x04CD}, /* 04CC */
2669 {0x04CD,0x04CE,0x04CD}, {0x04C0,0x04CF,0x04C0}, /* 04CE */
2670 {0x04D0,0x04D1,0x0410}, {0x04D0,0x04D1,0x0410}, /* 04D0 */
2671 {0x04D2,0x04D3,0x0410}, {0x04D2,0x04D3,0x0410}, /* 04D2 */
2672 {0x04D4,0x04D5,0x04D4}, {0x04D4,0x04D5,0x04D4}, /* 04D4 */
2673 {0x04D6,0x04D7,0x0415}, {0x04D6,0x04D7,0x0415}, /* 04D6 */
2674 {0x04D8,0x04D9,0x04D8}, {0x04D8,0x04D9,0x04D8}, /* 04D8 */
2675 {0x04DA,0x04DB,0x04D8}, {0x04DA,0x04DB,0x04D8}, /* 04DA */
2676 {0x04DC,0x04DD,0x0416}, {0x04DC,0x04DD,0x0416}, /* 04DC */
2677 {0x04DE,0x04DF,0x0417}, {0x04DE,0x04DF,0x0417}, /* 04DE */
2678 {0x04E0,0x04E1,0x04E0}, {0x04E0,0x04E1,0x04E0}, /* 04E0 */
2679 {0x04E2,0x04E3,0x0418}, {0x04E2,0x04E3,0x0418}, /* 04E2 */
2680 {0x04E4,0x04E5,0x0418}, {0x04E4,0x04E5,0x0418}, /* 04E4 */
2681 {0x04E6,0x04E7,0x041E}, {0x04E6,0x04E7,0x041E}, /* 04E6 */
2682 {0x04E8,0x04E9,0x04E8}, {0x04E8,0x04E9,0x04E8}, /* 04E8 */
2683 {0x04EA,0x04EB,0x04E8}, {0x04EA,0x04EB,0x04E8}, /* 04EA */
2684 {0x04EC,0x04ED,0x042D}, {0x04EC,0x04ED,0x042D}, /* 04EC */
2685 {0x04EE,0x04EF,0x0423}, {0x04EE,0x04EF,0x0423}, /* 04EE */
2686 {0x04F0,0x04F1,0x0423}, {0x04F0,0x04F1,0x0423}, /* 04F0 */
2687 {0x04F2,0x04F3,0x0423}, {0x04F2,0x04F3,0x0423}, /* 04F2 */
2688 {0x04F4,0x04F5,0x0427}, {0x04F4,0x04F5,0x0427}, /* 04F4 */
2689 {0x04F6,0x04F7,0x04F6}, {0x04F6,0x04F7,0x04F6}, /* 04F6 */
2690 {0x04F8,0x04F9,0x042B}, {0x04F8,0x04F9,0x042B}, /* 04F8 */
2691 {0x04FA,0x04FB,0x04FA}, {0x04FA,0x04FB,0x04FA}, /* 04FA */
2692 {0x04FC,0x04FD,0x04FC}, {0x04FC,0x04FD,0x04FC}, /* 04FC */
2693 {0x04FE,0x04FF,0x04FE}, {0x04FE,0x04FF,0x04FE} /* 04FE */
2694};
2695
2696static MY_UNICASE_CHARACTER u520p05[]={
2697 {0x0500,0x0501,0x0500}, {0x0500,0x0501,0x0500}, /* 0500 */
2698 {0x0502,0x0503,0x0502}, {0x0502,0x0503,0x0502}, /* 0502 */
2699 {0x0504,0x0505,0x0504}, {0x0504,0x0505,0x0504}, /* 0504 */
2700 {0x0506,0x0507,0x0506}, {0x0506,0x0507,0x0506}, /* 0506 */
2701 {0x0508,0x0509,0x0508}, {0x0508,0x0509,0x0508}, /* 0508 */
2702 {0x050A,0x050B,0x050A}, {0x050A,0x050B,0x050A}, /* 050A */
2703 {0x050C,0x050D,0x050C}, {0x050C,0x050D,0x050C}, /* 050C */
2704 {0x050E,0x050F,0x050E}, {0x050E,0x050F,0x050E}, /* 050E */
2705 {0x0510,0x0511,0x0510}, {0x0510,0x0511,0x0510}, /* 0510 */
2706 {0x0512,0x0513,0x0512}, {0x0512,0x0513,0x0512}, /* 0512 */
2707 {0x0514,0x0515,0x0514}, {0x0514,0x0515,0x0514}, /* 0514 */
2708 {0x0516,0x0517,0x0516}, {0x0516,0x0517,0x0516}, /* 0516 */
2709 {0x0518,0x0519,0x0518}, {0x0518,0x0519,0x0518}, /* 0518 */
2710 {0x051A,0x051B,0x051A}, {0x051A,0x051B,0x051A}, /* 051A */
2711 {0x051C,0x051D,0x051C}, {0x051C,0x051D,0x051C}, /* 051C */
2712 {0x051E,0x051F,0x051E}, {0x051E,0x051F,0x051E}, /* 051E */
2713 {0x0520,0x0521,0x0520}, {0x0520,0x0521,0x0520}, /* 0520 */
2714 {0x0522,0x0523,0x0522}, {0x0522,0x0523,0x0522}, /* 0522 */
2715 {0x0524,0x0525,0x0524}, {0x0524,0x0525,0x0524}, /* 0524 */
2716 {0x0526,0x0526,0x0526}, {0x0527,0x0527,0x0527}, /* 0526 */
2717 {0x0528,0x0528,0x0528}, {0x0529,0x0529,0x0529}, /* 0528 */
2718 {0x052A,0x052A,0x052A}, {0x052B,0x052B,0x052B}, /* 052A */
2719 {0x052C,0x052C,0x052C}, {0x052D,0x052D,0x052D}, /* 052C */
2720 {0x052E,0x052E,0x052E}, {0x052F,0x052F,0x052F}, /* 052E */
2721 {0x0530,0x0530,0x0530}, {0x0531,0x0561,0x0531}, /* 0530 */
2722 {0x0532,0x0562,0x0532}, {0x0533,0x0563,0x0533}, /* 0532 */
2723 {0x0534,0x0564,0x0534}, {0x0535,0x0565,0x0535}, /* 0534 */
2724 {0x0536,0x0566,0x0536}, {0x0537,0x0567,0x0537}, /* 0536 */
2725 {0x0538,0x0568,0x0538}, {0x0539,0x0569,0x0539}, /* 0538 */
2726 {0x053A,0x056A,0x053A}, {0x053B,0x056B,0x053B}, /* 053A */
2727 {0x053C,0x056C,0x053C}, {0x053D,0x056D,0x053D}, /* 053C */
2728 {0x053E,0x056E,0x053E}, {0x053F,0x056F,0x053F}, /* 053E */
2729 {0x0540,0x0570,0x0540}, {0x0541,0x0571,0x0541}, /* 0540 */
2730 {0x0542,0x0572,0x0542}, {0x0543,0x0573,0x0543}, /* 0542 */
2731 {0x0544,0x0574,0x0544}, {0x0545,0x0575,0x0545}, /* 0544 */
2732 {0x0546,0x0576,0x0546}, {0x0547,0x0577,0x0547}, /* 0546 */
2733 {0x0548,0x0578,0x0548}, {0x0549,0x0579,0x0549}, /* 0548 */
2734 {0x054A,0x057A,0x054A}, {0x054B,0x057B,0x054B}, /* 054A */
2735 {0x054C,0x057C,0x054C}, {0x054D,0x057D,0x054D}, /* 054C */
2736 {0x054E,0x057E,0x054E}, {0x054F,0x057F,0x054F}, /* 054E */
2737 {0x0550,0x0580,0x0550}, {0x0551,0x0581,0x0551}, /* 0550 */
2738 {0x0552,0x0582,0x0552}, {0x0553,0x0583,0x0553}, /* 0552 */
2739 {0x0554,0x0584,0x0554}, {0x0555,0x0585,0x0555}, /* 0554 */
2740 {0x0556,0x0586,0x0556}, {0x0557,0x0557,0x0557}, /* 0556 */
2741 {0x0558,0x0558,0x0558}, {0x0559,0x0559,0x0559}, /* 0558 */
2742 {0x055A,0x055A,0x055A}, {0x055B,0x055B,0x055B}, /* 055A */
2743 {0x055C,0x055C,0x055C}, {0x055D,0x055D,0x055D}, /* 055C */
2744 {0x055E,0x055E,0x055E}, {0x055F,0x055F,0x055F}, /* 055E */
2745 {0x0560,0x0560,0x0560}, {0x0531,0x0561,0x0531}, /* 0560 */
2746 {0x0532,0x0562,0x0532}, {0x0533,0x0563,0x0533}, /* 0562 */
2747 {0x0534,0x0564,0x0534}, {0x0535,0x0565,0x0535}, /* 0564 */
2748 {0x0536,0x0566,0x0536}, {0x0537,0x0567,0x0537}, /* 0566 */
2749 {0x0538,0x0568,0x0538}, {0x0539,0x0569,0x0539}, /* 0568 */
2750 {0x053A,0x056A,0x053A}, {0x053B,0x056B,0x053B}, /* 056A */
2751 {0x053C,0x056C,0x053C}, {0x053D,0x056D,0x053D}, /* 056C */
2752 {0x053E,0x056E,0x053E}, {0x053F,0x056F,0x053F}, /* 056E */
2753 {0x0540,0x0570,0x0540}, {0x0541,0x0571,0x0541}, /* 0570 */
2754 {0x0542,0x0572,0x0542}, {0x0543,0x0573,0x0543}, /* 0572 */
2755 {0x0544,0x0574,0x0544}, {0x0545,0x0575,0x0545}, /* 0574 */
2756 {0x0546,0x0576,0x0546}, {0x0547,0x0577,0x0547}, /* 0576 */
2757 {0x0548,0x0578,0x0548}, {0x0549,0x0579,0x0549}, /* 0578 */
2758 {0x054A,0x057A,0x054A}, {0x054B,0x057B,0x054B}, /* 057A */
2759 {0x054C,0x057C,0x054C}, {0x054D,0x057D,0x054D}, /* 057C */
2760 {0x054E,0x057E,0x054E}, {0x054F,0x057F,0x054F}, /* 057E */
2761 {0x0550,0x0580,0x0550}, {0x0551,0x0581,0x0551}, /* 0580 */
2762 {0x0552,0x0582,0x0552}, {0x0553,0x0583,0x0553}, /* 0582 */
2763 {0x0554,0x0584,0x0554}, {0x0555,0x0585,0x0555}, /* 0584 */
2764 {0x0556,0x0586,0x0556}, {0x0587,0x0587,0x0587}, /* 0586 */
2765 {0x0588,0x0588,0x0588}, {0x0589,0x0589,0x0589}, /* 0588 */
2766 {0x058A,0x058A,0x058A}, {0x058B,0x058B,0x058B}, /* 058A */
2767 {0x058C,0x058C,0x058C}, {0x058D,0x058D,0x058D}, /* 058C */
2768 {0x058E,0x058E,0x058E}, {0x058F,0x058F,0x058F}, /* 058E */
2769 {0x0590,0x0590,0x0590}, {0x0591,0x0591,0x0591}, /* 0590 */
2770 {0x0592,0x0592,0x0592}, {0x0593,0x0593,0x0593}, /* 0592 */
2771 {0x0594,0x0594,0x0594}, {0x0595,0x0595,0x0595}, /* 0594 */
2772 {0x0596,0x0596,0x0596}, {0x0597,0x0597,0x0597}, /* 0596 */
2773 {0x0598,0x0598,0x0598}, {0x0599,0x0599,0x0599}, /* 0598 */
2774 {0x059A,0x059A,0x059A}, {0x059B,0x059B,0x059B}, /* 059A */
2775 {0x059C,0x059C,0x059C}, {0x059D,0x059D,0x059D}, /* 059C */
2776 {0x059E,0x059E,0x059E}, {0x059F,0x059F,0x059F}, /* 059E */
2777 {0x05A0,0x05A0,0x05A0}, {0x05A1,0x05A1,0x05A1}, /* 05A0 */
2778 {0x05A2,0x05A2,0x05A2}, {0x05A3,0x05A3,0x05A3}, /* 05A2 */
2779 {0x05A4,0x05A4,0x05A4}, {0x05A5,0x05A5,0x05A5}, /* 05A4 */
2780 {0x05A6,0x05A6,0x05A6}, {0x05A7,0x05A7,0x05A7}, /* 05A6 */
2781 {0x05A8,0x05A8,0x05A8}, {0x05A9,0x05A9,0x05A9}, /* 05A8 */
2782 {0x05AA,0x05AA,0x05AA}, {0x05AB,0x05AB,0x05AB}, /* 05AA */
2783 {0x05AC,0x05AC,0x05AC}, {0x05AD,0x05AD,0x05AD}, /* 05AC */
2784 {0x05AE,0x05AE,0x05AE}, {0x05AF,0x05AF,0x05AF}, /* 05AE */
2785 {0x05B0,0x05B0,0x05B0}, {0x05B1,0x05B1,0x05B1}, /* 05B0 */
2786 {0x05B2,0x05B2,0x05B2}, {0x05B3,0x05B3,0x05B3}, /* 05B2 */
2787 {0x05B4,0x05B4,0x05B4}, {0x05B5,0x05B5,0x05B5}, /* 05B4 */
2788 {0x05B6,0x05B6,0x05B6}, {0x05B7,0x05B7,0x05B7}, /* 05B6 */
2789 {0x05B8,0x05B8,0x05B8}, {0x05B9,0x05B9,0x05B9}, /* 05B8 */
2790 {0x05BA,0x05BA,0x05BA}, {0x05BB,0x05BB,0x05BB}, /* 05BA */
2791 {0x05BC,0x05BC,0x05BC}, {0x05BD,0x05BD,0x05BD}, /* 05BC */
2792 {0x05BE,0x05BE,0x05BE}, {0x05BF,0x05BF,0x05BF}, /* 05BE */
2793 {0x05C0,0x05C0,0x05C0}, {0x05C1,0x05C1,0x05C1}, /* 05C0 */
2794 {0x05C2,0x05C2,0x05C2}, {0x05C3,0x05C3,0x05C3}, /* 05C2 */
2795 {0x05C4,0x05C4,0x05C4}, {0x05C5,0x05C5,0x05C5}, /* 05C4 */
2796 {0x05C6,0x05C6,0x05C6}, {0x05C7,0x05C7,0x05C7}, /* 05C6 */
2797 {0x05C8,0x05C8,0x05C8}, {0x05C9,0x05C9,0x05C9}, /* 05C8 */
2798 {0x05CA,0x05CA,0x05CA}, {0x05CB,0x05CB,0x05CB}, /* 05CA */
2799 {0x05CC,0x05CC,0x05CC}, {0x05CD,0x05CD,0x05CD}, /* 05CC */
2800 {0x05CE,0x05CE,0x05CE}, {0x05CF,0x05CF,0x05CF}, /* 05CE */
2801 {0x05D0,0x05D0,0x05D0}, {0x05D1,0x05D1,0x05D1}, /* 05D0 */
2802 {0x05D2,0x05D2,0x05D2}, {0x05D3,0x05D3,0x05D3}, /* 05D2 */
2803 {0x05D4,0x05D4,0x05D4}, {0x05D5,0x05D5,0x05D5}, /* 05D4 */
2804 {0x05D6,0x05D6,0x05D6}, {0x05D7,0x05D7,0x05D7}, /* 05D6 */
2805 {0x05D8,0x05D8,0x05D8}, {0x05D9,0x05D9,0x05D9}, /* 05D8 */
2806 {0x05DA,0x05DA,0x05DA}, {0x05DB,0x05DB,0x05DB}, /* 05DA */
2807 {0x05DC,0x05DC,0x05DC}, {0x05DD,0x05DD,0x05DD}, /* 05DC */
2808 {0x05DE,0x05DE,0x05DE}, {0x05DF,0x05DF,0x05DF}, /* 05DE */
2809 {0x05E0,0x05E0,0x05E0}, {0x05E1,0x05E1,0x05E1}, /* 05E0 */
2810 {0x05E2,0x05E2,0x05E2}, {0x05E3,0x05E3,0x05E3}, /* 05E2 */
2811 {0x05E4,0x05E4,0x05E4}, {0x05E5,0x05E5,0x05E5}, /* 05E4 */
2812 {0x05E6,0x05E6,0x05E6}, {0x05E7,0x05E7,0x05E7}, /* 05E6 */
2813 {0x05E8,0x05E8,0x05E8}, {0x05E9,0x05E9,0x05E9}, /* 05E8 */
2814 {0x05EA,0x05EA,0x05EA}, {0x05EB,0x05EB,0x05EB}, /* 05EA */
2815 {0x05EC,0x05EC,0x05EC}, {0x05ED,0x05ED,0x05ED}, /* 05EC */
2816 {0x05EE,0x05EE,0x05EE}, {0x05EF,0x05EF,0x05EF}, /* 05EE */
2817 {0x05F0,0x05F0,0x05F0}, {0x05F1,0x05F1,0x05F1}, /* 05F0 */
2818 {0x05F2,0x05F2,0x05F2}, {0x05F3,0x05F3,0x05F3}, /* 05F2 */
2819 {0x05F4,0x05F4,0x05F4}, {0x05F5,0x05F5,0x05F5}, /* 05F4 */
2820 {0x05F6,0x05F6,0x05F6}, {0x05F7,0x05F7,0x05F7}, /* 05F6 */
2821 {0x05F8,0x05F8,0x05F8}, {0x05F9,0x05F9,0x05F9}, /* 05F8 */
2822 {0x05FA,0x05FA,0x05FA}, {0x05FB,0x05FB,0x05FB}, /* 05FA */
2823 {0x05FC,0x05FC,0x05FC}, {0x05FD,0x05FD,0x05FD}, /* 05FC */
2824 {0x05FE,0x05FE,0x05FE}, {0x05FF,0x05FF,0x05FF} /* 05FE */
2825};
2826
2827static MY_UNICASE_CHARACTER u520p10[]={
2828 {0x1000,0x1000,0x1000}, {0x1001,0x1001,0x1001}, /* 1000 */
2829 {0x1002,0x1002,0x1002}, {0x1003,0x1003,0x1003}, /* 1002 */
2830 {0x1004,0x1004,0x1004}, {0x1005,0x1005,0x1005}, /* 1004 */
2831 {0x1006,0x1006,0x1006}, {0x1007,0x1007,0x1007}, /* 1006 */
2832 {0x1008,0x1008,0x1008}, {0x1009,0x1009,0x1009}, /* 1008 */
2833 {0x100A,0x100A,0x100A}, {0x100B,0x100B,0x100B}, /* 100A */
2834 {0x100C,0x100C,0x100C}, {0x100D,0x100D,0x100D}, /* 100C */
2835 {0x100E,0x100E,0x100E}, {0x100F,0x100F,0x100F}, /* 100E */
2836 {0x1010,0x1010,0x1010}, {0x1011,0x1011,0x1011}, /* 1010 */
2837 {0x1012,0x1012,0x1012}, {0x1013,0x1013,0x1013}, /* 1012 */
2838 {0x1014,0x1014,0x1014}, {0x1015,0x1015,0x1015}, /* 1014 */
2839 {0x1016,0x1016,0x1016}, {0x1017,0x1017,0x1017}, /* 1016 */
2840 {0x1018,0x1018,0x1018}, {0x1019,0x1019,0x1019}, /* 1018 */
2841 {0x101A,0x101A,0x101A}, {0x101B,0x101B,0x101B}, /* 101A */
2842 {0x101C,0x101C,0x101C}, {0x101D,0x101D,0x101D}, /* 101C */
2843 {0x101E,0x101E,0x101E}, {0x101F,0x101F,0x101F}, /* 101E */
2844 {0x1020,0x1020,0x1020}, {0x1021,0x1021,0x1021}, /* 1020 */
2845 {0x1022,0x1022,0x1022}, {0x1023,0x1023,0x1023}, /* 1022 */
2846 {0x1024,0x1024,0x1024}, {0x1025,0x1025,0x1025}, /* 1024 */
2847 {0x1026,0x1026,0x1026}, {0x1027,0x1027,0x1027}, /* 1026 */
2848 {0x1028,0x1028,0x1028}, {0x1029,0x1029,0x1029}, /* 1028 */
2849 {0x102A,0x102A,0x102A}, {0x102B,0x102B,0x102B}, /* 102A */
2850 {0x102C,0x102C,0x102C}, {0x102D,0x102D,0x102D}, /* 102C */
2851 {0x102E,0x102E,0x102E}, {0x102F,0x102F,0x102F}, /* 102E */
2852 {0x1030,0x1030,0x1030}, {0x1031,0x1031,0x1031}, /* 1030 */
2853 {0x1032,0x1032,0x1032}, {0x1033,0x1033,0x1033}, /* 1032 */
2854 {0x1034,0x1034,0x1034}, {0x1035,0x1035,0x1035}, /* 1034 */
2855 {0x1036,0x1036,0x1036}, {0x1037,0x1037,0x1037}, /* 1036 */
2856 {0x1038,0x1038,0x1038}, {0x1039,0x1039,0x1039}, /* 1038 */
2857 {0x103A,0x103A,0x103A}, {0x103B,0x103B,0x103B}, /* 103A */
2858 {0x103C,0x103C,0x103C}, {0x103D,0x103D,0x103D}, /* 103C */
2859 {0x103E,0x103E,0x103E}, {0x103F,0x103F,0x103F}, /* 103E */
2860 {0x1040,0x1040,0x1040}, {0x1041,0x1041,0x1041}, /* 1040 */
2861 {0x1042,0x1042,0x1042}, {0x1043,0x1043,0x1043}, /* 1042 */
2862 {0x1044,0x1044,0x1044}, {0x1045,0x1045,0x1045}, /* 1044 */
2863 {0x1046,0x1046,0x1046}, {0x1047,0x1047,0x1047}, /* 1046 */
2864 {0x1048,0x1048,0x1048}, {0x1049,0x1049,0x1049}, /* 1048 */
2865 {0x104A,0x104A,0x104A}, {0x104B,0x104B,0x104B}, /* 104A */
2866 {0x104C,0x104C,0x104C}, {0x104D,0x104D,0x104D}, /* 104C */
2867 {0x104E,0x104E,0x104E}, {0x104F,0x104F,0x104F}, /* 104E */
2868 {0x1050,0x1050,0x1050}, {0x1051,0x1051,0x1051}, /* 1050 */
2869 {0x1052,0x1052,0x1052}, {0x1053,0x1053,0x1053}, /* 1052 */
2870 {0x1054,0x1054,0x1054}, {0x1055,0x1055,0x1055}, /* 1054 */
2871 {0x1056,0x1056,0x1056}, {0x1057,0x1057,0x1057}, /* 1056 */
2872 {0x1058,0x1058,0x1058}, {0x1059,0x1059,0x1059}, /* 1058 */
2873 {0x105A,0x105A,0x105A}, {0x105B,0x105B,0x105B}, /* 105A */
2874 {0x105C,0x105C,0x105C}, {0x105D,0x105D,0x105D}, /* 105C */
2875 {0x105E,0x105E,0x105E}, {0x105F,0x105F,0x105F}, /* 105E */
2876 {0x1060,0x1060,0x1060}, {0x1061,0x1061,0x1061}, /* 1060 */
2877 {0x1062,0x1062,0x1062}, {0x1063,0x1063,0x1063}, /* 1062 */
2878 {0x1064,0x1064,0x1064}, {0x1065,0x1065,0x1065}, /* 1064 */
2879 {0x1066,0x1066,0x1066}, {0x1067,0x1067,0x1067}, /* 1066 */
2880 {0x1068,0x1068,0x1068}, {0x1069,0x1069,0x1069}, /* 1068 */
2881 {0x106A,0x106A,0x106A}, {0x106B,0x106B,0x106B}, /* 106A */
2882 {0x106C,0x106C,0x106C}, {0x106D,0x106D,0x106D}, /* 106C */
2883 {0x106E,0x106E,0x106E}, {0x106F,0x106F,0x106F}, /* 106E */
2884 {0x1070,0x1070,0x1070}, {0x1071,0x1071,0x1071}, /* 1070 */
2885 {0x1072,0x1072,0x1072}, {0x1073,0x1073,0x1073}, /* 1072 */
2886 {0x1074,0x1074,0x1074}, {0x1075,0x1075,0x1075}, /* 1074 */
2887 {0x1076,0x1076,0x1076}, {0x1077,0x1077,0x1077}, /* 1076 */
2888 {0x1078,0x1078,0x1078}, {0x1079,0x1079,0x1079}, /* 1078 */
2889 {0x107A,0x107A,0x107A}, {0x107B,0x107B,0x107B}, /* 107A */
2890 {0x107C,0x107C,0x107C}, {0x107D,0x107D,0x107D}, /* 107C */
2891 {0x107E,0x107E,0x107E}, {0x107F,0x107F,0x107F}, /* 107E */
2892 {0x1080,0x1080,0x1080}, {0x1081,0x1081,0x1081}, /* 1080 */
2893 {0x1082,0x1082,0x1082}, {0x1083,0x1083,0x1083}, /* 1082 */
2894 {0x1084,0x1084,0x1084}, {0x1085,0x1085,0x1085}, /* 1084 */
2895 {0x1086,0x1086,0x1086}, {0x1087,0x1087,0x1087}, /* 1086 */
2896 {0x1088,0x1088,0x1088}, {0x1089,0x1089,0x1089}, /* 1088 */
2897 {0x108A,0x108A,0x108A}, {0x108B,0x108B,0x108B}, /* 108A */
2898 {0x108C,0x108C,0x108C}, {0x108D,0x108D,0x108D}, /* 108C */
2899 {0x108E,0x108E,0x108E}, {0x108F,0x108F,0x108F}, /* 108E */
2900 {0x1090,0x1090,0x1090}, {0x1091,0x1091,0x1091}, /* 1090 */
2901 {0x1092,0x1092,0x1092}, {0x1093,0x1093,0x1093}, /* 1092 */
2902 {0x1094,0x1094,0x1094}, {0x1095,0x1095,0x1095}, /* 1094 */
2903 {0x1096,0x1096,0x1096}, {0x1097,0x1097,0x1097}, /* 1096 */
2904 {0x1098,0x1098,0x1098}, {0x1099,0x1099,0x1099}, /* 1098 */
2905 {0x109A,0x109A,0x109A}, {0x109B,0x109B,0x109B}, /* 109A */
2906 {0x109C,0x109C,0x109C}, {0x109D,0x109D,0x109D}, /* 109C */
2907 {0x109E,0x109E,0x109E}, {0x109F,0x109F,0x109F}, /* 109E */
2908 {0x10A0,0x2D00,0x10A0}, {0x10A1,0x2D01,0x10A1}, /* 10A0 */
2909 {0x10A2,0x2D02,0x10A2}, {0x10A3,0x2D03,0x10A3}, /* 10A2 */
2910 {0x10A4,0x2D04,0x10A4}, {0x10A5,0x2D05,0x10A5}, /* 10A4 */
2911 {0x10A6,0x2D06,0x10A6}, {0x10A7,0x2D07,0x10A7}, /* 10A6 */
2912 {0x10A8,0x2D08,0x10A8}, {0x10A9,0x2D09,0x10A9}, /* 10A8 */
2913 {0x10AA,0x2D0A,0x10AA}, {0x10AB,0x2D0B,0x10AB}, /* 10AA */
2914 {0x10AC,0x2D0C,0x10AC}, {0x10AD,0x2D0D,0x10AD}, /* 10AC */
2915 {0x10AE,0x2D0E,0x10AE}, {0x10AF,0x2D0F,0x10AF}, /* 10AE */
2916 {0x10B0,0x2D10,0x10B0}, {0x10B1,0x2D11,0x10B1}, /* 10B0 */
2917 {0x10B2,0x2D12,0x10B2}, {0x10B3,0x2D13,0x10B3}, /* 10B2 */
2918 {0x10B4,0x2D14,0x10B4}, {0x10B5,0x2D15,0x10B5}, /* 10B4 */
2919 {0x10B6,0x2D16,0x10B6}, {0x10B7,0x2D17,0x10B7}, /* 10B6 */
2920 {0x10B8,0x2D18,0x10B8}, {0x10B9,0x2D19,0x10B9}, /* 10B8 */
2921 {0x10BA,0x2D1A,0x10BA}, {0x10BB,0x2D1B,0x10BB}, /* 10BA */
2922 {0x10BC,0x2D1C,0x10BC}, {0x10BD,0x2D1D,0x10BD}, /* 10BC */
2923 {0x10BE,0x2D1E,0x10BE}, {0x10BF,0x2D1F,0x10BF}, /* 10BE */
2924 {0x10C0,0x2D20,0x10C0}, {0x10C1,0x2D21,0x10C1}, /* 10C0 */
2925 {0x10C2,0x2D22,0x10C2}, {0x10C3,0x2D23,0x10C3}, /* 10C2 */
2926 {0x10C4,0x2D24,0x10C4}, {0x10C5,0x2D25,0x10C5}, /* 10C4 */
2927 {0x10C6,0x10C6,0x10C6}, {0x10C7,0x10C7,0x10C7}, /* 10C6 */
2928 {0x10C8,0x10C8,0x10C8}, {0x10C9,0x10C9,0x10C9}, /* 10C8 */
2929 {0x10CA,0x10CA,0x10CA}, {0x10CB,0x10CB,0x10CB}, /* 10CA */
2930 {0x10CC,0x10CC,0x10CC}, {0x10CD,0x10CD,0x10CD}, /* 10CC */
2931 {0x10CE,0x10CE,0x10CE}, {0x10CF,0x10CF,0x10CF}, /* 10CE */
2932 {0x10D0,0x10D0,0x10D0}, {0x10D1,0x10D1,0x10D1}, /* 10D0 */
2933 {0x10D2,0x10D2,0x10D2}, {0x10D3,0x10D3,0x10D3}, /* 10D2 */
2934 {0x10D4,0x10D4,0x10D4}, {0x10D5,0x10D5,0x10D5}, /* 10D4 */
2935 {0x10D6,0x10D6,0x10D6}, {0x10D7,0x10D7,0x10D7}, /* 10D6 */
2936 {0x10D8,0x10D8,0x10D8}, {0x10D9,0x10D9,0x10D9}, /* 10D8 */
2937 {0x10DA,0x10DA,0x10DA}, {0x10DB,0x10DB,0x10DB}, /* 10DA */
2938 {0x10DC,0x10DC,0x10DC}, {0x10DD,0x10DD,0x10DD}, /* 10DC */
2939 {0x10DE,0x10DE,0x10DE}, {0x10DF,0x10DF,0x10DF}, /* 10DE */
2940 {0x10E0,0x10E0,0x10E0}, {0x10E1,0x10E1,0x10E1}, /* 10E0 */
2941 {0x10E2,0x10E2,0x10E2}, {0x10E3,0x10E3,0x10E3}, /* 10E2 */
2942 {0x10E4,0x10E4,0x10E4}, {0x10E5,0x10E5,0x10E5}, /* 10E4 */
2943 {0x10E6,0x10E6,0x10E6}, {0x10E7,0x10E7,0x10E7}, /* 10E6 */
2944 {0x10E8,0x10E8,0x10E8}, {0x10E9,0x10E9,0x10E9}, /* 10E8 */
2945 {0x10EA,0x10EA,0x10EA}, {0x10EB,0x10EB,0x10EB}, /* 10EA */
2946 {0x10EC,0x10EC,0x10EC}, {0x10ED,0x10ED,0x10ED}, /* 10EC */
2947 {0x10EE,0x10EE,0x10EE}, {0x10EF,0x10EF,0x10EF}, /* 10EE */
2948 {0x10F0,0x10F0,0x10F0}, {0x10F1,0x10F1,0x10F1}, /* 10F0 */
2949 {0x10F2,0x10F2,0x10F2}, {0x10F3,0x10F3,0x10F3}, /* 10F2 */
2950 {0x10F4,0x10F4,0x10F4}, {0x10F5,0x10F5,0x10F5}, /* 10F4 */
2951 {0x10F6,0x10F6,0x10F6}, {0x10F7,0x10F7,0x10F7}, /* 10F6 */
2952 {0x10F8,0x10F8,0x10F8}, {0x10F9,0x10F9,0x10F9}, /* 10F8 */
2953 {0x10FA,0x10FA,0x10FA}, {0x10FB,0x10FB,0x10FB}, /* 10FA */
2954 {0x10FC,0x10FC,0x10FC}, {0x10FD,0x10FD,0x10FD}, /* 10FC */
2955 {0x10FE,0x10FE,0x10FE}, {0x10FF,0x10FF,0x10FF} /* 10FE */
2956};
2957
2958static MY_UNICASE_CHARACTER u520p1D[]={
2959 {0x1D00,0x1D00,0x1D00}, {0x1D01,0x1D01,0x1D01}, /* 1D00 */
2960 {0x1D02,0x1D02,0x1D02}, {0x1D03,0x1D03,0x1D03}, /* 1D02 */
2961 {0x1D04,0x1D04,0x1D04}, {0x1D05,0x1D05,0x1D05}, /* 1D04 */
2962 {0x1D06,0x1D06,0x1D06}, {0x1D07,0x1D07,0x1D07}, /* 1D06 */
2963 {0x1D08,0x1D08,0x1D08}, {0x1D09,0x1D09,0x1D09}, /* 1D08 */
2964 {0x1D0A,0x1D0A,0x1D0A}, {0x1D0B,0x1D0B,0x1D0B}, /* 1D0A */
2965 {0x1D0C,0x1D0C,0x1D0C}, {0x1D0D,0x1D0D,0x1D0D}, /* 1D0C */
2966 {0x1D0E,0x1D0E,0x1D0E}, {0x1D0F,0x1D0F,0x1D0F}, /* 1D0E */
2967 {0x1D10,0x1D10,0x1D10}, {0x1D11,0x1D11,0x1D11}, /* 1D10 */
2968 {0x1D12,0x1D12,0x1D12}, {0x1D13,0x1D13,0x1D13}, /* 1D12 */
2969 {0x1D14,0x1D14,0x1D14}, {0x1D15,0x1D15,0x1D15}, /* 1D14 */
2970 {0x1D16,0x1D16,0x1D16}, {0x1D17,0x1D17,0x1D17}, /* 1D16 */
2971 {0x1D18,0x1D18,0x1D18}, {0x1D19,0x1D19,0x1D19}, /* 1D18 */
2972 {0x1D1A,0x1D1A,0x1D1A}, {0x1D1B,0x1D1B,0x1D1B}, /* 1D1A */
2973 {0x1D1C,0x1D1C,0x1D1C}, {0x1D1D,0x1D1D,0x1D1D}, /* 1D1C */
2974 {0x1D1E,0x1D1E,0x1D1E}, {0x1D1F,0x1D1F,0x1D1F}, /* 1D1E */
2975 {0x1D20,0x1D20,0x1D20}, {0x1D21,0x1D21,0x1D21}, /* 1D20 */
2976 {0x1D22,0x1D22,0x1D22}, {0x1D23,0x1D23,0x1D23}, /* 1D22 */
2977 {0x1D24,0x1D24,0x1D24}, {0x1D25,0x1D25,0x1D25}, /* 1D24 */
2978 {0x1D26,0x1D26,0x1D26}, {0x1D27,0x1D27,0x1D27}, /* 1D26 */
2979 {0x1D28,0x1D28,0x1D28}, {0x1D29,0x1D29,0x1D29}, /* 1D28 */
2980 {0x1D2A,0x1D2A,0x1D2A}, {0x1D2B,0x1D2B,0x1D2B}, /* 1D2A */
2981 {0x1D2C,0x1D2C,0x1D2C}, {0x1D2D,0x1D2D,0x1D2D}, /* 1D2C */
2982 {0x1D2E,0x1D2E,0x1D2E}, {0x1D2F,0x1D2F,0x1D2F}, /* 1D2E */
2983 {0x1D30,0x1D30,0x1D30}, {0x1D31,0x1D31,0x1D31}, /* 1D30 */
2984 {0x1D32,0x1D32,0x1D32}, {0x1D33,0x1D33,0x1D33}, /* 1D32 */
2985 {0x1D34,0x1D34,0x1D34}, {0x1D35,0x1D35,0x1D35}, /* 1D34 */
2986 {0x1D36,0x1D36,0x1D36}, {0x1D37,0x1D37,0x1D37}, /* 1D36 */
2987 {0x1D38,0x1D38,0x1D38}, {0x1D39,0x1D39,0x1D39}, /* 1D38 */
2988 {0x1D3A,0x1D3A,0x1D3A}, {0x1D3B,0x1D3B,0x1D3B}, /* 1D3A */
2989 {0x1D3C,0x1D3C,0x1D3C}, {0x1D3D,0x1D3D,0x1D3D}, /* 1D3C */
2990 {0x1D3E,0x1D3E,0x1D3E}, {0x1D3F,0x1D3F,0x1D3F}, /* 1D3E */
2991 {0x1D40,0x1D40,0x1D40}, {0x1D41,0x1D41,0x1D41}, /* 1D40 */
2992 {0x1D42,0x1D42,0x1D42}, {0x1D43,0x1D43,0x1D43}, /* 1D42 */
2993 {0x1D44,0x1D44,0x1D44}, {0x1D45,0x1D45,0x1D45}, /* 1D44 */
2994 {0x1D46,0x1D46,0x1D46}, {0x1D47,0x1D47,0x1D47}, /* 1D46 */
2995 {0x1D48,0x1D48,0x1D48}, {0x1D49,0x1D49,0x1D49}, /* 1D48 */
2996 {0x1D4A,0x1D4A,0x1D4A}, {0x1D4B,0x1D4B,0x1D4B}, /* 1D4A */
2997 {0x1D4C,0x1D4C,0x1D4C}, {0x1D4D,0x1D4D,0x1D4D}, /* 1D4C */
2998 {0x1D4E,0x1D4E,0x1D4E}, {0x1D4F,0x1D4F,0x1D4F}, /* 1D4E */
2999 {0x1D50,0x1D50,0x1D50}, {0x1D51,0x1D51,0x1D51}, /* 1D50 */
3000 {0x1D52,0x1D52,0x1D52}, {0x1D53,0x1D53,0x1D53}, /* 1D52 */
3001 {0x1D54,0x1D54,0x1D54}, {0x1D55,0x1D55,0x1D55}, /* 1D54 */
3002 {0x1D56,0x1D56,0x1D56}, {0x1D57,0x1D57,0x1D57}, /* 1D56 */
3003 {0x1D58,0x1D58,0x1D58}, {0x1D59,0x1D59,0x1D59}, /* 1D58 */
3004 {0x1D5A,0x1D5A,0x1D5A}, {0x1D5B,0x1D5B,0x1D5B}, /* 1D5A */
3005 {0x1D5C,0x1D5C,0x1D5C}, {0x1D5D,0x1D5D,0x1D5D}, /* 1D5C */
3006 {0x1D5E,0x1D5E,0x1D5E}, {0x1D5F,0x1D5F,0x1D5F}, /* 1D5E */
3007 {0x1D60,0x1D60,0x1D60}, {0x1D61,0x1D61,0x1D61}, /* 1D60 */
3008 {0x1D62,0x1D62,0x1D62}, {0x1D63,0x1D63,0x1D63}, /* 1D62 */
3009 {0x1D64,0x1D64,0x1D64}, {0x1D65,0x1D65,0x1D65}, /* 1D64 */
3010 {0x1D66,0x1D66,0x1D66}, {0x1D67,0x1D67,0x1D67}, /* 1D66 */
3011 {0x1D68,0x1D68,0x1D68}, {0x1D69,0x1D69,0x1D69}, /* 1D68 */
3012 {0x1D6A,0x1D6A,0x1D6A}, {0x1D6B,0x1D6B,0x1D6B}, /* 1D6A */
3013 {0x1D6C,0x1D6C,0x1D6C}, {0x1D6D,0x1D6D,0x1D6D}, /* 1D6C */
3014 {0x1D6E,0x1D6E,0x1D6E}, {0x1D6F,0x1D6F,0x1D6F}, /* 1D6E */
3015 {0x1D70,0x1D70,0x1D70}, {0x1D71,0x1D71,0x1D71}, /* 1D70 */
3016 {0x1D72,0x1D72,0x1D72}, {0x1D73,0x1D73,0x1D73}, /* 1D72 */
3017 {0x1D74,0x1D74,0x1D74}, {0x1D75,0x1D75,0x1D75}, /* 1D74 */
3018 {0x1D76,0x1D76,0x1D76}, {0x1D77,0x1D77,0x1D77}, /* 1D76 */
3019 {0x1D78,0x1D78,0x1D78}, {0xA77D,0x1D79,0xA77D}, /* 1D78 */
3020 {0x1D7A,0x1D7A,0x1D7A}, {0x1D7B,0x1D7B,0x1D7B}, /* 1D7A */
3021 {0x1D7C,0x1D7C,0x1D7C}, {0x2C63,0x1D7D,0x2C63}, /* 1D7C */
3022 {0x1D7E,0x1D7E,0x1D7E}, {0x1D7F,0x1D7F,0x1D7F}, /* 1D7E */
3023 {0x1D80,0x1D80,0x1D80}, {0x1D81,0x1D81,0x1D81}, /* 1D80 */
3024 {0x1D82,0x1D82,0x1D82}, {0x1D83,0x1D83,0x1D83}, /* 1D82 */
3025 {0x1D84,0x1D84,0x1D84}, {0x1D85,0x1D85,0x1D85}, /* 1D84 */
3026 {0x1D86,0x1D86,0x1D86}, {0x1D87,0x1D87,0x1D87}, /* 1D86 */
3027 {0x1D88,0x1D88,0x1D88}, {0x1D89,0x1D89,0x1D89}, /* 1D88 */
3028 {0x1D8A,0x1D8A,0x1D8A}, {0x1D8B,0x1D8B,0x1D8B}, /* 1D8A */
3029 {0x1D8C,0x1D8C,0x1D8C}, {0x1D8D,0x1D8D,0x1D8D}, /* 1D8C */
3030 {0x1D8E,0x1D8E,0x1D8E}, {0x1D8F,0x1D8F,0x1D8F}, /* 1D8E */
3031 {0x1D90,0x1D90,0x1D90}, {0x1D91,0x1D91,0x1D91}, /* 1D90 */
3032 {0x1D92,0x1D92,0x1D92}, {0x1D93,0x1D93,0x1D93}, /* 1D92 */
3033 {0x1D94,0x1D94,0x1D94}, {0x1D95,0x1D95,0x1D95}, /* 1D94 */
3034 {0x1D96,0x1D96,0x1D96}, {0x1D97,0x1D97,0x1D97}, /* 1D96 */
3035 {0x1D98,0x1D98,0x1D98}, {0x1D99,0x1D99,0x1D99}, /* 1D98 */
3036 {0x1D9A,0x1D9A,0x1D9A}, {0x1D9B,0x1D9B,0x1D9B}, /* 1D9A */
3037 {0x1D9C,0x1D9C,0x1D9C}, {0x1D9D,0x1D9D,0x1D9D}, /* 1D9C */
3038 {0x1D9E,0x1D9E,0x1D9E}, {0x1D9F,0x1D9F,0x1D9F}, /* 1D9E */
3039 {0x1DA0,0x1DA0,0x1DA0}, {0x1DA1,0x1DA1,0x1DA1}, /* 1DA0 */
3040 {0x1DA2,0x1DA2,0x1DA2}, {0x1DA3,0x1DA3,0x1DA3}, /* 1DA2 */
3041 {0x1DA4,0x1DA4,0x1DA4}, {0x1DA5,0x1DA5,0x1DA5}, /* 1DA4 */
3042 {0x1DA6,0x1DA6,0x1DA6}, {0x1DA7,0x1DA7,0x1DA7}, /* 1DA6 */
3043 {0x1DA8,0x1DA8,0x1DA8}, {0x1DA9,0x1DA9,0x1DA9}, /* 1DA8 */
3044 {0x1DAA,0x1DAA,0x1DAA}, {0x1DAB,0x1DAB,0x1DAB}, /* 1DAA */
3045 {0x1DAC,0x1DAC,0x1DAC}, {0x1DAD,0x1DAD,0x1DAD}, /* 1DAC */
3046 {0x1DAE,0x1DAE,0x1DAE}, {0x1DAF,0x1DAF,0x1DAF}, /* 1DAE */
3047 {0x1DB0,0x1DB0,0x1DB0}, {0x1DB1,0x1DB1,0x1DB1}, /* 1DB0 */
3048 {0x1DB2,0x1DB2,0x1DB2}, {0x1DB3,0x1DB3,0x1DB3}, /* 1DB2 */
3049 {0x1DB4,0x1DB4,0x1DB4}, {0x1DB5,0x1DB5,0x1DB5}, /* 1DB4 */
3050 {0x1DB6,0x1DB6,0x1DB6}, {0x1DB7,0x1DB7,0x1DB7}, /* 1DB6 */
3051 {0x1DB8,0x1DB8,0x1DB8}, {0x1DB9,0x1DB9,0x1DB9}, /* 1DB8 */
3052 {0x1DBA,0x1DBA,0x1DBA}, {0x1DBB,0x1DBB,0x1DBB}, /* 1DBA */
3053 {0x1DBC,0x1DBC,0x1DBC}, {0x1DBD,0x1DBD,0x1DBD}, /* 1DBC */
3054 {0x1DBE,0x1DBE,0x1DBE}, {0x1DBF,0x1DBF,0x1DBF}, /* 1DBE */
3055 {0x1DC0,0x1DC0,0x1DC0}, {0x1DC1,0x1DC1,0x1DC1}, /* 1DC0 */
3056 {0x1DC2,0x1DC2,0x1DC2}, {0x1DC3,0x1DC3,0x1DC3}, /* 1DC2 */
3057 {0x1DC4,0x1DC4,0x1DC4}, {0x1DC5,0x1DC5,0x1DC5}, /* 1DC4 */
3058 {0x1DC6,0x1DC6,0x1DC6}, {0x1DC7,0x1DC7,0x1DC7}, /* 1DC6 */
3059 {0x1DC8,0x1DC8,0x1DC8}, {0x1DC9,0x1DC9,0x1DC9}, /* 1DC8 */
3060 {0x1DCA,0x1DCA,0x1DCA}, {0x1DCB,0x1DCB,0x1DCB}, /* 1DCA */
3061 {0x1DCC,0x1DCC,0x1DCC}, {0x1DCD,0x1DCD,0x1DCD}, /* 1DCC */
3062 {0x1DCE,0x1DCE,0x1DCE}, {0x1DCF,0x1DCF,0x1DCF}, /* 1DCE */
3063 {0x1DD0,0x1DD0,0x1DD0}, {0x1DD1,0x1DD1,0x1DD1}, /* 1DD0 */
3064 {0x1DD2,0x1DD2,0x1DD2}, {0x1DD3,0x1DD3,0x1DD3}, /* 1DD2 */
3065 {0x1DD4,0x1DD4,0x1DD4}, {0x1DD5,0x1DD5,0x1DD5}, /* 1DD4 */
3066 {0x1DD6,0x1DD6,0x1DD6}, {0x1DD7,0x1DD7,0x1DD7}, /* 1DD6 */
3067 {0x1DD8,0x1DD8,0x1DD8}, {0x1DD9,0x1DD9,0x1DD9}, /* 1DD8 */
3068 {0x1DDA,0x1DDA,0x1DDA}, {0x1DDB,0x1DDB,0x1DDB}, /* 1DDA */
3069 {0x1DDC,0x1DDC,0x1DDC}, {0x1DDD,0x1DDD,0x1DDD}, /* 1DDC */
3070 {0x1DDE,0x1DDE,0x1DDE}, {0x1DDF,0x1DDF,0x1DDF}, /* 1DDE */
3071 {0x1DE0,0x1DE0,0x1DE0}, {0x1DE1,0x1DE1,0x1DE1}, /* 1DE0 */
3072 {0x1DE2,0x1DE2,0x1DE2}, {0x1DE3,0x1DE3,0x1DE3}, /* 1DE2 */
3073 {0x1DE4,0x1DE4,0x1DE4}, {0x1DE5,0x1DE5,0x1DE5}, /* 1DE4 */
3074 {0x1DE6,0x1DE6,0x1DE6}, {0x1DE7,0x1DE7,0x1DE7}, /* 1DE6 */
3075 {0x1DE8,0x1DE8,0x1DE8}, {0x1DE9,0x1DE9,0x1DE9}, /* 1DE8 */
3076 {0x1DEA,0x1DEA,0x1DEA}, {0x1DEB,0x1DEB,0x1DEB}, /* 1DEA */
3077 {0x1DEC,0x1DEC,0x1DEC}, {0x1DED,0x1DED,0x1DED}, /* 1DEC */
3078 {0x1DEE,0x1DEE,0x1DEE}, {0x1DEF,0x1DEF,0x1DEF}, /* 1DEE */
3079 {0x1DF0,0x1DF0,0x1DF0}, {0x1DF1,0x1DF1,0x1DF1}, /* 1DF0 */
3080 {0x1DF2,0x1DF2,0x1DF2}, {0x1DF3,0x1DF3,0x1DF3}, /* 1DF2 */
3081 {0x1DF4,0x1DF4,0x1DF4}, {0x1DF5,0x1DF5,0x1DF5}, /* 1DF4 */
3082 {0x1DF6,0x1DF6,0x1DF6}, {0x1DF7,0x1DF7,0x1DF7}, /* 1DF6 */
3083 {0x1DF8,0x1DF8,0x1DF8}, {0x1DF9,0x1DF9,0x1DF9}, /* 1DF8 */
3084 {0x1DFA,0x1DFA,0x1DFA}, {0x1DFB,0x1DFB,0x1DFB}, /* 1DFA */
3085 {0x1DFC,0x1DFC,0x1DFC}, {0x1DFD,0x1DFD,0x1DFD}, /* 1DFC */
3086 {0x1DFE,0x1DFE,0x1DFE}, {0x1DFF,0x1DFF,0x1DFF} /* 1DFE */
3087};
3088
3089static MY_UNICASE_CHARACTER u520p1E[]={
3090 {0x1E00,0x1E01,0x0041}, {0x1E00,0x1E01,0x0041}, /* 1E00 */
3091 {0x1E02,0x1E03,0x0042}, {0x1E02,0x1E03,0x0042}, /* 1E02 */
3092 {0x1E04,0x1E05,0x0042}, {0x1E04,0x1E05,0x0042}, /* 1E04 */
3093 {0x1E06,0x1E07,0x0042}, {0x1E06,0x1E07,0x0042}, /* 1E06 */
3094 {0x1E08,0x1E09,0x0043}, {0x1E08,0x1E09,0x0043}, /* 1E08 */
3095 {0x1E0A,0x1E0B,0x0044}, {0x1E0A,0x1E0B,0x0044}, /* 1E0A */
3096 {0x1E0C,0x1E0D,0x0044}, {0x1E0C,0x1E0D,0x0044}, /* 1E0C */
3097 {0x1E0E,0x1E0F,0x0044}, {0x1E0E,0x1E0F,0x0044}, /* 1E0E */
3098 {0x1E10,0x1E11,0x0044}, {0x1E10,0x1E11,0x0044}, /* 1E10 */
3099 {0x1E12,0x1E13,0x0044}, {0x1E12,0x1E13,0x0044}, /* 1E12 */
3100 {0x1E14,0x1E15,0x0045}, {0x1E14,0x1E15,0x0045}, /* 1E14 */
3101 {0x1E16,0x1E17,0x0045}, {0x1E16,0x1E17,0x0045}, /* 1E16 */
3102 {0x1E18,0x1E19,0x0045}, {0x1E18,0x1E19,0x0045}, /* 1E18 */
3103 {0x1E1A,0x1E1B,0x0045}, {0x1E1A,0x1E1B,0x0045}, /* 1E1A */
3104 {0x1E1C,0x1E1D,0x0045}, {0x1E1C,0x1E1D,0x0045}, /* 1E1C */
3105 {0x1E1E,0x1E1F,0x0046}, {0x1E1E,0x1E1F,0x0046}, /* 1E1E */
3106 {0x1E20,0x1E21,0x0047}, {0x1E20,0x1E21,0x0047}, /* 1E20 */
3107 {0x1E22,0x1E23,0x0048}, {0x1E22,0x1E23,0x0048}, /* 1E22 */
3108 {0x1E24,0x1E25,0x0048}, {0x1E24,0x1E25,0x0048}, /* 1E24 */
3109 {0x1E26,0x1E27,0x0048}, {0x1E26,0x1E27,0x0048}, /* 1E26 */
3110 {0x1E28,0x1E29,0x0048}, {0x1E28,0x1E29,0x0048}, /* 1E28 */
3111 {0x1E2A,0x1E2B,0x0048}, {0x1E2A,0x1E2B,0x0048}, /* 1E2A */
3112 {0x1E2C,0x1E2D,0x0049}, {0x1E2C,0x1E2D,0x0049}, /* 1E2C */
3113 {0x1E2E,0x1E2F,0x0049}, {0x1E2E,0x1E2F,0x0049}, /* 1E2E */
3114 {0x1E30,0x1E31,0x004B}, {0x1E30,0x1E31,0x004B}, /* 1E30 */
3115 {0x1E32,0x1E33,0x004B}, {0x1E32,0x1E33,0x004B}, /* 1E32 */
3116 {0x1E34,0x1E35,0x004B}, {0x1E34,0x1E35,0x004B}, /* 1E34 */
3117 {0x1E36,0x1E37,0x004C}, {0x1E36,0x1E37,0x004C}, /* 1E36 */
3118 {0x1E38,0x1E39,0x004C}, {0x1E38,0x1E39,0x004C}, /* 1E38 */
3119 {0x1E3A,0x1E3B,0x004C}, {0x1E3A,0x1E3B,0x004C}, /* 1E3A */
3120 {0x1E3C,0x1E3D,0x004C}, {0x1E3C,0x1E3D,0x004C}, /* 1E3C */
3121 {0x1E3E,0x1E3F,0x004D}, {0x1E3E,0x1E3F,0x004D}, /* 1E3E */
3122 {0x1E40,0x1E41,0x004D}, {0x1E40,0x1E41,0x004D}, /* 1E40 */
3123 {0x1E42,0x1E43,0x004D}, {0x1E42,0x1E43,0x004D}, /* 1E42 */
3124 {0x1E44,0x1E45,0x004E}, {0x1E44,0x1E45,0x004E}, /* 1E44 */
3125 {0x1E46,0x1E47,0x004E}, {0x1E46,0x1E47,0x004E}, /* 1E46 */
3126 {0x1E48,0x1E49,0x004E}, {0x1E48,0x1E49,0x004E}, /* 1E48 */
3127 {0x1E4A,0x1E4B,0x004E}, {0x1E4A,0x1E4B,0x004E}, /* 1E4A */
3128 {0x1E4C,0x1E4D,0x004F}, {0x1E4C,0x1E4D,0x004F}, /* 1E4C */
3129 {0x1E4E,0x1E4F,0x004F}, {0x1E4E,0x1E4F,0x004F}, /* 1E4E */
3130 {0x1E50,0x1E51,0x004F}, {0x1E50,0x1E51,0x004F}, /* 1E50 */
3131 {0x1E52,0x1E53,0x004F}, {0x1E52,0x1E53,0x004F}, /* 1E52 */
3132 {0x1E54,0x1E55,0x0050}, {0x1E54,0x1E55,0x0050}, /* 1E54 */
3133 {0x1E56,0x1E57,0x0050}, {0x1E56,0x1E57,0x0050}, /* 1E56 */
3134 {0x1E58,0x1E59,0x0052}, {0x1E58,0x1E59,0x0052}, /* 1E58 */
3135 {0x1E5A,0x1E5B,0x0052}, {0x1E5A,0x1E5B,0x0052}, /* 1E5A */
3136 {0x1E5C,0x1E5D,0x0052}, {0x1E5C,0x1E5D,0x0052}, /* 1E5C */
3137 {0x1E5E,0x1E5F,0x0052}, {0x1E5E,0x1E5F,0x0052}, /* 1E5E */
3138 {0x1E60,0x1E61,0x0053}, {0x1E60,0x1E61,0x0053}, /* 1E60 */
3139 {0x1E62,0x1E63,0x0053}, {0x1E62,0x1E63,0x0053}, /* 1E62 */
3140 {0x1E64,0x1E65,0x0053}, {0x1E64,0x1E65,0x0053}, /* 1E64 */
3141 {0x1E66,0x1E67,0x0053}, {0x1E66,0x1E67,0x0053}, /* 1E66 */
3142 {0x1E68,0x1E69,0x0053}, {0x1E68,0x1E69,0x0053}, /* 1E68 */
3143 {0x1E6A,0x1E6B,0x0054}, {0x1E6A,0x1E6B,0x0054}, /* 1E6A */
3144 {0x1E6C,0x1E6D,0x0054}, {0x1E6C,0x1E6D,0x0054}, /* 1E6C */
3145 {0x1E6E,0x1E6F,0x0054}, {0x1E6E,0x1E6F,0x0054}, /* 1E6E */
3146 {0x1E70,0x1E71,0x0054}, {0x1E70,0x1E71,0x0054}, /* 1E70 */
3147 {0x1E72,0x1E73,0x0055}, {0x1E72,0x1E73,0x0055}, /* 1E72 */
3148 {0x1E74,0x1E75,0x0055}, {0x1E74,0x1E75,0x0055}, /* 1E74 */
3149 {0x1E76,0x1E77,0x0055}, {0x1E76,0x1E77,0x0055}, /* 1E76 */
3150 {0x1E78,0x1E79,0x0055}, {0x1E78,0x1E79,0x0055}, /* 1E78 */
3151 {0x1E7A,0x1E7B,0x0055}, {0x1E7A,0x1E7B,0x0055}, /* 1E7A */
3152 {0x1E7C,0x1E7D,0x0056}, {0x1E7C,0x1E7D,0x0056}, /* 1E7C */
3153 {0x1E7E,0x1E7F,0x0056}, {0x1E7E,0x1E7F,0x0056}, /* 1E7E */
3154 {0x1E80,0x1E81,0x0057}, {0x1E80,0x1E81,0x0057}, /* 1E80 */
3155 {0x1E82,0x1E83,0x0057}, {0x1E82,0x1E83,0x0057}, /* 1E82 */
3156 {0x1E84,0x1E85,0x0057}, {0x1E84,0x1E85,0x0057}, /* 1E84 */
3157 {0x1E86,0x1E87,0x0057}, {0x1E86,0x1E87,0x0057}, /* 1E86 */
3158 {0x1E88,0x1E89,0x0057}, {0x1E88,0x1E89,0x0057}, /* 1E88 */
3159 {0x1E8A,0x1E8B,0x0058}, {0x1E8A,0x1E8B,0x0058}, /* 1E8A */
3160 {0x1E8C,0x1E8D,0x0058}, {0x1E8C,0x1E8D,0x0058}, /* 1E8C */
3161 {0x1E8E,0x1E8F,0x0059}, {0x1E8E,0x1E8F,0x0059}, /* 1E8E */
3162 {0x1E90,0x1E91,0x005A}, {0x1E90,0x1E91,0x005A}, /* 1E90 */
3163 {0x1E92,0x1E93,0x005A}, {0x1E92,0x1E93,0x005A}, /* 1E92 */
3164 {0x1E94,0x1E95,0x005A}, {0x1E94,0x1E95,0x005A}, /* 1E94 */
3165 {0x1E96,0x1E96,0x0048}, {0x1E97,0x1E97,0x0054}, /* 1E96 */
3166 {0x1E98,0x1E98,0x0057}, {0x1E99,0x1E99,0x0059}, /* 1E98 */
3167 {0x1E9A,0x1E9A,0x1E9A}, {0x1E60,0x1E9B,0x0053}, /* 1E9A */
3168 {0x1E9C,0x1E9C,0x1E9C}, {0x1E9D,0x1E9D,0x1E9D}, /* 1E9C */
3169 {0x1E9E,0x00DF,0x1E9E}, {0x1E9F,0x1E9F,0x1E9F}, /* 1E9E */
3170 {0x1EA0,0x1EA1,0x0041}, {0x1EA0,0x1EA1,0x0041}, /* 1EA0 */
3171 {0x1EA2,0x1EA3,0x0041}, {0x1EA2,0x1EA3,0x0041}, /* 1EA2 */
3172 {0x1EA4,0x1EA5,0x0041}, {0x1EA4,0x1EA5,0x0041}, /* 1EA4 */
3173 {0x1EA6,0x1EA7,0x0041}, {0x1EA6,0x1EA7,0x0041}, /* 1EA6 */
3174 {0x1EA8,0x1EA9,0x0041}, {0x1EA8,0x1EA9,0x0041}, /* 1EA8 */
3175 {0x1EAA,0x1EAB,0x0041}, {0x1EAA,0x1EAB,0x0041}, /* 1EAA */
3176 {0x1EAC,0x1EAD,0x0041}, {0x1EAC,0x1EAD,0x0041}, /* 1EAC */
3177 {0x1EAE,0x1EAF,0x0041}, {0x1EAE,0x1EAF,0x0041}, /* 1EAE */
3178 {0x1EB0,0x1EB1,0x0041}, {0x1EB0,0x1EB1,0x0041}, /* 1EB0 */
3179 {0x1EB2,0x1EB3,0x0041}, {0x1EB2,0x1EB3,0x0041}, /* 1EB2 */
3180 {0x1EB4,0x1EB5,0x0041}, {0x1EB4,0x1EB5,0x0041}, /* 1EB4 */
3181 {0x1EB6,0x1EB7,0x0041}, {0x1EB6,0x1EB7,0x0041}, /* 1EB6 */
3182 {0x1EB8,0x1EB9,0x0045}, {0x1EB8,0x1EB9,0x0045}, /* 1EB8 */
3183 {0x1EBA,0x1EBB,0x0045}, {0x1EBA,0x1EBB,0x0045}, /* 1EBA */
3184 {0x1EBC,0x1EBD,0x0045}, {0x1EBC,0x1EBD,0x0045}, /* 1EBC */
3185 {0x1EBE,0x1EBF,0x0045}, {0x1EBE,0x1EBF,0x0045}, /* 1EBE */
3186 {0x1EC0,0x1EC1,0x0045}, {0x1EC0,0x1EC1,0x0045}, /* 1EC0 */
3187 {0x1EC2,0x1EC3,0x0045}, {0x1EC2,0x1EC3,0x0045}, /* 1EC2 */
3188 {0x1EC4,0x1EC5,0x0045}, {0x1EC4,0x1EC5,0x0045}, /* 1EC4 */
3189 {0x1EC6,0x1EC7,0x0045}, {0x1EC6,0x1EC7,0x0045}, /* 1EC6 */
3190 {0x1EC8,0x1EC9,0x0049}, {0x1EC8,0x1EC9,0x0049}, /* 1EC8 */
3191 {0x1ECA,0x1ECB,0x0049}, {0x1ECA,0x1ECB,0x0049}, /* 1ECA */
3192 {0x1ECC,0x1ECD,0x004F}, {0x1ECC,0x1ECD,0x004F}, /* 1ECC */
3193 {0x1ECE,0x1ECF,0x004F}, {0x1ECE,0x1ECF,0x004F}, /* 1ECE */
3194 {0x1ED0,0x1ED1,0x004F}, {0x1ED0,0x1ED1,0x004F}, /* 1ED0 */
3195 {0x1ED2,0x1ED3,0x004F}, {0x1ED2,0x1ED3,0x004F}, /* 1ED2 */
3196 {0x1ED4,0x1ED5,0x004F}, {0x1ED4,0x1ED5,0x004F}, /* 1ED4 */
3197 {0x1ED6,0x1ED7,0x004F}, {0x1ED6,0x1ED7,0x004F}, /* 1ED6 */
3198 {0x1ED8,0x1ED9,0x004F}, {0x1ED8,0x1ED9,0x004F}, /* 1ED8 */
3199 {0x1EDA,0x1EDB,0x004F}, {0x1EDA,0x1EDB,0x004F}, /* 1EDA */
3200 {0x1EDC,0x1EDD,0x004F}, {0x1EDC,0x1EDD,0x004F}, /* 1EDC */
3201 {0x1EDE,0x1EDF,0x004F}, {0x1EDE,0x1EDF,0x004F}, /* 1EDE */
3202 {0x1EE0,0x1EE1,0x004F}, {0x1EE0,0x1EE1,0x004F}, /* 1EE0 */
3203 {0x1EE2,0x1EE3,0x004F}, {0x1EE2,0x1EE3,0x004F}, /* 1EE2 */
3204 {0x1EE4,0x1EE5,0x0055}, {0x1EE4,0x1EE5,0x0055}, /* 1EE4 */
3205 {0x1EE6,0x1EE7,0x0055}, {0x1EE6,0x1EE7,0x0055}, /* 1EE6 */
3206 {0x1EE8,0x1EE9,0x0055}, {0x1EE8,0x1EE9,0x0055}, /* 1EE8 */
3207 {0x1EEA,0x1EEB,0x0055}, {0x1EEA,0x1EEB,0x0055}, /* 1EEA */
3208 {0x1EEC,0x1EED,0x0055}, {0x1EEC,0x1EED,0x0055}, /* 1EEC */
3209 {0x1EEE,0x1EEF,0x0055}, {0x1EEE,0x1EEF,0x0055}, /* 1EEE */
3210 {0x1EF0,0x1EF1,0x0055}, {0x1EF0,0x1EF1,0x0055}, /* 1EF0 */
3211 {0x1EF2,0x1EF3,0x0059}, {0x1EF2,0x1EF3,0x0059}, /* 1EF2 */
3212 {0x1EF4,0x1EF5,0x0059}, {0x1EF4,0x1EF5,0x0059}, /* 1EF4 */
3213 {0x1EF6,0x1EF7,0x0059}, {0x1EF6,0x1EF7,0x0059}, /* 1EF6 */
3214 {0x1EF8,0x1EF9,0x0059}, {0x1EF8,0x1EF9,0x0059}, /* 1EF8 */
3215 {0x1EFA,0x1EFB,0x1EFA}, {0x1EFA,0x1EFB,0x1EFA}, /* 1EFA */
3216 {0x1EFC,0x1EFD,0x1EFC}, {0x1EFC,0x1EFD,0x1EFC}, /* 1EFC */
3217 {0x1EFE,0x1EFF,0x1EFE}, {0x1EFE,0x1EFF,0x1EFE} /* 1EFE */
3218};
3219
3220static MY_UNICASE_CHARACTER u520p1F[]={
3221 {0x1F08,0x1F00,0x0391}, {0x1F09,0x1F01,0x0391}, /* 1F00 */
3222 {0x1F0A,0x1F02,0x0391}, {0x1F0B,0x1F03,0x0391}, /* 1F02 */
3223 {0x1F0C,0x1F04,0x0391}, {0x1F0D,0x1F05,0x0391}, /* 1F04 */
3224 {0x1F0E,0x1F06,0x0391}, {0x1F0F,0x1F07,0x0391}, /* 1F06 */
3225 {0x1F08,0x1F00,0x0391}, {0x1F09,0x1F01,0x0391}, /* 1F08 */
3226 {0x1F0A,0x1F02,0x0391}, {0x1F0B,0x1F03,0x0391}, /* 1F0A */
3227 {0x1F0C,0x1F04,0x0391}, {0x1F0D,0x1F05,0x0391}, /* 1F0C */
3228 {0x1F0E,0x1F06,0x0391}, {0x1F0F,0x1F07,0x0391}, /* 1F0E */
3229 {0x1F18,0x1F10,0x0395}, {0x1F19,0x1F11,0x0395}, /* 1F10 */
3230 {0x1F1A,0x1F12,0x0395}, {0x1F1B,0x1F13,0x0395}, /* 1F12 */
3231 {0x1F1C,0x1F14,0x0395}, {0x1F1D,0x1F15,0x0395}, /* 1F14 */
3232 {0x1F16,0x1F16,0x1F16}, {0x1F17,0x1F17,0x1F17}, /* 1F16 */
3233 {0x1F18,0x1F10,0x0395}, {0x1F19,0x1F11,0x0395}, /* 1F18 */
3234 {0x1F1A,0x1F12,0x0395}, {0x1F1B,0x1F13,0x0395}, /* 1F1A */
3235 {0x1F1C,0x1F14,0x0395}, {0x1F1D,0x1F15,0x0395}, /* 1F1C */
3236 {0x1F1E,0x1F1E,0x1F1E}, {0x1F1F,0x1F1F,0x1F1F}, /* 1F1E */
3237 {0x1F28,0x1F20,0x0397}, {0x1F29,0x1F21,0x0397}, /* 1F20 */
3238 {0x1F2A,0x1F22,0x0397}, {0x1F2B,0x1F23,0x0397}, /* 1F22 */
3239 {0x1F2C,0x1F24,0x0397}, {0x1F2D,0x1F25,0x0397}, /* 1F24 */
3240 {0x1F2E,0x1F26,0x0397}, {0x1F2F,0x1F27,0x0397}, /* 1F26 */
3241 {0x1F28,0x1F20,0x0397}, {0x1F29,0x1F21,0x0397}, /* 1F28 */
3242 {0x1F2A,0x1F22,0x0397}, {0x1F2B,0x1F23,0x0397}, /* 1F2A */
3243 {0x1F2C,0x1F24,0x0397}, {0x1F2D,0x1F25,0x0397}, /* 1F2C */
3244 {0x1F2E,0x1F26,0x0397}, {0x1F2F,0x1F27,0x0397}, /* 1F2E */
3245 {0x1F38,0x1F30,0x0399}, {0x1F39,0x1F31,0x0399}, /* 1F30 */
3246 {0x1F3A,0x1F32,0x0399}, {0x1F3B,0x1F33,0x0399}, /* 1F32 */
3247 {0x1F3C,0x1F34,0x0399}, {0x1F3D,0x1F35,0x0399}, /* 1F34 */
3248 {0x1F3E,0x1F36,0x0399}, {0x1F3F,0x1F37,0x0399}, /* 1F36 */
3249 {0x1F38,0x1F30,0x0399}, {0x1F39,0x1F31,0x0399}, /* 1F38 */
3250 {0x1F3A,0x1F32,0x0399}, {0x1F3B,0x1F33,0x0399}, /* 1F3A */
3251 {0x1F3C,0x1F34,0x0399}, {0x1F3D,0x1F35,0x0399}, /* 1F3C */
3252 {0x1F3E,0x1F36,0x0399}, {0x1F3F,0x1F37,0x0399}, /* 1F3E */
3253 {0x1F48,0x1F40,0x039F}, {0x1F49,0x1F41,0x039F}, /* 1F40 */
3254 {0x1F4A,0x1F42,0x039F}, {0x1F4B,0x1F43,0x039F}, /* 1F42 */
3255 {0x1F4C,0x1F44,0x039F}, {0x1F4D,0x1F45,0x039F}, /* 1F44 */
3256 {0x1F46,0x1F46,0x1F46}, {0x1F47,0x1F47,0x1F47}, /* 1F46 */
3257 {0x1F48,0x1F40,0x039F}, {0x1F49,0x1F41,0x039F}, /* 1F48 */
3258 {0x1F4A,0x1F42,0x039F}, {0x1F4B,0x1F43,0x039F}, /* 1F4A */
3259 {0x1F4C,0x1F44,0x039F}, {0x1F4D,0x1F45,0x039F}, /* 1F4C */
3260 {0x1F4E,0x1F4E,0x1F4E}, {0x1F4F,0x1F4F,0x1F4F}, /* 1F4E */
3261 {0x1F50,0x1F50,0x03A5}, {0x1F59,0x1F51,0x03A5}, /* 1F50 */
3262 {0x1F52,0x1F52,0x03A5}, {0x1F5B,0x1F53,0x03A5}, /* 1F52 */
3263 {0x1F54,0x1F54,0x03A5}, {0x1F5D,0x1F55,0x03A5}, /* 1F54 */
3264 {0x1F56,0x1F56,0x03A5}, {0x1F5F,0x1F57,0x03A5}, /* 1F56 */
3265 {0x1F58,0x1F58,0x1F58}, {0x1F59,0x1F51,0x03A5}, /* 1F58 */
3266 {0x1F5A,0x1F5A,0x1F5A}, {0x1F5B,0x1F53,0x03A5}, /* 1F5A */
3267 {0x1F5C,0x1F5C,0x1F5C}, {0x1F5D,0x1F55,0x03A5}, /* 1F5C */
3268 {0x1F5E,0x1F5E,0x1F5E}, {0x1F5F,0x1F57,0x03A5}, /* 1F5E */
3269 {0x1F68,0x1F60,0x03A9}, {0x1F69,0x1F61,0x03A9}, /* 1F60 */
3270 {0x1F6A,0x1F62,0x03A9}, {0x1F6B,0x1F63,0x03A9}, /* 1F62 */
3271 {0x1F6C,0x1F64,0x03A9}, {0x1F6D,0x1F65,0x03A9}, /* 1F64 */
3272 {0x1F6E,0x1F66,0x03A9}, {0x1F6F,0x1F67,0x03A9}, /* 1F66 */
3273 {0x1F68,0x1F60,0x03A9}, {0x1F69,0x1F61,0x03A9}, /* 1F68 */
3274 {0x1F6A,0x1F62,0x03A9}, {0x1F6B,0x1F63,0x03A9}, /* 1F6A */
3275 {0x1F6C,0x1F64,0x03A9}, {0x1F6D,0x1F65,0x03A9}, /* 1F6C */
3276 {0x1F6E,0x1F66,0x03A9}, {0x1F6F,0x1F67,0x03A9}, /* 1F6E */
3277 {0x1FBA,0x1F70,0x0391}, {0x1FBB,0x1F71,0x1FBB}, /* 1F70 */
3278 {0x1FC8,0x1F72,0x0395}, {0x1FC9,0x1F73,0x1FC9}, /* 1F72 */
3279 {0x1FCA,0x1F74,0x0397}, {0x1FCB,0x1F75,0x1FCB}, /* 1F74 */
3280 {0x1FDA,0x1F76,0x0399}, {0x1FDB,0x1F77,0x1FDB}, /* 1F76 */
3281 {0x1FF8,0x1F78,0x039F}, {0x1FF9,0x1F79,0x1FF9}, /* 1F78 */
3282 {0x1FEA,0x1F7A,0x03A5}, {0x1FEB,0x1F7B,0x1FEB}, /* 1F7A */
3283 {0x1FFA,0x1F7C,0x03A9}, {0x1FFB,0x1F7D,0x1FFB}, /* 1F7C */
3284 {0x1F7E,0x1F7E,0x1F7E}, {0x1F7F,0x1F7F,0x1F7F}, /* 1F7E */
3285 {0x1F88,0x1F80,0x0391}, {0x1F89,0x1F81,0x0391}, /* 1F80 */
3286 {0x1F8A,0x1F82,0x0391}, {0x1F8B,0x1F83,0x0391}, /* 1F82 */
3287 {0x1F8C,0x1F84,0x0391}, {0x1F8D,0x1F85,0x0391}, /* 1F84 */
3288 {0x1F8E,0x1F86,0x0391}, {0x1F8F,0x1F87,0x0391}, /* 1F86 */
3289 {0x1F88,0x1F80,0x0391}, {0x1F89,0x1F81,0x0391}, /* 1F88 */
3290 {0x1F8A,0x1F82,0x0391}, {0x1F8B,0x1F83,0x0391}, /* 1F8A */
3291 {0x1F8C,0x1F84,0x0391}, {0x1F8D,0x1F85,0x0391}, /* 1F8C */
3292 {0x1F8E,0x1F86,0x0391}, {0x1F8F,0x1F87,0x0391}, /* 1F8E */
3293 {0x1F98,0x1F90,0x0397}, {0x1F99,0x1F91,0x0397}, /* 1F90 */
3294 {0x1F9A,0x1F92,0x0397}, {0x1F9B,0x1F93,0x0397}, /* 1F92 */
3295 {0x1F9C,0x1F94,0x0397}, {0x1F9D,0x1F95,0x0397}, /* 1F94 */
3296 {0x1F9E,0x1F96,0x0397}, {0x1F9F,0x1F97,0x0397}, /* 1F96 */
3297 {0x1F98,0x1F90,0x0397}, {0x1F99,0x1F91,0x0397}, /* 1F98 */
3298 {0x1F9A,0x1F92,0x0397}, {0x1F9B,0x1F93,0x0397}, /* 1F9A */
3299 {0x1F9C,0x1F94,0x0397}, {0x1F9D,0x1F95,0x0397}, /* 1F9C */
3300 {0x1F9E,0x1F96,0x0397}, {0x1F9F,0x1F97,0x0397}, /* 1F9E */
3301 {0x1FA8,0x1FA0,0x03A9}, {0x1FA9,0x1FA1,0x03A9}, /* 1FA0 */
3302 {0x1FAA,0x1FA2,0x03A9}, {0x1FAB,0x1FA3,0x03A9}, /* 1FA2 */
3303 {0x1FAC,0x1FA4,0x03A9}, {0x1FAD,0x1FA5,0x03A9}, /* 1FA4 */
3304 {0x1FAE,0x1FA6,0x03A9}, {0x1FAF,0x1FA7,0x03A9}, /* 1FA6 */
3305 {0x1FA8,0x1FA0,0x03A9}, {0x1FA9,0x1FA1,0x03A9}, /* 1FA8 */
3306 {0x1FAA,0x1FA2,0x03A9}, {0x1FAB,0x1FA3,0x03A9}, /* 1FAA */
3307 {0x1FAC,0x1FA4,0x03A9}, {0x1FAD,0x1FA5,0x03A9}, /* 1FAC */
3308 {0x1FAE,0x1FA6,0x03A9}, {0x1FAF,0x1FA7,0x03A9}, /* 1FAE */
3309 {0x1FB8,0x1FB0,0x0391}, {0x1FB9,0x1FB1,0x0391}, /* 1FB0 */
3310 {0x1FB2,0x1FB2,0x0391}, {0x1FBC,0x1FB3,0x0391}, /* 1FB2 */
3311 {0x1FB4,0x1FB4,0x0391}, {0x1FB5,0x1FB5,0x1FB5}, /* 1FB4 */
3312 {0x1FB6,0x1FB6,0x0391}, {0x1FB7,0x1FB7,0x0391}, /* 1FB6 */
3313 {0x1FB8,0x1FB0,0x0391}, {0x1FB9,0x1FB1,0x0391}, /* 1FB8 */
3314 {0x1FBA,0x1F70,0x0391}, {0x1FBB,0x1F71,0x1FBB}, /* 1FBA */
3315 {0x1FBC,0x1FB3,0x0391}, {0x1FBD,0x1FBD,0x1FBD}, /* 1FBC */
3316 {0x0399,0x1FBE,0x0399}, {0x1FBF,0x1FBF,0x1FBF}, /* 1FBE */
3317 {0x1FC0,0x1FC0,0x1FC0}, {0x1FC1,0x1FC1,0x1FC1}, /* 1FC0 */
3318 {0x1FC2,0x1FC2,0x0397}, {0x1FCC,0x1FC3,0x0397}, /* 1FC2 */
3319 {0x1FC4,0x1FC4,0x0397}, {0x1FC5,0x1FC5,0x1FC5}, /* 1FC4 */
3320 {0x1FC6,0x1FC6,0x0397}, {0x1FC7,0x1FC7,0x0397}, /* 1FC6 */
3321 {0x1FC8,0x1F72,0x0395}, {0x1FC9,0x1F73,0x1FC9}, /* 1FC8 */
3322 {0x1FCA,0x1F74,0x0397}, {0x1FCB,0x1F75,0x1FCB}, /* 1FCA */
3323 {0x1FCC,0x1FC3,0x0397}, {0x1FCD,0x1FCD,0x1FCD}, /* 1FCC */
3324 {0x1FCE,0x1FCE,0x1FCE}, {0x1FCF,0x1FCF,0x1FCF}, /* 1FCE */
3325 {0x1FD8,0x1FD0,0x0399}, {0x1FD9,0x1FD1,0x0399}, /* 1FD0 */
3326 {0x1FD2,0x1FD2,0x0399}, {0x1FD3,0x1FD3,0x1FD3}, /* 1FD2 */
3327 {0x1FD4,0x1FD4,0x1FD4}, {0x1FD5,0x1FD5,0x1FD5}, /* 1FD4 */
3328 {0x1FD6,0x1FD6,0x0399}, {0x1FD7,0x1FD7,0x0399}, /* 1FD6 */
3329 {0x1FD8,0x1FD0,0x0399}, {0x1FD9,0x1FD1,0x0399}, /* 1FD8 */
3330 {0x1FDA,0x1F76,0x0399}, {0x1FDB,0x1F77,0x1FDB}, /* 1FDA */
3331 {0x1FDC,0x1FDC,0x1FDC}, {0x1FDD,0x1FDD,0x1FDD}, /* 1FDC */
3332 {0x1FDE,0x1FDE,0x1FDE}, {0x1FDF,0x1FDF,0x1FDF}, /* 1FDE */
3333 {0x1FE8,0x1FE0,0x03A5}, {0x1FE9,0x1FE1,0x03A5}, /* 1FE0 */
3334 {0x1FE2,0x1FE2,0x03A5}, {0x1FE3,0x1FE3,0x1FE3}, /* 1FE2 */
3335 {0x1FE4,0x1FE4,0x03A1}, {0x1FEC,0x1FE5,0x03A1}, /* 1FE4 */
3336 {0x1FE6,0x1FE6,0x03A5}, {0x1FE7,0x1FE7,0x03A5}, /* 1FE6 */
3337 {0x1FE8,0x1FE0,0x03A5}, {0x1FE9,0x1FE1,0x03A5}, /* 1FE8 */
3338 {0x1FEA,0x1F7A,0x03A5}, {0x1FEB,0x1F7B,0x1FEB}, /* 1FEA */
3339 {0x1FEC,0x1FE5,0x03A1}, {0x1FED,0x1FED,0x1FED}, /* 1FEC */
3340 {0x1FEE,0x1FEE,0x1FEE}, {0x1FEF,0x1FEF,0x1FEF}, /* 1FEE */
3341 {0x1FF0,0x1FF0,0x1FF0}, {0x1FF1,0x1FF1,0x1FF1}, /* 1FF0 */
3342 {0x1FF2,0x1FF2,0x03A9}, {0x1FFC,0x1FF3,0x03A9}, /* 1FF2 */
3343 {0x1FF4,0x1FF4,0x03A9}, {0x1FF5,0x1FF5,0x1FF5}, /* 1FF4 */
3344 {0x1FF6,0x1FF6,0x03A9}, {0x1FF7,0x1FF7,0x03A9}, /* 1FF6 */
3345 {0x1FF8,0x1F78,0x039F}, {0x1FF9,0x1F79,0x1FF9}, /* 1FF8 */
3346 {0x1FFA,0x1F7C,0x03A9}, {0x1FFB,0x1F7D,0x1FFB}, /* 1FFA */
3347 {0x1FFC,0x1FF3,0x03A9}, {0x1FFD,0x1FFD,0x1FFD}, /* 1FFC */
3348 {0x1FFE,0x1FFE,0x1FFE}, {0x1FFF,0x1FFF,0x1FFF} /* 1FFE */
3349};
3350
3351static MY_UNICASE_CHARACTER u520p21[]={
3352 {0x2100,0x2100,0x2100}, {0x2101,0x2101,0x2101}, /* 2100 */
3353 {0x2102,0x2102,0x2102}, {0x2103,0x2103,0x2103}, /* 2102 */
3354 {0x2104,0x2104,0x2104}, {0x2105,0x2105,0x2105}, /* 2104 */
3355 {0x2106,0x2106,0x2106}, {0x2107,0x2107,0x2107}, /* 2106 */
3356 {0x2108,0x2108,0x2108}, {0x2109,0x2109,0x2109}, /* 2108 */
3357 {0x210A,0x210A,0x210A}, {0x210B,0x210B,0x210B}, /* 210A */
3358 {0x210C,0x210C,0x210C}, {0x210D,0x210D,0x210D}, /* 210C */
3359 {0x210E,0x210E,0x210E}, {0x210F,0x210F,0x210F}, /* 210E */
3360 {0x2110,0x2110,0x2110}, {0x2111,0x2111,0x2111}, /* 2110 */
3361 {0x2112,0x2112,0x2112}, {0x2113,0x2113,0x2113}, /* 2112 */
3362 {0x2114,0x2114,0x2114}, {0x2115,0x2115,0x2115}, /* 2114 */
3363 {0x2116,0x2116,0x2116}, {0x2117,0x2117,0x2117}, /* 2116 */
3364 {0x2118,0x2118,0x2118}, {0x2119,0x2119,0x2119}, /* 2118 */
3365 {0x211A,0x211A,0x211A}, {0x211B,0x211B,0x211B}, /* 211A */
3366 {0x211C,0x211C,0x211C}, {0x211D,0x211D,0x211D}, /* 211C */
3367 {0x211E,0x211E,0x211E}, {0x211F,0x211F,0x211F}, /* 211E */
3368 {0x2120,0x2120,0x2120}, {0x2121,0x2121,0x2121}, /* 2120 */
3369 {0x2122,0x2122,0x2122}, {0x2123,0x2123,0x2123}, /* 2122 */
3370 {0x2124,0x2124,0x2124}, {0x2125,0x2125,0x2125}, /* 2124 */
3371 {0x2126,0x03C9,0x2126}, {0x2127,0x2127,0x2127}, /* 2126 */
3372 {0x2128,0x2128,0x2128}, {0x2129,0x2129,0x2129}, /* 2128 */
3373 {0x212A,0x006B,0x212A}, {0x212B,0x00E5,0x212B}, /* 212A */
3374 {0x212C,0x212C,0x212C}, {0x212D,0x212D,0x212D}, /* 212C */
3375 {0x212E,0x212E,0x212E}, {0x212F,0x212F,0x212F}, /* 212E */
3376 {0x2130,0x2130,0x2130}, {0x2131,0x2131,0x2131}, /* 2130 */
3377 {0x2132,0x214E,0x2132}, {0x2133,0x2133,0x2133}, /* 2132 */
3378 {0x2134,0x2134,0x2134}, {0x2135,0x2135,0x2135}, /* 2134 */
3379 {0x2136,0x2136,0x2136}, {0x2137,0x2137,0x2137}, /* 2136 */
3380 {0x2138,0x2138,0x2138}, {0x2139,0x2139,0x2139}, /* 2138 */
3381 {0x213A,0x213A,0x213A}, {0x213B,0x213B,0x213B}, /* 213A */
3382 {0x213C,0x213C,0x213C}, {0x213D,0x213D,0x213D}, /* 213C */
3383 {0x213E,0x213E,0x213E}, {0x213F,0x213F,0x213F}, /* 213E */
3384 {0x2140,0x2140,0x2140}, {0x2141,0x2141,0x2141}, /* 2140 */
3385 {0x2142,0x2142,0x2142}, {0x2143,0x2143,0x2143}, /* 2142 */
3386 {0x2144,0x2144,0x2144}, {0x2145,0x2145,0x2145}, /* 2144 */
3387 {0x2146,0x2146,0x2146}, {0x2147,0x2147,0x2147}, /* 2146 */
3388 {0x2148,0x2148,0x2148}, {0x2149,0x2149,0x2149}, /* 2148 */
3389 {0x214A,0x214A,0x214A}, {0x214B,0x214B,0x214B}, /* 214A */
3390 {0x214C,0x214C,0x214C}, {0x214D,0x214D,0x214D}, /* 214C */
3391 {0x2132,0x214E,0x2132}, {0x214F,0x214F,0x214F}, /* 214E */
3392 {0x2150,0x2150,0x2150}, {0x2151,0x2151,0x2151}, /* 2150 */
3393 {0x2152,0x2152,0x2152}, {0x2153,0x2153,0x2153}, /* 2152 */
3394 {0x2154,0x2154,0x2154}, {0x2155,0x2155,0x2155}, /* 2154 */
3395 {0x2156,0x2156,0x2156}, {0x2157,0x2157,0x2157}, /* 2156 */
3396 {0x2158,0x2158,0x2158}, {0x2159,0x2159,0x2159}, /* 2158 */
3397 {0x215A,0x215A,0x215A}, {0x215B,0x215B,0x215B}, /* 215A */
3398 {0x215C,0x215C,0x215C}, {0x215D,0x215D,0x215D}, /* 215C */
3399 {0x215E,0x215E,0x215E}, {0x215F,0x215F,0x215F}, /* 215E */
3400 {0x2160,0x2170,0x2160}, {0x2161,0x2171,0x2161}, /* 2160 */
3401 {0x2162,0x2172,0x2162}, {0x2163,0x2173,0x2163}, /* 2162 */
3402 {0x2164,0x2174,0x2164}, {0x2165,0x2175,0x2165}, /* 2164 */
3403 {0x2166,0x2176,0x2166}, {0x2167,0x2177,0x2167}, /* 2166 */
3404 {0x2168,0x2178,0x2168}, {0x2169,0x2179,0x2169}, /* 2168 */
3405 {0x216A,0x217A,0x216A}, {0x216B,0x217B,0x216B}, /* 216A */
3406 {0x216C,0x217C,0x216C}, {0x216D,0x217D,0x216D}, /* 216C */
3407 {0x216E,0x217E,0x216E}, {0x216F,0x217F,0x216F}, /* 216E */
3408 {0x2160,0x2170,0x2160}, {0x2161,0x2171,0x2161}, /* 2170 */
3409 {0x2162,0x2172,0x2162}, {0x2163,0x2173,0x2163}, /* 2172 */
3410 {0x2164,0x2174,0x2164}, {0x2165,0x2175,0x2165}, /* 2174 */
3411 {0x2166,0x2176,0x2166}, {0x2167,0x2177,0x2167}, /* 2176 */
3412 {0x2168,0x2178,0x2168}, {0x2169,0x2179,0x2169}, /* 2178 */
3413 {0x216A,0x217A,0x216A}, {0x216B,0x217B,0x216B}, /* 217A */
3414 {0x216C,0x217C,0x216C}, {0x216D,0x217D,0x216D}, /* 217C */
3415 {0x216E,0x217E,0x216E}, {0x216F,0x217F,0x216F}, /* 217E */
3416 {0x2180,0x2180,0x2180}, {0x2181,0x2181,0x2181}, /* 2180 */
3417 {0x2182,0x2182,0x2182}, {0x2183,0x2184,0x2183}, /* 2182 */
3418 {0x2183,0x2184,0x2183}, {0x2185,0x2185,0x2185}, /* 2184 */
3419 {0x2186,0x2186,0x2186}, {0x2187,0x2187,0x2187}, /* 2186 */
3420 {0x2188,0x2188,0x2188}, {0x2189,0x2189,0x2189}, /* 2188 */
3421 {0x218A,0x218A,0x218A}, {0x218B,0x218B,0x218B}, /* 218A */
3422 {0x218C,0x218C,0x218C}, {0x218D,0x218D,0x218D}, /* 218C */
3423 {0x218E,0x218E,0x218E}, {0x218F,0x218F,0x218F}, /* 218E */
3424 {0x2190,0x2190,0x2190}, {0x2191,0x2191,0x2191}, /* 2190 */
3425 {0x2192,0x2192,0x2192}, {0x2193,0x2193,0x2193}, /* 2192 */
3426 {0x2194,0x2194,0x2194}, {0x2195,0x2195,0x2195}, /* 2194 */
3427 {0x2196,0x2196,0x2196}, {0x2197,0x2197,0x2197}, /* 2196 */
3428 {0x2198,0x2198,0x2198}, {0x2199,0x2199,0x2199}, /* 2198 */
3429 {0x219A,0x219A,0x219A}, {0x219B,0x219B,0x219B}, /* 219A */
3430 {0x219C,0x219C,0x219C}, {0x219D,0x219D,0x219D}, /* 219C */
3431 {0x219E,0x219E,0x219E}, {0x219F,0x219F,0x219F}, /* 219E */
3432 {0x21A0,0x21A0,0x21A0}, {0x21A1,0x21A1,0x21A1}, /* 21A0 */
3433 {0x21A2,0x21A2,0x21A2}, {0x21A3,0x21A3,0x21A3}, /* 21A2 */
3434 {0x21A4,0x21A4,0x21A4}, {0x21A5,0x21A5,0x21A5}, /* 21A4 */
3435 {0x21A6,0x21A6,0x21A6}, {0x21A7,0x21A7,0x21A7}, /* 21A6 */
3436 {0x21A8,0x21A8,0x21A8}, {0x21A9,0x21A9,0x21A9}, /* 21A8 */
3437 {0x21AA,0x21AA,0x21AA}, {0x21AB,0x21AB,0x21AB}, /* 21AA */
3438 {0x21AC,0x21AC,0x21AC}, {0x21AD,0x21AD,0x21AD}, /* 21AC */
3439 {0x21AE,0x21AE,0x21AE}, {0x21AF,0x21AF,0x21AF}, /* 21AE */
3440 {0x21B0,0x21B0,0x21B0}, {0x21B1,0x21B1,0x21B1}, /* 21B0 */
3441 {0x21B2,0x21B2,0x21B2}, {0x21B3,0x21B3,0x21B3}, /* 21B2 */
3442 {0x21B4,0x21B4,0x21B4}, {0x21B5,0x21B5,0x21B5}, /* 21B4 */
3443 {0x21B6,0x21B6,0x21B6}, {0x21B7,0x21B7,0x21B7}, /* 21B6 */
3444 {0x21B8,0x21B8,0x21B8}, {0x21B9,0x21B9,0x21B9}, /* 21B8 */
3445 {0x21BA,0x21BA,0x21BA}, {0x21BB,0x21BB,0x21BB}, /* 21BA */
3446 {0x21BC,0x21BC,0x21BC}, {0x21BD,0x21BD,0x21BD}, /* 21BC */
3447 {0x21BE,0x21BE,0x21BE}, {0x21BF,0x21BF,0x21BF}, /* 21BE */
3448 {0x21C0,0x21C0,0x21C0}, {0x21C1,0x21C1,0x21C1}, /* 21C0 */
3449 {0x21C2,0x21C2,0x21C2}, {0x21C3,0x21C3,0x21C3}, /* 21C2 */
3450 {0x21C4,0x21C4,0x21C4}, {0x21C5,0x21C5,0x21C5}, /* 21C4 */
3451 {0x21C6,0x21C6,0x21C6}, {0x21C7,0x21C7,0x21C7}, /* 21C6 */
3452 {0x21C8,0x21C8,0x21C8}, {0x21C9,0x21C9,0x21C9}, /* 21C8 */
3453 {0x21CA,0x21CA,0x21CA}, {0x21CB,0x21CB,0x21CB}, /* 21CA */
3454 {0x21CC,0x21CC,0x21CC}, {0x21CD,0x21CD,0x21CD}, /* 21CC */
3455 {0x21CE,0x21CE,0x21CE}, {0x21CF,0x21CF,0x21CF}, /* 21CE */
3456 {0x21D0,0x21D0,0x21D0}, {0x21D1,0x21D1,0x21D1}, /* 21D0 */
3457 {0x21D2,0x21D2,0x21D2}, {0x21D3,0x21D3,0x21D3}, /* 21D2 */
3458 {0x21D4,0x21D4,0x21D4}, {0x21D5,0x21D5,0x21D5}, /* 21D4 */
3459 {0x21D6,0x21D6,0x21D6}, {0x21D7,0x21D7,0x21D7}, /* 21D6 */
3460 {0x21D8,0x21D8,0x21D8}, {0x21D9,0x21D9,0x21D9}, /* 21D8 */
3461 {0x21DA,0x21DA,0x21DA}, {0x21DB,0x21DB,0x21DB}, /* 21DA */
3462 {0x21DC,0x21DC,0x21DC}, {0x21DD,0x21DD,0x21DD}, /* 21DC */
3463 {0x21DE,0x21DE,0x21DE}, {0x21DF,0x21DF,0x21DF}, /* 21DE */
3464 {0x21E0,0x21E0,0x21E0}, {0x21E1,0x21E1,0x21E1}, /* 21E0 */
3465 {0x21E2,0x21E2,0x21E2}, {0x21E3,0x21E3,0x21E3}, /* 21E2 */
3466 {0x21E4,0x21E4,0x21E4}, {0x21E5,0x21E5,0x21E5}, /* 21E4 */
3467 {0x21E6,0x21E6,0x21E6}, {0x21E7,0x21E7,0x21E7}, /* 21E6 */
3468 {0x21E8,0x21E8,0x21E8}, {0x21E9,0x21E9,0x21E9}, /* 21E8 */
3469 {0x21EA,0x21EA,0x21EA}, {0x21EB,0x21EB,0x21EB}, /* 21EA */
3470 {0x21EC,0x21EC,0x21EC}, {0x21ED,0x21ED,0x21ED}, /* 21EC */
3471 {0x21EE,0x21EE,0x21EE}, {0x21EF,0x21EF,0x21EF}, /* 21EE */
3472 {0x21F0,0x21F0,0x21F0}, {0x21F1,0x21F1,0x21F1}, /* 21F0 */
3473 {0x21F2,0x21F2,0x21F2}, {0x21F3,0x21F3,0x21F3}, /* 21F2 */
3474 {0x21F4,0x21F4,0x21F4}, {0x21F5,0x21F5,0x21F5}, /* 21F4 */
3475 {0x21F6,0x21F6,0x21F6}, {0x21F7,0x21F7,0x21F7}, /* 21F6 */
3476 {0x21F8,0x21F8,0x21F8}, {0x21F9,0x21F9,0x21F9}, /* 21F8 */
3477 {0x21FA,0x21FA,0x21FA}, {0x21FB,0x21FB,0x21FB}, /* 21FA */
3478 {0x21FC,0x21FC,0x21FC}, {0x21FD,0x21FD,0x21FD}, /* 21FC */
3479 {0x21FE,0x21FE,0x21FE}, {0x21FF,0x21FF,0x21FF} /* 21FE */
3480};
3481
3482static MY_UNICASE_CHARACTER u520p24[]={
3483 {0x2400,0x2400,0x2400}, {0x2401,0x2401,0x2401}, /* 2400 */
3484 {0x2402,0x2402,0x2402}, {0x2403,0x2403,0x2403}, /* 2402 */
3485 {0x2404,0x2404,0x2404}, {0x2405,0x2405,0x2405}, /* 2404 */
3486 {0x2406,0x2406,0x2406}, {0x2407,0x2407,0x2407}, /* 2406 */
3487 {0x2408,0x2408,0x2408}, {0x2409,0x2409,0x2409}, /* 2408 */
3488 {0x240A,0x240A,0x240A}, {0x240B,0x240B,0x240B}, /* 240A */
3489 {0x240C,0x240C,0x240C}, {0x240D,0x240D,0x240D}, /* 240C */
3490 {0x240E,0x240E,0x240E}, {0x240F,0x240F,0x240F}, /* 240E */
3491 {0x2410,0x2410,0x2410}, {0x2411,0x2411,0x2411}, /* 2410 */
3492 {0x2412,0x2412,0x2412}, {0x2413,0x2413,0x2413}, /* 2412 */
3493 {0x2414,0x2414,0x2414}, {0x2415,0x2415,0x2415}, /* 2414 */
3494 {0x2416,0x2416,0x2416}, {0x2417,0x2417,0x2417}, /* 2416 */
3495 {0x2418,0x2418,0x2418}, {0x2419,0x2419,0x2419}, /* 2418 */
3496 {0x241A,0x241A,0x241A}, {0x241B,0x241B,0x241B}, /* 241A */
3497 {0x241C,0x241C,0x241C}, {0x241D,0x241D,0x241D}, /* 241C */
3498 {0x241E,0x241E,0x241E}, {0x241F,0x241F,0x241F}, /* 241E */
3499 {0x2420,0x2420,0x2420}, {0x2421,0x2421,0x2421}, /* 2420 */
3500 {0x2422,0x2422,0x2422}, {0x2423,0x2423,0x2423}, /* 2422 */
3501 {0x2424,0x2424,0x2424}, {0x2425,0x2425,0x2425}, /* 2424 */
3502 {0x2426,0x2426,0x2426}, {0x2427,0x2427,0x2427}, /* 2426 */
3503 {0x2428,0x2428,0x2428}, {0x2429,0x2429,0x2429}, /* 2428 */
3504 {0x242A,0x242A,0x242A}, {0x242B,0x242B,0x242B}, /* 242A */
3505 {0x242C,0x242C,0x242C}, {0x242D,0x242D,0x242D}, /* 242C */
3506 {0x242E,0x242E,0x242E}, {0x242F,0x242F,0x242F}, /* 242E */
3507 {0x2430,0x2430,0x2430}, {0x2431,0x2431,0x2431}, /* 2430 */
3508 {0x2432,0x2432,0x2432}, {0x2433,0x2433,0x2433}, /* 2432 */
3509 {0x2434,0x2434,0x2434}, {0x2435,0x2435,0x2435}, /* 2434 */
3510 {0x2436,0x2436,0x2436}, {0x2437,0x2437,0x2437}, /* 2436 */
3511 {0x2438,0x2438,0x2438}, {0x2439,0x2439,0x2439}, /* 2438 */
3512 {0x243A,0x243A,0x243A}, {0x243B,0x243B,0x243B}, /* 243A */
3513 {0x243C,0x243C,0x243C}, {0x243D,0x243D,0x243D}, /* 243C */
3514 {0x243E,0x243E,0x243E}, {0x243F,0x243F,0x243F}, /* 243E */
3515 {0x2440,0x2440,0x2440}, {0x2441,0x2441,0x2441}, /* 2440 */
3516 {0x2442,0x2442,0x2442}, {0x2443,0x2443,0x2443}, /* 2442 */
3517 {0x2444,0x2444,0x2444}, {0x2445,0x2445,0x2445}, /* 2444 */
3518 {0x2446,0x2446,0x2446}, {0x2447,0x2447,0x2447}, /* 2446 */
3519 {0x2448,0x2448,0x2448}, {0x2449,0x2449,0x2449}, /* 2448 */
3520 {0x244A,0x244A,0x244A}, {0x244B,0x244B,0x244B}, /* 244A */
3521 {0x244C,0x244C,0x244C}, {0x244D,0x244D,0x244D}, /* 244C */
3522 {0x244E,0x244E,0x244E}, {0x244F,0x244F,0x244F}, /* 244E */
3523 {0x2450,0x2450,0x2450}, {0x2451,0x2451,0x2451}, /* 2450 */
3524 {0x2452,0x2452,0x2452}, {0x2453,0x2453,0x2453}, /* 2452 */
3525 {0x2454,0x2454,0x2454}, {0x2455,0x2455,0x2455}, /* 2454 */
3526 {0x2456,0x2456,0x2456}, {0x2457,0x2457,0x2457}, /* 2456 */
3527 {0x2458,0x2458,0x2458}, {0x2459,0x2459,0x2459}, /* 2458 */
3528 {0x245A,0x245A,0x245A}, {0x245B,0x245B,0x245B}, /* 245A */
3529 {0x245C,0x245C,0x245C}, {0x245D,0x245D,0x245D}, /* 245C */
3530 {0x245E,0x245E,0x245E}, {0x245F,0x245F,0x245F}, /* 245E */
3531 {0x2460,0x2460,0x2460}, {0x2461,0x2461,0x2461}, /* 2460 */
3532 {0x2462,0x2462,0x2462}, {0x2463,0x2463,0x2463}, /* 2462 */
3533 {0x2464,0x2464,0x2464}, {0x2465,0x2465,0x2465}, /* 2464 */
3534 {0x2466,0x2466,0x2466}, {0x2467,0x2467,0x2467}, /* 2466 */
3535 {0x2468,0x2468,0x2468}, {0x2469,0x2469,0x2469}, /* 2468 */
3536 {0x246A,0x246A,0x246A}, {0x246B,0x246B,0x246B}, /* 246A */
3537 {0x246C,0x246C,0x246C}, {0x246D,0x246D,0x246D}, /* 246C */
3538 {0x246E,0x246E,0x246E}, {0x246F,0x246F,0x246F}, /* 246E */
3539 {0x2470,0x2470,0x2470}, {0x2471,0x2471,0x2471}, /* 2470 */
3540 {0x2472,0x2472,0x2472}, {0x2473,0x2473,0x2473}, /* 2472 */
3541 {0x2474,0x2474,0x2474}, {0x2475,0x2475,0x2475}, /* 2474 */
3542 {0x2476,0x2476,0x2476}, {0x2477,0x2477,0x2477}, /* 2476 */
3543 {0x2478,0x2478,0x2478}, {0x2479,0x2479,0x2479}, /* 2478 */
3544 {0x247A,0x247A,0x247A}, {0x247B,0x247B,0x247B}, /* 247A */
3545 {0x247C,0x247C,0x247C}, {0x247D,0x247D,0x247D}, /* 247C */
3546 {0x247E,0x247E,0x247E}, {0x247F,0x247F,0x247F}, /* 247E */
3547 {0x2480,0x2480,0x2480}, {0x2481,0x2481,0x2481}, /* 2480 */
3548 {0x2482,0x2482,0x2482}, {0x2483,0x2483,0x2483}, /* 2482 */
3549 {0x2484,0x2484,0x2484}, {0x2485,0x2485,0x2485}, /* 2484 */
3550 {0x2486,0x2486,0x2486}, {0x2487,0x2487,0x2487}, /* 2486 */
3551 {0x2488,0x2488,0x2488}, {0x2489,0x2489,0x2489}, /* 2488 */
3552 {0x248A,0x248A,0x248A}, {0x248B,0x248B,0x248B}, /* 248A */
3553 {0x248C,0x248C,0x248C}, {0x248D,0x248D,0x248D}, /* 248C */
3554 {0x248E,0x248E,0x248E}, {0x248F,0x248F,0x248F}, /* 248E */
3555 {0x2490,0x2490,0x2490}, {0x2491,0x2491,0x2491}, /* 2490 */
3556 {0x2492,0x2492,0x2492}, {0x2493,0x2493,0x2493}, /* 2492 */
3557 {0x2494,0x2494,0x2494}, {0x2495,0x2495,0x2495}, /* 2494 */
3558 {0x2496,0x2496,0x2496}, {0x2497,0x2497,0x2497}, /* 2496 */
3559 {0x2498,0x2498,0x2498}, {0x2499,0x2499,0x2499}, /* 2498 */
3560 {0x249A,0x249A,0x249A}, {0x249B,0x249B,0x249B}, /* 249A */
3561 {0x249C,0x249C,0x249C}, {0x249D,0x249D,0x249D}, /* 249C */
3562 {0x249E,0x249E,0x249E}, {0x249F,0x249F,0x249F}, /* 249E */
3563 {0x24A0,0x24A0,0x24A0}, {0x24A1,0x24A1,0x24A1}, /* 24A0 */
3564 {0x24A2,0x24A2,0x24A2}, {0x24A3,0x24A3,0x24A3}, /* 24A2 */
3565 {0x24A4,0x24A4,0x24A4}, {0x24A5,0x24A5,0x24A5}, /* 24A4 */
3566 {0x24A6,0x24A6,0x24A6}, {0x24A7,0x24A7,0x24A7}, /* 24A6 */
3567 {0x24A8,0x24A8,0x24A8}, {0x24A9,0x24A9,0x24A9}, /* 24A8 */
3568 {0x24AA,0x24AA,0x24AA}, {0x24AB,0x24AB,0x24AB}, /* 24AA */
3569 {0x24AC,0x24AC,0x24AC}, {0x24AD,0x24AD,0x24AD}, /* 24AC */
3570 {0x24AE,0x24AE,0x24AE}, {0x24AF,0x24AF,0x24AF}, /* 24AE */
3571 {0x24B0,0x24B0,0x24B0}, {0x24B1,0x24B1,0x24B1}, /* 24B0 */
3572 {0x24B2,0x24B2,0x24B2}, {0x24B3,0x24B3,0x24B3}, /* 24B2 */
3573 {0x24B4,0x24B4,0x24B4}, {0x24B5,0x24B5,0x24B5}, /* 24B4 */
3574 {0x24B6,0x24D0,0x24B6}, {0x24B7,0x24D1,0x24B7}, /* 24B6 */
3575 {0x24B8,0x24D2,0x24B8}, {0x24B9,0x24D3,0x24B9}, /* 24B8 */
3576 {0x24BA,0x24D4,0x24BA}, {0x24BB,0x24D5,0x24BB}, /* 24BA */
3577 {0x24BC,0x24D6,0x24BC}, {0x24BD,0x24D7,0x24BD}, /* 24BC */
3578 {0x24BE,0x24D8,0x24BE}, {0x24BF,0x24D9,0x24BF}, /* 24BE */
3579 {0x24C0,0x24DA,0x24C0}, {0x24C1,0x24DB,0x24C1}, /* 24C0 */
3580 {0x24C2,0x24DC,0x24C2}, {0x24C3,0x24DD,0x24C3}, /* 24C2 */
3581 {0x24C4,0x24DE,0x24C4}, {0x24C5,0x24DF,0x24C5}, /* 24C4 */
3582 {0x24C6,0x24E0,0x24C6}, {0x24C7,0x24E1,0x24C7}, /* 24C6 */
3583 {0x24C8,0x24E2,0x24C8}, {0x24C9,0x24E3,0x24C9}, /* 24C8 */
3584 {0x24CA,0x24E4,0x24CA}, {0x24CB,0x24E5,0x24CB}, /* 24CA */
3585 {0x24CC,0x24E6,0x24CC}, {0x24CD,0x24E7,0x24CD}, /* 24CC */
3586 {0x24CE,0x24E8,0x24CE}, {0x24CF,0x24E9,0x24CF}, /* 24CE */
3587 {0x24B6,0x24D0,0x24B6}, {0x24B7,0x24D1,0x24B7}, /* 24D0 */
3588 {0x24B8,0x24D2,0x24B8}, {0x24B9,0x24D3,0x24B9}, /* 24D2 */
3589 {0x24BA,0x24D4,0x24BA}, {0x24BB,0x24D5,0x24BB}, /* 24D4 */
3590 {0x24BC,0x24D6,0x24BC}, {0x24BD,0x24D7,0x24BD}, /* 24D6 */
3591 {0x24BE,0x24D8,0x24BE}, {0x24BF,0x24D9,0x24BF}, /* 24D8 */
3592 {0x24C0,0x24DA,0x24C0}, {0x24C1,0x24DB,0x24C1}, /* 24DA */
3593 {0x24C2,0x24DC,0x24C2}, {0x24C3,0x24DD,0x24C3}, /* 24DC */
3594 {0x24C4,0x24DE,0x24C4}, {0x24C5,0x24DF,0x24C5}, /* 24DE */
3595 {0x24C6,0x24E0,0x24C6}, {0x24C7,0x24E1,0x24C7}, /* 24E0 */
3596 {0x24C8,0x24E2,0x24C8}, {0x24C9,0x24E3,0x24C9}, /* 24E2 */
3597 {0x24CA,0x24E4,0x24CA}, {0x24CB,0x24E5,0x24CB}, /* 24E4 */
3598 {0x24CC,0x24E6,0x24CC}, {0x24CD,0x24E7,0x24CD}, /* 24E6 */
3599 {0x24CE,0x24E8,0x24CE}, {0x24CF,0x24E9,0x24CF}, /* 24E8 */
3600 {0x24EA,0x24EA,0x24EA}, {0x24EB,0x24EB,0x24EB}, /* 24EA */
3601 {0x24EC,0x24EC,0x24EC}, {0x24ED,0x24ED,0x24ED}, /* 24EC */
3602 {0x24EE,0x24EE,0x24EE}, {0x24EF,0x24EF,0x24EF}, /* 24EE */
3603 {0x24F0,0x24F0,0x24F0}, {0x24F1,0x24F1,0x24F1}, /* 24F0 */
3604 {0x24F2,0x24F2,0x24F2}, {0x24F3,0x24F3,0x24F3}, /* 24F2 */
3605 {0x24F4,0x24F4,0x24F4}, {0x24F5,0x24F5,0x24F5}, /* 24F4 */
3606 {0x24F6,0x24F6,0x24F6}, {0x24F7,0x24F7,0x24F7}, /* 24F6 */
3607 {0x24F8,0x24F8,0x24F8}, {0x24F9,0x24F9,0x24F9}, /* 24F8 */
3608 {0x24FA,0x24FA,0x24FA}, {0x24FB,0x24FB,0x24FB}, /* 24FA */
3609 {0x24FC,0x24FC,0x24FC}, {0x24FD,0x24FD,0x24FD}, /* 24FC */
3610 {0x24FE,0x24FE,0x24FE}, {0x24FF,0x24FF,0x24FF} /* 24FE */
3611};
3612
3613static MY_UNICASE_CHARACTER u520p2C[]={
3614 {0x2C00,0x2C30,0x2C00}, {0x2C01,0x2C31,0x2C01}, /* 2C00 */
3615 {0x2C02,0x2C32,0x2C02}, {0x2C03,0x2C33,0x2C03}, /* 2C02 */
3616 {0x2C04,0x2C34,0x2C04}, {0x2C05,0x2C35,0x2C05}, /* 2C04 */
3617 {0x2C06,0x2C36,0x2C06}, {0x2C07,0x2C37,0x2C07}, /* 2C06 */
3618 {0x2C08,0x2C38,0x2C08}, {0x2C09,0x2C39,0x2C09}, /* 2C08 */
3619 {0x2C0A,0x2C3A,0x2C0A}, {0x2C0B,0x2C3B,0x2C0B}, /* 2C0A */
3620 {0x2C0C,0x2C3C,0x2C0C}, {0x2C0D,0x2C3D,0x2C0D}, /* 2C0C */
3621 {0x2C0E,0x2C3E,0x2C0E}, {0x2C0F,0x2C3F,0x2C0F}, /* 2C0E */
3622 {0x2C10,0x2C40,0x2C10}, {0x2C11,0x2C41,0x2C11}, /* 2C10 */
3623 {0x2C12,0x2C42,0x2C12}, {0x2C13,0x2C43,0x2C13}, /* 2C12 */
3624 {0x2C14,0x2C44,0x2C14}, {0x2C15,0x2C45,0x2C15}, /* 2C14 */
3625 {0x2C16,0x2C46,0x2C16}, {0x2C17,0x2C47,0x2C17}, /* 2C16 */
3626 {0x2C18,0x2C48,0x2C18}, {0x2C19,0x2C49,0x2C19}, /* 2C18 */
3627 {0x2C1A,0x2C4A,0x2C1A}, {0x2C1B,0x2C4B,0x2C1B}, /* 2C1A */
3628 {0x2C1C,0x2C4C,0x2C1C}, {0x2C1D,0x2C4D,0x2C1D}, /* 2C1C */
3629 {0x2C1E,0x2C4E,0x2C1E}, {0x2C1F,0x2C4F,0x2C1F}, /* 2C1E */
3630 {0x2C20,0x2C50,0x2C20}, {0x2C21,0x2C51,0x2C21}, /* 2C20 */
3631 {0x2C22,0x2C52,0x2C22}, {0x2C23,0x2C53,0x2C23}, /* 2C22 */
3632 {0x2C24,0x2C54,0x2C24}, {0x2C25,0x2C55,0x2C25}, /* 2C24 */
3633 {0x2C26,0x2C56,0x2C26}, {0x2C27,0x2C57,0x2C27}, /* 2C26 */
3634 {0x2C28,0x2C58,0x2C28}, {0x2C29,0x2C59,0x2C29}, /* 2C28 */
3635 {0x2C2A,0x2C5A,0x2C2A}, {0x2C2B,0x2C5B,0x2C2B}, /* 2C2A */
3636 {0x2C2C,0x2C5C,0x2C2C}, {0x2C2D,0x2C5D,0x2C2D}, /* 2C2C */
3637 {0x2C2E,0x2C5E,0x2C2E}, {0x2C2F,0x2C2F,0x2C2F}, /* 2C2E */
3638 {0x2C00,0x2C30,0x2C00}, {0x2C01,0x2C31,0x2C01}, /* 2C30 */
3639 {0x2C02,0x2C32,0x2C02}, {0x2C03,0x2C33,0x2C03}, /* 2C32 */
3640 {0x2C04,0x2C34,0x2C04}, {0x2C05,0x2C35,0x2C05}, /* 2C34 */
3641 {0x2C06,0x2C36,0x2C06}, {0x2C07,0x2C37,0x2C07}, /* 2C36 */
3642 {0x2C08,0x2C38,0x2C08}, {0x2C09,0x2C39,0x2C09}, /* 2C38 */
3643 {0x2C0A,0x2C3A,0x2C0A}, {0x2C0B,0x2C3B,0x2C0B}, /* 2C3A */
3644 {0x2C0C,0x2C3C,0x2C0C}, {0x2C0D,0x2C3D,0x2C0D}, /* 2C3C */
3645 {0x2C0E,0x2C3E,0x2C0E}, {0x2C0F,0x2C3F,0x2C0F}, /* 2C3E */
3646 {0x2C10,0x2C40,0x2C10}, {0x2C11,0x2C41,0x2C11}, /* 2C40 */
3647 {0x2C12,0x2C42,0x2C12}, {0x2C13,0x2C43,0x2C13}, /* 2C42 */
3648 {0x2C14,0x2C44,0x2C14}, {0x2C15,0x2C45,0x2C15}, /* 2C44 */
3649 {0x2C16,0x2C46,0x2C16}, {0x2C17,0x2C47,0x2C17}, /* 2C46 */
3650 {0x2C18,0x2C48,0x2C18}, {0x2C19,0x2C49,0x2C19}, /* 2C48 */
3651 {0x2C1A,0x2C4A,0x2C1A}, {0x2C1B,0x2C4B,0x2C1B}, /* 2C4A */
3652 {0x2C1C,0x2C4C,0x2C1C}, {0x2C1D,0x2C4D,0x2C1D}, /* 2C4C */
3653 {0x2C1E,0x2C4E,0x2C1E}, {0x2C1F,0x2C4F,0x2C1F}, /* 2C4E */
3654 {0x2C20,0x2C50,0x2C20}, {0x2C21,0x2C51,0x2C21}, /* 2C50 */
3655 {0x2C22,0x2C52,0x2C22}, {0x2C23,0x2C53,0x2C23}, /* 2C52 */
3656 {0x2C24,0x2C54,0x2C24}, {0x2C25,0x2C55,0x2C25}, /* 2C54 */
3657 {0x2C26,0x2C56,0x2C26}, {0x2C27,0x2C57,0x2C27}, /* 2C56 */
3658 {0x2C28,0x2C58,0x2C28}, {0x2C29,0x2C59,0x2C29}, /* 2C58 */
3659 {0x2C2A,0x2C5A,0x2C2A}, {0x2C2B,0x2C5B,0x2C2B}, /* 2C5A */
3660 {0x2C2C,0x2C5C,0x2C2C}, {0x2C2D,0x2C5D,0x2C2D}, /* 2C5C */
3661 {0x2C2E,0x2C5E,0x2C2E}, {0x2C5F,0x2C5F,0x2C5F}, /* 2C5E */
3662 {0x2C60,0x2C61,0x2C60}, {0x2C60,0x2C61,0x2C60}, /* 2C60 */
3663 {0x2C62,0x026B,0x2C62}, {0x2C63,0x1D7D,0x2C63}, /* 2C62 */
3664 {0x2C64,0x027D,0x2C64}, {0x023A,0x2C65,0x023A}, /* 2C64 */
3665 {0x023E,0x2C66,0x023E}, {0x2C67,0x2C68,0x2C67}, /* 2C66 */
3666 {0x2C67,0x2C68,0x2C67}, {0x2C69,0x2C6A,0x2C69}, /* 2C68 */
3667 {0x2C69,0x2C6A,0x2C69}, {0x2C6B,0x2C6C,0x2C6B}, /* 2C6A */
3668 {0x2C6B,0x2C6C,0x2C6B}, {0x2C6D,0x0251,0x2C6D}, /* 2C6C */
3669 {0x2C6E,0x0271,0x2C6E}, {0x2C6F,0x0250,0x2C6F}, /* 2C6E */
3670 {0x2C70,0x0252,0x2C70}, {0x2C71,0x2C71,0x2C71}, /* 2C70 */
3671 {0x2C72,0x2C73,0x2C72}, {0x2C72,0x2C73,0x2C72}, /* 2C72 */
3672 {0x2C74,0x2C74,0x2C74}, {0x2C75,0x2C76,0x2C75}, /* 2C74 */
3673 {0x2C75,0x2C76,0x2C75}, {0x2C77,0x2C77,0x2C77}, /* 2C76 */
3674 {0x2C78,0x2C78,0x2C78}, {0x2C79,0x2C79,0x2C79}, /* 2C78 */
3675 {0x2C7A,0x2C7A,0x2C7A}, {0x2C7B,0x2C7B,0x2C7B}, /* 2C7A */
3676 {0x2C7C,0x2C7C,0x2C7C}, {0x2C7D,0x2C7D,0x2C7D}, /* 2C7C */
3677 {0x2C7E,0x023F,0x2C7E}, {0x2C7F,0x0240,0x2C7F}, /* 2C7E */
3678 {0x2C80,0x2C81,0x2C80}, {0x2C80,0x2C81,0x2C80}, /* 2C80 */
3679 {0x2C82,0x2C83,0x2C82}, {0x2C82,0x2C83,0x2C82}, /* 2C82 */
3680 {0x2C84,0x2C85,0x2C84}, {0x2C84,0x2C85,0x2C84}, /* 2C84 */
3681 {0x2C86,0x2C87,0x2C86}, {0x2C86,0x2C87,0x2C86}, /* 2C86 */
3682 {0x2C88,0x2C89,0x2C88}, {0x2C88,0x2C89,0x2C88}, /* 2C88 */
3683 {0x2C8A,0x2C8B,0x2C8A}, {0x2C8A,0x2C8B,0x2C8A}, /* 2C8A */
3684 {0x2C8C,0x2C8D,0x2C8C}, {0x2C8C,0x2C8D,0x2C8C}, /* 2C8C */
3685 {0x2C8E,0x2C8F,0x2C8E}, {0x2C8E,0x2C8F,0x2C8E}, /* 2C8E */
3686 {0x2C90,0x2C91,0x2C90}, {0x2C90,0x2C91,0x2C90}, /* 2C90 */
3687 {0x2C92,0x2C93,0x2C92}, {0x2C92,0x2C93,0x2C92}, /* 2C92 */
3688 {0x2C94,0x2C95,0x2C94}, {0x2C94,0x2C95,0x2C94}, /* 2C94 */
3689 {0x2C96,0x2C97,0x2C96}, {0x2C96,0x2C97,0x2C96}, /* 2C96 */
3690 {0x2C98,0x2C99,0x2C98}, {0x2C98,0x2C99,0x2C98}, /* 2C98 */
3691 {0x2C9A,0x2C9B,0x2C9A}, {0x2C9A,0x2C9B,0x2C9A}, /* 2C9A */
3692 {0x2C9C,0x2C9D,0x2C9C}, {0x2C9C,0x2C9D,0x2C9C}, /* 2C9C */
3693 {0x2C9E,0x2C9F,0x2C9E}, {0x2C9E,0x2C9F,0x2C9E}, /* 2C9E */
3694 {0x2CA0,0x2CA1,0x2CA0}, {0x2CA0,0x2CA1,0x2CA0}, /* 2CA0 */
3695 {0x2CA2,0x2CA3,0x2CA2}, {0x2CA2,0x2CA3,0x2CA2}, /* 2CA2 */
3696 {0x2CA4,0x2CA5,0x2CA4}, {0x2CA4,0x2CA5,0x2CA4}, /* 2CA4 */
3697 {0x2CA6,0x2CA7,0x2CA6}, {0x2CA6,0x2CA7,0x2CA6}, /* 2CA6 */
3698 {0x2CA8,0x2CA9,0x2CA8}, {0x2CA8,0x2CA9,0x2CA8}, /* 2CA8 */
3699 {0x2CAA,0x2CAB,0x2CAA}, {0x2CAA,0x2CAB,0x2CAA}, /* 2CAA */
3700 {0x2CAC,0x2CAD,0x2CAC}, {0x2CAC,0x2CAD,0x2CAC}, /* 2CAC */
3701 {0x2CAE,0x2CAF,0x2CAE}, {0x2CAE,0x2CAF,0x2CAE}, /* 2CAE */
3702 {0x2CB0,0x2CB1,0x2CB0}, {0x2CB0,0x2CB1,0x2CB0}, /* 2CB0 */
3703 {0x2CB2,0x2CB3,0x2CB2}, {0x2CB2,0x2CB3,0x2CB2}, /* 2CB2 */
3704 {0x2CB4,0x2CB5,0x2CB4}, {0x2CB4,0x2CB5,0x2CB4}, /* 2CB4 */
3705 {0x2CB6,0x2CB7,0x2CB6}, {0x2CB6,0x2CB7,0x2CB6}, /* 2CB6 */
3706 {0x2CB8,0x2CB9,0x2CB8}, {0x2CB8,0x2CB9,0x2CB8}, /* 2CB8 */
3707 {0x2CBA,0x2CBB,0x2CBA}, {0x2CBA,0x2CBB,0x2CBA}, /* 2CBA */
3708 {0x2CBC,0x2CBD,0x2CBC}, {0x2CBC,0x2CBD,0x2CBC}, /* 2CBC */
3709 {0x2CBE,0x2CBF,0x2CBE}, {0x2CBE,0x2CBF,0x2CBE}, /* 2CBE */
3710 {0x2CC0,0x2CC1,0x2CC0}, {0x2CC0,0x2CC1,0x2CC0}, /* 2CC0 */
3711 {0x2CC2,0x2CC3,0x2CC2}, {0x2CC2,0x2CC3,0x2CC2}, /* 2CC2 */
3712 {0x2CC4,0x2CC5,0x2CC4}, {0x2CC4,0x2CC5,0x2CC4}, /* 2CC4 */
3713 {0x2CC6,0x2CC7,0x2CC6}, {0x2CC6,0x2CC7,0x2CC6}, /* 2CC6 */
3714 {0x2CC8,0x2CC9,0x2CC8}, {0x2CC8,0x2CC9,0x2CC8}, /* 2CC8 */
3715 {0x2CCA,0x2CCB,0x2CCA}, {0x2CCA,0x2CCB,0x2CCA}, /* 2CCA */
3716 {0x2CCC,0x2CCD,0x2CCC}, {0x2CCC,0x2CCD,0x2CCC}, /* 2CCC */
3717 {0x2CCE,0x2CCF,0x2CCE}, {0x2CCE,0x2CCF,0x2CCE}, /* 2CCE */
3718 {0x2CD0,0x2CD1,0x2CD0}, {0x2CD0,0x2CD1,0x2CD0}, /* 2CD0 */
3719 {0x2CD2,0x2CD3,0x2CD2}, {0x2CD2,0x2CD3,0x2CD2}, /* 2CD2 */
3720 {0x2CD4,0x2CD5,0x2CD4}, {0x2CD4,0x2CD5,0x2CD4}, /* 2CD4 */
3721 {0x2CD6,0x2CD7,0x2CD6}, {0x2CD6,0x2CD7,0x2CD6}, /* 2CD6 */
3722 {0x2CD8,0x2CD9,0x2CD8}, {0x2CD8,0x2CD9,0x2CD8}, /* 2CD8 */
3723 {0x2CDA,0x2CDB,0x2CDA}, {0x2CDA,0x2CDB,0x2CDA}, /* 2CDA */
3724 {0x2CDC,0x2CDD,0x2CDC}, {0x2CDC,0x2CDD,0x2CDC}, /* 2CDC */
3725 {0x2CDE,0x2CDF,0x2CDE}, {0x2CDE,0x2CDF,0x2CDE}, /* 2CDE */
3726 {0x2CE0,0x2CE1,0x2CE0}, {0x2CE0,0x2CE1,0x2CE0}, /* 2CE0 */
3727 {0x2CE2,0x2CE3,0x2CE2}, {0x2CE2,0x2CE3,0x2CE2}, /* 2CE2 */
3728 {0x2CE4,0x2CE4,0x2CE4}, {0x2CE5,0x2CE5,0x2CE5}, /* 2CE4 */
3729 {0x2CE6,0x2CE6,0x2CE6}, {0x2CE7,0x2CE7,0x2CE7}, /* 2CE6 */
3730 {0x2CE8,0x2CE8,0x2CE8}, {0x2CE9,0x2CE9,0x2CE9}, /* 2CE8 */
3731 {0x2CEA,0x2CEA,0x2CEA}, {0x2CEB,0x2CEC,0x2CEB}, /* 2CEA */
3732 {0x2CEB,0x2CEC,0x2CEB}, {0x2CED,0x2CEE,0x2CED}, /* 2CEC */
3733 {0x2CED,0x2CEE,0x2CED}, {0x2CEF,0x2CEF,0x2CEF}, /* 2CEE */
3734 {0x2CF0,0x2CF0,0x2CF0}, {0x2CF1,0x2CF1,0x2CF1}, /* 2CF0 */
3735 {0x2CF2,0x2CF2,0x2CF2}, {0x2CF3,0x2CF3,0x2CF3}, /* 2CF2 */
3736 {0x2CF4,0x2CF4,0x2CF4}, {0x2CF5,0x2CF5,0x2CF5}, /* 2CF4 */
3737 {0x2CF6,0x2CF6,0x2CF6}, {0x2CF7,0x2CF7,0x2CF7}, /* 2CF6 */
3738 {0x2CF8,0x2CF8,0x2CF8}, {0x2CF9,0x2CF9,0x2CF9}, /* 2CF8 */
3739 {0x2CFA,0x2CFA,0x2CFA}, {0x2CFB,0x2CFB,0x2CFB}, /* 2CFA */
3740 {0x2CFC,0x2CFC,0x2CFC}, {0x2CFD,0x2CFD,0x2CFD}, /* 2CFC */
3741 {0x2CFE,0x2CFE,0x2CFE}, {0x2CFF,0x2CFF,0x2CFF} /* 2CFE */
3742};
3743
3744static MY_UNICASE_CHARACTER u520p2D[]={
3745 {0x10A0,0x2D00,0x10A0}, {0x10A1,0x2D01,0x10A1}, /* 2D00 */
3746 {0x10A2,0x2D02,0x10A2}, {0x10A3,0x2D03,0x10A3}, /* 2D02 */
3747 {0x10A4,0x2D04,0x10A4}, {0x10A5,0x2D05,0x10A5}, /* 2D04 */
3748 {0x10A6,0x2D06,0x10A6}, {0x10A7,0x2D07,0x10A7}, /* 2D06 */
3749 {0x10A8,0x2D08,0x10A8}, {0x10A9,0x2D09,0x10A9}, /* 2D08 */
3750 {0x10AA,0x2D0A,0x10AA}, {0x10AB,0x2D0B,0x10AB}, /* 2D0A */
3751 {0x10AC,0x2D0C,0x10AC}, {0x10AD,0x2D0D,0x10AD}, /* 2D0C */
3752 {0x10AE,0x2D0E,0x10AE}, {0x10AF,0x2D0F,0x10AF}, /* 2D0E */
3753 {0x10B0,0x2D10,0x10B0}, {0x10B1,0x2D11,0x10B1}, /* 2D10 */
3754 {0x10B2,0x2D12,0x10B2}, {0x10B3,0x2D13,0x10B3}, /* 2D12 */
3755 {0x10B4,0x2D14,0x10B4}, {0x10B5,0x2D15,0x10B5}, /* 2D14 */
3756 {0x10B6,0x2D16,0x10B6}, {0x10B7,0x2D17,0x10B7}, /* 2D16 */
3757 {0x10B8,0x2D18,0x10B8}, {0x10B9,0x2D19,0x10B9}, /* 2D18 */
3758 {0x10BA,0x2D1A,0x10BA}, {0x10BB,0x2D1B,0x10BB}, /* 2D1A */
3759 {0x10BC,0x2D1C,0x10BC}, {0x10BD,0x2D1D,0x10BD}, /* 2D1C */
3760 {0x10BE,0x2D1E,0x10BE}, {0x10BF,0x2D1F,0x10BF}, /* 2D1E */
3761 {0x10C0,0x2D20,0x10C0}, {0x10C1,0x2D21,0x10C1}, /* 2D20 */
3762 {0x10C2,0x2D22,0x10C2}, {0x10C3,0x2D23,0x10C3}, /* 2D22 */
3763 {0x10C4,0x2D24,0x10C4}, {0x10C5,0x2D25,0x10C5}, /* 2D24 */
3764 {0x2D26,0x2D26,0x2D26}, {0x2D27,0x2D27,0x2D27}, /* 2D26 */
3765 {0x2D28,0x2D28,0x2D28}, {0x2D29,0x2D29,0x2D29}, /* 2D28 */
3766 {0x2D2A,0x2D2A,0x2D2A}, {0x2D2B,0x2D2B,0x2D2B}, /* 2D2A */
3767 {0x2D2C,0x2D2C,0x2D2C}, {0x2D2D,0x2D2D,0x2D2D}, /* 2D2C */
3768 {0x2D2E,0x2D2E,0x2D2E}, {0x2D2F,0x2D2F,0x2D2F}, /* 2D2E */
3769 {0x2D30,0x2D30,0x2D30}, {0x2D31,0x2D31,0x2D31}, /* 2D30 */
3770 {0x2D32,0x2D32,0x2D32}, {0x2D33,0x2D33,0x2D33}, /* 2D32 */
3771 {0x2D34,0x2D34,0x2D34}, {0x2D35,0x2D35,0x2D35}, /* 2D34 */
3772 {0x2D36,0x2D36,0x2D36}, {0x2D37,0x2D37,0x2D37}, /* 2D36 */
3773 {0x2D38,0x2D38,0x2D38}, {0x2D39,0x2D39,0x2D39}, /* 2D38 */
3774 {0x2D3A,0x2D3A,0x2D3A}, {0x2D3B,0x2D3B,0x2D3B}, /* 2D3A */
3775 {0x2D3C,0x2D3C,0x2D3C}, {0x2D3D,0x2D3D,0x2D3D}, /* 2D3C */
3776 {0x2D3E,0x2D3E,0x2D3E}, {0x2D3F,0x2D3F,0x2D3F}, /* 2D3E */
3777 {0x2D40,0x2D40,0x2D40}, {0x2D41,0x2D41,0x2D41}, /* 2D40 */
3778 {0x2D42,0x2D42,0x2D42}, {0x2D43,0x2D43,0x2D43}, /* 2D42 */
3779 {0x2D44,0x2D44,0x2D44}, {0x2D45,0x2D45,0x2D45}, /* 2D44 */
3780 {0x2D46,0x2D46,0x2D46}, {0x2D47,0x2D47,0x2D47}, /* 2D46 */
3781 {0x2D48,0x2D48,0x2D48}, {0x2D49,0x2D49,0x2D49}, /* 2D48 */
3782 {0x2D4A,0x2D4A,0x2D4A}, {0x2D4B,0x2D4B,0x2D4B}, /* 2D4A */
3783 {0x2D4C,0x2D4C,0x2D4C}, {0x2D4D,0x2D4D,0x2D4D}, /* 2D4C */
3784 {0x2D4E,0x2D4E,0x2D4E}, {0x2D4F,0x2D4F,0x2D4F}, /* 2D4E */
3785 {0x2D50,0x2D50,0x2D50}, {0x2D51,0x2D51,0x2D51}, /* 2D50 */
3786 {0x2D52,0x2D52,0x2D52}, {0x2D53,0x2D53,0x2D53}, /* 2D52 */
3787 {0x2D54,0x2D54,0x2D54}, {0x2D55,0x2D55,0x2D55}, /* 2D54 */
3788 {0x2D56,0x2D56,0x2D56}, {0x2D57,0x2D57,0x2D57}, /* 2D56 */
3789 {0x2D58,0x2D58,0x2D58}, {0x2D59,0x2D59,0x2D59}, /* 2D58 */
3790 {0x2D5A,0x2D5A,0x2D5A}, {0x2D5B,0x2D5B,0x2D5B}, /* 2D5A */
3791 {0x2D5C,0x2D5C,0x2D5C}, {0x2D5D,0x2D5D,0x2D5D}, /* 2D5C */
3792 {0x2D5E,0x2D5E,0x2D5E}, {0x2D5F,0x2D5F,0x2D5F}, /* 2D5E */
3793 {0x2D60,0x2D60,0x2D60}, {0x2D61,0x2D61,0x2D61}, /* 2D60 */
3794 {0x2D62,0x2D62,0x2D62}, {0x2D63,0x2D63,0x2D63}, /* 2D62 */
3795 {0x2D64,0x2D64,0x2D64}, {0x2D65,0x2D65,0x2D65}, /* 2D64 */
3796 {0x2D66,0x2D66,0x2D66}, {0x2D67,0x2D67,0x2D67}, /* 2D66 */
3797 {0x2D68,0x2D68,0x2D68}, {0x2D69,0x2D69,0x2D69}, /* 2D68 */
3798 {0x2D6A,0x2D6A,0x2D6A}, {0x2D6B,0x2D6B,0x2D6B}, /* 2D6A */
3799 {0x2D6C,0x2D6C,0x2D6C}, {0x2D6D,0x2D6D,0x2D6D}, /* 2D6C */
3800 {0x2D6E,0x2D6E,0x2D6E}, {0x2D6F,0x2D6F,0x2D6F}, /* 2D6E */
3801 {0x2D70,0x2D70,0x2D70}, {0x2D71,0x2D71,0x2D71}, /* 2D70 */
3802 {0x2D72,0x2D72,0x2D72}, {0x2D73,0x2D73,0x2D73}, /* 2D72 */
3803 {0x2D74,0x2D74,0x2D74}, {0x2D75,0x2D75,0x2D75}, /* 2D74 */
3804 {0x2D76,0x2D76,0x2D76}, {0x2D77,0x2D77,0x2D77}, /* 2D76 */
3805 {0x2D78,0x2D78,0x2D78}, {0x2D79,0x2D79,0x2D79}, /* 2D78 */
3806 {0x2D7A,0x2D7A,0x2D7A}, {0x2D7B,0x2D7B,0x2D7B}, /* 2D7A */
3807 {0x2D7C,0x2D7C,0x2D7C}, {0x2D7D,0x2D7D,0x2D7D}, /* 2D7C */
3808 {0x2D7E,0x2D7E,0x2D7E}, {0x2D7F,0x2D7F,0x2D7F}, /* 2D7E */
3809 {0x2D80,0x2D80,0x2D80}, {0x2D81,0x2D81,0x2D81}, /* 2D80 */
3810 {0x2D82,0x2D82,0x2D82}, {0x2D83,0x2D83,0x2D83}, /* 2D82 */
3811 {0x2D84,0x2D84,0x2D84}, {0x2D85,0x2D85,0x2D85}, /* 2D84 */
3812 {0x2D86,0x2D86,0x2D86}, {0x2D87,0x2D87,0x2D87}, /* 2D86 */
3813 {0x2D88,0x2D88,0x2D88}, {0x2D89,0x2D89,0x2D89}, /* 2D88 */
3814 {0x2D8A,0x2D8A,0x2D8A}, {0x2D8B,0x2D8B,0x2D8B}, /* 2D8A */
3815 {0x2D8C,0x2D8C,0x2D8C}, {0x2D8D,0x2D8D,0x2D8D}, /* 2D8C */
3816 {0x2D8E,0x2D8E,0x2D8E}, {0x2D8F,0x2D8F,0x2D8F}, /* 2D8E */
3817 {0x2D90,0x2D90,0x2D90}, {0x2D91,0x2D91,0x2D91}, /* 2D90 */
3818 {0x2D92,0x2D92,0x2D92}, {0x2D93,0x2D93,0x2D93}, /* 2D92 */
3819 {0x2D94,0x2D94,0x2D94}, {0x2D95,0x2D95,0x2D95}, /* 2D94 */
3820 {0x2D96,0x2D96,0x2D96}, {0x2D97,0x2D97,0x2D97}, /* 2D96 */
3821 {0x2D98,0x2D98,0x2D98}, {0x2D99,0x2D99,0x2D99}, /* 2D98 */
3822 {0x2D9A,0x2D9A,0x2D9A}, {0x2D9B,0x2D9B,0x2D9B}, /* 2D9A */
3823 {0x2D9C,0x2D9C,0x2D9C}, {0x2D9D,0x2D9D,0x2D9D}, /* 2D9C */
3824 {0x2D9E,0x2D9E,0x2D9E}, {0x2D9F,0x2D9F,0x2D9F}, /* 2D9E */
3825 {0x2DA0,0x2DA0,0x2DA0}, {0x2DA1,0x2DA1,0x2DA1}, /* 2DA0 */
3826 {0x2DA2,0x2DA2,0x2DA2}, {0x2DA3,0x2DA3,0x2DA3}, /* 2DA2 */
3827 {0x2DA4,0x2DA4,0x2DA4}, {0x2DA5,0x2DA5,0x2DA5}, /* 2DA4 */
3828 {0x2DA6,0x2DA6,0x2DA6}, {0x2DA7,0x2DA7,0x2DA7}, /* 2DA6 */
3829 {0x2DA8,0x2DA8,0x2DA8}, {0x2DA9,0x2DA9,0x2DA9}, /* 2DA8 */
3830 {0x2DAA,0x2DAA,0x2DAA}, {0x2DAB,0x2DAB,0x2DAB}, /* 2DAA */
3831 {0x2DAC,0x2DAC,0x2DAC}, {0x2DAD,0x2DAD,0x2DAD}, /* 2DAC */
3832 {0x2DAE,0x2DAE,0x2DAE}, {0x2DAF,0x2DAF,0x2DAF}, /* 2DAE */
3833 {0x2DB0,0x2DB0,0x2DB0}, {0x2DB1,0x2DB1,0x2DB1}, /* 2DB0 */
3834 {0x2DB2,0x2DB2,0x2DB2}, {0x2DB3,0x2DB3,0x2DB3}, /* 2DB2 */
3835 {0x2DB4,0x2DB4,0x2DB4}, {0x2DB5,0x2DB5,0x2DB5}, /* 2DB4 */
3836 {0x2DB6,0x2DB6,0x2DB6}, {0x2DB7,0x2DB7,0x2DB7}, /* 2DB6 */
3837 {0x2DB8,0x2DB8,0x2DB8}, {0x2DB9,0x2DB9,0x2DB9}, /* 2DB8 */
3838 {0x2DBA,0x2DBA,0x2DBA}, {0x2DBB,0x2DBB,0x2DBB}, /* 2DBA */
3839 {0x2DBC,0x2DBC,0x2DBC}, {0x2DBD,0x2DBD,0x2DBD}, /* 2DBC */
3840 {0x2DBE,0x2DBE,0x2DBE}, {0x2DBF,0x2DBF,0x2DBF}, /* 2DBE */
3841 {0x2DC0,0x2DC0,0x2DC0}, {0x2DC1,0x2DC1,0x2DC1}, /* 2DC0 */
3842 {0x2DC2,0x2DC2,0x2DC2}, {0x2DC3,0x2DC3,0x2DC3}, /* 2DC2 */
3843 {0x2DC4,0x2DC4,0x2DC4}, {0x2DC5,0x2DC5,0x2DC5}, /* 2DC4 */
3844 {0x2DC6,0x2DC6,0x2DC6}, {0x2DC7,0x2DC7,0x2DC7}, /* 2DC6 */
3845 {0x2DC8,0x2DC8,0x2DC8}, {0x2DC9,0x2DC9,0x2DC9}, /* 2DC8 */
3846 {0x2DCA,0x2DCA,0x2DCA}, {0x2DCB,0x2DCB,0x2DCB}, /* 2DCA */
3847 {0x2DCC,0x2DCC,0x2DCC}, {0x2DCD,0x2DCD,0x2DCD}, /* 2DCC */
3848 {0x2DCE,0x2DCE,0x2DCE}, {0x2DCF,0x2DCF,0x2DCF}, /* 2DCE */
3849 {0x2DD0,0x2DD0,0x2DD0}, {0x2DD1,0x2DD1,0x2DD1}, /* 2DD0 */
3850 {0x2DD2,0x2DD2,0x2DD2}, {0x2DD3,0x2DD3,0x2DD3}, /* 2DD2 */
3851 {0x2DD4,0x2DD4,0x2DD4}, {0x2DD5,0x2DD5,0x2DD5}, /* 2DD4 */
3852 {0x2DD6,0x2DD6,0x2DD6}, {0x2DD7,0x2DD7,0x2DD7}, /* 2DD6 */
3853 {0x2DD8,0x2DD8,0x2DD8}, {0x2DD9,0x2DD9,0x2DD9}, /* 2DD8 */
3854 {0x2DDA,0x2DDA,0x2DDA}, {0x2DDB,0x2DDB,0x2DDB}, /* 2DDA */
3855 {0x2DDC,0x2DDC,0x2DDC}, {0x2DDD,0x2DDD,0x2DDD}, /* 2DDC */
3856 {0x2DDE,0x2DDE,0x2DDE}, {0x2DDF,0x2DDF,0x2DDF}, /* 2DDE */
3857 {0x2DE0,0x2DE0,0x2DE0}, {0x2DE1,0x2DE1,0x2DE1}, /* 2DE0 */
3858 {0x2DE2,0x2DE2,0x2DE2}, {0x2DE3,0x2DE3,0x2DE3}, /* 2DE2 */
3859 {0x2DE4,0x2DE4,0x2DE4}, {0x2DE5,0x2DE5,0x2DE5}, /* 2DE4 */
3860 {0x2DE6,0x2DE6,0x2DE6}, {0x2DE7,0x2DE7,0x2DE7}, /* 2DE6 */
3861 {0x2DE8,0x2DE8,0x2DE8}, {0x2DE9,0x2DE9,0x2DE9}, /* 2DE8 */
3862 {0x2DEA,0x2DEA,0x2DEA}, {0x2DEB,0x2DEB,0x2DEB}, /* 2DEA */
3863 {0x2DEC,0x2DEC,0x2DEC}, {0x2DED,0x2DED,0x2DED}, /* 2DEC */
3864 {0x2DEE,0x2DEE,0x2DEE}, {0x2DEF,0x2DEF,0x2DEF}, /* 2DEE */
3865 {0x2DF0,0x2DF0,0x2DF0}, {0x2DF1,0x2DF1,0x2DF1}, /* 2DF0 */
3866 {0x2DF2,0x2DF2,0x2DF2}, {0x2DF3,0x2DF3,0x2DF3}, /* 2DF2 */
3867 {0x2DF4,0x2DF4,0x2DF4}, {0x2DF5,0x2DF5,0x2DF5}, /* 2DF4 */
3868 {0x2DF6,0x2DF6,0x2DF6}, {0x2DF7,0x2DF7,0x2DF7}, /* 2DF6 */
3869 {0x2DF8,0x2DF8,0x2DF8}, {0x2DF9,0x2DF9,0x2DF9}, /* 2DF8 */
3870 {0x2DFA,0x2DFA,0x2DFA}, {0x2DFB,0x2DFB,0x2DFB}, /* 2DFA */
3871 {0x2DFC,0x2DFC,0x2DFC}, {0x2DFD,0x2DFD,0x2DFD}, /* 2DFC */
3872 {0x2DFE,0x2DFE,0x2DFE}, {0x2DFF,0x2DFF,0x2DFF} /* 2DFE */
3873};
3874
3875static MY_UNICASE_CHARACTER u520pA6[]={
3876 {0xA600,0xA600,0xA600}, {0xA601,0xA601,0xA601}, /* A600 */
3877 {0xA602,0xA602,0xA602}, {0xA603,0xA603,0xA603}, /* A602 */
3878 {0xA604,0xA604,0xA604}, {0xA605,0xA605,0xA605}, /* A604 */
3879 {0xA606,0xA606,0xA606}, {0xA607,0xA607,0xA607}, /* A606 */
3880 {0xA608,0xA608,0xA608}, {0xA609,0xA609,0xA609}, /* A608 */
3881 {0xA60A,0xA60A,0xA60A}, {0xA60B,0xA60B,0xA60B}, /* A60A */
3882 {0xA60C,0xA60C,0xA60C}, {0xA60D,0xA60D,0xA60D}, /* A60C */
3883 {0xA60E,0xA60E,0xA60E}, {0xA60F,0xA60F,0xA60F}, /* A60E */
3884 {0xA610,0xA610,0xA610}, {0xA611,0xA611,0xA611}, /* A610 */
3885 {0xA612,0xA612,0xA612}, {0xA613,0xA613,0xA613}, /* A612 */
3886 {0xA614,0xA614,0xA614}, {0xA615,0xA615,0xA615}, /* A614 */
3887 {0xA616,0xA616,0xA616}, {0xA617,0xA617,0xA617}, /* A616 */
3888 {0xA618,0xA618,0xA618}, {0xA619,0xA619,0xA619}, /* A618 */
3889 {0xA61A,0xA61A,0xA61A}, {0xA61B,0xA61B,0xA61B}, /* A61A */
3890 {0xA61C,0xA61C,0xA61C}, {0xA61D,0xA61D,0xA61D}, /* A61C */
3891 {0xA61E,0xA61E,0xA61E}, {0xA61F,0xA61F,0xA61F}, /* A61E */
3892 {0xA620,0xA620,0xA620}, {0xA621,0xA621,0xA621}, /* A620 */
3893 {0xA622,0xA622,0xA622}, {0xA623,0xA623,0xA623}, /* A622 */
3894 {0xA624,0xA624,0xA624}, {0xA625,0xA625,0xA625}, /* A624 */
3895 {0xA626,0xA626,0xA626}, {0xA627,0xA627,0xA627}, /* A626 */
3896 {0xA628,0xA628,0xA628}, {0xA629,0xA629,0xA629}, /* A628 */
3897 {0xA62A,0xA62A,0xA62A}, {0xA62B,0xA62B,0xA62B}, /* A62A */
3898 {0xA62C,0xA62C,0xA62C}, {0xA62D,0xA62D,0xA62D}, /* A62C */
3899 {0xA62E,0xA62E,0xA62E}, {0xA62F,0xA62F,0xA62F}, /* A62E */
3900 {0xA630,0xA630,0xA630}, {0xA631,0xA631,0xA631}, /* A630 */
3901 {0xA632,0xA632,0xA632}, {0xA633,0xA633,0xA633}, /* A632 */
3902 {0xA634,0xA634,0xA634}, {0xA635,0xA635,0xA635}, /* A634 */
3903 {0xA636,0xA636,0xA636}, {0xA637,0xA637,0xA637}, /* A636 */
3904 {0xA638,0xA638,0xA638}, {0xA639,0xA639,0xA639}, /* A638 */
3905 {0xA63A,0xA63A,0xA63A}, {0xA63B,0xA63B,0xA63B}, /* A63A */
3906 {0xA63C,0xA63C,0xA63C}, {0xA63D,0xA63D,0xA63D}, /* A63C */
3907 {0xA63E,0xA63E,0xA63E}, {0xA63F,0xA63F,0xA63F}, /* A63E */
3908 {0xA640,0xA641,0xA640}, {0xA640,0xA641,0xA640}, /* A640 */
3909 {0xA642,0xA643,0xA642}, {0xA642,0xA643,0xA642}, /* A642 */
3910 {0xA644,0xA645,0xA644}, {0xA644,0xA645,0xA644}, /* A644 */
3911 {0xA646,0xA647,0xA646}, {0xA646,0xA647,0xA646}, /* A646 */
3912 {0xA648,0xA649,0xA648}, {0xA648,0xA649,0xA648}, /* A648 */
3913 {0xA64A,0xA64B,0xA64A}, {0xA64A,0xA64B,0xA64A}, /* A64A */
3914 {0xA64C,0xA64D,0xA64C}, {0xA64C,0xA64D,0xA64C}, /* A64C */
3915 {0xA64E,0xA64F,0xA64E}, {0xA64E,0xA64F,0xA64E}, /* A64E */
3916 {0xA650,0xA651,0xA650}, {0xA650,0xA651,0xA650}, /* A650 */
3917 {0xA652,0xA653,0xA652}, {0xA652,0xA653,0xA652}, /* A652 */
3918 {0xA654,0xA655,0xA654}, {0xA654,0xA655,0xA654}, /* A654 */
3919 {0xA656,0xA657,0xA656}, {0xA656,0xA657,0xA656}, /* A656 */
3920 {0xA658,0xA659,0xA658}, {0xA658,0xA659,0xA658}, /* A658 */
3921 {0xA65A,0xA65B,0xA65A}, {0xA65A,0xA65B,0xA65A}, /* A65A */
3922 {0xA65C,0xA65D,0xA65C}, {0xA65C,0xA65D,0xA65C}, /* A65C */
3923 {0xA65E,0xA65F,0xA65E}, {0xA65E,0xA65F,0xA65E}, /* A65E */
3924 {0xA660,0xA660,0xA660}, {0xA661,0xA661,0xA661}, /* A660 */
3925 {0xA662,0xA663,0xA662}, {0xA662,0xA663,0xA662}, /* A662 */
3926 {0xA664,0xA665,0xA664}, {0xA664,0xA665,0xA664}, /* A664 */
3927 {0xA666,0xA667,0xA666}, {0xA666,0xA667,0xA666}, /* A666 */
3928 {0xA668,0xA669,0xA668}, {0xA668,0xA669,0xA668}, /* A668 */
3929 {0xA66A,0xA66B,0xA66A}, {0xA66A,0xA66B,0xA66A}, /* A66A */
3930 {0xA66C,0xA66D,0xA66C}, {0xA66C,0xA66D,0xA66C}, /* A66C */
3931 {0xA66E,0xA66E,0xA66E}, {0xA66F,0xA66F,0xA66F}, /* A66E */
3932 {0xA670,0xA670,0xA670}, {0xA671,0xA671,0xA671}, /* A670 */
3933 {0xA672,0xA672,0xA672}, {0xA673,0xA673,0xA673}, /* A672 */
3934 {0xA674,0xA674,0xA674}, {0xA675,0xA675,0xA675}, /* A674 */
3935 {0xA676,0xA676,0xA676}, {0xA677,0xA677,0xA677}, /* A676 */
3936 {0xA678,0xA678,0xA678}, {0xA679,0xA679,0xA679}, /* A678 */
3937 {0xA67A,0xA67A,0xA67A}, {0xA67B,0xA67B,0xA67B}, /* A67A */
3938 {0xA67C,0xA67C,0xA67C}, {0xA67D,0xA67D,0xA67D}, /* A67C */
3939 {0xA67E,0xA67E,0xA67E}, {0xA67F,0xA67F,0xA67F}, /* A67E */
3940 {0xA680,0xA681,0xA680}, {0xA680,0xA681,0xA680}, /* A680 */
3941 {0xA682,0xA683,0xA682}, {0xA682,0xA683,0xA682}, /* A682 */
3942 {0xA684,0xA685,0xA684}, {0xA684,0xA685,0xA684}, /* A684 */
3943 {0xA686,0xA687,0xA686}, {0xA686,0xA687,0xA686}, /* A686 */
3944 {0xA688,0xA689,0xA688}, {0xA688,0xA689,0xA688}, /* A688 */
3945 {0xA68A,0xA68B,0xA68A}, {0xA68A,0xA68B,0xA68A}, /* A68A */
3946 {0xA68C,0xA68D,0xA68C}, {0xA68C,0xA68D,0xA68C}, /* A68C */
3947 {0xA68E,0xA68F,0xA68E}, {0xA68E,0xA68F,0xA68E}, /* A68E */
3948 {0xA690,0xA691,0xA690}, {0xA690,0xA691,0xA690}, /* A690 */
3949 {0xA692,0xA693,0xA692}, {0xA692,0xA693,0xA692}, /* A692 */
3950 {0xA694,0xA695,0xA694}, {0xA694,0xA695,0xA694}, /* A694 */
3951 {0xA696,0xA697,0xA696}, {0xA696,0xA697,0xA696}, /* A696 */
3952 {0xA698,0xA698,0xA698}, {0xA699,0xA699,0xA699}, /* A698 */
3953 {0xA69A,0xA69A,0xA69A}, {0xA69B,0xA69B,0xA69B}, /* A69A */
3954 {0xA69C,0xA69C,0xA69C}, {0xA69D,0xA69D,0xA69D}, /* A69C */
3955 {0xA69E,0xA69E,0xA69E}, {0xA69F,0xA69F,0xA69F}, /* A69E */
3956 {0xA6A0,0xA6A0,0xA6A0}, {0xA6A1,0xA6A1,0xA6A1}, /* A6A0 */
3957 {0xA6A2,0xA6A2,0xA6A2}, {0xA6A3,0xA6A3,0xA6A3}, /* A6A2 */
3958 {0xA6A4,0xA6A4,0xA6A4}, {0xA6A5,0xA6A5,0xA6A5}, /* A6A4 */
3959 {0xA6A6,0xA6A6,0xA6A6}, {0xA6A7,0xA6A7,0xA6A7}, /* A6A6 */
3960 {0xA6A8,0xA6A8,0xA6A8}, {0xA6A9,0xA6A9,0xA6A9}, /* A6A8 */
3961 {0xA6AA,0xA6AA,0xA6AA}, {0xA6AB,0xA6AB,0xA6AB}, /* A6AA */
3962 {0xA6AC,0xA6AC,0xA6AC}, {0xA6AD,0xA6AD,0xA6AD}, /* A6AC */
3963 {0xA6AE,0xA6AE,0xA6AE}, {0xA6AF,0xA6AF,0xA6AF}, /* A6AE */
3964 {0xA6B0,0xA6B0,0xA6B0}, {0xA6B1,0xA6B1,0xA6B1}, /* A6B0 */
3965 {0xA6B2,0xA6B2,0xA6B2}, {0xA6B3,0xA6B3,0xA6B3}, /* A6B2 */
3966 {0xA6B4,0xA6B4,0xA6B4}, {0xA6B5,0xA6B5,0xA6B5}, /* A6B4 */
3967 {0xA6B6,0xA6B6,0xA6B6}, {0xA6B7,0xA6B7,0xA6B7}, /* A6B6 */
3968 {0xA6B8,0xA6B8,0xA6B8}, {0xA6B9,0xA6B9,0xA6B9}, /* A6B8 */
3969 {0xA6BA,0xA6BA,0xA6BA}, {0xA6BB,0xA6BB,0xA6BB}, /* A6BA */
3970 {0xA6BC,0xA6BC,0xA6BC}, {0xA6BD,0xA6BD,0xA6BD}, /* A6BC */
3971 {0xA6BE,0xA6BE,0xA6BE}, {0xA6BF,0xA6BF,0xA6BF}, /* A6BE */
3972 {0xA6C0,0xA6C0,0xA6C0}, {0xA6C1,0xA6C1,0xA6C1}, /* A6C0 */
3973 {0xA6C2,0xA6C2,0xA6C2}, {0xA6C3,0xA6C3,0xA6C3}, /* A6C2 */
3974 {0xA6C4,0xA6C4,0xA6C4}, {0xA6C5,0xA6C5,0xA6C5}, /* A6C4 */
3975 {0xA6C6,0xA6C6,0xA6C6}, {0xA6C7,0xA6C7,0xA6C7}, /* A6C6 */
3976 {0xA6C8,0xA6C8,0xA6C8}, {0xA6C9,0xA6C9,0xA6C9}, /* A6C8 */
3977 {0xA6CA,0xA6CA,0xA6CA}, {0xA6CB,0xA6CB,0xA6CB}, /* A6CA */
3978 {0xA6CC,0xA6CC,0xA6CC}, {0xA6CD,0xA6CD,0xA6CD}, /* A6CC */
3979 {0xA6CE,0xA6CE,0xA6CE}, {0xA6CF,0xA6CF,0xA6CF}, /* A6CE */
3980 {0xA6D0,0xA6D0,0xA6D0}, {0xA6D1,0xA6D1,0xA6D1}, /* A6D0 */
3981 {0xA6D2,0xA6D2,0xA6D2}, {0xA6D3,0xA6D3,0xA6D3}, /* A6D2 */
3982 {0xA6D4,0xA6D4,0xA6D4}, {0xA6D5,0xA6D5,0xA6D5}, /* A6D4 */
3983 {0xA6D6,0xA6D6,0xA6D6}, {0xA6D7,0xA6D7,0xA6D7}, /* A6D6 */
3984 {0xA6D8,0xA6D8,0xA6D8}, {0xA6D9,0xA6D9,0xA6D9}, /* A6D8 */
3985 {0xA6DA,0xA6DA,0xA6DA}, {0xA6DB,0xA6DB,0xA6DB}, /* A6DA */
3986 {0xA6DC,0xA6DC,0xA6DC}, {0xA6DD,0xA6DD,0xA6DD}, /* A6DC */
3987 {0xA6DE,0xA6DE,0xA6DE}, {0xA6DF,0xA6DF,0xA6DF}, /* A6DE */
3988 {0xA6E0,0xA6E0,0xA6E0}, {0xA6E1,0xA6E1,0xA6E1}, /* A6E0 */
3989 {0xA6E2,0xA6E2,0xA6E2}, {0xA6E3,0xA6E3,0xA6E3}, /* A6E2 */
3990 {0xA6E4,0xA6E4,0xA6E4}, {0xA6E5,0xA6E5,0xA6E5}, /* A6E4 */
3991 {0xA6E6,0xA6E6,0xA6E6}, {0xA6E7,0xA6E7,0xA6E7}, /* A6E6 */
3992 {0xA6E8,0xA6E8,0xA6E8}, {0xA6E9,0xA6E9,0xA6E9}, /* A6E8 */
3993 {0xA6EA,0xA6EA,0xA6EA}, {0xA6EB,0xA6EB,0xA6EB}, /* A6EA */
3994 {0xA6EC,0xA6EC,0xA6EC}, {0xA6ED,0xA6ED,0xA6ED}, /* A6EC */
3995 {0xA6EE,0xA6EE,0xA6EE}, {0xA6EF,0xA6EF,0xA6EF}, /* A6EE */
3996 {0xA6F0,0xA6F0,0xA6F0}, {0xA6F1,0xA6F1,0xA6F1}, /* A6F0 */
3997 {0xA6F2,0xA6F2,0xA6F2}, {0xA6F3,0xA6F3,0xA6F3}, /* A6F2 */
3998 {0xA6F4,0xA6F4,0xA6F4}, {0xA6F5,0xA6F5,0xA6F5}, /* A6F4 */
3999 {0xA6F6,0xA6F6,0xA6F6}, {0xA6F7,0xA6F7,0xA6F7}, /* A6F6 */
4000 {0xA6F8,0xA6F8,0xA6F8}, {0xA6F9,0xA6F9,0xA6F9}, /* A6F8 */
4001 {0xA6FA,0xA6FA,0xA6FA}, {0xA6FB,0xA6FB,0xA6FB}, /* A6FA */
4002 {0xA6FC,0xA6FC,0xA6FC}, {0xA6FD,0xA6FD,0xA6FD}, /* A6FC */
4003 {0xA6FE,0xA6FE,0xA6FE}, {0xA6FF,0xA6FF,0xA6FF} /* A6FE */
4004};
4005
4006static MY_UNICASE_CHARACTER u520pA7[]={
4007 {0xA700,0xA700,0xA700}, {0xA701,0xA701,0xA701}, /* A700 */
4008 {0xA702,0xA702,0xA702}, {0xA703,0xA703,0xA703}, /* A702 */
4009 {0xA704,0xA704,0xA704}, {0xA705,0xA705,0xA705}, /* A704 */
4010 {0xA706,0xA706,0xA706}, {0xA707,0xA707,0xA707}, /* A706 */
4011 {0xA708,0xA708,0xA708}, {0xA709,0xA709,0xA709}, /* A708 */
4012 {0xA70A,0xA70A,0xA70A}, {0xA70B,0xA70B,0xA70B}, /* A70A */
4013 {0xA70C,0xA70C,0xA70C}, {0xA70D,0xA70D,0xA70D}, /* A70C */
4014 {0xA70E,0xA70E,0xA70E}, {0xA70F,0xA70F,0xA70F}, /* A70E */
4015 {0xA710,0xA710,0xA710}, {0xA711,0xA711,0xA711}, /* A710 */
4016 {0xA712,0xA712,0xA712}, {0xA713,0xA713,0xA713}, /* A712 */
4017 {0xA714,0xA714,0xA714}, {0xA715,0xA715,0xA715}, /* A714 */
4018 {0xA716,0xA716,0xA716}, {0xA717,0xA717,0xA717}, /* A716 */
4019 {0xA718,0xA718,0xA718}, {0xA719,0xA719,0xA719}, /* A718 */
4020 {0xA71A,0xA71A,0xA71A}, {0xA71B,0xA71B,0xA71B}, /* A71A */
4021 {0xA71C,0xA71C,0xA71C}, {0xA71D,0xA71D,0xA71D}, /* A71C */
4022 {0xA71E,0xA71E,0xA71E}, {0xA71F,0xA71F,0xA71F}, /* A71E */
4023 {0xA720,0xA720,0xA720}, {0xA721,0xA721,0xA721}, /* A720 */
4024 {0xA722,0xA723,0xA722}, {0xA722,0xA723,0xA722}, /* A722 */
4025 {0xA724,0xA725,0xA724}, {0xA724,0xA725,0xA724}, /* A724 */
4026 {0xA726,0xA727,0xA726}, {0xA726,0xA727,0xA726}, /* A726 */
4027 {0xA728,0xA729,0xA728}, {0xA728,0xA729,0xA728}, /* A728 */
4028 {0xA72A,0xA72B,0xA72A}, {0xA72A,0xA72B,0xA72A}, /* A72A */
4029 {0xA72C,0xA72D,0xA72C}, {0xA72C,0xA72D,0xA72C}, /* A72C */
4030 {0xA72E,0xA72F,0xA72E}, {0xA72E,0xA72F,0xA72E}, /* A72E */
4031 {0xA730,0xA730,0xA730}, {0xA731,0xA731,0xA731}, /* A730 */
4032 {0xA732,0xA733,0xA732}, {0xA732,0xA733,0xA732}, /* A732 */
4033 {0xA734,0xA735,0xA734}, {0xA734,0xA735,0xA734}, /* A734 */
4034 {0xA736,0xA737,0xA736}, {0xA736,0xA737,0xA736}, /* A736 */
4035 {0xA738,0xA739,0xA738}, {0xA738,0xA739,0xA738}, /* A738 */
4036 {0xA73A,0xA73B,0xA73A}, {0xA73A,0xA73B,0xA73A}, /* A73A */
4037 {0xA73C,0xA73D,0xA73C}, {0xA73C,0xA73D,0xA73C}, /* A73C */
4038 {0xA73E,0xA73F,0xA73E}, {0xA73E,0xA73F,0xA73E}, /* A73E */
4039 {0xA740,0xA741,0xA740}, {0xA740,0xA741,0xA740}, /* A740 */
4040 {0xA742,0xA743,0xA742}, {0xA742,0xA743,0xA742}, /* A742 */
4041 {0xA744,0xA745,0xA744}, {0xA744,0xA745,0xA744}, /* A744 */
4042 {0xA746,0xA747,0xA746}, {0xA746,0xA747,0xA746}, /* A746 */
4043 {0xA748,0xA749,0xA748}, {0xA748,0xA749,0xA748}, /* A748 */
4044 {0xA74A,0xA74B,0xA74A}, {0xA74A,0xA74B,0xA74A}, /* A74A */
4045 {0xA74C,0xA74D,0xA74C}, {0xA74C,0xA74D,0xA74C}, /* A74C */
4046 {0xA74E,0xA74F,0xA74E}, {0xA74E,0xA74F,0xA74E}, /* A74E */
4047 {0xA750,0xA751,0xA750}, {0xA750,0xA751,0xA750}, /* A750 */
4048 {0xA752,0xA753,0xA752}, {0xA752,0xA753,0xA752}, /* A752 */
4049 {0xA754,0xA755,0xA754}, {0xA754,0xA755,0xA754}, /* A754 */
4050 {0xA756,0xA757,0xA756}, {0xA756,0xA757,0xA756}, /* A756 */
4051 {0xA758,0xA759,0xA758}, {0xA758,0xA759,0xA758}, /* A758 */
4052 {0xA75A,0xA75B,0xA75A}, {0xA75A,0xA75B,0xA75A}, /* A75A */
4053 {0xA75C,0xA75D,0xA75C}, {0xA75C,0xA75D,0xA75C}, /* A75C */
4054 {0xA75E,0xA75F,0xA75E}, {0xA75E,0xA75F,0xA75E}, /* A75E */
4055 {0xA760,0xA761,0xA760}, {0xA760,0xA761,0xA760}, /* A760 */
4056 {0xA762,0xA763,0xA762}, {0xA762,0xA763,0xA762}, /* A762 */
4057 {0xA764,0xA765,0xA764}, {0xA764,0xA765,0xA764}, /* A764 */
4058 {0xA766,0xA767,0xA766}, {0xA766,0xA767,0xA766}, /* A766 */
4059 {0xA768,0xA769,0xA768}, {0xA768,0xA769,0xA768}, /* A768 */
4060 {0xA76A,0xA76B,0xA76A}, {0xA76A,0xA76B,0xA76A}, /* A76A */
4061 {0xA76C,0xA76D,0xA76C}, {0xA76C,0xA76D,0xA76C}, /* A76C */
4062 {0xA76E,0xA76F,0xA76E}, {0xA76E,0xA76F,0xA76E}, /* A76E */
4063 {0xA770,0xA770,0xA770}, {0xA771,0xA771,0xA771}, /* A770 */
4064 {0xA772,0xA772,0xA772}, {0xA773,0xA773,0xA773}, /* A772 */
4065 {0xA774,0xA774,0xA774}, {0xA775,0xA775,0xA775}, /* A774 */
4066 {0xA776,0xA776,0xA776}, {0xA777,0xA777,0xA777}, /* A776 */
4067 {0xA778,0xA778,0xA778}, {0xA779,0xA77A,0xA779}, /* A778 */
4068 {0xA779,0xA77A,0xA779}, {0xA77B,0xA77C,0xA77B}, /* A77A */
4069 {0xA77B,0xA77C,0xA77B}, {0xA77D,0x1D79,0xA77D}, /* A77C */
4070 {0xA77E,0xA77F,0xA77E}, {0xA77E,0xA77F,0xA77E}, /* A77E */
4071 {0xA780,0xA781,0xA780}, {0xA780,0xA781,0xA780}, /* A780 */
4072 {0xA782,0xA783,0xA782}, {0xA782,0xA783,0xA782}, /* A782 */
4073 {0xA784,0xA785,0xA784}, {0xA784,0xA785,0xA784}, /* A784 */
4074 {0xA786,0xA787,0xA786}, {0xA786,0xA787,0xA786}, /* A786 */
4075 {0xA788,0xA788,0xA788}, {0xA789,0xA789,0xA789}, /* A788 */
4076 {0xA78A,0xA78A,0xA78A}, {0xA78B,0xA78C,0xA78B}, /* A78A */
4077 {0xA78B,0xA78C,0xA78B}, {0xA78D,0xA78D,0xA78D}, /* A78C */
4078 {0xA78E,0xA78E,0xA78E}, {0xA78F,0xA78F,0xA78F}, /* A78E */
4079 {0xA790,0xA790,0xA790}, {0xA791,0xA791,0xA791}, /* A790 */
4080 {0xA792,0xA792,0xA792}, {0xA793,0xA793,0xA793}, /* A792 */
4081 {0xA794,0xA794,0xA794}, {0xA795,0xA795,0xA795}, /* A794 */
4082 {0xA796,0xA796,0xA796}, {0xA797,0xA797,0xA797}, /* A796 */
4083 {0xA798,0xA798,0xA798}, {0xA799,0xA799,0xA799}, /* A798 */
4084 {0xA79A,0xA79A,0xA79A}, {0xA79B,0xA79B,0xA79B}, /* A79A */
4085 {0xA79C,0xA79C,0xA79C}, {0xA79D,0xA79D,0xA79D}, /* A79C */
4086 {0xA79E,0xA79E,0xA79E}, {0xA79F,0xA79F,0xA79F}, /* A79E */
4087 {0xA7A0,0xA7A0,0xA7A0}, {0xA7A1,0xA7A1,0xA7A1}, /* A7A0 */
4088 {0xA7A2,0xA7A2,0xA7A2}, {0xA7A3,0xA7A3,0xA7A3}, /* A7A2 */
4089 {0xA7A4,0xA7A4,0xA7A4}, {0xA7A5,0xA7A5,0xA7A5}, /* A7A4 */
4090 {0xA7A6,0xA7A6,0xA7A6}, {0xA7A7,0xA7A7,0xA7A7}, /* A7A6 */
4091 {0xA7A8,0xA7A8,0xA7A8}, {0xA7A9,0xA7A9,0xA7A9}, /* A7A8 */
4092 {0xA7AA,0xA7AA,0xA7AA}, {0xA7AB,0xA7AB,0xA7AB}, /* A7AA */
4093 {0xA7AC,0xA7AC,0xA7AC}, {0xA7AD,0xA7AD,0xA7AD}, /* A7AC */
4094 {0xA7AE,0xA7AE,0xA7AE}, {0xA7AF,0xA7AF,0xA7AF}, /* A7AE */
4095 {0xA7B0,0xA7B0,0xA7B0}, {0xA7B1,0xA7B1,0xA7B1}, /* A7B0 */
4096 {0xA7B2,0xA7B2,0xA7B2}, {0xA7B3,0xA7B3,0xA7B3}, /* A7B2 */
4097 {0xA7B4,0xA7B4,0xA7B4}, {0xA7B5,0xA7B5,0xA7B5}, /* A7B4 */
4098 {0xA7B6,0xA7B6,0xA7B6}, {0xA7B7,0xA7B7,0xA7B7}, /* A7B6 */
4099 {0xA7B8,0xA7B8,0xA7B8}, {0xA7B9,0xA7B9,0xA7B9}, /* A7B8 */
4100 {0xA7BA,0xA7BA,0xA7BA}, {0xA7BB,0xA7BB,0xA7BB}, /* A7BA */
4101 {0xA7BC,0xA7BC,0xA7BC}, {0xA7BD,0xA7BD,0xA7BD}, /* A7BC */
4102 {0xA7BE,0xA7BE,0xA7BE}, {0xA7BF,0xA7BF,0xA7BF}, /* A7BE */
4103 {0xA7C0,0xA7C0,0xA7C0}, {0xA7C1,0xA7C1,0xA7C1}, /* A7C0 */
4104 {0xA7C2,0xA7C2,0xA7C2}, {0xA7C3,0xA7C3,0xA7C3}, /* A7C2 */
4105 {0xA7C4,0xA7C4,0xA7C4}, {0xA7C5,0xA7C5,0xA7C5}, /* A7C4 */
4106 {0xA7C6,0xA7C6,0xA7C6}, {0xA7C7,0xA7C7,0xA7C7}, /* A7C6 */
4107 {0xA7C8,0xA7C8,0xA7C8}, {0xA7C9,0xA7C9,0xA7C9}, /* A7C8 */
4108 {0xA7CA,0xA7CA,0xA7CA}, {0xA7CB,0xA7CB,0xA7CB}, /* A7CA */
4109 {0xA7CC,0xA7CC,0xA7CC}, {0xA7CD,0xA7CD,0xA7CD}, /* A7CC */
4110 {0xA7CE,0xA7CE,0xA7CE}, {0xA7CF,0xA7CF,0xA7CF}, /* A7CE */
4111 {0xA7D0,0xA7D0,0xA7D0}, {0xA7D1,0xA7D1,0xA7D1}, /* A7D0 */
4112 {0xA7D2,0xA7D2,0xA7D2}, {0xA7D3,0xA7D3,0xA7D3}, /* A7D2 */
4113 {0xA7D4,0xA7D4,0xA7D4}, {0xA7D5,0xA7D5,0xA7D5}, /* A7D4 */
4114 {0xA7D6,0xA7D6,0xA7D6}, {0xA7D7,0xA7D7,0xA7D7}, /* A7D6 */
4115 {0xA7D8,0xA7D8,0xA7D8}, {0xA7D9,0xA7D9,0xA7D9}, /* A7D8 */
4116 {0xA7DA,0xA7DA,0xA7DA}, {0xA7DB,0xA7DB,0xA7DB}, /* A7DA */
4117 {0xA7DC,0xA7DC,0xA7DC}, {0xA7DD,0xA7DD,0xA7DD}, /* A7DC */
4118 {0xA7DE,0xA7DE,0xA7DE}, {0xA7DF,0xA7DF,0xA7DF}, /* A7DE */
4119 {0xA7E0,0xA7E0,0xA7E0}, {0xA7E1,0xA7E1,0xA7E1}, /* A7E0 */
4120 {0xA7E2,0xA7E2,0xA7E2}, {0xA7E3,0xA7E3,0xA7E3}, /* A7E2 */
4121 {0xA7E4,0xA7E4,0xA7E4}, {0xA7E5,0xA7E5,0xA7E5}, /* A7E4 */
4122 {0xA7E6,0xA7E6,0xA7E6}, {0xA7E7,0xA7E7,0xA7E7}, /* A7E6 */
4123 {0xA7E8,0xA7E8,0xA7E8}, {0xA7E9,0xA7E9,0xA7E9}, /* A7E8 */
4124 {0xA7EA,0xA7EA,0xA7EA}, {0xA7EB,0xA7EB,0xA7EB}, /* A7EA */
4125 {0xA7EC,0xA7EC,0xA7EC}, {0xA7ED,0xA7ED,0xA7ED}, /* A7EC */
4126 {0xA7EE,0xA7EE,0xA7EE}, {0xA7EF,0xA7EF,0xA7EF}, /* A7EE */
4127 {0xA7F0,0xA7F0,0xA7F0}, {0xA7F1,0xA7F1,0xA7F1}, /* A7F0 */
4128 {0xA7F2,0xA7F2,0xA7F2}, {0xA7F3,0xA7F3,0xA7F3}, /* A7F2 */
4129 {0xA7F4,0xA7F4,0xA7F4}, {0xA7F5,0xA7F5,0xA7F5}, /* A7F4 */
4130 {0xA7F6,0xA7F6,0xA7F6}, {0xA7F7,0xA7F7,0xA7F7}, /* A7F6 */
4131 {0xA7F8,0xA7F8,0xA7F8}, {0xA7F9,0xA7F9,0xA7F9}, /* A7F8 */
4132 {0xA7FA,0xA7FA,0xA7FA}, {0xA7FB,0xA7FB,0xA7FB}, /* A7FA */
4133 {0xA7FC,0xA7FC,0xA7FC}, {0xA7FD,0xA7FD,0xA7FD}, /* A7FC */
4134 {0xA7FE,0xA7FE,0xA7FE}, {0xA7FF,0xA7FF,0xA7FF} /* A7FE */
4135};
4136
4137static MY_UNICASE_CHARACTER u520pFF[]={
4138 {0xFF00,0xFF00,0xFF00}, {0xFF01,0xFF01,0xFF01}, /* FF00 */
4139 {0xFF02,0xFF02,0xFF02}, {0xFF03,0xFF03,0xFF03}, /* FF02 */
4140 {0xFF04,0xFF04,0xFF04}, {0xFF05,0xFF05,0xFF05}, /* FF04 */
4141 {0xFF06,0xFF06,0xFF06}, {0xFF07,0xFF07,0xFF07}, /* FF06 */
4142 {0xFF08,0xFF08,0xFF08}, {0xFF09,0xFF09,0xFF09}, /* FF08 */
4143 {0xFF0A,0xFF0A,0xFF0A}, {0xFF0B,0xFF0B,0xFF0B}, /* FF0A */
4144 {0xFF0C,0xFF0C,0xFF0C}, {0xFF0D,0xFF0D,0xFF0D}, /* FF0C */
4145 {0xFF0E,0xFF0E,0xFF0E}, {0xFF0F,0xFF0F,0xFF0F}, /* FF0E */
4146 {0xFF10,0xFF10,0xFF10}, {0xFF11,0xFF11,0xFF11}, /* FF10 */
4147 {0xFF12,0xFF12,0xFF12}, {0xFF13,0xFF13,0xFF13}, /* FF12 */
4148 {0xFF14,0xFF14,0xFF14}, {0xFF15,0xFF15,0xFF15}, /* FF14 */
4149 {0xFF16,0xFF16,0xFF16}, {0xFF17,0xFF17,0xFF17}, /* FF16 */
4150 {0xFF18,0xFF18,0xFF18}, {0xFF19,0xFF19,0xFF19}, /* FF18 */
4151 {0xFF1A,0xFF1A,0xFF1A}, {0xFF1B,0xFF1B,0xFF1B}, /* FF1A */
4152 {0xFF1C,0xFF1C,0xFF1C}, {0xFF1D,0xFF1D,0xFF1D}, /* FF1C */
4153 {0xFF1E,0xFF1E,0xFF1E}, {0xFF1F,0xFF1F,0xFF1F}, /* FF1E */
4154 {0xFF20,0xFF20,0xFF20}, {0xFF21,0xFF41,0xFF21}, /* FF20 */
4155 {0xFF22,0xFF42,0xFF22}, {0xFF23,0xFF43,0xFF23}, /* FF22 */
4156 {0xFF24,0xFF44,0xFF24}, {0xFF25,0xFF45,0xFF25}, /* FF24 */
4157 {0xFF26,0xFF46,0xFF26}, {0xFF27,0xFF47,0xFF27}, /* FF26 */
4158 {0xFF28,0xFF48,0xFF28}, {0xFF29,0xFF49,0xFF29}, /* FF28 */
4159 {0xFF2A,0xFF4A,0xFF2A}, {0xFF2B,0xFF4B,0xFF2B}, /* FF2A */
4160 {0xFF2C,0xFF4C,0xFF2C}, {0xFF2D,0xFF4D,0xFF2D}, /* FF2C */
4161 {0xFF2E,0xFF4E,0xFF2E}, {0xFF2F,0xFF4F,0xFF2F}, /* FF2E */
4162 {0xFF30,0xFF50,0xFF30}, {0xFF31,0xFF51,0xFF31}, /* FF30 */
4163 {0xFF32,0xFF52,0xFF32}, {0xFF33,0xFF53,0xFF33}, /* FF32 */
4164 {0xFF34,0xFF54,0xFF34}, {0xFF35,0xFF55,0xFF35}, /* FF34 */
4165 {0xFF36,0xFF56,0xFF36}, {0xFF37,0xFF57,0xFF37}, /* FF36 */
4166 {0xFF38,0xFF58,0xFF38}, {0xFF39,0xFF59,0xFF39}, /* FF38 */
4167 {0xFF3A,0xFF5A,0xFF3A}, {0xFF3B,0xFF3B,0xFF3B}, /* FF3A */
4168 {0xFF3C,0xFF3C,0xFF3C}, {0xFF3D,0xFF3D,0xFF3D}, /* FF3C */
4169 {0xFF3E,0xFF3E,0xFF3E}, {0xFF3F,0xFF3F,0xFF3F}, /* FF3E */
4170 {0xFF40,0xFF40,0xFF40}, {0xFF21,0xFF41,0xFF21}, /* FF40 */
4171 {0xFF22,0xFF42,0xFF22}, {0xFF23,0xFF43,0xFF23}, /* FF42 */
4172 {0xFF24,0xFF44,0xFF24}, {0xFF25,0xFF45,0xFF25}, /* FF44 */
4173 {0xFF26,0xFF46,0xFF26}, {0xFF27,0xFF47,0xFF27}, /* FF46 */
4174 {0xFF28,0xFF48,0xFF28}, {0xFF29,0xFF49,0xFF29}, /* FF48 */
4175 {0xFF2A,0xFF4A,0xFF2A}, {0xFF2B,0xFF4B,0xFF2B}, /* FF4A */
4176 {0xFF2C,0xFF4C,0xFF2C}, {0xFF2D,0xFF4D,0xFF2D}, /* FF4C */
4177 {0xFF2E,0xFF4E,0xFF2E}, {0xFF2F,0xFF4F,0xFF2F}, /* FF4E */
4178 {0xFF30,0xFF50,0xFF30}, {0xFF31,0xFF51,0xFF31}, /* FF50 */
4179 {0xFF32,0xFF52,0xFF32}, {0xFF33,0xFF53,0xFF33}, /* FF52 */
4180 {0xFF34,0xFF54,0xFF34}, {0xFF35,0xFF55,0xFF35}, /* FF54 */
4181 {0xFF36,0xFF56,0xFF36}, {0xFF37,0xFF57,0xFF37}, /* FF56 */
4182 {0xFF38,0xFF58,0xFF38}, {0xFF39,0xFF59,0xFF39}, /* FF58 */
4183 {0xFF3A,0xFF5A,0xFF3A}, {0xFF5B,0xFF5B,0xFF5B}, /* FF5A */
4184 {0xFF5C,0xFF5C,0xFF5C}, {0xFF5D,0xFF5D,0xFF5D}, /* FF5C */
4185 {0xFF5E,0xFF5E,0xFF5E}, {0xFF5F,0xFF5F,0xFF5F}, /* FF5E */
4186 {0xFF60,0xFF60,0xFF60}, {0xFF61,0xFF61,0xFF61}, /* FF60 */
4187 {0xFF62,0xFF62,0xFF62}, {0xFF63,0xFF63,0xFF63}, /* FF62 */
4188 {0xFF64,0xFF64,0xFF64}, {0xFF65,0xFF65,0xFF65}, /* FF64 */
4189 {0xFF66,0xFF66,0xFF66}, {0xFF67,0xFF67,0xFF67}, /* FF66 */
4190 {0xFF68,0xFF68,0xFF68}, {0xFF69,0xFF69,0xFF69}, /* FF68 */
4191 {0xFF6A,0xFF6A,0xFF6A}, {0xFF6B,0xFF6B,0xFF6B}, /* FF6A */
4192 {0xFF6C,0xFF6C,0xFF6C}, {0xFF6D,0xFF6D,0xFF6D}, /* FF6C */
4193 {0xFF6E,0xFF6E,0xFF6E}, {0xFF6F,0xFF6F,0xFF6F}, /* FF6E */
4194 {0xFF70,0xFF70,0xFF70}, {0xFF71,0xFF71,0xFF71}, /* FF70 */
4195 {0xFF72,0xFF72,0xFF72}, {0xFF73,0xFF73,0xFF73}, /* FF72 */
4196 {0xFF74,0xFF74,0xFF74}, {0xFF75,0xFF75,0xFF75}, /* FF74 */
4197 {0xFF76,0xFF76,0xFF76}, {0xFF77,0xFF77,0xFF77}, /* FF76 */
4198 {0xFF78,0xFF78,0xFF78}, {0xFF79,0xFF79,0xFF79}, /* FF78 */
4199 {0xFF7A,0xFF7A,0xFF7A}, {0xFF7B,0xFF7B,0xFF7B}, /* FF7A */
4200 {0xFF7C,0xFF7C,0xFF7C}, {0xFF7D,0xFF7D,0xFF7D}, /* FF7C */
4201 {0xFF7E,0xFF7E,0xFF7E}, {0xFF7F,0xFF7F,0xFF7F}, /* FF7E */
4202 {0xFF80,0xFF80,0xFF80}, {0xFF81,0xFF81,0xFF81}, /* FF80 */
4203 {0xFF82,0xFF82,0xFF82}, {0xFF83,0xFF83,0xFF83}, /* FF82 */
4204 {0xFF84,0xFF84,0xFF84}, {0xFF85,0xFF85,0xFF85}, /* FF84 */
4205 {0xFF86,0xFF86,0xFF86}, {0xFF87,0xFF87,0xFF87}, /* FF86 */
4206 {0xFF88,0xFF88,0xFF88}, {0xFF89,0xFF89,0xFF89}, /* FF88 */
4207 {0xFF8A,0xFF8A,0xFF8A}, {0xFF8B,0xFF8B,0xFF8B}, /* FF8A */
4208 {0xFF8C,0xFF8C,0xFF8C}, {0xFF8D,0xFF8D,0xFF8D}, /* FF8C */
4209 {0xFF8E,0xFF8E,0xFF8E}, {0xFF8F,0xFF8F,0xFF8F}, /* FF8E */
4210 {0xFF90,0xFF90,0xFF90}, {0xFF91,0xFF91,0xFF91}, /* FF90 */
4211 {0xFF92,0xFF92,0xFF92}, {0xFF93,0xFF93,0xFF93}, /* FF92 */
4212 {0xFF94,0xFF94,0xFF94}, {0xFF95,0xFF95,0xFF95}, /* FF94 */
4213 {0xFF96,0xFF96,0xFF96}, {0xFF97,0xFF97,0xFF97}, /* FF96 */
4214 {0xFF98,0xFF98,0xFF98}, {0xFF99,0xFF99,0xFF99}, /* FF98 */
4215 {0xFF9A,0xFF9A,0xFF9A}, {0xFF9B,0xFF9B,0xFF9B}, /* FF9A */
4216 {0xFF9C,0xFF9C,0xFF9C}, {0xFF9D,0xFF9D,0xFF9D}, /* FF9C */
4217 {0xFF9E,0xFF9E,0xFF9E}, {0xFF9F,0xFF9F,0xFF9F}, /* FF9E */
4218 {0xFFA0,0xFFA0,0xFFA0}, {0xFFA1,0xFFA1,0xFFA1}, /* FFA0 */
4219 {0xFFA2,0xFFA2,0xFFA2}, {0xFFA3,0xFFA3,0xFFA3}, /* FFA2 */
4220 {0xFFA4,0xFFA4,0xFFA4}, {0xFFA5,0xFFA5,0xFFA5}, /* FFA4 */
4221 {0xFFA6,0xFFA6,0xFFA6}, {0xFFA7,0xFFA7,0xFFA7}, /* FFA6 */
4222 {0xFFA8,0xFFA8,0xFFA8}, {0xFFA9,0xFFA9,0xFFA9}, /* FFA8 */
4223 {0xFFAA,0xFFAA,0xFFAA}, {0xFFAB,0xFFAB,0xFFAB}, /* FFAA */
4224 {0xFFAC,0xFFAC,0xFFAC}, {0xFFAD,0xFFAD,0xFFAD}, /* FFAC */
4225 {0xFFAE,0xFFAE,0xFFAE}, {0xFFAF,0xFFAF,0xFFAF}, /* FFAE */
4226 {0xFFB0,0xFFB0,0xFFB0}, {0xFFB1,0xFFB1,0xFFB1}, /* FFB0 */
4227 {0xFFB2,0xFFB2,0xFFB2}, {0xFFB3,0xFFB3,0xFFB3}, /* FFB2 */
4228 {0xFFB4,0xFFB4,0xFFB4}, {0xFFB5,0xFFB5,0xFFB5}, /* FFB4 */
4229 {0xFFB6,0xFFB6,0xFFB6}, {0xFFB7,0xFFB7,0xFFB7}, /* FFB6 */
4230 {0xFFB8,0xFFB8,0xFFB8}, {0xFFB9,0xFFB9,0xFFB9}, /* FFB8 */
4231 {0xFFBA,0xFFBA,0xFFBA}, {0xFFBB,0xFFBB,0xFFBB}, /* FFBA */
4232 {0xFFBC,0xFFBC,0xFFBC}, {0xFFBD,0xFFBD,0xFFBD}, /* FFBC */
4233 {0xFFBE,0xFFBE,0xFFBE}, {0xFFBF,0xFFBF,0xFFBF}, /* FFBE */
4234 {0xFFC0,0xFFC0,0xFFC0}, {0xFFC1,0xFFC1,0xFFC1}, /* FFC0 */
4235 {0xFFC2,0xFFC2,0xFFC2}, {0xFFC3,0xFFC3,0xFFC3}, /* FFC2 */
4236 {0xFFC4,0xFFC4,0xFFC4}, {0xFFC5,0xFFC5,0xFFC5}, /* FFC4 */
4237 {0xFFC6,0xFFC6,0xFFC6}, {0xFFC7,0xFFC7,0xFFC7}, /* FFC6 */
4238 {0xFFC8,0xFFC8,0xFFC8}, {0xFFC9,0xFFC9,0xFFC9}, /* FFC8 */
4239 {0xFFCA,0xFFCA,0xFFCA}, {0xFFCB,0xFFCB,0xFFCB}, /* FFCA */
4240 {0xFFCC,0xFFCC,0xFFCC}, {0xFFCD,0xFFCD,0xFFCD}, /* FFCC */
4241 {0xFFCE,0xFFCE,0xFFCE}, {0xFFCF,0xFFCF,0xFFCF}, /* FFCE */
4242 {0xFFD0,0xFFD0,0xFFD0}, {0xFFD1,0xFFD1,0xFFD1}, /* FFD0 */
4243 {0xFFD2,0xFFD2,0xFFD2}, {0xFFD3,0xFFD3,0xFFD3}, /* FFD2 */
4244 {0xFFD4,0xFFD4,0xFFD4}, {0xFFD5,0xFFD5,0xFFD5}, /* FFD4 */
4245 {0xFFD6,0xFFD6,0xFFD6}, {0xFFD7,0xFFD7,0xFFD7}, /* FFD6 */
4246 {0xFFD8,0xFFD8,0xFFD8}, {0xFFD9,0xFFD9,0xFFD9}, /* FFD8 */
4247 {0xFFDA,0xFFDA,0xFFDA}, {0xFFDB,0xFFDB,0xFFDB}, /* FFDA */
4248 {0xFFDC,0xFFDC,0xFFDC}, {0xFFDD,0xFFDD,0xFFDD}, /* FFDC */
4249 {0xFFDE,0xFFDE,0xFFDE}, {0xFFDF,0xFFDF,0xFFDF}, /* FFDE */
4250 {0xFFE0,0xFFE0,0xFFE0}, {0xFFE1,0xFFE1,0xFFE1}, /* FFE0 */
4251 {0xFFE2,0xFFE2,0xFFE2}, {0xFFE3,0xFFE3,0xFFE3}, /* FFE2 */
4252 {0xFFE4,0xFFE4,0xFFE4}, {0xFFE5,0xFFE5,0xFFE5}, /* FFE4 */
4253 {0xFFE6,0xFFE6,0xFFE6}, {0xFFE7,0xFFE7,0xFFE7}, /* FFE6 */
4254 {0xFFE8,0xFFE8,0xFFE8}, {0xFFE9,0xFFE9,0xFFE9}, /* FFE8 */
4255 {0xFFEA,0xFFEA,0xFFEA}, {0xFFEB,0xFFEB,0xFFEB}, /* FFEA */
4256 {0xFFEC,0xFFEC,0xFFEC}, {0xFFED,0xFFED,0xFFED}, /* FFEC */
4257 {0xFFEE,0xFFEE,0xFFEE}, {0xFFEF,0xFFEF,0xFFEF}, /* FFEE */
4258 {0xFFF0,0xFFF0,0xFFF0}, {0xFFF1,0xFFF1,0xFFF1}, /* FFF0 */
4259 {0xFFF2,0xFFF2,0xFFF2}, {0xFFF3,0xFFF3,0xFFF3}, /* FFF2 */
4260 {0xFFF4,0xFFF4,0xFFF4}, {0xFFF5,0xFFF5,0xFFF5}, /* FFF4 */
4261 {0xFFF6,0xFFF6,0xFFF6}, {0xFFF7,0xFFF7,0xFFF7}, /* FFF6 */
4262 {0xFFF8,0xFFF8,0xFFF8}, {0xFFF9,0xFFF9,0xFFF9}, /* FFF8 */
4263 {0xFFFA,0xFFFA,0xFFFA}, {0xFFFB,0xFFFB,0xFFFB}, /* FFFA */
4264 {0xFFFC,0xFFFC,0xFFFC}, {0xFFFD,0xFFFD,0xFFFD}, /* FFFC */
4265 {0xFFFE,0xFFFE,0xFFFE}, {0xFFFF,0xFFFF,0xFFFF} /* FFFE */
4266};
4267
4268static MY_UNICASE_CHARACTER u520p104[]={
4269 {0x10400,0x10428,0x10400}, {0x10401,0x10429,0x10401}, /* 10400 */
4270 {0x10402,0x1042A,0x10402}, {0x10403,0x1042B,0x10403}, /* 10402 */
4271 {0x10404,0x1042C,0x10404}, {0x10405,0x1042D,0x10405}, /* 10404 */
4272 {0x10406,0x1042E,0x10406}, {0x10407,0x1042F,0x10407}, /* 10406 */
4273 {0x10408,0x10430,0x10408}, {0x10409,0x10431,0x10409}, /* 10408 */
4274 {0x1040A,0x10432,0x1040A}, {0x1040B,0x10433,0x1040B}, /* 1040A */
4275 {0x1040C,0x10434,0x1040C}, {0x1040D,0x10435,0x1040D}, /* 1040C */
4276 {0x1040E,0x10436,0x1040E}, {0x1040F,0x10437,0x1040F}, /* 1040E */
4277 {0x10410,0x10438,0x10410}, {0x10411,0x10439,0x10411}, /* 10410 */
4278 {0x10412,0x1043A,0x10412}, {0x10413,0x1043B,0x10413}, /* 10412 */
4279 {0x10414,0x1043C,0x10414}, {0x10415,0x1043D,0x10415}, /* 10414 */
4280 {0x10416,0x1043E,0x10416}, {0x10417,0x1043F,0x10417}, /* 10416 */
4281 {0x10418,0x10440,0x10418}, {0x10419,0x10441,0x10419}, /* 10418 */
4282 {0x1041A,0x10442,0x1041A}, {0x1041B,0x10443,0x1041B}, /* 1041A */
4283 {0x1041C,0x10444,0x1041C}, {0x1041D,0x10445,0x1041D}, /* 1041C */
4284 {0x1041E,0x10446,0x1041E}, {0x1041F,0x10447,0x1041F}, /* 1041E */
4285 {0x10420,0x10448,0x10420}, {0x10421,0x10449,0x10421}, /* 10420 */
4286 {0x10422,0x1044A,0x10422}, {0x10423,0x1044B,0x10423}, /* 10422 */
4287 {0x10424,0x1044C,0x10424}, {0x10425,0x1044D,0x10425}, /* 10424 */
4288 {0x10426,0x1044E,0x10426}, {0x10427,0x1044F,0x10427}, /* 10426 */
4289 {0x10400,0x10428,0x10400}, {0x10401,0x10429,0x10401}, /* 10428 */
4290 {0x10402,0x1042A,0x10402}, {0x10403,0x1042B,0x10403}, /* 1042A */
4291 {0x10404,0x1042C,0x10404}, {0x10405,0x1042D,0x10405}, /* 1042C */
4292 {0x10406,0x1042E,0x10406}, {0x10407,0x1042F,0x10407}, /* 1042E */
4293 {0x10408,0x10430,0x10408}, {0x10409,0x10431,0x10409}, /* 10430 */
4294 {0x1040A,0x10432,0x1040A}, {0x1040B,0x10433,0x1040B}, /* 10432 */
4295 {0x1040C,0x10434,0x1040C}, {0x1040D,0x10435,0x1040D}, /* 10434 */
4296 {0x1040E,0x10436,0x1040E}, {0x1040F,0x10437,0x1040F}, /* 10436 */
4297 {0x10410,0x10438,0x10410}, {0x10411,0x10439,0x10411}, /* 10438 */
4298 {0x10412,0x1043A,0x10412}, {0x10413,0x1043B,0x10413}, /* 1043A */
4299 {0x10414,0x1043C,0x10414}, {0x10415,0x1043D,0x10415}, /* 1043C */
4300 {0x10416,0x1043E,0x10416}, {0x10417,0x1043F,0x10417}, /* 1043E */
4301 {0x10418,0x10440,0x10418}, {0x10419,0x10441,0x10419}, /* 10440 */
4302 {0x1041A,0x10442,0x1041A}, {0x1041B,0x10443,0x1041B}, /* 10442 */
4303 {0x1041C,0x10444,0x1041C}, {0x1041D,0x10445,0x1041D}, /* 10444 */
4304 {0x1041E,0x10446,0x1041E}, {0x1041F,0x10447,0x1041F}, /* 10446 */
4305 {0x10420,0x10448,0x10420}, {0x10421,0x10449,0x10421}, /* 10448 */
4306 {0x10422,0x1044A,0x10422}, {0x10423,0x1044B,0x10423}, /* 1044A */
4307 {0x10424,0x1044C,0x10424}, {0x10425,0x1044D,0x10425}, /* 1044C */
4308 {0x10426,0x1044E,0x10426}, {0x10427,0x1044F,0x10427}, /* 1044E */
4309 {0x10450,0x10450,0x10450}, {0x10451,0x10451,0x10451}, /* 10450 */
4310 {0x10452,0x10452,0x10452}, {0x10453,0x10453,0x10453}, /* 10452 */
4311 {0x10454,0x10454,0x10454}, {0x10455,0x10455,0x10455}, /* 10454 */
4312 {0x10456,0x10456,0x10456}, {0x10457,0x10457,0x10457}, /* 10456 */
4313 {0x10458,0x10458,0x10458}, {0x10459,0x10459,0x10459}, /* 10458 */
4314 {0x1045A,0x1045A,0x1045A}, {0x1045B,0x1045B,0x1045B}, /* 1045A */
4315 {0x1045C,0x1045C,0x1045C}, {0x1045D,0x1045D,0x1045D}, /* 1045C */
4316 {0x1045E,0x1045E,0x1045E}, {0x1045F,0x1045F,0x1045F}, /* 1045E */
4317 {0x10460,0x10460,0x10460}, {0x10461,0x10461,0x10461}, /* 10460 */
4318 {0x10462,0x10462,0x10462}, {0x10463,0x10463,0x10463}, /* 10462 */
4319 {0x10464,0x10464,0x10464}, {0x10465,0x10465,0x10465}, /* 10464 */
4320 {0x10466,0x10466,0x10466}, {0x10467,0x10467,0x10467}, /* 10466 */
4321 {0x10468,0x10468,0x10468}, {0x10469,0x10469,0x10469}, /* 10468 */
4322 {0x1046A,0x1046A,0x1046A}, {0x1046B,0x1046B,0x1046B}, /* 1046A */
4323 {0x1046C,0x1046C,0x1046C}, {0x1046D,0x1046D,0x1046D}, /* 1046C */
4324 {0x1046E,0x1046E,0x1046E}, {0x1046F,0x1046F,0x1046F}, /* 1046E */
4325 {0x10470,0x10470,0x10470}, {0x10471,0x10471,0x10471}, /* 10470 */
4326 {0x10472,0x10472,0x10472}, {0x10473,0x10473,0x10473}, /* 10472 */
4327 {0x10474,0x10474,0x10474}, {0x10475,0x10475,0x10475}, /* 10474 */
4328 {0x10476,0x10476,0x10476}, {0x10477,0x10477,0x10477}, /* 10476 */
4329 {0x10478,0x10478,0x10478}, {0x10479,0x10479,0x10479}, /* 10478 */
4330 {0x1047A,0x1047A,0x1047A}, {0x1047B,0x1047B,0x1047B}, /* 1047A */
4331 {0x1047C,0x1047C,0x1047C}, {0x1047D,0x1047D,0x1047D}, /* 1047C */
4332 {0x1047E,0x1047E,0x1047E}, {0x1047F,0x1047F,0x1047F}, /* 1047E */
4333 {0x10480,0x10480,0x10480}, {0x10481,0x10481,0x10481}, /* 10480 */
4334 {0x10482,0x10482,0x10482}, {0x10483,0x10483,0x10483}, /* 10482 */
4335 {0x10484,0x10484,0x10484}, {0x10485,0x10485,0x10485}, /* 10484 */
4336 {0x10486,0x10486,0x10486}, {0x10487,0x10487,0x10487}, /* 10486 */
4337 {0x10488,0x10488,0x10488}, {0x10489,0x10489,0x10489}, /* 10488 */
4338 {0x1048A,0x1048A,0x1048A}, {0x1048B,0x1048B,0x1048B}, /* 1048A */
4339 {0x1048C,0x1048C,0x1048C}, {0x1048D,0x1048D,0x1048D}, /* 1048C */
4340 {0x1048E,0x1048E,0x1048E}, {0x1048F,0x1048F,0x1048F}, /* 1048E */
4341 {0x10490,0x10490,0x10490}, {0x10491,0x10491,0x10491}, /* 10490 */
4342 {0x10492,0x10492,0x10492}, {0x10493,0x10493,0x10493}, /* 10492 */
4343 {0x10494,0x10494,0x10494}, {0x10495,0x10495,0x10495}, /* 10494 */
4344 {0x10496,0x10496,0x10496}, {0x10497,0x10497,0x10497}, /* 10496 */
4345 {0x10498,0x10498,0x10498}, {0x10499,0x10499,0x10499}, /* 10498 */
4346 {0x1049A,0x1049A,0x1049A}, {0x1049B,0x1049B,0x1049B}, /* 1049A */
4347 {0x1049C,0x1049C,0x1049C}, {0x1049D,0x1049D,0x1049D}, /* 1049C */
4348 {0x1049E,0x1049E,0x1049E}, {0x1049F,0x1049F,0x1049F}, /* 1049E */
4349 {0x104A0,0x104A0,0x104A0}, {0x104A1,0x104A1,0x104A1}, /* 104A0 */
4350 {0x104A2,0x104A2,0x104A2}, {0x104A3,0x104A3,0x104A3}, /* 104A2 */
4351 {0x104A4,0x104A4,0x104A4}, {0x104A5,0x104A5,0x104A5}, /* 104A4 */
4352 {0x104A6,0x104A6,0x104A6}, {0x104A7,0x104A7,0x104A7}, /* 104A6 */
4353 {0x104A8,0x104A8,0x104A8}, {0x104A9,0x104A9,0x104A9}, /* 104A8 */
4354 {0x104AA,0x104AA,0x104AA}, {0x104AB,0x104AB,0x104AB}, /* 104AA */
4355 {0x104AC,0x104AC,0x104AC}, {0x104AD,0x104AD,0x104AD}, /* 104AC */
4356 {0x104AE,0x104AE,0x104AE}, {0x104AF,0x104AF,0x104AF}, /* 104AE */
4357 {0x104B0,0x104B0,0x104B0}, {0x104B1,0x104B1,0x104B1}, /* 104B0 */
4358 {0x104B2,0x104B2,0x104B2}, {0x104B3,0x104B3,0x104B3}, /* 104B2 */
4359 {0x104B4,0x104B4,0x104B4}, {0x104B5,0x104B5,0x104B5}, /* 104B4 */
4360 {0x104B6,0x104B6,0x104B6}, {0x104B7,0x104B7,0x104B7}, /* 104B6 */
4361 {0x104B8,0x104B8,0x104B8}, {0x104B9,0x104B9,0x104B9}, /* 104B8 */
4362 {0x104BA,0x104BA,0x104BA}, {0x104BB,0x104BB,0x104BB}, /* 104BA */
4363 {0x104BC,0x104BC,0x104BC}, {0x104BD,0x104BD,0x104BD}, /* 104BC */
4364 {0x104BE,0x104BE,0x104BE}, {0x104BF,0x104BF,0x104BF}, /* 104BE */
4365 {0x104C0,0x104C0,0x104C0}, {0x104C1,0x104C1,0x104C1}, /* 104C0 */
4366 {0x104C2,0x104C2,0x104C2}, {0x104C3,0x104C3,0x104C3}, /* 104C2 */
4367 {0x104C4,0x104C4,0x104C4}, {0x104C5,0x104C5,0x104C5}, /* 104C4 */
4368 {0x104C6,0x104C6,0x104C6}, {0x104C7,0x104C7,0x104C7}, /* 104C6 */
4369 {0x104C8,0x104C8,0x104C8}, {0x104C9,0x104C9,0x104C9}, /* 104C8 */
4370 {0x104CA,0x104CA,0x104CA}, {0x104CB,0x104CB,0x104CB}, /* 104CA */
4371 {0x104CC,0x104CC,0x104CC}, {0x104CD,0x104CD,0x104CD}, /* 104CC */
4372 {0x104CE,0x104CE,0x104CE}, {0x104CF,0x104CF,0x104CF}, /* 104CE */
4373 {0x104D0,0x104D0,0x104D0}, {0x104D1,0x104D1,0x104D1}, /* 104D0 */
4374 {0x104D2,0x104D2,0x104D2}, {0x104D3,0x104D3,0x104D3}, /* 104D2 */
4375 {0x104D4,0x104D4,0x104D4}, {0x104D5,0x104D5,0x104D5}, /* 104D4 */
4376 {0x104D6,0x104D6,0x104D6}, {0x104D7,0x104D7,0x104D7}, /* 104D6 */
4377 {0x104D8,0x104D8,0x104D8}, {0x104D9,0x104D9,0x104D9}, /* 104D8 */
4378 {0x104DA,0x104DA,0x104DA}, {0x104DB,0x104DB,0x104DB}, /* 104DA */
4379 {0x104DC,0x104DC,0x104DC}, {0x104DD,0x104DD,0x104DD}, /* 104DC */
4380 {0x104DE,0x104DE,0x104DE}, {0x104DF,0x104DF,0x104DF}, /* 104DE */
4381 {0x104E0,0x104E0,0x104E0}, {0x104E1,0x104E1,0x104E1}, /* 104E0 */
4382 {0x104E2,0x104E2,0x104E2}, {0x104E3,0x104E3,0x104E3}, /* 104E2 */
4383 {0x104E4,0x104E4,0x104E4}, {0x104E5,0x104E5,0x104E5}, /* 104E4 */
4384 {0x104E6,0x104E6,0x104E6}, {0x104E7,0x104E7,0x104E7}, /* 104E6 */
4385 {0x104E8,0x104E8,0x104E8}, {0x104E9,0x104E9,0x104E9}, /* 104E8 */
4386 {0x104EA,0x104EA,0x104EA}, {0x104EB,0x104EB,0x104EB}, /* 104EA */
4387 {0x104EC,0x104EC,0x104EC}, {0x104ED,0x104ED,0x104ED}, /* 104EC */
4388 {0x104EE,0x104EE,0x104EE}, {0x104EF,0x104EF,0x104EF}, /* 104EE */
4389 {0x104F0,0x104F0,0x104F0}, {0x104F1,0x104F1,0x104F1}, /* 104F0 */
4390 {0x104F2,0x104F2,0x104F2}, {0x104F3,0x104F3,0x104F3}, /* 104F2 */
4391 {0x104F4,0x104F4,0x104F4}, {0x104F5,0x104F5,0x104F5}, /* 104F4 */
4392 {0x104F6,0x104F6,0x104F6}, {0x104F7,0x104F7,0x104F7}, /* 104F6 */
4393 {0x104F8,0x104F8,0x104F8}, {0x104F9,0x104F9,0x104F9}, /* 104F8 */
4394 {0x104FA,0x104FA,0x104FA}, {0x104FB,0x104FB,0x104FB}, /* 104FA */
4395 {0x104FC,0x104FC,0x104FC}, {0x104FD,0x104FD,0x104FD}, /* 104FC */
4396 {0x104FE,0x104FE,0x104FE}, {0x104FF,0x104FF,0x104FF} /* 104FE */
4397};
4398
4399
4400MY_UNICASE_CHARACTER *my_unicase_pages_unicode520[4352]=
4401{
4402 u520p00, u520p01, u520p02, u520p03, u520p04, u520p05, NULL, NULL,
4403 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4404 u520p10, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4405 NULL, NULL, NULL, NULL, NULL, u520p1D, u520p1E, u520p1F,
4406 NULL, u520p21, NULL, NULL, u520p24, NULL, NULL, NULL,
4407 NULL, NULL, NULL, NULL, u520p2C, u520p2D, NULL, NULL,
4408 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4409 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4410 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4411 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4412 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4413 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4414 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4415 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4416 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4417 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4418 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4419 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4420 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4421 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4422 NULL, NULL, NULL, NULL, NULL, NULL, u520pA6, u520pA7,
4423 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4424 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4425 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4426 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4427 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4428 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4429 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4430 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4431 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4432 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
4433 NULL, NULL, NULL, NULL, NULL, NULL, NULL, u520pFF,
4434 NULL, NULL, NULL, NULL,u520p104, NULL, NULL, NULL,
4435};
4436
4437
4438MY_UNICASE_INFO my_unicase_unicode520=
4439{
4440 0x104FF,
4441 my_unicase_pages_unicode520
4442};
4443
4444
4445static inline void
4446my_tosort_unicode(MY_UNICASE_INFO *uni_plane, my_wc_t *wc, uint flags)
4447{
4448 if (*wc <= uni_plane->maxchar)
4449 {
4450 MY_UNICASE_CHARACTER *page;
4451 if ((page= uni_plane->page[*wc >> 8]))
4452 *wc= (flags & MY_CS_LOWER_SORT) ?
4453 page[*wc & 0xFF].tolower :
4454 page[*wc & 0xFF].sort;
4455 }
4456 else
4457 {
4458 *wc= MY_CS_REPLACEMENT_CHARACTER;
4459 }
4460}
4461
4462
4463/*
4464** Compare string against string with wildcard
4465** This function is used in UTF8 and UCS2
4466**
4467** 0 if matched
4468** -1 if not matched with wildcard
4469** 1 if matched with wildcard
4470*/
4471
4472static
4473int my_wildcmp_unicode_impl(CHARSET_INFO *cs,
4474 const char *str,const char *str_end,
4475 const char *wildstr,const char *wildend,
4476 int escape, int w_one, int w_many,
4477 MY_UNICASE_INFO *weights, int recurse_level)
4478{
4479 int result= -1; /* Not found, using wildcards */
4480 my_wc_t s_wc, w_wc;
4481 int scan;
4482 int (*mb_wc)(CHARSET_INFO *, my_wc_t *,
4483 const uchar *, const uchar *);
4484 mb_wc= cs->cset->mb_wc;
4485
4486 if (my_string_stack_guard && my_string_stack_guard(recurse_level))
4487 return 1;
4488 while (wildstr != wildend)
4489 {
4490 while (1)
4491 {
4492 my_bool escaped= 0;
4493 if ((scan= mb_wc(cs, &w_wc, (const uchar*)wildstr,
4494 (const uchar*)wildend)) <= 0)
4495 return 1;
4496
4497 if (w_wc == (my_wc_t) w_many)
4498 {
4499 result= 1; /* Found an anchor char */
4500 break;
4501 }
4502
4503 wildstr+= scan;
4504 if (w_wc == (my_wc_t) escape && wildstr < wildend)
4505 {
4506 if ((scan= mb_wc(cs, &w_wc, (const uchar*)wildstr,
4507 (const uchar*)wildend)) <= 0)
4508 return 1;
4509 wildstr+= scan;
4510 escaped= 1;
4511 }
4512
4513 if ((scan= mb_wc(cs, &s_wc, (const uchar*)str,
4514 (const uchar*)str_end)) <= 0)
4515 return 1;
4516 str+= scan;
4517
4518 if (!escaped && w_wc == (my_wc_t) w_one)
4519 {
4520 result= 1; /* Found an anchor char */
4521 }
4522 else
4523 {
4524 if (weights)
4525 {
4526 my_tosort_unicode(weights, &s_wc, cs->state);
4527 my_tosort_unicode(weights, &w_wc, cs->state);
4528 }
4529 if (s_wc != w_wc)
4530 return 1; /* No match */
4531 }
4532 if (wildstr == wildend)
4533 return (str != str_end); /* Match if both are at end */
4534 }
4535
4536
4537 if (w_wc == (my_wc_t) w_many)
4538 { /* Found w_many */
4539
4540 /* Remove any '%' and '_' from the wild search string */
4541 for ( ; wildstr != wildend ; )
4542 {
4543 if ((scan= mb_wc(cs, &w_wc, (const uchar*)wildstr,
4544 (const uchar*)wildend)) <= 0)
4545 return 1;
4546
4547 if (w_wc == (my_wc_t)w_many)
4548 {
4549 wildstr+= scan;
4550 continue;
4551 }
4552
4553 if (w_wc == (my_wc_t)w_one)
4554 {
4555 wildstr+= scan;
4556 if ((scan= mb_wc(cs, &s_wc, (const uchar*)str,
4557 (const uchar*)str_end)) <=0)
4558 return 1;
4559 str+= scan;
4560 continue;
4561 }
4562 break; /* Not a wild character */
4563 }
4564
4565 if (wildstr == wildend)
4566 return 0; /* Ok if w_many is last */
4567
4568 if (str == str_end)
4569 return -1;
4570
4571 if ((scan= mb_wc(cs, &w_wc, (const uchar*)wildstr,
4572 (const uchar*)wildend)) <=0)
4573 return 1;
4574 wildstr+= scan;
4575
4576 if (w_wc == (my_wc_t)escape)
4577 {
4578 if (wildstr < wildend)
4579 {
4580 if ((scan= mb_wc(cs, &w_wc, (const uchar*)wildstr,
4581 (const uchar*)wildend)) <=0)
4582 return 1;
4583 wildstr+= scan;
4584 }
4585 }
4586
4587 while (1)
4588 {
4589 /* Skip until the first character from wildstr is found */
4590 while (str != str_end)
4591 {
4592 if ((scan= mb_wc(cs, &s_wc, (const uchar*)str,
4593 (const uchar*)str_end)) <=0)
4594 return 1;
4595 if (weights)
4596 {
4597 my_tosort_unicode(weights, &s_wc, cs->state);
4598 my_tosort_unicode(weights, &w_wc, cs->state);
4599 }
4600
4601 if (s_wc == w_wc)
4602 break;
4603 str+= scan;
4604 }
4605 if (str == str_end)
4606 return -1;
4607
4608 str+= scan;
4609 result= my_wildcmp_unicode_impl(cs, str, str_end, wildstr, wildend,
4610 escape, w_one, w_many,
4611 weights, recurse_level + 1);
4612 if (result <= 0)
4613 return result;
4614 }
4615 }
4616 }
4617 return (str != str_end ? 1 : 0);
4618}
4619
4620
4621int
4622my_wildcmp_unicode(CHARSET_INFO *cs,
4623 const char *str,const char *str_end,
4624 const char *wildstr,const char *wildend,
4625 int escape, int w_one, int w_many,
4626 MY_UNICASE_INFO *weights)
4627{
4628 return my_wildcmp_unicode_impl(cs, str, str_end,
4629 wildstr, wildend,
4630 escape, w_one, w_many, weights, 1);
4631}
4632
4633
4634/**
4635 Pad buffer with weights for space characters.
4636
4637 @details
4638 This functions fills the buffer pointed by "str"
4639 with weights of space character. Not more than
4640 "nweights" weights are put. If at some iteration
4641 step only a half of weight can fit
4642 (which is possible if buffer length is an odd number)
4643 then a half of this weight is put - this gives
4644 a little bit better ORDER BY result for long strings.
4645
4646 @str Buffer
4647 @strend End of buffer
4648 @nweights Number of weights
4649
4650 @return Result length
4651*/
4652
4653static size_t
4654my_strxfrm_pad_nweights_unicode(uchar *str, uchar *strend, size_t nweights)
4655{
4656 uchar *str0;
4657 DBUG_ASSERT(str && str <= strend);
4658 for (str0= str; str < strend && nweights; nweights--)
4659 {
4660 *str++= 0x00;
4661 if (str < strend)
4662 *str++= 0x20;
4663 }
4664 return str - str0;
4665}
4666
4667
4668/**
4669 Pad buffer with weights for space characters.
4670
4671 @details
4672 This functions fills the buffer pointed by "str"
4673 with weights of space character. Putting half of weight
4674 (when buffer length is an odd number) is OK.
4675
4676 @str Buffer
4677 @strend End of buffer
4678
4679 @return Result length
4680*/
4681
4682static size_t
4683my_strxfrm_pad_unicode(uchar *str, uchar *strend)
4684{
4685 uchar *str0= str;
4686 DBUG_ASSERT(str && str <= strend);
4687 for ( ; str < strend ; )
4688 {
4689 *str++= 0x00;
4690 if (str < strend)
4691 *str++= 0x20;
4692 }
4693 return str - str0;
4694}
4695
4696
4697size_t my_strnxfrm_unicode_internal(CHARSET_INFO *cs,
4698 uchar *dst, uchar *de, uint *nweights,
4699 const uchar *src, const uchar *se)
4700{
4701 my_wc_t UNINIT_VAR(wc);
4702 int res;
4703 uchar *dst0= dst;
4704 MY_UNICASE_INFO *uni_plane= (cs->state & MY_CS_BINSORT) ?
4705 NULL : cs->caseinfo;
4706
4707 DBUG_ASSERT(src || !se);
4708
4709 for (; dst < de && *nweights; (*nweights)--)
4710 {
4711 if ((res= cs->cset->mb_wc(cs, &wc, src, se)) <= 0)
4712 break;
4713 src+= res;
4714
4715 if (uni_plane)
4716 my_tosort_unicode(uni_plane, &wc, cs->state);
4717
4718 *dst++= (uchar) (wc >> 8);
4719 if (dst < de)
4720 *dst++= (uchar) (wc & 0xFF);
4721 }
4722 return dst - dst0;
4723}
4724
4725
4726/*
4727 Store sorting weights using 2 bytes per character.
4728
4729 This function is shared between
4730 - utf8mb3_general_ci, utf8_bin, ucs2_general_ci, ucs2_bin
4731 which support BMP only (U+0000..U+FFFF).
4732 - utf8mb4_general_ci, utf16_general_ci, utf32_general_ci,
4733 which map all supplementary characters to weight 0xFFFD.
4734*/
4735size_t
4736my_strnxfrm_unicode(CHARSET_INFO *cs,
4737 uchar *dst, size_t dstlen, uint nweights,
4738 const uchar *src, size_t srclen, uint flags)
4739{
4740 uchar *dst0= dst;
4741 uchar *de= dst + dstlen;
4742 dst+= my_strnxfrm_unicode_internal(cs, dst, de, &nweights,
4743 src, src + srclen);
4744 DBUG_ASSERT(dst <= de); /* Safety */
4745
4746 if (dst < de && nweights && (flags & MY_STRXFRM_PAD_WITH_SPACE))
4747 dst+= my_strxfrm_pad_nweights_unicode(dst, de, nweights);
4748
4749 my_strxfrm_desc_and_reverse(dst0, dst, flags, 0);
4750
4751 if ((flags & MY_STRXFRM_PAD_TO_MAXLEN) && dst < de)
4752 dst+= my_strxfrm_pad_unicode(dst, de);
4753 return dst - dst0;
4754}
4755
4756
4757size_t
4758my_strnxfrm_unicode_nopad(CHARSET_INFO *cs,
4759 uchar *dst, size_t dstlen, uint nweights,
4760 const uchar *src, size_t srclen, uint flags)
4761{
4762 uchar *dst0= dst;
4763 uchar *de= dst + dstlen;
4764 dst+= my_strnxfrm_unicode_internal(cs, dst, de, &nweights,
4765 src, src + srclen);
4766 DBUG_ASSERT(dst <= de); /* Safety */
4767
4768 if (dst < de && nweights && (flags & MY_STRXFRM_PAD_WITH_SPACE))
4769 {
4770 size_t len= de - dst;
4771 set_if_smaller(len, nweights * 2);
4772 memset(dst, 0x00, len);
4773 dst+= len;
4774 }
4775
4776 my_strxfrm_desc_and_reverse(dst0, dst, flags, 0);
4777
4778 if ((flags & MY_STRXFRM_PAD_TO_MAXLEN) && dst < de)
4779 {
4780 memset(dst, 0x00, de - dst);
4781 dst= de;
4782 }
4783 return dst - dst0;
4784}
4785
4786/*
4787 For BMP-only collations that use 2 bytes per weight.
4788*/
4789size_t
4790my_strnxfrmlen_unicode(CHARSET_INFO *cs, size_t len)
4791{
4792
4793 return ((len + cs->mbmaxlen - 1) / cs->mbmaxlen) * 2;
4794}
4795
4796size_t
4797my_strnxfrm_unicode_full_bin_internal(CHARSET_INFO *cs,
4798 uchar *dst, uchar *de, uint *nweights,
4799 const uchar *src, const uchar *se)
4800{
4801 my_wc_t UNINIT_VAR(wc);
4802 uchar *dst0= dst;
4803
4804 DBUG_ASSERT(src || !se);
4805 DBUG_ASSERT(cs->state & MY_CS_BINSORT);
4806
4807 for (; dst < de && *nweights; (*nweights)--)
4808 {
4809 int res;
4810 if ((res= cs->cset->mb_wc(cs, &wc, src, se)) <= 0)
4811 break;
4812 src+= res;
4813 *dst++= (uchar) (wc >> 16);
4814 if (dst < de)
4815 {
4816 *dst++= (uchar) ((wc >> 8) & 0xFF);
4817 if (dst < de)
4818 *dst++= (uchar) (wc & 0xFF);
4819 }
4820 }
4821 return dst - dst0;
4822}
4823
4824
4825/*
4826 Store sorting weights using 3 bytes per character.
4827 This function is shared between utf8mb4_bin, utf16_bin, utf32_bin.
4828*/
4829size_t
4830my_strnxfrm_unicode_full_bin(CHARSET_INFO *cs,
4831 uchar *dst, size_t dstlen, uint nweights,
4832 const uchar *src, size_t srclen, uint flags)
4833{
4834 uchar *dst0= dst;
4835 uchar *de= dst + dstlen;
4836
4837 dst+= my_strnxfrm_unicode_full_bin_internal(cs, dst, de, &nweights,
4838 src, src + srclen);
4839 DBUG_ASSERT(dst <= de); /* Safety */
4840
4841 if (flags & MY_STRXFRM_PAD_WITH_SPACE)
4842 {
4843 for ( ; dst < de && nweights; nweights--)
4844 {
4845 *dst++= 0x00;
4846 if (dst < de)
4847 {
4848 *dst++= 0x00;
4849 if (dst < de)
4850 *dst++= 0x20;
4851 }
4852 }
4853 }
4854
4855 my_strxfrm_desc_and_reverse(dst0, dst, flags, 0);
4856
4857 if (flags & MY_STRXFRM_PAD_TO_MAXLEN)
4858 {
4859 while (dst < de)
4860 {
4861 *dst++= 0x00;
4862 if (dst < de)
4863 {
4864 *dst++= 0x00;
4865 if (dst < de)
4866 *dst++= 0x20;
4867 }
4868 }
4869 }
4870 return dst - dst0;
4871}
4872
4873
4874size_t
4875my_strnxfrm_unicode_full_nopad_bin(CHARSET_INFO *cs,
4876 uchar *dst, size_t dstlen, uint nweights,
4877 const uchar *src, size_t srclen, uint flags)
4878{
4879 uchar *dst0= dst;
4880 uchar *de= dst + dstlen;
4881
4882 dst+= my_strnxfrm_unicode_full_bin_internal(cs, dst, de, &nweights,
4883 src, src + srclen);
4884 DBUG_ASSERT(dst <= de); /* Safety */
4885
4886 if (dst < de && nweights && (flags & MY_STRXFRM_PAD_WITH_SPACE))
4887 {
4888 size_t len= de - dst;
4889 set_if_smaller(len, nweights * 3);
4890 memset(dst, 0x00, len);
4891 dst+= len;
4892 }
4893
4894 my_strxfrm_desc_and_reverse(dst0, dst, flags, 0);
4895
4896 if ((flags & MY_STRXFRM_PAD_TO_MAXLEN) && dst < de)
4897 {
4898 memset(dst, 0x00, de - dst);
4899 dst= de;
4900 }
4901 return dst - dst0;
4902}
4903
4904
4905size_t
4906my_strnxfrmlen_unicode_full_bin(CHARSET_INFO *cs, size_t len)
4907{
4908 return ((len + 3) / cs->mbmaxlen) * 3;
4909}
4910#endif /* HAVE_UNIDATA */
4911
4912
4913#ifdef HAVE_CHARSET_utf8
4914
4915/*
4916 We consider bytes with code more than 127 as a letter.
4917 This guarantees that word boundaries work fine with regular
4918 expressions. Note, there is no need to mark byte 255 as a
4919 letter, it is illegal byte in UTF8.
4920*/
4921static const uchar ctype_utf8[] = {
4922 0,
4923 32, 32, 32, 32, 32, 32, 32, 32, 32, 40, 40, 40, 40, 40, 32, 32,
4924 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
4925 72, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
4926 132,132,132,132,132,132,132,132,132,132, 16, 16, 16, 16, 16, 16,
4927 16,129,129,129,129,129,129, 1, 1, 1, 1, 1, 1, 1, 1, 1,
4928 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 16, 16, 16, 16,
4929 16,130,130,130,130,130,130, 2, 2, 2, 2, 2, 2, 2, 2, 2,
4930 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 16, 16, 16, 16, 32,
4931 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
4932 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
4933 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
4934 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
4935 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
4936 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
4937 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
4938 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0
4939};
4940
4941/* The below are taken from usa7 implementation */
4942
4943static const uchar to_lower_utf8[] = {
4944 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
4945 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
4946 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
4947 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
4948 64, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,
4949 112,113,114,115,116,117,118,119,120,121,122, 91, 92, 93, 94, 95,
4950 96, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,
4951 112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,
4952 128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,
4953 144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,
4954 160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,
4955 176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,
4956 192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,
4957 208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,
4958 224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,
4959 240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255
4960};
4961
4962static const uchar to_upper_utf8[] = {
4963 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
4964 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
4965 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
4966 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
4967 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
4968 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
4969 96, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
4970 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,123,124,125,126,127,
4971 128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,
4972 144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,
4973 160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,
4974 176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,
4975 192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,
4976 208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,
4977 224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,
4978 240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255
4979};
4980
4981static int my_utf8_uni(CHARSET_INFO *cs __attribute__((unused)),
4982 my_wc_t * pwc, const uchar *s, const uchar *e)
4983{
4984 uchar c;
4985
4986 if (s >= e)
4987 return MY_CS_TOOSMALL;
4988
4989 c= s[0];
4990 if (c < 0x80)
4991 {
4992 *pwc = c;
4993 return 1;
4994 }
4995 else if (c < 0xc2)
4996 return MY_CS_ILSEQ;
4997 else if (c < 0xe0)
4998 {
4999 if (s+2 > e) /* We need 2 characters */
5000 return MY_CS_TOOSMALL2;
5001
5002 if (!(IS_CONTINUATION_BYTE(s[1])))
5003 return MY_CS_ILSEQ;
5004
5005 *pwc= UTF8MB2_CODE(c, s[1]);
5006 return 2;
5007 }
5008 else if (c < 0xf0)
5009 {
5010 if (s+3 > e) /* We need 3 characters */
5011 return MY_CS_TOOSMALL3;
5012
5013 if (!IS_UTF8MB3_STEP2(c, s[1], s[2]))
5014 return MY_CS_ILSEQ;
5015
5016 *pwc= UTF8MB3_CODE(c, s[1], s[2]);
5017 return 3;
5018 }
5019 return MY_CS_ILSEQ;
5020}
5021
5022
5023/*
5024 The same as above, but without range check
5025 for example, for a null-terminated string
5026*/
5027static int my_utf8_uni_no_range(CHARSET_INFO *cs __attribute__((unused)),
5028 my_wc_t * pwc, const uchar *s)
5029{
5030 uchar c;
5031
5032 c= s[0];
5033 if (c < 0x80)
5034 {
5035 *pwc = c;
5036 return 1;
5037 }
5038
5039 if (c < 0xc2)
5040 return MY_CS_ILSEQ;
5041
5042 if (c < 0xe0)
5043 {
5044 if (!((s[1] ^ 0x80) < 0x40))
5045 return MY_CS_ILSEQ;
5046
5047 *pwc= UTF8MB2_CODE(c, s[1]);
5048 return 2;
5049 }
5050
5051 if (c < 0xf0)
5052 {
5053 if (!IS_UTF8MB3_STEP2(c, s[1], s[2]))
5054 return MY_CS_ILSEQ;
5055
5056 *pwc= UTF8MB3_CODE(c, s[1], s[2]);
5057 return 3;
5058 }
5059 return MY_CS_ILSEQ;
5060}
5061
5062
5063static int my_uni_utf8 (CHARSET_INFO *cs __attribute__((unused)),
5064 my_wc_t wc, uchar *r, uchar *e)
5065{
5066 if (wc < 0x80)
5067 {
5068 if (r >= e)
5069 return MY_CS_TOOSMALL;
5070 *r= (uchar) wc;
5071 return 1;
5072 }
5073 if (wc < 0x800)
5074 {
5075 if (r + 2 > e)
5076 return MY_CS_TOOSMALLN(2);
5077 /* U+0080..U+07FF: 00000xxx.xxyyyyyy -> 110xxxxx 10yyyyyy */
5078 *r++= (uchar) (0xC0 | (wc >> 6));
5079 *r= (uchar) (0x80 | (wc & 0x3F));
5080 return 2;
5081 }
5082 if (wc < 0x10000)
5083 {
5084 if (r + 3 > e)
5085 return MY_CS_TOOSMALLN(3);
5086 /* U+0800..U+FFFF: xxxxyyyy.yyzzzzzz -> 1110xxxx 10yyyyyy 10zzzzzz */
5087 *r++= (uchar) (0xE0 | (wc >> 12));
5088 *r++= (uchar) (0x80 | ((wc >> 6) & 0x3f));
5089 *r= (uchar) (0x80 | (wc & 0x3f));
5090 return 3;
5091 }
5092 return MY_CS_ILUNI;
5093}
5094
5095
5096/*
5097 The same as above, but without range check.
5098*/
5099static int my_uni_utf8_no_range(CHARSET_INFO *cs __attribute__((unused)),
5100 my_wc_t wc, uchar *r)
5101{
5102 int count;
5103
5104 if (wc < 0x80)
5105 count= 1;
5106 else if (wc < 0x800)
5107 count= 2;
5108 else if (wc < 0x10000)
5109 count= 3;
5110 else
5111 return MY_CS_ILUNI;
5112
5113 switch (count)
5114 {
5115 case 3: r[2]= (uchar) (0x80 | (wc & 0x3f)); wc= wc >> 6; wc |= 0x800;
5116 /* fall through */
5117 case 2: r[1]= (uchar) (0x80 | (wc & 0x3f)); wc= wc >> 6; wc |= 0xc0;
5118 /* fall through */
5119 case 1: r[0]= (uchar) wc;
5120 }
5121 return count;
5122}
5123
5124
5125static inline void
5126my_tolower_utf8mb3(MY_UNICASE_INFO *uni_plane, my_wc_t *wc)
5127{
5128 MY_UNICASE_CHARACTER *page;
5129 if ((page= uni_plane->page[(*wc >> 8) & 0xFF]))
5130 *wc= page[*wc & 0xFF].tolower;
5131}
5132
5133
5134static inline void
5135my_toupper_utf8mb3(MY_UNICASE_INFO *uni_plane, my_wc_t *wc)
5136{
5137 MY_UNICASE_CHARACTER *page;
5138 if ((page= uni_plane->page[(*wc >> 8) & 0xFF]))
5139 *wc= page[*wc & 0xFF].toupper;
5140}
5141
5142
5143static size_t my_caseup_utf8(CHARSET_INFO *cs, char *src, size_t srclen,
5144 char *dst, size_t dstlen)
5145{
5146 my_wc_t wc;
5147 int srcres, dstres;
5148 char *srcend= src + srclen, *dstend= dst + dstlen, *dst0= dst;
5149 MY_UNICASE_INFO *uni_plane= cs->caseinfo;
5150 DBUG_ASSERT(src != dst || cs->caseup_multiply == 1);
5151
5152 while ((src < srcend) &&
5153 (srcres= my_utf8_uni(cs, &wc, (uchar *) src, (uchar*) srcend)) > 0)
5154 {
5155 my_toupper_utf8mb3(uni_plane, &wc);
5156 if ((dstres= my_uni_utf8(cs, wc, (uchar*) dst, (uchar*) dstend)) <= 0)
5157 break;
5158 src+= srcres;
5159 dst+= dstres;
5160 }
5161 return (size_t) (dst - dst0);
5162}
5163
5164
5165static void my_hash_sort_utf8_nopad(CHARSET_INFO *cs, const uchar *s, size_t slen,
5166 ulong *nr1, ulong *nr2)
5167{
5168 my_wc_t wc;
5169 int res;
5170 const uchar *e= s+slen;
5171 MY_UNICASE_INFO *uni_plane= cs->caseinfo;
5172 register ulong m1= *nr1, m2= *nr2;
5173
5174 while ((s < e) && (res=my_utf8_uni(cs,&wc, (uchar *)s, (uchar*)e))>0 )
5175 {
5176 my_tosort_unicode(uni_plane, &wc, cs->state);
5177 MY_HASH_ADD_16(m1, m2, wc);
5178 s+= res;
5179 }
5180 *nr1= m1;
5181 *nr2= m2;
5182}
5183
5184
5185static void my_hash_sort_utf8(CHARSET_INFO *cs, const uchar *s, size_t slen,
5186 ulong *nr1, ulong *nr2)
5187{
5188 const uchar *e= s+slen;
5189 /*
5190 Remove end space. We have to do this to be able to compare
5191 'A ' and 'A' as identical
5192 */
5193 while (e > s && e[-1] == ' ')
5194 e--;
5195 my_hash_sort_utf8_nopad(cs, s, e - s, nr1, nr2);
5196}
5197
5198
5199static size_t my_caseup_str_utf8(CHARSET_INFO *cs, char *src)
5200{
5201 my_wc_t wc;
5202 int srcres, dstres;
5203 char *dst= src, *dst0= src;
5204 MY_UNICASE_INFO *uni_plane= cs->caseinfo;
5205 DBUG_ASSERT(cs->caseup_multiply == 1);
5206
5207 while (*src &&
5208 (srcres= my_utf8_uni_no_range(cs, &wc, (uchar *) src)) > 0)
5209 {
5210 my_toupper_utf8mb3(uni_plane, &wc);
5211 if ((dstres= my_uni_utf8_no_range(cs, wc, (uchar*) dst)) <= 0)
5212 break;
5213 src+= srcres;
5214 dst+= dstres;
5215 }
5216 *dst= '\0';
5217 return (size_t) (dst - dst0);
5218}
5219
5220
5221static size_t my_casedn_utf8(CHARSET_INFO *cs, char *src, size_t srclen,
5222 char *dst, size_t dstlen)
5223{
5224 my_wc_t wc;
5225 int srcres, dstres;
5226 char *srcend= src + srclen, *dstend= dst + dstlen, *dst0= dst;
5227 MY_UNICASE_INFO *uni_plane= cs->caseinfo;
5228 DBUG_ASSERT(src != dst || cs->casedn_multiply == 1);
5229
5230 while ((src < srcend) &&
5231 (srcres= my_utf8_uni(cs, &wc, (uchar*) src, (uchar*)srcend)) > 0)
5232 {
5233 my_tolower_utf8mb3(uni_plane, &wc);
5234 if ((dstres= my_uni_utf8(cs, wc, (uchar*) dst, (uchar*) dstend)) <= 0)
5235 break;
5236 src+= srcres;
5237 dst+= dstres;
5238 }
5239 return (size_t) (dst - dst0);
5240}
5241
5242
5243static size_t my_casedn_str_utf8(CHARSET_INFO *cs, char *src)
5244{
5245 my_wc_t wc;
5246 int srcres, dstres;
5247 char *dst= src, *dst0= src;
5248 MY_UNICASE_INFO *uni_plane= cs->caseinfo;
5249 DBUG_ASSERT(cs->casedn_multiply == 1);
5250
5251 while (*src &&
5252 (srcres= my_utf8_uni_no_range(cs, &wc, (uchar *) src)) > 0)
5253 {
5254 my_tolower_utf8mb3(uni_plane, &wc);
5255 if ((dstres= my_uni_utf8_no_range(cs, wc, (uchar*) dst)) <= 0)
5256 break;
5257 src+= srcres;
5258 dst+= dstres;
5259 }
5260
5261 /*
5262 In rare cases lower string can be shorter than
5263 the original string, for example:
5264
5265 "U+0130 LATIN CAPITAL LETTER I WITH DOT ABOVE"
5266 (which is 0xC4B0 in utf8, i.e. two bytes)
5267
5268 is converted into
5269
5270 "U+0069 LATIN SMALL LETTER I"
5271 (which is 0x69 in utf8, i.e. one byte)
5272
5273 So, we need to put '\0' terminator after converting.
5274 */
5275
5276 *dst= '\0';
5277 return (size_t) (dst - dst0);
5278}
5279
5280
5281/*
5282 Compare 0-terminated UTF8 strings.
5283
5284 SYNOPSIS
5285 my_strcasecmp_utf8()
5286 cs character set handler
5287 s First 0-terminated string to compare
5288 t Second 0-terminated string to compare
5289
5290 IMPLEMENTATION
5291
5292 RETURN
5293 - negative number if s < t
5294 - positive number if s > t
5295 - 0 is the strings are equal
5296*/
5297
5298static
5299int my_strcasecmp_utf8(CHARSET_INFO *cs, const char *s, const char *t)
5300{
5301 MY_UNICASE_INFO *uni_plane= cs->caseinfo;
5302 while (s[0] && t[0])
5303 {
5304 my_wc_t s_wc,t_wc;
5305
5306 if ((uchar) s[0] < 128)
5307 {
5308 /*
5309 s[0] is between 0 and 127.
5310 It represents a single byte character.
5311 Convert it into weight according to collation.
5312 */
5313 s_wc= plane00[(uchar) s[0]].tolower;
5314 s++;
5315 }
5316 else
5317 {
5318 int res;
5319
5320 /*
5321 Scan a multibyte character.
5322
5323 In the future it is worth to write a special version of my_utf8_uni()
5324 for 0-terminated strings which will not take in account length. Now
5325 we call the regular version of my_utf8_uni() with s+3 in the
5326 last argument. s+3 is enough to scan any multibyte sequence.
5327
5328 Calling the regular version of my_utf8_uni is safe for 0-terminated
5329 strings: we will never lose the end of the string:
5330 If we have 0 character in the middle of a multibyte sequence,
5331 then my_utf8_uni will always return a negative number, so the
5332 loop with finish.
5333 */
5334
5335 res= my_utf8_uni(cs,&s_wc, (const uchar*)s, (const uchar*) s + 3);
5336
5337 /*
5338 In the case of wrong multibyte sequence we will
5339 call strcmp() for byte-to-byte comparison.
5340 */
5341 if (res <= 0)
5342 return strcmp(s, t);
5343 s+= res;
5344
5345 /* Convert Unicode code into weight according to collation */
5346 my_tolower_utf8mb3(uni_plane, &s_wc);
5347 }
5348
5349
5350 /* Do the same for the second string */
5351
5352 if ((uchar) t[0] < 128)
5353 {
5354 /* Convert single byte character into weight */
5355 t_wc= plane00[(uchar) t[0]].tolower;
5356 t++;
5357 }
5358 else
5359 {
5360 int res=my_utf8_uni(cs,&t_wc, (const uchar*)t, (const uchar*) t + 3);
5361 if (res <= 0)
5362 return strcmp(s, t);
5363 t+= res;
5364
5365 /* Convert code into weight */
5366 my_tolower_utf8mb3(uni_plane, &t_wc);
5367 }
5368
5369 /* Now we have two weights, let's compare them */
5370 if ( s_wc != t_wc )
5371 return ((int) s_wc) - ((int) t_wc);
5372 }
5373 return ((int)(uchar)s[0]) - ((int) (uchar) t[0]);
5374}
5375
5376
5377static
5378int my_wildcmp_utf8(CHARSET_INFO *cs,
5379 const char *str,const char *str_end,
5380 const char *wildstr,const char *wildend,
5381 int escape, int w_one, int w_many)
5382{
5383 MY_UNICASE_INFO *uni_plane= cs->caseinfo;
5384 return my_wildcmp_unicode(cs,str,str_end,wildstr,wildend,
5385 escape,w_one,w_many,uni_plane);
5386}
5387
5388
5389static
5390int my_charlen_utf8(CHARSET_INFO *cs __attribute__((unused)),
5391 const uchar *s, const uchar *e)
5392{
5393 uchar c;
5394
5395 if (s >= e)
5396 return MY_CS_TOOSMALL;
5397
5398 c= s[0];
5399 if (c < 0xf0)
5400 return my_valid_mbcharlen_utf8mb3(s, e);
5401
5402 return MY_CS_ILSEQ;
5403}
5404
5405
5406#define MY_FUNCTION_NAME(x) my_ ## x ## _utf8
5407#define CHARLEN(cs,str,end) my_charlen_utf8(cs,str,end)
5408#define DEFINE_WELL_FORMED_CHAR_LENGTH_USING_CHARLEN
5409#include "ctype-mb.ic"
5410#undef MY_FUNCTION_NAME
5411#undef CHARLEN
5412#undef DEFINE_WELL_FORMED_CHAR_LENGTH_USING_CHARLEN
5413/* my_well_formed_char_length_utf8 */
5414
5415
5416static inline int my_weight_mb1_utf8_general_ci(uchar b)
5417{
5418 return (int) plane00[b & 0xFF].sort;
5419}
5420
5421
5422static inline int my_weight_mb2_utf8_general_ci(uchar b0, uchar b1)
5423{
5424 my_wc_t wc= UTF8MB2_CODE(b0, b1);
5425 MY_UNICASE_CHARACTER *page= my_unicase_pages_default[wc >> 8];
5426 return (int) (page ? page[wc & 0xFF].sort : wc);
5427}
5428
5429
5430static inline int my_weight_mb3_utf8_general_ci(uchar b0, uchar b1, uchar b2)
5431{
5432 my_wc_t wc= UTF8MB3_CODE(b0, b1, b2);
5433 MY_UNICASE_CHARACTER *page= my_unicase_pages_default[wc >> 8];
5434 return (int) (page ? page[wc & 0xFF].sort : wc);
5435}
5436
5437
5438#define MY_FUNCTION_NAME(x) my_ ## x ## _utf8_general_ci
5439#define WEIGHT_ILSEQ(x) (0xFF0000 + (uchar) (x))
5440#define WEIGHT_MB1(x) my_weight_mb1_utf8_general_ci(x)
5441#define WEIGHT_MB2(x,y) my_weight_mb2_utf8_general_ci(x,y)
5442#define WEIGHT_MB3(x,y,z) my_weight_mb3_utf8_general_ci(x,y,z)
5443#include "strcoll.ic"
5444
5445
5446#define DEFINE_STRNNCOLLSP_NOPAD
5447#define MY_FUNCTION_NAME(x) my_ ## x ## _utf8_general_nopad_ci
5448#define WEIGHT_ILSEQ(x) (0xFF0000 + (uchar) (x))
5449#define WEIGHT_MB1(x) my_weight_mb1_utf8_general_ci(x)
5450#define WEIGHT_MB2(x,y) my_weight_mb2_utf8_general_ci(x,y)
5451#define WEIGHT_MB3(x,y,z) my_weight_mb3_utf8_general_ci(x,y,z)
5452#include "strcoll.ic"
5453
5454
5455static inline int my_weight_mb1_utf8_general_mysql500_ci(uchar b)
5456{
5457 return (int) plane00_mysql500[b & 0xFF].sort;
5458}
5459
5460
5461static inline int my_weight_mb2_utf8_general_mysql500_ci(uchar b0, uchar b1)
5462{
5463 my_wc_t wc= UTF8MB2_CODE(b0, b1);
5464 MY_UNICASE_CHARACTER *page= my_unicase_pages_mysql500[wc >> 8];
5465 return (int) (page ? page[wc & 0xFF].sort : wc);
5466}
5467
5468
5469static inline int
5470my_weight_mb3_utf8_general_mysql500_ci(uchar b0, uchar b1, uchar b2)
5471{
5472 my_wc_t wc= UTF8MB3_CODE(b0, b1, b2);
5473 MY_UNICASE_CHARACTER *page= my_unicase_pages_mysql500[wc >> 8];
5474 return (int) (page ? page[wc & 0xFF].sort : wc);
5475}
5476
5477
5478#define MY_FUNCTION_NAME(x) my_ ## x ## _utf8_general_mysql500_ci
5479#define WEIGHT_ILSEQ(x) (0xFF0000 + (uchar) (x))
5480#define WEIGHT_MB1(x) my_weight_mb1_utf8_general_mysql500_ci(x)
5481#define WEIGHT_MB2(x,y) my_weight_mb2_utf8_general_mysql500_ci(x,y)
5482#define WEIGHT_MB3(x,y,z) my_weight_mb3_utf8_general_mysql500_ci(x,y,z)
5483#include "strcoll.ic"
5484
5485
5486#define MY_FUNCTION_NAME(x) my_ ## x ## _utf8_bin
5487#define WEIGHT_ILSEQ(x) (0xFF0000 + (uchar) (x))
5488#define WEIGHT_MB1(x) ((int) (uchar) (x))
5489#define WEIGHT_MB2(x,y) ((int) UTF8MB2_CODE(x,y))
5490#define WEIGHT_MB3(x,y,z) ((int) UTF8MB3_CODE(x,y,z))
5491#include "strcoll.ic"
5492
5493
5494#define DEFINE_STRNNCOLLSP_NOPAD
5495#define MY_FUNCTION_NAME(x) my_ ## x ## _utf8_nopad_bin
5496#define WEIGHT_ILSEQ(x) (0xFF0000 + (uchar) (x))
5497#define WEIGHT_MB1(x) ((int) (uchar) (x))
5498#define WEIGHT_MB2(x,y) ((int) UTF8MB2_CODE(x,y))
5499#define WEIGHT_MB3(x,y,z) ((int) UTF8MB3_CODE(x,y,z))
5500#include "strcoll.ic"
5501
5502/*
5503 TODO-10.2: join this with pad_max_char() in ctype-mb.c
5504*/
5505static void
5506my_fill_utf8_mb(CHARSET_INFO *cs, char *str, size_t length, int fill)
5507{
5508 char *end= str + length;
5509 char buf[10];
5510 char buflen= cs->cset->native_to_mb(cs, (my_wc_t) fill, (uchar*) buf,
5511 (uchar*) buf + sizeof(buf));
5512 DBUG_ASSERT(buflen > 0);
5513 for ( ; str + buflen <= end ; )
5514 {
5515 memcpy(str, buf, buflen);
5516 str+= buflen;
5517 }
5518
5519 for ( ; str < end; )
5520 *str++= ' ';
5521}
5522
5523
5524static void
5525my_fill_utf8(CHARSET_INFO *cs, char *str, size_t length, int fill)
5526{
5527 if (fill < 0x80)
5528 my_fill_8bit(cs, str, length, fill);
5529 else
5530 my_fill_utf8_mb(cs, str, length, fill);
5531}
5532
5533
5534static MY_COLLATION_HANDLER my_collation_utf8_general_ci_handler =
5535{
5536 NULL, /* init */
5537 my_strnncoll_utf8_general_ci,
5538 my_strnncollsp_utf8_general_ci,
5539 my_strnxfrm_unicode,
5540 my_strnxfrmlen_unicode,
5541 my_like_range_mb,
5542 my_wildcmp_utf8,
5543 my_strcasecmp_utf8,
5544 my_instr_mb,
5545 my_hash_sort_utf8,
5546 my_propagate_complex
5547};
5548
5549
5550static MY_COLLATION_HANDLER my_collation_utf8_general_mysql500_ci_handler =
5551{
5552 NULL, /* init */
5553 my_strnncoll_utf8_general_mysql500_ci,
5554 my_strnncollsp_utf8_general_mysql500_ci,
5555 my_strnxfrm_unicode,
5556 my_strnxfrmlen_unicode,
5557 my_like_range_mb,
5558 my_wildcmp_utf8,
5559 my_strcasecmp_utf8,
5560 my_instr_mb,
5561 my_hash_sort_utf8,
5562 my_propagate_complex
5563};
5564
5565
5566static MY_COLLATION_HANDLER my_collation_utf8_bin_handler =
5567{
5568 NULL, /* init */
5569 my_strnncoll_utf8_bin,
5570 my_strnncollsp_utf8_bin,
5571 my_strnxfrm_unicode,
5572 my_strnxfrmlen_unicode,
5573 my_like_range_mb,
5574 my_wildcmp_mb_bin,
5575 my_strcasecmp_mb_bin,
5576 my_instr_mb,
5577 my_hash_sort_mb_bin,
5578 my_propagate_simple
5579};
5580
5581
5582static MY_COLLATION_HANDLER my_collation_utf8_general_nopad_ci_handler =
5583{
5584 NULL, /* init */
5585 my_strnncoll_utf8_general_ci,
5586 my_strnncollsp_utf8_general_nopad_ci,
5587 my_strnxfrm_unicode_nopad,
5588 my_strnxfrmlen_unicode,
5589 my_like_range_mb,
5590 my_wildcmp_utf8,
5591 my_strcasecmp_utf8,
5592 my_instr_mb,
5593 my_hash_sort_utf8_nopad,
5594 my_propagate_complex
5595};
5596
5597
5598static MY_COLLATION_HANDLER my_collation_utf8_nopad_bin_handler =
5599{
5600 NULL, /* init */
5601 my_strnncoll_utf8_bin,
5602 my_strnncollsp_utf8_nopad_bin,
5603 my_strnxfrm_unicode_nopad,
5604 my_strnxfrmlen_unicode,
5605 my_like_range_mb,
5606 my_wildcmp_mb_bin,
5607 my_strcasecmp_mb_bin,
5608 my_instr_mb,
5609 my_hash_sort_mb_nopad_bin,
5610 my_propagate_simple
5611};
5612
5613
5614MY_CHARSET_HANDLER my_charset_utf8_handler=
5615{
5616 NULL, /* init */
5617 my_numchars_mb,
5618 my_charpos_mb,
5619 my_lengthsp_8bit,
5620 my_numcells_mb,
5621 my_utf8_uni,
5622 my_uni_utf8,
5623 my_mb_ctype_mb,
5624 my_caseup_str_utf8,
5625 my_casedn_str_utf8,
5626 my_caseup_utf8,
5627 my_casedn_utf8,
5628 my_snprintf_8bit,
5629 my_long10_to_str_8bit,
5630 my_longlong10_to_str_8bit,
5631 my_fill_utf8,
5632 my_strntol_8bit,
5633 my_strntoul_8bit,
5634 my_strntoll_8bit,
5635 my_strntoull_8bit,
5636 my_strntod_8bit,
5637 my_strtoll10_8bit,
5638 my_strntoull10rnd_8bit,
5639 my_scan_8bit,
5640 my_charlen_utf8,
5641 my_well_formed_char_length_utf8,
5642 my_copy_fix_mb,
5643 my_uni_utf8,
5644};
5645
5646
5647
5648struct charset_info_st my_charset_utf8_general_ci=
5649{
5650 33,0,0, /* number */
5651 MY_CS_COMPILED|MY_CS_PRIMARY|MY_CS_STRNXFRM|MY_CS_UNICODE, /* state */
5652 "utf8", /* cs name */
5653 "utf8_general_ci", /* name */
5654 "", /* comment */
5655 NULL, /* tailoring */
5656 ctype_utf8, /* ctype */
5657 to_lower_utf8, /* to_lower */
5658 to_upper_utf8, /* to_upper */
5659 to_upper_utf8, /* sort_order */
5660 NULL, /* uca */
5661 NULL, /* tab_to_uni */
5662 NULL, /* tab_from_uni */
5663 &my_unicase_default,/* caseinfo */
5664 NULL, /* state_map */
5665 NULL, /* ident_map */
5666 1, /* strxfrm_multiply */
5667 1, /* caseup_multiply */
5668 1, /* casedn_multiply */
5669 1, /* mbminlen */
5670 3, /* mbmaxlen */
5671 0, /* min_sort_char */
5672 0xFFFF, /* max_sort_char */
5673 ' ', /* pad char */
5674 0, /* escape_with_backslash_is_dangerous */
5675 1, /* levels_for_order */
5676 &my_charset_utf8_handler,
5677 &my_collation_utf8_general_ci_handler
5678};
5679
5680
5681struct charset_info_st my_charset_utf8_general_mysql500_ci=
5682{
5683 223,0,0, /* number */
5684 MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE, /* state */
5685 "utf8", /* cs name */
5686 "utf8_general_mysql500_ci", /* name */
5687 "", /* comment */
5688 NULL, /* tailoring */
5689 ctype_utf8, /* ctype */
5690 to_lower_utf8, /* to_lower */
5691 to_upper_utf8, /* to_upper */
5692 to_upper_utf8, /* sort_order */
5693 NULL, /* uca */
5694 NULL, /* tab_to_uni */
5695 NULL, /* tab_from_uni */
5696 &my_unicase_mysql500, /* caseinfo */
5697 NULL, /* state_map */
5698 NULL, /* ident_map */
5699 1, /* strxfrm_multiply */
5700 1, /* caseup_multiply */
5701 1, /* casedn_multiply */
5702 1, /* mbminlen */
5703 3, /* mbmaxlen */
5704 0, /* min_sort_char */
5705 0xFFFF, /* max_sort_char */
5706 ' ', /* pad char */
5707 0, /* escape_with_backslash_is_dangerous */
5708 1, /* levels_for_order */
5709 &my_charset_utf8_handler,
5710 &my_collation_utf8_general_mysql500_ci_handler
5711};
5712
5713
5714struct charset_info_st my_charset_utf8_bin=
5715{
5716 83,0,0, /* number */
5717 MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_BINSORT|MY_CS_UNICODE, /* state */
5718 "utf8", /* cs name */
5719 "utf8_bin", /* name */
5720 "", /* comment */
5721 NULL, /* tailoring */
5722 ctype_utf8, /* ctype */
5723 to_lower_utf8, /* to_lower */
5724 to_upper_utf8, /* to_upper */
5725 NULL, /* sort_order */
5726 NULL, /* uca */
5727 NULL, /* tab_to_uni */
5728 NULL, /* tab_from_uni */
5729 &my_unicase_default,/* caseinfo */
5730 NULL, /* state_map */
5731 NULL, /* ident_map */
5732 1, /* strxfrm_multiply */
5733 1, /* caseup_multiply */
5734 1, /* casedn_multiply */
5735 1, /* mbminlen */
5736 3, /* mbmaxlen */
5737 0, /* min_sort_char */
5738 0xFFFF, /* max_sort_char */
5739 ' ', /* pad char */
5740 0, /* escape_with_backslash_is_dangerous */
5741 1, /* levels_for_order */
5742 &my_charset_utf8_handler,
5743 &my_collation_utf8_bin_handler
5744};
5745
5746
5747struct charset_info_st my_charset_utf8_general_nopad_ci=
5748{
5749 MY_NOPAD_ID(33),0,0, /* number */
5750 MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NOPAD, /* state */
5751 "utf8", /* cs name */
5752 "utf8_general_nopad_ci", /* name */
5753 "", /* comment */
5754 NULL, /* tailoring */
5755 ctype_utf8, /* ctype */
5756 to_lower_utf8, /* to_lower */
5757 to_upper_utf8, /* to_upper */
5758 to_upper_utf8, /* sort_order */
5759 NULL, /* uca */
5760 NULL, /* tab_to_uni */
5761 NULL, /* tab_from_uni */
5762 &my_unicase_default, /* caseinfo */
5763 NULL, /* state_map */
5764 NULL, /* ident_map */
5765 1, /* strxfrm_multiply */
5766 1, /* caseup_multiply */
5767 1, /* casedn_multiply */
5768 1, /* mbminlen */
5769 3, /* mbmaxlen */
5770 0, /* min_sort_char */
5771 0xFFFF, /* max_sort_char */
5772 ' ', /* pad char */
5773 0, /* escape_with_backslash_is_dangerous */
5774 1, /* levels_for_order */
5775 &my_charset_utf8_handler,
5776 &my_collation_utf8_general_nopad_ci_handler
5777};
5778
5779
5780struct charset_info_st my_charset_utf8_nopad_bin=
5781{
5782 MY_NOPAD_ID(83),0,0,/* number */
5783 MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_BINSORT|MY_CS_UNICODE|MY_CS_NOPAD,
5784 "utf8", /* cs name */
5785 "utf8_nopad_bin", /* name */
5786 "", /* comment */
5787 NULL, /* tailoring */
5788 ctype_utf8, /* ctype */
5789 to_lower_utf8, /* to_lower */
5790 to_upper_utf8, /* to_upper */
5791 NULL, /* sort_order */
5792 NULL, /* uca */
5793 NULL, /* tab_to_uni */
5794 NULL, /* tab_from_uni */
5795 &my_unicase_default,/* caseinfo */
5796 NULL, /* state_map */
5797 NULL, /* ident_map */
5798 1, /* strxfrm_multiply */
5799 1, /* caseup_multiply */
5800 1, /* casedn_multiply */
5801 1, /* mbminlen */
5802 3, /* mbmaxlen */
5803 0, /* min_sort_char */
5804 0xFFFF, /* max_sort_char */
5805 ' ', /* pad char */
5806 0, /* escape_with_backslash_is_dangerous */
5807 1, /* levels_for_order */
5808 &my_charset_utf8_handler,
5809 &my_collation_utf8_nopad_bin_handler
5810};
5811
5812
5813#ifdef HAVE_UTF8_GENERAL_CS
5814
5815/*
5816 * These functions bacically do the same as their original, except
5817 * that they return 0 only when two comparing unicode strings are
5818 * strictly the same in case-sensitive way. See "save_diff" local
5819 * variable to what they actually do.
5820 */
5821
5822static int my_strnncoll_utf8_cs(CHARSET_INFO *cs,
5823 const uchar *s, size_t slen,
5824 const uchar *t, size_t tlen,
5825 my_bool t_is_prefix)
5826{
5827 int s_res,t_res;
5828 my_wc_t s_wc,t_wc;
5829 const uchar *se=s+slen;
5830 const uchar *te=t+tlen;
5831 int save_diff = 0;
5832 int diff;
5833 MY_UNICASE_INFO *const *uni_plane= cs->caseinfo;
5834
5835 while ( s < se && t < te )
5836 {
5837 s_res=my_utf8_uni(cs,&s_wc, s, se);
5838 t_res=my_utf8_uni(cs,&t_wc, t, te);
5839
5840 if ( s_res <= 0 || t_res <= 0 )
5841
5842 {
5843 /* Incorrect string, compare by char value */
5844 return ((int)s[0]-(int)t[0]);
5845 }
5846
5847 if ( save_diff == 0 )
5848 {
5849 save_diff = ((int)s_wc) - ((int)t_wc);
5850 }
5851
5852 my_tosort_unicode(uni_plane, &s_wc, cs->state);
5853 my_tosort_unicode(uni_plane, &t_wc, cs->state);
5854
5855 if ( s_wc != t_wc )
5856 {
5857 return ((int) s_wc) - ((int) t_wc);
5858 }
5859
5860 s+=s_res;
5861 t+=t_res;
5862 }
5863 diff = ( (se-s) - (te-t) );
5864 return t_is_prefix ? t-te : ((diff == 0) ? save_diff : diff);
5865}
5866
5867static int my_strnncollsp_utf8_cs(CHARSET_INFO *cs,
5868 const uchar *s, size_t slen,
5869 const uchar *t, size_t tlen)
5870{
5871 int s_res, t_res, res;
5872 my_wc_t s_wc, t_wc;
5873 const uchar *se= s + slen;
5874 const uchar *te= t + tlen;
5875 int save_diff= 0;
5876 MY_UNICASE_INFO *uni_plane= cs->caseinfo;
5877
5878 while ( s < se && t < te )
5879 {
5880 s_res=my_utf8_uni(cs,&s_wc, s, se);
5881 t_res=my_utf8_uni(cs,&t_wc, t, te);
5882
5883 if ( s_res <= 0 || t_res <= 0 )
5884 {
5885 /* Incorrect string, compare by char value */
5886 return ((int)s[0]-(int)t[0]);
5887 }
5888
5889 if ( save_diff == 0 )
5890 {
5891 save_diff = ((int)s_wc) - ((int)t_wc);
5892 }
5893
5894 my_tosort_unicode(uni_plane, &s_wc, cs->state);
5895 my_tosort_unicode(uni_plane, &t_wc, cs->state);
5896
5897 if ( s_wc != t_wc )
5898 {
5899 return ((int) s_wc) - ((int) t_wc);
5900 }
5901
5902 s+=s_res;
5903 t+=t_res;
5904 }
5905
5906 slen= se-s;
5907 tlen= te-t;
5908
5909 /*
5910 The following code uses the fact that in UTF-8
5911 all multibyte characters are greater than space,
5912 and all multibyte head characters are greater than
5913 space. It means if we meet a character greater
5914 than space, it always means that the longer string
5915 is greater. So we can reuse the same loop from the
5916 8bit version, without having to process full multibute
5917 sequences.
5918 */
5919 if ((res= slen == tlen ? 0 :
5920 slen < tlen ?
5921 -my_strnncollsp_padspace_bin(t, tlen) :
5922 my_strnncollsp_padspace_bin(s, slen)))
5923 return res;
5924 return save_diff;
5925}
5926
5927static MY_COLLATION_HANDLER my_collation_cs_handler =
5928{
5929 NULL, /* init */
5930 my_strnncoll_utf8_cs,
5931 my_strnncollsp_utf8_cs,
5932 my_strnxfrm_unicode,
5933 my_strnxfrmlen_unicode,
5934 my_like_range_simple,
5935 my_wildcmp_mb,
5936 my_strcasecmp_utf8,
5937 my_instr_mb,
5938 my_hash_sort_utf8,
5939 my_propagate_simple
5940};
5941
5942struct charset_info_st my_charset_utf8_general_cs=
5943{
5944 254,0,0, /* number */
5945 MY_CS_COMPILED|MY_CS_UNICODE, /* state */
5946 "utf8", /* cs name */
5947 "utf8_general_cs", /* name */
5948 "", /* comment */
5949 NULL, /* tailoring */
5950 ctype_utf8, /* ctype */
5951 to_lower_utf8, /* to_lower */
5952 to_upper_utf8, /* to_upper */
5953 to_upper_utf8, /* sort_order */
5954 NULL, /* uca */
5955 NULL, /* tab_to_uni */
5956 NULL, /* tab_from_uni */
5957 &my_unicase_default,/* caseinfo */
5958 NULL, /* state_map */
5959 NULL, /* ident_map */
5960 1, /* strxfrm_multiply */
5961 1, /* caseup_multiply */
5962 1, /* casedn_multiply */
5963 1, /* mbminlen */
5964 3, /* mbmaxlen */
5965 0, /* min_sort_char */
5966 255, /* max_sort_char */
5967 ' ', /* pad char */
5968 0, /* escape_with_backslash_is_dangerous */
5969 1, /* levels_for_order */
5970 &my_charset_utf8_handler,
5971 &my_collation_cs_handler
5972};
5973#endif /* Cybozu Hack */
5974
5975
5976/*
5977 File system encoding components:
5978
5979Code range Pattern Number Used Unused Blocks
5980-----------------------------------------------------------------------------
598100C0..017F [.][0..4][g..z] 5*20= 100 97 3 Latin1 Supplement + Ext A
59820370..03FF [.][5..9][g..z] 5*20= 100 88 12 Greek + Coptic
59830400..052F [.][g..z][0..6] 20*7= 140 140 137 Cyrillic
59840530..058F [.][g..z][7..8] 20*2= 40 38 2 Armenian
59852160..217F [.][g..z][9] 20*1= 20 16 4 Number Forms
59860180..02AF [.][g..z][a..k] 28*11=220 203 17 Latin Ext B + IPA
59871E00..0EFF [.][g..z][l..r] 20*7= 140 136 4 Latin Additional Extended
59881F00..1FFF [.][g..z][s..z] 20*8= 160 144 16 Greek Extended
5989.... .... [.][a..f][g..z] 6*20= 120 0 120 RESERVED
599024B6..24E9 [.][@][a..z] 26 26 0 Enclosed Alphanumerics
5991FF21..FF5A [.][a..z][@] 26 26 0 Full Width forms
5992
5993All other characters are encoded using five bytes:
5994
5995[.][0..9a..z][0..9a..z][0..9a..z][0..9a..z]
5996
5997*/
5998
5999
6000static const uint16 touni[5994]=
6001{
6002 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6003 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6004 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x00C0,
6005 0x00C1,0x00C2,0x00C3,0x00C4,0x00C5,0x00C6,0x00C7,0x00C8,
6006 0x00C9,0x00CA,0x00CB,0x00CC,0x00CD,0x00CE,0x00CF,0x00D0,
6007 0x00D1,0x00D2,0x00D3,0x0000,0x0000,0x0000,0x0000,0x0000,
6008 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x00E0,
6009 0x00E1,0x00E2,0x00E3,0x00E4,0x00E5,0x00E6,0x00E7,0x00E8,
6010 0x00E9,0x00EA,0x00EB,0x00EC,0x00ED,0x00EE,0x00EF,0x00F0,
6011 0x00F1,0x00F2,0x00F3,0x0000,0x0000,0x0000,0x0000,0x0000,
6012 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6013 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6014 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x00D4,
6015 0x00D5,0x00D6,0x0000,0x00D8,0x00D9,0x00DA,0x00DB,0x00DC,
6016 0x00DD,0x00DE,0x0178,0x0100,0x0102,0x0104,0x0106,0x0108,
6017 0x010A,0x010C,0x010E,0x0000,0x0000,0x0000,0x0000,0x0000,
6018 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x00F4,
6019 0x00F5,0x00F6,0x00DF,0x00F8,0x00F9,0x00FA,0x00FB,0x00FC,
6020 0x00FD,0x00FE,0x00FF,0x0101,0x0103,0x0105,0x0107,0x0109,
6021 0x010B,0x010D,0x010F,0x0000,0x0000,0x0000,0x0000,0x0000,
6022 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6023 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6024 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0110,
6025 0x0112,0x0114,0x0116,0x0118,0x011A,0x011C,0x011E,0x0120,
6026 0x0122,0x0124,0x0126,0x0128,0x012A,0x012C,0x012E,0x0000,
6027 0x0132,0x0134,0x0136,0x0000,0x0000,0x0000,0x0000,0x0000,
6028 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0111,
6029 0x0113,0x0115,0x0117,0x0119,0x011B,0x011D,0x011F,0x0121,
6030 0x0123,0x0125,0x0127,0x0129,0x012B,0x012D,0x012F,0x0131,
6031 0x0133,0x0135,0x0137,0x0000,0x0000,0x0000,0x0000,0x0000,
6032 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6033 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6034 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6035 0x0139,0x013B,0x013D,0x013F,0x0141,0x0143,0x0145,0x0147,
6036 0x0000,0x014A,0x014C,0x014E,0x0150,0x0152,0x0154,0x0156,
6037 0x0158,0x015A,0x015C,0x0000,0x0000,0x0000,0x0000,0x0000,
6038 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0138,
6039 0x013A,0x013C,0x013E,0x0140,0x0142,0x0144,0x0146,0x0148,
6040 0x0149,0x014B,0x014D,0x014F,0x0151,0x0153,0x0155,0x0157,
6041 0x0159,0x015B,0x015D,0x0000,0x0000,0x0000,0x0000,0x0000,
6042 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6043 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6044 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x015E,
6045 0x0160,0x0162,0x0164,0x0166,0x0168,0x016A,0x016C,0x016E,
6046 0x0170,0x0172,0x0174,0x0176,0x0179,0x017B,0x017D,0x0000,
6047 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6048 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x015F,
6049 0x0161,0x0163,0x0165,0x0167,0x0169,0x016B,0x016D,0x016F,
6050 0x0171,0x0173,0x0175,0x0177,0x017A,0x017C,0x017E,0x017F,
6051 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6052 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6053 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6054 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6055 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6056 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6057 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6058 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6059 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6060 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6061 0x0000,0x0390,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6062 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6063 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6064 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0386,
6065 0x0388,0x0389,0x038A,0x0000,0x0391,0x0000,0x0393,0x0394,
6066 0x0395,0x0396,0x0397,0x0000,0x0399,0x0000,0x039B,0x039C,
6067 0x039D,0x039E,0x039F,0x0000,0x0000,0x0000,0x0000,0x0000,
6068 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x03AC,
6069 0x03AD,0x03AE,0x03AF,0x03B0,0x03B1,0x03B2,0x03B3,0x03B4,
6070 0x03B5,0x03B6,0x03B7,0x03B8,0x03B9,0x03BA,0x03BB,0x03BC,
6071 0x03BD,0x03BE,0x03BF,0x0000,0x0000,0x0000,0x0000,0x0000,
6072 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6073 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6074 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6075 0x03A1,0x0000,0x0000,0x03A4,0x03A5,0x0000,0x03A7,0x03A8,
6076 0x03A9,0x03AA,0x03AB,0x038C,0x038E,0x038F,0x0000,0x0392,
6077 0x0398,0x03D2,0x03D3,0x0000,0x0000,0x0000,0x0000,0x0000,
6078 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x03C0,
6079 0x03C1,0x03C2,0x03C3,0x03C4,0x03C5,0x03C6,0x03C7,0x03C8,
6080 0x03C9,0x03CA,0x03CB,0x03CC,0x03CD,0x03CE,0x0000,0x03D0,
6081 0x03D1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6082 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6083 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6084 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x03D4,
6085 0x03A6,0x03A0,0x0000,0x0000,0x03DA,0x03DC,0x03DE,0x03E0,
6086 0x03E2,0x03E4,0x03E6,0x03E8,0x03EA,0x03EC,0x03EE,0x039A,
6087 0x0000,0x03A3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6088 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6089 0x03D5,0x03D6,0x03D7,0x03D9,0x03DB,0x03DD,0x03DF,0x03E1,
6090 0x03E3,0x03E5,0x03E7,0x03E9,0x03EB,0x03ED,0x03EF,0x03F0,
6091 0x03F1,0x03F2,0x03F3,0x0000,0x0000,0x0000,0x0000,0x0000,
6092 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6093 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6094 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6095 0x0000,0x0000,0x0000,0x0000,0x03FD,0x03FE,0x03FF,0x0000,
6096 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6097 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6098 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x03F5,
6099 0x03F6,0x03F8,0x03FB,0x03FC,0x0000,0x0000,0x0000,0x0000,
6100 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6101 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6102 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6103 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6104 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6105 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6106 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6107 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6108 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6109 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6110 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6111 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6112 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6113 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6114 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6115 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6116 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6117 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6118 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6119 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6120 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6121 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6122 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6123 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6124 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6125 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6126 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6127 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6128 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6129 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6130 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6131 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6132 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6133 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6134 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6135 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6136 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6137 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6138 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6139 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6140 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6141 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6142 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6143 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6144 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6145 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6146 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6147 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6148 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6149 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6150 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6151 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6152 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6153 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6154 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6155 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6156 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6157 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6158 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6159 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6160 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6161 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6162 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6163 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6164 0x0000,0x24B6,0x24B7,0x24B8,0x24B9,0x24BA,0x24BB,0x24BC,
6165 0x24BD,0x24BE,0x24BF,0x24C0,0x24C1,0x24C2,0x24C3,0x24C4,
6166 0x24C5,0x24C6,0x24C7,0x24C8,0x24C9,0x24CA,0x24CB,0x24CC,
6167 0x24CD,0x24CE,0x24CF,0x0000,0x0000,0x0000,0x0000,0x0000,
6168 0x0000,0x24D0,0x24D1,0x24D2,0x24D3,0x24D4,0x24D5,0x24D6,
6169 0x24D7,0x24D8,0x24D9,0x24DA,0x24DB,0x24DC,0x24DD,0x24DE,
6170 0x24DF,0x24E0,0x24E1,0x24E2,0x24E3,0x24E4,0x24E5,0x24E6,
6171 0x24E7,0x24E8,0x24E9,0x0000,0x0000,0x0000,0x0000,0x0000,
6172 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6173 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6174 0xFF21,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6175 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6176 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6177 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6178 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6179 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6180 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6181 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6182 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6183 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6184 0xFF22,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6185 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6186 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6187 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6188 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6189 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6190 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6191 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6192 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6193 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6194 0xFF23,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6195 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6196 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6197 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6198 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6199 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6200 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6201 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6202 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6203 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6204 0xFF24,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6205 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6206 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6207 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6208 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6209 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6210 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6211 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6212 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6213 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6214 0xFF25,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6215 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6216 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6217 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6218 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6219 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6220 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6221 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6222 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6223 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6224 0xFF26,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6225 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6226 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6227 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6228 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6229 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6230 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6231 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6232 0x0410,0x0424,0x0408,0x0478,0x04A6,0x04CD,0x04F4,0x0000,
6233 0x0544,0x2160,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6234 0xFF27,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6235 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6236 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6237 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6238 0x0000,0x0000,0x01B3,0x01DE,0x0208,0x0230,0x0000,0x0000,
6239 0x0000,0x0000,0x0000,0x0000,0x1E00,0x1E28,0x1E50,0x1E78,
6240 0x1E60,0x1EBE,0x1EE6,0x1F08,0x1F2A,0x0000,0x1F6C,0x1F88,
6241 0x1FAC,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6242 0x0411,0x0425,0x0409,0x047A,0x04A8,0x0000,0x04F6,0x0531,
6243 0x0545,0x2161,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6244 0xFF28,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6245 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6246 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6247 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6248 0x0000,0x0182,0x01B5,0x01E0,0x020A,0x0232,0x0000,0x0000,
6249 0x019D,0x0000,0x0000,0x0000,0x1E02,0x1E2A,0x1E52,0x1E7A,
6250 0x0000,0x1EC0,0x1EE8,0x1F09,0x1F2B,0x0000,0x1F6D,0x1F89,
6251 0x1FAD,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6252 0x0412,0x0426,0x040A,0x047C,0x04AA,0x04D0,0x04F8,0x0532,
6253 0x0546,0x2162,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6254 0xFF29,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6255 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6256 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6257 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6258 0x0000,0x0184,0x01B8,0x01E2,0x020C,0x0000,0x0000,0x0000,
6259 0x0000,0x0000,0x0000,0x0000,0x1E04,0x1E2C,0x1E54,0x1E7C,
6260 0x0000,0x1EC2,0x1EEA,0x1F0A,0x1F2C,0x0000,0x1F6E,0x1F8A,
6261 0x1FAE,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6262 0x0413,0x0427,0x040B,0x047E,0x04AC,0x04D2,0x0000,0x0533,
6263 0x0547,0x2163,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6264 0xFF2A,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6265 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6266 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6267 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6268 0x0000,0x0187,0x0000,0x01E4,0x020E,0x0000,0x0000,0x0193,
6269 0x0000,0x01AE,0x0000,0x0000,0x1E06,0x1E2E,0x1E56,0x1E7E,
6270 0x0000,0x1EC4,0x1EEC,0x1F0B,0x1F2D,0x0000,0x1F6F,0x1F8B,
6271 0x1FAF,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6272 0x0414,0x0428,0x040C,0x0480,0x04AE,0x04D4,0x0000,0x0534,
6273 0x0548,0x2164,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6274 0xFF2B,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6275 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6276 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6277 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6278 0x0000,0x018B,0x0000,0x01E6,0x0210,0x0000,0x0000,0x0000,
6279 0x019F,0x0000,0x0000,0x0000,0x1E08,0x1E30,0x1E58,0x1E80,
6280 0x0000,0x1EC6,0x1EEE,0x1F0C,0x1F2E,0x0000,0x1FBA,0x1F8C,
6281 0x1FB8,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6282 0x0415,0x0429,0x040D,0x0000,0x04B0,0x04D6,0x0000,0x0535,
6283 0x0549,0x2165,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6284 0xFF2C,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6285 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6286 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6287 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6288 0x0000,0x0000,0x0000,0x01E8,0x0212,0x0000,0x0000,0x0000,
6289 0x0000,0x01B1,0x0000,0x0000,0x1E0A,0x1E32,0x1E5A,0x1E82,
6290 0x1EA0,0x1EC8,0x1EF0,0x1F0D,0x1F2F,0x1F59,0x1FBB,0x1F8D,
6291 0x1FB9,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6292 0x0416,0x042A,0x040E,0x048A,0x04B2,0x04D8,0x0000,0x0536,
6293 0x054A,0x2166,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6294 0xFF2D,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6295 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6296 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6297 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6298 0x0000,0x0191,0x0000,0x01EA,0x0214,0x0000,0x0000,0x0194,
6299 0x0000,0x01B2,0x0000,0x0000,0x1E0C,0x1E34,0x1E5C,0x1E84,
6300 0x1EA2,0x1ECA,0x1EF2,0x1F0E,0x1F38,0x0000,0x1FC8,0x1F8E,
6301 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6302 0x0417,0x042B,0x040F,0x048C,0x04B4,0x04DA,0x0000,0x0537,
6303 0x054B,0x2167,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6304 0xFF2E,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6305 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6306 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6307 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6308 0x0000,0x01F6,0x01BC,0x01EC,0x0216,0x0000,0x0000,0x0000,
6309 0x0000,0x0000,0x0000,0x0000,0x1E0E,0x1E36,0x1E5E,0x1E86,
6310 0x1EA4,0x1ECC,0x1EF4,0x1F0F,0x1F39,0x1F5B,0x1FC9,0x1F8F,
6311 0x1FBC,0x1FE8,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6312 0x0418,0x042C,0x0460,0x048E,0x04B6,0x04DC,0x0000,0x0538,
6313 0x054C,0x2168,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6314 0xFF2F,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6315 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6316 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6317 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6318 0x0000,0x0198,0x01C4,0x01EE,0x0218,0x023A,0x0000,0x0000,
6319 0x0000,0x0000,0x0000,0x0000,0x1E10,0x1E38,0x0000,0x1E88,
6320 0x1EA6,0x1ECE,0x1EF6,0x1F18,0x1F3A,0x0000,0x1FCA,0x1F98,
6321 0x0000,0x1FE9,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6322 0x0419,0x042D,0x0462,0x0490,0x04B8,0x04DE,0x0500,0x0539,
6323 0x054D,0x2169,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6324 0xFF30,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6325 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6326 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6327 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6328 0x0000,0x023D,0x01C7,0x0000,0x021A,0x023B,0x0000,0x0000,
6329 0x0000,0x0000,0x0000,0x0000,0x1E12,0x1E3A,0x1E62,0x1E8A,
6330 0x1EA8,0x1ED0,0x1EF8,0x1F19,0x1F3B,0x1F5D,0x1FCB,0x1F99,
6331 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6332 0x041A,0x042E,0x0464,0x0492,0x04BA,0x04E0,0x0502,0x053A,
6333 0x054E,0x216A,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6334 0xFF31,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6335 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6336 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6337 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6338 0x0000,0x0000,0x01CA,0x01F1,0x021C,0x023E,0x0181,0x0000,
6339 0x0000,0x0000,0x0000,0x0000,0x1E14,0x1E3C,0x1E64,0x1E8C,
6340 0x1EAA,0x1ED2,0x0000,0x1F1A,0x1F3C,0x0000,0x1FDA,0x1F9A,
6341 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6342 0x041B,0x042F,0x0466,0x0494,0x04BC,0x04E2,0x0504,0x053B,
6343 0x054F,0x216B,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6344 0xFF32,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6345 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6346 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6347 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6348 0x0000,0x0220,0x01CD,0x01F4,0x021E,0x0000,0x0186,0x0197,
6349 0x0000,0x0000,0x0000,0x0000,0x1E16,0x1E3E,0x1E66,0x1E8E,
6350 0x1EAC,0x1ED4,0x0000,0x1F1B,0x1F3D,0x1F5F,0x1FDB,0x1F9B,
6351 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6352 0x041C,0x0400,0x0468,0x0496,0x04BE,0x04E4,0x0506,0x053C,
6353 0x0550,0x216C,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6354 0xFF33,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6355 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6356 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6357 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6358 0x0000,0x01A0,0x01CF,0x01F8,0x0000,0x0000,0x0000,0x0196,
6359 0x0000,0x0000,0x0000,0x0000,0x1E18,0x1E40,0x1E68,0x1E90,
6360 0x1EAE,0x1ED6,0x0000,0x1F1C,0x1F3E,0x0000,0x1FF8,0x1F9C,
6361 0x0000,0x1FEC,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6362 0x041D,0x0401,0x046A,0x0498,0x04C0,0x04E6,0x0508,0x053D,
6363 0x0551,0x216D,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6364 0xFF34,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6365 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6366 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6367 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6368 0x0000,0x01A2,0x01D1,0x01FA,0x0222,0x0000,0x0189,0x0000,
6369 0x0000,0x01B7,0x0000,0x0000,0x1E1A,0x1E42,0x1E6A,0x1E92,
6370 0x1EB0,0x1ED8,0x0000,0x1F1D,0x1F3F,0x0000,0x1FF9,0x1F9D,
6371 0x1FCC,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6372 0x041E,0x0402,0x046C,0x049A,0x04C1,0x04E8,0x050A,0x053E,
6373 0x0552,0x216E,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6374 0xFF35,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6375 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6376 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6377 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6378 0x0000,0x01A4,0x01D3,0x01FC,0x0224,0x0000,0x018A,0x0000,
6379 0x0000,0x0000,0x0000,0x0000,0x1E1C,0x1E44,0x1E6C,0x1E94,
6380 0x1EB2,0x1EDA,0x0000,0x0000,0x1F48,0x0000,0x1FEA,0x1F9E,
6381 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6382 0x041F,0x0403,0x046E,0x049C,0x04C3,0x04EA,0x050C,0x053F,
6383 0x0553,0x216F,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6384 0xFF36,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6385 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6386 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6387 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6388 0x0000,0x01A7,0x01D5,0x01FE,0x0226,0x0000,0x0000,0x0000,
6389 0x01A6,0x0241,0x0000,0x0000,0x1E1E,0x1E46,0x1E6E,0x0000,
6390 0x1EB4,0x1EDC,0x0000,0x0000,0x1F49,0x0000,0x1FEB,0x1F9F,
6391 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6392 0x0420,0x0404,0x0470,0x049E,0x04C5,0x04EC,0x050E,0x0540,
6393 0x0554,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6394 0xFF37,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6395 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6396 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6397 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6398 0x0000,0x0000,0x01D7,0x0200,0x0228,0x0000,0x018F,0x0000,
6399 0x0000,0x0000,0x0000,0x0000,0x1E20,0x1E48,0x1E70,0x0000,
6400 0x1EB6,0x1EDE,0x0000,0x0000,0x1F4A,0x1F68,0x1FFA,0x1FA8,
6401 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6402 0x0421,0x0405,0x0472,0x04A0,0x04C7,0x04EE,0x0000,0x0541,
6403 0x0555,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6404 0xFF38,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6405 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6406 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6407 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6408 0x0000,0x0000,0x01D9,0x0202,0x022A,0x0000,0x0000,0x0000,
6409 0x0000,0x0000,0x0000,0x0000,0x1E22,0x1E4A,0x1E72,0x0000,
6410 0x1EB8,0x1EE0,0x0000,0x0000,0x1F4B,0x1F69,0x1FFB,0x1FA9,
6411 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6412 0x0422,0x0406,0x0474,0x04A2,0x04C9,0x04F0,0x0000,0x0542,
6413 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6414 0xFF39,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6415 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6416 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6417 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6418 0x0000,0x01AC,0x01DB,0x0204,0x022C,0x0000,0x0190,0x019C,
6419 0x01A9,0x0000,0x0000,0x0000,0x1E24,0x1E4C,0x1E74,0x0000,
6420 0x1EBA,0x1EE2,0x0000,0x1F28,0x1F4C,0x1F6A,0x0000,0x1FAA,
6421 0x1FD8,0x1FFC,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6422 0x0423,0x0407,0x0476,0x04A4,0x04CB,0x04F2,0x0000,0x0543,
6423 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6424 0xFF3A,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6425 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6426 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6427 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6428 0x0000,0x01AF,0x018E,0x0206,0x022E,0x0000,0x0000,0x0000,
6429 0x0000,0x0000,0x0000,0x0000,0x1E26,0x1E4E,0x1E76,0x0000,
6430 0x1EBC,0x1EE4,0x0000,0x1F29,0x1F4D,0x1F6B,0x0000,0x1FAB,
6431 0x1FD9,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6432 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6433 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6434 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6435 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6436 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6437 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6438 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6439 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6440 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6441 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6442 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6443 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6444 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6445 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6446 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6447 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6448 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6449 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6450 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6451 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6452 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6453 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6454 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6455 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6456 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6457 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6458 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6459 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6460 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6461 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6462 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6463 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6464 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6465 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6466 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6467 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6468 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6469 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6470 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6471 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6472 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6473 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6474 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6475 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6476 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6477 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6478 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6479 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6480 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6481 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6482 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6483 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6484 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6485 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6486 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6487 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6488 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6489 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6490 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6491 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6492 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6493 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6494 0xFF41,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6495 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6496 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6497 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6498 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6499 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6500 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6501 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6502 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6503 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6504 0xFF42,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6505 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6506 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6507 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6508 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6509 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6510 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6511 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6512 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6513 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6514 0xFF43,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6515 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6516 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6517 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6518 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6519 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6520 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6521 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6522 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6523 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6524 0xFF44,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6525 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6526 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6527 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6528 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6529 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6530 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6531 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6532 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6533 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6534 0xFF45,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6535 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6536 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6537 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6538 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6539 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6540 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6541 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6542 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6543 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6544 0xFF46,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6545 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6546 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6547 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6548 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6549 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6550 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6551 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6552 0x0430,0x0444,0x0458,0x0479,0x04A7,0x04CE,0x04F5,0x0000,
6553 0x0574,0x2170,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6554 0xFF47,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6555 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6556 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6557 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6558 0x0000,0x0180,0x01B4,0x01DF,0x0209,0x0231,0x0000,0x025D,
6559 0x0271,0x0285,0x0299,0x02AD,0x1E01,0x1E29,0x1E51,0x1E79,
6560 0x1E9B,0x1EBF,0x1EE7,0x1F00,0x1F22,0x0000,0x1F64,0x1F80,
6561 0x1FA4,0x1FD2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6562 0x0431,0x0445,0x0459,0x047B,0x04A9,0x0000,0x04F7,0x0561,
6563 0x0575,0x2171,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6564 0xFF48,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6565 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6566 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6567 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6568 0x0000,0x0183,0x01B6,0x01E1,0x020B,0x0233,0x0000,0x025E,
6569 0x0272,0x0286,0x029A,0x02AE,0x1E03,0x1E2B,0x1E53,0x1E7B,
6570 0x0000,0x1EC1,0x1EE9,0x1F01,0x1F23,0x0000,0x1F65,0x1F81,
6571 0x1FA5,0x1FD3,0x1FF6,0x0000,0x0000,0x0000,0x0000,0x0000,
6572 0x0432,0x0446,0x045A,0x047D,0x04AB,0x04D1,0x04F9,0x0562,
6573 0x0576,0x2172,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6574 0xFF49,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6575 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6576 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6577 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6578 0x0000,0x0185,0x01B9,0x01E3,0x020D,0x0234,0x0000,0x025F,
6579 0x0273,0x0287,0x029B,0x02AF,0x1E05,0x1E2D,0x1E55,0x1E7D,
6580 0x0000,0x1EC3,0x1EEB,0x1F02,0x1F24,0x0000,0x1F66,0x1F82,
6581 0x1FA6,0x0000,0x1FF7,0x0000,0x0000,0x0000,0x0000,0x0000,
6582 0x0433,0x0447,0x045B,0x047F,0x04AD,0x04D3,0x0000,0x0563,
6583 0x0577,0x2173,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6584 0xFF4A,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6585 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6586 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6587 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6588 0x0000,0x0188,0x01BA,0x01E5,0x020F,0x0235,0x0000,0x0260,
6589 0x0274,0x0288,0x029C,0x0000,0x1E07,0x1E2F,0x1E57,0x1E7F,
6590 0x0000,0x1EC5,0x1EED,0x1F03,0x1F25,0x0000,0x1F67,0x1F83,
6591 0x1FA7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6592 0x0434,0x0448,0x045C,0x0481,0x04AF,0x04D5,0x0000,0x0564,
6593 0x0578,0x2174,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6594 0xFF4B,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6595 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6596 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6597 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6598 0x0000,0x018C,0x01BB,0x01E7,0x0211,0x0236,0x0000,0x0261,
6599 0x0275,0x0289,0x029D,0x0000,0x1E09,0x1E31,0x1E59,0x1E81,
6600 0x0000,0x1EC7,0x1EEF,0x1F04,0x1F26,0x1F50,0x1F70,0x1F84,
6601 0x1FB0,0x1FD6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6602 0x0435,0x0449,0x045D,0x0000,0x04B1,0x04D7,0x0000,0x0565,
6603 0x0579,0x2175,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6604 0xFF4C,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6605 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6606 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6607 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6608 0x0000,0x018D,0x0000,0x01E9,0x0213,0x0237,0x0000,0x0262,
6609 0x0276,0x028A,0x029E,0x0000,0x1E0B,0x1E33,0x1E5B,0x1E83,
6610 0x1EA1,0x1EC9,0x1EF1,0x1F05,0x1F27,0x1F51,0x1F71,0x1F85,
6611 0x1FB1,0x1FD7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6612 0x0436,0x044A,0x045E,0x048B,0x04B3,0x04D9,0x0000,0x0566,
6613 0x057A,0x2176,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6614 0xFF4D,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6615 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6616 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6617 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6618 0x0000,0x0192,0x01BE,0x01EB,0x0215,0x0238,0x0000,0x0263,
6619 0x0277,0x028B,0x029F,0x0000,0x1E0D,0x1E35,0x1E5D,0x1E85,
6620 0x1EA3,0x1ECB,0x1EF3,0x1F06,0x1F30,0x1F52,0x1F72,0x1F86,
6621 0x1FB2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6622 0x0437,0x044B,0x045F,0x048D,0x04B5,0x04DB,0x0000,0x0567,
6623 0x057B,0x2177,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6624 0xFF4E,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6625 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6626 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6627 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6628 0x0000,0x0195,0x01BD,0x01ED,0x0217,0x0239,0x0250,0x0264,
6629 0x0278,0x028C,0x02A0,0x0000,0x1E0F,0x1E37,0x1E5F,0x1E87,
6630 0x1EA5,0x1ECD,0x1EF5,0x1F07,0x1F31,0x1F53,0x1F73,0x1F87,
6631 0x1FB3,0x1FE0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6632 0x0438,0x044C,0x0461,0x048F,0x04B7,0x04DD,0x0000,0x0568,
6633 0x057C,0x2178,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6634 0xFF4F,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6635 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6636 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6637 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6638 0x0000,0x0199,0x01C6,0x01EF,0x0219,0x0000,0x0251,0x0265,
6639 0x0279,0x028D,0x02A1,0x0000,0x1E11,0x1E39,0x1E61,0x1E89,
6640 0x1EA7,0x1ECF,0x1EF7,0x1F10,0x1F32,0x1F54,0x1F74,0x1F90,
6641 0x1FB4,0x1FE1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6642 0x0439,0x044D,0x0463,0x0491,0x04B9,0x04DF,0x0501,0x0569,
6643 0x057D,0x2179,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6644 0xFF50,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6645 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6646 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6647 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6648 0x0000,0x019A,0x01C9,0x01F0,0x021B,0x023C,0x0252,0x0266,
6649 0x027A,0x028E,0x02A2,0x0000,0x1E13,0x1E3B,0x1E63,0x1E8B,
6650 0x1EA9,0x1ED1,0x1EF9,0x1F11,0x1F33,0x1F55,0x1F75,0x1F91,
6651 0x0000,0x1FE2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6652 0x043A,0x044E,0x0465,0x0493,0x04BB,0x04E1,0x0503,0x056A,
6653 0x057E,0x217A,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6654 0xFF51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6655 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6656 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6657 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6658 0x0000,0x019B,0x01CC,0x01F3,0x021D,0x0000,0x0253,0x0267,
6659 0x027B,0x028F,0x02A3,0x0000,0x1E15,0x1E3D,0x1E65,0x1E8D,
6660 0x1EAB,0x1ED3,0x0000,0x1F12,0x1F34,0x1F56,0x1F76,0x1F92,
6661 0x1FB6,0x1FE3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6662 0x043B,0x044F,0x0467,0x0495,0x04BD,0x04E3,0x0505,0x056B,
6663 0x057F,0x217B,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6664 0xFF52,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6665 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6666 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6667 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6668 0x0000,0x019E,0x01CE,0x01F5,0x021F,0x023F,0x0254,0x0268,
6669 0x027C,0x0290,0x02A4,0x0000,0x1E17,0x1E3F,0x1E67,0x1E8F,
6670 0x1EAD,0x1ED5,0x0000,0x1F13,0x1F35,0x1F57,0x1F77,0x1F93,
6671 0x1FB7,0x1FE4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6672 0x043C,0x0450,0x0469,0x0497,0x04BF,0x04E5,0x0507,0x056C,
6673 0x0580,0x217C,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6674 0xFF53,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6675 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6676 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6677 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6678 0x0000,0x01A1,0x01D0,0x01F9,0x0221,0x0240,0x0255,0x0269,
6679 0x027D,0x0291,0x02A5,0x0000,0x1E19,0x1E41,0x1E69,0x1E91,
6680 0x1EAF,0x1ED7,0x0000,0x1F14,0x1F36,0x0000,0x1F78,0x1F94,
6681 0x1FC2,0x1FE5,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6682 0x043D,0x0451,0x046B,0x0499,0x0000,0x04E7,0x0509,0x056D,
6683 0x0581,0x217D,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6684 0xFF54,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6685 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6686 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6687 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6688 0x0000,0x01A3,0x01D2,0x01FB,0x0223,0x0000,0x0256,0x026A,
6689 0x027E,0x0292,0x02A6,0x0000,0x1E1B,0x1E43,0x1E6B,0x1E93,
6690 0x1EB1,0x1ED9,0x0000,0x1F15,0x1F37,0x0000,0x1F79,0x1F95,
6691 0x1FC3,0x1FE6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6692 0x043E,0x0452,0x046D,0x049B,0x04C2,0x04E9,0x050B,0x056E,
6693 0x0582,0x217E,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6694 0xFF55,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6695 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6696 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6697 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6698 0x0000,0x01A5,0x01D4,0x01FD,0x0225,0x0000,0x0257,0x026B,
6699 0x027F,0x0293,0x02A7,0x0000,0x1E1D,0x1E45,0x1E6D,0x1E95,
6700 0x1EB3,0x1EDB,0x0000,0x0000,0x1F40,0x0000,0x1F7A,0x1F96,
6701 0x1FC4,0x1FE7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6702 0x043F,0x0453,0x046F,0x049D,0x04C4,0x04EB,0x050D,0x056F,
6703 0x0583,0x217F,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6704 0xFF56,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6705 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6706 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6707 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6708 0x0000,0x01A8,0x01D6,0x01FF,0x0227,0x0000,0x0258,0x026C,
6709 0x0280,0x0294,0x02A8,0x0000,0x1E1F,0x1E47,0x1E6F,0x1E96,
6710 0x1EB5,0x1EDD,0x0000,0x0000,0x1F41,0x0000,0x1F7B,0x1F97,
6711 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6712 0x0440,0x0454,0x0471,0x049F,0x04C6,0x04ED,0x050F,0x0570,
6713 0x0584,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6714 0xFF57,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6715 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6716 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6717 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6718 0x0000,0x01AA,0x01D8,0x0201,0x0229,0x0000,0x0259,0x026D,
6719 0x0281,0x0295,0x02A9,0x0000,0x1E21,0x1E49,0x1E71,0x1E97,
6720 0x1EB7,0x1EDF,0x0000,0x0000,0x1F42,0x1F60,0x1F7C,0x1FA0,
6721 0x1FC6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6722 0x0441,0x0455,0x0473,0x04A1,0x04C8,0x04EF,0x0000,0x0571,
6723 0x0585,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6724 0xFF58,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6725 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6726 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6727 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6728 0x0000,0x01AB,0x01DA,0x0203,0x022B,0x0000,0x025A,0x026E,
6729 0x0282,0x0296,0x02AA,0x0000,0x1E23,0x1E4B,0x1E73,0x1E98,
6730 0x1EB9,0x1EE1,0x0000,0x0000,0x1F43,0x1F61,0x1F7D,0x1FA1,
6731 0x1FC7,0x1FF2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6732 0x0442,0x0456,0x0475,0x04A3,0x04CA,0x04F1,0x0000,0x0572,
6733 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6734 0xFF59,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6735 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6736 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6737 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6738 0x0000,0x01AD,0x01DC,0x0205,0x022D,0x0000,0x025B,0x026F,
6739 0x0283,0x0297,0x02AB,0x0000,0x1E25,0x1E4D,0x1E75,0x1E99,
6740 0x1EBB,0x1EE3,0x0000,0x1F20,0x1F44,0x1F62,0x0000,0x1FA2,
6741 0x1FD0,0x1FF3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6742 0x0443,0x0457,0x0477,0x04A5,0x04CC,0x04F3,0x0000,0x0573,
6743 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6744 0xFF5A,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6745 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6746 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6747 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6748 0x0000,0x01B0,0x01DD,0x0207,0x022F,0x0000,0x025C,0x0270,
6749 0x0284,0x0298,0x02AC,0x0000,0x1E27,0x1E4F,0x1E77,0x1E9A,
6750 0x1EBD,0x1EE5,0x0000,0x1F21,0x1F45,0x1F63,0x0000,0x1FA3,
6751 0x1FD1,0x1FF4
6752};
6753
6754
6755/* 00C0-05FF */
6756static const uint16 uni_0C00_05FF[1344]=
6757{
6758 0x0017,0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,
6759 0x001F,0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,
6760 0x0027,0x0028,0x0029,0x002A,0x0067,0x0068,0x0069,0x0000,
6761 0x006B,0x006C,0x006D,0x006E,0x006F,0x0070,0x0071,0x008A,
6762 0x0037,0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,
6763 0x003F,0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,
6764 0x0047,0x0048,0x0049,0x004A,0x0087,0x0088,0x0089,0x0000,
6765 0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,0x0092,
6766 0x0073,0x0093,0x0074,0x0094,0x0075,0x0095,0x0076,0x0096,
6767 0x0077,0x0097,0x0078,0x0098,0x0079,0x0099,0x007A,0x009A,
6768 0x00B7,0x00D7,0x00B8,0x00D8,0x00B9,0x00D9,0x00BA,0x00DA,
6769 0x00BB,0x00DB,0x00BC,0x00DC,0x00BD,0x00DD,0x00BE,0x00DE,
6770 0x00BF,0x00DF,0x00C0,0x00E0,0x00C1,0x00E1,0x00C2,0x00E2,
6771 0x00C3,0x00E3,0x00C4,0x00E4,0x00C5,0x00E5,0x00C6,0x00E6,
6772 0x0000,0x00E7,0x00C8,0x00E8,0x00C9,0x00E9,0x00CA,0x00EA,
6773 0x0127,0x0108,0x0128,0x0109,0x0129,0x010A,0x012A,0x010B,
6774 0x012B,0x010C,0x012C,0x010D,0x012D,0x010E,0x012E,0x010F,
6775 0x012F,0x0130,0x0111,0x0131,0x0112,0x0132,0x0113,0x0133,
6776 0x0114,0x0134,0x0115,0x0135,0x0116,0x0136,0x0117,0x0137,
6777 0x0118,0x0138,0x0119,0x0139,0x011A,0x013A,0x0157,0x0177,
6778 0x0158,0x0178,0x0159,0x0179,0x015A,0x017A,0x015B,0x017B,
6779 0x015C,0x017C,0x015D,0x017D,0x015E,0x017E,0x015F,0x017F,
6780 0x0160,0x0180,0x0161,0x0181,0x0162,0x0182,0x0163,0x0183,
6781 0x0072,0x0164,0x0184,0x0165,0x0185,0x0166,0x0186,0x0187,
6782 0x1161,0x0A86,0x07B1,0x11B1,0x0801,0x1201,0x0AD6,0x0851,
6783 0x1251,0x0B76,0x0BC6,0x08A1,0x12A1,0x12F1,0x0D52,0x0C66,
6784 0x0D06,0x0941,0x1341,0x0857,0x0947,0x1391,0x0B27,0x0AD7,
6785 0x09E1,0x13E1,0x1431,0x1481,0x0D07,0x07B8,0x14D1,0x08A8,
6786 0x0B21,0x1521,0x0B71,0x1571,0x0BC1,0x15C1,0x0C18,0x0C11,
6787 0x1611,0x0D08,0x1661,0x16B1,0x0D01,0x1701,0x0859,0x0D51,
6788 0x1751,0x08F9,0x0949,0x0762,0x1162,0x07B2,0x11B2,0x0B79,
6789 0x0802,0x1202,0x1252,0x12A2,0x0992,0x1392,0x1342,0x0000,
6790 0x0000,0x0000,0x0000,0x0000,0x09E2,0x0000,0x13E2,0x0A32,
6791 0x0000,0x1432,0x0A82,0x0000,0x1482,0x0AD2,0x14D2,0x0B22,
6792 0x1522,0x0B72,0x1572,0x0BC2,0x15C2,0x0C12,0x1612,0x0C62,
6793 0x1662,0x0CB2,0x16B2,0x0D02,0x1702,0x1752,0x0763,0x1163,
6794 0x07B3,0x11B3,0x0803,0x1203,0x0853,0x1253,0x08A3,0x12A3,
6795 0x08F3,0x12F3,0x0943,0x1343,0x0993,0x1393,0x09E3,0x13E3,
6796 0x1433,0x0A83,0x0000,0x1483,0x0AD3,0x14D3,0x0991,0x0000,
6797 0x0B23,0x1523,0x0B73,0x1573,0x0BC3,0x15C3,0x0C13,0x1613,
6798 0x0C63,0x1663,0x0CB3,0x16B3,0x0D03,0x1703,0x0D53,0x1753,
6799 0x0764,0x1164,0x07B4,0x11B4,0x0804,0x1204,0x0854,0x1254,
6800 0x08A4,0x12A4,0x08F4,0x12F4,0x0944,0x1344,0x0994,0x1394,
6801 0x09E4,0x13E4,0x0A34,0x1434,0x0A84,0x1484,0x0AD4,0x14D4,
6802 0x0AD1,0x1524,0x0B74,0x1574,0x0BC4,0x15C4,0x0C14,0x1614,
6803 0x0C64,0x1664,0x0CB4,0x16B4,0x0D04,0x1704,0x0D54,0x1754,
6804 0x0765,0x1165,0x07B5,0x11B5,0x1205,0x1255,0x12A5,0x12F5,
6805 0x1345,0x1395,0x09E5,0x0A35,0x1435,0x0A31,0x0A85,0x14D5,
6806 0x1525,0x0C19,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6807 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6808 0x1396,0x13E6,0x1436,0x1486,0x14D6,0x1526,0x1576,0x15C6,
6809 0x1616,0x1666,0x16B6,0x1706,0x1756,0x1167,0x11B7,0x1207,
6810 0x1257,0x12A7,0x12F7,0x1347,0x1397,0x13E7,0x1437,0x1487,
6811 0x14D7,0x1527,0x1577,0x15C7,0x1617,0x1667,0x16B7,0x1707,
6812 0x1757,0x1168,0x11B8,0x1208,0x1258,0x12A8,0x12F8,0x1348,
6813 0x1398,0x13E8,0x1438,0x1488,0x14D8,0x1528,0x1578,0x15C8,
6814 0x1618,0x1668,0x16B8,0x1708,0x1758,0x1169,0x11B9,0x1209,
6815 0x1259,0x12A9,0x12F9,0x1349,0x1399,0x13E9,0x1439,0x1489,
6816 0x14D9,0x1529,0x1579,0x15C9,0x1619,0x1669,0x16B9,0x1709,
6817 0x1759,0x116A,0x11BA,0x120A,0x125A,0x12AA,0x12FA,0x134A,
6818 0x139A,0x13EA,0x143A,0x148A,0x14DA,0x152A,0x157A,0x15CA,
6819 0x161A,0x166A,0x16BA,0x170A,0x175A,0x116B,0x11BB,0x120B,
6820 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6821 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6822 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6823 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6824 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6825 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6826 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6827 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6828 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6829 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6830 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6831 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6832 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6833 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6834 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6835 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6836 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6837 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6838 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6839 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6840 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6841 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6842 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6843 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6844 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6845 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6846 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x01F7,0x0000,
6847 0x01F8,0x01F9,0x01FA,0x0000,0x0253,0x0000,0x0254,0x0255,
6848 0x01D9,0x01FC,0x0257,0x01FE,0x01FF,0x0200,0x0201,0x0202,
6849 0x0258,0x0204,0x02A7,0x0206,0x0207,0x0208,0x0209,0x020A,
6850 0x0299,0x0248,0x0000,0x02A9,0x024B,0x024C,0x0298,0x024E,
6851 0x024F,0x0250,0x0251,0x0252,0x0217,0x0218,0x0219,0x021A,
6852 0x021B,0x021C,0x021D,0x021E,0x021F,0x0220,0x0221,0x0222,
6853 0x0223,0x0224,0x0225,0x0226,0x0227,0x0228,0x0229,0x022A,
6854 0x0267,0x0268,0x0269,0x026A,0x026B,0x026C,0x026D,0x026E,
6855 0x026F,0x0270,0x0271,0x0272,0x0273,0x0274,0x0275,0x0000,
6856 0x0277,0x0278,0x0259,0x025A,0x0297,0x02B8,0x02B9,0x02BA,
6857 0x0000,0x02BB,0x029C,0x02BC,0x029D,0x02BD,0x029E,0x02BE,
6858 0x029F,0x02BF,0x02A0,0x02C0,0x02A1,0x02C1,0x02A2,0x02C2,
6859 0x02A3,0x02C3,0x02A4,0x02C4,0x02A5,0x02C5,0x02A6,0x02C6,
6860 0x02C7,0x02C8,0x02C9,0x02CA,0x0000,0x0307,0x0308,0x0000,
6861 0x0309,0x0000,0x0000,0x030A,0x030B,0x02EC,0x02ED,0x02EE,
6862 0x0AF1,0x0B41,0x0B91,0x0BE1,0x0C31,0x0C81,0x0CD1,0x0D21,
6863 0x0732,0x0782,0x07D2,0x0822,0x0872,0x08C2,0x0912,0x0962,
6864 0x0730,0x0780,0x07D0,0x0820,0x0870,0x08C0,0x0910,0x0960,
6865 0x09B0,0x0A00,0x0A50,0x0AA0,0x0AF0,0x0B40,0x0B90,0x0BE0,
6866 0x0C30,0x0C80,0x0CD0,0x0D20,0x0731,0x0781,0x07D1,0x0821,
6867 0x0871,0x08C1,0x0911,0x0961,0x09B1,0x0A01,0x0A51,0x0AA1,
6868 0x1130,0x1180,0x11D0,0x1220,0x1270,0x12C0,0x1310,0x1360,
6869 0x13B0,0x1400,0x1450,0x14A0,0x14F0,0x1540,0x1590,0x15E0,
6870 0x1630,0x1680,0x16D0,0x1720,0x1131,0x1181,0x11D1,0x1221,
6871 0x1271,0x12C1,0x1311,0x1361,0x13B1,0x1401,0x1451,0x14A1,
6872 0x14F1,0x1541,0x1591,0x15E1,0x1631,0x1681,0x16D1,0x1721,
6873 0x1132,0x1182,0x11D2,0x1222,0x1272,0x12C2,0x1312,0x1362,
6874 0x09B2,0x13B2,0x0A02,0x1402,0x0A52,0x1452,0x0AA2,0x14A2,
6875 0x0AF2,0x14F2,0x0B42,0x1542,0x0B92,0x1592,0x0BE2,0x15E2,
6876 0x0C32,0x1632,0x0C82,0x1682,0x0CD2,0x16D2,0x0D22,0x1722,
6877 0x0733,0x1133,0x0783,0x1183,0x07D3,0x11D3,0x0823,0x1223,
6878 0x0873,0x1273,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6879 0x0000,0x0000,0x0913,0x1313,0x0963,0x1363,0x09B3,0x13B3,
6880 0x0A03,0x1403,0x0A53,0x1453,0x0AA3,0x14A3,0x0AF3,0x14F3,
6881 0x0B43,0x1543,0x0B93,0x1593,0x0BE3,0x15E3,0x0C33,0x1633,
6882 0x0C83,0x1683,0x0CD3,0x16D3,0x0D23,0x1723,0x0734,0x1134,
6883 0x0784,0x1184,0x07D4,0x11D4,0x0824,0x1224,0x0874,0x1274,
6884 0x08C4,0x12C4,0x0914,0x1314,0x0964,0x1364,0x09B4,0x13B4,
6885 0x0A04,0x1404,0x0A54,0x1454,0x0AA4,0x14A4,0x0AF4,0x14F4,
6886 0x0B44,0x0B94,0x1594,0x0BE4,0x15E4,0x0C34,0x1634,0x0C84,
6887 0x1684,0x0CD4,0x16D4,0x0D24,0x1724,0x0735,0x1135,0x0000,
6888 0x07D5,0x11D5,0x0825,0x1225,0x0875,0x1275,0x08C5,0x12C5,
6889 0x0915,0x1315,0x0965,0x1365,0x09B5,0x13B5,0x0A05,0x1405,
6890 0x0A55,0x1455,0x0AA5,0x14A5,0x0AF5,0x14F5,0x0B45,0x1545,
6891 0x0B95,0x1595,0x0BE5,0x15E5,0x0C35,0x1635,0x0C85,0x1685,
6892 0x0CD5,0x16D5,0x0D25,0x1725,0x0736,0x1136,0x0786,0x1186,
6893 0x07D6,0x11D6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6894 0x0A06,0x1406,0x0A56,0x1456,0x0AA6,0x14A6,0x0AF6,0x14F6,
6895 0x0B46,0x1546,0x0B96,0x1596,0x0BE6,0x15E6,0x0C36,0x1636,
6896 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6897 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6898 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6899 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6900 0x0000,0x0787,0x07D7,0x0827,0x0877,0x08C7,0x0917,0x0967,
6901 0x09B7,0x0A07,0x0A57,0x0AA7,0x0AF7,0x0B47,0x0B97,0x0BE7,
6902 0x0C37,0x0C87,0x0CD7,0x0D27,0x0738,0x0788,0x07D8,0x0828,
6903 0x0878,0x08C8,0x0918,0x0968,0x09B8,0x0A08,0x0A58,0x0AA8,
6904 0x0AF8,0x0B48,0x0B98,0x0BE8,0x0C38,0x0C88,0x0000,0x0000,
6905 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6906 0x0000,0x1187,0x11D7,0x1227,0x1277,0x12C7,0x1317,0x1367,
6907 0x13B7,0x1407,0x1457,0x14A7,0x14F7,0x1547,0x1597,0x15E7,
6908 0x1637,0x1687,0x16D7,0x1727,0x1138,0x1188,0x11D8,0x1228,
6909 0x1278,0x12C8,0x1318,0x1368,0x13B8,0x1408,0x1458,0x14A8,
6910 0x14F8,0x1548,0x1598,0x15E8,0x1638,0x1688,0x0000,0x0000,
6911 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6912 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6913 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6914 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6915 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6916 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6917 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6918 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6919 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6920 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6921 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6922 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6923 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6924 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6925 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
6926};
6927
6928
6929/* 1E00-1FFF */
6930static uint16 uni_1E00_1FFF[512]=
6931{
6932 0x076C,0x116C,0x07BC,0x11BC,0x080C,0x120C,0x085C,0x125C,
6933 0x08AC,0x12AC,0x08FC,0x12FC,0x094C,0x134C,0x099C,0x139C,
6934 0x09EC,0x13EC,0x0A3C,0x143C,0x0A8C,0x148C,0x0ADC,0x14DC,
6935 0x0B2C,0x152C,0x0B7C,0x157C,0x0BCC,0x15CC,0x0C1C,0x161C,
6936 0x0C6C,0x166C,0x0CBC,0x16BC,0x0D0C,0x170C,0x0D5C,0x175C,
6937 0x076D,0x116D,0x07BD,0x11BD,0x080D,0x120D,0x085D,0x125D,
6938 0x08AD,0x12AD,0x08FD,0x12FD,0x094D,0x134D,0x099D,0x139D,
6939 0x09ED,0x13ED,0x0A3D,0x143D,0x0A8D,0x148D,0x0ADD,0x14DD,
6940 0x0B2D,0x152D,0x0B7D,0x157D,0x0BCD,0x15CD,0x0C1D,0x161D,
6941 0x0C6D,0x166D,0x0CBD,0x16BD,0x0D0D,0x170D,0x0D5D,0x175D,
6942 0x076E,0x116E,0x07BE,0x11BE,0x080E,0x120E,0x085E,0x125E,
6943 0x08AE,0x12AE,0x08FE,0x12FE,0x094E,0x134E,0x099E,0x139E,
6944 0x0770,0x13EE,0x0A3E,0x143E,0x0A8E,0x148E,0x0ADE,0x14DE,
6945 0x0B2E,0x152E,0x0B7E,0x157E,0x0BCE,0x15CE,0x0C1E,0x161E,
6946 0x0C6E,0x166E,0x0CBE,0x16BE,0x0D0E,0x170E,0x0D5E,0x175E,
6947 0x076F,0x116F,0x07BF,0x11BF,0x080F,0x120F,0x085F,0x125F,
6948 0x08AF,0x12AF,0x08FF,0x12FF,0x094F,0x134F,0x099F,0x139F,
6949 0x09EF,0x13EF,0x0A3F,0x143F,0x0A8F,0x148F,0x0ADF,0x14DF,
6950 0x0B2F,0x152F,0x0B7F,0x157F,0x0BCF,0x15CF,0x161F,0x166F,
6951 0x16BF,0x170F,0x175F,0x1170,0x0000,0x0000,0x0000,0x0000,
6952 0x0900,0x1300,0x0950,0x1350,0x09A0,0x13A0,0x09F0,0x13F0,
6953 0x0A40,0x1440,0x0A90,0x1490,0x0AE0,0x14E0,0x0B30,0x1530,
6954 0x0B80,0x1580,0x0BD0,0x15D0,0x0C20,0x1620,0x0C70,0x1670,
6955 0x0CC0,0x16C0,0x0D10,0x1710,0x0D60,0x1760,0x0771,0x1171,
6956 0x07C1,0x11C1,0x0811,0x1211,0x0861,0x1261,0x08B1,0x12B1,
6957 0x0901,0x1301,0x0951,0x1351,0x09A1,0x13A1,0x09F1,0x13F1,
6958 0x0A41,0x1441,0x0A91,0x1491,0x0AE1,0x14E1,0x0B31,0x1531,
6959 0x0B81,0x1581,0x0BD1,0x15D1,0x0C21,0x1621,0x0C71,0x1671,
6960 0x0CC1,0x16C1,0x0D11,0x1711,0x0D61,0x1761,0x0772,0x1172,
6961 0x07C2,0x11C2,0x0812,0x1212,0x0862,0x1262,0x08B2,0x12B2,
6962 0x0902,0x1302,0x0952,0x1352,0x09A2,0x13A2,0x09F2,0x13F2,
6963 0x0A42,0x1442,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
6964 0x1173,0x11C3,0x1213,0x1263,0x12B3,0x1303,0x1353,0x13A3,
6965 0x0773,0x07C3,0x0813,0x0863,0x08B3,0x0903,0x0953,0x09A3,
6966 0x13F3,0x1443,0x1493,0x14E3,0x1533,0x1583,0x0000,0x0000,
6967 0x09F3,0x0A43,0x0A93,0x0AE3,0x0B33,0x0B83,0x0000,0x0000,
6968 0x1713,0x1763,0x1174,0x11C4,0x1214,0x1264,0x12B4,0x1304,
6969 0x0D13,0x0D63,0x0774,0x07C4,0x0814,0x0864,0x08B4,0x0904,
6970 0x1354,0x13A4,0x13F4,0x1444,0x1494,0x14E4,0x1534,0x1584,
6971 0x0954,0x09A4,0x09F4,0x0A44,0x0A94,0x0AE4,0x0B34,0x0B84,
6972 0x15D4,0x1624,0x1674,0x16C4,0x1714,0x1764,0x0000,0x0000,
6973 0x0BD4,0x0C24,0x0C74,0x0CC4,0x0D14,0x0D64,0x0000,0x0000,
6974 0x12B5,0x1305,0x1355,0x13A5,0x13F5,0x1445,0x1495,0x14E5,
6975 0x0000,0x0905,0x0000,0x09A5,0x0000,0x0A45,0x0000,0x0AE5,
6976 0x1675,0x16C5,0x1715,0x1765,0x1176,0x11C6,0x1216,0x1266,
6977 0x0C75,0x0CC5,0x0D15,0x0D65,0x0776,0x07C6,0x0816,0x0866,
6978 0x12B6,0x1306,0x1356,0x13A6,0x13F6,0x1446,0x1496,0x14E6,
6979 0x1536,0x1586,0x15D6,0x1626,0x1676,0x16C6,0x0000,0x0000,
6980 0x1177,0x11C7,0x1217,0x1267,0x12B7,0x1307,0x1357,0x13A7,
6981 0x0777,0x07C7,0x0817,0x0867,0x08B7,0x0907,0x0957,0x09A7,
6982 0x13F7,0x1447,0x1497,0x14E7,0x1537,0x1587,0x15D7,0x1627,
6983 0x09F7,0x0A47,0x0A97,0x0AE7,0x0B37,0x0B87,0x0BD7,0x0C27,
6984 0x1677,0x16C7,0x1717,0x1767,0x1178,0x11C8,0x1218,0x1268,
6985 0x0C77,0x0CC7,0x0D17,0x0D67,0x0778,0x07C8,0x0818,0x0868,
6986 0x12B8,0x1308,0x1358,0x13A8,0x13F8,0x0000,0x1498,0x14E8,
6987 0x08B8,0x0908,0x08B6,0x0906,0x09A8,0x0000,0x0000,0x0000,
6988 0x0000,0x0000,0x1538,0x1588,0x15D8,0x0000,0x1678,0x16C8,
6989 0x0956,0x09A6,0x09F6,0x0A46,0x0B88,0x0000,0x0000,0x0000,
6990 0x1718,0x1768,0x1179,0x11C9,0x0000,0x0000,0x12B9,0x1309,
6991 0x0D18,0x0D68,0x0A96,0x0AE6,0x0000,0x0000,0x0000,0x0000,
6992 0x13A9,0x13F9,0x1449,0x1499,0x14E9,0x1539,0x1589,0x15D9,
6993 0x09A9,0x09F9,0x0BD6,0x0C26,0x0B39,0x0000,0x0000,0x0000,
6994 0x0000,0x0000,0x16C9,0x1719,0x0000,0x0000,0x11CA,0x121A,
6995 0x0B36,0x0B86,0x0C76,0x0CC6,0x0D19,0x0000,0x0000,0x0000
6996};
6997
6998
6999/* 2160-217F */
7000static const uint16 uni_2160_217F[32]=
7001{
7002 0x0739,0x0789,0x07D9,0x0829,0x0879,0x08C9,0x0919,0x0969,
7003 0x09B9,0x0A09,0x0A59,0x0AA9,0x0AF9,0x0B49,0x0B99,0x0BE9,
7004 0x1139,0x1189,0x11D9,0x1229,0x1279,0x12C9,0x1319,0x1369,
7005 0x13B9,0x1409,0x1459,0x14A9,0x14F9,0x1549,0x1599,0x15E9
7006};
7007
7008
7009/* 24B0-24EF */
7010static const uint16 uni_24B0_24EF[64]=
7011{
7012 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0511,0x0512,
7013 0x0513,0x0514,0x0515,0x0516,0x0517,0x0518,0x0519,0x051A,
7014 0x051B,0x051C,0x051D,0x051E,0x051F,0x0520,0x0521,0x0522,
7015 0x0523,0x0524,0x0525,0x0526,0x0527,0x0528,0x0529,0x052A,
7016 0x0531,0x0532,0x0533,0x0534,0x0535,0x0536,0x0537,0x0538,
7017 0x0539,0x053A,0x053B,0x053C,0x053D,0x053E,0x053F,0x0540,
7018 0x0541,0x0542,0x0543,0x0544,0x0545,0x0546,0x0547,0x0548,
7019 0x0549,0x054A,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
7020};
7021
7022
7023/* FF20-FF5F */
7024static const uint16 uni_FF20_FF5F[64]=
7025{
7026 0x0000,0x0560,0x05B0,0x0600,0x0650,0x06A0,0x06F0,0x0740,
7027 0x0790,0x07E0,0x0830,0x0880,0x08D0,0x0920,0x0970,0x09C0,
7028 0x0A10,0x0A60,0x0AB0,0x0B00,0x0B50,0x0BA0,0x0BF0,0x0C40,
7029 0x0C90,0x0CE0,0x0D30,0x0000,0x0000,0x0000,0x0000,0x0000,
7030 0x0000,0x0F60,0x0FB0,0x1000,0x1050,0x10A0,0x10F0,0x1140,
7031 0x1190,0x11E0,0x1230,0x1280,0x12D0,0x1320,0x1370,0x13C0,
7032 0x1410,0x1460,0x14B0,0x1500,0x1550,0x15A0,0x15F0,0x1640,
7033 0x1690,0x16E0,0x1730,0x0000,0x0000,0x0000,0x0000,0x0000
7034};
7035
7036
7037
7038
7039
7040/*
7041 Returns
7042 a number 0..15, if a valid HEX digit in lower case,
7043 -1 otherwise.
7044*/
7045
7046static int hexlo(int x)
7047{
7048 static const char hex_lo_digit[256]=
7049 {
7050 -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* ................ */
7051 -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* ................ */
7052 -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* !"#$%&'()*+,-./ */
7053 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,-1,-1,-1,-1,-1,-1, /* 0123456789:;<=>? */
7054 -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* @ABCDEFGHIJKLMNO */
7055 -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* PQRSTUVWXYZ[\]^_ */
7056 -1,10,11,12,13,14,15,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* `abcdefghijklmno */
7057 -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* pqrstuvwxyz{|}~. */
7058 -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* ................ */
7059 -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* ................ */
7060 -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* ................ */
7061 -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* ................ */
7062 -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* ................ */
7063 -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* ................ */
7064 -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* ................ */
7065 -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* ................ */
7066 };
7067 return hex_lo_digit[(unsigned int) x];
7068}
7069
7070
7071/*
7072 Safe characters:
7073 '\0' NULL
7074 A..Z capital letters,
7075 a..z small letters
7076 0..9 digits
7077 _ underscore
7078*/
7079static const char filename_safe_char[128]=
7080{
7081 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* ................ */
7082 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* ................ */
7083 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* !"#$%&'()*+,-./ */
7084 1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0, /* 0123456789:;<=>? */
7085 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* @ABCDEFGHIJKLMNO */
7086 1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1, /* PQRSTUVWXYZ[\]^_ */
7087 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* `abcdefghijklmno */
7088 1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0, /* pqrstuvwxyz{|}~. */
7089};
7090
7091#define MY_FILENAME_ESCAPE '@'
7092
7093/*
7094 note, that we cannot trust 'e' here, it's may be fake,
7095 see strconvert()
7096*/
7097static int
7098my_mb_wc_filename(CHARSET_INFO *cs __attribute__((unused)),
7099 my_wc_t *pwc, const uchar *s, const uchar *e)
7100{
7101 int byte1, byte2;
7102 if (s >= e)
7103 return MY_CS_TOOSMALL;
7104
7105 if (*s < 128 && filename_safe_char[*s])
7106 {
7107 *pwc= *s;
7108 return 1;
7109 }
7110
7111 if (*s != MY_FILENAME_ESCAPE)
7112 return MY_CS_ILSEQ;
7113
7114 if (s + 3 > e)
7115 return MY_CS_TOOSMALL3;
7116
7117 byte1= s[1];
7118 if (byte1 == 0)
7119 return MY_CS_ILSEQ; /* avoid possible out-of-bounds read */
7120 byte2= s[2];
7121
7122 if (byte1 >= 0x30 && byte1 <= 0x7F &&
7123 byte2 >= 0x30 && byte2 <= 0x7F)
7124 {
7125 int code= (byte1 - 0x30) * 80 + byte2 - 0x30;
7126 if (code < 5994 && touni[code])
7127 {
7128 *pwc= touni[code];
7129 return 3;
7130 }
7131 if (byte1 == '@' && byte2 == '@')
7132 {
7133 *pwc= 0;
7134 return 3;
7135 }
7136 }
7137
7138 if (s + 4 > e)
7139 return MY_CS_TOOSMALL4;
7140
7141 if ((byte1= hexlo(byte1)) >= 0 &&
7142 (byte2= hexlo(byte2)) >= 0)
7143 {
7144 int byte3= hexlo(s[3]);
7145 int byte4= hexlo(s[3] ? s[4] : 0);
7146 if (byte3 >=0 && byte4 >=0)
7147 {
7148 *pwc= (byte1 << 12) + (byte2 << 8) + (byte3 << 4) + byte4;
7149 return 5;
7150 }
7151 }
7152
7153 return MY_CS_ILSEQ;
7154}
7155
7156
7157static int
7158my_wc_mb_filename(CHARSET_INFO *cs __attribute__((unused)),
7159 my_wc_t wc, uchar *s, uchar *e)
7160{
7161 int code;
7162 static const char hex[]= "0123456789abcdef";
7163
7164 if (s >= e)
7165 return MY_CS_TOOSMALL;
7166
7167 if (wc < 128 && filename_safe_char[wc])
7168 {
7169 *s= (uchar) wc;
7170 return 1;
7171 }
7172
7173 if (s + 3 > e)
7174 return MY_CS_TOOSMALL3;
7175
7176 *s++= MY_FILENAME_ESCAPE;
7177 if ((wc >= 0x00C0 && wc <= 0x05FF && (code= uni_0C00_05FF[wc - 0x00C0])) ||
7178 (wc >= 0x1E00 && wc <= 0x1FFF && (code= uni_1E00_1FFF[wc - 0x1E00])) ||
7179 (wc >= 0x2160 && wc <= 0x217F && (code= uni_2160_217F[wc - 0x2160])) ||
7180 (wc >= 0x24B0 && wc <= 0x24EF && (code= uni_24B0_24EF[wc - 0x24B0])) ||
7181 (wc >= 0xFF20 && wc <= 0xFF5F && (code= uni_FF20_FF5F[wc - 0xFF20])))
7182 {
7183 *s++= (code / 80) + 0x30;
7184 *s++= (code % 80) + 0x30;
7185 return 3;
7186 }
7187
7188 /* Non letter */
7189 if (s + 4 > e)
7190 return MY_CS_TOOSMALL5;
7191
7192 *s++= hex[(wc >> 12) & 15];
7193 *s++= hex[(wc >> 8) & 15];
7194 *s++= hex[(wc >> 4) & 15];
7195 *s++= hex[(wc) & 15];
7196 return 5;
7197}
7198
7199
7200static int
7201my_charlen_filename(CHARSET_INFO *cs, const uchar *str, const uchar *end)
7202{
7203 my_wc_t wc;
7204 return cs->cset->mb_wc(cs, &wc, str, end);
7205}
7206
7207
7208#define MY_FUNCTION_NAME(x) my_ ## x ## _filename
7209#define CHARLEN(cs,str,end) my_charlen_filename(cs,str,end)
7210#define DEFINE_WELL_FORMED_CHAR_LENGTH_USING_CHARLEN
7211#include "ctype-mb.ic"
7212#undef MY_FUNCTION_NAME
7213#undef CHARLEN
7214#undef DEFINE_WELL_FORMED_CHAR_LENGTH_USING_CHARLEN
7215/* my_well_formed_char_length_filename */
7216
7217
7218static MY_COLLATION_HANDLER my_collation_filename_handler =
7219{
7220 NULL, /* init */
7221 my_strnncoll_simple,
7222 my_strnncollsp_simple,
7223 my_strnxfrm_unicode,
7224 my_strnxfrmlen_unicode,
7225 my_like_range_mb,
7226 my_wildcmp_utf8,
7227 my_strcasecmp_utf8,
7228 my_instr_mb,
7229 my_hash_sort_utf8,
7230 my_propagate_complex
7231};
7232
7233static MY_CHARSET_HANDLER my_charset_filename_handler=
7234{
7235 NULL, /* init */
7236 my_numchars_mb,
7237 my_charpos_mb,
7238 my_lengthsp_8bit,
7239 my_numcells_mb,
7240 my_mb_wc_filename,
7241 my_wc_mb_filename,
7242 my_mb_ctype_mb,
7243 my_caseup_str_utf8,
7244 my_casedn_str_utf8,
7245 my_caseup_utf8,
7246 my_casedn_utf8,
7247 my_snprintf_8bit,
7248 my_long10_to_str_8bit,
7249 my_longlong10_to_str_8bit,
7250 my_fill_8bit,
7251 my_strntol_8bit,
7252 my_strntoul_8bit,
7253 my_strntoll_8bit,
7254 my_strntoull_8bit,
7255 my_strntod_8bit,
7256 my_strtoll10_8bit,
7257 my_strntoull10rnd_8bit,
7258 my_scan_8bit,
7259 my_charlen_filename,
7260 my_well_formed_char_length_filename,
7261 my_copy_fix_mb,
7262 my_wc_mb_filename,
7263};
7264
7265
7266
7267struct charset_info_st my_charset_filename=
7268{
7269 17,0,0, /* number */
7270 MY_CS_COMPILED|MY_CS_PRIMARY|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_HIDDEN|MY_CS_NONASCII,
7271 "filename", /* cs name */
7272 "filename", /* name */
7273 "", /* comment */
7274 NULL, /* tailoring */
7275 ctype_utf8, /* ctype */
7276 to_lower_utf8, /* to_lower */
7277 to_upper_utf8, /* to_upper */
7278 to_upper_utf8, /* sort_order */
7279 NULL, /* uca */
7280 NULL, /* tab_to_uni */
7281 NULL, /* tab_from_uni */
7282 &my_unicase_default,/* caseinfo */
7283 NULL, /* state_map */
7284 NULL, /* ident_map */
7285 1, /* strxfrm_multiply */
7286 1, /* caseup_multiply */
7287 1, /* casedn_multiply */
7288 1, /* mbminlen */
7289 5, /* mbmaxlen */
7290 0, /* min_sort_char */
7291 0xFFFF, /* max_sort_char */
7292 ' ', /* pad char */
7293 0, /* escape_with_backslash_is_dangerous */
7294 1, /* levels_for_order */
7295 &my_charset_filename_handler,
7296 &my_collation_filename_handler
7297};
7298
7299
7300#endif /* HAVE_CHARSET_UTF8 */
7301
7302
7303
7304#ifdef HAVE_CHARSET_utf8mb4
7305
7306/*
7307 We consider bytes with code more than 127 as a letter.
7308 This guarantees that word boundaries work fine with regular
7309 expressions. Note, there is no need to mark byte 255 as a
7310 letter, it is illegal byte in UTF8.
7311*/
7312static uchar ctype_utf8mb4[]=
7313{
7314 0,
7315 32, 32, 32, 32, 32, 32, 32, 32, 32, 40, 40, 40, 40, 40, 32, 32,
7316 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
7317 72, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
7318 132,132,132,132,132,132,132,132,132,132, 16, 16, 16, 16, 16, 16,
7319 16,129,129,129,129,129,129, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7320 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 16, 16, 16, 16,
7321 16,130,130,130,130,130,130, 2, 2, 2, 2, 2, 2, 2, 2, 2,
7322 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 16, 16, 16, 16, 32,
7323 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
7324 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
7325 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
7326 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
7327 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
7328 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
7329 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
7330 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0
7331};
7332
7333
7334static uchar to_lower_utf8mb4[]=
7335{
7336 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
7337 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
7338 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
7339 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
7340 64, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,
7341 112,113,114,115,116,117,118,119,120,121,122, 91, 92, 93, 94, 95,
7342 96, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,
7343 112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,
7344 128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,
7345 144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,
7346 160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,
7347 176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,
7348 192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,
7349 208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,
7350 224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,
7351 240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255
7352};
7353
7354
7355static uchar to_upper_utf8mb4[]=
7356{
7357 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
7358 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
7359 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
7360 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
7361 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
7362 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
7363 96, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
7364 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,123,124,125,126,127,
7365 128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,
7366 144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,
7367 160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,
7368 176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,
7369 192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,
7370 208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,
7371 224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,
7372 240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255
7373};
7374
7375
7376static int
7377my_mb_wc_utf8mb4(CHARSET_INFO *cs __attribute__((unused)),
7378 my_wc_t * pwc, const uchar *s, const uchar *e)
7379{
7380 uchar c;
7381
7382 if (s >= e)
7383 return MY_CS_TOOSMALL;
7384
7385 c= s[0];
7386 if (c < 0x80)
7387 {
7388 *pwc= c;
7389 return 1;
7390 }
7391 else if (c < 0xc2)
7392 return MY_CS_ILSEQ;
7393 else if (c < 0xe0)
7394 {
7395 if (s + 2 > e) /* We need 2 characters */
7396 return MY_CS_TOOSMALL2;
7397
7398 if (!(IS_CONTINUATION_BYTE(s[1])))
7399 return MY_CS_ILSEQ;
7400
7401 *pwc= UTF8MB2_CODE(c, s[1]);
7402 return 2;
7403 }
7404 else if (c < 0xf0)
7405 {
7406 if (s + 3 > e) /* We need 3 characters */
7407 return MY_CS_TOOSMALL3;
7408
7409 if (!IS_UTF8MB3_STEP2(c, s[1], s[2]))
7410 return MY_CS_ILSEQ;
7411
7412 *pwc= UTF8MB3_CODE(c, s[1], s[2]);
7413 return 3;
7414 }
7415 else if (c < 0xf5)
7416 {
7417 if (s + 4 > e) /* We need 4 characters */
7418 return MY_CS_TOOSMALL4;
7419
7420 if (!IS_UTF8MB4_STEP2(c, s[1], s[2], s[3]))
7421 return MY_CS_ILSEQ;
7422 *pwc= UTF8MB4_CODE(c, s[1], s[2], s[3]);
7423 return 4;
7424 }
7425 return MY_CS_ILSEQ;
7426}
7427
7428
7429/*
7430 The same as above, but without range check
7431 for example, for a null-terminated string
7432*/
7433static int
7434my_mb_wc_utf8mb4_no_range(CHARSET_INFO *cs __attribute__((unused)),
7435 my_wc_t *pwc, const uchar *s)
7436{
7437 uchar c;
7438
7439 c= s[0];
7440 if (c < 0x80)
7441 {
7442 *pwc = c;
7443 return 1;
7444 }
7445
7446 if (c < 0xc2)
7447 return MY_CS_ILSEQ;
7448
7449 if (c < 0xe0)
7450 {
7451 if (!IS_CONTINUATION_BYTE(s[1]))
7452 return MY_CS_ILSEQ;
7453
7454 *pwc= UTF8MB2_CODE(c, s[1]);
7455 return 2;
7456 }
7457
7458 if (c < 0xf0)
7459 {
7460 if (!IS_UTF8MB3_STEP2(c, s[1], s[2]))
7461 return MY_CS_ILSEQ;
7462 *pwc= UTF8MB3_CODE(c, s[1], s[2]);
7463 return 3;
7464 }
7465 else if (c < 0xf5)
7466 {
7467 if (!IS_UTF8MB4_STEP2(c, s[1], s[2], s[3]))
7468 return MY_CS_ILSEQ;
7469 *pwc= UTF8MB4_CODE(c, s[1], s[2], s[3]);
7470 return 4;
7471 }
7472 return MY_CS_ILSEQ;
7473}
7474
7475
7476static int
7477my_wc_mb_utf8mb4(CHARSET_INFO *cs __attribute__((unused)),
7478 my_wc_t wc, uchar *r, uchar *e)
7479{
7480 int count;
7481
7482 if (r >= e)
7483 return MY_CS_TOOSMALL;
7484
7485 if (wc < 0x80)
7486 count= 1;
7487 else if (wc < 0x800)
7488 count= 2;
7489 else if (wc < 0x10000)
7490 count= 3;
7491 else if (wc < 0x200000)
7492 count= 4;
7493 else return MY_CS_ILUNI;
7494
7495 if (r + count > e)
7496 return MY_CS_TOOSMALLN(count);
7497
7498 switch (count) {
7499 case 4: r[3] = (uchar) (0x80 | (wc & 0x3f)); wc = wc >> 6; wc |= 0x10000;
7500 /* fall through */
7501 case 3: r[2] = (uchar) (0x80 | (wc & 0x3f)); wc = wc >> 6; wc |= 0x800;
7502 /* fall through */
7503 case 2: r[1] = (uchar) (0x80 | (wc & 0x3f)); wc = wc >> 6; wc |= 0xc0;
7504 /* fall through */
7505 case 1: r[0] = (uchar) wc;
7506 }
7507 return count;
7508}
7509
7510
7511/*
7512 The same as above, but without range check.
7513*/
7514static int
7515my_wc_mb_utf8mb4_no_range(CHARSET_INFO *cs __attribute__((unused)),
7516 my_wc_t wc, uchar *r)
7517{
7518 int count;
7519
7520 if (wc < 0x80)
7521 count= 1;
7522 else if (wc < 0x800)
7523 count= 2;
7524 else if (wc < 0x10000)
7525 count= 3;
7526 else if (wc < 0x200000)
7527 count= 4;
7528 else
7529 return MY_CS_ILUNI;
7530
7531 switch (count)
7532 {
7533 case 4: r[3]= (uchar) (0x80 | (wc & 0x3f)); wc= wc >> 6; wc |= 0x10000;
7534 /* fall through */
7535 case 3: r[2]= (uchar) (0x80 | (wc & 0x3f)); wc= wc >> 6; wc |= 0x800;
7536 /* fall through */
7537 case 2: r[1]= (uchar) (0x80 | (wc & 0x3f)); wc= wc >> 6; wc |= 0xc0;
7538 /* fall through */
7539 case 1: r[0]= (uchar) wc;
7540 }
7541 return count;
7542}
7543
7544
7545static inline void
7546my_tolower_utf8mb4(MY_UNICASE_INFO *uni_plane, my_wc_t *wc)
7547{
7548 if (*wc <= uni_plane->maxchar)
7549 {
7550 MY_UNICASE_CHARACTER *page;
7551 if ((page= uni_plane->page[(*wc >> 8)]))
7552 *wc= page[*wc & 0xFF].tolower;
7553 }
7554}
7555
7556
7557static inline void
7558my_toupper_utf8mb4(MY_UNICASE_INFO *uni_plane, my_wc_t *wc)
7559{
7560 if (*wc <= uni_plane->maxchar)
7561 {
7562 MY_UNICASE_CHARACTER *page;
7563 if ((page= uni_plane->page[(*wc >> 8)]))
7564 *wc= page[*wc & 0xFF].toupper;
7565 }
7566}
7567
7568
7569static size_t
7570my_caseup_utf8mb4(CHARSET_INFO *cs, char *src, size_t srclen,
7571 char *dst, size_t dstlen)
7572{
7573 my_wc_t wc;
7574 int srcres, dstres;
7575 char *srcend= src + srclen, *dstend= dst + dstlen, *dst0= dst;
7576 MY_UNICASE_INFO *uni_plane= cs->caseinfo;
7577 DBUG_ASSERT(src != dst || cs->caseup_multiply == 1);
7578
7579 while ((src < srcend) &&
7580 (srcres= my_mb_wc_utf8mb4(cs, &wc,
7581 (uchar *) src, (uchar*) srcend)) > 0)
7582 {
7583 my_toupper_utf8mb4(uni_plane, &wc);
7584 if ((dstres= my_wc_mb_utf8mb4(cs, wc, (uchar*) dst, (uchar*) dstend)) <= 0)
7585 break;
7586 src+= srcres;
7587 dst+= dstres;
7588 }
7589 return (size_t) (dst - dst0);
7590}
7591
7592
7593static void
7594my_hash_sort_utf8mb4_nopad(CHARSET_INFO *cs, const uchar *s, size_t slen,
7595 ulong *nr1, ulong *nr2)
7596{
7597 my_wc_t wc;
7598 int res;
7599 const uchar *e= s + slen;
7600 MY_UNICASE_INFO *uni_plane= cs->caseinfo;
7601 register ulong m1= *nr1, m2= *nr2;
7602
7603 while ((res= my_mb_wc_utf8mb4(cs, &wc, (uchar*) s, (uchar*) e)) > 0)
7604 {
7605 my_tosort_unicode(uni_plane, &wc, cs->state);
7606 MY_HASH_ADD_16(m1, m2, (uint) (wc & 0xFFFF));
7607 if (wc > 0xFFFF)
7608 {
7609 /*
7610 Put the highest byte only if it is non-zero,
7611 to make hash functions for utf8mb3 and utf8mb4
7612 compatible for BMP characters.
7613 This is useful to keep order of records in
7614 test results, e.g. for "SHOW GRANTS".
7615 */
7616 MY_HASH_ADD(m1, m2, (uint) ((wc >> 16) & 0xFF));
7617 }
7618 s+= res;
7619 }
7620 *nr1= m1;
7621 *nr2= m2;
7622}
7623
7624
7625static void
7626my_hash_sort_utf8mb4(CHARSET_INFO *cs, const uchar *s, size_t slen,
7627 ulong *nr1, ulong *nr2)
7628{
7629 const uchar *e= s + slen;
7630 /*
7631 Remove end space. We do this to be able to compare
7632 'A ' and 'A' as identical
7633 */
7634 while (e > s && e[-1] == ' ')
7635 e--;
7636 my_hash_sort_utf8mb4_nopad(cs, s, e - s, nr1, nr2);
7637}
7638
7639
7640static size_t
7641my_caseup_str_utf8mb4(CHARSET_INFO *cs, char *src)
7642{
7643 my_wc_t wc;
7644 int srcres, dstres;
7645 char *dst= src, *dst0= src;
7646 MY_UNICASE_INFO *uni_plane= cs->caseinfo;
7647 DBUG_ASSERT(cs->caseup_multiply == 1);
7648
7649 while (*src &&
7650 (srcres= my_mb_wc_utf8mb4_no_range(cs, &wc, (uchar *) src)) > 0)
7651 {
7652 my_toupper_utf8mb4(uni_plane, &wc);
7653 if ((dstres= my_wc_mb_utf8mb4_no_range(cs, wc, (uchar*) dst)) <= 0)
7654 break;
7655 src+= srcres;
7656 dst+= dstres;
7657 }
7658 *dst= '\0';
7659 return (size_t) (dst - dst0);
7660}
7661
7662
7663static size_t
7664my_casedn_utf8mb4(CHARSET_INFO *cs,
7665 char *src, size_t srclen,
7666 char *dst, size_t dstlen)
7667{
7668 my_wc_t wc;
7669 int srcres, dstres;
7670 char *srcend= src + srclen, *dstend= dst + dstlen, *dst0= dst;
7671 MY_UNICASE_INFO *uni_plane= cs->caseinfo;
7672 DBUG_ASSERT(src != dst || cs->casedn_multiply == 1);
7673
7674 while ((src < srcend) &&
7675 (srcres= my_mb_wc_utf8mb4(cs, &wc,
7676 (uchar*) src, (uchar*) srcend)) > 0)
7677 {
7678 my_tolower_utf8mb4(uni_plane, &wc);
7679 if ((dstres= my_wc_mb_utf8mb4(cs, wc, (uchar*) dst, (uchar*) dstend)) <= 0)
7680 break;
7681 src+= srcres;
7682 dst+= dstres;
7683 }
7684 return (size_t) (dst - dst0);
7685}
7686
7687
7688static size_t
7689my_casedn_str_utf8mb4(CHARSET_INFO *cs, char *src)
7690{
7691 my_wc_t wc;
7692 int srcres, dstres;
7693 char *dst= src, *dst0= src;
7694 MY_UNICASE_INFO *uni_plane= cs->caseinfo;
7695 DBUG_ASSERT(cs->casedn_multiply == 1);
7696
7697 while (*src &&
7698 (srcres= my_mb_wc_utf8mb4_no_range(cs, &wc, (uchar *) src)) > 0)
7699 {
7700 my_tolower_utf8mb4(uni_plane, &wc);
7701 if ((dstres= my_wc_mb_utf8mb4_no_range(cs, wc, (uchar*) dst)) <= 0)
7702 break;
7703 src+= srcres;
7704 dst+= dstres;
7705 }
7706
7707 /*
7708 In rare cases lower string can be shorter than
7709 the original string, for example:
7710
7711 "U+0130 LATIN CAPITAL LETTER I WITH DOT ABOVE"
7712 (which is 0xC4B0 in utf8, i.e. two bytes)
7713
7714 is converted into
7715
7716 "U+0069 LATIN SMALL LETTER I"
7717 (which is 0x69 in utf8, i.e. one byte)
7718
7719 So, we need to put '\0' terminator after converting.
7720 */
7721
7722 *dst= '\0';
7723 return (size_t) (dst - dst0);
7724}
7725
7726
7727/**
7728 Compare 0-terminated UTF8 strings.
7729
7730 @param cs character set handler
7731 @param s First 0-terminated string to compare
7732 @param t Second 0-terminated string to compare
7733
7734 @return Comparison result.
7735 @retval negative number if s < t
7736 @retval positive number if s > t
7737 @retval 0 is the strings are equal
7738*/
7739
7740static int
7741my_strcasecmp_utf8mb4(CHARSET_INFO *cs, const char *s, const char *t)
7742{
7743 MY_UNICASE_INFO *uni_plane= cs->caseinfo;
7744 while (s[0] && t[0])
7745 {
7746 my_wc_t s_wc,t_wc;
7747
7748 if ((uchar) s[0] < 128)
7749 {
7750 /*
7751 s[0] is between 0 and 127.
7752 It represents a single byte character.
7753 Convert it into weight according to collation.
7754 */
7755 s_wc= plane00[(uchar) s[0]].tolower;
7756 s++;
7757 }
7758 else
7759 {
7760 int res= my_mb_wc_utf8mb4_no_range(cs, &s_wc, (const uchar*) s);
7761
7762 /*
7763 In the case of wrong multibyte sequence we will
7764 call strcmp() for byte-to-byte comparison.
7765 */
7766 if (res <= 0)
7767 return strcmp(s, t);
7768 s+= res;
7769
7770 my_tolower_utf8mb4(uni_plane, &s_wc);
7771 }
7772
7773
7774 /* Do the same for the second string */
7775
7776 if ((uchar) t[0] < 128)
7777 {
7778 /* Convert single byte character into weight */
7779 t_wc= plane00[(uchar) t[0]].tolower;
7780 t++;
7781 }
7782 else
7783 {
7784 int res= my_mb_wc_utf8mb4_no_range(cs, &t_wc, (const uchar*) t);
7785 if (res <= 0)
7786 return strcmp(s, t);
7787 t+= res;
7788
7789 my_tolower_utf8mb4(uni_plane, &t_wc);
7790 }
7791
7792 /* Now we have two weights, let's compare them */
7793 if ( s_wc != t_wc )
7794 return ((int) s_wc) - ((int) t_wc);
7795 }
7796 return ((int) (uchar) s[0]) - ((int) (uchar) t[0]);
7797}
7798
7799
7800static int
7801my_wildcmp_utf8mb4(CHARSET_INFO *cs,
7802 const char *str, const char *strend,
7803 const char *wildstr, const char *wildend,
7804 int escape, int w_one, int w_many)
7805{
7806 return my_wildcmp_unicode(cs, str, strend, wildstr, wildend,
7807 escape, w_one, w_many, cs->caseinfo);
7808}
7809
7810
7811static int
7812my_charlen_utf8mb4(CHARSET_INFO *cs __attribute__((unused)),
7813 const uchar *s, const uchar *e)
7814{
7815 uchar c;
7816
7817 if (s >= e)
7818 return MY_CS_TOOSMALL;
7819
7820 c= s[0];
7821 if (c < 0xf0)
7822 return my_valid_mbcharlen_utf8mb3(s, e);
7823
7824 if (c < 0xf5)
7825 {
7826 if (s + 4 > e) /* We need 4 characters */
7827 return MY_CS_TOOSMALL4;
7828
7829 if (!IS_UTF8MB4_STEP2(c, s[1], s[2], s[3]))
7830 return MY_CS_ILSEQ;
7831
7832 return 4;
7833 }
7834
7835 return MY_CS_ILSEQ;
7836}
7837
7838
7839#define MY_FUNCTION_NAME(x) my_ ## x ## _utf8mb4
7840#define CHARLEN(cs,str,end) my_charlen_utf8mb4(cs,str,end)
7841#define DEFINE_WELL_FORMED_CHAR_LENGTH_USING_CHARLEN
7842#include "ctype-mb.ic"
7843#undef MY_FUNCTION_NAME
7844#undef CHARLEN
7845#undef DEFINE_WELL_FORMED_CHAR_LENGTH_USING_CHARLEN
7846/* my_well_formed_char_length_utf8mb4 */
7847
7848
7849#define MY_FUNCTION_NAME(x) my_ ## x ## _utf8mb4_general_ci
7850#define IS_MB4_CHAR(b0,b1,b2,b3) IS_UTF8MB4_STEP3(b0,b1,b2,b3)
7851#define WEIGHT_ILSEQ(x) (0xFF0000 + (uchar) (x))
7852#define WEIGHT_MB1(b0) my_weight_mb1_utf8_general_ci(b0)
7853#define WEIGHT_MB2(b0,b1) my_weight_mb2_utf8_general_ci(b0,b1)
7854#define WEIGHT_MB3(b0,b1,b2) my_weight_mb3_utf8_general_ci(b0,b1,b2)
7855/*
7856 All non-BMP characters have the same weight.
7857*/
7858#define WEIGHT_MB4(b0,b1,b2,b3) MY_CS_REPLACEMENT_CHARACTER
7859#include "strcoll.ic"
7860
7861
7862#define MY_FUNCTION_NAME(x) my_ ## x ## _utf8mb4_bin
7863#define WEIGHT_ILSEQ(x) (0xFF0000 + (uchar) (x))
7864#define WEIGHT_MB1(b0) ((int) (uchar) (b0))
7865#define WEIGHT_MB2(b0,b1) ((int) UTF8MB2_CODE(b0,b1))
7866#define WEIGHT_MB3(b0,b1,b2) ((int) UTF8MB3_CODE(b0,b1,b2))
7867#define WEIGHT_MB4(b0,b1,b2,b3) ((int) UTF8MB4_CODE(b0,b1,b2,b3))
7868#include "strcoll.ic"
7869
7870
7871#define DEFINE_STRNNCOLLSP_NOPAD
7872#define MY_FUNCTION_NAME(x) my_ ## x ## _utf8mb4_general_nopad_ci
7873#define IS_MB4_CHAR(b0,b1,b2,b3) IS_UTF8MB4_STEP3(b0,b1,b2,b3)
7874#define WEIGHT_ILSEQ(x) (0xFF0000 + (uchar) (x))
7875#define WEIGHT_MB1(b0) my_weight_mb1_utf8_general_ci(b0)
7876#define WEIGHT_MB2(b0,b1) my_weight_mb2_utf8_general_ci(b0,b1)
7877#define WEIGHT_MB3(b0,b1,b2) my_weight_mb3_utf8_general_ci(b0,b1,b2)
7878/*
7879 All non-BMP characters have the same weight.
7880*/
7881#define WEIGHT_MB4(b0,b1,b2,b3) MY_CS_REPLACEMENT_CHARACTER
7882#include "strcoll.ic"
7883
7884
7885#define DEFINE_STRNNCOLLSP_NOPAD
7886#define MY_FUNCTION_NAME(x) my_ ## x ## _utf8mb4_nopad_bin
7887#define WEIGHT_ILSEQ(x) (0xFF0000 + (uchar) (x))
7888#define WEIGHT_MB1(b0) ((int) (uchar) (b0))
7889#define WEIGHT_MB2(b0,b1) ((int) UTF8MB2_CODE(b0,b1))
7890#define WEIGHT_MB3(b0,b1,b2) ((int) UTF8MB3_CODE(b0,b1,b2))
7891#define WEIGHT_MB4(b0,b1,b2,b3) ((int) UTF8MB4_CODE(b0,b1,b2,b3))
7892#include "strcoll.ic"
7893
7894
7895static MY_COLLATION_HANDLER my_collation_utf8mb4_general_ci_handler=
7896{
7897 NULL, /* init */
7898 my_strnncoll_utf8mb4_general_ci,
7899 my_strnncollsp_utf8mb4_general_ci,
7900 my_strnxfrm_unicode,
7901 my_strnxfrmlen_unicode,
7902 my_like_range_mb,
7903 my_wildcmp_utf8mb4,
7904 my_strcasecmp_utf8mb4,
7905 my_instr_mb,
7906 my_hash_sort_utf8mb4,
7907 my_propagate_complex
7908};
7909
7910
7911static MY_COLLATION_HANDLER my_collation_utf8mb4_bin_handler =
7912{
7913 NULL, /* init */
7914 my_strnncoll_utf8mb4_bin,
7915 my_strnncollsp_utf8mb4_bin,
7916 my_strnxfrm_unicode_full_bin,
7917 my_strnxfrmlen_unicode_full_bin,
7918 my_like_range_mb,
7919 my_wildcmp_mb_bin,
7920 my_strcasecmp_mb_bin,
7921 my_instr_mb,
7922 my_hash_sort_mb_bin,
7923 my_propagate_simple
7924};
7925
7926
7927static MY_COLLATION_HANDLER my_collation_utf8mb4_general_nopad_ci_handler=
7928{
7929 NULL, /* init */
7930 my_strnncoll_utf8mb4_general_ci,
7931 my_strnncollsp_utf8mb4_general_nopad_ci,
7932 my_strnxfrm_unicode_nopad,
7933 my_strnxfrmlen_unicode,
7934 my_like_range_mb,
7935 my_wildcmp_utf8mb4,
7936 my_strcasecmp_utf8mb4,
7937 my_instr_mb,
7938 my_hash_sort_utf8mb4_nopad,
7939 my_propagate_complex
7940};
7941
7942
7943static MY_COLLATION_HANDLER my_collation_utf8mb4_nopad_bin_handler =
7944{
7945 NULL, /* init */
7946 my_strnncoll_utf8mb4_bin,
7947 my_strnncollsp_utf8mb4_nopad_bin,
7948 my_strnxfrm_unicode_full_nopad_bin,
7949 my_strnxfrmlen_unicode_full_bin,
7950 my_like_range_mb,
7951 my_wildcmp_mb_bin,
7952 my_strcasecmp_mb_bin,
7953 my_instr_mb,
7954 my_hash_sort_mb_nopad_bin,
7955 my_propagate_simple
7956};
7957
7958
7959MY_CHARSET_HANDLER my_charset_utf8mb4_handler=
7960{
7961 NULL, /* init */
7962 my_numchars_mb,
7963 my_charpos_mb,
7964 my_lengthsp_8bit,
7965 my_numcells_mb,
7966 my_mb_wc_utf8mb4,
7967 my_wc_mb_utf8mb4,
7968 my_mb_ctype_mb,
7969 my_caseup_str_utf8mb4,
7970 my_casedn_str_utf8mb4,
7971 my_caseup_utf8mb4,
7972 my_casedn_utf8mb4,
7973 my_snprintf_8bit,
7974 my_long10_to_str_8bit,
7975 my_longlong10_to_str_8bit,
7976 my_fill_utf8,
7977 my_strntol_8bit,
7978 my_strntoul_8bit,
7979 my_strntoll_8bit,
7980 my_strntoull_8bit,
7981 my_strntod_8bit,
7982 my_strtoll10_8bit,
7983 my_strntoull10rnd_8bit,
7984 my_scan_8bit,
7985 my_charlen_utf8mb4,
7986 my_well_formed_char_length_utf8mb4,
7987 my_copy_fix_mb,
7988 my_wc_mb_utf8mb4,
7989};
7990
7991
7992
7993struct charset_info_st my_charset_utf8mb4_general_ci=
7994{
7995 45,0,0, /* number */
7996 MY_CS_COMPILED|MY_CS_PRIMARY|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_UNICODE_SUPPLEMENT, /* state */
7997 MY_UTF8MB4, /* cs name */
7998 MY_UTF8MB4_GENERAL_CI,/* name */
7999 "UTF-8 Unicode", /* comment */
8000 NULL, /* tailoring */
8001 ctype_utf8mb4, /* ctype */
8002 to_lower_utf8mb4, /* to_lower */
8003 to_upper_utf8mb4, /* to_upper */
8004 to_upper_utf8mb4, /* sort_order */
8005 NULL, /* uca */
8006 NULL, /* tab_to_uni */
8007 NULL, /* tab_from_uni */
8008 &my_unicase_default,/* caseinfo */
8009 NULL, /* state_map */
8010 NULL, /* ident_map */
8011 1, /* strxfrm_multiply */
8012 1, /* caseup_multiply */
8013 1, /* casedn_multiply */
8014 1, /* mbminlen */
8015 4, /* mbmaxlen */
8016 0, /* min_sort_char */
8017 0xFFFF, /* max_sort_char */
8018 ' ', /* pad char */
8019 0, /* escape_with_backslash_is_dangerous */
8020 1, /* levels_for_order */
8021 &my_charset_utf8mb4_handler,
8022 &my_collation_utf8mb4_general_ci_handler
8023};
8024
8025
8026struct charset_info_st my_charset_utf8mb4_bin=
8027{
8028 46,0,0, /* number */
8029 MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_STRNXFRM|MY_CS_UNICODE|
8030 MY_CS_UNICODE_SUPPLEMENT, /* state */
8031 MY_UTF8MB4, /* cs name */
8032 MY_UTF8MB4_BIN, /* name */
8033 "UTF-8 Unicode", /* comment */
8034 NULL, /* tailoring */
8035 ctype_utf8mb4, /* ctype */
8036 to_lower_utf8mb4, /* to_lower */
8037 to_upper_utf8mb4, /* to_upper */
8038 NULL, /* sort_order */
8039 NULL, /* uca */
8040 NULL, /* tab_to_uni */
8041 NULL, /* tab_from_uni */
8042 &my_unicase_default,/* caseinfo */
8043 NULL, /* state_map */
8044 NULL, /* ident_map */
8045 1, /* strxfrm_multiply */
8046 1, /* caseup_multiply */
8047 1, /* casedn_multiply */
8048 1, /* mbminlen */
8049 4, /* mbmaxlen */
8050 0, /* min_sort_char */
8051 0xFFFF, /* max_sort_char */
8052 ' ', /* pad char */
8053 0, /* escape_with_backslash_is_dangerous */
8054 1, /* levels_for_order */
8055 &my_charset_utf8mb4_handler,
8056 &my_collation_utf8mb4_bin_handler
8057};
8058
8059
8060struct charset_info_st my_charset_utf8mb4_general_nopad_ci=
8061{
8062 MY_NOPAD_ID(45),0,0,/* number */
8063 MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_UNICODE_SUPPLEMENT|
8064 MY_CS_NOPAD, /* state */
8065 MY_UTF8MB4, /* cs name */
8066 MY_UTF8MB4_GENERAL_NOPAD_CI,/* name */
8067 "UTF-8 Unicode", /* comment */
8068 NULL, /* tailoring */
8069 ctype_utf8mb4, /* ctype */
8070 to_lower_utf8mb4, /* to_lower */
8071 to_upper_utf8mb4, /* to_upper */
8072 to_upper_utf8mb4, /* sort_order */
8073 NULL, /* uca */
8074 NULL, /* tab_to_uni */
8075 NULL, /* tab_from_uni */
8076 &my_unicase_default,/* caseinfo */
8077 NULL, /* state_map */
8078 NULL, /* ident_map */
8079 1, /* strxfrm_multiply */
8080 1, /* caseup_multiply */
8081 1, /* casedn_multiply */
8082 1, /* mbminlen */
8083 4, /* mbmaxlen */
8084 0, /* min_sort_char */
8085 0xFFFF, /* max_sort_char */
8086 ' ', /* pad char */
8087 0, /* escape_with_backslash_is_dangerous */
8088 1, /* levels_for_order */
8089 &my_charset_utf8mb4_handler,
8090 &my_collation_utf8mb4_general_nopad_ci_handler
8091};
8092
8093
8094struct charset_info_st my_charset_utf8mb4_nopad_bin=
8095{
8096 MY_NOPAD_ID(46),0,0, /* number */
8097 MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_STRNXFRM|MY_CS_UNICODE|
8098 MY_CS_UNICODE_SUPPLEMENT|MY_CS_NOPAD, /* state */
8099 MY_UTF8MB4, /* cs name */
8100 MY_UTF8MB4_NOPAD_BIN, /* name */
8101 "UTF-8 Unicode", /* comment */
8102 NULL, /* tailoring */
8103 ctype_utf8mb4, /* ctype */
8104 to_lower_utf8mb4, /* to_lower */
8105 to_upper_utf8mb4, /* to_upper */
8106 NULL, /* sort_order */
8107 NULL, /* uca */
8108 NULL, /* tab_to_uni */
8109 NULL, /* tab_from_uni */
8110 &my_unicase_default,/* caseinfo */
8111 NULL, /* state_map */
8112 NULL, /* ident_map */
8113 1, /* strxfrm_multiply */
8114 1, /* caseup_multiply */
8115 1, /* casedn_multiply */
8116 1, /* mbminlen */
8117 4, /* mbmaxlen */
8118 0, /* min_sort_char */
8119 0xFFFF, /* max_sort_char */
8120 ' ', /* pad char */
8121 0, /* escape_with_backslash_is_dangerous */
8122 1, /* levels_for_order */
8123 &my_charset_utf8mb4_handler,
8124 &my_collation_utf8mb4_nopad_bin_handler
8125};
8126
8127#endif /* HAVE_CHARSET_utf8mb4 */
8128