11187f6ccf0e2b22239cccc488f0413f5ad5e4f2
[platform/upstream/doxygen.git] / qtools / qstring.cpp
1 /****************************************************************************
2 ** 
3 **
4 ** Implementation of the QString class and related Unicode functions
5 **
6 ** Created : 920722
7 **
8 ** Copyright (C) 1992-2000 Trolltech AS.  All rights reserved.
9 **
10 ** This file is part of the tools module of the Qt GUI Toolkit.
11 **
12 ** This file may be distributed under the terms of the Q Public License
13 ** as defined by Trolltech AS of Norway and appearing in the file
14 ** LICENSE.QPL included in the packaging of this file.
15 **
16 ** This file may be distributed and/or modified under the terms of the
17 ** GNU General Public License version 2 as published by the Free Software
18 ** Foundation and appearing in the file LICENSE.GPL included in the
19 ** packaging of this file.
20 **
21 ** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition
22 ** licenses may use this file in accordance with the Qt Commercial License
23 ** Agreement provided with the Software.
24 **
25 ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
26 ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
27 **
28 ** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for
29 **   information about Qt Commercial License Agreements.
30 ** See http://www.trolltech.com/qpl/ for QPL licensing information.
31 ** See http://www.trolltech.com/gpl/ for GPL licensing information.
32 **
33 ** Contact info@trolltech.com if any conditions of this licensing are
34 ** not clear to you.
35 **
36 **********************************************************************/
37
38 // Don't define it while compiling this module, or USERS of Qt will
39 // not be able to link.
40 #ifdef QT_NO_CAST_ASCII
41 #undef QT_NO_CAST_ASCII
42 #endif
43
44 #include "qstring.h"
45 #include "qregexp.h"
46 #include "qdatastream.h"
47 #include "qtextcodec.h"
48 #include "qstack.h"
49 #include <stdio.h>
50 #include <stdlib.h>
51 #include <stdarg.h>
52 #include <ctype.h>
53 #include <limits.h>
54
55
56 /* -------------------------------------------------------------------------
57  * unicode information
58  * these tables are generated from the unicode reference file
59  * ftp://ftp.unicode.org/Public/3.0-Update/UnicodeData-3.0.0.html
60  *
61  * Lars Knoll <knoll@mpi-hd.mpg.de>
62  * -------------------------------------------------------------------------
63  */
64
65 /* Perl script to generate (run perl -x tools/qstring.cpp)
66
67 #!perl
68
69 sub numberize
70 {
71     my(%r, $n, $id);
72     for $id ( @_ ) {
73         $id="" if $id eq "EMPTY";
74         $r{$id}=$n++;
75     }
76     return %r;
77 }
78
79
80 # Code to integer mappings...
81 #
82 %category_code = numberize(qw{
83       EMPTY
84       Mn Mc Me
85       Nd Nl No
86       Zs Zl Zp
87       Cc Cf Cs Co Cn
88
89       Lu Ll Lt Lm Lo
90       Pc Pd Ps Pe Pi Pf Po
91       Sm Sc Sk So
92 });
93 %bidi_category_code = numberize(qw{
94       L R EN ES ET AN CS B S WS ON LRE LRO AL RLE RLO PDF NSM BN});
95 %character_decomposition_tag = numberize(qw{
96       <single> <canonical> <font> <noBreak> <initial> <medial>
97       <final> <isolated> <circle> <super> <sub> <vertical>
98       <wide> <narrow> <small> <square> <compat> <fraction>
99 });
100 %mirrored_code = numberize(qw{N Y});
101
102 %joining_code = numberize(qw{U D R C});
103
104 # Read data into hashes...
105 #
106 open IN, "UnicodeData.txt";
107 $position = 1;
108 while (<IN>) {
109     @fields = split /;/;
110     $code = shift @fields;
111     for $n (qw{
112       name category combining_class bidi_category
113       character_decomposition decimal_digit_value digit_value
114       numeric_value mirrored oldname comment
115       uppercase lowercase titlecase})
116     {
117         $id = shift @fields;
118         $codes = "${n}_code";
119         if ( defined %$codes && defined $$codes{$id} ) {
120             $id = $$codes{$id};
121         }
122         ${$n}{$code}=$id;
123     }
124     $decomp = $character_decomposition{$code};
125     if ( length $decomp == 0 ) {
126         $decomp = "<single>";
127     }
128     if (substr($decomp, 0, 1) ne '<') {
129         $decomp = "<canonical> " . $decomp;
130     }
131     @fields = split(" ", $decomp);
132     $tag = shift @fields;
133     $tag = $character_decomposition_tag{$tag};
134     $decomp = join( ", 0x", @fields );
135     $decomp = "0x".$decomp;
136     $decomposition{$code} = $decomp;
137     $decomposition_tag{$code} = $tag;
138     $decomposition_pos{$code} = $position;
139     $len = scalar(@fields);
140     $decomposition_len{$code} = $len;
141
142 #   we use canonical decompositions longer than 1 char
143 #   and all arabic ligatures for the ligature table
144     if(($len > 1 and $tag == 1) or ($tag > 3 and $tag < 8)) {
145 #      ligature to add...
146         $start = shift @fields;
147         $ligature{$start} = $ligature{$start}." ".$code;
148     }
149
150 #   adjust position
151     if($len != 0) {
152         $position += $len + 3;
153     }
154
155
156 }
157
158 open IN2, "ArabicShaping.txt";
159 $position = 1;
160 while (<IN2>) {
161     @fields = split /;/;
162     $code = shift @fields;
163     $dummy = shift @fields;
164     $join = shift @fields;
165     $join =~ s/ //g;
166     $join = $joining_code{$join};
167     $joining{$code}=$join;
168 }
169
170 # Build pages...
171 #
172 $rowtable_txt =
173     "static const Q_UINT8 * const unicode_info[256] = {";
174 for $row ( 0..255 ) {
175     $nonzero=0;
176     $txt = "";
177     for $cell ( 0..255 ) {
178         $code = sprintf("%02X%02X",$row,$cell);
179         $info = $category{$code};
180         $info = 0 if !defined $info;
181         $txt .= "\n    " if $cell%8 == 0;
182         $txt .= "$info, ";
183     }
184     $therow = $row{$txt};
185     if ( !defined $therow ) {
186         $size+=256;
187         $therow = "ui_".sprintf("%02X",$row);
188         $rowtext{$therow} =
189             "static const Q_UINT8 ${therow}[] = {$txt\n};\n\n";
190         $row{$txt}=$therow;
191     }
192     $rowtable_txt .= "\n    " if $row%8 == 0;
193     $rowtable_txt .= "$therow, ";
194 }
195
196 print "// START OF GENERATED DATA\n\n";
197 print "#ifndef QT_NO_UNICODETABLES\n\n";
198
199 # Print pages...
200 #
201 for $r ( sort keys %rowtext ) {
202     print $rowtext{$r};
203 }
204 print "$rowtable_txt\n};\n";
205 $size += 256*4;
206 print "// $size bytes\n\n";
207
208 # Build decomposition tables
209 #
210 $rowtable_txt =
211     "static const Q_UINT16 * const decomposition_info[256] = {";
212 $table_txt =
213     "static const Q_UINT16 decomposition_map[] = {\n    0,\n";
214 for $row ( 0..255 ) {
215     $nonzero=0;
216     $txt = "";
217     for $cell ( 0..255 ) {
218         $code = sprintf("%02X%02X",$row,$cell);
219         $txt .= "\n   " if $cell%8 == 0;
220         if( $decomposition_tag{$code} != 0 ) {
221             $txt .= " $decomposition_pos{$code},";
222             $table_txt .= "    $decomposition_tag{$code},";
223             $table_txt .= " 0x$code,";
224             $table_txt .= " $decomposition{$code}, 0,\n";
225             $size += 2 * $decomposition_len{$code} + 6;
226         } else {
227             $txt .= " 0,";
228         }
229     }
230     $therow = $row{$txt};
231     if ( !defined $therow ) {
232         $size+=512;
233         $therow = "di_".sprintf("%02X",$row);
234         $dec_rowtext{$therow} =
235             "static const Q_UINT16 ${therow}[] = {$txt\n};\n\n";
236         $row{$txt}=$therow;
237     }
238     $rowtable_txt .= "\n    " if $row%8 == 0;
239     $rowtable_txt .= "$therow, ";
240 }
241
242 # Print decomposition tables
243 #
244 print "$table_txt\n};\n\n";
245 for $r ( sort keys %dec_rowtext ) {
246     print $dec_rowtext{$r};
247 }
248 print "$rowtable_txt\n};\n";
249 $size += 256*4;
250 print "// $size bytes\n\n";
251
252
253 # build ligature tables
254 #
255 $size = 0;
256 $position = 1;
257 $rowtable_txt =
258     "static const Q_UINT16 * const ligature_info[256] = {";
259 $table_txt =
260     "static const Q_UINT16 ligature_map[] = {\n    0,\n";
261 for $lig_row ( 0..255 ) {
262     $nonzero=0;
263     $txt = "";
264     for $cell ( 0..255 ) {
265         $code = sprintf("%02X%02X",$lig_row,$cell);
266         $txt .= "\n   " if $cell%8 == 0;
267         if( defined $ligature{$code} ) {
268             $txt .= " $position,";
269             @ligature = split(" ", $ligature{$code});
270 #           we need to sort ligatures according to their length.
271 #           long ones have to come first!
272             @ligature_sort = sort { $decomposition_len{$b} <=>  $decomposition_len{$a} } @ligature;
273 #           now replace each code by it's position in
274 #           the decomposition map.
275             undef(@lig_pos);
276             for $n (@ligature_sort) {
277                 push(@lig_pos, $decomposition_pos{$n});
278             }
279 #           debug info
280             if( 0 ) {
281                 print "ligatures: $ligature{$code}\n";
282                 $sort = join(" ", @ligature_sort);
283                 print "sorted   : $sort\n";
284             }
285             $lig = join(", ", @lig_pos);
286             $table_txt .= "    $lig, 0,\n";
287             $size += 2 * scalar(@ligature) + 2;
288             $position += scalar(@ligature) + 1;
289         } else {
290             $txt .= " 0,";
291         }
292     }
293     $therow = $lig_row{$txt};
294     if ( !defined $therow ) {
295         $size+=512;
296         $therow = "li_".sprintf("%02X",$lig_row);
297         $lig_rowtext{$therow} =
298             "static const Q_UINT16 ${therow}[] = {$txt\n};\n\n";
299         $lig_row{$txt}=$therow;
300     }
301     $rowtable_txt .= "\n    " if $lig_row%8 == 0;
302     $rowtable_txt .= "$therow, ";
303 }
304
305 # Print ligature tables
306 #
307 print "$table_txt\n};\n\n";
308 for $r ( sort keys %lig_rowtext ) {
309     print $lig_rowtext{$r};
310 }
311 print "$rowtable_txt\n};\n";
312 $size += 256*4;
313 print "// $size bytes\n\n";
314
315
316
317 # Build direction/joining/mirrored pages...
318 #
319 $rowtable_txt =
320     "static const Q_UINT8 * const direction_info[256] = {";
321 for $dir_row ( 0..255 ) {
322     $nonzero=0;
323     $txt = "";
324     for $cell ( 0..255 ) {
325         $code = sprintf("%02X%02X",$dir_row,$cell);
326         $dir = $bidi_category{$code};
327         $dir = 0 if !defined $dir;
328         $join = $joining{$code};
329         $join = 0 if !defined $join;
330         $mirr = $mirrored{$code};
331         $mirr = 0 if !defined $mirr;
332         $info = $dir + 32*$join + 128*$mirr;
333         $txt .= "\n    " if $cell%8 == 0;
334         $txt .= "$info, ";
335     }
336     $therow = $dir_row{$txt};
337     if ( !defined $therow ) {
338         $size+=256;
339         $therow = "dir_".sprintf("%02X",$dir_row);
340         $dir_rowtext{$therow} =
341             "static const Q_UINT8 ${therow}[] = {$txt\n};\n\n";
342         $dir_row{$txt}=$therow;
343     }
344     $rowtable_txt .= "\n    " if $dir_row%8 == 0;
345     $rowtable_txt .= "$therow, ";
346 }
347
348 # Print pages...
349 #
350 for $r ( sort keys %dir_rowtext ) {
351     print $dir_rowtext{$r};
352 }
353 print "$rowtable_txt\n};\n";
354 $size += 256*4;
355 print "// $size bytes\n\n";
356
357
358
359 print "#endif\n\n";
360 print "// END OF GENERATED DATA\n\n";
361
362
363 __END__
364
365 */
366
367
368 // START OF GENERATED DATA
369
370 static const Q_UINT8 ui_00[] = {
371     10, 10, 10, 10, 10, 10, 10, 10,
372     10, 10, 10, 10, 10, 10, 10, 10,
373     10, 10, 10, 10, 10, 10, 10, 10,
374     10, 10, 10, 10, 10, 10, 10, 10,
375     7, 26, 26, 26, 28, 26, 26, 26,
376     22, 23, 26, 27, 26, 21, 26, 26,
377     4, 4, 4, 4, 4, 4, 4, 4,
378     4, 4, 26, 26, 27, 27, 27, 26,
379     26, 15, 15, 15, 15, 15, 15, 15,
380     15, 15, 15, 15, 15, 15, 15, 15,
381     15, 15, 15, 15, 15, 15, 15, 15,
382     15, 15, 15, 22, 26, 23, 29, 20,
383     29, 16, 16, 16, 16, 16, 16, 16,
384     16, 16, 16, 16, 16, 16, 16, 16,
385     16, 16, 16, 16, 16, 16, 16, 16,
386     16, 16, 16, 22, 27, 23, 27, 10,
387     10, 10, 10, 10, 10, 10, 10, 10,
388     10, 10, 10, 10, 10, 10, 10, 10,
389     10, 10, 10, 10, 10, 10, 10, 10,
390     10, 10, 10, 10, 10, 10, 10, 10,
391     7, 26, 28, 28, 28, 28, 30, 30,
392     29, 30, 16, 24, 27, 21, 30, 29,
393     30, 27, 6, 6, 29, 16, 30, 26,
394     29, 6, 16, 25, 6, 6, 6, 26,
395     15, 15, 15, 15, 15, 15, 15, 15,
396     15, 15, 15, 15, 15, 15, 15, 15,
397     15, 15, 15, 15, 15, 15, 15, 27,
398     15, 15, 15, 15, 15, 15, 15, 16,
399     16, 16, 16, 16, 16, 16, 16, 16,
400     16, 16, 16, 16, 16, 16, 16, 16,
401     16, 16, 16, 16, 16, 16, 16, 27,
402     16, 16, 16, 16, 16, 16, 16, 16,
403 };
404
405 #ifndef QT_NO_UNICODETABLES
406
407 static const Q_UINT8 ui_01[] = {
408     15, 16, 15, 16, 15, 16, 15, 16,
409     15, 16, 15, 16, 15, 16, 15, 16,
410     15, 16, 15, 16, 15, 16, 15, 16,
411     15, 16, 15, 16, 15, 16, 15, 16,
412     15, 16, 15, 16, 15, 16, 15, 16,
413     15, 16, 15, 16, 15, 16, 15, 16,
414     15, 16, 15, 16, 15, 16, 15, 16,
415     16, 15, 16, 15, 16, 15, 16, 15,
416     16, 15, 16, 15, 16, 15, 16, 15,
417     16, 16, 15, 16, 15, 16, 15, 16,
418     15, 16, 15, 16, 15, 16, 15, 16,
419     15, 16, 15, 16, 15, 16, 15, 16,
420     15, 16, 15, 16, 15, 16, 15, 16,
421     15, 16, 15, 16, 15, 16, 15, 16,
422     15, 16, 15, 16, 15, 16, 15, 16,
423     15, 15, 16, 15, 16, 15, 16, 16,
424     16, 15, 15, 16, 15, 16, 15, 15,
425     16, 15, 15, 15, 16, 16, 15, 15,
426     15, 15, 16, 15, 15, 16, 15, 15,
427     15, 16, 16, 16, 15, 15, 16, 15,
428     15, 16, 15, 16, 15, 16, 15, 15,
429     16, 15, 16, 16, 15, 16, 15, 15,
430     16, 15, 15, 15, 16, 15, 16, 15,
431     15, 16, 16, 19, 15, 16, 16, 16,
432     19, 19, 19, 19, 15, 17, 16, 15,
433     17, 16, 15, 17, 16, 15, 16, 15,
434     16, 15, 16, 15, 16, 15, 16, 15,
435     16, 15, 16, 15, 16, 16, 15, 16,
436     15, 16, 15, 16, 15, 16, 15, 16,
437     15, 16, 15, 16, 15, 16, 15, 16,
438     16, 15, 17, 16, 15, 16, 15, 15,
439     15, 16, 15, 16, 15, 16, 15, 16,
440 };
441
442 static const Q_UINT8 ui_02[] = {
443     15, 16, 15, 16, 15, 16, 15, 16,
444     15, 16, 15, 16, 15, 16, 15, 16,
445     15, 16, 15, 16, 15, 16, 15, 16,
446     15, 16, 15, 16, 15, 16, 15, 16,
447     0, 0, 15, 16, 15, 16, 15, 16,
448     15, 16, 15, 16, 15, 16, 15, 16,
449     15, 16, 15, 16, 0, 0, 0, 0,
450     0, 0, 0, 0, 0, 0, 0, 0,
451     0, 0, 0, 0, 0, 0, 0, 0,
452     0, 0, 0, 0, 0, 0, 0, 0,
453     16, 16, 16, 16, 16, 16, 16, 16,
454     16, 16, 16, 16, 16, 16, 16, 16,
455     16, 16, 16, 16, 16, 16, 16, 16,
456     16, 16, 16, 16, 16, 16, 16, 16,
457     16, 16, 16, 16, 16, 16, 16, 16,
458     16, 16, 16, 16, 16, 16, 16, 16,
459     16, 16, 16, 16, 16, 16, 16, 16,
460     16, 16, 16, 16, 16, 16, 16, 16,
461     16, 16, 16, 16, 16, 16, 16, 16,
462     16, 16, 16, 16, 16, 16, 16, 16,
463     16, 16, 16, 16, 16, 16, 16, 16,
464     16, 16, 16, 16, 16, 16, 0, 0,
465     18, 18, 18, 18, 18, 18, 18, 18,
466     18, 29, 29, 18, 18, 18, 18, 18,
467     18, 18, 29, 29, 29, 29, 29, 29,
468     29, 29, 29, 29, 29, 29, 29, 29,
469     18, 18, 29, 29, 29, 29, 29, 29,
470     29, 29, 29, 29, 29, 29, 29, 29,
471     18, 18, 18, 18, 18, 29, 29, 29,
472     29, 29, 29, 29, 29, 29, 18, 0,
473     0, 0, 0, 0, 0, 0, 0, 0,
474     0, 0, 0, 0, 0, 0, 0, 0,
475 };
476
477 static const Q_UINT8 ui_03[] = {
478     1, 1, 1, 1, 1, 1, 1, 1,
479     1, 1, 1, 1, 1, 1, 1, 1,
480     1, 1, 1, 1, 1, 1, 1, 1,
481     1, 1, 1, 1, 1, 1, 1, 1,
482     1, 1, 1, 1, 1, 1, 1, 1,
483     1, 1, 1, 1, 1, 1, 1, 1,
484     1, 1, 1, 1, 1, 1, 1, 1,
485     1, 1, 1, 1, 1, 1, 1, 1,
486     1, 1, 1, 1, 1, 1, 1, 1,
487     1, 1, 1, 1, 1, 1, 1, 0,
488     0, 0, 0, 0, 0, 0, 0, 0,
489     0, 0, 0, 0, 0, 0, 0, 0,
490     1, 1, 1, 0, 0, 0, 0, 0,
491     0, 0, 0, 0, 0, 0, 0, 0,
492     0, 0, 0, 0, 29, 29, 0, 0,
493     0, 0, 18, 0, 0, 0, 26, 0,
494     0, 0, 0, 0, 29, 29, 15, 26,
495     15, 15, 15, 0, 15, 0, 15, 15,
496     16, 15, 15, 15, 15, 15, 15, 15,
497     15, 15, 15, 15, 15, 15, 15, 15,
498     15, 15, 0, 15, 15, 15, 15, 15,
499     15, 15, 15, 15, 16, 16, 16, 16,
500     16, 16, 16, 16, 16, 16, 16, 16,
501     16, 16, 16, 16, 16, 16, 16, 16,
502     16, 16, 16, 16, 16, 16, 16, 16,
503     16, 16, 16, 16, 16, 16, 16, 0,
504     16, 16, 15, 15, 15, 16, 16, 16,
505     0, 0, 15, 16, 15, 16, 15, 16,
506     15, 16, 15, 16, 15, 16, 15, 16,
507     15, 16, 15, 16, 15, 16, 15, 16,
508     16, 16, 16, 16, 0, 0, 0, 0,
509     0, 0, 0, 0, 0, 0, 0, 0,
510 };
511
512 static const Q_UINT8 ui_04[] = {
513     15, 15, 15, 15, 15, 15, 15, 15,
514     15, 15, 15, 15, 15, 15, 15, 15,
515     15, 15, 15, 15, 15, 15, 15, 15,
516     15, 15, 15, 15, 15, 15, 15, 15,
517     15, 15, 15, 15, 15, 15, 15, 15,
518     15, 15, 15, 15, 15, 15, 15, 15,
519     16, 16, 16, 16, 16, 16, 16, 16,
520     16, 16, 16, 16, 16, 16, 16, 16,
521     16, 16, 16, 16, 16, 16, 16, 16,
522     16, 16, 16, 16, 16, 16, 16, 16,
523     16, 16, 16, 16, 16, 16, 16, 16,
524     16, 16, 16, 16, 16, 16, 16, 16,
525     15, 16, 15, 16, 15, 16, 15, 16,
526     15, 16, 15, 16, 15, 16, 15, 16,
527     15, 16, 15, 16, 15, 16, 15, 16,
528     15, 16, 15, 16, 15, 16, 15, 16,
529     15, 16, 30, 1, 1, 1, 1, 0,
530     3, 3, 0, 0, 15, 16, 15, 16,
531     15, 16, 15, 16, 15, 16, 15, 16,
532     15, 16, 15, 16, 15, 16, 15, 16,
533     15, 16, 15, 16, 15, 16, 15, 16,
534     15, 16, 15, 16, 15, 16, 15, 16,
535     15, 16, 15, 16, 15, 16, 15, 16,
536     15, 16, 15, 16, 15, 16, 15, 16,
537     15, 15, 16, 15, 16, 0, 0, 15,
538     16, 0, 0, 15, 16, 0, 0, 0,
539     15, 16, 15, 16, 15, 16, 15, 16,
540     15, 16, 15, 16, 15, 16, 15, 16,
541     15, 16, 15, 16, 15, 16, 15, 16,
542     15, 16, 15, 16, 15, 16, 15, 16,
543     15, 16, 15, 16, 15, 16, 0, 0,
544     15, 16, 0, 0, 0, 0, 0, 0,
545 };
546
547 static const Q_UINT8 ui_05[] = {
548     0, 0, 0, 0, 0, 0, 0, 0,
549     0, 0, 0, 0, 0, 0, 0, 0,
550     0, 0, 0, 0, 0, 0, 0, 0,
551     0, 0, 0, 0, 0, 0, 0, 0,
552     0, 0, 0, 0, 0, 0, 0, 0,
553     0, 0, 0, 0, 0, 0, 0, 0,
554     0, 15, 15, 15, 15, 15, 15, 15,
555     15, 15, 15, 15, 15, 15, 15, 15,
556     15, 15, 15, 15, 15, 15, 15, 15,
557     15, 15, 15, 15, 15, 15, 15, 15,
558     15, 15, 15, 15, 15, 15, 15, 0,
559     0, 18, 26, 26, 26, 26, 26, 26,
560     0, 16, 16, 16, 16, 16, 16, 16,
561     16, 16, 16, 16, 16, 16, 16, 16,
562     16, 16, 16, 16, 16, 16, 16, 16,
563     16, 16, 16, 16, 16, 16, 16, 16,
564     16, 16, 16, 16, 16, 16, 16, 16,
565     0, 26, 21, 0, 0, 0, 0, 0,
566     0, 1, 1, 1, 1, 1, 1, 1,
567     1, 1, 1, 1, 1, 1, 1, 1,
568     1, 1, 0, 1, 1, 1, 1, 1,
569     1, 1, 1, 1, 1, 1, 1, 1,
570     1, 1, 1, 1, 1, 1, 1, 1,
571     1, 1, 0, 1, 1, 1, 26, 1,
572     26, 1, 1, 26, 1, 0, 0, 0,
573     0, 0, 0, 0, 0, 0, 0, 0,
574     19, 19, 19, 19, 19, 19, 19, 19,
575     19, 19, 19, 19, 19, 19, 19, 19,
576     19, 19, 19, 19, 19, 19, 19, 19,
577     19, 19, 19, 0, 0, 0, 0, 0,
578     19, 19, 19, 26, 26, 0, 0, 0,
579     0, 0, 0, 0, 0, 0, 0, 0,
580 };
581
582 static const Q_UINT8 ui_06[] = {
583     0, 0, 0, 0, 0, 0, 0, 0,
584     0, 0, 0, 0, 26, 0, 0, 0,
585     0, 0, 0, 0, 0, 0, 0, 0,
586     0, 0, 0, 26, 0, 0, 0, 26,
587     0, 19, 19, 19, 19, 19, 19, 19,
588     19, 19, 19, 19, 19, 19, 19, 19,
589     19, 19, 19, 19, 19, 19, 19, 19,
590     19, 19, 19, 0, 0, 0, 0, 0,
591     18, 19, 19, 19, 19, 19, 19, 19,
592     19, 19, 19, 1, 1, 1, 1, 1,
593     1, 1, 1, 1, 1, 1, 0, 0,
594     0, 0, 0, 0, 0, 0, 0, 0,
595     4, 4, 4, 4, 4, 4, 4, 4,
596     4, 4, 26, 26, 26, 26, 0, 0,
597     1, 19, 19, 19, 19, 19, 19, 19,
598     19, 19, 19, 19, 19, 19, 19, 19,
599     19, 19, 19, 19, 19, 19, 19, 19,
600     19, 19, 19, 19, 19, 19, 19, 19,
601     19, 19, 19, 19, 19, 19, 19, 19,
602     19, 19, 19, 19, 19, 19, 19, 19,
603     19, 19, 19, 19, 19, 19, 19, 19,
604     19, 19, 19, 19, 19, 19, 19, 19,
605     19, 19, 19, 19, 19, 19, 19, 19,
606     19, 19, 19, 19, 19, 19, 19, 19,
607     19, 19, 19, 19, 19, 19, 19, 19,
608     19, 19, 19, 19, 19, 19, 19, 19,
609     19, 19, 19, 19, 26, 19, 1, 1,
610     1, 1, 1, 1, 1, 3, 3, 1,
611     1, 1, 1, 1, 1, 18, 18, 1,
612     1, 30, 1, 1, 1, 1, 0, 0,
613     4, 4, 4, 4, 4, 4, 4, 4,
614     4, 4, 19, 19, 19, 30, 30, 0,
615 };
616
617 static const Q_UINT8 ui_07[] = {
618     26, 26, 26, 26, 26, 26, 26, 26,
619     26, 26, 26, 26, 26, 26, 0, 11,
620     19, 1, 19, 19, 19, 19, 19, 19,
621     19, 19, 19, 19, 19, 19, 19, 19,
622     19, 19, 19, 19, 19, 19, 19, 19,
623     19, 19, 19, 19, 19, 0, 0, 0,
624     1, 1, 1, 1, 1, 1, 1, 1,
625     1, 1, 1, 1, 1, 1, 1, 1,
626     1, 1, 1, 1, 1, 1, 1, 1,
627     1, 1, 1, 0, 0, 0, 0, 0,
628     0, 0, 0, 0, 0, 0, 0, 0,
629     0, 0, 0, 0, 0, 0, 0, 0,
630     0, 0, 0, 0, 0, 0, 0, 0,
631     0, 0, 0, 0, 0, 0, 0, 0,
632     0, 0, 0, 0, 0, 0, 0, 0,
633     0, 0, 0, 0, 0, 0, 0, 0,
634     19, 19, 19, 19, 19, 19, 19, 19,
635     19, 19, 19, 19, 19, 19, 19, 19,
636     19, 19, 19, 19, 19, 19, 19, 19,
637     19, 19, 19, 19, 19, 19, 19, 19,
638     19, 19, 19, 19, 19, 19, 1, 1,
639     1, 1, 1, 1, 1, 1, 1, 1,
640     1, 0, 0, 0, 0, 0, 0, 0,
641     0, 0, 0, 0, 0, 0, 0, 0,
642     0, 0, 0, 0, 0, 0, 0, 0,
643     0, 0, 0, 0, 0, 0, 0, 0,
644     0, 0, 0, 0, 0, 0, 0, 0,
645     0, 0, 0, 0, 0, 0, 0, 0,
646     0, 0, 0, 0, 0, 0, 0, 0,
647     0, 0, 0, 0, 0, 0, 0, 0,
648     0, 0, 0, 0, 0, 0, 0, 0,
649     0, 0, 0, 0, 0, 0, 0, 0,
650 };
651
652 static const Q_UINT8 ui_08[] = {
653     0, 0, 0, 0, 0, 0, 0, 0,
654     0, 0, 0, 0, 0, 0, 0, 0,
655     0, 0, 0, 0, 0, 0, 0, 0,
656     0, 0, 0, 0, 0, 0, 0, 0,
657     0, 0, 0, 0, 0, 0, 0, 0,
658     0, 0, 0, 0, 0, 0, 0, 0,
659     0, 0, 0, 0, 0, 0, 0, 0,
660     0, 0, 0, 0, 0, 0, 0, 0,
661     0, 0, 0, 0, 0, 0, 0, 0,
662     0, 0, 0, 0, 0, 0, 0, 0,
663     0, 0, 0, 0, 0, 0, 0, 0,
664     0, 0, 0, 0, 0, 0, 0, 0,
665     0, 0, 0, 0, 0, 0, 0, 0,
666     0, 0, 0, 0, 0, 0, 0, 0,
667     0, 0, 0, 0, 0, 0, 0, 0,
668     0, 0, 0, 0, 0, 0, 0, 0,
669     0, 0, 0, 0, 0, 0, 0, 0,
670     0, 0, 0, 0, 0, 0, 0, 0,
671     0, 0, 0, 0, 0, 0, 0, 0,
672     0, 0, 0, 0, 0, 0, 0, 0,
673     0, 0, 0, 0, 0, 0, 0, 0,
674     0, 0, 0, 0, 0, 0, 0, 0,
675     0, 0, 0, 0, 0, 0, 0, 0,
676     0, 0, 0, 0, 0, 0, 0, 0,
677     0, 0, 0, 0, 0, 0, 0, 0,
678     0, 0, 0, 0, 0, 0, 0, 0,
679     0, 0, 0, 0, 0, 0, 0, 0,
680     0, 0, 0, 0, 0, 0, 0, 0,
681     0, 0, 0, 0, 0, 0, 0, 0,
682     0, 0, 0, 0, 0, 0, 0, 0,
683     0, 0, 0, 0, 0, 0, 0, 0,
684     0, 0, 0, 0, 0, 0, 0, 0,
685 };
686
687 static const Q_UINT8 ui_09[] = {
688     0, 1, 1, 2, 0, 19, 19, 19,
689     19, 19, 19, 19, 19, 19, 19, 19,
690     19, 19, 19, 19, 19, 19, 19, 19,
691     19, 19, 19, 19, 19, 19, 19, 19,
692     19, 19, 19, 19, 19, 19, 19, 19,
693     19, 19, 19, 19, 19, 19, 19, 19,
694     19, 19, 19, 19, 19, 19, 19, 19,
695     19, 19, 0, 0, 1, 19, 2, 2,
696     2, 1, 1, 1, 1, 1, 1, 1,
697     1, 2, 2, 2, 2, 1, 0, 0,
698     19, 1, 1, 1, 1, 0, 0, 0,
699     19, 19, 19, 19, 19, 19, 19, 19,
700     19, 19, 1, 1, 26, 26, 4, 4,
701     4, 4, 4, 4, 4, 4, 4, 4,
702     26, 0, 0, 0, 0, 0, 0, 0,
703     0, 0, 0, 0, 0, 0, 0, 0,
704     0, 1, 2, 2, 0, 19, 19, 19,
705     19, 19, 19, 19, 19, 0, 0, 19,
706     19, 0, 0, 19, 19, 19, 19, 19,
707     19, 19, 19, 19, 19, 19, 19, 19,
708     19, 19, 19, 19, 19, 19, 19, 19,
709     19, 0, 19, 19, 19, 19, 19, 19,
710     19, 0, 19, 0, 0, 0, 19, 19,
711     19, 19, 0, 0, 1, 0, 2, 2,
712     2, 1, 1, 1, 1, 0, 0, 2,
713     2, 0, 0, 2, 2, 1, 0, 0,
714     0, 0, 0, 0, 0, 0, 0, 2,
715     0, 0, 0, 0, 19, 19, 0, 19,
716     19, 19, 1, 1, 0, 0, 4, 4,
717     4, 4, 4, 4, 4, 4, 4, 4,
718     19, 19, 28, 28, 6, 6, 6, 6,
719     6, 6, 30, 0, 0, 0, 0, 0,
720 };
721
722 static const Q_UINT8 ui_0A[] = {
723     0, 0, 1, 0, 0, 19, 19, 19,
724     19, 19, 19, 0, 0, 0, 0, 19,
725     19, 0, 0, 19, 19, 19, 19, 19,
726     19, 19, 19, 19, 19, 19, 19, 19,
727     19, 19, 19, 19, 19, 19, 19, 19,
728     19, 0, 19, 19, 19, 19, 19, 19,
729     19, 0, 19, 19, 0, 19, 19, 0,
730     19, 19, 0, 0, 1, 0, 2, 2,
731     2, 1, 1, 0, 0, 0, 0, 1,
732     1, 0, 0, 1, 1, 1, 0, 0,
733     0, 0, 0, 0, 0, 0, 0, 0,
734     0, 19, 19, 19, 19, 0, 19, 0,
735     0, 0, 0, 0, 0, 0, 4, 4,
736     4, 4, 4, 4, 4, 4, 4, 4,
737     1, 1, 19, 19, 19, 0, 0, 0,
738     0, 0, 0, 0, 0, 0, 0, 0,
739     0, 1, 1, 2, 0, 19, 19, 19,
740     19, 19, 19, 19, 0, 19, 0, 19,
741     19, 19, 0, 19, 19, 19, 19, 19,
742     19, 19, 19, 19, 19, 19, 19, 19,
743     19, 19, 19, 19, 19, 19, 19, 19,
744     19, 0, 19, 19, 19, 19, 19, 19,
745     19, 0, 19, 19, 0, 19, 19, 19,
746     19, 19, 0, 0, 1, 19, 2, 2,
747     2, 1, 1, 1, 1, 1, 0, 1,
748     1, 2, 0, 2, 2, 1, 0, 0,
749     19, 0, 0, 0, 0, 0, 0, 0,
750     0, 0, 0, 0, 0, 0, 0, 0,
751     19, 0, 0, 0, 0, 0, 4, 4,
752     4, 4, 4, 4, 4, 4, 4, 4,
753     0, 0, 0, 0, 0, 0, 0, 0,
754     0, 0, 0, 0, 0, 0, 0, 0,
755 };
756
757 static const Q_UINT8 ui_0B[] = {
758     0, 1, 2, 2, 0, 19, 19, 19,
759     19, 19, 19, 19, 19, 0, 0, 19,
760     19, 0, 0, 19, 19, 19, 19, 19,
761     19, 19, 19, 19, 19, 19, 19, 19,
762     19, 19, 19, 19, 19, 19, 19, 19,
763     19, 0, 19, 19, 19, 19, 19, 19,
764     19, 0, 19, 19, 0, 0, 19, 19,
765     19, 19, 0, 0, 1, 19, 2, 1,
766     2, 1, 1, 1, 0, 0, 0, 2,
767     2, 0, 0, 2, 2, 1, 0, 0,
768     0, 0, 0, 0, 0, 0, 1, 2,
769     0, 0, 0, 0, 19, 19, 0, 19,
770     19, 19, 0, 0, 0, 0, 4, 4,
771     4, 4, 4, 4, 4, 4, 4, 4,
772     30, 0, 0, 0, 0, 0, 0, 0,
773     0, 0, 0, 0, 0, 0, 0, 0,
774     0, 0, 1, 2, 0, 19, 19, 19,
775     19, 19, 19, 0, 0, 0, 19, 19,
776     19, 0, 19, 19, 19, 19, 0, 0,
777     0, 19, 19, 0, 19, 0, 19, 19,
778     0, 0, 0, 19, 19, 0, 0, 0,
779     19, 19, 19, 0, 0, 0, 19, 19,
780     19, 19, 19, 19, 19, 19, 0, 19,
781     19, 19, 0, 0, 0, 0, 2, 2,
782     1, 2, 2, 0, 0, 0, 2, 2,
783     2, 0, 2, 2, 2, 1, 0, 0,
784     0, 0, 0, 0, 0, 0, 0, 2,
785     0, 0, 0, 0, 0, 0, 0, 0,
786     0, 0, 0, 0, 0, 0, 0, 4,
787     4, 4, 4, 4, 4, 4, 4, 4,
788     6, 6, 6, 0, 0, 0, 0, 0,
789     0, 0, 0, 0, 0, 0, 0, 0,
790 };
791
792 static const Q_UINT8 ui_0C[] = {
793     0, 2, 2, 2, 0, 19, 19, 19,
794     19, 19, 19, 19, 19, 0, 19, 19,
795     19, 0, 19, 19, 19, 19, 19, 19,
796     19, 19, 19, 19, 19, 19, 19, 19,
797     19, 19, 19, 19, 19, 19, 19, 19,
798     19, 0, 19, 19, 19, 19, 19, 19,
799     19, 19, 19, 19, 0, 19, 19, 19,
800     19, 19, 0, 0, 0, 0, 1, 1,
801     1, 2, 2, 2, 2, 0, 1, 1,
802     1, 0, 1, 1, 1, 1, 0, 0,
803     0, 0, 0, 0, 0, 1, 1, 0,
804     0, 0, 0, 0, 0, 0, 0, 0,
805     19, 19, 0, 0, 0, 0, 4, 4,
806     4, 4, 4, 4, 4, 4, 4, 4,
807     0, 0, 0, 0, 0, 0, 0, 0,
808     0, 0, 0, 0, 0, 0, 0, 0,
809     0, 0, 2, 2, 0, 19, 19, 19,
810     19, 19, 19, 19, 19, 0, 19, 19,
811     19, 0, 19, 19, 19, 19, 19, 19,
812     19, 19, 19, 19, 19, 19, 19, 19,
813     19, 19, 19, 19, 19, 19, 19, 19,
814     19, 0, 19, 19, 19, 19, 19, 19,
815     19, 19, 19, 19, 0, 19, 19, 19,
816     19, 19, 0, 0, 0, 0, 2, 1,
817     2, 2, 2, 2, 2, 0, 1, 2,
818     2, 0, 2, 2, 1, 1, 0, 0,
819     0, 0, 0, 0, 0, 2, 2, 0,
820     0, 0, 0, 0, 0, 0, 19, 0,
821     19, 19, 0, 0, 0, 0, 4, 4,
822     4, 4, 4, 4, 4, 4, 4, 4,
823     0, 0, 0, 0, 0, 0, 0, 0,
824     0, 0, 0, 0, 0, 0, 0, 0,
825 };
826
827 static const Q_UINT8 ui_0D[] = {
828     0, 0, 2, 2, 0, 19, 19, 19,
829     19, 19, 19, 19, 19, 0, 19, 19,
830     19, 0, 19, 19, 19, 19, 19, 19,
831     19, 19, 19, 19, 19, 19, 19, 19,
832     19, 19, 19, 19, 19, 19, 19, 19,
833     19, 0, 19, 19, 19, 19, 19, 19,
834     19, 19, 19, 19, 19, 19, 19, 19,
835     19, 19, 0, 0, 0, 0, 2, 2,
836     2, 1, 1, 1, 0, 0, 2, 2,
837     2, 0, 2, 2, 2, 1, 0, 0,
838     0, 0, 0, 0, 0, 0, 0, 2,
839     0, 0, 0, 0, 0, 0, 0, 0,
840     19, 19, 0, 0, 0, 0, 4, 4,
841     4, 4, 4, 4, 4, 4, 4, 4,
842     0, 0, 0, 0, 0, 0, 0, 0,
843     0, 0, 0, 0, 0, 0, 0, 0,
844     0, 0, 2, 2, 0, 19, 19, 19,
845     19, 19, 19, 19, 19, 19, 19, 19,
846     19, 19, 19, 19, 19, 19, 19, 0,
847     0, 0, 19, 19, 19, 19, 19, 19,
848     19, 19, 19, 19, 19, 19, 19, 19,
849     19, 19, 19, 19, 19, 19, 19, 19,
850     19, 19, 0, 19, 19, 19, 19, 19,
851     19, 19, 19, 19, 0, 19, 0, 0,
852     19, 19, 19, 19, 19, 19, 19, 0,
853     0, 0, 1, 0, 0, 0, 0, 2,
854     2, 2, 1, 1, 1, 0, 1, 0,
855     2, 2, 2, 2, 2, 2, 2, 2,
856     0, 0, 0, 0, 0, 0, 0, 0,
857     0, 0, 0, 0, 0, 0, 0, 0,
858     0, 0, 2, 2, 26, 0, 0, 0,
859     0, 0, 0, 0, 0, 0, 0, 0,
860 };
861
862 static const Q_UINT8 ui_0E[] = {
863     0, 19, 19, 19, 19, 19, 19, 19,
864     19, 19, 19, 19, 19, 19, 19, 19,
865     19, 19, 19, 19, 19, 19, 19, 19,
866     19, 19, 19, 19, 19, 19, 19, 19,
867     19, 19, 19, 19, 19, 19, 19, 19,
868     19, 19, 19, 19, 19, 19, 19, 19,
869     19, 1, 19, 19, 1, 1, 1, 1,
870     1, 1, 1, 0, 0, 0, 0, 28,
871     19, 19, 19, 19, 19, 19, 18, 1,
872     1, 1, 1, 1, 1, 1, 1, 26,
873     4, 4, 4, 4, 4, 4, 4, 4,
874     4, 4, 26, 26, 0, 0, 0, 0,
875     0, 0, 0, 0, 0, 0, 0, 0,
876     0, 0, 0, 0, 0, 0, 0, 0,
877     0, 0, 0, 0, 0, 0, 0, 0,
878     0, 0, 0, 0, 0, 0, 0, 0,
879     0, 19, 19, 0, 19, 0, 0, 19,
880     19, 0, 19, 0, 0, 19, 0, 0,
881     0, 0, 0, 0, 19, 19, 19, 19,
882     0, 19, 19, 19, 19, 19, 19, 19,
883     0, 19, 19, 19, 0, 19, 0, 19,
884     0, 0, 19, 19, 0, 19, 19, 19,
885     19, 1, 19, 19, 1, 1, 1, 1,
886     1, 1, 0, 1, 1, 19, 0, 0,
887     19, 19, 19, 19, 19, 0, 18, 0,
888     1, 1, 1, 1, 1, 1, 0, 0,
889     4, 4, 4, 4, 4, 4, 4, 4,
890     4, 4, 0, 0, 19, 19, 0, 0,
891     0, 0, 0, 0, 0, 0, 0, 0,
892     0, 0, 0, 0, 0, 0, 0, 0,
893     0, 0, 0, 0, 0, 0, 0, 0,
894     0, 0, 0, 0, 0, 0, 0, 0,
895 };
896
897 static const Q_UINT8 ui_0F[] = {
898     19, 30, 30, 30, 26, 26, 26, 26,
899     26, 26, 26, 26, 26, 26, 26, 26,
900     26, 26, 26, 30, 30, 30, 30, 30,
901     1, 1, 30, 30, 30, 30, 30, 30,
902     4, 4, 4, 4, 4, 4, 4, 4,
903     4, 4, 6, 6, 6, 6, 6, 6,
904     6, 6, 6, 6, 30, 1, 30, 1,
905     30, 1, 22, 23, 22, 23, 2, 2,
906     19, 19, 19, 19, 19, 19, 19, 19,
907     0, 19, 19, 19, 19, 19, 19, 19,
908     19, 19, 19, 19, 19, 19, 19, 19,
909     19, 19, 19, 19, 19, 19, 19, 19,
910     19, 19, 19, 19, 19, 19, 19, 19,
911     19, 19, 19, 0, 0, 0, 0, 0,
912     0, 1, 1, 1, 1, 1, 1, 1,
913     1, 1, 1, 1, 1, 1, 1, 2,
914     1, 1, 1, 1, 1, 26, 1, 1,
915     19, 19, 19, 19, 0, 0, 0, 0,
916     1, 1, 1, 1, 1, 1, 1, 1,
917     0, 1, 1, 1, 1, 1, 1, 1,
918     1, 1, 1, 1, 1, 1, 1, 1,
919     1, 1, 1, 1, 1, 1, 1, 1,
920     1, 1, 1, 1, 1, 1, 1, 1,
921     1, 1, 1, 1, 1, 0, 30, 30,
922     30, 30, 30, 30, 30, 30, 1, 30,
923     30, 30, 30, 30, 30, 0, 0, 30,
924     0, 0, 0, 0, 0, 0, 0, 0,
925     0, 0, 0, 0, 0, 0, 0, 0,
926     0, 0, 0, 0, 0, 0, 0, 0,
927     0, 0, 0, 0, 0, 0, 0, 0,
928     0, 0, 0, 0, 0, 0, 0, 0,
929     0, 0, 0, 0, 0, 0, 0, 0,
930 };
931
932 static const Q_UINT8 ui_10[] = {
933     19, 19, 19, 19, 19, 19, 19, 19,
934     19, 19, 19, 19, 19, 19, 19, 19,
935     19, 19, 19, 19, 19, 19, 19, 19,
936     19, 19, 19, 19, 19, 19, 19, 19,
937     19, 19, 0, 19, 19, 19, 19, 19,
938     0, 19, 19, 0, 2, 1, 1, 1,
939     1, 2, 1, 0, 0, 0, 1, 1,
940     2, 1, 0, 0, 0, 0, 0, 0,
941     4, 4, 4, 4, 4, 4, 4, 4,
942     4, 4, 26, 26, 26, 26, 26, 26,
943     19, 19, 19, 19, 19, 19, 2, 2,
944     1, 1, 0, 0, 0, 0, 0, 0,
945     0, 0, 0, 0, 0, 0, 0, 0,
946     0, 0, 0, 0, 0, 0, 0, 0,
947     0, 0, 0, 0, 0, 0, 0, 0,
948     0, 0, 0, 0, 0, 0, 0, 0,
949     0, 0, 0, 0, 0, 0, 0, 0,
950     0, 0, 0, 0, 0, 0, 0, 0,
951     0, 0, 0, 0, 0, 0, 0, 0,
952     0, 0, 0, 0, 0, 0, 0, 0,
953     15, 15, 15, 15, 15, 15, 15, 15,
954     15, 15, 15, 15, 15, 15, 15, 15,
955     15, 15, 15, 15, 15, 15, 15, 15,
956     15, 15, 15, 15, 15, 15, 15, 15,
957     15, 15, 15, 15, 15, 15, 0, 0,
958     0, 0, 0, 0, 0, 0, 0, 0,
959     19, 19, 19, 19, 19, 19, 19, 19,
960     19, 19, 19, 19, 19, 19, 19, 19,
961     19, 19, 19, 19, 19, 19, 19, 19,
962     19, 19, 19, 19, 19, 19, 19, 19,
963     19, 19, 19, 19, 19, 19, 19, 0,
964     0, 0, 0, 26, 0, 0, 0, 0,
965 };
966
967 static const Q_UINT8 ui_11[] = {
968     19, 19, 19, 19, 19, 19, 19, 19,
969     19, 19, 19, 19, 19, 19, 19, 19,
970     19, 19, 19, 19, 19, 19, 19, 19,
971     19, 19, 19, 19, 19, 19, 19, 19,
972     19, 19, 19, 19, 19, 19, 19, 19,
973     19, 19, 19, 19, 19, 19, 19, 19,
974     19, 19, 19, 19, 19, 19, 19, 19,
975     19, 19, 19, 19, 19, 19, 19, 19,
976     19, 19, 19, 19, 19, 19, 19, 19,
977     19, 19, 19, 19, 19, 19, 19, 19,
978     19, 19, 19, 19, 19, 19, 19, 19,
979     19, 19, 0, 0, 0, 0, 0, 19,
980     19, 19, 19, 19, 19, 19, 19, 19,
981     19, 19, 19, 19, 19, 19, 19, 19,
982     19, 19, 19, 19, 19, 19, 19, 19,
983     19, 19, 19, 19, 19, 19, 19, 19,
984     19, 19, 19, 19, 19, 19, 19, 19,
985     19, 19, 19, 19, 19, 19, 19, 19,
986     19, 19, 19, 19, 19, 19, 19, 19,
987     19, 19, 19, 19, 19, 19, 19, 19,
988     19, 19, 19, 0, 0, 0, 0, 0,
989     19, 19, 19, 19, 19, 19, 19, 19,
990     19, 19, 19, 19, 19, 19, 19, 19,
991     19, 19, 19, 19, 19, 19, 19, 19,
992     19, 19, 19, 19, 19, 19, 19, 19,
993     19, 19, 19, 19, 19, 19, 19, 19,
994     19, 19, 19, 19, 19, 19, 19, 19,
995     19, 19, 19, 19, 19, 19, 19, 19,
996     19, 19, 19, 19, 19, 19, 19, 19,
997     19, 19, 19, 19, 19, 19, 19, 19,
998     19, 19, 19, 19, 19, 19, 19, 19,
999     19, 19, 0, 0, 0, 0, 0, 0,
1000 };
1001
1002 static const Q_UINT8 ui_12[] = {
1003     19, 19, 19, 19, 19, 19, 19, 0,
1004     19, 19, 19, 19, 19, 19, 19, 19,
1005     19, 19, 19, 19, 19, 19, 19, 19,
1006     19, 19, 19, 19, 19, 19, 19, 19,
1007     19, 19, 19, 19, 19, 19, 19, 19,
1008     19, 19, 19, 19, 19, 19, 19, 19,
1009     19, 19, 19, 19, 19, 19, 19, 19,
1010     19, 19, 19, 19, 19, 19, 19, 19,
1011     19, 19, 19, 19, 19, 19, 19, 0,
1012     19, 0, 19, 19, 19, 19, 0, 0,
1013     19, 19, 19, 19, 19, 19, 19, 0,
1014     19, 0, 19, 19, 19, 19, 0, 0,
1015     19, 19, 19, 19, 19, 19, 19, 19,
1016     19, 19, 19, 19, 19, 19, 19, 19,
1017     19, 19, 19, 19, 19, 19, 19, 19,
1018     19, 19, 19, 19, 19, 19, 19, 19,
1019     19, 19, 19, 19, 19, 19, 19, 0,
1020     19, 0, 19, 19, 19, 19, 0, 0,
1021     19, 19, 19, 19, 19, 19, 19, 19,
1022     19, 19, 19, 19, 19, 19, 19, 19,
1023     19, 19, 19, 19, 19, 19, 19, 19,
1024     19, 19, 19, 19, 19, 19, 19, 0,
1025     19, 0, 19, 19, 19, 19, 0, 0,
1026     19, 19, 19, 19, 19, 19, 19, 0,
1027     19, 0, 19, 19, 19, 19, 0, 0,
1028     19, 19, 19, 19, 19, 19, 19, 0,
1029     19, 19, 19, 19, 19, 19, 19, 0,
1030     19, 19, 19, 19, 19, 19, 19, 19,
1031     19, 19, 19, 19, 19, 19, 19, 19,
1032     19, 19, 19, 19, 19, 19, 19, 0,
1033     19, 19, 19, 19, 19, 19, 19, 19,
1034     19, 19, 19, 19, 19, 19, 19, 19,
1035 };
1036
1037 static const Q_UINT8 ui_13[] = {
1038     19, 19, 19, 19, 19, 19, 19, 19,
1039     19, 19, 19, 19, 19, 19, 19, 0,
1040     19, 0, 19, 19, 19, 19, 0, 0,
1041     19, 19, 19, 19, 19, 19, 19, 0,
1042     19, 19, 19, 19, 19, 19, 19, 19,
1043     19, 19, 19, 19, 19, 19, 19, 19,
1044     19, 19, 19, 19, 19, 19, 19, 19,
1045     19, 19, 19, 19, 19, 19, 19, 19,
1046     19, 19, 19, 19, 19, 19, 19, 0,
1047     19, 19, 19, 19, 19, 19, 19, 19,
1048     19, 19, 19, 19, 19, 19, 19, 19,
1049     19, 19, 19, 0, 0, 0, 0, 0,
1050     0, 26, 26, 26, 26, 26, 26, 26,
1051     26, 4, 4, 4, 4, 4, 4, 4,
1052     4, 4, 6, 6, 6, 6, 6, 6,
1053     6, 6, 6, 6, 6, 0, 0, 0,
1054     0, 0, 0, 0, 0, 0, 0, 0,
1055     0, 0, 0, 0, 0, 0, 0, 0,
1056     0, 0, 0, 0, 0, 0, 0, 0,
1057     0, 0, 0, 0, 0, 0, 0, 0,
1058     19, 19, 19, 19, 19, 19, 19, 19,
1059     19, 19, 19, 19, 19, 19, 19, 19,
1060     19, 19, 19, 19, 19, 19, 19, 19,
1061     19, 19, 19, 19, 19, 19, 19, 19,
1062     19, 19, 19, 19, 19, 19, 19, 19,
1063     19, 19, 19, 19, 19, 19, 19, 19,
1064     19, 19, 19, 19, 19, 19, 19, 19,
1065     19, 19, 19, 19, 19, 19, 19, 19,
1066     19, 19, 19, 19, 19, 19, 19, 19,
1067     19, 19, 19, 19, 19, 19, 19, 19,
1068     19, 19, 19, 19, 19, 0, 0, 0,
1069     0, 0, 0, 0, 0, 0, 0, 0,
1070 };
1071
1072 static const Q_UINT8 ui_14[] = {
1073     0, 19, 19, 19, 19, 19, 19, 19,
1074     19, 19, 19, 19, 19, 19, 19, 19,
1075     19, 19, 19, 19, 19, 19, 19, 19,
1076     19, 19, 19, 19, 19, 19, 19, 19,
1077     19, 19, 19, 19, 19, 19, 19, 19,
1078     19, 19, 19, 19, 19, 19, 19, 19,
1079     19, 19, 19, 19, 19, 19, 19, 19,
1080     19, 19, 19, 19, 19, 19, 19, 19,
1081     19, 19, 19, 19, 19, 19, 19, 19,
1082     19, 19, 19, 19, 19, 19, 19, 19,
1083     19, 19, 19, 19, 19, 19, 19, 19,
1084     19, 19, 19, 19, 19, 19, 19, 19,
1085     19, 19, 19, 19, 19, 19, 19, 19,
1086     19, 19, 19, 19, 19, 19, 19, 19,
1087     19, 19, 19, 19, 19, 19, 19, 19,
1088     19, 19, 19, 19, 19, 19, 19, 19,
1089     19, 19, 19, 19, 19, 19, 19, 19,
1090     19, 19, 19, 19, 19, 19, 19, 19,
1091     19, 19, 19, 19, 19, 19, 19, 19,
1092     19, 19, 19, 19, 19, 19, 19, 19,
1093     19, 19, 19, 19, 19, 19, 19, 19,
1094     19, 19, 19, 19, 19, 19, 19, 19,
1095     19, 19, 19, 19, 19, 19, 19, 19,
1096     19, 19, 19, 19, 19, 19, 19, 19,
1097     19, 19, 19, 19, 19, 19, 19, 19,
1098     19, 19, 19, 19, 19, 19, 19, 19,
1099     19, 19, 19, 19, 19, 19, 19, 19,
1100     19, 19, 19, 19, 19, 19, 19, 19,
1101     19, 19, 19, 19, 19, 19, 19, 19,
1102     19, 19, 19, 19, 19, 19, 19, 19,
1103     19, 19, 19, 19, 19, 19, 19, 19,
1104     19, 19, 19, 19, 19, 19, 19, 19,
1105 };
1106
1107 static const Q_UINT8 ui_15[] = {
1108     19, 19, 19, 19, 19, 19, 19, 19,
1109     19, 19, 19, 19, 19, 19, 19, 19,
1110     19, 19, 19, 19, 19, 19, 19, 19,
1111     19, 19, 19, 19, 19, 19, 19, 19,
1112     19, 19, 19, 19, 19, 19, 19, 19,
1113     19, 19, 19, 19, 19, 19, 19, 19,
1114     19, 19, 19, 19, 19, 19, 19, 19,
1115     19, 19, 19, 19, 19, 19, 19, 19,
1116     19, 19, 19, 19, 19, 19, 19, 19,
1117     19, 19, 19, 19, 19, 19, 19, 19,
1118     19, 19, 19, 19, 19, 19, 19, 19,
1119     19, 19, 19, 19, 19, 19, 19, 19,
1120     19, 19, 19, 19, 19, 19, 19, 19,
1121     19, 19, 19, 19, 19, 19, 19, 19,
1122     19, 19, 19, 19, 19, 19, 19, 19,
1123     19, 19, 19, 19, 19, 19, 19, 19,
1124     19, 19, 19, 19, 19, 19, 19, 19,
1125     19, 19, 19, 19, 19, 19, 19, 19,
1126     19, 19, 19, 19, 19, 19, 19, 19,
1127     19, 19, 19, 19, 19, 19, 19, 19,
1128     19, 19, 19, 19, 19, 19, 19, 19,
1129     19, 19, 19, 19, 19, 19, 19, 19,
1130     19, 19, 19, 19, 19, 19, 19, 19,
1131     19, 19, 19, 19, 19, 19, 19, 19,
1132     19, 19, 19, 19, 19, 19, 19, 19,
1133     19, 19, 19, 19, 19, 19, 19, 19,
1134     19, 19, 19, 19, 19, 19, 19, 19,
1135     19, 19, 19, 19, 19, 19, 19, 19,
1136     19, 19, 19, 19, 19, 19, 19, 19,
1137     19, 19, 19, 19, 19, 19, 19, 19,
1138     19, 19, 19, 19, 19, 19, 19, 19,
1139     19, 19, 19, 19, 19, 19, 19, 19,
1140 };
1141
1142 static const Q_UINT8 ui_16[] = {
1143     19, 19, 19, 19, 19, 19, 19, 19,
1144     19, 19, 19, 19, 19, 19, 19, 19,
1145     19, 19, 19, 19, 19, 19, 19, 19,
1146     19, 19, 19, 19, 19, 19, 19, 19,
1147     19, 19, 19, 19, 19, 19, 19, 19,
1148     19, 19, 19, 19, 19, 19, 19, 19,
1149     19, 19, 19, 19, 19, 19, 19, 19,
1150     19, 19, 19, 19, 19, 19, 19, 19,
1151     19, 19, 19, 19, 19, 19, 19, 19,
1152     19, 19, 19, 19, 19, 19, 19, 19,
1153     19, 19, 19, 19, 19, 19, 19, 19,
1154     19, 19, 19, 19, 19, 19, 19, 19,
1155     19, 19, 19, 19, 19, 19, 19, 19,
1156     19, 19, 19, 19, 19, 26, 26, 19,
1157     19, 19, 19, 19, 19, 19, 19, 0,
1158     0, 0, 0, 0, 0, 0, 0, 0,
1159     7, 19, 19, 19, 19, 19, 19, 19,
1160     19, 19, 19, 19, 19, 19, 19, 19,
1161     19, 19, 19, 19, 19, 19, 19, 19,
1162     19, 19, 19, 22, 23, 0, 0, 0,
1163     19, 19, 19, 19, 19, 19, 19, 19,
1164     19, 19, 19, 19, 19, 19, 19, 19,
1165     19, 19, 19, 19, 19, 19, 19, 19,
1166     19, 19, 19, 19, 19, 19, 19, 19,
1167     19, 19, 19, 19, 19, 19, 19, 19,
1168     19, 19, 19, 19, 19, 19, 19, 19,
1169     19, 19, 19, 19, 19, 19, 19, 19,
1170     19, 19, 19, 19, 19, 19, 19, 19,
1171     19, 19, 19, 19, 19, 19, 19, 19,
1172     19, 19, 19, 26, 26, 26, 6, 6,
1173     6, 0, 0, 0, 0, 0, 0, 0,
1174     0, 0, 0, 0, 0, 0, 0, 0,
1175 };
1176
1177 static const Q_UINT8 ui_17[] = {
1178     0, 0, 0, 0, 0, 0, 0, 0,
1179     0, 0, 0, 0, 0, 0, 0, 0,
1180     0, 0, 0, 0, 0, 0, 0, 0,
1181     0, 0, 0, 0, 0, 0, 0, 0,
1182     0, 0, 0, 0, 0, 0, 0, 0,
1183     0, 0, 0, 0, 0, 0, 0, 0,
1184     0, 0, 0, 0, 0, 0, 0, 0,
1185     0, 0, 0, 0, 0, 0, 0, 0,
1186     0, 0, 0, 0, 0, 0, 0, 0,
1187     0, 0, 0, 0, 0, 0, 0, 0,
1188     0, 0, 0, 0, 0, 0, 0, 0,
1189     0, 0, 0, 0, 0, 0, 0, 0,
1190     0, 0, 0, 0, 0, 0, 0, 0,
1191     0, 0, 0, 0, 0, 0, 0, 0,
1192     0, 0, 0, 0, 0, 0, 0, 0,
1193     0, 0, 0, 0, 0, 0, 0, 0,
1194     19, 19, 19, 19, 19, 19, 19, 19,
1195     19, 19, 19, 19, 19, 19, 19, 19,
1196     19, 19, 19, 19, 19, 19, 19, 19,
1197     19, 19, 19, 19, 19, 19, 19, 19,
1198     19, 19, 19, 19, 19, 19, 19, 19,
1199     19, 19, 19, 19, 19, 19, 19, 19,
1200     19, 19, 19, 19, 2, 2, 2, 1,
1201     1, 1, 1, 1, 1, 1, 2, 2,
1202     2, 2, 2, 2, 2, 2, 1, 2,
1203     2, 1, 1, 1, 1, 1, 1, 1,
1204     1, 1, 1, 1, 26, 26, 26, 26,
1205     26, 26, 26, 28, 26, 0, 0, 0,
1206     4, 4, 4, 4, 4, 4, 4, 4,
1207     4, 4, 0, 0, 0, 0, 0, 0,
1208     0, 0, 0, 0, 0, 0, 0, 0,
1209     0, 0, 0, 0, 0, 0, 0, 0,
1210 };
1211
1212 static const Q_UINT8 ui_18[] = {
1213     26, 26, 26, 26, 26, 26, 21, 26,
1214     26, 26, 26, 11, 11, 11, 11, 0,
1215     4, 4, 4, 4, 4, 4, 4, 4,
1216     4, 4, 0, 0, 0, 0, 0, 0,
1217     19, 19, 19, 19, 19, 19, 19, 19,
1218     19, 19, 19, 19, 19, 19, 19, 19,
1219     19, 19, 19, 19, 19, 19, 19, 19,
1220     19, 19, 19, 19, 19, 19, 19, 19,
1221     19, 19, 19, 18, 19, 19, 19, 19,
1222     19, 19, 19, 19, 19, 19, 19, 19,
1223     19, 19, 19, 19, 19, 19, 19, 19,
1224     19, 19, 19, 19, 19, 19, 19, 19,
1225     19, 19, 19, 19, 19, 19, 19, 19,
1226     19, 19, 19, 19, 19, 19, 19, 19,
1227     19, 19, 19, 19, 19, 19, 19, 19,
1228     0, 0, 0, 0, 0, 0, 0, 0,
1229     19, 19, 19, 19, 19, 19, 19, 19,
1230     19, 19, 19, 19, 19, 19, 19, 19,
1231     19, 19, 19, 19, 19, 19, 19, 19,
1232     19, 19, 19, 19, 19, 19, 19, 19,
1233     19, 19, 19, 19, 19, 19, 19, 19,
1234     19, 1, 0, 0, 0, 0, 0, 0,
1235     0, 0, 0, 0, 0, 0, 0, 0,
1236     0, 0, 0, 0, 0, 0, 0, 0,
1237     0, 0, 0, 0, 0, 0, 0, 0,
1238     0, 0, 0, 0, 0, 0, 0, 0,
1239     0, 0, 0, 0, 0, 0, 0, 0,
1240     0, 0, 0, 0, 0, 0, 0, 0,
1241     0, 0, 0, 0, 0, 0, 0, 0,
1242     0, 0, 0, 0, 0, 0, 0, 0,
1243     0, 0, 0, 0, 0, 0, 0, 0,
1244     0, 0, 0, 0, 0, 0, 0, 0,
1245 };
1246
1247 static const Q_UINT8 ui_1E[] = {
1248     15, 16, 15, 16, 15, 16, 15, 16,
1249     15, 16, 15, 16, 15, 16, 15, 16,
1250     15, 16, 15, 16, 15, 16, 15, 16,
1251     15, 16, 15, 16, 15, 16, 15, 16,
1252     15, 16, 15, 16, 15, 16, 15, 16,
1253     15, 16, 15, 16, 15, 16, 15, 16,
1254     15, 16, 15, 16, 15, 16, 15, 16,
1255     15, 16, 15, 16, 15, 16, 15, 16,
1256     15, 16, 15, 16, 15, 16, 15, 16,
1257     15, 16, 15, 16, 15, 16, 15, 16,
1258     15, 16, 15, 16, 15, 16, 15, 16,
1259     15, 16, 15, 16, 15, 16, 15, 16,
1260     15, 16, 15, 16, 15, 16, 15, 16,
1261     15, 16, 15, 16, 15, 16, 15, 16,
1262     15, 16, 15, 16, 15, 16, 15, 16,
1263     15, 16, 15, 16, 15, 16, 15, 16,
1264     15, 16, 15, 16, 15, 16, 15, 16,
1265     15, 16, 15, 16, 15, 16, 15, 16,
1266     15, 16, 15, 16, 15, 16, 16, 16,
1267     16, 16, 16, 16, 0, 0, 0, 0,
1268     15, 16, 15, 16, 15, 16, 15, 16,
1269     15, 16, 15, 16, 15, 16, 15, 16,
1270     15, 16, 15, 16, 15, 16, 15, 16,
1271     15, 16, 15, 16, 15, 16, 15, 16,
1272     15, 16, 15, 16, 15, 16, 15, 16,
1273     15, 16, 15, 16, 15, 16, 15, 16,
1274     15, 16, 15, 16, 15, 16, 15, 16,
1275     15, 16, 15, 16, 15, 16, 15, 16,
1276     15, 16, 15, 16, 15, 16, 15, 16,
1277     15, 16, 15, 16, 15, 16, 15, 16,
1278     15, 16, 15, 16, 15, 16, 15, 16,
1279     15, 16, 0, 0, 0, 0, 0, 0,
1280 };
1281
1282 static const Q_UINT8 ui_1F[] = {
1283     16, 16, 16, 16, 16, 16, 16, 16,
1284     15, 15, 15, 15, 15, 15, 15, 15,
1285     16, 16, 16, 16, 16, 16, 0, 0,
1286     15, 15, 15, 15, 15, 15, 0, 0,
1287     16, 16, 16, 16, 16, 16, 16, 16,
1288     15, 15, 15, 15, 15, 15, 15, 15,
1289     16, 16, 16, 16, 16, 16, 16, 16,
1290     15, 15, 15, 15, 15, 15, 15, 15,
1291     16, 16, 16, 16, 16, 16, 0, 0,
1292     15, 15, 15, 15, 15, 15, 0, 0,
1293     16, 16, 16, 16, 16, 16, 16, 16,
1294     0, 15, 0, 15, 0, 15, 0, 15,
1295     16, 16, 16, 16, 16, 16, 16, 16,
1296     15, 15, 15, 15, 15, 15, 15, 15,
1297     16, 16, 16, 16, 16, 16, 16, 16,
1298     16, 16, 16, 16, 16, 16, 0, 0,
1299     16, 16, 16, 16, 16, 16, 16, 16,
1300     17, 17, 17, 17, 17, 17, 17, 17,
1301     16, 16, 16, 16, 16, 16, 16, 16,
1302     17, 17, 17, 17, 17, 17, 17, 17,
1303     16, 16, 16, 16, 16, 16, 16, 16,
1304     17, 17, 17, 17, 17, 17, 17, 17,
1305     16, 16, 16, 16, 16, 0, 16, 16,
1306     15, 15, 15, 15, 17, 29, 16, 29,
1307     29, 29, 16, 16, 16, 0, 16, 16,
1308     15, 15, 15, 15, 17, 29, 29, 29,
1309     16, 16, 16, 16, 0, 0, 16, 16,
1310     15, 15, 15, 15, 0, 29, 29, 29,
1311     16, 16, 16, 16, 16, 16, 16, 16,
1312     15, 15, 15, 15, 15, 29, 29, 29,
1313     0, 0, 16, 16, 16, 0, 16, 16,
1314     15, 15, 15, 15, 17, 29, 29, 0,
1315 };
1316
1317 static const Q_UINT8 ui_20[] = {
1318     7, 7, 7, 7, 7, 7, 7, 7,
1319     7, 7, 7, 7, 11, 11, 11, 11,
1320     21, 21, 21, 21, 21, 21, 26, 26,
1321     24, 25, 22, 24, 24, 25, 22, 24,
1322     26, 26, 26, 26, 26, 26, 26, 26,
1323     8, 9, 11, 11, 11, 11, 11, 7,
1324     26, 26, 26, 26, 26, 26, 26, 26,
1325     26, 24, 25, 26, 26, 26, 26, 20,
1326     20, 26, 26, 26, 27, 22, 23, 0,
1327     26, 26, 26, 26, 26, 26, 0, 0,
1328     0, 0, 0, 0, 0, 0, 0, 0,
1329     0, 0, 0, 0, 0, 0, 0, 0,
1330     0, 0, 0, 0, 0, 0, 0, 0,
1331     0, 0, 11, 11, 11, 11, 11, 11,
1332     6, 0, 0, 0, 6, 6, 6, 6,
1333     6, 6, 27, 27, 27, 22, 23, 16,
1334     6, 6, 6, 6, 6, 6, 6, 6,
1335     6, 6, 27, 27, 27, 22, 23, 0,
1336     0, 0, 0, 0, 0, 0, 0, 0,
1337     0, 0, 0, 0, 0, 0, 0, 0,
1338     28, 28, 28, 28, 28, 28, 28, 28,
1339     28, 28, 28, 28, 28, 28, 28, 28,
1340     0, 0, 0, 0, 0, 0, 0, 0,
1341     0, 0, 0, 0, 0, 0, 0, 0,
1342     0, 0, 0, 0, 0, 0, 0, 0,
1343     0, 0, 0, 0, 0, 0, 0, 0,
1344     1, 1, 1, 1, 1, 1, 1, 1,
1345     1, 1, 1, 1, 1, 3, 3, 3,
1346     3, 1, 3, 3, 0, 0, 0, 0,
1347     0, 0, 0, 0, 0, 0, 0, 0,
1348     0, 0, 0, 0, 0, 0, 0, 0,
1349     0, 0, 0, 0, 0, 0, 0, 0,
1350 };
1351
1352 static const Q_UINT8 ui_21[] = {
1353     30, 30, 15, 30, 30, 30, 30, 15,
1354     30, 30, 16, 15, 15, 15, 16, 16,
1355     15, 15, 15, 16, 30, 15, 30, 30,
1356     30, 15, 15, 15, 15, 15, 30, 30,
1357     30, 30, 30, 30, 15, 30, 15, 30,
1358     15, 30, 15, 15, 15, 15, 30, 16,
1359     15, 15, 30, 15, 16, 19, 19, 19,
1360     19, 16, 30, 0, 0, 0, 0, 0,
1361     0, 0, 0, 0, 0, 0, 0, 0,
1362     0, 0, 0, 0, 0, 0, 0, 0,
1363     0, 0, 0, 6, 6, 6, 6, 6,
1364     6, 6, 6, 6, 6, 6, 6, 6,
1365     5, 5, 5, 5, 5, 5, 5, 5,
1366     5, 5, 5, 5, 5, 5, 5, 5,
1367     5, 5, 5, 5, 5, 5, 5, 5,
1368     5, 5, 5, 5, 5, 5, 5, 5,
1369     5, 5, 5, 5, 0, 0, 0, 0,
1370     0, 0, 0, 0, 0, 0, 0, 0,
1371     27, 27, 27, 27, 27, 30, 30, 30,
1372     30, 30, 27, 27, 30, 30, 30, 30,
1373     27, 30, 30, 27, 30, 30, 27, 30,
1374     30, 30, 30, 30, 30, 30, 27, 30,
1375     30, 30, 30, 30, 30, 30, 30, 30,
1376     30, 30, 30, 30, 30, 30, 30, 30,
1377     30, 30, 30, 30, 30, 30, 30, 30,
1378     30, 30, 30, 30, 30, 30, 27, 27,
1379     30, 30, 27, 30, 27, 30, 30, 30,
1380     30, 30, 30, 30, 30, 30, 30, 30,
1381     30, 30, 30, 30, 30, 30, 30, 30,
1382     30, 30, 30, 30, 30, 30, 30, 30,
1383     30, 30, 30, 30, 0, 0, 0, 0,
1384     0, 0, 0, 0, 0, 0, 0, 0,
1385 };
1386
1387 static const Q_UINT8 ui_22[] = {
1388     27, 27, 27, 27, 27, 27, 27, 27,
1389     27, 27, 27, 27, 27, 27, 27, 27,
1390     27, 27, 27, 27, 27, 27, 27, 27,
1391     27, 27, 27, 27, 27, 27, 27, 27,
1392     27, 27, 27, 27, 27, 27, 27, 27,
1393     27, 27, 27, 27, 27, 27, 27, 27,
1394     27, 27, 27, 27, 27, 27, 27, 27,
1395     27, 27, 27, 27, 27, 27, 27, 27,
1396     27, 27, 27, 27, 27, 27, 27, 27,
1397     27, 27, 27, 27, 27, 27, 27, 27,
1398     27, 27, 27, 27, 27, 27, 27, 27,
1399     27, 27, 27, 27, 27, 27, 27, 27,
1400     27, 27, 27, 27, 27, 27, 27, 27,
1401     27, 27, 27, 27, 27, 27, 27, 27,
1402     27, 27, 27, 27, 27, 27, 27, 27,
1403     27, 27, 27, 27, 27, 27, 27, 27,
1404     27, 27, 27, 27, 27, 27, 27, 27,
1405     27, 27, 27, 27, 27, 27, 27, 27,
1406     27, 27, 27, 27, 27, 27, 27, 27,
1407     27, 27, 27, 27, 27, 27, 27, 27,
1408     27, 27, 27, 27, 27, 27, 27, 27,
1409     27, 27, 27, 27, 27, 27, 27, 27,
1410     27, 27, 27, 27, 27, 27, 27, 27,
1411     27, 27, 27, 27, 27, 27, 27, 27,
1412     27, 27, 27, 27, 27, 27, 27, 27,
1413     27, 27, 27, 27, 27, 27, 27, 27,
1414     27, 27, 27, 27, 27, 27, 27, 27,
1415     27, 27, 27, 27, 27, 27, 27, 27,
1416     27, 27, 27, 27, 27, 27, 27, 27,
1417     27, 27, 27, 27, 27, 27, 27, 27,
1418     27, 27, 0, 0, 0, 0, 0, 0,
1419     0, 0, 0, 0, 0, 0, 0, 0,
1420 };
1421
1422 static const Q_UINT8 ui_23[] = {
1423     30, 30, 30, 30, 30, 30, 30, 30,
1424     27, 27, 27, 27, 30, 30, 30, 30,
1425     30, 30, 30, 30, 30, 30, 30, 30,
1426     30, 30, 30, 30, 30, 30, 30, 30,
1427     27, 27, 30, 30, 30, 30, 30, 30,
1428     30, 22, 23, 30, 30, 30, 30, 30,
1429     30, 30, 30, 30, 30, 30, 30, 30,
1430     30, 30, 30, 30, 30, 30, 30, 30,
1431     30, 30, 30, 30, 30, 30, 30, 30,
1432     30, 30, 30, 30, 30, 30, 30, 30,
1433     30, 30, 30, 30, 30, 30, 30, 30,
1434     30, 30, 30, 30, 30, 30, 30, 30,
1435     30, 30, 30, 30, 30, 30, 30, 30,
1436     30, 30, 30, 30, 30, 30, 30, 30,
1437     30, 30, 30, 30, 30, 30, 30, 30,
1438     30, 30, 30, 30, 0, 30, 30, 30,
1439     30, 30, 30, 30, 30, 30, 30, 30,
1440     30, 30, 30, 30, 30, 30, 30, 30,
1441     30, 30, 30, 30, 30, 30, 30, 30,
1442     30, 30, 30, 0, 0, 0, 0, 0,
1443     0, 0, 0, 0, 0, 0, 0, 0,
1444     0, 0, 0, 0, 0, 0, 0, 0,
1445     0, 0, 0, 0, 0, 0, 0, 0,
1446     0, 0, 0, 0, 0, 0, 0, 0,
1447     0, 0, 0, 0, 0, 0, 0, 0,
1448     0, 0, 0, 0, 0, 0, 0, 0,
1449     0, 0, 0, 0, 0, 0, 0, 0,
1450     0, 0, 0, 0, 0, 0, 0, 0,
1451     0, 0, 0, 0, 0, 0, 0, 0,
1452     0, 0, 0, 0, 0, 0, 0, 0,
1453     0, 0, 0, 0, 0, 0, 0, 0,
1454     0, 0, 0, 0, 0, 0, 0, 0,
1455 };
1456
1457 static const Q_UINT8 ui_24[] = {
1458     30, 30, 30, 30, 30, 30, 30, 30,
1459     30, 30, 30, 30, 30, 30, 30, 30,
1460     30, 30, 30, 30, 30, 30, 30, 30,
1461     30, 30, 30, 30, 30, 30, 30, 30,
1462     30, 30, 30, 30, 30, 30, 30, 0,
1463     0, 0, 0, 0, 0, 0, 0, 0,
1464     0, 0, 0, 0, 0, 0, 0, 0,
1465     0, 0, 0, 0, 0, 0, 0, 0,
1466     30, 30, 30, 30, 30, 30, 30, 30,
1467     30, 30, 30, 0, 0, 0, 0, 0,
1468     0, 0, 0, 0, 0, 0, 0, 0,
1469     0, 0, 0, 0, 0, 0, 0, 0,
1470     6, 6, 6, 6, 6, 6, 6, 6,
1471     6, 6, 6, 6, 6, 6, 6, 6,
1472     6, 6, 6, 6, 6, 6, 6, 6,
1473     6, 6, 6, 6, 6, 6, 6, 6,
1474     6, 6, 6, 6, 6, 6, 6, 6,
1475     6, 6, 6, 6, 6, 6, 6, 6,
1476     6, 6, 6, 6, 6, 6, 6, 6,
1477     6, 6, 6, 6, 30, 30, 30, 30,
1478     30, 30, 30, 30, 30, 30, 30, 30,
1479     30, 30, 30, 30, 30, 30, 30, 30,
1480     30, 30, 30, 30, 30, 30, 30, 30,
1481     30, 30, 30, 30, 30, 30, 30, 30,
1482     30, 30, 30, 30, 30, 30, 30, 30,
1483     30, 30, 30, 30, 30, 30, 30, 30,
1484     30, 30, 30, 30, 30, 30, 30, 30,
1485     30, 30, 30, 30, 30, 30, 30, 30,
1486     30, 30, 30, 30, 30, 30, 30, 30,
1487     30, 30, 6, 0, 0, 0, 0, 0,
1488     0, 0, 0, 0, 0, 0, 0, 0,
1489     0, 0, 0, 0, 0, 0, 0, 0,
1490 };
1491
1492 static const Q_UINT8 ui_25[] = {
1493     30, 30, 30, 30, 30, 30, 30, 30,
1494     30, 30, 30, 30, 30, 30, 30, 30,
1495     30, 30, 30, 30, 30, 30, 30, 30,
1496     30, 30, 30, 30, 30, 30, 30, 30,
1497     30, 30, 30, 30, 30, 30, 30, 30,
1498     30, 30, 30, 30, 30, 30, 30, 30,
1499     30, 30, 30, 30, 30, 30, 30, 30,
1500     30, 30, 30, 30, 30, 30, 30, 30,
1501     30, 30, 30, 30, 30, 30, 30, 30,
1502     30, 30, 30, 30, 30, 30, 30, 30,
1503     30, 30, 30, 30, 30, 30, 30, 30,
1504     30, 30, 30, 30, 30, 30, 30, 30,
1505     30, 30, 30, 30, 30, 30, 30, 30,
1506     30, 30, 30, 30, 30, 30, 30, 30,
1507     30, 30, 30, 30, 30, 30, 30, 30,
1508     30, 30, 30, 30, 30, 30, 30, 30,
1509     30, 30, 30, 30, 30, 30, 30, 30,
1510     30, 30, 30, 30, 30, 30, 30, 30,
1511     30, 30, 30, 30, 30, 30, 0, 0,
1512     0, 0, 0, 0, 0, 0, 0, 0,
1513     30, 30, 30, 30, 30, 30, 30, 30,
1514     30, 30, 30, 30, 30, 30, 30, 30,
1515     30, 30, 30, 30, 30, 30, 30, 27,
1516     30, 30, 30, 30, 30, 30, 30, 30,
1517     30, 27, 30, 30, 30, 30, 30, 30,
1518     30, 30, 30, 30, 30, 30, 30, 30,
1519     30, 30, 30, 30, 30, 30, 30, 30,
1520     30, 30, 30, 30, 30, 30, 30, 30,
1521     30, 30, 30, 30, 30, 30, 30, 30,
1522     30, 30, 30, 30, 30, 30, 30, 30,
1523     30, 30, 30, 30, 30, 30, 30, 30,
1524     0, 0, 0, 0, 0, 0, 0, 0,
1525 };
1526
1527 static const Q_UINT8 ui_26[] = {
1528     30, 30, 30, 30, 30, 30, 30, 30,
1529     30, 30, 30, 30, 30, 30, 30, 30,
1530     30, 30, 30, 30, 0, 0, 0, 0,
1531     0, 30, 30, 30, 30, 30, 30, 30,
1532     30, 30, 30, 30, 30, 30, 30, 30,
1533     30, 30, 30, 30, 30, 30, 30, 30,
1534     30, 30, 30, 30, 30, 30, 30, 30,
1535     30, 30, 30, 30, 30, 30, 30, 30,
1536     30, 30, 30, 30, 30, 30, 30, 30,
1537     30, 30, 30, 30, 30, 30, 30, 30,
1538     30, 30, 30, 30, 30, 30, 30, 30,
1539     30, 30, 30, 30, 30, 30, 30, 30,
1540     30, 30, 30, 30, 30, 30, 30, 30,
1541     30, 30, 30, 30, 30, 30, 30, 27,
1542     30, 30, 0, 0, 0, 0, 0, 0,
1543     0, 0, 0, 0, 0, 0, 0, 0,
1544     0, 0, 0, 0, 0, 0, 0, 0,
1545     0, 0, 0, 0, 0, 0, 0, 0,
1546     0, 0, 0, 0, 0, 0, 0, 0,
1547     0, 0, 0, 0, 0, 0, 0, 0,
1548     0, 0, 0, 0, 0, 0, 0, 0,
1549     0, 0, 0, 0, 0, 0, 0, 0,
1550     0, 0, 0, 0, 0, 0, 0, 0,
1551     0, 0, 0, 0, 0, 0, 0, 0,
1552     0, 0, 0, 0, 0, 0, 0, 0,
1553     0, 0, 0, 0, 0, 0, 0, 0,
1554     0, 0, 0, 0, 0, 0, 0, 0,
1555     0, 0, 0, 0, 0, 0, 0, 0,
1556     0, 0, 0, 0, 0, 0, 0, 0,
1557     0, 0, 0, 0, 0, 0, 0, 0,
1558     0, 0, 0, 0, 0, 0, 0, 0,
1559     0, 0, 0, 0, 0, 0, 0, 0,
1560 };
1561
1562 static const Q_UINT8 ui_27[] = {
1563     0, 30, 30, 30, 30, 0, 30, 30,
1564     30, 30, 0, 0, 30, 30, 30, 30,
1565     30, 30, 30, 30, 30, 30, 30, 30,
1566     30, 30, 30, 30, 30, 30, 30, 30,
1567     30, 30, 30, 30, 30, 30, 30, 30,
1568     0, 30, 30, 30, 30, 30, 30, 30,
1569     30, 30, 30, 30, 30, 30, 30, 30,
1570     30, 30, 30, 30, 30, 30, 30, 30,
1571     30, 30, 30, 30, 30, 30, 30, 30,
1572     30, 30, 30, 30, 0, 30, 0, 30,
1573     30, 30, 30, 0, 0, 0, 30, 0,
1574     30, 30, 30, 30, 30, 30, 30, 0,
1575     0, 30, 30, 30, 30, 30, 30, 30,
1576     0, 0, 0, 0, 0, 0, 0, 0,
1577     0, 0, 0, 0, 0, 0, 6, 6,
1578     6, 6, 6, 6, 6, 6, 6, 6,
1579     6, 6, 6, 6, 6, 6, 6, 6,
1580     6, 6, 6, 6, 6, 6, 6, 6,
1581     6, 6, 6, 6, 30, 0, 0, 0,
1582     30, 30, 30, 30, 30, 30, 30, 30,
1583     30, 30, 30, 30, 30, 30, 30, 30,
1584     30, 30, 30, 30, 30, 30, 30, 30,
1585     0, 30, 30, 30, 30, 30, 30, 30,
1586     30, 30, 30, 30, 30, 30, 30, 0,
1587     0, 0, 0, 0, 0, 0, 0, 0,
1588     0, 0, 0, 0, 0, 0, 0, 0,
1589     0, 0, 0, 0, 0, 0, 0, 0,
1590     0, 0, 0, 0, 0, 0, 0, 0,
1591     0, 0, 0, 0, 0, 0, 0, 0,
1592     0, 0, 0, 0, 0, 0, 0, 0,
1593     0, 0, 0, 0, 0, 0, 0, 0,
1594     0, 0, 0, 0, 0, 0, 0, 0,
1595 };
1596
1597 static const Q_UINT8 ui_28[] = {
1598     30, 30, 30, 30, 30, 30, 30, 30,
1599     30, 30, 30, 30, 30, 30, 30, 30,
1600     30, 30, 30, 30, 30, 30, 30, 30,
1601     30, 30, 30, 30, 30, 30, 30, 30,
1602     30, 30, 30, 30, 30, 30, 30, 30,
1603     30, 30, 30, 30, 30, 30, 30, 30,
1604     30, 30, 30, 30, 30, 30, 30, 30,
1605     30, 30, 30, 30, 30, 30, 30, 30,
1606     30, 30, 30, 30, 30, 30, 30, 30,
1607     30, 30, 30, 30, 30, 30, 30, 30,
1608     30, 30, 30, 30, 30, 30, 30, 30,
1609     30, 30, 30, 30, 30, 30, 30, 30,
1610     30, 30, 30, 30, 30, 30, 30, 30,
1611     30, 30, 30, 30, 30, 30, 30, 30,
1612     30, 30, 30, 30, 30, 30, 30, 30,
1613     30, 30, 30, 30, 30, 30, 30, 30,
1614     30, 30, 30, 30, 30, 30, 30, 30,
1615     30, 30, 30, 30, 30, 30, 30, 30,
1616     30, 30, 30, 30, 30, 30, 30, 30,
1617     30, 30, 30, 30, 30, 30, 30, 30,
1618     30, 30, 30, 30, 30, 30, 30, 30,
1619     30, 30, 30, 30, 30, 30, 30, 30,
1620     30, 30, 30, 30, 30, 30, 30, 30,
1621     30, 30, 30, 30, 30, 30, 30, 30,
1622     30, 30, 30, 30, 30, 30, 30, 30,
1623     30, 30, 30, 30, 30, 30, 30, 30,
1624     30, 30, 30, 30, 30, 30, 30, 30,
1625     30, 30, 30, 30, 30, 30, 30, 30,
1626     30, 30, 30, 30, 30, 30, 30, 30,
1627     30, 30, 30, 30, 30, 30, 30, 30,
1628     30, 30, 30, 30, 30, 30, 30, 30,
1629     30, 30, 30, 30, 30, 30, 30, 30,
1630 };
1631
1632 static const Q_UINT8 ui_2E[] = {
1633     0, 0, 0, 0, 0, 0, 0, 0,
1634     0, 0, 0, 0, 0, 0, 0, 0,
1635     0, 0, 0, 0, 0, 0, 0, 0,
1636     0, 0, 0, 0, 0, 0, 0, 0,
1637     0, 0, 0, 0, 0, 0, 0, 0,
1638     0, 0, 0, 0, 0, 0, 0, 0,
1639     0, 0, 0, 0, 0, 0, 0, 0,
1640     0, 0, 0, 0, 0, 0, 0, 0,
1641     0, 0, 0, 0, 0, 0, 0, 0,
1642     0, 0, 0, 0, 0, 0, 0, 0,
1643     0, 0, 0, 0, 0, 0, 0, 0,
1644     0, 0, 0, 0, 0, 0, 0, 0,
1645     0, 0, 0, 0, 0, 0, 0, 0,
1646     0, 0, 0, 0, 0, 0, 0, 0,
1647     0, 0, 0, 0, 0, 0, 0, 0,
1648     0, 0, 0, 0, 0, 0, 0, 0,
1649     30, 30, 30, 30, 30, 30, 30, 30,
1650     30, 30, 30, 30, 30, 30, 30, 30,
1651     30, 30, 30, 30, 30, 30, 30, 30,
1652     30, 30, 0, 30, 30, 30, 30, 30,
1653     30, 30, 30, 30, 30, 30, 30, 30,
1654     30, 30, 30, 30, 30, 30, 30, 30,
1655     30, 30, 30, 30, 30, 30, 30, 30,
1656     30, 30, 30, 30, 30, 30, 30, 30,
1657     30, 30, 30, 30, 30, 30, 30, 30,
1658     30, 30, 30, 30, 30, 30, 30, 30,
1659     30, 30, 30, 30, 30, 30, 30, 30,
1660     30, 30, 30, 30, 30, 30, 30, 30,
1661     30, 30, 30, 30, 30, 30, 30, 30,
1662     30, 30, 30, 30, 30, 30, 30, 30,
1663     30, 30, 30, 30, 0, 0, 0, 0,
1664     0, 0, 0, 0, 0, 0, 0, 0,
1665 };
1666
1667 static const Q_UINT8 ui_2F[] = {
1668     30, 30, 30, 30, 30, 30, 30, 30,
1669     30, 30, 30, 30, 30, 30, 30, 30,
1670     30, 30, 30, 30, 30, 30, 30, 30,
1671     30, 30, 30, 30, 30, 30, 30, 30,
1672     30, 30, 30, 30, 30, 30, 30, 30,
1673     30, 30, 30, 30, 30, 30, 30, 30,
1674     30, 30, 30, 30, 30, 30, 30, 30,
1675     30, 30, 30, 30, 30, 30, 30, 30,
1676     30, 30, 30, 30, 30, 30, 30, 30,
1677     30, 30, 30, 30, 30, 30, 30, 30,
1678     30, 30, 30, 30, 30, 30, 30, 30,
1679     30, 30, 30, 30, 30, 30, 30, 30,
1680     30, 30, 30, 30, 30, 30, 30, 30,
1681     30, 30, 30, 30, 30, 30, 30, 30,
1682     30, 30, 30, 30, 30, 30, 30, 30,
1683     30, 30, 30, 30, 30, 30, 30, 30,
1684     30, 30, 30, 30, 30, 30, 30, 30,
1685     30, 30, 30, 30, 30, 30, 30, 30,
1686     30, 30, 30, 30, 30, 30, 30, 30,
1687     30, 30, 30, 30, 30, 30, 30, 30,
1688     30, 30, 30, 30, 30, 30, 30, 30,
1689     30, 30, 30, 30, 30, 30, 30, 30,
1690     30, 30, 30, 30, 30, 30, 30, 30,
1691     30, 30, 30, 30, 30, 30, 30, 30,
1692     30, 30, 30, 30, 30, 30, 30, 30,
1693     30, 30, 30, 30, 30, 30, 30, 30,
1694     30, 30, 30, 30, 30, 30, 0, 0,
1695     0, 0, 0, 0, 0, 0, 0, 0,
1696     0, 0, 0, 0, 0, 0, 0, 0,
1697     0, 0, 0, 0, 0, 0, 0, 0,
1698     30, 30, 30, 30, 30, 30, 30, 30,
1699     30, 30, 30, 30, 0, 0, 0, 0,
1700 };
1701
1702 static const Q_UINT8 ui_30[] = {
1703     7, 26, 26, 26, 30, 18, 19, 5,
1704     22, 23, 22, 23, 22, 23, 22, 23,
1705     22, 23, 30, 30, 22, 23, 22, 23,
1706     22, 23, 22, 23, 21, 22, 23, 23,
1707     30, 5, 5, 5, 5, 5, 5, 5,
1708     5, 5, 1, 1, 1, 1, 1, 1,
1709     21, 18, 18, 18, 18, 18, 30, 30,
1710     5, 5, 5, 0, 0, 0, 30, 30,
1711     0, 19, 19, 19, 19, 19, 19, 19,
1712     19, 19, 19, 19, 19, 19, 19, 19,
1713     19, 19, 19, 19, 19, 19, 19, 19,
1714     19, 19, 19, 19, 19, 19, 19, 19,
1715     19, 19, 19, 19, 19, 19, 19, 19,
1716     19, 19, 19, 19, 19, 19, 19, 19,
1717     19, 19, 19, 19, 19, 19, 19, 19,
1718     19, 19, 19, 19, 19, 19, 19, 19,
1719     19, 19, 19, 19, 19, 19, 19, 19,
1720     19, 19, 19, 19, 19, 19, 19, 19,
1721     19, 19, 19, 19, 19, 0, 0, 0,
1722     0, 1, 1, 29, 29, 18, 18, 0,
1723     0, 19, 19, 19, 19, 19, 19, 19,
1724     19, 19, 19, 19, 19, 19, 19, 19,
1725     19, 19, 19, 19, 19, 19, 19, 19,
1726     19, 19, 19, 19, 19, 19, 19, 19,
1727     19, 19, 19, 19, 19, 19, 19, 19,
1728     19, 19, 19, 19, 19, 19, 19, 19,
1729     19, 19, 19, 19, 19, 19, 19, 19,
1730     19, 19, 19, 19, 19, 19, 19, 19,
1731     19, 19, 19, 19, 19, 19, 19, 19,
1732     19, 19, 19, 19, 19, 19, 19, 19,
1733     19, 19, 19, 19, 19, 19, 19, 19,
1734     19, 19, 19, 20, 18, 18, 18, 0,
1735 };
1736
1737 static const Q_UINT8 ui_31[] = {
1738     0, 0, 0, 0, 0, 19, 19, 19,
1739     19, 19, 19, 19, 19, 19, 19, 19,
1740     19, 19, 19, 19, 19, 19, 19, 19,
1741     19, 19, 19, 19, 19, 19, 19, 19,
1742     19, 19, 19, 19, 19, 19, 19, 19,
1743     19, 19, 19, 19, 19, 0, 0, 0,
1744     0, 19, 19, 19, 19, 19, 19, 19,
1745     19, 19, 19, 19, 19, 19, 19, 19,
1746     19, 19, 19, 19, 19, 19, 19, 19,
1747     19, 19, 19, 19, 19, 19, 19, 19,
1748     19, 19, 19, 19, 19, 19, 19, 19,
1749     19, 19, 19, 19, 19, 19, 19, 19,
1750     19, 19, 19, 19, 19, 19, 19, 19,
1751     19, 19, 19, 19, 19, 19, 19, 19,
1752     19, 19, 19, 19, 19, 19, 19, 19,
1753     19, 19, 19, 19, 19, 19, 19, 19,
1754     19, 19, 19, 19, 19, 19, 19, 19,
1755     19, 19, 19, 19, 19, 19, 19, 0,
1756     30, 30, 6, 6, 6, 6, 30, 30,
1757     30, 30, 30, 30, 30, 30, 30, 30,
1758     19, 19, 19, 19, 19, 19, 19, 19,
1759     19, 19, 19, 19, 19, 19, 19, 19,
1760     19, 19, 19, 19, 19, 19, 19, 19,
1761     0, 0, 0, 0, 0, 0, 0, 0,
1762     0, 0, 0, 0, 0, 0, 0, 0,
1763     0, 0, 0, 0, 0, 0, 0, 0,
1764     0, 0, 0, 0, 0, 0, 0, 0,
1765     0, 0, 0, 0, 0, 0, 0, 0,
1766     0, 0, 0, 0, 0, 0, 0, 0,
1767     0, 0, 0, 0, 0, 0, 0, 0,
1768     0, 0, 0, 0, 0, 0, 0, 0,
1769     0, 0, 0, 0, 0, 0, 0, 0,
1770 };
1771
1772 static const Q_UINT8 ui_32[] = {
1773     30, 30, 30, 30, 30, 30, 30, 30,
1774     30, 30, 30, 30, 30, 30, 30, 30,
1775     30, 30, 30, 30, 30, 30, 30, 30,
1776     30, 30, 30, 30, 30, 0, 0, 0,
1777     6, 6, 6, 6, 6, 6, 6, 6,
1778     6, 6, 30, 30, 30, 30, 30, 30,
1779     30, 30, 30, 30, 30, 30, 30, 30,
1780     30, 30, 30, 30, 30, 30, 30, 30,
1781     30, 30, 30, 30, 0, 0, 0, 0,
1782     0, 0, 0, 0, 0, 0, 0, 0,
1783     0, 0, 0, 0, 0, 0, 0, 0,
1784     0, 0, 0, 0, 0, 0, 0, 0,
1785     30, 30, 30, 30, 30, 30, 30, 30,
1786     30, 30, 30, 30, 30, 30, 30, 30,
1787     30, 30, 30, 30, 30, 30, 30, 30,
1788     30, 30, 30, 30, 0, 0, 0, 30,
1789     6, 6, 6, 6, 6, 6, 6, 6,
1790     6, 6, 30, 30, 30, 30, 30, 30,
1791     30, 30, 30, 30, 30, 30, 30, 30,
1792     30, 30, 30, 30, 30, 30, 30, 30,
1793     30, 30, 30, 30, 30, 30, 30, 30,
1794     30, 30, 30, 30, 30, 30, 30, 30,
1795     30, 0, 0, 0, 0, 0, 0, 0,
1796     0, 0, 0, 0, 0, 0, 0, 0,
1797     30, 30, 30, 30, 30, 30, 30, 30,
1798     30, 30, 30, 30, 0, 0, 0, 0,
1799     30, 30, 30, 30, 30, 30, 30, 30,
1800     30, 30, 30, 30, 30, 30, 30, 30,
1801     30, 30, 30, 30, 30, 30, 30, 30,
1802     30, 30, 30, 30, 30, 30, 30, 30,
1803     30, 30, 30, 30, 30, 30, 30, 30,
1804     30, 30, 30, 30, 30, 30, 30, 0,
1805 };
1806
1807 static const Q_UINT8 ui_33[] = {
1808     30, 30, 30, 30, 30, 30, 30, 30,
1809     30, 30, 30, 30, 30, 30, 30, 30,
1810     30, 30, 30, 30, 30, 30, 30, 30,
1811     30, 30, 30, 30, 30, 30, 30, 30,
1812     30, 30, 30, 30, 30, 30, 30, 30,
1813     30, 30, 30, 30, 30, 30, 30, 30,
1814     30, 30, 30, 30, 30, 30, 30, 30,
1815     30, 30, 30, 30, 30, 30, 30, 30,
1816     30, 30, 30, 30, 30, 30, 30, 30,
1817     30, 30, 30, 30, 30, 30, 30, 30,
1818     30, 30, 30, 30, 30, 30, 30, 30,
1819     30, 30, 30, 30, 30, 30, 30, 30,
1820     30, 30, 30, 30, 30, 30, 30, 30,
1821     30, 30, 30, 30, 30, 30, 30, 30,
1822     30, 30, 30, 30, 30, 30, 30, 0,
1823     0, 0, 0, 30, 30, 30, 30, 30,
1824     30, 30, 30, 30, 30, 30, 30, 30,
1825     30, 30, 30, 30, 30, 30, 30, 30,
1826     30, 30, 30, 30, 30, 30, 30, 30,
1827     30, 30, 30, 30, 30, 30, 30, 30,
1828     30, 30, 30, 30, 30, 30, 30, 30,
1829     30, 30, 30, 30, 30, 30, 30, 30,
1830     30, 30, 30, 30, 30, 30, 30, 30,
1831     30, 30, 30, 30, 30, 30, 30, 30,
1832     30, 30, 30, 30, 30, 30, 30, 30,
1833     30, 30, 30, 30, 30, 30, 30, 30,
1834     30, 30, 30, 30, 30, 30, 30, 30,
1835     30, 30, 30, 30, 30, 30, 0, 0,
1836     30, 30, 30, 30, 30, 30, 30, 30,
1837     30, 30, 30, 30, 30, 30, 30, 30,
1838     30, 30, 30, 30, 30, 30, 30, 30,
1839     30, 30, 30, 30, 30, 30, 30, 0,
1840 };
1841
1842 static const Q_UINT8 ui_34[] = {
1843     19, 0, 0, 0, 0, 0, 0, 0,
1844     0, 0, 0, 0, 0, 0, 0, 0,
1845     0, 0, 0, 0, 0, 0, 0, 0,
1846     0, 0, 0, 0, 0, 0, 0, 0,
1847     0, 0, 0, 0, 0, 0, 0, 0,
1848     0, 0, 0, 0, 0, 0, 0, 0,
1849     0, 0, 0, 0, 0, 0, 0, 0,
1850     0, 0, 0, 0, 0, 0, 0, 0,
1851     0, 0, 0, 0, 0, 0, 0, 0,
1852     0, 0, 0, 0, 0, 0, 0, 0,
1853     0, 0, 0, 0, 0, 0, 0, 0,
1854     0, 0, 0, 0, 0, 0, 0, 0,
1855     0, 0, 0, 0, 0, 0, 0, 0,
1856     0, 0, 0, 0, 0, 0, 0, 0,
1857     0, 0, 0, 0, 0, 0, 0, 0,
1858     0, 0, 0, 0, 0, 0, 0, 0,
1859     0, 0, 0, 0, 0, 0, 0, 0,
1860     0, 0, 0, 0, 0, 0, 0, 0,
1861     0, 0, 0, 0, 0, 0, 0, 0,
1862     0, 0, 0, 0, 0, 0, 0, 0,
1863     0, 0, 0, 0, 0, 0, 0, 0,
1864     0, 0, 0, 0, 0, 0, 0, 0,
1865     0, 0, 0, 0, 0, 0, 0, 0,
1866     0, 0, 0, 0, 0, 0, 0, 0,
1867     0, 0, 0, 0, 0, 0, 0, 0,
1868     0, 0, 0, 0, 0, 0, 0, 0,
1869     0, 0, 0, 0, 0, 0, 0, 0,
1870     0, 0, 0, 0, 0, 0, 0, 0,
1871     0, 0, 0, 0, 0, 0, 0, 0,
1872     0, 0, 0, 0, 0, 0, 0, 0,
1873     0, 0, 0, 0, 0, 0, 0, 0,
1874     0, 0, 0, 0, 0, 0, 0, 0,
1875 };
1876
1877 static const Q_UINT8 ui_4D[] = {
1878     0, 0, 0, 0, 0, 0, 0, 0,
1879     0, 0, 0, 0, 0, 0, 0, 0,
1880     0, 0, 0, 0, 0, 0, 0, 0,
1881     0, 0, 0, 0, 0, 0, 0, 0,
1882     0, 0, 0, 0, 0, 0, 0, 0,
1883     0, 0, 0, 0, 0, 0, 0, 0,
1884     0, 0, 0, 0, 0, 0, 0, 0,
1885     0, 0, 0, 0, 0, 0, 0, 0,
1886     0, 0, 0, 0, 0, 0, 0, 0,
1887     0, 0, 0, 0, 0, 0, 0, 0,
1888     0, 0, 0, 0, 0, 0, 0, 0,
1889     0, 0, 0, 0, 0, 0, 0, 0,
1890     0, 0, 0, 0, 0, 0, 0, 0,
1891     0, 0, 0, 0, 0, 0, 0, 0,
1892     0, 0, 0, 0, 0, 0, 0, 0,
1893     0, 0, 0, 0, 0, 0, 0, 0,
1894     0, 0, 0, 0, 0, 0, 0, 0,
1895     0, 0, 0, 0, 0, 0, 0, 0,
1896     0, 0, 0, 0, 0, 0, 0, 0,
1897     0, 0, 0, 0, 0, 0, 0, 0,
1898     0, 0, 0, 0, 0, 0, 0, 0,
1899     0, 0, 0, 0, 0, 0, 0, 0,
1900     0, 0, 0, 0, 0, 19, 0, 0,
1901     0, 0, 0, 0, 0, 0, 0, 0,
1902     0, 0, 0, 0, 0, 0, 0, 0,
1903     0, 0, 0, 0, 0, 0, 0, 0,
1904     0, 0, 0, 0, 0, 0, 0, 0,
1905     0, 0, 0, 0, 0, 0, 0, 0,
1906     0, 0, 0, 0, 0, 0, 0, 0,
1907     0, 0, 0, 0, 0, 0, 0, 0,
1908     0, 0, 0, 0, 0, 0, 0, 0,
1909     0, 0, 0, 0, 0, 0, 0, 0,
1910 };
1911
1912 static const Q_UINT8 ui_9F[] = {
1913     0, 0, 0, 0, 0, 0, 0, 0,
1914     0, 0, 0, 0, 0, 0, 0, 0,
1915     0, 0, 0, 0, 0, 0, 0, 0,
1916     0, 0, 0, 0, 0, 0, 0, 0,
1917     0, 0, 0, 0, 0, 0, 0, 0,
1918     0, 0, 0, 0, 0, 0, 0, 0,
1919     0, 0, 0, 0, 0, 0, 0, 0,
1920     0, 0, 0, 0, 0, 0, 0, 0,
1921     0, 0, 0, 0, 0, 0, 0, 0,
1922     0, 0, 0, 0, 0, 0, 0, 0,
1923     0, 0, 0, 0, 0, 0, 0, 0,
1924     0, 0, 0, 0, 0, 0, 0, 0,
1925     0, 0, 0, 0, 0, 0, 0, 0,
1926     0, 0, 0, 0, 0, 0, 0, 0,
1927     0, 0, 0, 0, 0, 0, 0, 0,
1928     0, 0, 0, 0, 0, 0, 0, 0,
1929     0, 0, 0, 0, 0, 0, 0, 0,
1930     0, 0, 0, 0, 0, 0, 0, 0,
1931     0, 0, 0, 0, 0, 0, 0, 0,
1932     0, 0, 0, 0, 0, 0, 0, 0,
1933     0, 0, 0, 0, 0, 19, 0, 0,
1934     0, 0, 0, 0, 0, 0, 0, 0,
1935     0, 0, 0, 0, 0, 0, 0, 0,
1936     0, 0, 0, 0, 0, 0, 0, 0,
1937     0, 0, 0, 0, 0, 0, 0, 0,
1938     0, 0, 0, 0, 0, 0, 0, 0,
1939     0, 0, 0, 0, 0, 0, 0, 0,
1940     0, 0, 0, 0, 0, 0, 0, 0,
1941     0, 0, 0, 0, 0, 0, 0, 0,
1942     0, 0, 0, 0, 0, 0, 0, 0,
1943     0, 0, 0, 0, 0, 0, 0, 0,
1944     0, 0, 0, 0, 0, 0, 0, 0,
1945 };
1946
1947 static const Q_UINT8 ui_A4[] = {
1948     19, 19, 19, 19, 19, 19, 19, 19,
1949     19, 19, 19, 19, 19, 19, 19, 19,
1950     19, 19, 19, 19, 19, 19, 19, 19,
1951     19, 19, 19, 19, 19, 19, 19, 19,
1952     19, 19, 19, 19, 19, 19, 19, 19,
1953     19, 19, 19, 19, 19, 19, 19, 19,
1954     19, 19, 19, 19, 19, 19, 19, 19,
1955     19, 19, 19, 19, 19, 19, 19, 19,
1956     19, 19, 19, 19, 19, 19, 19, 19,
1957     19, 19, 19, 19, 19, 19, 19, 19,
1958     19, 19, 19, 19, 19, 19, 19, 19,
1959     19, 19, 19, 19, 19, 19, 19, 19,
1960     19, 19, 19, 19, 19, 19, 19, 19,
1961     19, 19, 19, 19, 19, 19, 19, 19,
1962     19, 19, 19, 19, 19, 19, 19, 19,
1963     19, 19, 19, 19, 19, 19, 19, 19,
1964     19, 19, 19, 19, 19, 19, 19, 19,
1965     19, 19, 19, 19, 19, 0, 0, 0,
1966     30, 30, 30, 30, 30, 30, 30, 30,
1967     30, 30, 30, 30, 30, 30, 30, 30,
1968     30, 30, 0, 0, 30, 30, 30, 30,
1969     30, 30, 30, 30, 30, 30, 30, 30,
1970     30, 30, 30, 30, 0, 30, 30, 30,
1971     30, 30, 30, 30, 30, 30, 30, 30,
1972     30, 0, 30, 30, 30, 0, 30, 0,
1973     0, 0, 0, 0, 0, 0, 0, 0,
1974     0, 0, 0, 0, 0, 0, 0, 0,
1975     0, 0, 0, 0, 0, 0, 0, 0,
1976     0, 0, 0, 0, 0, 0, 0, 0,
1977     0, 0, 0, 0, 0, 0, 0, 0,
1978     0, 0, 0, 0, 0, 0, 0, 0,
1979     0, 0, 0, 0, 0, 0, 0, 0,
1980 };
1981
1982 static const Q_UINT8 ui_D7[] = {
1983     0, 0, 0, 0, 0, 0, 0, 0,
1984     0, 0, 0, 0, 0, 0, 0, 0,
1985     0, 0, 0, 0, 0, 0, 0, 0,
1986     0, 0, 0, 0, 0, 0, 0, 0,
1987     0, 0, 0, 0, 0, 0, 0, 0,
1988     0, 0, 0, 0, 0, 0, 0, 0,
1989     0, 0, 0, 0, 0, 0, 0, 0,
1990     0, 0, 0, 0, 0, 0, 0, 0,
1991     0, 0, 0, 0, 0, 0, 0, 0,
1992     0, 0, 0, 0, 0, 0, 0, 0,
1993     0, 0, 0, 0, 0, 0, 0, 0,
1994     0, 0, 0, 0, 0, 0, 0, 0,
1995     0, 0, 0, 0, 0, 0, 0, 0,
1996     0, 0, 0, 0, 0, 0, 0, 0,
1997     0, 0, 0, 0, 0, 0, 0, 0,
1998     0, 0, 0, 0, 0, 0, 0, 0,
1999     0, 0, 0, 0, 0, 0, 0, 0,
2000     0, 0, 0, 0, 0, 0, 0, 0,
2001     0, 0, 0, 0, 0, 0, 0, 0,
2002     0, 0, 0, 0, 0, 0, 0, 0,
2003     0, 0, 0, 19, 0, 0, 0, 0,
2004     0, 0, 0, 0, 0, 0, 0, 0,
2005     0, 0, 0, 0, 0, 0, 0, 0,
2006     0, 0, 0, 0, 0, 0, 0, 0,
2007     0, 0, 0, 0, 0, 0, 0, 0,
2008     0, 0, 0, 0, 0, 0, 0, 0,
2009     0, 0, 0, 0, 0, 0, 0, 0,
2010     0, 0, 0, 0, 0, 0, 0, 0,
2011     0, 0, 0, 0, 0, 0, 0, 0,
2012     0, 0, 0, 0, 0, 0, 0, 0,
2013     0, 0, 0, 0, 0, 0, 0, 0,
2014     0, 0, 0, 0, 0, 0, 0, 0,
2015 };
2016
2017 static const Q_UINT8 ui_D8[] = {
2018     12, 0, 0, 0, 0, 0, 0, 0,
2019     0, 0, 0, 0, 0, 0, 0, 0,
2020     0, 0, 0, 0, 0, 0, 0, 0,
2021     0, 0, 0, 0, 0, 0, 0, 0,
2022     0, 0, 0, 0, 0, 0, 0, 0,
2023     0, 0, 0, 0, 0, 0, 0, 0,
2024     0, 0, 0, 0, 0, 0, 0, 0,
2025     0, 0, 0, 0, 0, 0, 0, 0,
2026     0, 0, 0, 0, 0, 0, 0, 0,
2027     0, 0, 0, 0, 0, 0, 0, 0,
2028     0, 0, 0, 0, 0, 0, 0, 0,
2029     0, 0, 0, 0, 0, 0, 0, 0,
2030     0, 0, 0, 0, 0, 0, 0, 0,
2031     0, 0, 0, 0, 0, 0, 0, 0,
2032     0, 0, 0, 0, 0, 0, 0, 0,
2033     0, 0, 0, 0, 0, 0, 0, 0,
2034     0, 0, 0, 0, 0, 0, 0, 0,
2035     0, 0, 0, 0, 0, 0, 0, 0,
2036     0, 0, 0, 0, 0, 0, 0, 0,
2037     0, 0, 0, 0, 0, 0, 0, 0,
2038     0, 0, 0, 0, 0, 0, 0, 0,
2039     0, 0, 0, 0, 0, 0, 0, 0,
2040     0, 0, 0, 0, 0, 0, 0, 0,
2041     0, 0, 0, 0, 0, 0, 0, 0,
2042     0, 0, 0, 0, 0, 0, 0, 0,
2043     0, 0, 0, 0, 0, 0, 0, 0,
2044     0, 0, 0, 0, 0, 0, 0, 0,
2045     0, 0, 0, 0, 0, 0, 0, 0,
2046     0, 0, 0, 0, 0, 0, 0, 0,
2047     0, 0, 0, 0, 0, 0, 0, 0,
2048     0, 0, 0, 0, 0, 0, 0, 0,
2049     0, 0, 0, 0, 0, 0, 0, 0,
2050 };
2051
2052 static const Q_UINT8 ui_DB[] = {
2053     0, 0, 0, 0, 0, 0, 0, 0,
2054     0, 0, 0, 0, 0, 0, 0, 0,
2055     0, 0, 0, 0, 0, 0, 0, 0,
2056     0, 0, 0, 0, 0, 0, 0, 0,
2057     0, 0, 0, 0, 0, 0, 0, 0,
2058     0, 0, 0, 0, 0, 0, 0, 0,
2059     0, 0, 0, 0, 0, 0, 0, 0,
2060     0, 0, 0, 0, 0, 0, 0, 0,
2061     0, 0, 0, 0, 0, 0, 0, 0,
2062     0, 0, 0, 0, 0, 0, 0, 0,
2063     0, 0, 0, 0, 0, 0, 0, 0,
2064     0, 0, 0, 0, 0, 0, 0, 0,
2065     0, 0, 0, 0, 0, 0, 0, 0,
2066     0, 0, 0, 0, 0, 0, 0, 0,
2067     0, 0, 0, 0, 0, 0, 0, 0,
2068     0, 0, 0, 0, 0, 0, 0, 12,
2069     12, 0, 0, 0, 0, 0, 0, 0,
2070     0, 0, 0, 0, 0, 0, 0, 0,
2071     0, 0, 0, 0, 0, 0, 0, 0,
2072     0, 0, 0, 0, 0, 0, 0, 0,
2073     0, 0, 0, 0, 0, 0, 0, 0,
2074     0, 0, 0, 0, 0, 0, 0, 0,
2075     0, 0, 0, 0, 0, 0, 0, 0,
2076     0, 0, 0, 0, 0, 0, 0, 0,
2077     0, 0, 0, 0, 0, 0, 0, 0,
2078     0, 0, 0, 0, 0, 0, 0, 0,
2079     0, 0, 0, 0, 0, 0, 0, 0,
2080     0, 0, 0, 0, 0, 0, 0, 0,
2081     0, 0, 0, 0, 0, 0, 0, 0,
2082     0, 0, 0, 0, 0, 0, 0, 0,
2083     0, 0, 0, 0, 0, 0, 0, 0,
2084     0, 0, 0, 0, 0, 0, 0, 12,
2085 };
2086
2087 static const Q_UINT8 ui_DF[] = {
2088     0, 0, 0, 0, 0, 0, 0, 0,
2089     0, 0, 0, 0, 0, 0, 0, 0,
2090     0, 0, 0, 0, 0, 0, 0, 0,
2091     0, 0, 0, 0, 0, 0, 0, 0,
2092     0, 0, 0, 0, 0, 0, 0, 0,
2093     0, 0, 0, 0, 0, 0, 0, 0,
2094     0, 0, 0, 0, 0, 0, 0, 0,
2095     0, 0, 0, 0, 0, 0, 0, 0,
2096     0, 0, 0, 0, 0, 0, 0, 0,
2097     0, 0, 0, 0, 0, 0, 0, 0,
2098     0, 0, 0, 0, 0, 0, 0, 0,
2099     0, 0, 0, 0, 0, 0, 0, 0,
2100     0, 0, 0, 0, 0, 0, 0, 0,
2101     0, 0, 0, 0, 0, 0, 0, 0,
2102     0, 0, 0, 0, 0, 0, 0, 0,
2103     0, 0, 0, 0, 0, 0, 0, 0,
2104     0, 0, 0, 0, 0, 0, 0, 0,
2105     0, 0, 0, 0, 0, 0, 0, 0,
2106     0, 0, 0, 0, 0, 0, 0, 0,
2107     0, 0, 0, 0, 0, 0, 0, 0,
2108     0, 0, 0, 0, 0, 0, 0, 0,
2109     0, 0, 0, 0, 0, 0, 0, 0,
2110     0, 0, 0, 0, 0, 0, 0, 0,
2111     0, 0, 0, 0, 0, 0, 0, 0,
2112     0, 0, 0, 0, 0, 0, 0, 0,
2113     0, 0, 0, 0, 0, 0, 0, 0,
2114     0, 0, 0, 0, 0, 0, 0, 0,
2115     0, 0, 0, 0, 0, 0, 0, 0,
2116     0, 0, 0, 0, 0, 0, 0, 0,
2117     0, 0, 0, 0, 0, 0, 0, 0,
2118     0, 0, 0, 0, 0, 0, 0, 0,
2119     0, 0, 0, 0, 0, 0, 0, 12,
2120 };
2121
2122 static const Q_UINT8 ui_E0[] = {
2123     13, 0, 0, 0, 0, 0, 0, 0,
2124     0, 0, 0, 0, 0, 0, 0, 0,
2125     0, 0, 0, 0, 0, 0, 0, 0,
2126     0, 0, 0, 0, 0, 0, 0, 0,
2127     0, 0, 0, 0, 0, 0, 0, 0,
2128     0, 0, 0, 0, 0, 0, 0, 0,
2129     0, 0, 0, 0, 0, 0, 0, 0,
2130     0, 0, 0, 0, 0, 0, 0, 0,
2131     0, 0, 0, 0, 0, 0, 0, 0,
2132     0, 0, 0, 0, 0, 0, 0, 0,
2133     0, 0, 0, 0, 0, 0, 0, 0,
2134     0, 0, 0, 0, 0, 0, 0, 0,
2135     0, 0, 0, 0, 0, 0, 0, 0,
2136     0, 0, 0, 0, 0, 0, 0, 0,
2137     0, 0, 0, 0, 0, 0, 0, 0,
2138     0, 0, 0, 0, 0, 0, 0, 0,
2139     0, 0, 0, 0, 0, 0, 0, 0,
2140     0, 0, 0, 0, 0, 0, 0, 0,
2141     0, 0, 0, 0, 0, 0, 0, 0,
2142     0, 0, 0, 0, 0, 0, 0, 0,
2143     0, 0, 0, 0, 0, 0, 0, 0,
2144     0, 0, 0, 0, 0, 0, 0, 0,
2145     0, 0, 0, 0, 0, 0, 0, 0,
2146     0, 0, 0, 0, 0, 0, 0, 0,
2147     0, 0, 0, 0, 0, 0, 0, 0,
2148     0, 0, 0, 0, 0, 0, 0, 0,
2149     0, 0, 0, 0, 0, 0, 0, 0,
2150     0, 0, 0, 0, 0, 0, 0, 0,
2151     0, 0, 0, 0, 0, 0, 0, 0,
2152     0, 0, 0, 0, 0, 0, 0, 0,
2153     0, 0, 0, 0, 0, 0, 0, 0,
2154     0, 0, 0, 0, 0, 0, 0, 0,
2155 };
2156
2157 static const Q_UINT8 ui_F8[] = {
2158     0, 0, 0, 0, 0, 0, 0, 0,
2159     0, 0, 0, 0, 0, 0, 0, 0,
2160     0, 0, 0, 0, 0, 0, 0, 0,
2161     0, 0, 0, 0, 0, 0, 0, 0,
2162     0, 0, 0, 0, 0, 0, 0, 0,
2163     0, 0, 0, 0, 0, 0, 0, 0,
2164     0, 0, 0, 0, 0, 0, 0, 0,
2165     0, 0, 0, 0, 0, 0, 0, 0,
2166     0, 0, 0, 0, 0, 0, 0, 0,
2167     0, 0, 0, 0, 0, 0, 0, 0,
2168     0, 0, 0, 0, 0, 0, 0, 0,
2169     0, 0, 0, 0, 0, 0, 0, 0,
2170     0, 0, 0, 0, 0, 0, 0, 0,
2171     0, 0, 0, 0, 0, 0, 0, 0,
2172     0, 0, 0, 0, 0, 0, 0, 0,
2173     0, 0, 0, 0, 0, 0, 0, 0,
2174     0, 0, 0, 0, 0, 0, 0, 0,
2175     0, 0, 0, 0, 0, 0, 0, 0,
2176     0, 0, 0, 0, 0, 0, 0, 0,
2177     0, 0, 0, 0, 0, 0, 0, 0,
2178     0, 0, 0, 0, 0, 0, 0, 0,
2179     0, 0, 0, 0, 0, 0, 0, 0,
2180     0, 0, 0, 0, 0, 0, 0, 0,
2181     0, 0, 0, 0, 0, 0, 0, 0,
2182     0, 0, 0, 0, 0, 0, 0, 0,
2183     0, 0, 0, 0, 0, 0, 0, 0,
2184     0, 0, 0, 0, 0, 0, 0, 0,
2185     0, 0, 0, 0, 0, 0, 0, 0,
2186     0, 0, 0, 0, 0, 0, 0, 0,
2187     0, 0, 0, 0, 0, 0, 0, 0,
2188     0, 0, 0, 0, 0, 0, 0, 0,
2189     0, 0, 0, 0, 0, 0, 0, 13,
2190 };
2191
2192 static const Q_UINT8 ui_FA[] = {
2193     19, 19, 19, 19, 19, 19, 19, 19,
2194     19, 19, 19, 19, 19, 19, 19, 19,
2195     19, 19, 19, 19, 19, 19, 19, 19,
2196     19, 19, 19, 19, 19, 19, 19, 19,
2197     19, 19, 19, 19, 19, 19, 19, 19,
2198     19, 19, 19, 19, 19, 19, 0, 0,
2199     0, 0, 0, 0, 0, 0, 0, 0,
2200     0, 0, 0, 0, 0, 0, 0, 0,
2201     0, 0, 0, 0, 0, 0, 0, 0,
2202     0, 0, 0, 0, 0, 0, 0, 0,
2203     0, 0, 0, 0, 0, 0, 0, 0,
2204     0, 0, 0, 0, 0, 0, 0, 0,
2205     0, 0, 0, 0, 0, 0, 0, 0,
2206     0, 0, 0, 0, 0, 0, 0, 0,
2207     0, 0, 0, 0, 0, 0, 0, 0,
2208     0, 0, 0, 0, 0, 0, 0, 0,
2209     0, 0, 0, 0, 0, 0, 0, 0,
2210     0, 0, 0, 0, 0, 0, 0, 0,
2211     0, 0, 0, 0, 0, 0, 0, 0,
2212     0, 0, 0, 0, 0, 0, 0, 0,
2213     0, 0, 0, 0, 0, 0, 0, 0,
2214     0, 0, 0, 0, 0, 0, 0, 0,
2215     0, 0, 0, 0, 0, 0, 0, 0,
2216     0, 0, 0, 0, 0, 0, 0, 0,
2217     0, 0, 0, 0, 0, 0, 0, 0,
2218     0, 0, 0, 0, 0, 0, 0, 0,
2219     0, 0, 0, 0, 0, 0, 0, 0,
2220     0, 0, 0, 0, 0, 0, 0, 0,
2221     0, 0, 0, 0, 0, 0, 0, 0,
2222     0, 0, 0, 0, 0, 0, 0, 0,
2223     0, 0, 0, 0, 0, 0, 0, 0,
2224     0, 0, 0, 0, 0, 0, 0, 0,
2225 };
2226
2227 static const Q_UINT8 ui_FB[] = {
2228     16, 16, 16, 16, 16, 16, 16, 0,
2229     0, 0, 0, 0, 0, 0, 0, 0,
2230     0, 0, 0, 16, 16, 16, 16, 16,
2231     0, 0, 0, 0, 0, 19, 1, 19,
2232     19, 19, 19, 19, 19, 19, 19, 19,
2233     19, 27, 19, 19, 19, 19, 19, 19,
2234     19, 19, 19, 19, 19, 19, 19, 0,
2235     19, 19, 19, 19, 19, 0, 19, 0,
2236     19, 19, 0, 19, 19, 0, 19, 19,
2237     19, 19, 19, 19, 19, 19, 19, 19,
2238     19, 19, 19, 19, 19, 19, 19, 19,
2239     19, 19, 19, 19, 19, 19, 19, 19,
2240     19, 19, 19, 19, 19, 19, 19, 19,
2241     19, 19, 19, 19, 19, 19, 19, 19,
2242     19, 19, 19, 19, 19, 19, 19, 19,
2243     19, 19, 19, 19, 19, 19, 19, 19,
2244     19, 19, 19, 19, 19, 19, 19, 19,
2245     19, 19, 19, 19, 19, 19, 19, 19,
2246     19, 19, 19, 19, 19, 19, 19, 19,
2247     19, 19, 19, 19, 19, 19, 19, 19,
2248     19, 19, 19, 19, 19, 19, 19, 19,
2249     19, 19, 19, 19, 19, 19, 19, 19,
2250     19, 19, 0, 0, 0, 0, 0, 0,
2251     0, 0, 0, 0, 0, 0, 0, 0,
2252     0, 0, 0, 0, 0, 0, 0, 0,
2253     0, 0, 0, 0, 0, 0, 0, 0,
2254     0, 0, 0, 19, 19, 19, 19, 19,
2255     19, 19, 19, 19, 19, 19, 19, 19,
2256     19, 19, 19, 19, 19, 19, 19, 19,
2257     19, 19, 19, 19, 19, 19, 19, 19,
2258     19, 19, 19, 19, 19, 19, 19, 19,
2259     19, 19, 19, 19, 19, 19, 19, 19,
2260 };
2261
2262 static const Q_UINT8 ui_FD[] = {
2263     19, 19, 19, 19, 19, 19, 19, 19,
2264     19, 19, 19, 19, 19, 19, 19, 19,
2265     19, 19, 19, 19, 19, 19, 19, 19,
2266     19, 19, 19, 19, 19, 19, 19, 19,
2267     19, 19, 19, 19, 19, 19, 19, 19,
2268     19, 19, 19, 19, 19, 19, 19, 19,
2269     19, 19, 19, 19, 19, 19, 19, 19,
2270     19, 19, 19, 19, 19, 19, 22, 23,
2271     0, 0, 0, 0, 0, 0, 0, 0,
2272     0, 0, 0, 0, 0, 0, 0, 0,
2273     19, 19, 19, 19, 19, 19, 19, 19,
2274     19, 19, 19, 19, 19, 19, 19, 19,
2275     19, 19, 19, 19, 19, 19, 19, 19,
2276     19, 19, 19, 19, 19, 19, 19, 19,
2277     19, 19, 19, 19, 19, 19, 19, 19,
2278     19, 19, 19, 19, 19, 19, 19, 19,
2279     19, 19, 19, 19, 19, 19, 19, 19,
2280     19, 19, 19, 19, 19, 19, 19, 19,
2281     0, 0, 19, 19, 19, 19, 19, 19,
2282     19, 19, 19, 19, 19, 19, 19, 19,
2283     19, 19, 19, 19, 19, 19, 19, 19,
2284     19, 19, 19, 19, 19, 19, 19, 19,
2285     19, 19, 19, 19, 19, 19, 19, 19,
2286     19, 19, 19, 19, 19, 19, 19, 19,
2287     19, 19, 19, 19, 19, 19, 19, 19,
2288     0, 0, 0, 0, 0, 0, 0, 0,
2289     0, 0, 0, 0, 0, 0, 0, 0,
2290     0, 0, 0, 0, 0, 0, 0, 0,
2291     0, 0, 0, 0, 0, 0, 0, 0,
2292     0, 0, 0, 0, 0, 0, 0, 0,
2293     19, 19, 19, 19, 19, 19, 19, 19,
2294     19, 19, 19, 19, 0, 0, 0, 0,
2295 };
2296
2297 static const Q_UINT8 ui_FE[] = {
2298     0, 0, 0, 0, 0, 0, 0, 0,
2299     0, 0, 0, 0, 0, 0, 0, 0,
2300     0, 0, 0, 0, 0, 0, 0, 0,
2301     0, 0, 0, 0, 0, 0, 0, 0,
2302     1, 1, 1, 1, 0, 0, 0, 0,
2303     0, 0, 0, 0, 0, 0, 0, 0,
2304     26, 21, 21, 20, 20, 22, 23, 22,
2305     23, 22, 23, 22, 23, 22, 23, 22,
2306     23, 22, 23, 22, 23, 0, 0, 0,
2307     0, 26, 26, 26, 26, 20, 20, 20,
2308     26, 26, 26, 0, 26, 26, 26, 26,
2309     21, 22, 23, 22, 23, 22, 23, 26,
2310     26, 26, 27, 21, 27, 27, 27, 0,
2311     26, 28, 26, 26, 0, 0, 0, 0,
2312     19, 19, 19, 0, 19, 0, 19, 19,
2313     19, 19, 19, 19, 19, 19, 19, 19,
2314     19, 19, 19, 19, 19, 19, 19, 19,
2315     19, 19, 19, 19, 19, 19, 19, 19,
2316     19, 19, 19, 19, 19, 19, 19, 19,
2317     19, 19, 19, 19, 19, 19, 19, 19,
2318     19, 19, 19, 19, 19, 19, 19, 19,
2319     19, 19, 19, 19, 19, 19, 19, 19,
2320     19, 19, 19, 19, 19, 19, 19, 19,
2321     19, 19, 19, 19, 19, 19, 19, 19,
2322     19, 19, 19, 19, 19, 19, 19, 19,
2323     19, 19, 19, 19, 19, 19, 19, 19,
2324     19, 19, 19, 19, 19, 19, 19, 19,
2325     19, 19, 19, 19, 19, 19, 19, 19,
2326     19, 19, 19, 19, 19, 19, 19, 19,
2327     19, 19, 19, 19, 19, 19, 19, 19,
2328     19, 19, 19, 19, 19, 19, 19, 19,
2329     19, 19, 19, 19, 19, 0, 0, 11,
2330 };
2331
2332 static const Q_UINT8 ui_FF[] = {
2333     0, 26, 26, 26, 28, 26, 26, 26,
2334     22, 23, 26, 27, 26, 21, 26, 26,
2335     4, 4, 4, 4, 4, 4, 4, 4,
2336     4, 4, 26, 26, 27, 27, 27, 26,
2337     26, 15, 15, 15, 15, 15, 15, 15,
2338     15, 15, 15, 15, 15, 15, 15, 15,
2339     15, 15, 15, 15, 15, 15, 15, 15,
2340     15, 15, 15, 22, 26, 23, 29, 20,
2341     29, 16, 16, 16, 16, 16, 16, 16,
2342     16, 16, 16, 16, 16, 16, 16, 16,
2343     16, 16, 16, 16, 16, 16, 16, 16,
2344     16, 16, 16, 22, 27, 23, 27, 0,
2345     0, 26, 22, 23, 26, 20, 19, 19,
2346     19, 19, 19, 19, 19, 19, 19, 19,
2347     18, 19, 19, 19, 19, 19, 19, 19,
2348     19, 19, 19, 19, 19, 19, 19, 19,
2349     19, 19, 19, 19, 19, 19, 19, 19,
2350     19, 19, 19, 19, 19, 19, 19, 19,
2351     19, 19, 19, 19, 19, 19, 19, 19,
2352     19, 19, 19, 19, 19, 19, 18, 18,
2353     19, 19, 19, 19, 19, 19, 19, 19,
2354     19, 19, 19, 19, 19, 19, 19, 19,
2355     19, 19, 19, 19, 19, 19, 19, 19,
2356     19, 19, 19, 19, 19, 19, 19, 0,
2357     0, 0, 19, 19, 19, 19, 19, 19,
2358     0, 0, 19, 19, 19, 19, 19, 19,
2359     0, 0, 19, 19, 19, 19, 19, 19,
2360     0, 0, 19, 19, 19, 0, 0, 0,
2361     28, 28, 27, 29, 30, 28, 28, 0,
2362     30, 27, 27, 27, 27, 30, 30, 0,
2363     0, 0, 0, 0, 0, 0, 0, 0,
2364     0, 11, 11, 11, 30, 30, 0, 0,
2365 };
2366
2367 static const Q_UINT8 * const unicode_info[256] = {
2368     ui_00, ui_01, ui_02, ui_03, ui_04, ui_05, ui_06, ui_07,
2369     ui_08, ui_09, ui_0A, ui_0B, ui_0C, ui_0D, ui_0E, ui_0F,
2370     ui_10, ui_11, ui_12, ui_13, ui_14, ui_15, ui_16, ui_17,
2371     ui_18, ui_08, ui_08, ui_08, ui_08, ui_08, ui_1E, ui_1F,
2372     ui_20, ui_21, ui_22, ui_23, ui_24, ui_25, ui_26, ui_27,
2373     ui_28, ui_08, ui_08, ui_08, ui_08, ui_08, ui_2E, ui_2F,
2374     ui_30, ui_31, ui_32, ui_33, ui_34, ui_08, ui_08, ui_08,
2375     ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08,
2376     ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08,
2377     ui_08, ui_08, ui_08, ui_08, ui_08, ui_4D, ui_34, ui_08,
2378     ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08,
2379     ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08,
2380     ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08,
2381     ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08,
2382     ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08,
2383     ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08,
2384     ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08,
2385     ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08,
2386     ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08,
2387     ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_9F,
2388     ui_15, ui_15, ui_15, ui_15, ui_A4, ui_08, ui_08, ui_08,
2389     ui_08, ui_08, ui_08, ui_08, ui_34, ui_08, ui_08, ui_08,
2390     ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08,
2391     ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08,
2392     ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08,
2393     ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08,
2394     ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_D7,
2395     ui_D8, ui_08, ui_08, ui_DB, ui_D8, ui_08, ui_08, ui_DF,
2396     ui_E0, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08,
2397     ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08,
2398     ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08,
2399     ui_F8, ui_15, ui_FA, ui_FB, ui_15, ui_FD, ui_FE, ui_FF,
2400 };
2401 // 15616 bytes
2402
2403 static const Q_UINT16 decomposition_map [] = {
2404     0,
2405     3, 0x00A0, 0x0020, 0,
2406     16, 0x00A8, 0x0020, 0x0308, 0,
2407     9, 0x00AA, 0x0061, 0,
2408     16, 0x00AF, 0x0020, 0x0304, 0,
2409     9, 0x00B2, 0x0032, 0,
2410     9, 0x00B3, 0x0033, 0,
2411     16, 0x00B4, 0x0020, 0x0301, 0,
2412     16, 0x00B5, 0x03BC, 0,
2413     16, 0x00B8, 0x0020, 0x0327, 0,
2414     9, 0x00B9, 0x0031, 0,
2415     9, 0x00BA, 0x006F, 0,
2416     17, 0x00BC, 0x0031, 0x2044, 0x0034, 0,
2417     17, 0x00BD, 0x0031, 0x2044, 0x0032, 0,
2418     17, 0x00BE, 0x0033, 0x2044, 0x0034, 0,
2419     1, 0x00C0, 0x0041, 0x0300, 0,
2420     1, 0x00C1, 0x0041, 0x0301, 0,
2421     1, 0x00C2, 0x0041, 0x0302, 0,
2422     1, 0x00C3, 0x0041, 0x0303, 0,
2423     1, 0x00C4, 0x0041, 0x0308, 0,
2424     1, 0x00C5, 0x0041, 0x030A, 0,
2425     1, 0x00C7, 0x0043, 0x0327, 0,
2426     1, 0x00C8, 0x0045, 0x0300, 0,
2427     1, 0x00C9, 0x0045, 0x0301, 0,
2428     1, 0x00CA, 0x0045, 0x0302, 0,
2429     1, 0x00CB, 0x0045, 0x0308, 0,
2430     1, 0x00CC, 0x0049, 0x0300, 0,
2431     1, 0x00CD, 0x0049, 0x0301, 0,
2432     1, 0x00CE, 0x0049, 0x0302, 0,
2433     1, 0x00CF, 0x0049, 0x0308, 0,
2434     1, 0x00D1, 0x004E, 0x0303, 0,
2435     1, 0x00D2, 0x004F, 0x0300, 0,
2436     1, 0x00D3, 0x004F, 0x0301, 0,
2437     1, 0x00D4, 0x004F, 0x0302, 0,
2438     1, 0x00D5, 0x004F, 0x0303, 0,
2439     1, 0x00D6, 0x004F, 0x0308, 0,
2440     1, 0x00D9, 0x0055, 0x0300, 0,
2441     1, 0x00DA, 0x0055, 0x0301, 0,
2442     1, 0x00DB, 0x0055, 0x0302, 0,
2443     1, 0x00DC, 0x0055, 0x0308, 0,
2444     1, 0x00DD, 0x0059, 0x0301, 0,
2445     1, 0x00E0, 0x0061, 0x0300, 0,
2446     1, 0x00E1, 0x0061, 0x0301, 0,
2447     1, 0x00E2, 0x0061, 0x0302, 0,
2448     1, 0x00E3, 0x0061, 0x0303, 0,
2449     1, 0x00E4, 0x0061, 0x0308, 0,
2450     1, 0x00E5, 0x0061, 0x030A, 0,
2451     1, 0x00E7, 0x0063, 0x0327, 0,
2452     1, 0x00E8, 0x0065, 0x0300, 0,
2453     1, 0x00E9, 0x0065, 0x0301, 0,
2454     1, 0x00EA, 0x0065, 0x0302, 0,
2455     1, 0x00EB, 0x0065, 0x0308, 0,
2456     1, 0x00EC, 0x0069, 0x0300, 0,
2457     1, 0x00ED, 0x0069, 0x0301, 0,
2458     1, 0x00EE, 0x0069, 0x0302, 0,
2459     1, 0x00EF, 0x0069, 0x0308, 0,
2460     1, 0x00F1, 0x006E, 0x0303, 0,
2461     1, 0x00F2, 0x006F, 0x0300, 0,
2462     1, 0x00F3, 0x006F, 0x0301, 0,
2463     1, 0x00F4, 0x006F, 0x0302, 0,
2464     1, 0x00F5, 0x006F, 0x0303, 0,
2465     1, 0x00F6, 0x006F, 0x0308, 0,
2466     1, 0x00F9, 0x0075, 0x0300, 0,
2467     1, 0x00FA, 0x0075, 0x0301, 0,
2468     1, 0x00FB, 0x0075, 0x0302, 0,
2469     1, 0x00FC, 0x0075, 0x0308, 0,
2470     1, 0x00FD, 0x0079, 0x0301, 0,
2471     1, 0x00FF, 0x0079, 0x0308, 0,
2472     1, 0x0100, 0x0041, 0x0304, 0,
2473     1, 0x0101, 0x0061, 0x0304, 0,
2474     1, 0x0102, 0x0041, 0x0306, 0,
2475     1, 0x0103, 0x0061, 0x0306, 0,
2476     1, 0x0104, 0x0041, 0x0328, 0,
2477     1, 0x0105, 0x0061, 0x0328, 0,
2478     1, 0x0106, 0x0043, 0x0301, 0,
2479     1, 0x0107, 0x0063, 0x0301, 0,
2480     1, 0x0108, 0x0043, 0x0302, 0,
2481     1, 0x0109, 0x0063, 0x0302, 0,
2482     1, 0x010A, 0x0043, 0x0307, 0,
2483     1, 0x010B, 0x0063, 0x0307, 0,
2484     1, 0x010C, 0x0043, 0x030C, 0,
2485     1, 0x010D, 0x0063, 0x030C, 0,
2486     1, 0x010E, 0x0044, 0x030C, 0,
2487     1, 0x010F, 0x0064, 0x030C, 0,
2488     1, 0x0112, 0x0045, 0x0304, 0,
2489     1, 0x0113, 0x0065, 0x0304, 0,
2490     1, 0x0114, 0x0045, 0x0306, 0,
2491     1, 0x0115, 0x0065, 0x0306, 0,
2492     1, 0x0116, 0x0045, 0x0307, 0,
2493     1, 0x0117, 0x0065, 0x0307, 0,
2494     1, 0x0118, 0x0045, 0x0328, 0,
2495     1, 0x0119, 0x0065, 0x0328, 0,
2496     1, 0x011A, 0x0045, 0x030C, 0,
2497     1, 0x011B, 0x0065, 0x030C, 0,
2498     1, 0x011C, 0x0047, 0x0302, 0,
2499     1, 0x011D, 0x0067, 0x0302, 0,
2500     1, 0x011E, 0x0047, 0x0306, 0,
2501     1, 0x011F, 0x0067, 0x0306, 0,
2502     1, 0x0120, 0x0047, 0x0307, 0,
2503     1, 0x0121, 0x0067, 0x0307, 0,
2504     1, 0x0122, 0x0047, 0x0327, 0,
2505     1, 0x0123, 0x0067, 0x0327, 0,
2506     1, 0x0124, 0x0048, 0x0302, 0,
2507     1, 0x0125, 0x0068, 0x0302, 0,
2508     1, 0x0128, 0x0049, 0x0303, 0,
2509     1, 0x0129, 0x0069, 0x0303, 0,
2510     1, 0x012A, 0x0049, 0x0304, 0,
2511     1, 0x012B, 0x0069, 0x0304, 0,
2512     1, 0x012C, 0x0049, 0x0306, 0,
2513     1, 0x012D, 0x0069, 0x0306, 0,
2514     1, 0x012E, 0x0049, 0x0328, 0,
2515     1, 0x012F, 0x0069, 0x0328, 0,
2516     1, 0x0130, 0x0049, 0x0307, 0,
2517     16, 0x0132, 0x0049, 0x004A, 0,
2518     16, 0x0133, 0x0069, 0x006A, 0,
2519     1, 0x0134, 0x004A, 0x0302, 0,
2520     1, 0x0135, 0x006A, 0x0302, 0,
2521     1, 0x0136, 0x004B, 0x0327, 0,
2522     1, 0x0137, 0x006B, 0x0327, 0,
2523     1, 0x0139, 0x004C, 0x0301, 0,
2524     1, 0x013A, 0x006C, 0x0301, 0,
2525     1, 0x013B, 0x004C, 0x0327, 0,
2526     1, 0x013C, 0x006C, 0x0327, 0,
2527     1, 0x013D, 0x004C, 0x030C, 0,
2528     1, 0x013E, 0x006C, 0x030C, 0,
2529     16, 0x013F, 0x004C, 0x00B7, 0,
2530     16, 0x0140, 0x006C, 0x00B7, 0,
2531     1, 0x0143, 0x004E, 0x0301, 0,
2532     1, 0x0144, 0x006E, 0x0301, 0,
2533     1, 0x0145, 0x004E, 0x0327, 0,
2534     1, 0x0146, 0x006E, 0x0327, 0,
2535     1, 0x0147, 0x004E, 0x030C, 0,
2536     1, 0x0148, 0x006E, 0x030C, 0,
2537     16, 0x0149, 0x02BC, 0x006E, 0,
2538     1, 0x014C, 0x004F, 0x0304, 0,
2539     1, 0x014D, 0x006F, 0x0304, 0,
2540     1, 0x014E, 0x004F, 0x0306, 0,
2541     1, 0x014F, 0x006F, 0x0306, 0,
2542     1, 0x0150, 0x004F, 0x030B, 0,
2543     1, 0x0151, 0x006F, 0x030B, 0,
2544     1, 0x0154, 0x0052, 0x0301, 0,
2545     1, 0x0155, 0x0072, 0x0301, 0,
2546     1, 0x0156, 0x0052, 0x0327, 0,
2547     1, 0x0157, 0x0072, 0x0327, 0,
2548     1, 0x0158, 0x0052, 0x030C, 0,
2549     1, 0x0159, 0x0072, 0x030C, 0,
2550     1, 0x015A, 0x0053, 0x0301, 0,
2551     1, 0x015B, 0x0073, 0x0301, 0,
2552     1, 0x015C, 0x0053, 0x0302, 0,
2553     1, 0x015D, 0x0073, 0x0302, 0,
2554     1, 0x015E, 0x0053, 0x0327, 0,
2555     1, 0x015F, 0x0073, 0x0327, 0,
2556     1, 0x0160, 0x0053, 0x030C, 0,
2557     1, 0x0161, 0x0073, 0x030C, 0,
2558     1, 0x0162, 0x0054, 0x0327, 0,
2559     1, 0x0163, 0x0074, 0x0327, 0,
2560     1, 0x0164, 0x0054, 0x030C, 0,
2561     1, 0x0165, 0x0074, 0x030C, 0,
2562     1, 0x0168, 0x0055, 0x0303, 0,
2563     1, 0x0169, 0x0075, 0x0303, 0,
2564     1, 0x016A, 0x0055, 0x0304, 0,
2565     1, 0x016B, 0x0075, 0x0304, 0,
2566     1, 0x016C, 0x0055, 0x0306, 0,
2567     1, 0x016D, 0x0075, 0x0306, 0,
2568     1, 0x016E, 0x0055, 0x030A, 0,
2569     1, 0x016F, 0x0075, 0x030A, 0,
2570     1, 0x0170, 0x0055, 0x030B, 0,
2571     1, 0x0171, 0x0075, 0x030B, 0,
2572     1, 0x0172, 0x0055, 0x0328, 0,
2573     1, 0x0173, 0x0075, 0x0328, 0,
2574     1, 0x0174, 0x0057, 0x0302, 0,
2575     1, 0x0175, 0x0077, 0x0302, 0,
2576     1, 0x0176, 0x0059, 0x0302, 0,
2577     1, 0x0177, 0x0079, 0x0302, 0,
2578     1, 0x0178, 0x0059, 0x0308, 0,
2579     1, 0x0179, 0x005A, 0x0301, 0,
2580     1, 0x017A, 0x007A, 0x0301, 0,
2581     1, 0x017B, 0x005A, 0x0307, 0,
2582     1, 0x017C, 0x007A, 0x0307, 0,
2583     1, 0x017D, 0x005A, 0x030C, 0,
2584     1, 0x017E, 0x007A, 0x030C, 0,
2585     16, 0x017F, 0x0073, 0,
2586     1, 0x01A0, 0x004F, 0x031B, 0,
2587     1, 0x01A1, 0x006F, 0x031B, 0,
2588     1, 0x01AF, 0x0055, 0x031B, 0,
2589     1, 0x01B0, 0x0075, 0x031B, 0,
2590     16, 0x01C4, 0x0044, 0x017D, 0,
2591     16, 0x01C5, 0x0044, 0x017E, 0,
2592     16, 0x01C6, 0x0064, 0x017E, 0,
2593     16, 0x01C7, 0x004C, 0x004A, 0,
2594     16, 0x01C8, 0x004C, 0x006A, 0,
2595     16, 0x01C9, 0x006C, 0x006A, 0,
2596     16, 0x01CA, 0x004E, 0x004A, 0,
2597     16, 0x01CB, 0x004E, 0x006A, 0,
2598     16, 0x01CC, 0x006E, 0x006A, 0,
2599     1, 0x01CD, 0x0041, 0x030C, 0,
2600     1, 0x01CE, 0x0061, 0x030C, 0,
2601     1, 0x01CF, 0x0049, 0x030C, 0,
2602     1, 0x01D0, 0x0069, 0x030C, 0,
2603     1, 0x01D1, 0x004F, 0x030C, 0,
2604     1, 0x01D2, 0x006F, 0x030C, 0,
2605     1, 0x01D3, 0x0055, 0x030C, 0,
2606     1, 0x01D4, 0x0075, 0x030C, 0,
2607     1, 0x01D5, 0x00DC, 0x0304, 0,
2608     1, 0x01D6, 0x00FC, 0x0304, 0,
2609     1, 0x01D7, 0x00DC, 0x0301, 0,
2610     1, 0x01D8, 0x00FC, 0x0301, 0,
2611     1, 0x01D9, 0x00DC, 0x030C, 0,
2612     1, 0x01DA, 0x00FC, 0x030C, 0,
2613     1, 0x01DB, 0x00DC, 0x0300, 0,
2614     1, 0x01DC, 0x00FC, 0x0300, 0,
2615     1, 0x01DE, 0x00C4, 0x0304, 0,
2616     1, 0x01DF, 0x00E4, 0x0304, 0,
2617     1, 0x01E0, 0x0226, 0x0304, 0,
2618     1, 0x01E1, 0x0227, 0x0304, 0,
2619     1, 0x01E2, 0x00C6, 0x0304, 0,
2620     1, 0x01E3, 0x00E6, 0x0304, 0,
2621     1, 0x01E6, 0x0047, 0x030C, 0,
2622     1, 0x01E7, 0x0067, 0x030C, 0,
2623     1, 0x01E8, 0x004B, 0x030C, 0,
2624     1, 0x01E9, 0x006B, 0x030C, 0,
2625     1, 0x01EA, 0x004F, 0x0328, 0,
2626     1, 0x01EB, 0x006F, 0x0328, 0,
2627     1, 0x01EC, 0x01EA, 0x0304, 0,
2628     1, 0x01ED, 0x01EB, 0x0304, 0,
2629     1, 0x01EE, 0x01B7, 0x030C, 0,
2630     1, 0x01EF, 0x0292, 0x030C, 0,
2631     1, 0x01F0, 0x006A, 0x030C, 0,
2632     16, 0x01F1, 0x0044, 0x005A, 0,
2633     16, 0x01F2, 0x0044, 0x007A, 0,
2634     16, 0x01F3, 0x0064, 0x007A, 0,
2635     1, 0x01F4, 0x0047, 0x0301, 0,
2636     1, 0x01F5, 0x0067, 0x0301, 0,
2637     1, 0x01F8, 0x004E, 0x0300, 0,
2638     1, 0x01F9, 0x006E, 0x0300, 0,
2639     1, 0x01FA, 0x00C5, 0x0301, 0,
2640     1, 0x01FB, 0x00E5, 0x0301, 0,
2641     1, 0x01FC, 0x00C6, 0x0301, 0,
2642     1, 0x01FD, 0x00E6, 0x0301, 0,
2643     1, 0x01FE, 0x00D8, 0x0301, 0,
2644     1, 0x01FF, 0x00F8, 0x0301, 0,
2645     1, 0x0200, 0x0041, 0x030F, 0,
2646     1, 0x0201, 0x0061, 0x030F, 0,
2647     1, 0x0202, 0x0041, 0x0311, 0,
2648     1, 0x0203, 0x0061, 0x0311, 0,
2649     1, 0x0204, 0x0045, 0x030F, 0,
2650     1, 0x0205, 0x0065, 0x030F, 0,
2651     1, 0x0206, 0x0045, 0x0311, 0,
2652     1, 0x0207, 0x0065, 0x0311, 0,
2653     1, 0x0208, 0x0049, 0x030F, 0,
2654     1, 0x0209, 0x0069, 0x030F, 0,
2655     1, 0x020A, 0x0049, 0x0311, 0,
2656     1, 0x020B, 0x0069, 0x0311, 0,
2657     1, 0x020C, 0x004F, 0x030F, 0,
2658     1, 0x020D, 0x006F, 0x030F, 0,
2659     1, 0x020E, 0x004F, 0x0311, 0,
2660     1, 0x020F, 0x006F, 0x0311, 0,
2661     1, 0x0210, 0x0052, 0x030F, 0,
2662     1, 0x0211, 0x0072, 0x030F, 0,
2663     1, 0x0212, 0x0052, 0x0311, 0,
2664     1, 0x0213, 0x0072, 0x0311, 0,
2665     1, 0x0214, 0x0055, 0x030F, 0,
2666     1, 0x0215, 0x0075, 0x030F, 0,
2667     1, 0x0216, 0x0055, 0x0311, 0,
2668     1, 0x0217, 0x0075, 0x0311, 0,
2669     1, 0x0218, 0x0053, 0x0326, 0,
2670     1, 0x0219, 0x0073, 0x0326, 0,
2671     1, 0x021A, 0x0054, 0x0326, 0,
2672     1, 0x021B, 0x0074, 0x0326, 0,
2673     1, 0x021E, 0x0048, 0x030C, 0,
2674     1, 0x021F, 0x0068, 0x030C, 0,
2675     1, 0x0226, 0x0041, 0x0307, 0,
2676     1, 0x0227, 0x0061, 0x0307, 0,
2677     1, 0x0228, 0x0045, 0x0327, 0,
2678     1, 0x0229, 0x0065, 0x0327, 0,
2679     1, 0x022A, 0x00D6, 0x0304, 0,
2680     1, 0x022B, 0x00F6, 0x0304, 0,
2681     1, 0x022C, 0x00D5, 0x0304, 0,
2682     1, 0x022D, 0x00F5, 0x0304, 0,
2683     1, 0x022E, 0x004F, 0x0307, 0,
2684     1, 0x022F, 0x006F, 0x0307, 0,
2685     1, 0x0230, 0x022E, 0x0304, 0,
2686     1, 0x0231, 0x022F, 0x0304, 0,
2687     1, 0x0232, 0x0059, 0x0304, 0,
2688     1, 0x0233, 0x0079, 0x0304, 0,
2689     9, 0x02B0, 0x0068, 0,
2690     9, 0x02B1, 0x0266, 0,
2691     9, 0x02B2, 0x006A, 0,
2692     9, 0x02B3, 0x0072, 0,
2693     9, 0x02B4, 0x0279, 0,
2694     9, 0x02B5, 0x027B, 0,
2695     9, 0x02B6, 0x0281, 0,
2696     9, 0x02B7, 0x0077, 0,
2697     9, 0x02B8, 0x0079, 0,
2698     16, 0x02D8, 0x0020, 0x0306, 0,
2699     16, 0x02D9, 0x0020, 0x0307, 0,
2700     16, 0x02DA, 0x0020, 0x030A, 0,
2701     16, 0x02DB, 0x0020, 0x0328, 0,
2702     16, 0x02DC, 0x0020, 0x0303, 0,
2703     16, 0x02DD, 0x0020, 0x030B, 0,
2704     9, 0x02E0, 0x0263, 0,
2705     9, 0x02E1, 0x006C, 0,
2706     9, 0x02E2, 0x0073, 0,
2707     9, 0x02E3, 0x0078, 0,
2708     9, 0x02E4, 0x0295, 0,
2709     1, 0x0340, 0x0300, 0,
2710     1, 0x0341, 0x0301, 0,
2711     1, 0x0343, 0x0313, 0,
2712     1, 0x0344, 0x0308, 0x0301, 0,
2713     1, 0x0374, 0x02B9, 0,
2714     16, 0x037A, 0x0020, 0x0345, 0,
2715     1, 0x037E, 0x003B, 0,
2716     16, 0x0384, 0x0020, 0x0301, 0,
2717     1, 0x0385, 0x00A8, 0x0301, 0,
2718     1, 0x0386, 0x0391, 0x0301, 0,
2719     1, 0x0387, 0x00B7, 0,
2720     1, 0x0388, 0x0395, 0x0301, 0,
2721     1, 0x0389, 0x0397, 0x0301, 0,
2722     1, 0x038A, 0x0399, 0x0301, 0,
2723     1, 0x038C, 0x039F, 0x0301, 0,
2724     1, 0x038E, 0x03A5, 0x0301, 0,
2725     1, 0x038F, 0x03A9, 0x0301, 0,
2726     1, 0x0390, 0x03CA, 0x0301, 0,
2727     1, 0x03AA, 0x0399, 0x0308, 0,
2728     1, 0x03AB, 0x03A5, 0x0308, 0,
2729     1, 0x03AC, 0x03B1, 0x0301, 0,
2730     1, 0x03AD, 0x03B5, 0x0301, 0,
2731     1, 0x03AE, 0x03B7, 0x0301, 0,
2732     1, 0x03AF, 0x03B9, 0x0301, 0,
2733     1, 0x03B0, 0x03CB, 0x0301, 0,
2734     1, 0x03CA, 0x03B9, 0x0308, 0,
2735     1, 0x03CB, 0x03C5, 0x0308, 0,
2736     1, 0x03CC, 0x03BF, 0x0301, 0,
2737     1, 0x03CD, 0x03C5, 0x0301, 0,
2738     1, 0x03CE, 0x03C9, 0x0301, 0,
2739     16, 0x03D0, 0x03B2, 0,
2740     16, 0x03D1, 0x03B8, 0,
2741     16, 0x03D2, 0x03A5, 0,
2742     1, 0x03D3, 0x03D2, 0x0301, 0,
2743     1, 0x03D4, 0x03D2, 0x0308, 0,
2744     16, 0x03D5, 0x03C6, 0,
2745     16, 0x03D6, 0x03C0, 0,
2746     16, 0x03F0, 0x03BA, 0,
2747     16, 0x03F1, 0x03C1, 0,
2748     16, 0x03F2, 0x03C2, 0,
2749     1, 0x0400, 0x0415, 0x0300, 0,
2750     1, 0x0401, 0x0415, 0x0308, 0,
2751     1, 0x0403, 0x0413, 0x0301, 0,
2752     1, 0x0407, 0x0406, 0x0308, 0,
2753     1, 0x040C, 0x041A, 0x0301, 0,
2754     1, 0x040D, 0x0418, 0x0300, 0,
2755     1, 0x040E, 0x0423, 0x0306, 0,
2756     1, 0x0419, 0x0418, 0x0306, 0,
2757     1, 0x0439, 0x0438, 0x0306, 0,
2758     1, 0x0450, 0x0435, 0x0300, 0,
2759     1, 0x0451, 0x0435, 0x0308, 0,
2760     1, 0x0453, 0x0433, 0x0301, 0,
2761     1, 0x0457, 0x0456, 0x0308, 0,
2762     1, 0x045C, 0x043A, 0x0301, 0,
2763     1, 0x045D, 0x0438, 0x0300, 0,
2764     1, 0x045E, 0x0443, 0x0306, 0,
2765     1, 0x0476, 0x0474, 0x030F, 0,
2766     1, 0x0477, 0x0475, 0x030F, 0,
2767     1, 0x04C1, 0x0416, 0x0306, 0,
2768     1, 0x04C2, 0x0436, 0x0306, 0,
2769     1, 0x04D0, 0x0410, 0x0306, 0,
2770     1, 0x04D1, 0x0430, 0x0306, 0,
2771     1, 0x04D2, 0x0410, 0x0308, 0,
2772     1, 0x04D3, 0x0430, 0x0308, 0,
2773     1, 0x04D6, 0x0415, 0x0306, 0,
2774     1, 0x04D7, 0x0435, 0x0306, 0,
2775     1, 0x04DA, 0x04D8, 0x0308, 0,
2776     1, 0x04DB, 0x04D9, 0x0308, 0,
2777     1, 0x04DC, 0x0416, 0x0308, 0,
2778     1, 0x04DD, 0x0436, 0x0308, 0,
2779     1, 0x04DE, 0x0417, 0x0308, 0,
2780     1, 0x04DF, 0x0437, 0x0308, 0,
2781     1, 0x04E2, 0x0418, 0x0304, 0,
2782     1, 0x04E3, 0x0438, 0x0304, 0,
2783     1, 0x04E4, 0x0418, 0x0308, 0,
2784     1, 0x04E5, 0x0438, 0x0308, 0,
2785     1, 0x04E6, 0x041E, 0x0308, 0,
2786     1, 0x04E7, 0x043E, 0x0308, 0,
2787     1, 0x04EA, 0x04E8, 0x0308, 0,
2788     1, 0x04EB, 0x04E9, 0x0308, 0,
2789     1, 0x04EC, 0x042D, 0x0308, 0,
2790     1, 0x04ED, 0x044D, 0x0308, 0,
2791     1, 0x04EE, 0x0423, 0x0304, 0,
2792     1, 0x04EF, 0x0443, 0x0304, 0,
2793     1, 0x04F0, 0x0423, 0x0308, 0,
2794     1, 0x04F1, 0x0443, 0x0308, 0,
2795     1, 0x04F2, 0x0423, 0x030B, 0,
2796     1, 0x04F3, 0x0443, 0x030B, 0,
2797     1, 0x04F4, 0x0427, 0x0308, 0,
2798     1, 0x04F5, 0x0447, 0x0308, 0,
2799     1, 0x04F8, 0x042B, 0x0308, 0,
2800     1, 0x04F9, 0x044B, 0x0308, 0,
2801     16, 0x0587, 0x0565, 0x0582, 0,
2802     1, 0x0622, 0x0627, 0x0653, 0,
2803     1, 0x0623, 0x0627, 0x0654, 0,
2804     1, 0x0624, 0x0648, 0x0654, 0,
2805     1, 0x0625, 0x0627, 0x0655, 0,
2806     1, 0x0626, 0x064A, 0x0654, 0,
2807     16, 0x0675, 0x0627, 0x0674, 0,
2808     16, 0x0676, 0x0648, 0x0674, 0,
2809     16, 0x0677, 0x06C7, 0x0674, 0,
2810     16, 0x0678, 0x064A, 0x0674, 0,
2811     1, 0x06C0, 0x06D5, 0x0654, 0,
2812     1, 0x06C2, 0x06C1, 0x0654, 0,
2813     1, 0x06D3, 0x06D2, 0x0654, 0,
2814     1, 0x0929, 0x0928, 0x093C, 0,
2815     1, 0x0931, 0x0930, 0x093C, 0,
2816     1, 0x0934, 0x0933, 0x093C, 0,
2817     1, 0x0958, 0x0915, 0x093C, 0,
2818     1, 0x0959, 0x0916, 0x093C, 0,
2819     1, 0x095A, 0x0917, 0x093C, 0,
2820     1, 0x095B, 0x091C, 0x093C, 0,
2821     1, 0x095C, 0x0921, 0x093C, 0,
2822     1, 0x095D, 0x0922, 0x093C, 0,
2823     1, 0x095E, 0x092B, 0x093C, 0,
2824     1, 0x095F, 0x092F, 0x093C, 0,
2825     1, 0x09CB, 0x09C7, 0x09BE, 0,
2826     1, 0x09CC, 0x09C7, 0x09D7, 0,
2827     1, 0x09DC, 0x09A1, 0x09BC, 0,
2828     1, 0x09DD, 0x09A2, 0x09BC, 0,
2829     1, 0x09DF, 0x09AF, 0x09BC, 0,
2830     1, 0x0A33, 0x0A32, 0x0A3C, 0,
2831     1, 0x0A36, 0x0A38, 0x0A3C, 0,
2832     1, 0x0A59, 0x0A16, 0x0A3C, 0,
2833     1, 0x0A5A, 0x0A17, 0x0A3C, 0,
2834     1, 0x0A5B, 0x0A1C, 0x0A3C, 0,
2835     1, 0x0A5E, 0x0A2B, 0x0A3C, 0,
2836     1, 0x0B48, 0x0B47, 0x0B56, 0,
2837     1, 0x0B4B, 0x0B47, 0x0B3E, 0,
2838     1, 0x0B4C, 0x0B47, 0x0B57, 0,
2839     1, 0x0B5C, 0x0B21, 0x0B3C, 0,
2840     1, 0x0B5D, 0x0B22, 0x0B3C, 0,
2841     1, 0x0B94, 0x0B92, 0x0BD7, 0,
2842     1, 0x0BCA, 0x0BC6, 0x0BBE, 0,
2843     1, 0x0BCB, 0x0BC7, 0x0BBE, 0,
2844     1, 0x0BCC, 0x0BC6, 0x0BD7, 0,
2845     1, 0x0C48, 0x0C46, 0x0C56, 0,
2846     1, 0x0CC0, 0x0CBF, 0x0CD5, 0,
2847     1, 0x0CC7, 0x0CC6, 0x0CD5, 0,
2848     1, 0x0CC8, 0x0CC6, 0x0CD6, 0,
2849     1, 0x0CCA, 0x0CC6, 0x0CC2, 0,
2850     1, 0x0CCB, 0x0CCA, 0x0CD5, 0,
2851     1, 0x0D4A, 0x0D46, 0x0D3E, 0,
2852     1, 0x0D4B, 0x0D47, 0x0D3E, 0,
2853     1, 0x0D4C, 0x0D46, 0x0D57, 0,
2854     1, 0x0DDA, 0x0DD9, 0x0DCA, 0,
2855     1, 0x0DDC, 0x0DD9, 0x0DCF, 0,
2856     1, 0x0DDD, 0x0DDC, 0x0DCA, 0,
2857     1, 0x0DDE, 0x0DD9, 0x0DDF, 0,
2858     16, 0x0E33, 0x0E4D, 0x0E32, 0,
2859     16, 0x0EB3, 0x0ECD, 0x0EB2, 0,
2860     16, 0x0EDC, 0x0EAB, 0x0E99, 0,
2861     16, 0x0EDD, 0x0EAB, 0x0EA1, 0,
2862     3, 0x0F0C, 0x0F0B, 0,
2863     1, 0x0F43, 0x0F42, 0x0FB7, 0,
2864     1, 0x0F4D, 0x0F4C, 0x0FB7, 0,
2865     1, 0x0F52, 0x0F51, 0x0FB7, 0,
2866     1, 0x0F57, 0x0F56, 0x0FB7, 0,
2867     1, 0x0F5C, 0x0F5B, 0x0FB7, 0,
2868     1, 0x0F69, 0x0F40, 0x0FB5, 0,
2869     1, 0x0F73, 0x0F71, 0x0F72, 0,
2870     1, 0x0F75, 0x0F71, 0x0F74, 0,
2871     1, 0x0F76, 0x0FB2, 0x0F80, 0,
2872     16, 0x0F77, 0x0FB2, 0x0F81, 0,
2873     1, 0x0F78, 0x0FB3, 0x0F80, 0,
2874     16, 0x0F79, 0x0FB3, 0x0F81, 0,
2875     1, 0x0F81, 0x0F71, 0x0F80, 0,
2876     1, 0x0F93, 0x0F92, 0x0FB7, 0,
2877     1, 0x0F9D, 0x0F9C, 0x0FB7, 0,
2878     1, 0x0FA2, 0x0FA1, 0x0FB7, 0,
2879     1, 0x0FA7, 0x0FA6, 0x0FB7, 0,
2880     1, 0x0FAC, 0x0FAB, 0x0FB7, 0,
2881     1, 0x0FB9, 0x0F90, 0x0FB5, 0,
2882     1, 0x1026, 0x1025, 0x102E, 0,
2883     1, 0x1E00, 0x0041, 0x0325, 0,
2884     1, 0x1E01, 0x0061, 0x0325, 0,
2885     1, 0x1E02, 0x0042, 0x0307, 0,
2886     1, 0x1E03, 0x0062, 0x0307, 0,
2887     1, 0x1E04, 0x0042, 0x0323, 0,
2888     1, 0x1E05, 0x0062, 0x0323, 0,
2889     1, 0x1E06, 0x0042, 0x0331, 0,
2890     1, 0x1E07, 0x0062, 0x0331, 0,
2891     1, 0x1E08, 0x00C7, 0x0301, 0,
2892     1, 0x1E09, 0x00E7, 0x0301, 0,
2893     1, 0x1E0A, 0x0044, 0x0307, 0,
2894     1, 0x1E0B, 0x0064, 0x0307, 0,
2895     1, 0x1E0C, 0x0044, 0x0323, 0,
2896     1, 0x1E0D, 0x0064, 0x0323, 0,
2897     1, 0x1E0E, 0x0044, 0x0331, 0,
2898     1, 0x1E0F, 0x0064, 0x0331, 0,
2899     1, 0x1E10, 0x0044, 0x0327, 0,
2900     1, 0x1E11, 0x0064, 0x0327, 0,
2901     1, 0x1E12, 0x0044, 0x032D, 0,
2902     1, 0x1E13, 0x0064, 0x032D, 0,
2903     1, 0x1E14, 0x0112, 0x0300, 0,
2904     1, 0x1E15, 0x0113, 0x0300, 0,
2905     1, 0x1E16, 0x0112, 0x0301, 0,
2906     1, 0x1E17, 0x0113, 0x0301, 0,
2907     1, 0x1E18, 0x0045, 0x032D, 0,
2908     1, 0x1E19, 0x0065, 0x032D, 0,
2909     1, 0x1E1A, 0x0045, 0x0330, 0,
2910     1, 0x1E1B, 0x0065, 0x0330, 0,
2911     1, 0x1E1C, 0x0228, 0x0306, 0,
2912     1, 0x1E1D, 0x0229, 0x0306, 0,
2913     1, 0x1E1E, 0x0046, 0x0307, 0,
2914     1, 0x1E1F, 0x0066, 0x0307, 0,
2915     1, 0x1E20, 0x0047, 0x0304, 0,
2916     1, 0x1E21, 0x0067, 0x0304, 0,
2917     1, 0x1E22, 0x0048, 0x0307, 0,
2918     1, 0x1E23, 0x0068, 0x0307, 0,
2919     1, 0x1E24, 0x0048, 0x0323, 0,
2920     1, 0x1E25, 0x0068, 0x0323, 0,
2921     1, 0x1E26, 0x0048, 0x0308, 0,
2922     1, 0x1E27, 0x0068, 0x0308, 0,
2923     1, 0x1E28, 0x0048, 0x0327, 0,
2924     1, 0x1E29, 0x0068, 0x0327, 0,
2925     1, 0x1E2A, 0x0048, 0x032E, 0,
2926     1, 0x1E2B, 0x0068, 0x032E, 0,
2927     1, 0x1E2C, 0x0049, 0x0330, 0,
2928     1, 0x1E2D, 0x0069, 0x0330, 0,
2929     1, 0x1E2E, 0x00CF, 0x0301, 0,
2930     1, 0x1E2F, 0x00EF, 0x0301, 0,
2931     1, 0x1E30, 0x004B, 0x0301, 0,
2932     1, 0x1E31, 0x006B, 0x0301, 0,
2933     1, 0x1E32, 0x004B, 0x0323, 0,
2934     1, 0x1E33, 0x006B, 0x0323, 0,
2935     1, 0x1E34, 0x004B, 0x0331, 0,
2936     1, 0x1E35, 0x006B, 0x0331, 0,
2937     1, 0x1E36, 0x004C, 0x0323, 0,
2938     1, 0x1E37, 0x006C, 0x0323, 0,
2939     1, 0x1E38, 0x1E36, 0x0304, 0,
2940     1, 0x1E39, 0x1E37, 0x0304, 0,
2941     1, 0x1E3A, 0x004C, 0x0331, 0,
2942     1, 0x1E3B, 0x006C, 0x0331, 0,
2943     1, 0x1E3C, 0x004C, 0x032D, 0,
2944     1, 0x1E3D, 0x006C, 0x032D, 0,
2945     1, 0x1E3E, 0x004D, 0x0301, 0,
2946     1, 0x1E3F, 0x006D, 0x0301, 0,
2947     1, 0x1E40, 0x004D, 0x0307, 0,
2948     1, 0x1E41, 0x006D, 0x0307, 0,
2949     1, 0x1E42, 0x004D, 0x0323, 0,
2950     1, 0x1E43, 0x006D, 0x0323, 0,
2951     1, 0x1E44, 0x004E, 0x0307, 0,
2952     1, 0x1E45, 0x006E, 0x0307, 0,
2953     1, 0x1E46, 0x004E, 0x0323, 0,
2954     1, 0x1E47, 0x006E, 0x0323, 0,
2955     1, 0x1E48, 0x004E, 0x0331, 0,
2956     1, 0x1E49, 0x006E, 0x0331, 0,
2957     1, 0x1E4A, 0x004E, 0x032D, 0,
2958     1, 0x1E4B, 0x006E, 0x032D, 0,
2959     1, 0x1E4C, 0x00D5, 0x0301, 0,
2960     1, 0x1E4D, 0x00F5, 0x0301, 0,
2961     1, 0x1E4E, 0x00D5, 0x0308, 0,
2962     1, 0x1E4F, 0x00F5, 0x0308, 0,
2963     1, 0x1E50, 0x014C, 0x0300, 0,
2964     1, 0x1E51, 0x014D, 0x0300, 0,
2965     1, 0x1E52, 0x014C, 0x0301, 0,
2966     1, 0x1E53, 0x014D, 0x0301, 0,
2967     1, 0x1E54, 0x0050, 0x0301, 0,
2968     1, 0x1E55, 0x0070, 0x0301, 0,
2969     1, 0x1E56, 0x0050, 0x0307, 0,
2970     1, 0x1E57, 0x0070, 0x0307, 0,
2971     1, 0x1E58, 0x0052, 0x0307, 0,
2972     1, 0x1E59, 0x0072, 0x0307, 0,
2973     1, 0x1E5A, 0x0052, 0x0323, 0,
2974     1, 0x1E5B, 0x0072, 0x0323, 0,
2975     1, 0x1E5C, 0x1E5A, 0x0304, 0,
2976     1, 0x1E5D, 0x1E5B, 0x0304, 0,
2977     1, 0x1E5E, 0x0052, 0x0331, 0,
2978     1, 0x1E5F, 0x0072, 0x0331, 0,
2979     1, 0x1E60, 0x0053, 0x0307, 0,
2980     1, 0x1E61, 0x0073, 0x0307, 0,
2981     1, 0x1E62, 0x0053, 0x0323, 0,
2982     1, 0x1E63, 0x0073, 0x0323, 0,
2983     1, 0x1E64, 0x015A, 0x0307, 0,
2984     1, 0x1E65, 0x015B, 0x0307, 0,
2985     1, 0x1E66, 0x0160, 0x0307, 0,
2986     1, 0x1E67, 0x0161, 0x0307, 0,
2987     1, 0x1E68, 0x1E62, 0x0307, 0,
2988     1, 0x1E69, 0x1E63, 0x0307, 0,
2989     1, 0x1E6A, 0x0054, 0x0307, 0,
2990     1, 0x1E6B, 0x0074, 0x0307, 0,
2991     1, 0x1E6C, 0x0054, 0x0323, 0,
2992     1, 0x1E6D, 0x0074, 0x0323, 0,
2993     1, 0x1E6E, 0x0054, 0x0331, 0,
2994     1, 0x1E6F, 0x0074, 0x0331, 0,
2995     1, 0x1E70, 0x0054, 0x032D, 0,
2996     1, 0x1E71, 0x0074, 0x032D, 0,
2997     1, 0x1E72, 0x0055, 0x0324, 0,
2998     1, 0x1E73, 0x0075, 0x0324, 0,
2999     1, 0x1E74, 0x0055, 0x0330, 0,
3000     1, 0x1E75, 0x0075, 0x0330, 0,
3001     1, 0x1E76, 0x0055, 0x032D, 0,
3002     1, 0x1E77, 0x0075, 0x032D, 0,
3003     1, 0x1E78, 0x0168, 0x0301, 0,
3004     1, 0x1E79, 0x0169, 0x0301, 0,
3005     1, 0x1E7A, 0x016A, 0x0308, 0,
3006     1, 0x1E7B, 0x016B, 0x0308, 0,
3007     1, 0x1E7C, 0x0056, 0x0303, 0,
3008     1, 0x1E7D, 0x0076, 0x0303, 0,
3009     1, 0x1E7E, 0x0056, 0x0323, 0,
3010     1, 0x1E7F, 0x0076, 0x0323, 0,
3011     1, 0x1E80, 0x0057, 0x0300, 0,
3012     1, 0x1E81, 0x0077, 0x0300, 0,
3013     1, 0x1E82, 0x0057, 0x0301, 0,
3014     1, 0x1E83, 0x0077, 0x0301, 0,
3015     1, 0x1E84, 0x0057, 0x0308, 0,
3016     1, 0x1E85, 0x0077, 0x0308, 0,
3017     1, 0x1E86, 0x0057, 0x0307, 0,
3018     1, 0x1E87, 0x0077, 0x0307, 0,
3019     1, 0x1E88, 0x0057, 0x0323, 0,
3020     1, 0x1E89, 0x0077, 0x0323, 0,
3021     1, 0x1E8A, 0x0058, 0x0307, 0,
3022     1, 0x1E8B, 0x0078, 0x0307, 0,
3023     1, 0x1E8C, 0x0058, 0x0308, 0,
3024     1, 0x1E8D, 0x0078, 0x0308, 0,
3025     1, 0x1E8E, 0x0059, 0x0307, 0,
3026     1, 0x1E8F, 0x0079, 0x0307, 0,
3027     1, 0x1E90, 0x005A, 0x0302, 0,
3028     1, 0x1E91, 0x007A, 0x0302, 0,
3029     1, 0x1E92, 0x005A, 0x0323, 0,
3030     1, 0x1E93, 0x007A, 0x0323, 0,
3031     1, 0x1E94, 0x005A, 0x0331, 0,
3032     1, 0x1E95, 0x007A, 0x0331, 0,
3033     1, 0x1E96, 0x0068, 0x0331, 0,
3034     1, 0x1E97, 0x0074, 0x0308, 0,
3035     1, 0x1E98, 0x0077, 0x030A, 0,
3036     1, 0x1E99, 0x0079, 0x030A, 0,
3037     16, 0x1E9A, 0x0061, 0x02BE, 0,
3038     1, 0x1E9B, 0x017F, 0x0307, 0,
3039     1, 0x1EA0, 0x0041, 0x0323, 0,
3040     1, 0x1EA1, 0x0061, 0x0323, 0,
3041     1, 0x1EA2, 0x0041, 0x0309, 0,
3042     1, 0x1EA3, 0x0061, 0x0309, 0,
3043     1, 0x1EA4, 0x00C2, 0x0301, 0,
3044     1, 0x1EA5, 0x00E2, 0x0301, 0,
3045     1, 0x1EA6, 0x00C2, 0x0300, 0,
3046     1, 0x1EA7, 0x00E2, 0x0300, 0,
3047     1, 0x1EA8, 0x00C2, 0x0309, 0,
3048     1, 0x1EA9, 0x00E2, 0x0309, 0,
3049     1, 0x1EAA, 0x00C2, 0x0303, 0,
3050     1, 0x1EAB, 0x00E2, 0x0303, 0,
3051     1, 0x1EAC, 0x1EA0, 0x0302, 0,
3052     1, 0x1EAD, 0x1EA1, 0x0302, 0,
3053     1, 0x1EAE, 0x0102, 0x0301, 0,
3054     1, 0x1EAF, 0x0103, 0x0301, 0,
3055     1, 0x1EB0, 0x0102, 0x0300, 0,
3056     1, 0x1EB1, 0x0103, 0x0300, 0,
3057     1, 0x1EB2, 0x0102, 0x0309, 0,
3058     1, 0x1EB3, 0x0103, 0x0309, 0,
3059     1, 0x1EB4, 0x0102, 0x0303, 0,
3060     1, 0x1EB5, 0x0103, 0x0303, 0,
3061     1, 0x1EB6, 0x1EA0, 0x0306, 0,
3062     1, 0x1EB7, 0x1EA1, 0x0306, 0,
3063     1, 0x1EB8, 0x0045, 0x0323, 0,
3064     1, 0x1EB9, 0x0065, 0x0323, 0,
3065     1, 0x1EBA, 0x0045, 0x0309, 0,
3066     1, 0x1EBB, 0x0065, 0x0309, 0,
3067     1, 0x1EBC, 0x0045, 0x0303, 0,
3068     1, 0x1EBD, 0x0065, 0x0303, 0,
3069     1, 0x1EBE, 0x00CA, 0x0301, 0,
3070     1, 0x1EBF, 0x00EA, 0x0301, 0,
3071     1, 0x1EC0, 0x00CA, 0x0300, 0,
3072     1, 0x1EC1, 0x00EA, 0x0300, 0,
3073     1, 0x1EC2, 0x00CA, 0x0309, 0,
3074     1, 0x1EC3, 0x00EA, 0x0309, 0,
3075     1, 0x1EC4, 0x00CA, 0x0303, 0,
3076     1, 0x1EC5, 0x00EA, 0x0303, 0,
3077     1, 0x1EC6, 0x1EB8, 0x0302, 0,
3078     1, 0x1EC7, 0x1EB9, 0x0302, 0,
3079     1, 0x1EC8, 0x0049, 0x0309, 0,
3080     1, 0x1EC9, 0x0069, 0x0309, 0,
3081     1, 0x1ECA, 0x0049, 0x0323, 0,
3082     1, 0x1ECB, 0x0069, 0x0323, 0,
3083     1, 0x1ECC, 0x004F, 0x0323, 0,
3084     1, 0x1ECD, 0x006F, 0x0323, 0,
3085     1, 0x1ECE, 0x004F, 0x0309, 0,
3086     1, 0x1ECF, 0x006F, 0x0309, 0,
3087     1, 0x1ED0, 0x00D4, 0x0301, 0,
3088     1, 0x1ED1, 0x00F4, 0x0301, 0,
3089     1, 0x1ED2, 0x00D4, 0x0300, 0,
3090     1, 0x1ED3, 0x00F4, 0x0300, 0,
3091     1, 0x1ED4, 0x00D4, 0x0309, 0,
3092     1, 0x1ED5, 0x00F4, 0x0309, 0,
3093     1, 0x1ED6, 0x00D4, 0x0303, 0,
3094     1, 0x1ED7, 0x00F4, 0x0303, 0,
3095     1, 0x1ED8, 0x1ECC, 0x0302, 0,
3096     1, 0x1ED9, 0x1ECD, 0x0302, 0,
3097     1, 0x1EDA, 0x01A0, 0x0301, 0,
3098     1, 0x1EDB, 0x01A1, 0x0301, 0,
3099     1, 0x1EDC, 0x01A0, 0x0300, 0,
3100     1, 0x1EDD, 0x01A1, 0x0300, 0,
3101     1, 0x1EDE, 0x01A0, 0x0309, 0,
3102     1, 0x1EDF, 0x01A1, 0x0309, 0,
3103     1, 0x1EE0, 0x01A0, 0x0303, 0,
3104     1, 0x1EE1, 0x01A1, 0x0303, 0,
3105     1, 0x1EE2, 0x01A0, 0x0323, 0,
3106     1, 0x1EE3, 0x01A1, 0x0323, 0,
3107     1, 0x1EE4, 0x0055, 0x0323, 0,
3108     1, 0x1EE5, 0x0075, 0x0323, 0,
3109     1, 0x1EE6, 0x0055, 0x0309, 0,
3110     1, 0x1EE7, 0x0075, 0x0309, 0,
3111     1, 0x1EE8, 0x01AF, 0x0301, 0,
3112     1, 0x1EE9, 0x01B0, 0x0301, 0,
3113     1, 0x1EEA, 0x01AF, 0x0300, 0,
3114     1, 0x1EEB, 0x01B0, 0x0300, 0,
3115     1, 0x1EEC, 0x01AF, 0x0309, 0,
3116     1, 0x1EED, 0x01B0, 0x0309, 0,
3117     1, 0x1EEE, 0x01AF, 0x0303, 0,
3118     1, 0x1EEF, 0x01B0, 0x0303, 0,
3119     1, 0x1EF0, 0x01AF, 0x0323, 0,
3120     1, 0x1EF1, 0x01B0, 0x0323, 0,
3121     1, 0x1EF2, 0x0059, 0x0300, 0,
3122     1, 0x1EF3, 0x0079, 0x0300, 0,
3123     1, 0x1EF4, 0x0059, 0x0323, 0,
3124     1, 0x1EF5, 0x0079, 0x0323, 0,
3125     1, 0x1EF6, 0x0059, 0x0309, 0,
3126     1, 0x1EF7, 0x0079, 0x0309, 0,
3127     1, 0x1EF8, 0x0059, 0x0303, 0,
3128     1, 0x1EF9, 0x0079, 0x0303, 0,
3129     1, 0x1F00, 0x03B1, 0x0313, 0,
3130     1, 0x1F01, 0x03B1, 0x0314, 0,
3131     1, 0x1F02, 0x1F00, 0x0300, 0,
3132     1, 0x1F03, 0x1F01, 0x0300, 0,
3133     1, 0x1F04, 0x1F00, 0x0301, 0,
3134     1, 0x1F05, 0x1F01, 0x0301, 0,
3135     1, 0x1F06, 0x1F00, 0x0342, 0,
3136     1, 0x1F07, 0x1F01, 0x0342, 0,
3137     1, 0x1F08, 0x0391, 0x0313, 0,
3138     1, 0x1F09, 0x0391, 0x0314, 0,
3139     1, 0x1F0A, 0x1F08, 0x0300, 0,
3140     1, 0x1F0B, 0x1F09, 0x0300, 0,
3141     1, 0x1F0C, 0x1F08, 0x0301, 0,
3142     1, 0x1F0D, 0x1F09, 0x0301, 0,
3143     1, 0x1F0E, 0x1F08, 0x0342, 0,
3144     1, 0x1F0F, 0x1F09, 0x0342, 0,
3145     1, 0x1F10, 0x03B5, 0x0313, 0,
3146     1, 0x1F11, 0x03B5, 0x0314, 0,
3147     1, 0x1F12, 0x1F10, 0x0300, 0,
3148     1, 0x1F13, 0x1F11, 0x0300, 0,
3149     1, 0x1F14, 0x1F10, 0x0301, 0,
3150     1, 0x1F15, 0x1F11, 0x0301, 0,
3151     1, 0x1F18, 0x0395, 0x0313, 0,
3152     1, 0x1F19, 0x0395, 0x0314, 0,
3153     1, 0x1F1A, 0x1F18, 0x0300, 0,
3154     1, 0x1F1B, 0x1F19, 0x0300, 0,
3155     1, 0x1F1C, 0x1F18, 0x0301, 0,
3156     1, 0x1F1D, 0x1F19, 0x0301, 0,
3157     1, 0x1F20, 0x03B7, 0x0313, 0,
3158     1, 0x1F21, 0x03B7, 0x0314, 0,
3159     1, 0x1F22, 0x1F20, 0x0300, 0,
3160     1, 0x1F23, 0x1F21, 0x0300, 0,
3161     1, 0x1F24, 0x1F20, 0x0301, 0,
3162     1, 0x1F25, 0x1F21, 0x0301, 0,
3163     1, 0x1F26, 0x1F20, 0x0342, 0,
3164     1, 0x1F27, 0x1F21, 0x0342, 0,
3165     1, 0x1F28, 0x0397, 0x0313, 0,
3166     1, 0x1F29, 0x0397, 0x0314, 0,
3167     1, 0x1F2A, 0x1F28, 0x0300, 0,
3168     1, 0x1F2B, 0x1F29, 0x0300, 0,
3169     1, 0x1F2C, 0x1F28, 0x0301, 0,
3170     1, 0x1F2D, 0x1F29, 0x0301, 0,
3171     1, 0x1F2E, 0x1F28, 0x0342, 0,
3172     1, 0x1F2F, 0x1F29, 0x0342, 0,
3173     1, 0x1F30, 0x03B9, 0x0313, 0,
3174     1, 0x1F31, 0x03B9, 0x0314, 0,
3175     1, 0x1F32, 0x1F30, 0x0300, 0,
3176     1, 0x1F33, 0x1F31, 0x0300, 0,
3177     1, 0x1F34, 0x1F30, 0x0301, 0,
3178     1, 0x1F35, 0x1F31, 0x0301, 0,
3179     1, 0x1F36, 0x1F30, 0x0342, 0,
3180     1, 0x1F37, 0x1F31, 0x0342, 0,
3181     1, 0x1F38, 0x0399, 0x0313, 0,
3182     1, 0x1F39, 0x0399, 0x0314, 0,
3183     1, 0x1F3A, 0x1F38, 0x0300, 0,
3184     1, 0x1F3B, 0x1F39, 0x0300, 0,
3185     1, 0x1F3C, 0x1F38, 0x0301, 0,
3186     1, 0x1F3D, 0x1F39, 0x0301, 0,
3187     1, 0x1F3E, 0x1F38, 0x0342, 0,
3188     1, 0x1F3F, 0x1F39, 0x0342, 0,
3189     1, 0x1F40, 0x03BF, 0x0313, 0,
3190     1, 0x1F41, 0x03BF, 0x0314, 0,
3191     1, 0x1F42, 0x1F40, 0x0300, 0,
3192     1, 0x1F43, 0x1F41, 0x0300, 0,
3193     1, 0x1F44, 0x1F40, 0x0301, 0,
3194     1, 0x1F45, 0x1F41, 0x0301, 0,
3195     1, 0x1F48, 0x039F, 0x0313, 0,
3196     1, 0x1F49, 0x039F, 0x0314, 0,
3197     1, 0x1F4A, 0x1F48, 0x0300, 0,
3198     1, 0x1F4B, 0x1F49, 0x0300, 0,
3199     1, 0x1F4C, 0x1F48, 0x0301, 0,
3200     1, 0x1F4D, 0x1F49, 0x0301, 0,
3201     1, 0x1F50, 0x03C5, 0x0313, 0,
3202     1, 0x1F51, 0x03C5, 0x0314, 0,
3203     1, 0x1F52, 0x1F50, 0x0300, 0,
3204     1, 0x1F53, 0x1F51, 0x0300, 0,
3205     1, 0x1F54, 0x1F50, 0x0301, 0,
3206     1, 0x1F55, 0x1F51, 0x0301, 0,
3207     1, 0x1F56, 0x1F50, 0x0342, 0,
3208     1, 0x1F57, 0x1F51, 0x0342, 0,
3209     1, 0x1F59, 0x03A5, 0x0314, 0,
3210     1, 0x1F5B, 0x1F59, 0x0300, 0,
3211     1, 0x1F5D, 0x1F59, 0x0301, 0,
3212     1, 0x1F5F, 0x1F59, 0x0342, 0,
3213     1, 0x1F60, 0x03C9, 0x0313, 0,
3214     1, 0x1F61, 0x03C9, 0x0314, 0,
3215     1, 0x1F62, 0x1F60, 0x0300, 0,
3216     1, 0x1F63, 0x1F61, 0x0300, 0,
3217     1, 0x1F64, 0x1F60, 0x0301, 0,
3218     1, 0x1F65, 0x1F61, 0x0301, 0,
3219     1, 0x1F66, 0x1F60, 0x0342, 0,
3220     1, 0x1F67, 0x1F61, 0x0342, 0,
3221     1, 0x1F68, 0x03A9, 0x0313, 0,
3222     1, 0x1F69, 0x03A9, 0x0314, 0,
3223     1, 0x1F6A, 0x1F68, 0x0300, 0,
3224     1, 0x1F6B, 0x1F69, 0x0300, 0,
3225     1, 0x1F6C, 0x1F68, 0x0301, 0,
3226     1, 0x1F6D, 0x1F69, 0x0301, 0,
3227     1, 0x1F6E, 0x1F68, 0x0342, 0,
3228     1, 0x1F6F, 0x1F69, 0x0342, 0,
3229     1, 0x1F70, 0x03B1, 0x0300, 0,
3230     1, 0x1F71, 0x03AC, 0,
3231     1, 0x1F72, 0x03B5, 0x0300, 0,
3232     1, 0x1F73, 0x03AD, 0,
3233     1, 0x1F74, 0x03B7, 0x0300, 0,
3234     1, 0x1F75, 0x03AE, 0,
3235     1, 0x1F76, 0x03B9, 0x0300, 0,
3236     1, 0x1F77, 0x03AF, 0,
3237     1, 0x1F78, 0x03BF, 0x0300, 0,
3238     1, 0x1F79, 0x03CC, 0,
3239     1, 0x1F7A, 0x03C5, 0x0300, 0,
3240     1, 0x1F7B, 0x03CD, 0,
3241     1, 0x1F7C, 0x03C9, 0x0300, 0,
3242     1, 0x1F7D, 0x03CE, 0,
3243     1, 0x1F80, 0x1F00, 0x0345, 0,
3244     1, 0x1F81, 0x1F01, 0x0345, 0,
3245     1, 0x1F82, 0x1F02, 0x0345, 0,
3246     1, 0x1F83, 0x1F03, 0x0345, 0,
3247     1, 0x1F84, 0x1F04, 0x0345, 0,
3248     1, 0x1F85, 0x1F05, 0x0345, 0,
3249     1, 0x1F86, 0x1F06, 0x0345, 0,
3250     1, 0x1F87, 0x1F07, 0x0345, 0,
3251     1, 0x1F88, 0x1F08, 0x0345, 0,
3252     1, 0x1F89, 0x1F09, 0x0345, 0,
3253     1, 0x1F8A, 0x1F0A, 0x0345, 0,
3254     1, 0x1F8B, 0x1F0B, 0x0345, 0,
3255     1, 0x1F8C, 0x1F0C, 0x0345, 0,
3256     1, 0x1F8D, 0x1F0D, 0x0345, 0,
3257     1, 0x1F8E, 0x1F0E, 0x0345, 0,
3258     1, 0x1F8F, 0x1F0F, 0x0345, 0,
3259     1, 0x1F90, 0x1F20, 0x0345, 0,
3260     1, 0x1F91, 0x1F21, 0x0345, 0,
3261     1, 0x1F92, 0x1F22, 0x0345, 0,
3262     1, 0x1F93, 0x1F23, 0x0345, 0,
3263     1, 0x1F94, 0x1F24, 0x0345, 0,
3264     1, 0x1F95, 0x1F25, 0x0345, 0,
3265     1, 0x1F96, 0x1F26, 0x0345, 0,
3266     1, 0x1F97, 0x1F27, 0x0345, 0,
3267     1, 0x1F98, 0x1F28, 0x0345, 0,
3268     1, 0x1F99, 0x1F29, 0x0345, 0,
3269     1, 0x1F9A, 0x1F2A, 0x0345, 0,
3270     1, 0x1F9B, 0x1F2B, 0x0345, 0,
3271     1, 0x1F9C, 0x1F2C, 0x0345, 0,
3272     1, 0x1F9D, 0x1F2D, 0x0345, 0,
3273     1, 0x1F9E, 0x1F2E, 0x0345, 0,
3274     1, 0x1F9F, 0x1F2F, 0x0345, 0,
3275     1, 0x1FA0, 0x1F60, 0x0345, 0,
3276     1, 0x1FA1, 0x1F61, 0x0345, 0,
3277     1, 0x1FA2, 0x1F62, 0x0345, 0,
3278     1, 0x1FA3, 0x1F63, 0x0345, 0,
3279     1, 0x1FA4, 0x1F64, 0x0345, 0,
3280     1, 0x1FA5, 0x1F65, 0x0345, 0,
3281     1, 0x1FA6, 0x1F66, 0x0345, 0,
3282     1, 0x1FA7, 0x1F67, 0x0345, 0,
3283     1, 0x1FA8, 0x1F68, 0x0345, 0,
3284     1, 0x1FA9, 0x1F69, 0x0345, 0,
3285     1, 0x1FAA, 0x1F6A, 0x0345, 0,
3286     1, 0x1FAB, 0x1F6B, 0x0345, 0,
3287     1, 0x1FAC, 0x1F6C, 0x0345, 0,
3288     1, 0x1FAD, 0x1F6D, 0x0345, 0,
3289     1, 0x1FAE, 0x1F6E, 0x0345, 0,
3290     1, 0x1FAF, 0x1F6F, 0x0345, 0,
3291     1, 0x1FB0, 0x03B1, 0x0306, 0,
3292     1, 0x1FB1, 0x03B1, 0x0304, 0,
3293     1, 0x1FB2, 0x1F70, 0x0345, 0,
3294     1, 0x1FB3, 0x03B1, 0x0345, 0,
3295     1, 0x1FB4, 0x03AC, 0x0345, 0,
3296     1, 0x1FB6, 0x03B1, 0x0342, 0,
3297     1, 0x1FB7, 0x1FB6, 0x0345, 0,
3298     1, 0x1FB8, 0x0391, 0x0306, 0,
3299     1, 0x1FB9, 0x0391, 0x0304, 0,
3300     1, 0x1FBA, 0x0391, 0x0300, 0,
3301     1, 0x1FBB, 0x0386, 0,
3302     1, 0x1FBC, 0x0391, 0x0345, 0,
3303     16, 0x1FBD, 0x0020, 0x0313, 0,
3304     1, 0x1FBE, 0x03B9, 0,
3305     16, 0x1FBF, 0x0020, 0x0313, 0,
3306     16, 0x1FC0, 0x0020, 0x0342, 0,
3307     1, 0x1FC1, 0x00A8, 0x0342, 0,
3308     1, 0x1FC2, 0x1F74, 0x0345, 0,
3309     1, 0x1FC3, 0x03B7, 0x0345, 0,
3310     1, 0x1FC4, 0x03AE, 0x0345, 0,
3311     1, 0x1FC6, 0x03B7, 0x0342, 0,
3312     1, 0x1FC7, 0x1FC6, 0x0345, 0,
3313     1, 0x1FC8, 0x0395, 0x0300, 0,
3314     1, 0x1FC9, 0x0388, 0,
3315     1, 0x1FCA, 0x0397, 0x0300, 0,
3316     1, 0x1FCB, 0x0389, 0,
3317     1, 0x1FCC, 0x0397, 0x0345, 0,
3318     1, 0x1FCD, 0x1FBF, 0x0300, 0,
3319     1, 0x1FCE, 0x1FBF, 0x0301, 0,
3320     1, 0x1FCF, 0x1FBF, 0x0342, 0,
3321     1, 0x1FD0, 0x03B9, 0x0306, 0,
3322     1, 0x1FD1, 0x03B9, 0x0304, 0,
3323     1, 0x1FD2, 0x03CA, 0x0300, 0,
3324     1, 0x1FD3, 0x0390, 0,
3325     1, 0x1FD6, 0x03B9, 0x0342, 0,
3326     1, 0x1FD7, 0x03CA, 0x0342, 0,
3327     1, 0x1FD8, 0x0399, 0x0306, 0,
3328     1, 0x1FD9, 0x0399, 0x0304, 0,
3329     1, 0x1FDA, 0x0399, 0x0300, 0,
3330     1, 0x1FDB, 0x038A, 0,
3331     1, 0x1FDD, 0x1FFE, 0x0300, 0,
3332     1, 0x1FDE, 0x1FFE, 0x0301, 0,
3333     1, 0x1FDF, 0x1FFE, 0x0342, 0,
3334     1, 0x1FE0, 0x03C5, 0x0306, 0,
3335     1, 0x1FE1, 0x03C5, 0x0304, 0,
3336     1, 0x1FE2, 0x03CB, 0x0300, 0,
3337     1, 0x1FE3, 0x03B0, 0,
3338     1, 0x1FE4, 0x03C1, 0x0313, 0,
3339     1, 0x1FE5, 0x03C1, 0x0314, 0,
3340     1, 0x1FE6, 0x03C5, 0x0342, 0,
3341     1, 0x1FE7, 0x03CB, 0x0342, 0,
3342     1, 0x1FE8, 0x03A5, 0x0306, 0,
3343     1, 0x1FE9, 0x03A5, 0x0304, 0,
3344     1, 0x1FEA, 0x03A5, 0x0300, 0,
3345     1, 0x1FEB, 0x038E, 0,
3346     1, 0x1FEC, 0x03A1, 0x0314, 0,
3347     1, 0x1FED, 0x00A8, 0x0300, 0,
3348     1, 0x1FEE, 0x0385, 0,
3349     1, 0x1FEF, 0x0060, 0,
3350     1, 0x1FF2, 0x1F7C, 0x0345, 0,
3351     1, 0x1FF3, 0x03C9, 0x0345, 0,
3352     1, 0x1FF4, 0x03CE, 0x0345, 0,
3353     1, 0x1FF6, 0x03C9, 0x0342, 0,
3354     1, 0x1FF7, 0x1FF6, 0x0345, 0,
3355     1, 0x1FF8, 0x039F, 0x0300, 0,
3356     1, 0x1FF9, 0x038C, 0,
3357     1, 0x1FFA, 0x03A9, 0x0300, 0,
3358     1, 0x1FFB, 0x038F, 0,
3359     1, 0x1FFC, 0x03A9, 0x0345, 0,
3360     1, 0x1FFD, 0x00B4, 0,
3361     16, 0x1FFE, 0x0020, 0x0314, 0,
3362     1, 0x2000, 0x2002, 0,
3363     1, 0x2001, 0x2003, 0,
3364     16, 0x2002, 0x0020, 0,
3365     16, 0x2003, 0x0020, 0,
3366     16, 0x2004, 0x0020, 0,
3367     16, 0x2005, 0x0020, 0,
3368     16, 0x2006, 0x0020, 0,
3369     3, 0x2007, 0x0020, 0,
3370     16, 0x2008, 0x0020, 0,
3371     16, 0x2009, 0x0020, 0,
3372     16, 0x200A, 0x0020, 0,
3373     3, 0x2011, 0x2010, 0,
3374     16, 0x2017, 0x0020, 0x0333, 0,
3375     16, 0x2024, 0x002E, 0,
3376     16, 0x2025, 0x002E, 0x002E, 0,
3377     16, 0x2026, 0x002E, 0x002E, 0x002E, 0,
3378     3, 0x202F, 0x0020, 0,
3379     16, 0x2033, 0x2032, 0x2032, 0,
3380     16, 0x2034, 0x2032, 0x2032, 0x2032, 0,
3381     16, 0x2036, 0x2035, 0x2035, 0,
3382     16, 0x2037, 0x2035, 0x2035, 0x2035, 0,
3383     16, 0x203C, 0x0021, 0x0021, 0,
3384     16, 0x203E, 0x0020, 0x0305, 0,
3385     16, 0x2048, 0x003F, 0x0021, 0,
3386     16, 0x2049, 0x0021, 0x003F, 0,
3387     9, 0x2070, 0x0030, 0,
3388     9, 0x2074, 0x0034, 0,
3389     9, 0x2075, 0x0035, 0,
3390     9, 0x2076, 0x0036, 0,
3391     9, 0x2077, 0x0037, 0,
3392     9, 0x2078, 0x0038, 0,
3393     9, 0x2079, 0x0039, 0,
3394     9, 0x207A, 0x002B, 0,
3395     9, 0x207B, 0x2212, 0,
3396     9, 0x207C, 0x003D, 0,
3397     9, 0x207D, 0x0028, 0,
3398     9, 0x207E, 0x0029, 0,
3399     9, 0x207F, 0x006E, 0,
3400     10, 0x2080, 0x0030, 0,
3401     10, 0x2081, 0x0031, 0,
3402     10, 0x2082, 0x0032, 0,
3403     10, 0x2083, 0x0033, 0,
3404     10, 0x2084, 0x0034, 0,
3405     10, 0x2085, 0x0035, 0,
3406     10, 0x2086, 0x0036, 0,
3407     10, 0x2087, 0x0037, 0,
3408     10, 0x2088, 0x0038, 0,
3409     10, 0x2089, 0x0039, 0,
3410     10, 0x208A, 0x002B, 0,
3411     10, 0x208B, 0x2212, 0,
3412     10, 0x208C, 0x003D, 0,
3413     10, 0x208D, 0x0028, 0,
3414     10, 0x208E, 0x0029, 0,
3415     16, 0x20A8, 0x0052, 0x0073, 0,
3416     16, 0x2100, 0x0061, 0x002F, 0x0063, 0,
3417     16, 0x2101, 0x0061, 0x002F, 0x0073, 0,
3418     2, 0x2102, 0x0043, 0,
3419     16, 0x2103, 0x00B0, 0x0043, 0,
3420     16, 0x2105, 0x0063, 0x002F, 0x006F, 0,
3421     16, 0x2106, 0x0063, 0x002F, 0x0075, 0,
3422     16, 0x2107, 0x0190, 0,
3423     16, 0x2109, 0x00B0, 0x0046, 0,
3424     2, 0x210A, 0x0067, 0,
3425     2, 0x210B, 0x0048, 0,
3426     2, 0x210C, 0x0048, 0,
3427     2, 0x210D, 0x0048, 0,
3428     2, 0x210E, 0x0068, 0,
3429     2, 0x210F, 0x0127, 0,
3430     2, 0x2110, 0x0049, 0,
3431     2, 0x2111, 0x0049, 0,
3432     2, 0x2112, 0x004C, 0,
3433     2, 0x2113, 0x006C, 0,
3434     2, 0x2115, 0x004E, 0,
3435     16, 0x2116, 0x004E, 0x006F, 0,
3436     2, 0x2119, 0x0050, 0,
3437     2, 0x211A, 0x0051, 0,
3438     2, 0x211B, 0x0052, 0,
3439     2, 0x211C, 0x0052, 0,
3440     2, 0x211D, 0x0052, 0,
3441     9, 0x2120, 0x0053, 0x004D, 0,
3442     16, 0x2121, 0x0054, 0x0045, 0x004C, 0,
3443     9, 0x2122, 0x0054, 0x004D, 0,
3444     2, 0x2124, 0x005A, 0,
3445     1, 0x2126, 0x03A9, 0,
3446     2, 0x2128, 0x005A, 0,
3447     1, 0x212A, 0x004B, 0,
3448     1, 0x212B, 0x00C5, 0,
3449     2, 0x212C, 0x0042, 0,
3450     2, 0x212D, 0x0043, 0,
3451     2, 0x212F, 0x0065, 0,
3452     2, 0x2130, 0x0045, 0,
3453     2, 0x2131, 0x0046, 0,
3454     2, 0x2133, 0x004D, 0,
3455     2, 0x2134, 0x006F, 0,
3456     16, 0x2135, 0x05D0, 0,
3457     16, 0x2136, 0x05D1, 0,
3458     16, 0x2137, 0x05D2, 0,
3459     16, 0x2138, 0x05D3, 0,
3460     2, 0x2139, 0x0069, 0,
3461     17, 0x2153, 0x0031, 0x2044, 0x0033, 0,
3462     17, 0x2154, 0x0032, 0x2044, 0x0033, 0,
3463     17, 0x2155, 0x0031, 0x2044, 0x0035, 0,
3464     17, 0x2156, 0x0032, 0x2044, 0x0035, 0,
3465     17, 0x2157, 0x0033, 0x2044, 0x0035, 0,
3466     17, 0x2158, 0x0034, 0x2044, 0x0035, 0,
3467     17, 0x2159, 0x0031, 0x2044, 0x0036, 0,
3468     17, 0x215A, 0x0035, 0x2044, 0x0036, 0,
3469     17, 0x215B, 0x0031, 0x2044, 0x0038, 0,
3470     17, 0x215C, 0x0033, 0x2044, 0x0038, 0,
3471     17, 0x215D, 0x0035, 0x2044, 0x0038, 0,
3472     17, 0x215E, 0x0037, 0x2044, 0x0038, 0,
3473     17, 0x215F, 0x0031, 0x2044, 0,
3474     16, 0x2160, 0x0049, 0,
3475     16, 0x2161, 0x0049, 0x0049, 0,
3476     16, 0x2162, 0x0049, 0x0049, 0x0049, 0,
3477     16, 0x2163, 0x0049, 0x0056, 0,
3478     16, 0x2164, 0x0056, 0,
3479     16, 0x2165, 0x0056, 0x0049, 0,
3480     16, 0x2166, 0x0056, 0x0049, 0x0049, 0,
3481     16, 0x2167, 0x0056, 0x0049, 0x0049, 0x0049, 0,
3482     16, 0x2168, 0x0049, 0x0058, 0,
3483     16, 0x2169, 0x0058, 0,
3484     16, 0x216A, 0x0058, 0x0049, 0,
3485     16, 0x216B, 0x0058, 0x0049, 0x0049, 0,
3486     16, 0x216C, 0x004C, 0,
3487     16, 0x216D, 0x0043, 0,
3488     16, 0x216E, 0x0044, 0,
3489     16, 0x216F, 0x004D, 0,
3490     16, 0x2170, 0x0069, 0,
3491     16, 0x2171, 0x0069, 0x0069, 0,
3492     16, 0x2172, 0x0069, 0x0069, 0x0069, 0,
3493     16, 0x2173, 0x0069, 0x0076, 0,
3494     16, 0x2174, 0x0076, 0,
3495     16, 0x2175, 0x0076, 0x0069, 0,
3496     16, 0x2176, 0x0076, 0x0069, 0x0069, 0,
3497     16, 0x2177, 0x0076, 0x0069, 0x0069, 0x0069, 0,
3498     16, 0x2178, 0x0069, 0x0078, 0,
3499     16, 0x2179, 0x0078, 0,
3500     16, 0x217A, 0x0078, 0x0069, 0,
3501     16, 0x217B, 0x0078, 0x0069, 0x0069, 0,
3502     16, 0x217C, 0x006C, 0,
3503     16, 0x217D, 0x0063, 0,
3504     16, 0x217E, 0x0064, 0,
3505     16, 0x217F, 0x006D, 0,
3506     1, 0x219A, 0x2190, 0x0338, 0,
3507     1, 0x219B, 0x2192, 0x0338, 0,
3508     1, 0x21AE, 0x2194, 0x0338, 0,
3509     1, 0x21CD, 0x21D0, 0x0338, 0,
3510     1, 0x21CE, 0x21D4, 0x0338, 0,
3511     1, 0x21CF, 0x21D2, 0x0338, 0,
3512     1, 0x2204, 0x2203, 0x0338, 0,
3513     1, 0x2209, 0x2208, 0x0338, 0,
3514     1, 0x220C, 0x220B, 0x0338, 0,
3515     1, 0x2224, 0x2223, 0x0338, 0,
3516     1, 0x2226, 0x2225, 0x0338, 0,
3517     16, 0x222C, 0x222B, 0x222B, 0,
3518     16, 0x222D, 0x222B, 0x222B, 0x222B, 0,
3519     16, 0x222F, 0x222E, 0x222E, 0,
3520     16, 0x2230, 0x222E, 0x222E, 0x222E, 0,
3521     1, 0x2241, 0x223C, 0x0338, 0,
3522     1, 0x2244, 0x2243, 0x0338, 0,
3523     1, 0x2247, 0x2245, 0x0338, 0,
3524     1, 0x2249, 0x2248, 0x0338, 0,
3525     1, 0x2260, 0x003D, 0x0338, 0,
3526     1, 0x2262, 0x2261, 0x0338, 0,
3527     1, 0x226D, 0x224D, 0x0338, 0,
3528     1, 0x226E, 0x003C, 0x0338, 0,
3529     1, 0x226F, 0x003E, 0x0338, 0,
3530     1, 0x2270, 0x2264, 0x0338, 0,
3531     1, 0x2271, 0x2265, 0x0338, 0,
3532     1, 0x2274, 0x2272, 0x0338, 0,
3533     1, 0x2275, 0x2273, 0x0338, 0,
3534     1, 0x2278, 0x2276, 0x0338, 0,
3535     1, 0x2279, 0x2277, 0x0338, 0,
3536     1, 0x2280, 0x227A, 0x0338, 0,
3537     1, 0x2281, 0x227B, 0x0338, 0,
3538     1, 0x2284, 0x2282, 0x0338, 0,
3539     1, 0x2285, 0x2283, 0x0338, 0,
3540     1, 0x2288, 0x2286, 0x0338, 0,
3541     1, 0x2289, 0x2287, 0x0338, 0,
3542     1, 0x22AC, 0x22A2, 0x0338, 0,
3543     1, 0x22AD, 0x22A8, 0x0338, 0,
3544     1, 0x22AE, 0x22A9, 0x0338, 0,
3545     1, 0x22AF, 0x22AB, 0x0338, 0,
3546     1, 0x22E0, 0x227C, 0x0338, 0,
3547     1, 0x22E1, 0x227D, 0x0338, 0,
3548     1, 0x22E2, 0x2291, 0x0338, 0,
3549     1, 0x22E3, 0x2292, 0x0338, 0,
3550     1, 0x22EA, 0x22B2, 0x0338, 0,
3551     1, 0x22EB, 0x22B3, 0x0338, 0,
3552     1, 0x22EC, 0x22B4, 0x0338, 0,
3553     1, 0x22ED, 0x22B5, 0x0338, 0,
3554     1, 0x2329, 0x3008, 0,
3555     1, 0x232A, 0x3009, 0,
3556     8, 0x2460, 0x0031, 0,
3557     8, 0x2461, 0x0032, 0,
3558     8, 0x2462, 0x0033, 0,
3559     8, 0x2463, 0x0034, 0,
3560     8, 0x2464, 0x0035, 0,
3561     8, 0x2465, 0x0036, 0,
3562     8, 0x2466, 0x0037, 0,
3563     8, 0x2467, 0x0038, 0,
3564     8, 0x2468, 0x0039, 0,
3565     8, 0x2469, 0x0031, 0x0030, 0,
3566     8, 0x246A, 0x0031, 0x0031, 0,
3567     8, 0x246B, 0x0031, 0x0032, 0,
3568     8, 0x246C, 0x0031, 0x0033, 0,
3569     8, 0x246D, 0x0031, 0x0034, 0,
3570     8, 0x246E, 0x0031, 0x0035, 0,
3571     8, 0x246F, 0x0031, 0x0036, 0,
3572     8, 0x2470, 0x0031, 0x0037, 0,
3573     8, 0x2471, 0x0031, 0x0038, 0,
3574     8, 0x2472, 0x0031, 0x0039, 0,
3575     8, 0x2473, 0x0032, 0x0030, 0,
3576     16, 0x2474, 0x0028, 0x0031, 0x0029, 0,
3577     16, 0x2475, 0x0028, 0x0032, 0x0029, 0,
3578     16, 0x2476, 0x0028, 0x0033, 0x0029, 0,
3579     16, 0x2477, 0x0028, 0x0034, 0x0029, 0,
3580     16, 0x2478, 0x0028, 0x0035, 0x0029, 0,
3581     16, 0x2479, 0x0028, 0x0036, 0x0029, 0,
3582     16, 0x247A, 0x0028, 0x0037, 0x0029, 0,
3583     16, 0x247B, 0x0028, 0x0038, 0x0029, 0,
3584     16, 0x247C, 0x0028, 0x0039, 0x0029, 0,
3585     16, 0x247D, 0x0028, 0x0031, 0x0030, 0x0029, 0,
3586     16, 0x247E, 0x0028, 0x0031, 0x0031, 0x0029, 0,
3587     16, 0x247F, 0x0028, 0x0031, 0x0032, 0x0029, 0,
3588     16, 0x2480, 0x0028, 0x0031, 0x0033, 0x0029, 0,
3589     16, 0x2481, 0x0028, 0x0031, 0x0034, 0x0029, 0,
3590     16, 0x2482, 0x0028, 0x0031, 0x0035, 0x0029, 0,
3591     16, 0x2483, 0x0028, 0x0031, 0x0036, 0x0029, 0,
3592     16, 0x2484, 0x0028, 0x0031, 0x0037, 0x0029, 0,
3593     16, 0x2485, 0x0028, 0x0031, 0x0038, 0x0029, 0,
3594     16, 0x2486, 0x0028, 0x0031, 0x0039, 0x0029, 0,
3595     16, 0x2487, 0x0028, 0x0032, 0x0030, 0x0029, 0,
3596     16, 0x2488, 0x0031, 0x002E, 0,
3597     16, 0x2489, 0x0032, 0x002E, 0,
3598     16, 0x248A, 0x0033, 0x002E, 0,
3599     16, 0x248B, 0x0034, 0x002E, 0,
3600     16, 0x248C, 0x0035, 0x002E, 0,
3601     16, 0x248D, 0x0036, 0x002E, 0,
3602     16, 0x248E, 0x0037, 0x002E, 0,
3603     16, 0x248F, 0x0038, 0x002E, 0,
3604     16, 0x2490, 0x0039, 0x002E, 0,
3605     16, 0x2491, 0x0031, 0x0030, 0x002E, 0,
3606     16, 0x2492, 0x0031, 0x0031, 0x002E, 0,
3607     16, 0x2493, 0x0031, 0x0032, 0x002E, 0,
3608     16, 0x2494, 0x0031, 0x0033, 0x002E, 0,
3609     16, 0x2495, 0x0031, 0x0034, 0x002E, 0,
3610     16, 0x2496, 0x0031, 0x0035, 0x002E, 0,
3611     16, 0x2497, 0x0031, 0x0036, 0x002E, 0,
3612     16, 0x2498, 0x0031, 0x0037, 0x002E, 0,
3613     16, 0x2499, 0x0031, 0x0038, 0x002E, 0,
3614     16, 0x249A, 0x0031, 0x0039, 0x002E, 0,
3615     16, 0x249B, 0x0032, 0x0030, 0x002E, 0,
3616     16, 0x249C, 0x0028, 0x0061, 0x0029, 0,
3617     16, 0x249D, 0x0028, 0x0062, 0x0029, 0,
3618     16, 0x249E, 0x0028, 0x0063, 0x0029, 0,
3619     16, 0x249F, 0x0028, 0x0064, 0x0029, 0,
3620     16, 0x24A0, 0x0028, 0x0065, 0x0029, 0,
3621     16, 0x24A1, 0x0028, 0x0066, 0x0029, 0,
3622     16, 0x24A2, 0x0028, 0x0067, 0x0029, 0,
3623     16, 0x24A3, 0x0028, 0x0068, 0x0029, 0,
3624     16, 0x24A4, 0x0028, 0x0069, 0x0029, 0,
3625     16, 0x24A5, 0x0028, 0x006A, 0x0029, 0,
3626     16, 0x24A6, 0x0028, 0x006B, 0x0029, 0,
3627     16, 0x24A7, 0x0028, 0x006C, 0x0029, 0,
3628     16, 0x24A8, 0x0028, 0x006D, 0x0029, 0,
3629     16, 0x24A9, 0x0028, 0x006E, 0x0029, 0,
3630     16, 0x24AA, 0x0028, 0x006F, 0x0029, 0,
3631     16, 0x24AB, 0x0028, 0x0070, 0x0029, 0,
3632     16, 0x24AC, 0x0028, 0x0071, 0x0029, 0,
3633     16, 0x24AD, 0x0028, 0x0072, 0x0029, 0,
3634     16, 0x24AE, 0x0028, 0x0073, 0x0029, 0,
3635     16, 0x24AF, 0x0028, 0x0074, 0x0029, 0,
3636     16, 0x24B0, 0x0028, 0x0075, 0x0029, 0,
3637     16, 0x24B1, 0x0028, 0x0076, 0x0029, 0,
3638     16, 0x24B2, 0x0028, 0x0077, 0x0029, 0,
3639     16, 0x24B3, 0x0028, 0x0078, 0x0029, 0,
3640     16, 0x24B4, 0x0028, 0x0079, 0x0029, 0,
3641     16, 0x24B5, 0x0028, 0x007A, 0x0029, 0,
3642     8, 0x24B6, 0x0041, 0,
3643     8, 0x24B7, 0x0042, 0,
3644     8, 0x24B8, 0x0043, 0,
3645     8, 0x24B9, 0x0044, 0,
3646     8, 0x24BA, 0x0045, 0,
3647     8, 0x24BB, 0x0046, 0,
3648     8, 0x24BC, 0x0047, 0,
3649     8, 0x24BD, 0x0048, 0,
3650     8, 0x24BE, 0x0049, 0,
3651     8, 0x24BF, 0x004A, 0,
3652     8, 0x24C0, 0x004B, 0,
3653     8, 0x24C1, 0x004C, 0,
3654     8, 0x24C2, 0x004D, 0,
3655     8, 0x24C3, 0x004E, 0,
3656     8, 0x24C4, 0x004F, 0,
3657     8, 0x24C5, 0x0050, 0,
3658     8, 0x24C6, 0x0051, 0,
3659     8, 0x24C7, 0x0052, 0,
3660     8, 0x24C8, 0x0053, 0,
3661     8, 0x24C9, 0x0054, 0,
3662     8, 0x24CA, 0x0055, 0,
3663     8, 0x24CB, 0x0056, 0,
3664     8, 0x24CC, 0x0057, 0,
3665     8, 0x24CD, 0x0058, 0,
3666     8, 0x24CE, 0x0059, 0,
3667     8, 0x24CF, 0x005A, 0,
3668     8, 0x24D0, 0x0061, 0,
3669     8, 0x24D1, 0x0062, 0,
3670     8, 0x24D2, 0x0063, 0,
3671     8, 0x24D3, 0x0064, 0,
3672     8, 0x24D4, 0x0065, 0,
3673     8, 0x24D5, 0x0066, 0,
3674     8, 0x24D6, 0x0067, 0,
3675     8, 0x24D7, 0x0068, 0,
3676     8, 0x24D8, 0x0069, 0,
3677     8, 0x24D9, 0x006A, 0,
3678     8, 0x24DA, 0x006B, 0,
3679     8, 0x24DB, 0x006C, 0,
3680     8, 0x24DC, 0x006D, 0,
3681     8, 0x24DD, 0x006E, 0,
3682     8, 0x24DE, 0x006F, 0,
3683     8, 0x24DF, 0x0070, 0,
3684     8, 0x24E0, 0x0071, 0,
3685     8, 0x24E1, 0x0072, 0,
3686     8, 0x24E2, 0x0073, 0,
3687     8, 0x24E3, 0x0074, 0,
3688     8, 0x24E4, 0x0075, 0,
3689     8, 0x24E5, 0x0076, 0,
3690     8, 0x24E6, 0x0077, 0,
3691     8, 0x24E7, 0x0078, 0,
3692     8, 0x24E8, 0x0079, 0,
3693     8, 0x24E9, 0x007A, 0,
3694     8, 0x24EA, 0x0030, 0,
3695     16, 0x2E9F, 0x6BCD, 0,
3696     16, 0x2EF3, 0x9F9F, 0,
3697     16, 0x2F00, 0x4E00, 0,
3698     16, 0x2F01, 0x4E28, 0,
3699     16, 0x2F02, 0x4E36, 0,
3700     16, 0x2F03, 0x4E3F, 0,
3701     16, 0x2F04, 0x4E59, 0,
3702     16, 0x2F05, 0x4E85, 0,
3703     16, 0x2F06, 0x4E8C, 0,
3704     16, 0x2F07, 0x4EA0, 0,
3705     16, 0x2F08, 0x4EBA, 0,
3706     16, 0x2F09, 0x513F, 0,
3707     16, 0x2F0A, 0x5165, 0,
3708     16, 0x2F0B, 0x516B, 0,
3709     16, 0x2F0C, 0x5182, 0,
3710     16, 0x2F0D, 0x5196, 0,
3711     16, 0x2F0E, 0x51AB, 0,
3712     16, 0x2F0F, 0x51E0, 0,
3713     16, 0x2F10, 0x51F5, 0,
3714     16, 0x2F11, 0x5200, 0,
3715     16, 0x2F12, 0x529B, 0,
3716     16, 0x2F13, 0x52F9, 0,
3717     16, 0x2F14, 0x5315, 0,
3718     16, 0x2F15, 0x531A, 0,
3719     16, 0x2F16, 0x5338, 0,
3720     16, 0x2F17, 0x5341, 0,
3721     16, 0x2F18, 0x535C, 0,
3722     16, 0x2F19, 0x5369, 0,
3723     16, 0x2F1A, 0x5382, 0,
3724     16, 0x2F1B, 0x53B6, 0,
3725     16, 0x2F1C, 0x53C8, 0,
3726     16, 0x2F1D, 0x53E3, 0,
3727     16, 0x2F1E, 0x56D7, 0,
3728     16, 0x2F1F, 0x571F, 0,
3729     16, 0x2F20, 0x58EB, 0,
3730     16, 0x2F21, 0x5902, 0,
3731     16, 0x2F22, 0x590A, 0,
3732     16, 0x2F23, 0x5915, 0,
3733     16, 0x2F24, 0x5927, 0,
3734     16, 0x2F25, 0x5973, 0,
3735     16, 0x2F26, 0x5B50, 0,
3736     16, 0x2F27, 0x5B80, 0,
3737     16, 0x2F28, 0x5BF8, 0,
3738     16, 0x2F29, 0x5C0F, 0,
3739     16, 0x2F2A, 0x5C22, 0,
3740     16, 0x2F2B, 0x5C38, 0,
3741     16, 0x2F2C, 0x5C6E, 0,
3742     16, 0x2F2D, 0x5C71, 0,
3743     16, 0x2F2E, 0x5DDB, 0,
3744     16, 0x2F2F, 0x5DE5, 0,
3745     16, 0x2F30, 0x5DF1, 0,
3746     16, 0x2F31, 0x5DFE, 0,
3747     16, 0x2F32, 0x5E72, 0,
3748     16, 0x2F33, 0x5E7A, 0,
3749     16, 0x2F34, 0x5E7F, 0,
3750     16, 0x2F35, 0x5EF4, 0,
3751     16, 0x2F36, 0x5EFE, 0,
3752     16, 0x2F37, 0x5F0B, 0,
3753     16, 0x2F38, 0x5F13, 0,
3754     16, 0x2F39, 0x5F50, 0,
3755     16, 0x2F3A, 0x5F61, 0,
3756     16, 0x2F3B, 0x5F73, 0,
3757     16, 0x2F3C, 0x5FC3, 0,
3758     16, 0x2F3D, 0x6208, 0,
3759     16, 0x2F3E, 0x6236, 0,
3760     16, 0x2F3F, 0x624B, 0,
3761     16, 0x2F40, 0x652F, 0,
3762     16, 0x2F41, 0x6534, 0,
3763     16, 0x2F42, 0x6587, 0,
3764     16, 0x2F43, 0x6597, 0,
3765     16, 0x2F44, 0x65A4, 0,
3766     16, 0x2F45, 0x65B9, 0,
3767     16, 0x2F46, 0x65E0, 0,
3768     16, 0x2F47, 0x65E5, 0,
3769     16, 0x2F48, 0x66F0, 0,
3770     16, 0x2F49, 0x6708, 0,
3771     16, 0x2F4A, 0x6728, 0,
3772     16, 0x2F4B, 0x6B20, 0,
3773     16, 0x2F4C, 0x6B62, 0,
3774     16, 0x2F4D, 0x6B79, 0,
3775     16, 0x2F4E, 0x6BB3, 0,
3776     16, 0x2F4F, 0x6BCB, 0,
3777     16, 0x2F50, 0x6BD4, 0,
3778     16, 0x2F51, 0x6BDB, 0,
3779     16, 0x2F52, 0x6C0F, 0,
3780     16, 0x2F53, 0x6C14, 0,
3781     16, 0x2F54, 0x6C34, 0,
3782     16, 0x2F55, 0x706B, 0,
3783     16, 0x2F56, 0x722A, 0,
3784     16, 0x2F57, 0x7236, 0,
3785     16, 0x2F58, 0x723B, 0,
3786     16, 0x2F59, 0x723F, 0,
3787     16, 0x2F5A, 0x7247, 0,
3788     16, 0x2F5B, 0x7259, 0,
3789     16, 0x2F5C, 0x725B, 0,
3790     16, 0x2F5D, 0x72AC, 0,
3791     16, 0x2F5E, 0x7384, 0,
3792     16, 0x2F5F, 0x7389, 0,
3793     16, 0x2F60, 0x74DC, 0,
3794     16, 0x2F61, 0x74E6, 0,
3795     16, 0x2F62, 0x7518, 0,
3796     16, 0x2F63, 0x751F, 0,
3797     16, 0x2F64, 0x7528, 0,
3798     16, 0x2F65, 0x7530, 0,
3799     16, 0x2F66, 0x758B, 0,
3800     16, 0x2F67, 0x7592, 0,
3801     16, 0x2F68, 0x7676, 0,
3802     16, 0x2F69, 0x767D, 0,
3803     16, 0x2F6A, 0x76AE, 0,
3804     16, 0x2F6B, 0x76BF, 0,
3805     16, 0x2F6C, 0x76EE, 0,
3806     16, 0x2F6D, 0x77DB, 0,
3807     16, 0x2F6E, 0x77E2, 0,
3808     16, 0x2F6F, 0x77F3, 0,
3809     16, 0x2F70, 0x793A, 0,
3810     16, 0x2F71, 0x79B8, 0,
3811     16, 0x2F72, 0x79BE, 0,
3812     16, 0x2F73, 0x7A74, 0,
3813     16, 0x2F74, 0x7ACB, 0,
3814     16, 0x2F75, 0x7AF9, 0,
3815     16, 0x2F76, 0x7C73, 0,
3816     16, 0x2F77, 0x7CF8, 0,
3817     16, 0x2F78, 0x7F36, 0,
3818     16, 0x2F79, 0x7F51, 0,
3819     16, 0x2F7A, 0x7F8A, 0,
3820     16, 0x2F7B, 0x7FBD, 0,
3821     16, 0x2F7C, 0x8001, 0,
3822     16, 0x2F7D, 0x800C, 0,
3823     16, 0x2F7E, 0x8012, 0,
3824     16, 0x2F7F, 0x8033, 0,
3825     16, 0x2F80, 0x807F, 0,
3826     16, 0x2F81, 0x8089, 0,
3827     16, 0x2F82, 0x81E3, 0,
3828     16, 0x2F83, 0x81EA, 0,
3829     16, 0x2F84, 0x81F3, 0,
3830     16, 0x2F85, 0x81FC, 0,
3831     16, 0x2F86, 0x820C, 0,
3832     16, 0x2F87, 0x821B, 0,
3833     16, 0x2F88, 0x821F, 0,
3834     16, 0x2F89, 0x826E, 0,
3835     16, 0x2F8A, 0x8272, 0,
3836     16, 0x2F8B, 0x8278, 0,
3837     16, 0x2F8C, 0x864D, 0,
3838     16, 0x2F8D, 0x866B, 0,
3839     16, 0x2F8E, 0x8840, 0,
3840     16, 0x2F8F, 0x884C, 0,
3841     16, 0x2F90, 0x8863, 0,
3842     16, 0x2F91, 0x897E, 0,
3843     16, 0x2F92, 0x898B, 0,
3844     16, 0x2F93, 0x89D2, 0,
3845     16, 0x2F94, 0x8A00, 0,
3846     16, 0x2F95, 0x8C37, 0,
3847     16, 0x2F96, 0x8C46, 0,
3848     16, 0x2F97, 0x8C55, 0,
3849     16, 0x2F98, 0x8C78, 0,
3850     16, 0x2F99, 0x8C9D, 0,
3851     16, 0x2F9A, 0x8D64, 0,
3852     16, 0x2F9B, 0x8D70, 0,
3853     16, 0x2F9C, 0x8DB3, 0,
3854     16, 0x2F9D, 0x8EAB, 0,
3855     16, 0x2F9E, 0x8ECA, 0,
3856     16, 0x2F9F, 0x8F9B, 0,
3857     16, 0x2FA0, 0x8FB0, 0,
3858     16, 0x2FA1, 0x8FB5, 0,
3859     16, 0x2FA2, 0x9091, 0,
3860     16, 0x2FA3, 0x9149, 0,
3861     16, 0x2FA4, 0x91C6, 0,
3862     16, 0x2FA5, 0x91CC, 0,
3863     16, 0x2FA6, 0x91D1, 0,
3864     16, 0x2FA7, 0x9577, 0,
3865     16, 0x2FA8, 0x9580, 0,
3866     16, 0x2FA9, 0x961C, 0,
3867     16, 0x2FAA, 0x96B6, 0,
3868     16, 0x2FAB, 0x96B9, 0,
3869     16, 0x2FAC, 0x96E8, 0,
3870     16, 0x2FAD, 0x9751, 0,
3871     16, 0x2FAE, 0x975E, 0,
3872     16, 0x2FAF, 0x9762, 0,
3873     16, 0x2FB0, 0x9769, 0,
3874     16, 0x2FB1, 0x97CB, 0,
3875     16, 0x2FB2, 0x97ED, 0,
3876     16, 0x2FB3, 0x97F3, 0,
3877     16, 0x2FB4, 0x9801, 0,
3878     16, 0x2FB5, 0x98A8, 0,
3879     16, 0x2FB6, 0x98DB, 0,
3880     16, 0x2FB7, 0x98DF, 0,
3881     16, 0x2FB8, 0x9996, 0,
3882     16, 0x2FB9, 0x9999, 0,
3883     16, 0x2FBA, 0x99AC, 0,
3884     16, 0x2FBB, 0x9AA8, 0,
3885     16, 0x2FBC, 0x9AD8, 0,
3886     16, 0x2FBD, 0x9ADF, 0,
3887     16, 0x2FBE, 0x9B25, 0,
3888     16, 0x2FBF, 0x9B2F, 0,
3889     16, 0x2FC0, 0x9B32, 0,
3890     16, 0x2FC1, 0x9B3C, 0,
3891     16, 0x2FC2, 0x9B5A, 0,
3892     16, 0x2FC3, 0x9CE5, 0,
3893     16, 0x2FC4, 0x9E75, 0,
3894     16, 0x2FC5, 0x9E7F, 0,
3895     16, 0x2FC6, 0x9EA5, 0,
3896     16, 0x2FC7, 0x9EBB, 0,
3897     16, 0x2FC8, 0x9EC3, 0,
3898     16, 0x2FC9, 0x9ECD, 0,
3899     16, 0x2FCA, 0x9ED1, 0,
3900     16, 0x2FCB, 0x9EF9, 0,
3901     16, 0x2FCC, 0x9EFD, 0,
3902     16, 0x2FCD, 0x9F0E, 0,
3903     16, 0x2FCE, 0x9F13, 0,
3904     16, 0x2FCF, 0x9F20, 0,
3905     16, 0x2FD0, 0x9F3B, 0,
3906     16, 0x2FD1, 0x9F4A, 0,
3907     16, 0x2FD2, 0x9F52, 0,
3908     16, 0x2FD3, 0x9F8D, 0,
3909     16, 0x2FD4, 0x9F9C, 0,
3910     16, 0x2FD5, 0x9FA0, 0,
3911     12, 0x3000, 0x0020, 0,
3912     16, 0x3036, 0x3012, 0,
3913     16, 0x3038, 0x5341, 0,
3914     16, 0x3039, 0x5344, 0,
3915     16, 0x303A, 0x5345, 0,
3916     1, 0x304C, 0x304B, 0x3099, 0,
3917     1, 0x304E, 0x304D, 0x3099, 0,
3918     1, 0x3050, 0x304F, 0x3099, 0,
3919     1, 0x3052, 0x3051, 0x3099, 0,
3920     1, 0x3054, 0x3053, 0x3099, 0,
3921     1, 0x3056, 0x3055, 0x3099, 0,
3922     1, 0x3058, 0x3057, 0x3099, 0,
3923     1, 0x305A, 0x3059, 0x3099, 0,
3924     1, 0x305C, 0x305B, 0x3099, 0,
3925     1, 0x305E, 0x305D, 0x3099, 0,
3926     1, 0x3060, 0x305F, 0x3099, 0,
3927     1, 0x3062, 0x3061, 0x3099, 0,
3928     1, 0x3065, 0x3064, 0x3099, 0,
3929     1, 0x3067, 0x3066, 0x3099, 0,
3930     1, 0x3069, 0x3068, 0x3099, 0,
3931     1, 0x3070, 0x306F, 0x3099, 0,
3932     1, 0x3071, 0x306F, 0x309A, 0,
3933     1, 0x3073, 0x3072, 0x3099, 0,
3934     1, 0x3074, 0x3072, 0x309A, 0,
3935     1, 0x3076, 0x3075, 0x3099, 0,
3936     1, 0x3077, 0x3075, 0x309A, 0,
3937     1, 0x3079, 0x3078, 0x3099, 0,
3938     1, 0x307A, 0x3078, 0x309A, 0,
3939     1, 0x307C, 0x307B, 0x3099, 0,
3940     1, 0x307D, 0x307B, 0x309A, 0,
3941     1, 0x3094, 0x3046, 0x3099, 0,
3942     16, 0x309B, 0x0020, 0x3099, 0,
3943     16, 0x309C, 0x0020, 0x309A, 0,
3944     1, 0x309E, 0x309D, 0x3099, 0,
3945     1, 0x30AC, 0x30AB, 0x3099, 0,
3946     1, 0x30AE, 0x30AD, 0x3099, 0,
3947     1, 0x30B0, 0x30AF, 0x3099, 0,
3948     1, 0x30B2, 0x30B1, 0x3099, 0,
3949     1, 0x30B4, 0x30B3, 0x3099, 0,
3950     1, 0x30B6, 0x30B5, 0x3099, 0,
3951     1, 0x30B8, 0x30B7, 0x3099, 0,
3952     1, 0x30BA, 0x30B9, 0x3099, 0,
3953     1, 0x30BC, 0x30BB, 0x3099, 0,
3954     1, 0x30BE, 0x30BD, 0x3099, 0,
3955     1, 0x30C0, 0x30BF, 0x3099, 0,
3956     1, 0x30C2, 0x30C1, 0x3099, 0,
3957     1, 0x30C5, 0x30C4, 0x3099, 0,
3958     1, 0x30C7, 0x30C6, 0x3099, 0,
3959     1, 0x30C9, 0x30C8, 0x3099, 0,
3960     1, 0x30D0, 0x30CF, 0x3099, 0,
3961     1, 0x30D1, 0x30CF, 0x309A, 0,
3962     1, 0x30D3, 0x30D2, 0x3099, 0,
3963     1, 0x30D4, 0x30D2, 0x309A, 0,
3964     1, 0x30D6, 0x30D5, 0x3099, 0,
3965     1, 0x30D7, 0x30D5, 0x309A, 0,
3966     1, 0x30D9, 0x30D8, 0x3099, 0,
3967     1, 0x30DA, 0x30D8, 0x309A, 0,
3968     1, 0x30DC, 0x30DB, 0x3099, 0,
3969     1, 0x30DD, 0x30DB, 0x309A, 0,
3970     1, 0x30F4, 0x30A6, 0x3099, 0,
3971     1, 0x30F7, 0x30EF, 0x3099, 0,
3972     1, 0x30F8, 0x30F0, 0x3099, 0,
3973     1, 0x30F9, 0x30F1, 0x3099, 0,
3974     1, 0x30FA, 0x30F2, 0x3099, 0,
3975     1, 0x30FE, 0x30FD, 0x3099, 0,
3976     16, 0x3131, 0x1100, 0,
3977     16, 0x3132, 0x1101, 0,
3978     16, 0x3133, 0x11AA, 0,
3979     16, 0x3134, 0x1102, 0,
3980     16, 0x3135, 0x11AC, 0,
3981     16, 0x3136, 0x11AD, 0,
3982     16, 0x3137, 0x1103, 0,
3983     16, 0x3138, 0x1104, 0,
3984     16, 0x3139, 0x1105, 0,
3985     16, 0x313A, 0x11B0, 0,
3986     16, 0x313B, 0x11B1, 0,
3987     16, 0x313C, 0x11B2, 0,
3988     16, 0x313D, 0x11B3, 0,
3989     16, 0x313E, 0x11B4, 0,
3990     16, 0x313F, 0x11B5, 0,
3991     16, 0x3140, 0x111A, 0,
3992     16, 0x3141, 0x1106, 0,
3993     16, 0x3142, 0x1107, 0,
3994     16, 0x3143, 0x1108, 0,
3995     16, 0x3144, 0x1121, 0,
3996     16, 0x3145, 0x1109, 0,
3997     16, 0x3146, 0x110A, 0,
3998     16, 0x3147, 0x110B, 0,
3999     16, 0x3148, 0x110C, 0,
4000     16, 0x3149, 0x110D, 0,
4001     16, 0x314A, 0x110E, 0,
4002     16, 0x314B, 0x110F, 0,
4003     16, 0x314C, 0x1110, 0,
4004     16, 0x314D, 0x1111, 0,
4005     16, 0x314E, 0x1112, 0,
4006     16, 0x314F, 0x1161, 0,
4007     16, 0x3150, 0x1162, 0,
4008     16, 0x3151, 0x1163, 0,
4009     16, 0x3152, 0x1164, 0,
4010     16, 0x3153, 0x1165, 0,
4011     16, 0x3154, 0x1166, 0,
4012     16, 0x3155, 0x1167, 0,
4013     16, 0x3156, 0x1168, 0,
4014     16, 0x3157, 0x1169, 0,
4015     16, 0x3158, 0x116A, 0,
4016     16, 0x3159, 0x116B, 0,
4017     16, 0x315A, 0x116C, 0,
4018     16, 0x315B, 0x116D, 0,
4019     16, 0x315C, 0x116E, 0,
4020     16, 0x315D, 0x116F, 0,
4021     16, 0x315E, 0x1170, 0,
4022     16, 0x315F, 0x1171, 0,
4023     16, 0x3160, 0x1172, 0,
4024     16, 0x3161, 0x1173, 0,
4025     16, 0x3162, 0x1174, 0,
4026     16, 0x3163, 0x1175, 0,
4027     16, 0x3164, 0x1160, 0,
4028     16, 0x3165, 0x1114, 0,
4029     16, 0x3166, 0x1115, 0,
4030     16, 0x3167, 0x11C7, 0,
4031     16, 0x3168, 0x11C8, 0,
4032     16, 0x3169, 0x11CC, 0,
4033     16, 0x316A, 0x11CE, 0,
4034     16, 0x316B, 0x11D3, 0,
4035     16, 0x316C, 0x11D7, 0,
4036     16, 0x316D, 0x11D9, 0,
4037     16, 0x316E, 0x111C, 0,
4038     16, 0x316F, 0x11DD, 0,
4039     16, 0x3170, 0x11DF, 0,
4040     16, 0x3171, 0x111D, 0,
4041     16, 0x3172, 0x111E, 0,
4042     16, 0x3173, 0x1120, 0,
4043     16, 0x3174, 0x1122, 0,
4044     16, 0x3175, 0x1123, 0,
4045     16, 0x3176, 0x1127, 0,
4046     16, 0x3177, 0x1129, 0,
4047     16, 0x3178, 0x112B, 0,
4048     16, 0x3179, 0x112C, 0,
4049     16, 0x317A, 0x112D, 0,
4050     16, 0x317B, 0x112E, 0,
4051     16, 0x317C, 0x112F, 0,
4052     16, 0x317D, 0x1132, 0,
4053     16, 0x317E, 0x1136, 0,
4054     16, 0x317F, 0x1140, 0,
4055     16, 0x3180, 0x1147, 0,
4056     16, 0x3181, 0x114C, 0,
4057     16, 0x3182, 0x11F1, 0,
4058     16, 0x3183, 0x11F2, 0,
4059     16, 0x3184, 0x1157, 0,
4060     16, 0x3185, 0x1158, 0,
4061     16, 0x3186, 0x1159, 0,
4062     16, 0x3187, 0x1184, 0,
4063     16, 0x3188, 0x1185, 0,
4064     16, 0x3189, 0x1188, 0,
4065     16, 0x318A, 0x1191, 0,
4066     16, 0x318B, 0x1192, 0,
4067     16, 0x318C, 0x1194, 0,
4068     16, 0x318D, 0x119E, 0,
4069     16, 0x318E, 0x11A1, 0,
4070     9, 0x3192, 0x4E00, 0,
4071     9, 0x3193, 0x4E8C, 0,
4072     9, 0x3194, 0x4E09, 0,
4073     9, 0x3195, 0x56DB, 0,
4074     9, 0x3196, 0x4E0A, 0,
4075     9, 0x3197, 0x4E2D, 0,
4076     9, 0x3198, 0x4E0B, 0,
4077     9, 0x3199, 0x7532, 0,
4078     9, 0x319A, 0x4E59, 0,
4079     9, 0x319B, 0x4E19, 0,
4080     9, 0x319C, 0x4E01, 0,
4081     9, 0x319D, 0x5929, 0,
4082     9, 0x319E, 0x5730, 0,
4083     9, 0x319F, 0x4EBA, 0,
4084     16, 0x3200, 0x0028, 0x1100, 0x0029, 0,
4085     16, 0x3201, 0x0028, 0x1102, 0x0029, 0,
4086     16, 0x3202, 0x0028, 0x1103, 0x0029, 0,
4087     16, 0x3203, 0x0028, 0x1105, 0x0029, 0,
4088     16, 0x3204, 0x0028, 0x1106, 0x0029, 0,
4089     16, 0x3205, 0x0028, 0x1107, 0x0029, 0,
4090     16, 0x3206, 0x0028, 0x1109, 0x0029, 0,
4091     16, 0x3207, 0x0028, 0x110B, 0x0029, 0,
4092     16, 0x3208, 0x0028, 0x110C, 0x0029, 0,
4093     16, 0x3209, 0x0028, 0x110E, 0x0029, 0,
4094     16, 0x320A, 0x0028, 0x110F, 0x0029, 0,
4095     16, 0x320B, 0x0028, 0x1110, 0x0029, 0,
4096     16, 0x320C, 0x0028, 0x1111, 0x0029, 0,
4097     16, 0x320D, 0x0028, 0x1112, 0x0029, 0,
4098     16, 0x320E, 0x0028, 0x1100, 0x1161, 0x0029, 0,
4099     16, 0x320F, 0x0028, 0x1102, 0x1161, 0x0029, 0,
4100     16, 0x3210, 0x0028, 0x1103, 0x1161, 0x0029, 0,
4101     16, 0x3211, 0x0028, 0x1105, 0x1161, 0x0029, 0,
4102     16, 0x3212, 0x0028, 0x1106, 0x1161, 0x0029, 0,
4103     16, 0x3213, 0x0028, 0x1107, 0x1161, 0x0029, 0,
4104     16, 0x3214, 0x0028, 0x1109, 0x1161, 0x0029, 0,
4105     16, 0x3215, 0x0028, 0x110B, 0x1161, 0x0029, 0,
4106     16, 0x3216, 0x0028, 0x110C, 0x1161, 0x0029, 0,
4107     16, 0x3217, 0x0028, 0x110E, 0x1161, 0x0029, 0,
4108     16, 0x3218, 0x0028, 0x110F, 0x1161, 0x0029, 0,
4109     16, 0x3219, 0x0028, 0x1110, 0x1161, 0x0029, 0,
4110     16, 0x321A, 0x0028, 0x1111, 0x1161, 0x0029, 0,
4111     16, 0x321B, 0x0028, 0x1112, 0x1161, 0x0029, 0,
4112     16, 0x321C, 0x0028, 0x110C, 0x116E, 0x0029, 0,
4113     16, 0x3220, 0x0028, 0x4E00, 0x0029, 0,
4114     16, 0x3221, 0x0028, 0x4E8C, 0x0029, 0,
4115     16, 0x3222, 0x0028, 0x4E09, 0x0029, 0,
4116     16, 0x3223, 0x0028, 0x56DB, 0x0029, 0,
4117     16, 0x3224, 0x0028, 0x4E94, 0x0029, 0,
4118     16, 0x3225, 0x0028, 0x516D, 0x0029, 0,
4119     16, 0x3226, 0x0028, 0x4E03, 0x0029, 0,
4120     16, 0x3227, 0x0028, 0x516B, 0x0029, 0,
4121     16, 0x3228, 0x0028, 0x4E5D, 0x0029, 0,
4122     16, 0x3229, 0x0028, 0x5341, 0x0029, 0,
4123     16, 0x322A, 0x0028, 0x6708, 0x0029, 0,
4124     16, 0x322B, 0x0028, 0x706B, 0x0029, 0,
4125     16, 0x322C, 0x0028, 0x6C34, 0x0029, 0,
4126     16, 0x322D, 0x0028, 0x6728, 0x0029, 0,
4127     16, 0x322E, 0x0028, 0x91D1, 0x0029, 0,
4128     16, 0x322F, 0x0028, 0x571F, 0x0029, 0,
4129     16, 0x3230, 0x0028, 0x65E5, 0x0029, 0,
4130     16, 0x3231, 0x0028, 0x682A, 0x0029, 0,
4131     16, 0x3232, 0x0028, 0x6709, 0x0029, 0,
4132     16, 0x3233, 0x0028, 0x793E, 0x0029, 0,
4133     16, 0x3234, 0x0028, 0x540D, 0x0029, 0,
4134     16, 0x3235, 0x0028, 0x7279, 0x0029, 0,
4135     16, 0x3236, 0x0028, 0x8CA1, 0x0029, 0,
4136     16, 0x3237, 0x0028, 0x795D, 0x0029, 0,
4137     16, 0x3238, 0x0028, 0x52B4, 0x0029, 0,
4138     16, 0x3239, 0x0028, 0x4EE3, 0x0029, 0,
4139     16, 0x323A, 0x0028, 0x547C, 0x0029, 0,
4140     16, 0x323B, 0x0028, 0x5B66, 0x0029, 0,
4141     16, 0x323C, 0x0028, 0x76E3, 0x0029, 0,
4142     16, 0x323D, 0x0028, 0x4F01, 0x0029, 0,
4143     16, 0x323E, 0x0028, 0x8CC7, 0x0029, 0,
4144     16, 0x323F, 0x0028, 0x5354, 0x0029, 0,
4145     16, 0x3240, 0x0028, 0x796D, 0x0029, 0,
4146     16, 0x3241, 0x0028, 0x4F11, 0x0029, 0,
4147     16, 0x3242, 0x0028, 0x81EA, 0x0029, 0,
4148     16, 0x3243, 0x0028, 0x81F3, 0x0029, 0,
4149     8, 0x3260, 0x1100, 0,
4150     8, 0x3261, 0x1102, 0,
4151     8, 0x3262, 0x1103, 0,
4152     8, 0x3263, 0x1105, 0,
4153     8, 0x3264, 0x1106, 0,
4154     8, 0x3265, 0x1107, 0,
4155     8, 0x3266, 0x1109, 0,
4156     8, 0x3267, 0x110B, 0,
4157     8, 0x3268, 0x110C, 0,
4158     8, 0x3269, 0x110E, 0,
4159     8, 0x326A, 0x110F, 0,
4160     8, 0x326B, 0x1110, 0,
4161     8, 0x326C, 0x1111, 0,
4162     8, 0x326D, 0x1112, 0,
4163     8, 0x326E, 0x1100, 0x1161, 0,
4164     8, 0x326F, 0x1102, 0x1161, 0,
4165     8, 0x3270, 0x1103, 0x1161, 0,
4166     8, 0x3271, 0x1105, 0x1161, 0,
4167     8, 0x3272, 0x1106, 0x1161, 0,
4168     8, 0x3273, 0x1107, 0x1161, 0,
4169     8, 0x3274, 0x1109, 0x1161, 0,
4170     8, 0x3275, 0x110B, 0x1161, 0,
4171     8, 0x3276, 0x110C, 0x1161, 0,
4172     8, 0x3277, 0x110E, 0x1161, 0,
4173     8, 0x3278, 0x110F, 0x1161, 0,
4174     8, 0x3279, 0x1110, 0x1161, 0,
4175     8, 0x327A, 0x1111, 0x1161, 0,
4176     8, 0x327B, 0x1112, 0x1161, 0,
4177     8, 0x3280, 0x4E00, 0,
4178     8, 0x3281, 0x4E8C, 0,
4179     8, 0x3282, 0x4E09, 0,
4180     8, 0x3283, 0x56DB, 0,
4181     8, 0x3284, 0x4E94, 0,
4182     8, 0x3285, 0x516D, 0,
4183     8, 0x3286, 0x4E03, 0,
4184     8, 0x3287, 0x516B, 0,
4185     8, 0x3288, 0x4E5D, 0,
4186     8, 0x3289, 0x5341, 0,
4187     8, 0x328A, 0x6708, 0,
4188     8, 0x328B, 0x706B, 0,
4189     8, 0x328C, 0x6C34, 0,
4190     8, 0x328D, 0x6728, 0,
4191     8, 0x328E, 0x91D1, 0,
4192     8, 0x328F, 0x571F, 0,
4193     8, 0x3290, 0x65E5, 0,
4194     8, 0x3291, 0x682A, 0,
4195     8, 0x3292, 0x6709, 0,
4196     8, 0x3293, 0x793E, 0,
4197     8, 0x3294, 0x540D, 0,
4198     8, 0x3295, 0x7279, 0,
4199     8, 0x3296, 0x8CA1, 0,
4200     8, 0x3297, 0x795D, 0,
4201     8, 0x3298, 0x52B4, 0,
4202     8, 0x3299, 0x79D8, 0,
4203     8, 0x329A, 0x7537, 0,
4204     8, 0x329B, 0x5973, 0,
4205     8, 0x329C, 0x9069, 0,
4206     8, 0x329D, 0x512A, 0,
4207     8, 0x329E, 0x5370, 0,
4208     8, 0x329F, 0x6CE8, 0,
4209     8, 0x32A0, 0x9805, 0,
4210     8, 0x32A1, 0x4F11, 0,
4211     8, 0x32A2, 0x5199, 0,
4212     8, 0x32A3, 0x6B63, 0,
4213     8, 0x32A4, 0x4E0A, 0,
4214     8, 0x32A5, 0x4E2D, 0,
4215     8, 0x32A6, 0x4E0B, 0,
4216     8, 0x32A7, 0x5DE6, 0,
4217     8, 0x32A8, 0x53F3, 0,
4218     8, 0x32A9, 0x533B, 0,
4219     8, 0x32AA, 0x5B97, 0,
4220     8, 0x32AB, 0x5B66, 0,
4221     8, 0x32AC, 0x76E3, 0,
4222     8, 0x32AD, 0x4F01, 0,
4223     8, 0x32AE, 0x8CC7, 0,
4224     8, 0x32AF, 0x5354, 0,
4225     8, 0x32B0, 0x591C, 0,
4226     16, 0x32C0, 0x0031, 0x6708, 0,
4227     16, 0x32C1, 0x0032, 0x6708, 0,
4228     16, 0x32C2, 0x0033, 0x6708, 0,
4229     16, 0x32C3, 0x0034, 0x6708, 0,
4230     16, 0x32C4, 0x0035, 0x6708, 0,
4231     16, 0x32C5, 0x0036, 0x6708, 0,
4232     16, 0x32C6, 0x0037, 0x6708, 0,
4233     16, 0x32C7, 0x0038, 0x6708, 0,
4234     16, 0x32C8, 0x0039, 0x6708, 0,
4235     16, 0x32C9, 0x0031, 0x0030, 0x6708, 0,
4236     16, 0x32CA, 0x0031, 0x0031, 0x6708, 0,
4237     16, 0x32CB, 0x0031, 0x0032, 0x6708, 0,
4238     8, 0x32D0, 0x30A2, 0,
4239     8, 0x32D1, 0x30A4, 0,
4240     8, 0x32D2, 0x30A6, 0,
4241     8, 0x32D3, 0x30A8, 0,
4242     8, 0x32D4, 0x30AA, 0,
4243     8, 0x32D5, 0x30AB, 0,
4244     8, 0x32D6, 0x30AD, 0,
4245     8, 0x32D7, 0x30AF, 0,
4246     8, 0x32D8, 0x30B1, 0,
4247     8, 0x32D9, 0x30B3, 0,
4248     8, 0x32DA, 0x30B5, 0,
4249     8, 0x32DB, 0x30B7, 0,
4250     8, 0x32DC, 0x30B9, 0,
4251     8, 0x32DD, 0x30BB, 0,
4252     8, 0x32DE, 0x30BD, 0,
4253     8, 0x32DF, 0x30BF, 0,
4254     8, 0x32E0, 0x30C1, 0,
4255     8, 0x32E1, 0x30C4, 0,
4256     8, 0x32E2, 0x30C6, 0,
4257     8, 0x32E3, 0x30C8, 0,
4258     8, 0x32E4, 0x30CA, 0,
4259     8, 0x32E5, 0x30CB, 0,
4260     8, 0x32E6, 0x30CC, 0,
4261     8, 0x32E7, 0x30CD, 0,
4262     8, 0x32E8, 0x30CE, 0,
4263     8, 0x32E9, 0x30CF, 0,
4264     8, 0x32EA, 0x30D2, 0,
4265     8, 0x32EB, 0x30D5, 0,
4266     8, 0x32EC, 0x30D8, 0,
4267     8, 0x32ED, 0x30DB, 0,
4268     8, 0x32EE, 0x30DE, 0,
4269     8, 0x32EF, 0x30DF, 0,
4270     8, 0x32F0, 0x30E0, 0,
4271     8, 0x32F1, 0x30E1, 0,
4272     8, 0x32F2, 0x30E2, 0,
4273     8, 0x32F3, 0x30E4, 0,
4274     8, 0x32F4, 0x30E6, 0,
4275     8, 0x32F5, 0x30E8, 0,
4276     8, 0x32F6, 0x30E9, 0,
4277     8, 0x32F7, 0x30EA, 0,
4278     8, 0x32F8, 0x30EB, 0,
4279     8, 0x32F9, 0x30EC, 0,
4280     8, 0x32FA, 0x30ED, 0,
4281     8, 0x32FB, 0x30EF, 0,
4282     8, 0x32FC, 0x30F0, 0,
4283     8, 0x32FD, 0x30F1, 0,
4284     8, 0x32FE, 0x30F2, 0,
4285     15, 0x3300, 0x30A2, 0x30D1, 0x30FC, 0x30C8, 0,
4286     15, 0x3301, 0x30A2, 0x30EB, 0x30D5, 0x30A1, 0,
4287     15, 0x3302, 0x30A2, 0x30F3, 0x30DA, 0x30A2, 0,
4288     15, 0x3303, 0x30A2, 0x30FC, 0x30EB, 0,
4289     15, 0x3304, 0x30A4, 0x30CB, 0x30F3, 0x30B0, 0,
4290     15, 0x3305, 0x30A4, 0x30F3, 0x30C1, 0,
4291     15, 0x3306, 0x30A6, 0x30A9, 0x30F3, 0,
4292     15, 0x3307, 0x30A8, 0x30B9, 0x30AF, 0x30FC, 0x30C9, 0,
4293     15, 0x3308, 0x30A8, 0x30FC, 0x30AB, 0x30FC, 0,
4294     15, 0x3309, 0x30AA, 0x30F3, 0x30B9, 0,
4295     15, 0x330A, 0x30AA, 0x30FC, 0x30E0, 0,
4296     15, 0x330B, 0x30AB, 0x30A4, 0x30EA, 0,
4297     15, 0x330C, 0x30AB, 0x30E9, 0x30C3, 0x30C8, 0,
4298     15, 0x330D, 0x30AB, 0x30ED, 0x30EA, 0x30FC, 0,
4299     15, 0x330E, 0x30AC, 0x30ED, 0x30F3, 0,
4300     15, 0x330F, 0x30AC, 0x30F3, 0x30DE, 0,
4301     15, 0x3310, 0x30AE, 0x30AC, 0,
4302     15, 0x3311, 0x30AE, 0x30CB, 0x30FC, 0,
4303     15, 0x3312, 0x30AD, 0x30E5, 0x30EA, 0x30FC, 0,
4304     15, 0x3313, 0x30AE, 0x30EB, 0x30C0, 0x30FC, 0,
4305     15, 0x3314, 0x30AD, 0x30ED, 0,
4306     15, 0x3315, 0x30AD, 0x30ED, 0x30B0, 0x30E9, 0x30E0, 0,
4307     15, 0x3316, 0x30AD, 0x30ED, 0x30E1, 0x30FC, 0x30C8, 0x30EB, 0,
4308     15, 0x3317, 0x30AD, 0x30ED, 0x30EF, 0x30C3, 0x30C8, 0,
4309     15, 0x3318, 0x30B0, 0x30E9, 0x30E0, 0,
4310     15, 0x3319, 0x30B0, 0x30E9, 0x30E0, 0x30C8, 0x30F3, 0,
4311     15, 0x331A, 0x30AF, 0x30EB, 0x30BC, 0x30A4, 0x30ED, 0,
4312     15, 0x331B, 0x30AF, 0x30ED, 0x30FC, 0x30CD, 0,
4313     15, 0x331C, 0x30B1, 0x30FC, 0x30B9, 0,
4314     15, 0x331D, 0x30B3, 0x30EB, 0x30CA, 0,
4315     15, 0x331E, 0x30B3, 0x30FC, 0x30DD, 0,
4316     15, 0x331F, 0x30B5, 0x30A4, 0x30AF, 0x30EB, 0,
4317     15, 0x3320, 0x30B5, 0x30F3, 0x30C1, 0x30FC, 0x30E0, 0,
4318     15, 0x3321, 0x30B7, 0x30EA, 0x30F3, 0x30B0, 0,
4319     15, 0x3322, 0x30BB, 0x30F3, 0x30C1, 0,
4320     15, 0x3323, 0x30BB, 0x30F3, 0x30C8, 0,
4321     15, 0x3324, 0x30C0, 0x30FC, 0x30B9, 0,
4322     15, 0x3325, 0x30C7, 0x30B7, 0,
4323     15, 0x3326, 0x30C9, 0x30EB, 0,
4324     15, 0x3327, 0x30C8, 0x30F3, 0,
4325     15, 0x3328, 0x30CA, 0x30CE, 0,
4326     15, 0x3329, 0x30CE, 0x30C3, 0x30C8, 0,
4327     15, 0x332A, 0x30CF, 0x30A4, 0x30C4, 0,
4328     15, 0x332B, 0x30D1, 0x30FC, 0x30BB, 0x30F3, 0x30C8, 0,
4329     15, 0x332C, 0x30D1, 0x30FC, 0x30C4, 0,
4330     15, 0x332D, 0x30D0, 0x30FC, 0x30EC, 0x30EB, 0,
4331     15, 0x332E, 0x30D4, 0x30A2, 0x30B9, 0x30C8, 0x30EB, 0,
4332     15, 0x332F, 0x30D4, 0x30AF, 0x30EB, 0,
4333     15, 0x3330, 0x30D4, 0x30B3, 0,
4334     15, 0x3331, 0x30D3, 0x30EB, 0,
4335     15, 0x3332, 0x30D5, 0x30A1, 0x30E9, 0x30C3, 0x30C9, 0,
4336     15, 0x3333, 0x30D5, 0x30A3, 0x30FC, 0x30C8, 0,
4337     15, 0x3334, 0x30D6, 0x30C3, 0x30B7, 0x30A7, 0x30EB, 0,
4338     15, 0x3335, 0x30D5, 0x30E9, 0x30F3, 0,
4339     15, 0x3336, 0x30D8, 0x30AF, 0x30BF, 0x30FC, 0x30EB, 0,
4340     15, 0x3337, 0x30DA, 0x30BD, 0,
4341     15, 0x3338, 0x30DA, 0x30CB, 0x30D2, 0,
4342     15, 0x3339, 0x30D8, 0x30EB, 0x30C4, 0,
4343     15, 0x333A, 0x30DA, 0x30F3, 0x30B9, 0,
4344     15, 0x333B, 0x30DA, 0x30FC, 0x30B8, 0,
4345     15, 0x333C, 0x30D9, 0x30FC, 0x30BF, 0,
4346     15, 0x333D, 0x30DD, 0x30A4, 0x30F3, 0x30C8, 0,
4347     15, 0x333E, 0x30DC, 0x30EB, 0x30C8, 0,
4348     15, 0x333F, 0x30DB, 0x30F3, 0,
4349     15, 0x3340, 0x30DD, 0x30F3, 0x30C9, 0,
4350     15, 0x3341, 0x30DB, 0x30FC, 0x30EB, 0,
4351     15, 0x3342, 0x30DB, 0x30FC, 0x30F3, 0,
4352     15, 0x3343, 0x30DE, 0x30A4, 0x30AF, 0x30ED, 0,
4353     15, 0x3344, 0x30DE, 0x30A4, 0x30EB, 0,
4354     15, 0x3345, 0x30DE, 0x30C3, 0x30CF, 0,
4355     15, 0x3346, 0x30DE, 0x30EB, 0x30AF, 0,
4356     15, 0x3347, 0x30DE, 0x30F3, 0x30B7, 0x30E7, 0x30F3, 0,
4357     15, 0x3348, 0x30DF, 0x30AF, 0x30ED, 0x30F3, 0,
4358     15, 0x3349, 0x30DF, 0x30EA, 0,
4359     15, 0x334A, 0x30DF, 0x30EA, 0x30D0, 0x30FC, 0x30EB, 0,
4360     15, 0x334B, 0x30E1, 0x30AC, 0,
4361     15, 0x334C, 0x30E1, 0x30AC, 0x30C8, 0x30F3, 0,
4362     15, 0x334D, 0x30E1, 0x30FC, 0x30C8, 0x30EB, 0,
4363     15, 0x334E, 0x30E4, 0x30FC, 0x30C9, 0,
4364     15, 0x334F, 0x30E4, 0x30FC, 0x30EB, 0,
4365     15, 0x3350, 0x30E6, 0x30A2, 0x30F3, 0,
4366     15, 0x3351, 0x30EA, 0x30C3, 0x30C8, 0x30EB, 0,
4367     15, 0x3352, 0x30EA, 0x30E9, 0,
4368     15, 0x3353, 0x30EB, 0x30D4, 0x30FC, 0,
4369     15, 0x3354, 0x30EB, 0x30FC, 0x30D6, 0x30EB, 0,
4370     15, 0x3355, 0x30EC, 0x30E0, 0,
4371     15, 0x3356, 0x30EC, 0x30F3, 0x30C8, 0x30B2, 0x30F3, 0,
4372     15, 0x3357, 0x30EF, 0x30C3, 0x30C8, 0,
4373     16, 0x3358, 0x0030, 0x70B9, 0,
4374     16, 0x3359, 0x0031, 0x70B9, 0,
4375     16, 0x335A, 0x0032, 0x70B9, 0,
4376     16, 0x335B, 0x0033, 0x70B9, 0,
4377     16, 0x335C, 0x0034, 0x70B9, 0,
4378     16, 0x335D, 0x0035, 0x70B9, 0,
4379     16, 0x335E, 0x0036, 0x70B9, 0,
4380     16, 0x335F, 0x0037, 0x70B9, 0,
4381     16, 0x3360, 0x0038, 0x70B9, 0,
4382     16, 0x3361, 0x0039, 0x70B9, 0,
4383     16, 0x3362, 0x0031, 0x0030, 0x70B9, 0,
4384     16, 0x3363, 0x0031, 0x0031, 0x70B9, 0,
4385     16, 0x3364, 0x0031, 0x0032, 0x70B9, 0,
4386     16, 0x3365, 0x0031, 0x0033, 0x70B9, 0,
4387     16, 0x3366, 0x0031, 0x0034, 0x70B9, 0,
4388     16, 0x3367, 0x0031, 0x0035, 0x70B9, 0,
4389     16, 0x3368, 0x0031, 0x0036, 0x70B9, 0,
4390     16, 0x3369, 0x0031, 0x0037, 0x70B9, 0,
4391     16, 0x336A, 0x0031, 0x0038, 0x70B9, 0,
4392     16, 0x336B, 0x0031, 0x0039, 0x70B9, 0,
4393     16, 0x336C, 0x0032, 0x0030, 0x70B9, 0,
4394     16, 0x336D, 0x0032, 0x0031, 0x70B9, 0,
4395     16, 0x336E, 0x0032, 0x0032, 0x70B9, 0,
4396     16, 0x336F, 0x0032, 0x0033, 0x70B9, 0,
4397     16, 0x3370, 0x0032, 0x0034, 0x70B9, 0,
4398     15, 0x3371, 0x0068, 0x0050, 0x0061, 0,
4399     15, 0x3372, 0x0064, 0x0061, 0,
4400     15, 0x3373, 0x0041, 0x0055, 0,
4401     15, 0x3374, 0x0062, 0x0061, 0x0072, 0,
4402     15, 0x3375, 0x006F, 0x0056, 0,
4403     15, 0x3376, 0x0070, 0x0063, 0,
4404     15, 0x337B, 0x5E73, 0x6210, 0,
4405     15, 0x337C, 0x662D, 0x548C, 0,
4406     15, 0x337D, 0x5927, 0x6B63, 0,
4407     15, 0x337E, 0x660E, 0x6CBB, 0,
4408     15, 0x337F, 0x682A, 0x5F0F, 0x4F1A, 0x793E, 0,
4409     15, 0x3380, 0x0070, 0x0041, 0,
4410     15, 0x3381, 0x006E, 0x0041, 0,
4411     15, 0x3382, 0x03BC, 0x0041, 0,
4412     15, 0x3383, 0x006D, 0x0041, 0,
4413     15, 0x3384, 0x006B, 0x0041, 0,
4414     15, 0x3385, 0x004B, 0x0042, 0,
4415     15, 0x3386, 0x004D, 0x0042, 0,
4416     15, 0x3387, 0x0047, 0x0042, 0,
4417     15, 0x3388, 0x0063, 0x0061, 0x006C, 0,
4418     15, 0x3389, 0x006B, 0x0063, 0x0061, 0x006C, 0,
4419     15, 0x338A, 0x0070, 0x0046, 0,
4420     15, 0x338B, 0x006E, 0x0046, 0,
4421     15, 0x338C, 0x03BC, 0x0046, 0,
4422     15, 0x338D, 0x03BC, 0x0067, 0,
4423     15, 0x338E, 0x006D, 0x0067, 0,
4424     15, 0x338F, 0x006B, 0x0067, 0,
4425     15, 0x3390, 0x0048, 0x007A, 0,
4426     15, 0x3391, 0x006B, 0x0048, 0x007A, 0,
4427     15, 0x3392, 0x004D, 0x0048, 0x007A, 0,
4428     15, 0x3393, 0x0047, 0x0048, 0x007A, 0,
4429     15, 0x3394, 0x0054, 0x0048, 0x007A, 0,
4430     15, 0x3395, 0x03BC, 0x2113, 0,
4431     15, 0x3396, 0x006D, 0x2113, 0,
4432     15, 0x3397, 0x0064, 0x2113, 0,
4433     15, 0x3398, 0x006B, 0x2113, 0,
4434     15, 0x3399, 0x0066, 0x006D, 0,
4435     15, 0x339A, 0x006E, 0x006D, 0,
4436     15, 0x339B, 0x03BC, 0x006D, 0,
4437     15, 0x339C, 0x006D, 0x006D, 0,
4438     15, 0x339D, 0x0063, 0x006D, 0,
4439     15, 0x339E, 0x006B, 0x006D, 0,
4440     15, 0x339F, 0x006D, 0x006D, 0x00B2, 0,
4441     15, 0x33A0, 0x0063, 0x006D, 0x00B2, 0,
4442     15, 0x33A1, 0x006D, 0x00B2, 0,
4443     15, 0x33A2, 0x006B, 0x006D, 0x00B2, 0,
4444     15, 0x33A3, 0x006D, 0x006D, 0x00B3, 0,
4445     15, 0x33A4, 0x0063, 0x006D, 0x00B3, 0,
4446     15, 0x33A5, 0x006D, 0x00B3, 0,
4447     15, 0x33A6, 0x006B, 0x006D, 0x00B3, 0,
4448     15, 0x33A7, 0x006D, 0x2215, 0x0073, 0,
4449     15, 0x33A8, 0x006D, 0x2215, 0x0073, 0x00B2, 0,
4450     15, 0x33A9, 0x0050, 0x0061, 0,
4451     15, 0x33AA, 0x006B, 0x0050, 0x0061, 0,
4452     15, 0x33AB, 0x004D, 0x0050, 0x0061, 0,
4453     15, 0x33AC, 0x0047, 0x0050, 0x0061, 0,
4454     15, 0x33AD, 0x0072, 0x0061, 0x0064, 0,
4455     15, 0x33AE, 0x0072, 0x0061, 0x0064, 0x2215, 0x0073, 0,
4456     15, 0x33AF, 0x0072, 0x0061, 0x0064, 0x2215, 0x0073, 0x00B2, 0,
4457     15, 0x33B0, 0x0070, 0x0073, 0,
4458     15, 0x33B1, 0x006E, 0x0073, 0,
4459     15, 0x33B2, 0x03BC, 0x0073, 0,
4460     15, 0x33B3, 0x006D, 0x0073, 0,
4461     15, 0x33B4, 0x0070, 0x0056, 0,
4462     15, 0x33B5, 0x006E, 0x0056, 0,
4463     15, 0x33B6, 0x03BC, 0x0056, 0,
4464     15, 0x33B7, 0x006D, 0x0056, 0,
4465     15, 0x33B8, 0x006B, 0x0056, 0,
4466     15, 0x33B9, 0x004D, 0x0056, 0,
4467     15, 0x33BA, 0x0070, 0x0057, 0,
4468     15, 0x33BB, 0x006E, 0x0057, 0,
4469     15, 0x33BC, 0x03BC, 0x0057, 0,
4470     15, 0x33BD, 0x006D, 0x0057, 0,
4471     15, 0x33BE, 0x006B, 0x0057, 0,
4472     15, 0x33BF, 0x004D, 0x0057, 0,
4473     15, 0x33C0, 0x006B, 0x03A9, 0,
4474     15, 0x33C1, 0x004D, 0x03A9, 0,
4475     15, 0x33C2, 0x0061, 0x002E, 0x006D, 0x002E, 0,
4476     15, 0x33C3, 0x0042, 0x0071, 0,
4477     15, 0x33C4, 0x0063, 0x0063, 0,
4478     15, 0x33C5, 0x0063, 0x0064, 0,
4479     15, 0x33C6, 0x0043, 0x2215, 0x006B, 0x0067, 0,
4480     15, 0x33C7, 0x0043, 0x006F, 0x002E, 0,
4481     15, 0x33C8, 0x0064, 0x0042, 0,
4482     15, 0x33C9, 0x0047, 0x0079, 0,
4483     15, 0x33CA, 0x0068, 0x0061, 0,
4484     15, 0x33CB, 0x0048, 0x0050, 0,
4485     15, 0x33CC, 0x0069, 0x006E, 0,
4486     15, 0x33CD, 0x004B, 0x004B, 0,
4487     15, 0x33CE, 0x004B, 0x004D, 0,
4488     15, 0x33CF, 0x006B, 0x0074, 0,
4489     15, 0x33D0, 0x006C, 0x006D, 0,
4490     15, 0x33D1, 0x006C, 0x006E, 0,
4491     15, 0x33D2, 0x006C, 0x006F, 0x0067, 0,
4492     15, 0x33D3, 0x006C, 0x0078, 0,
4493     15, 0x33D4, 0x006D, 0x0062, 0,
4494     15, 0x33D5, 0x006D, 0x0069, 0x006C, 0,
4495     15, 0x33D6, 0x006D, 0x006F, 0x006C, 0,
4496     15, 0x33D7, 0x0050, 0x0048, 0,
4497     15, 0x33D8, 0x0070, 0x002E, 0x006D, 0x002E, 0,
4498     15, 0x33D9, 0x0050, 0x0050, 0x004D, 0,
4499     15, 0x33DA, 0x0050, 0x0052, 0,
4500     15, 0x33DB, 0x0073, 0x0072, 0,
4501     15, 0x33DC, 0x0053, 0x0076, 0,
4502     15, 0x33DD, 0x0057, 0x0062, 0,
4503     16, 0x33E0, 0x0031, 0x65E5, 0,
4504     16, 0x33E1, 0x0032, 0x65E5, 0,
4505     16, 0x33E2, 0x0033, 0x65E5, 0,
4506     16, 0x33E3, 0x0034, 0x65E5, 0,
4507     16, 0x33E4, 0x0035, 0x65E5, 0,
4508     16, 0x33E5, 0x0036, 0x65E5, 0,
4509     16, 0x33E6, 0x0037, 0x65E5, 0,
4510     16, 0x33E7, 0x0038, 0x65E5, 0,
4511     16, 0x33E8, 0x0039, 0x65E5, 0,
4512     16, 0x33E9, 0x0031, 0x0030, 0x65E5, 0,
4513     16, 0x33EA, 0x0031, 0x0031, 0x65E5, 0,
4514     16, 0x33EB, 0x0031, 0x0032, 0x65E5, 0,
4515     16, 0x33EC, 0x0031, 0x0033, 0x65E5, 0,
4516     16, 0x33ED, 0x0031, 0x0034, 0x65E5, 0,
4517     16, 0x33EE, 0x0031, 0x0035, 0x65E5, 0,
4518     16, 0x33EF, 0x0031, 0x0036, 0x65E5, 0,
4519     16, 0x33F0, 0x0031, 0x0037, 0x65E5, 0,
4520     16, 0x33F1, 0x0031, 0x0038, 0x65E5, 0,
4521     16, 0x33F2, 0x0031, 0x0039, 0x65E5, 0,
4522     16, 0x33F3, 0x0032, 0x0030, 0x65E5, 0,
4523     16, 0x33F4, 0x0032, 0x0031, 0x65E5, 0,
4524     16, 0x33F5, 0x0032, 0x0032, 0x65E5, 0,
4525     16, 0x33F6, 0x0032, 0x0033, 0x65E5, 0,
4526     16, 0x33F7, 0x0032, 0x0034, 0x65E5, 0,
4527     16, 0x33F8, 0x0032, 0x0035, 0x65E5, 0,
4528     16, 0x33F9, 0x0032, 0x0036, 0x65E5, 0,
4529     16, 0x33FA, 0x0032, 0x0037, 0x65E5, 0,
4530     16, 0x33FB, 0x0032, 0x0038, 0x65E5, 0,
4531     16, 0x33FC, 0x0032, 0x0039, 0x65E5, 0,
4532     16, 0x33FD, 0x0033, 0x0030, 0x65E5, 0,
4533     16, 0x33FE, 0x0033, 0x0031, 0x65E5, 0,
4534     1, 0xF900, 0x8C48, 0,
4535     1, 0xF901, 0x66F4, 0,
4536     1, 0xF902, 0x8ECA, 0,
4537     1, 0xF903, 0x8CC8, 0,
4538     1, 0xF904, 0x6ED1, 0,
4539     1, 0xF905, 0x4E32, 0,
4540     1, 0xF906, 0x53E5, 0,
4541     1, 0xF907, 0x9F9C, 0,
4542     1, 0xF908, 0x9F9C, 0,
4543     1, 0xF909, 0x5951, 0,
4544     1, 0xF90A, 0x91D1, 0,
4545     1, 0xF90B, 0x5587, 0,
4546     1, 0xF90C, 0x5948, 0,
4547     1, 0xF90D, 0x61F6, 0,
4548     1, 0xF90E, 0x7669, 0,
4549     1, 0xF90F, 0x7F85, 0,
4550     1, 0xF910, 0x863F, 0,
4551     1, 0xF911, 0x87BA, 0,
4552     1, 0xF912, 0x88F8, 0,
4553     1, 0xF913, 0x908F, 0,
4554     1, 0xF914, 0x6A02, 0,
4555     1, 0xF915, 0x6D1B, 0,
4556     1, 0xF916, 0x70D9, 0,
4557     1, 0xF917, 0x73DE, 0,
4558     1, 0xF918, 0x843D, 0,
4559     1, 0xF919, 0x916A, 0,
4560     1, 0xF91A, 0x99F1, 0,
4561     1, 0xF91B, 0x4E82, 0,
4562     1, 0xF91C, 0x5375, 0,
4563     1, 0xF91D, 0x6B04, 0,
4564     1, 0xF91E, 0x721B, 0,
4565     1, 0xF91F, 0x862D, 0,
4566     1, 0xF920, 0x9E1E, 0,
4567     1, 0xF921, 0x5D50, 0,
4568     1, 0xF922, 0x6FEB, 0,
4569     1, 0xF923, 0x85CD, 0,
4570     1, 0xF924, 0x8964, 0,
4571     1, 0xF925, 0x62C9, 0,
4572     1, 0xF926, 0x81D8, 0,
4573     1, 0xF927, 0x881F, 0,
4574     1, 0xF928, 0x5ECA, 0,
4575     1, 0xF929, 0x6717, 0,
4576     1, 0xF92A, 0x6D6A, 0,
4577     1, 0xF92B, 0x72FC, 0,
4578     1, 0xF92C, 0x90CE, 0,
4579     1, 0xF92D, 0x4F86, 0,
4580     1, 0xF92E, 0x51B7, 0,
4581     1, 0xF92F, 0x52DE, 0,
4582     1, 0xF930, 0x64C4, 0,
4583     1, 0xF931, 0x6AD3, 0,
4584     1, 0xF932, 0x7210, 0,
4585     1, 0xF933, 0x76E7, 0,
4586     1, 0xF934, 0x8001, 0,
4587     1, 0xF935, 0x8606, 0,
4588     1, 0xF936, 0x865C, 0,
4589     1, 0xF937, 0x8DEF, 0,
4590     1, 0xF938, 0x9732, 0,
4591     1, 0xF939, 0x9B6F, 0,
4592     1, 0xF93A, 0x9DFA, 0,
4593     1, 0xF93B, 0x788C, 0,
4594     1, 0xF93C, 0x797F, 0,
4595     1, 0xF93D, 0x7DA0, 0,
4596     1, 0xF93E, 0x83C9, 0,
4597     1, 0xF93F, 0x9304, 0,
4598     1, 0xF940, 0x9E7F, 0,
4599     1, 0xF941, 0x8AD6, 0,
4600     1, 0xF942, 0x58DF, 0,
4601     1, 0xF943, 0x5F04, 0,
4602     1, 0xF944, 0x7C60, 0,
4603     1, 0xF945, 0x807E, 0,
4604     1, 0xF946, 0x7262, 0,
4605     1, 0xF947, 0x78CA, 0,
4606     1, 0xF948, 0x8CC2, 0,
4607     1, 0xF949, 0x96F7, 0,
4608     1, 0xF94A, 0x58D8, 0,
4609     1, 0xF94B, 0x5C62, 0,
4610     1, 0xF94C, 0x6A13, 0,
4611     1, 0xF94D, 0x6DDA, 0,
4612     1, 0xF94E, 0x6F0F, 0,
4613     1, 0xF94F, 0x7D2F, 0,
4614     1, 0xF950, 0x7E37, 0,
4615     1, 0xF951, 0x96FB, 0,
4616     1, 0xF952, 0x52D2, 0,
4617     1, 0xF953, 0x808B, 0,
4618     1, 0xF954, 0x51DC, 0,
4619     1, 0xF955, 0x51CC, 0,
4620     1, 0xF956, 0x7A1C, 0,
4621     1, 0xF957, 0x7DBE, 0,
4622     1, 0xF958, 0x83F1, 0,
4623     1, 0xF959, 0x9675, 0,
4624     1, 0xF95A, 0x8B80, 0,
4625     1, 0xF95B, 0x62CF, 0,
4626     1, 0xF95C, 0x6A02, 0,
4627     1, 0xF95D, 0x8AFE, 0,
4628     1, 0xF95E, 0x4E39, 0,
4629     1, 0xF95F, 0x5BE7, 0,
4630     1, 0xF960, 0x6012, 0,
4631     1, 0xF961, 0x7387, 0,
4632     1, 0xF962, 0x7570, 0,
4633     1, 0xF963, 0x5317, 0,
4634     1, 0xF964, 0x78FB, 0,
4635     1, 0xF965, 0x4FBF, 0,
4636     1, 0xF966, 0x5FA9, 0,
4637     1, 0xF967, 0x4E0D, 0,
4638     1, 0xF968, 0x6CCC, 0,
4639     1, 0xF969, 0x6578, 0,
4640     1, 0xF96A, 0x7D22, 0,
4641     1, 0xF96B, 0x53C3, 0,
4642     1, 0xF96C, 0x585E, 0,
4643     1, 0xF96D, 0x7701, 0,
4644     1, 0xF96E, 0x8449, 0,
4645     1, 0xF96F, 0x8AAA, 0,
4646     1, 0xF970, 0x6BBA, 0,
4647     1, 0xF971, 0x8FB0, 0,
4648     1, 0xF972, 0x6C88, 0,
4649     1, 0xF973, 0x62FE, 0,
4650     1, 0xF974, 0x82E5, 0,
4651     1, 0xF975, 0x63A0, 0,
4652     1, 0xF976, 0x7565, 0,
4653     1, 0xF977, 0x4EAE, 0,
4654     1, 0xF978, 0x5169, 0,
4655     1, 0xF979, 0x51C9, 0,
4656     1, 0xF97A, 0x6881, 0,
4657     1, 0xF97B, 0x7CE7, 0,
4658     1, 0xF97C, 0x826F, 0,
4659     1, 0xF97D, 0x8AD2, 0,
4660     1, 0xF97E, 0x91CF, 0,
4661     1, 0xF97F, 0x52F5, 0,
4662     1, 0xF980, 0x5442, 0,
4663     1, 0xF981, 0x5973, 0,
4664     1, 0xF982, 0x5EEC, 0,
4665     1, 0xF983, 0x65C5, 0,
4666     1, 0xF984, 0x6FFE, 0,
4667     1, 0xF985, 0x792A, 0,
4668     1, 0xF986, 0x95AD, 0,
4669     1, 0xF987, 0x9A6A, 0,
4670     1, 0xF988, 0x9E97, 0,
4671     1, 0xF989, 0x9ECE, 0,
4672     1, 0xF98A, 0x529B, 0,
4673     1, 0xF98B, 0x66C6, 0,
4674     1, 0xF98C, 0x6B77, 0,
4675     1, 0xF98D, 0x8F62, 0,
4676     1, 0xF98E, 0x5E74, 0,
4677     1, 0xF98F, 0x6190, 0,
4678     1, 0xF990, 0x6200, 0,
4679     1, 0xF991, 0x649A, 0,
4680     1, 0xF992, 0x6F23, 0,
4681     1, 0xF993, 0x7149, 0,
4682     1, 0xF994, 0x7489, 0,
4683     1, 0xF995, 0x79CA, 0,
4684     1, 0xF996, 0x7DF4, 0,
4685     1, 0xF997, 0x806F, 0,
4686     1, 0xF998, 0x8F26, 0,
4687     1, 0xF999, 0x84EE, 0,
4688     1, 0xF99A, 0x9023, 0,
4689     1, 0xF99B, 0x934A, 0,
4690     1, 0xF99C, 0x5217, 0,
4691     1, 0xF99D, 0x52A3, 0,
4692     1, 0xF99E, 0x54BD, 0,
4693     1, 0xF99F, 0x70C8, 0,
4694     1, 0xF9A0, 0x88C2, 0,
4695     1, 0xF9A1, 0x8AAA, 0,
4696     1, 0xF9A2, 0x5EC9, 0,
4697     1, 0xF9A3, 0x5FF5, 0,
4698     1, 0xF9A4, 0x637B, 0,
4699     1, 0xF9A5, 0x6BAE, 0,
4700     1, 0xF9A6, 0x7C3E, 0,
4701     1, 0xF9A7, 0x7375, 0,
4702     1, 0xF9A8, 0x4EE4, 0,
4703     1, 0xF9A9, 0x56F9, 0,
4704     1, 0xF9AA, 0x5BE7, 0,
4705     1, 0xF9AB, 0x5DBA, 0,
4706     1, 0xF9AC, 0x601C, 0,
4707     1, 0xF9AD, 0x73B2, 0,
4708     1, 0xF9AE, 0x7469, 0,
4709     1, 0xF9AF, 0x7F9A, 0,
4710     1, 0xF9B0, 0x8046, 0,
4711     1, 0xF9B1, 0x9234, 0,
4712     1, 0xF9B2, 0x96F6, 0,
4713     1, 0xF9B3, 0x9748, 0,
4714     1, 0xF9B4, 0x9818, 0,
4715     1, 0xF9B5, 0x4F8B, 0,
4716     1, 0xF9B6, 0x79AE, 0,
4717     1, 0xF9B7, 0x91B4, 0,
4718     1, 0xF9B8, 0x96B8, 0,
4719     1, 0xF9B9, 0x60E1, 0,
4720     1, 0xF9BA, 0x4E86, 0,
4721     1, 0xF9BB, 0x50DA, 0,
4722     1, 0xF9BC, 0x5BEE, 0,
4723     1, 0xF9BD, 0x5C3F, 0,
4724     1, 0xF9BE, 0x6599, 0,
4725     1, 0xF9BF, 0x6A02, 0,
4726     1, 0xF9C0, 0x71CE, 0,
4727     1, 0xF9C1, 0x7642, 0,
4728     1, 0xF9C2, 0x84FC, 0,
4729     1, 0xF9C3, 0x907C, 0,
4730     1, 0xF9C4, 0x9F8D, 0,
4731     1, 0xF9C5, 0x6688, 0,
4732     1, 0xF9C6, 0x962E, 0,
4733     1, 0xF9C7, 0x5289, 0,
4734     1, 0xF9C8, 0x677B, 0,
4735     1, 0xF9C9, 0x67F3, 0,
4736     1, 0xF9CA, 0x6D41, 0,
4737     1, 0xF9CB, 0x6E9C, 0,
4738     1, 0xF9CC, 0x7409, 0,
4739     1, 0xF9CD, 0x7559, 0,
4740     1, 0xF9CE, 0x786B, 0,
4741     1, 0xF9CF, 0x7D10, 0,
4742     1, 0xF9D0, 0x985E, 0,
4743     1, 0xF9D1, 0x516D, 0,
4744     1, 0xF9D2, 0x622E, 0,
4745     1, 0xF9D3, 0x9678, 0,
4746     1, 0xF9D4, 0x502B, 0,
4747     1, 0xF9D5, 0x5D19, 0,
4748     1, 0xF9D6, 0x6DEA, 0,
4749     1, 0xF9D7, 0x8F2A, 0,
4750     1, 0xF9D8, 0x5F8B, 0,
4751     1, 0xF9D9, 0x6144, 0,
4752     1, 0xF9DA, 0x6817, 0,
4753     1, 0xF9DB, 0x7387, 0,
4754     1, 0xF9DC, 0x9686, 0,
4755     1, 0xF9DD, 0x5229, 0,
4756     1, 0xF9DE, 0x540F, 0,
4757     1, 0xF9DF, 0x5C65, 0,
4758     1, 0xF9E0, 0x6613, 0,
4759     1, 0xF9E1, 0x674E, 0,
4760     1, 0xF9E2, 0x68A8, 0,
4761     1, 0xF9E3, 0x6CE5, 0,
4762     1, 0xF9E4, 0x7406, 0,
4763     1, 0xF9E5, 0x75E2, 0,
4764     1, 0xF9E6, 0x7F79, 0,
4765     1, 0xF9E7, 0x88CF, 0,
4766     1, 0xF9E8, 0x88E1, 0,
4767     1, 0xF9E9, 0x91CC, 0,
4768     1, 0xF9EA, 0x96E2, 0,
4769     1, 0xF9EB, 0x533F, 0,
4770     1, 0xF9EC, 0x6EBA, 0,
4771     1, 0xF9ED, 0x541D, 0,
4772     1, 0xF9EE, 0x71D0, 0,
4773     1, 0xF9EF, 0x7498, 0,
4774     1, 0xF9F0, 0x85FA, 0,
4775     1, 0xF9F1, 0x96A3, 0,
4776     1, 0xF9F2, 0x9C57, 0,
4777     1, 0xF9F3, 0x9E9F, 0,
4778     1, 0xF9F4, 0x6797, 0,
4779     1, 0xF9F5, 0x6DCB, 0,
4780     1, 0xF9F6, 0x81E8, 0,
4781     1, 0xF9F7, 0x7ACB, 0,
4782     1, 0xF9F8, 0x7B20, 0,
4783     1, 0xF9F9, 0x7C92, 0,
4784     1, 0xF9FA, 0x72C0, 0,
4785     1, 0xF9FB, 0x7099, 0,
4786     1, 0xF9FC, 0x8B58, 0,
4787     1, 0xF9FD, 0x4EC0, 0,
4788     1, 0xF9FE, 0x8336, 0,
4789     1, 0xF9FF, 0x523A, 0,
4790     1, 0xFA00, 0x5207, 0,
4791     1, 0xFA01, 0x5EA6, 0,
4792     1, 0xFA02, 0x62D3, 0,
4793     1, 0xFA03, 0x7CD6, 0,
4794     1, 0xFA04, 0x5B85, 0,
4795     1, 0xFA05, 0x6D1E, 0,
4796     1, 0xFA06, 0x66B4, 0,
4797     1, 0xFA07, 0x8F3B, 0,
4798     1, 0xFA08, 0x884C, 0,
4799     1, 0xFA09, 0x964D, 0,
4800     1, 0xFA0A, 0x898B, 0,
4801     1, 0xFA0B, 0x5ED3, 0,
4802     1, 0xFA0C, 0x5140, 0,
4803     1, 0xFA0D, 0x55C0, 0,
4804     1, 0xFA10, 0x585A, 0,
4805     1, 0xFA12, 0x6674, 0,
4806     1, 0xFA15, 0x51DE, 0,
4807     1, 0xFA16, 0x732A, 0,
4808     1, 0xFA17, 0x76CA, 0,
4809     1, 0xFA18, 0x793C, 0,
4810     1, 0xFA19, 0x795E, 0,
4811     1, 0xFA1A, 0x7965, 0,
4812     1, 0xFA1B, 0x798F, 0,
4813     1, 0xFA1C, 0x9756, 0,
4814     1, 0xFA1D, 0x7CBE, 0,
4815     1, 0xFA1E, 0x7FBD, 0,
4816     1, 0xFA20, 0x8612, 0,
4817     1, 0xFA22, 0x8AF8, 0,
4818     1, 0xFA25, 0x9038, 0,
4819     1, 0xFA26, 0x90FD, 0,
4820     1, 0xFA2A, 0x98EF, 0,
4821     1, 0xFA2B, 0x98FC, 0,
4822     1, 0xFA2C, 0x9928, 0,
4823     1, 0xFA2D, 0x9DB4, 0,
4824     16, 0xFB00, 0x0066, 0x0066, 0,
4825     16, 0xFB01, 0x0066, 0x0069, 0,
4826     16, 0xFB02, 0x0066, 0x006C, 0,
4827     16, 0xFB03, 0x0066, 0x0066, 0x0069, 0,
4828     16, 0xFB04, 0x0066, 0x0066, 0x006C, 0,
4829     16, 0xFB05, 0x017F, 0x0074, 0,
4830     16, 0xFB06, 0x0073, 0x0074, 0,
4831     16, 0xFB13, 0x0574, 0x0576, 0,
4832     16, 0xFB14, 0x0574, 0x0565, 0,
4833     16, 0xFB15, 0x0574, 0x056B, 0,
4834     16, 0xFB16, 0x057E, 0x0576, 0,
4835     16, 0xFB17, 0x0574, 0x056D, 0,
4836     1, 0xFB1D, 0x05D9, 0x05B4, 0,
4837     1, 0xFB1F, 0x05F2, 0x05B7, 0,
4838     2, 0xFB20, 0x05E2, 0,
4839     2, 0xFB21, 0x05D0, 0,
4840     2, 0xFB22, 0x05D3, 0,
4841     2, 0xFB23, 0x05D4, 0,
4842     2, 0xFB24, 0x05DB, 0,
4843     2, 0xFB25, 0x05DC, 0,
4844     2, 0xFB26, 0x05DD, 0,
4845     2, 0xFB27, 0x05E8, 0,
4846     2, 0xFB28, 0x05EA, 0,
4847     2, 0xFB29, 0x002B, 0,
4848     1, 0xFB2A, 0x05E9, 0x05C1, 0,
4849     1, 0xFB2B, 0x05E9, 0x05C2, 0,
4850     1, 0xFB2C, 0xFB49, 0x05C1, 0,
4851     1, 0xFB2D, 0xFB49, 0x05C2, 0,
4852     1, 0xFB2E, 0x05D0, 0x05B7, 0,
4853     1, 0xFB2F, 0x05D0, 0x05B8, 0,
4854     1, 0xFB30, 0x05D0, 0x05BC, 0,
4855     1, 0xFB31, 0x05D1, 0x05BC, 0,
4856     1, 0xFB32, 0x05D2, 0x05BC, 0,
4857     1, 0xFB33, 0x05D3, 0x05BC, 0,
4858     1, 0xFB34, 0x05D4, 0x05BC, 0,
4859     1, 0xFB35, 0x05D5, 0x05BC, 0,
4860     1, 0xFB36, 0x05D6, 0x05BC, 0,
4861     1, 0xFB38, 0x05D8, 0x05BC, 0,
4862     1, 0xFB39, 0x05D9, 0x05BC, 0,
4863     1, 0xFB3A, 0x05DA, 0x05BC, 0,
4864     1, 0xFB3B, 0x05DB, 0x05BC, 0,
4865     1, 0xFB3C, 0x05DC, 0x05BC, 0,
4866     1, 0xFB3E, 0x05DE, 0x05BC, 0,
4867     1, 0xFB40, 0x05E0, 0x05BC, 0,
4868     1, 0xFB41, 0x05E1, 0x05BC, 0,
4869     1, 0xFB43, 0x05E3, 0x05BC, 0,
4870     1, 0xFB44, 0x05E4, 0x05BC, 0,
4871     1, 0xFB46, 0x05E6, 0x05BC, 0,
4872     1, 0xFB47, 0x05E7, 0x05BC, 0,
4873     1, 0xFB48, 0x05E8, 0x05BC, 0,
4874     1, 0xFB49, 0x05E9, 0x05BC, 0,
4875     1, 0xFB4A, 0x05EA, 0x05BC, 0,
4876     1, 0xFB4B, 0x05D5, 0x05B9, 0,
4877     1, 0xFB4C, 0x05D1, 0x05BF, 0,
4878     1, 0xFB4D, 0x05DB, 0x05BF, 0,
4879     1, 0xFB4E, 0x05E4, 0x05BF, 0,
4880     16, 0xFB4F, 0x05D0, 0x05DC, 0,
4881     7, 0xFB50, 0x0671, 0,
4882     6, 0xFB51, 0x0671, 0,
4883     7, 0xFB52, 0x067B, 0,
4884     6, 0xFB53, 0x067B, 0,
4885     4, 0xFB54, 0x067B, 0,
4886     5, 0xFB55, 0x067B, 0,
4887     7, 0xFB56, 0x067E, 0,
4888     6, 0xFB57, 0x067E, 0,
4889     4, 0xFB58, 0x067E, 0,
4890     5, 0xFB59, 0x067E, 0,
4891     7, 0xFB5A, 0x0680, 0,
4892     6, 0xFB5B, 0x0680, 0,
4893     4, 0xFB5C, 0x0680, 0,
4894     5, 0xFB5D, 0x0680, 0,
4895     7, 0xFB5E, 0x067A, 0,
4896     6, 0xFB5F, 0x067A, 0,
4897     4, 0xFB60, 0x067A, 0,
4898     5, 0xFB61, 0x067A, 0,
4899     7, 0xFB62, 0x067F, 0,
4900     6, 0xFB63, 0x067F, 0,
4901     4, 0xFB64, 0x067F, 0,
4902     5, 0xFB65, 0x067F, 0,
4903     7, 0xFB66, 0x0679, 0,
4904     6, 0xFB67, 0x0679, 0,
4905     4, 0xFB68, 0x0679, 0,
4906     5, 0xFB69, 0x0679, 0,
4907     7, 0xFB6A, 0x06A4, 0,
4908     6, 0xFB6B, 0x06A4, 0,
4909     4, 0xFB6C, 0x06A4, 0,
4910     5, 0xFB6D, 0x06A4, 0,
4911     7, 0xFB6E, 0x06A6, 0,
4912     6, 0xFB6F, 0x06A6, 0,
4913     4, 0xFB70, 0x06A6, 0,
4914     5, 0xFB71, 0x06A6, 0,
4915     7, 0xFB72, 0x0684, 0,
4916     6, 0xFB73, 0x0684, 0,
4917     4, 0xFB74, 0x0684, 0,
4918     5, 0xFB75, 0x0684, 0,
4919     7, 0xFB76, 0x0683, 0,
4920     6, 0xFB77, 0x0683, 0,
4921     4, 0xFB78, 0x0683, 0,
4922     5, 0xFB79, 0x0683, 0,
4923     7, 0xFB7A, 0x0686, 0,
4924     6, 0xFB7B, 0x0686, 0,
4925     4, 0xFB7C, 0x0686, 0,
4926     5, 0xFB7D, 0x0686, 0,
4927     7, 0xFB7E, 0x0687, 0,
4928     6, 0xFB7F, 0x0687, 0,
4929     4, 0xFB80, 0x0687, 0,
4930     5, 0xFB81, 0x0687, 0,
4931     7, 0xFB82, 0x068D, 0,
4932     6, 0xFB83, 0x068D, 0,
4933     7, 0xFB84, 0x068C, 0,
4934     6, 0xFB85, 0x068C, 0,
4935     7, 0xFB86, 0x068E, 0,
4936     6, 0xFB87, 0x068E, 0,
4937     7, 0xFB88, 0x0688, 0,
4938     6, 0xFB89, 0x0688, 0,
4939     7, 0xFB8A, 0x0698, 0,
4940     6, 0xFB8B, 0x0698, 0,
4941     7, 0xFB8C, 0x0691, 0,
4942     6, 0xFB8D, 0x0691, 0,
4943     7, 0xFB8E, 0x06A9, 0,
4944     6, 0xFB8F, 0x06A9, 0,
4945     4, 0xFB90, 0x06A9, 0,
4946     5, 0xFB91, 0x06A9, 0,
4947     7, 0xFB92, 0x06AF, 0,
4948     6, 0xFB93, 0x06AF, 0,
4949     4, 0xFB94, 0x06AF, 0,
4950     5, 0xFB95, 0x06AF, 0,
4951     7, 0xFB96, 0x06B3, 0,
4952     6, 0xFB97, 0x06B3, 0,
4953     4, 0xFB98, 0x06B3, 0,
4954     5, 0xFB99, 0x06B3, 0,
4955     7, 0xFB9A, 0x06B1, 0,
4956     6, 0xFB9B, 0x06B1, 0,
4957     4, 0xFB9C, 0x06B1, 0,
4958     5, 0xFB9D, 0x06B1, 0,
4959     7, 0xFB9E, 0x06BA, 0,
4960     6, 0xFB9F, 0x06BA, 0,
4961     7, 0xFBA0, 0x06BB, 0,
4962     6, 0xFBA1, 0x06BB, 0,
4963     4, 0xFBA2, 0x06BB, 0,
4964     5, 0xFBA3, 0x06BB, 0,
4965     7, 0xFBA4, 0x06C0, 0,
4966     6, 0xFBA5, 0x06C0, 0,
4967     7, 0xFBA6, 0x06C1, 0,
4968     6, 0xFBA7, 0x06C1, 0,
4969     4, 0xFBA8, 0x06C1, 0,
4970     5, 0xFBA9, 0x06C1, 0,
4971     7, 0xFBAA, 0x06BE, 0,
4972     6, 0xFBAB, 0x06BE, 0,
4973     4, 0xFBAC, 0x06BE, 0,
4974     5, 0xFBAD, 0x06BE, 0,
4975     7, 0xFBAE, 0x06D2, 0,
4976     6, 0xFBAF, 0x06D2, 0,
4977     7, 0xFBB0, 0x06D3, 0,
4978     6, 0xFBB1, 0x06D3, 0,
4979     7, 0xFBD3, 0x06AD, 0,
4980     6, 0xFBD4, 0x06AD, 0,
4981     4, 0xFBD5, 0x06AD, 0,
4982     5, 0xFBD6, 0x06AD, 0,
4983     7, 0xFBD7, 0x06C7, 0,
4984     6, 0xFBD8, 0x06C7, 0,
4985     7, 0xFBD9, 0x06C6, 0,
4986     6, 0xFBDA, 0x06C6, 0,
4987     7, 0xFBDB, 0x06C8, 0,
4988     6, 0xFBDC, 0x06C8, 0,
4989     7, 0xFBDD, 0x0677, 0,
4990     7, 0xFBDE, 0x06CB, 0,
4991     6, 0xFBDF, 0x06CB, 0,
4992     7, 0xFBE0, 0x06C5, 0,
4993     6, 0xFBE1, 0x06C5, 0,
4994     7, 0xFBE2, 0x06C9, 0,
4995     6, 0xFBE3, 0x06C9, 0,
4996     7, 0xFBE4, 0x06D0, 0,
4997     6, 0xFBE5, 0x06D0, 0,
4998     4, 0xFBE6, 0x06D0, 0,
4999     5, 0xFBE7, 0x06D0, 0,
5000     4, 0xFBE8, 0x0649, 0,
5001     5, 0xFBE9, 0x0649, 0,
5002     7, 0xFBEA, 0x0626, 0x0627, 0,
5003     6, 0xFBEB, 0x0626, 0x0627, 0,
5004     7, 0xFBEC, 0x0626, 0x06D5, 0,
5005     6, 0xFBED, 0x0626, 0x06D5, 0,
5006     7, 0xFBEE, 0x0626, 0x0648, 0,
5007     6, 0xFBEF, 0x0626, 0x0648, 0,
5008     7, 0xFBF0, 0x0626, 0x06C7, 0,
5009     6, 0xFBF1, 0x0626, 0x06C7, 0,
5010     7, 0xFBF2, 0x0626, 0x06C6, 0,
5011     6, 0xFBF3, 0x0626, 0x06C6, 0,
5012     7, 0xFBF4, 0x0626, 0x06C8, 0,
5013     6, 0xFBF5, 0x0626, 0x06C8, 0,
5014     7, 0xFBF6, 0x0626, 0x06D0, 0,
5015     6, 0xFBF7, 0x0626, 0x06D0, 0,
5016     4, 0xFBF8, 0x0626, 0x06D0, 0,
5017     7, 0xFBF9, 0x0626, 0x0649, 0,
5018     6, 0xFBFA, 0x0626, 0x0649, 0,
5019     4, 0xFBFB, 0x0626, 0x0649, 0,
5020     7, 0xFBFC, 0x06CC, 0,
5021     6, 0xFBFD, 0x06CC, 0,
5022     4, 0xFBFE, 0x06CC, 0,
5023     5, 0xFBFF, 0x06CC, 0,
5024     7, 0xFC00, 0x0626, 0x062C, 0,
5025     7, 0xFC01, 0x0626, 0x062D, 0,
5026     7, 0xFC02, 0x0626, 0x0645, 0,
5027     7, 0xFC03, 0x0626, 0x0649, 0,
5028     7, 0xFC04, 0x0626, 0x064A, 0,
5029     7, 0xFC05, 0x0628, 0x062C, 0,
5030     7, 0xFC06, 0x0628, 0x062D, 0,
5031     7, 0xFC07, 0x0628, 0x062E, 0,
5032     7, 0xFC08, 0x0628, 0x0645, 0,
5033     7, 0xFC09, 0x0628, 0x0649, 0,
5034     7, 0xFC0A, 0x0628, 0x064A, 0,
5035     7, 0xFC0B, 0x062A, 0x062C, 0,
5036     7, 0xFC0C, 0x062A, 0x062D, 0,
5037     7, 0xFC0D, 0x062A, 0x062E, 0,
5038     7, 0xFC0E, 0x062A, 0x0645, 0,
5039     7, 0xFC0F, 0x062A, 0x0649, 0,
5040     7, 0xFC10, 0x062A, 0x064A, 0,
5041     7, 0xFC11, 0x062B, 0x062C, 0,
5042     7, 0xFC12, 0x062B, 0x0645, 0,
5043     7, 0xFC13, 0x062B, 0x0649, 0,
5044     7, 0xFC14, 0x062B, 0x064A, 0,
5045     7, 0xFC15, 0x062C, 0x062D, 0,
5046     7, 0xFC16, 0x062C, 0x0645, 0,
5047     7, 0xFC17, 0x062D, 0x062C, 0,
5048     7, 0xFC18, 0x062D, 0x0645, 0,
5049     7, 0xFC19, 0x062E, 0x062C, 0,
5050     7, 0xFC1A, 0x062E, 0x062D, 0,
5051     7, 0xFC1B, 0x062E, 0x0645, 0,
5052     7, 0xFC1C, 0x0633, 0x062C, 0,
5053     7, 0xFC1D, 0x0633, 0x062D, 0,
5054     7, 0xFC1E, 0x0633, 0x062E, 0,
5055     7, 0xFC1F, 0x0633, 0x0645, 0,
5056     7, 0xFC20, 0x0635, 0x062D, 0,
5057     7, 0xFC21, 0x0635, 0x0645, 0,
5058     7, 0xFC22, 0x0636, 0x062C, 0,
5059     7, 0xFC23, 0x0636, 0x062D, 0,
5060     7, 0xFC24, 0x0636, 0x062E, 0,
5061     7, 0xFC25, 0x0636, 0x0645, 0,
5062     7, 0xFC26, 0x0637, 0x062D, 0,
5063     7, 0xFC27, 0x0637, 0x0645, 0,
5064     7, 0xFC28, 0x0638, 0x0645, 0,
5065     7, 0xFC29, 0x0639, 0x062C, 0,
5066     7, 0xFC2A, 0x0639, 0x0645, 0,
5067     7, 0xFC2B, 0x063A, 0x062C, 0,
5068     7, 0xFC2C, 0x063A, 0x0645, 0,
5069     7, 0xFC2D, 0x0641, 0x062C, 0,
5070     7, 0xFC2E, 0x0641, 0x062D, 0,
5071     7, 0xFC2F, 0x0641, 0x062E, 0,
5072     7, 0xFC30, 0x0641, 0x0645, 0,
5073     7, 0xFC31, 0x0641, 0x0649, 0,
5074     7, 0xFC32, 0x0641, 0x064A, 0,
5075     7, 0xFC33, 0x0642, 0x062D, 0,
5076     7, 0xFC34, 0x0642, 0x0645, 0,
5077     7, 0xFC35, 0x0642, 0x0649, 0,
5078     7, 0xFC36, 0x0642, 0x064A, 0,
5079     7, 0xFC37, 0x0643, 0x0627, 0,
5080     7, 0xFC38, 0x0643, 0x062C, 0,
5081     7, 0xFC39, 0x0643, 0x062D, 0,
5082     7, 0xFC3A, 0x0643, 0x062E, 0,
5083     7, 0xFC3B, 0x0643, 0x0644, 0,
5084     7, 0xFC3C, 0x0643, 0x0645, 0,
5085     7, 0xFC3D, 0x0643, 0x0649, 0,
5086     7, 0xFC3E, 0x0643, 0x064A, 0,
5087     7, 0xFC3F, 0x0644, 0x062C, 0,
5088     7, 0xFC40, 0x0644, 0x062D, 0,
5089     7, 0xFC41, 0x0644, 0x062E, 0,
5090     7, 0xFC42, 0x0644, 0x0645, 0,
5091     7, 0xFC43, 0x0644, 0x0649, 0,
5092     7, 0xFC44, 0x0644, 0x064A, 0,
5093     7, 0xFC45, 0x0645, 0x062C, 0,
5094     7, 0xFC46, 0x0645, 0x062D, 0,
5095     7, 0xFC47, 0x0645, 0x062E, 0,
5096     7, 0xFC48, 0x0645, 0x0645, 0,
5097     7, 0xFC49, 0x0645, 0x0649, 0,
5098     7, 0xFC4A, 0x0645, 0x064A, 0,
5099     7, 0xFC4B, 0x0646, 0x062C, 0,
5100     7, 0xFC4C, 0x0646, 0x062D, 0,
5101     7, 0xFC4D, 0x0646, 0x062E, 0,
5102     7, 0xFC4E, 0x0646, 0x0645, 0,
5103     7, 0xFC4F, 0x0646, 0x0649, 0,
5104     7, 0xFC50, 0x0646, 0x064A, 0,
5105     7, 0xFC51, 0x0647, 0x062C, 0,
5106     7, 0xFC52, 0x0647, 0x0645, 0,
5107     7, 0xFC53, 0x0647, 0x0649, 0,
5108     7, 0xFC54, 0x0647, 0x064A, 0,
5109     7, 0xFC55, 0x064A, 0x062C, 0,
5110     7, 0xFC56, 0x064A, 0x062D, 0,
5111     7, 0xFC57, 0x064A, 0x062E, 0,
5112     7, 0xFC58, 0x064A, 0x0645, 0,
5113     7, 0xFC59, 0x064A, 0x0649, 0,
5114     7, 0xFC5A, 0x064A, 0x064A, 0,
5115     7, 0xFC5B, 0x0630, 0x0670, 0,
5116     7, 0xFC5C, 0x0631, 0x0670, 0,
5117     7, 0xFC5D, 0x0649, 0x0670, 0,
5118     7, 0xFC5E, 0x0020, 0x064C, 0x0651, 0,
5119     7, 0xFC5F, 0x0020, 0x064D, 0x0651, 0,
5120     7, 0xFC60, 0x0020, 0x064E, 0x0651, 0,
5121     7, 0xFC61, 0x0020, 0x064F, 0x0651, 0,
5122     7, 0xFC62, 0x0020, 0x0650, 0x0651, 0,
5123     7, 0xFC63, 0x0020, 0x0651, 0x0670, 0,
5124     6, 0xFC64, 0x0626, 0x0631, 0,
5125     6, 0xFC65, 0x0626, 0x0632, 0,
5126     6, 0xFC66, 0x0626, 0x0645, 0,
5127     6, 0xFC67, 0x0626, 0x0646, 0,
5128     6, 0xFC68, 0x0626, 0x0649, 0,
5129     6, 0xFC69, 0x0626, 0x064A, 0,
5130     6, 0xFC6A, 0x0628, 0x0631, 0,
5131     6, 0xFC6B, 0x0628, 0x0632, 0,
5132     6, 0xFC6C, 0x0628, 0x0645, 0,
5133     6, 0xFC6D, 0x0628, 0x0646, 0,
5134     6, 0xFC6E, 0x0628, 0x0649, 0,
5135     6, 0xFC6F, 0x0628, 0x064A, 0,
5136     6, 0xFC70, 0x062A, 0x0631, 0,
5137     6, 0xFC71, 0x062A, 0x0632, 0,
5138     6, 0xFC72, 0x062A, 0x0645, 0,
5139     6, 0xFC73, 0x062A, 0x0646, 0,
5140     6, 0xFC74, 0x062A, 0x0649, 0,
5141     6, 0xFC75, 0x062A, 0x064A, 0,
5142     6, 0xFC76, 0x062B, 0x0631, 0,
5143     6, 0xFC77, 0x062B, 0x0632, 0,
5144     6, 0xFC78, 0x062B, 0x0645, 0,
5145     6, 0xFC79, 0x062B, 0x0646, 0,
5146     6, 0xFC7A, 0x062B, 0x0649, 0,
5147     6, 0xFC7B, 0x062B, 0x064A, 0,
5148     6, 0xFC7C, 0x0641, 0x0649, 0,
5149     6, 0xFC7D, 0x0641, 0x064A, 0,
5150     6, 0xFC7E, 0x0642, 0x0649, 0,
5151     6, 0xFC7F, 0x0642, 0x064A, 0,
5152     6, 0xFC80, 0x0643, 0x0627, 0,
5153     6, 0xFC81, 0x0643, 0x0644, 0,
5154     6, 0xFC82, 0x0643, 0x0645, 0,
5155     6, 0xFC83, 0x0643, 0x0649, 0,
5156     6, 0xFC84, 0x0643, 0x064A, 0,
5157     6, 0xFC85, 0x0644, 0x0645, 0,
5158     6, 0xFC86, 0x0644, 0x0649, 0,
5159     6, 0xFC87, 0x0644, 0x064A, 0,
5160     6, 0xFC88, 0x0645, 0x0627, 0,
5161     6, 0xFC89, 0x0645, 0x0645, 0,
5162     6, 0xFC8A, 0x0646, 0x0631, 0,
5163     6, 0xFC8B, 0x0646, 0x0632, 0,
5164     6, 0xFC8C, 0x0646, 0x0645, 0,
5165     6, 0xFC8D, 0x0646, 0x0646, 0,
5166     6, 0xFC8E, 0x0646, 0x0649, 0,
5167     6, 0xFC8F, 0x0646, 0x064A, 0,
5168     6, 0xFC90, 0x0649, 0x0670, 0,
5169     6, 0xFC91, 0x064A, 0x0631, 0,
5170     6, 0xFC92, 0x064A, 0x0632, 0,
5171     6, 0xFC93, 0x064A, 0x0645, 0,
5172     6, 0xFC94, 0x064A, 0x0646, 0,
5173     6, 0xFC95, 0x064A, 0x0649, 0,
5174     6, 0xFC96, 0x064A, 0x064A, 0,
5175     4, 0xFC97, 0x0626, 0x062C, 0,
5176     4, 0xFC98, 0x0626, 0x062D, 0,
5177     4, 0xFC99, 0x0626, 0x062E, 0,
5178     4, 0xFC9A, 0x0626, 0x0645, 0,
5179     4, 0xFC9B, 0x0626, 0x0647, 0,
5180     4, 0xFC9C, 0x0628, 0x062C, 0,
5181     4, 0xFC9D, 0x0628, 0x062D, 0,
5182     4, 0xFC9E, 0x0628, 0x062E, 0,
5183     4, 0xFC9F, 0x0628, 0x0645, 0,
5184     4, 0xFCA0, 0x0628, 0x0647, 0,
5185     4, 0xFCA1, 0x062A, 0x062C, 0,
5186     4, 0xFCA2, 0x062A, 0x062D, 0,
5187     4, 0xFCA3, 0x062A, 0x062E, 0,
5188     4, 0xFCA4, 0x062A, 0x0645, 0,
5189     4, 0xFCA5, 0x062A, 0x0647, 0,
5190     4, 0xFCA6, 0x062B, 0x0645, 0,
5191     4, 0xFCA7, 0x062C, 0x062D, 0,
5192     4, 0xFCA8, 0x062C, 0x0645, 0,
5193     4, 0xFCA9, 0x062D, 0x062C, 0,
5194     4, 0xFCAA, 0x062D, 0x0645, 0,
5195     4, 0xFCAB, 0x062E, 0x062C, 0,
5196     4, 0xFCAC, 0x062E, 0x0645, 0,
5197     4, 0xFCAD, 0x0633, 0x062C, 0,
5198     4, 0xFCAE, 0x0633, 0x062D, 0,
5199     4, 0xFCAF, 0x0633, 0x062E, 0,
5200     4, 0xFCB0, 0x0633, 0x0645, 0,
5201     4, 0xFCB1, 0x0635, 0x062D, 0,
5202     4, 0xFCB2, 0x0635, 0x062E, 0,
5203     4, 0xFCB3, 0x0635, 0x0645, 0,
5204     4, 0xFCB4, 0x0636, 0x062C, 0,
5205     4, 0xFCB5, 0x0636, 0x062D, 0,
5206     4, 0xFCB6, 0x0636, 0x062E, 0,
5207     4, 0xFCB7, 0x0636, 0x0645, 0,
5208     4, 0xFCB8, 0x0637, 0x062D, 0,
5209     4, 0xFCB9, 0x0638, 0x0645, 0,
5210     4, 0xFCBA, 0x0639, 0x062C, 0,
5211     4, 0xFCBB, 0x0639, 0x0645, 0,
5212     4, 0xFCBC, 0x063A, 0x062C, 0,
5213     4, 0xFCBD, 0x063A, 0x0645, 0,
5214     4, 0xFCBE, 0x0641, 0x062C, 0,
5215     4, 0xFCBF, 0x0641, 0x062D, 0,
5216     4, 0xFCC0, 0x0641, 0x062E, 0,
5217     4, 0xFCC1, 0x0641, 0x0645, 0,
5218     4, 0xFCC2, 0x0642, 0x062D, 0,
5219     4, 0xFCC3, 0x0642, 0x0645, 0,
5220     4, 0xFCC4, 0x0643, 0x062C, 0,
5221     4, 0xFCC5, 0x0643, 0x062D, 0,
5222     4, 0xFCC6, 0x0643, 0x062E, 0,
5223     4, 0xFCC7, 0x0643, 0x0644, 0,
5224     4, 0xFCC8, 0x0643, 0x0645, 0,
5225     4, 0xFCC9, 0x0644, 0x062C, 0,
5226     4, 0xFCCA, 0x0644, 0x062D, 0,
5227     4, 0xFCCB, 0x0644, 0x062E, 0,
5228     4, 0xFCCC, 0x0644, 0x0645, 0,
5229     4, 0xFCCD, 0x0644, 0x0647, 0,
5230     4, 0xFCCE, 0x0645, 0x062C, 0,
5231     4, 0xFCCF, 0x0645, 0x062D, 0,
5232     4, 0xFCD0, 0x0645, 0x062E, 0,
5233     4, 0xFCD1, 0x0645, 0x0645, 0,
5234     4, 0xFCD2, 0x0646, 0x062C, 0,
5235     4, 0xFCD3, 0x0646, 0x062D, 0,
5236     4, 0xFCD4, 0x0646, 0x062E, 0,
5237     4, 0xFCD5, 0x0646, 0x0645, 0,
5238     4, 0xFCD6, 0x0646, 0x0647, 0,
5239     4, 0xFCD7, 0x0647, 0x062C, 0,
5240     4, 0xFCD8, 0x0647, 0x0645, 0,
5241     4, 0xFCD9, 0x0647, 0x0670, 0,
5242     4, 0xFCDA, 0x064A, 0x062C, 0,
5243     4, 0xFCDB, 0x064A, 0x062D, 0,
5244     4, 0xFCDC, 0x064A, 0x062E, 0,
5245     4, 0xFCDD, 0x064A, 0x0645, 0,
5246     4, 0xFCDE, 0x064A, 0x0647, 0,
5247     5, 0xFCDF, 0x0626, 0x0645, 0,
5248     5, 0xFCE0, 0x0626, 0x0647, 0,
5249     5, 0xFCE1, 0x0628, 0x0645, 0,
5250     5, 0xFCE2, 0x0628, 0x0647, 0,
5251     5, 0xFCE3, 0x062A, 0x0645, 0,
5252     5, 0xFCE4, 0x062A, 0x0647, 0,
5253     5, 0xFCE5, 0x062B, 0x0645, 0,
5254     5, 0xFCE6, 0x062B, 0x0647, 0,
5255     5, 0xFCE7, 0x0633, 0x0645, 0,
5256     5, 0xFCE8, 0x0633, 0x0647, 0,
5257     5, 0xFCE9, 0x0634, 0x0645, 0,
5258     5, 0xFCEA, 0x0634, 0x0647, 0,
5259     5, 0xFCEB, 0x0643, 0x0644, 0,
5260     5, 0xFCEC, 0x0643, 0x0645, 0,
5261     5, 0xFCED, 0x0644, 0x0645, 0,
5262     5, 0xFCEE, 0x0646, 0x0645, 0,
5263     5, 0xFCEF, 0x0646, 0x0647, 0,
5264     5, 0xFCF0, 0x064A, 0x0645, 0,
5265     5, 0xFCF1, 0x064A, 0x0647, 0,
5266     5, 0xFCF2, 0x0640, 0x064E, 0x0651, 0,
5267     5, 0xFCF3, 0x0640, 0x064F, 0x0651, 0,
5268     5, 0xFCF4, 0x0640, 0x0650, 0x0651, 0,
5269     7, 0xFCF5, 0x0637, 0x0649, 0,
5270     7, 0xFCF6, 0x0637, 0x064A, 0,
5271     7, 0xFCF7, 0x0639, 0x0649, 0,
5272     7, 0xFCF8, 0x0639, 0x064A, 0,
5273     7, 0xFCF9, 0x063A, 0x0649, 0,
5274     7, 0xFCFA, 0x063A, 0x064A, 0,
5275     7, 0xFCFB, 0x0633, 0x0649, 0,
5276     7, 0xFCFC, 0x0633, 0x064A, 0,
5277     7, 0xFCFD, 0x0634, 0x0649, 0,
5278     7, 0xFCFE, 0x0634, 0x064A, 0,
5279     7, 0xFCFF, 0x062D, 0x0649, 0,
5280     7, 0xFD00, 0x062D, 0x064A, 0,
5281     7, 0xFD01, 0x062C, 0x0649, 0,
5282     7, 0xFD02, 0x062C, 0x064A, 0,
5283     7, 0xFD03, 0x062E, 0x0649, 0,
5284     7, 0xFD04, 0x062E, 0x064A, 0,
5285     7, 0xFD05, 0x0635, 0x0649, 0,
5286     7, 0xFD06, 0x0635, 0x064A, 0,
5287     7, 0xFD07, 0x0636, 0x0649, 0,
5288     7, 0xFD08, 0x0636, 0x064A, 0,
5289     7, 0xFD09, 0x0634, 0x062C, 0,
5290     7, 0xFD0A, 0x0634, 0x062D, 0,
5291     7, 0xFD0B, 0x0634, 0x062E, 0,
5292     7, 0xFD0C, 0x0634, 0x0645, 0,
5293     7, 0xFD0D, 0x0634, 0x0631, 0,
5294     7, 0xFD0E, 0x0633, 0x0631, 0,
5295     7, 0xFD0F, 0x0635, 0x0631, 0,
5296     7, 0xFD10, 0x0636, 0x0631, 0,
5297     6, 0xFD11, 0x0637, 0x0649, 0,
5298     6, 0xFD12, 0x0637, 0x064A, 0,
5299     6, 0xFD13, 0x0639, 0x0649, 0,
5300     6, 0xFD14, 0x0639, 0x064A, 0,
5301     6, 0xFD15, 0x063A, 0x0649, 0,
5302     6, 0xFD16, 0x063A, 0x064A, 0,
5303     6, 0xFD17, 0x0633, 0x0649, 0,
5304     6, 0xFD18, 0x0633, 0x064A, 0,
5305     6, 0xFD19, 0x0634, 0x0649, 0,
5306     6, 0xFD1A, 0x0634, 0x064A, 0,
5307     6, 0xFD1B, 0x062D, 0x0649, 0,
5308     6, 0xFD1C, 0x062D, 0x064A, 0,
5309     6, 0xFD1D, 0x062C, 0x0649, 0,
5310     6, 0xFD1E, 0x062C, 0x064A, 0,
5311     6, 0xFD1F, 0x062E, 0x0649, 0,
5312     6, 0xFD20, 0x062E, 0x064A, 0,
5313     6, 0xFD21, 0x0635, 0x0649, 0,
5314     6, 0xFD22, 0x0635, 0x064A, 0,
5315     6, 0xFD23, 0x0636, 0x0649, 0,
5316     6, 0xFD24, 0x0636, 0x064A, 0,
5317     6, 0xFD25, 0x0634, 0x062C, 0,
5318     6, 0xFD26, 0x0634, 0x062D, 0,
5319     6, 0xFD27, 0x0634, 0x062E, 0,
5320     6, 0xFD28, 0x0634, 0x0645, 0,
5321     6, 0xFD29, 0x0634, 0x0631, 0,
5322     6, 0xFD2A, 0x0633, 0x0631, 0,
5323     6, 0xFD2B, 0x0635, 0x0631, 0,
5324     6, 0xFD2C, 0x0636, 0x0631, 0,
5325     4, 0xFD2D, 0x0634, 0x062C, 0,
5326     4, 0xFD2E, 0x0634, 0x062D, 0,
5327     4, 0xFD2F, 0x0634, 0x062E, 0,
5328     4, 0xFD30, 0x0634, 0x0645, 0,
5329     4, 0xFD31, 0x0633, 0x0647, 0,
5330     4, 0xFD32, 0x0634, 0x0647, 0,
5331     4, 0xFD33, 0x0637, 0x0645, 0,
5332     5, 0xFD34, 0x0633, 0x062C, 0,
5333     5, 0xFD35, 0x0633, 0x062D, 0,
5334     5, 0xFD36, 0x0633, 0x062E, 0,
5335     5, 0xFD37, 0x0634, 0x062C, 0,
5336     5, 0xFD38, 0x0634, 0x062D, 0,
5337     5, 0xFD39, 0x0634, 0x062E, 0,
5338     5, 0xFD3A, 0x0637, 0x0645, 0,
5339     5, 0xFD3B, 0x0638, 0x0645, 0,
5340     6, 0xFD3C, 0x0627, 0x064B, 0,
5341     7, 0xFD3D, 0x0627, 0x064B, 0,
5342     4, 0xFD50, 0x062A, 0x062C, 0x0645, 0,
5343     6, 0xFD51, 0x062A, 0x062D, 0x062C, 0,
5344     4, 0xFD52, 0x062A, 0x062D, 0x062C, 0,
5345     4, 0xFD53, 0x062A, 0x062D, 0x0645, 0,
5346     4, 0xFD54, 0x062A, 0x062E, 0x0645, 0,
5347     4, 0xFD55, 0x062A, 0x0645, 0x062C, 0,
5348     4, 0xFD56, 0x062A, 0x0645, 0x062D, 0,
5349     4, 0xFD57, 0x062A, 0x0645, 0x062E, 0,
5350     6, 0xFD58, 0x062C, 0x0645, 0x062D, 0,
5351     4, 0xFD59, 0x062C, 0x0645, 0x062D, 0,
5352     6, 0xFD5A, 0x062D, 0x0645, 0x064A, 0,
5353     6, 0xFD5B, 0x062D, 0x0645, 0x0649, 0,
5354     4, 0xFD5C, 0x0633, 0x062D, 0x062C, 0,
5355     4, 0xFD5D, 0x0633, 0x062C, 0x062D, 0,
5356     6, 0xFD5E, 0x0633, 0x062C, 0x0649, 0,
5357     6, 0xFD5F, 0x0633, 0x0645, 0x062D, 0,
5358     4, 0xFD60, 0x0633, 0x0645, 0x062D, 0,
5359     4, 0xFD61, 0x0633, 0x0645, 0x062C, 0,
5360     6, 0xFD62, 0x0633, 0x0645, 0x0645, 0,
5361     4, 0xFD63, 0x0633, 0x0645, 0x0645, 0,
5362     6, 0xFD64, 0x0635, 0x062D, 0x062D, 0,
5363     4, 0xFD65, 0x0635, 0x062D, 0x062D, 0,
5364     6, 0xFD66, 0x0635, 0x0645, 0x0645, 0,
5365     6, 0xFD67, 0x0634, 0x062D, 0x0645, 0,
5366     4, 0xFD68, 0x0634, 0x062D, 0x0645, 0,
5367     6, 0xFD69, 0x0634, 0x062C, 0x064A, 0,
5368     6, 0xFD6A, 0x0634, 0x0645, 0x062E, 0,
5369     4, 0xFD6B, 0x0634, 0x0645, 0x062E, 0,
5370     6, 0xFD6C, 0x0634, 0x0645, 0x0645, 0,
5371     4, 0xFD6D, 0x0634, 0x0645, 0x0645, 0,
5372     6, 0xFD6E, 0x0636, 0x062D, 0x0649, 0,
5373     6, 0xFD6F, 0x0636, 0x062E, 0x0645, 0,
5374     4, 0xFD70, 0x0636, 0x062E, 0x0645, 0,
5375     6, 0xFD71, 0x0637, 0x0645, 0x062D, 0,
5376     4, 0xFD72, 0x0637, 0x0645, 0x062D, 0,
5377     4, 0xFD73, 0x0637, 0x0645, 0x0645, 0,
5378     6, 0xFD74, 0x0637, 0x0645, 0x064A, 0,
5379     6, 0xFD75, 0x0639, 0x062C, 0x0645, 0,
5380     6, 0xFD76, 0x0639, 0x0645, 0x0645, 0,
5381     4, 0xFD77, 0x0639, 0x0645, 0x0645, 0,
5382     6, 0xFD78, 0x0639, 0x0645, 0x0649, 0,
5383     6, 0xFD79, 0x063A, 0x0645, 0x0645, 0,
5384     6, 0xFD7A, 0x063A, 0x0645, 0x064A, 0,
5385     6, 0xFD7B, 0x063A, 0x0645, 0x0649, 0,
5386     6, 0xFD7C, 0x0641, 0x062E, 0x0645, 0,
5387     4, 0xFD7D, 0x0641, 0x062E, 0x0645, 0,
5388     6, 0xFD7E, 0x0642, 0x0645, 0x062D, 0,
5389     6, 0xFD7F, 0x0642, 0x0645, 0x0645, 0,
5390     6, 0xFD80, 0x0644, 0x062D, 0x0645, 0,
5391     6, 0xFD81, 0x0644, 0x062D, 0x064A, 0,
5392     6, 0xFD82, 0x0644, 0x062D, 0x0649, 0,
5393     4, 0xFD83, 0x0644, 0x062C, 0x062C, 0,
5394     6, 0xFD84, 0x0644, 0x062C, 0x062C, 0,
5395     6, 0xFD85, 0x0644, 0x062E, 0x0645, 0,
5396     4, 0xFD86, 0x0644, 0x062E, 0x0645, 0,
5397     6, 0xFD87, 0x0644, 0x0645, 0x062D, 0,
5398     4, 0xFD88, 0x0644, 0x0645, 0x062D, 0,
5399     4, 0xFD89, 0x0645, 0x062D, 0x062C, 0,
5400     4, 0xFD8A, 0x0645, 0x062D, 0x0645, 0,
5401     6, 0xFD8B, 0x0645, 0x062D, 0x064A, 0,
5402     4, 0xFD8C, 0x0645, 0x062C, 0x062D, 0,
5403     4, 0xFD8D, 0x0645, 0x062C, 0x0645, 0,
5404     4, 0xFD8E, 0x0645, 0x062E, 0x062C, 0,
5405     4, 0xFD8F, 0x0645, 0x062E, 0x0645, 0,
5406     4, 0xFD92, 0x0645, 0x062C, 0x062E, 0,
5407     4, 0xFD93, 0x0647, 0x0645, 0x062C, 0,
5408     4, 0xFD94, 0x0647, 0x0645, 0x0645, 0,
5409     4, 0xFD95, 0x0646, 0x062D, 0x0645, 0,
5410     6, 0xFD96, 0x0646, 0x062D, 0x0649, 0,
5411     6, 0xFD97, 0x0646, 0x062C, 0x0645, 0,
5412     4, 0xFD98, 0x0646, 0x062C, 0x0645, 0,
5413     6, 0xFD99, 0x0646, 0x062C, 0x0649, 0,
5414     6, 0xFD9A, 0x0646, 0x0645, 0x064A, 0,
5415     6, 0xFD9B, 0x0646, 0x0645, 0x0649, 0,
5416     6, 0xFD9C, 0x064A, 0x0645, 0x0645, 0,
5417     4, 0xFD9D, 0x064A, 0x0645, 0x0645, 0,
5418     6, 0xFD9E, 0x0628, 0x062E, 0x064A, 0,
5419     6, 0xFD9F, 0x062A, 0x062C, 0x064A, 0,
5420     6, 0xFDA0, 0x062A, 0x062C, 0x0649, 0,
5421     6, 0xFDA1, 0x062A, 0x062E, 0x064A, 0,
5422     6, 0xFDA2, 0x062A, 0x062E, 0x0649, 0,
5423     6, 0xFDA3, 0x062A, 0x0645, 0x064A, 0,
5424     6, 0xFDA4, 0x062A, 0x0645, 0x0649, 0,
5425     6, 0xFDA5, 0x062C, 0x0645, 0x064A, 0,
5426     6, 0xFDA6, 0x062C, 0x062D, 0x0649, 0,
5427     6, 0xFDA7, 0x062C, 0x0645, 0x0649, 0,
5428     6, 0xFDA8, 0x0633, 0x062E, 0x0649, 0,
5429     6, 0xFDA9, 0x0635, 0x062D, 0x064A, 0,
5430     6, 0xFDAA, 0x0634, 0x062D, 0x064A, 0,
5431     6, 0xFDAB, 0x0636, 0x062D, 0x064A, 0,
5432     6, 0xFDAC, 0x0644, 0x062C, 0x064A, 0,
5433     6, 0xFDAD, 0x0644, 0x0645, 0x064A, 0,
5434     6, 0xFDAE, 0x064A, 0x062D, 0x064A, 0,
5435     6, 0xFDAF, 0x064A, 0x062C, 0x064A, 0,
5436     6, 0xFDB0, 0x064A, 0x0645, 0x064A, 0,
5437     6, 0xFDB1, 0x0645, 0x0645, 0x064A, 0,
5438     6, 0xFDB2, 0x0642, 0x0645, 0x064A, 0,
5439     6, 0xFDB3, 0x0646, 0x062D, 0x064A, 0,
5440     4, 0xFDB4, 0x0642, 0x0645, 0x062D, 0,
5441     4, 0xFDB5, 0x0644, 0x062D, 0x0645, 0,
5442     6, 0xFDB6, 0x0639, 0x0645, 0x064A, 0,
5443     6, 0xFDB7, 0x0643, 0x0645, 0x064A, 0,
5444     4, 0xFDB8, 0x0646, 0x062C, 0x062D, 0,
5445     6, 0xFDB9, 0x0645, 0x062E, 0x064A, 0,
5446     4, 0xFDBA, 0x0644, 0x062C, 0x0645, 0,
5447     6, 0xFDBB, 0x0643, 0x0645, 0x0645, 0,
5448     6, 0xFDBC, 0x0644, 0x062C, 0x0645, 0,
5449     6, 0xFDBD, 0x0646, 0x062C, 0x062D, 0,
5450     6, 0xFDBE, 0x062C, 0x062D, 0x064A, 0,
5451     6, 0xFDBF, 0x062D, 0x062C, 0x064A, 0,
5452     6, 0xFDC0, 0x0645, 0x062C, 0x064A, 0,
5453     6, 0xFDC1, 0x0641, 0x0645, 0x064A, 0,
5454     6, 0xFDC2, 0x0628, 0x062D, 0x064A, 0,
5455     4, 0xFDC3, 0x0643, 0x0645, 0x0645, 0,
5456     4, 0xFDC4, 0x0639, 0x062C, 0x0645, 0,
5457     4, 0xFDC5, 0x0635, 0x0645, 0x0645, 0,
5458     6, 0xFDC6, 0x0633, 0x062E, 0x064A, 0,
5459     6, 0xFDC7, 0x0646, 0x062C, 0x064A, 0,
5460     7, 0xFDF0, 0x0635, 0x0644, 0x06D2, 0,
5461     7, 0xFDF1, 0x0642, 0x0644, 0x06D2, 0,
5462     7, 0xFDF2, 0x0627, 0x0644, 0x0644, 0x0647, 0,
5463     7, 0xFDF3, 0x0627, 0x0643, 0x0628, 0x0631, 0,
5464     7, 0xFDF4, 0x0645, 0x062D, 0x0645, 0x062F, 0,
5465     7, 0xFDF5, 0x0635, 0x0644, 0x0639, 0x0645, 0,
5466     7, 0xFDF6, 0x0631, 0x0633, 0x0648, 0x0644, 0,
5467     7, 0xFDF7, 0x0639, 0x0644, 0x064A, 0x0647, 0,
5468     7, 0xFDF8, 0x0648, 0x0633, 0x0644, 0x0645, 0,
5469     7, 0xFDF9, 0x0635, 0x0644, 0x0649, 0,
5470     7, 0xFDFA, 0x0635, 0x0644, 0x0649, 0x0020, 0x0627, 0x0644, 0x0644, 0x0647, 0x0020, 0x0639, 0x0644, 0x064A, 0x0647, 0x0020, 0x0648, 0x0633, 0x0644, 0x0645, 0,
5471     7, 0xFDFB, 0x062C, 0x0644, 0x0020, 0x062C, 0x0644, 0x0627, 0x0644, 0x0647, 0,
5472     11, 0xFE30, 0x2025, 0,
5473     11, 0xFE31, 0x2014, 0,
5474     11, 0xFE32, 0x2013, 0,
5475     11, 0xFE33, 0x005F, 0,
5476     11, 0xFE34, 0x005F, 0,
5477     11, 0xFE35, 0x0028, 0,
5478     11, 0xFE36, 0x0029, 0,
5479     11, 0xFE37, 0x007B, 0,
5480     11, 0xFE38, 0x007D, 0,
5481     11, 0xFE39, 0x3014, 0,
5482     11, 0xFE3A, 0x3015, 0,
5483     11, 0xFE3B, 0x3010, 0,
5484     11, 0xFE3C, 0x3011, 0,
5485     11, 0xFE3D, 0x300A, 0,
5486     11, 0xFE3E, 0x300B, 0,
5487     11, 0xFE3F, 0x3008, 0,
5488     11, 0xFE40, 0x3009, 0,
5489     11, 0xFE41, 0x300C, 0,
5490     11, 0xFE42, 0x300D, 0,
5491     11, 0xFE43, 0x300E, 0,
5492     11, 0xFE44, 0x300F, 0,
5493     16, 0xFE49, 0x203E, 0,
5494     16, 0xFE4A, 0x203E, 0,
5495     16, 0xFE4B, 0x203E, 0,
5496     16, 0xFE4C, 0x203E, 0,
5497     16, 0xFE4D, 0x005F, 0,
5498     16, 0xFE4E, 0x005F, 0,
5499     16, 0xFE4F, 0x005F, 0,
5500     14, 0xFE50, 0x002C, 0,
5501     14, 0xFE51, 0x3001, 0,
5502     14, 0xFE52, 0x002E, 0,
5503     14, 0xFE54, 0x003B, 0,
5504     14, 0xFE55, 0x003A, 0,
5505     14, 0xFE56, 0x003F, 0,
5506     14, 0xFE57, 0x0021, 0,
5507     14, 0xFE58, 0x2014, 0,
5508     14, 0xFE59, 0x0028, 0,
5509     14, 0xFE5A, 0x0029, 0,
5510     14, 0xFE5B, 0x007B, 0,
5511     14, 0xFE5C, 0x007D, 0,
5512     14, 0xFE5D, 0x3014, 0,
5513     14, 0xFE5E, 0x3015, 0,
5514     14, 0xFE5F, 0x0023, 0,
5515     14, 0xFE60, 0x0026, 0,
5516     14, 0xFE61, 0x002A, 0,
5517     14, 0xFE62, 0x002B, 0,
5518     14, 0xFE63, 0x002D, 0,
5519     14, 0xFE64, 0x003C, 0,
5520     14, 0xFE65, 0x003E, 0,
5521     14, 0xFE66, 0x003D, 0,
5522     14, 0xFE68, 0x005C, 0,
5523     14, 0xFE69, 0x0024, 0,
5524     14, 0xFE6A, 0x0025, 0,
5525     14, 0xFE6B, 0x0040, 0,
5526     7, 0xFE70, 0x0020, 0x064B, 0,
5527     5, 0xFE71, 0x0640, 0x064B, 0,
5528     7, 0xFE72, 0x0020, 0x064C, 0,
5529     7, 0xFE74, 0x0020, 0x064D, 0,
5530     7, 0xFE76, 0x0020, 0x064E, 0,
5531     5, 0xFE77, 0x0640, 0x064E, 0,
5532     7, 0xFE78, 0x0020, 0x064F, 0,
5533     5, 0xFE79, 0x0640, 0x064F, 0,
5534     7, 0xFE7A, 0x0020, 0x0650, 0,
5535     5, 0xFE7B, 0x0640, 0x0650, 0,
5536     7, 0xFE7C, 0x0020, 0x0651, 0,
5537     5, 0xFE7D, 0x0640, 0x0651, 0,
5538     7, 0xFE7E, 0x0020, 0x0652, 0,
5539     5, 0xFE7F, 0x0640, 0x0652, 0,
5540     7, 0xFE80, 0x0621, 0,
5541     7, 0xFE81, 0x0622, 0,
5542     6, 0xFE82, 0x0622, 0,
5543     7, 0xFE83, 0x0623, 0,
5544     6, 0xFE84, 0x0623, 0,
5545     7, 0xFE85, 0x0624, 0,
5546     6, 0xFE86, 0x0624, 0,
5547     7, 0xFE87, 0x0625, 0,
5548     6, 0xFE88, 0x0625, 0,
5549     7, 0xFE89, 0x0626, 0,
5550     6, 0xFE8A, 0x0626, 0,
5551     4, 0xFE8B, 0x0626, 0,
5552     5, 0xFE8C, 0x0626, 0,
5553     7, 0xFE8D, 0x0627, 0,
5554     6, 0xFE8E, 0x0627, 0,
5555     7, 0xFE8F, 0x0628, 0,
5556     6, 0xFE90, 0x0628, 0,
5557     4, 0xFE91, 0x0628, 0,
5558     5, 0xFE92, 0x0628, 0,
5559     7, 0xFE93, 0x0629, 0,
5560     6, 0xFE94, 0x0629, 0,
5561     7, 0xFE95, 0x062A, 0,
5562     6, 0xFE96, 0x062A, 0,
5563     4, 0xFE97, 0x062A, 0,
5564     5, 0xFE98, 0x062A, 0,
5565     7, 0xFE99, 0x062B, 0,
5566     6, 0xFE9A, 0x062B, 0,
5567     4, 0xFE9B, 0x062B, 0,
5568     5, 0xFE9C, 0x062B, 0,
5569     7, 0xFE9D, 0x062C, 0,
5570     6, 0xFE9E, 0x062C, 0,
5571     4, 0xFE9F, 0x062C, 0,
5572     5, 0xFEA0, 0x062C, 0,
5573     7, 0xFEA1, 0x062D, 0,
5574     6, 0xFEA2, 0x062D, 0,
5575     4, 0xFEA3, 0x062D, 0,
5576     5, 0xFEA4, 0x062D, 0,
5577     7, 0xFEA5, 0x062E, 0,
5578     6, 0xFEA6, 0x062E, 0,
5579     4, 0xFEA7, 0x062E, 0,
5580     5, 0xFEA8, 0x062E, 0,
5581     7, 0xFEA9, 0x062F, 0,
5582     6, 0xFEAA, 0x062F, 0,
5583     7, 0xFEAB, 0x0630, 0,
5584     6, 0xFEAC, 0x0630, 0,
5585     7, 0xFEAD, 0x0631, 0,
5586     6, 0xFEAE, 0x0631, 0,
5587     7, 0xFEAF, 0x0632, 0,
5588     6, 0xFEB0, 0x0632, 0,
5589     7, 0xFEB1, 0x0633, 0,
5590     6, 0xFEB2, 0x0633, 0,
5591     4, 0xFEB3, 0x0633, 0,
5592     5, 0xFEB4, 0x0633, 0,
5593     7, 0xFEB5, 0x0634, 0,
5594     6, 0xFEB6, 0x0634, 0,
5595     4, 0xFEB7, 0x0634, 0,
5596     5, 0xFEB8, 0x0634, 0,
5597     7, 0xFEB9, 0x0635, 0,
5598     6, 0xFEBA, 0x0635, 0,
5599     4, 0xFEBB, 0x0635, 0,
5600     5, 0xFEBC, 0x0635, 0,
5601     7, 0xFEBD, 0x0636, 0,
5602     6, 0xFEBE, 0x0636, 0,
5603     4, 0xFEBF, 0x0636, 0,
5604     5, 0xFEC0, 0x0636, 0,
5605     7, 0xFEC1, 0x0637, 0,
5606     6, 0xFEC2, 0x0637, 0,
5607     4, 0xFEC3, 0x0637, 0,
5608     5, 0xFEC4, 0x0637, 0,
5609     7, 0xFEC5, 0x0638, 0,
5610     6, 0xFEC6, 0x0638, 0,
5611     4, 0xFEC7, 0x0638, 0,
5612     5, 0xFEC8, 0x0638, 0,
5613     7, 0xFEC9, 0x0639, 0,
5614     6, 0xFECA, 0x0639, 0,
5615     4, 0xFECB, 0x0639, 0,
5616     5, 0xFECC, 0x0639, 0,
5617     7, 0xFECD, 0x063A, 0,
5618     6, 0xFECE, 0x063A, 0,
5619     4, 0xFECF, 0x063A, 0,
5620     5, 0xFED0, 0x063A, 0,
5621     7, 0xFED1, 0x0641, 0,
5622     6, 0xFED2, 0x0641, 0,
5623     4, 0xFED3, 0x0641, 0,
5624     5, 0xFED4, 0x0641, 0,
5625     7, 0xFED5, 0x0642, 0,
5626     6, 0xFED6, 0x0642, 0,
5627     4, 0xFED7, 0x0642, 0,
5628     5, 0xFED8, 0x0642, 0,
5629     7, 0xFED9, 0x0643, 0,
5630     6, 0xFEDA, 0x0643, 0,
5631     4, 0xFEDB, 0x0643, 0,
5632     5, 0xFEDC, 0x0643, 0,
5633     7, 0xFEDD, 0x0644, 0,
5634     6, 0xFEDE, 0x0644, 0,
5635     4, 0xFEDF, 0x0644, 0,
5636     5, 0xFEE0, 0x0644, 0,
5637     7, 0xFEE1, 0x0645, 0,
5638     6, 0xFEE2, 0x0645, 0,
5639     4, 0xFEE3, 0x0645, 0,
5640     5, 0xFEE4, 0x0645, 0,
5641     7, 0xFEE5, 0x0646, 0,
5642     6, 0xFEE6, 0x0646, 0,
5643     4, 0xFEE7, 0x0646, 0,
5644     5, 0xFEE8, 0x0646, 0,
5645     7, 0xFEE9, 0x0647, 0,
5646     6, 0xFEEA, 0x0647, 0,
5647     4, 0xFEEB, 0x0647, 0,
5648     5, 0xFEEC, 0x0647, 0,
5649     7, 0xFEED, 0x0648, 0,
5650     6, 0xFEEE, 0x0648, 0,
5651     7, 0xFEEF, 0x0649, 0,
5652     6, 0xFEF0, 0x0649, 0,
5653     7, 0xFEF1, 0x064A, 0,
5654     6, 0xFEF2, 0x064A, 0,
5655     4, 0xFEF3, 0x064A, 0,
5656     5, 0xFEF4, 0x064A, 0,
5657     7, 0xFEF5, 0x0644, 0x0622, 0,
5658     6, 0xFEF6, 0x0644, 0x0622, 0,
5659     7, 0xFEF7, 0x0644, 0x0623, 0,
5660     6, 0xFEF8, 0x0644, 0x0623, 0,
5661     7, 0xFEF9, 0x0644, 0x0625, 0,
5662     6, 0xFEFA, 0x0644, 0x0625, 0,
5663     7, 0xFEFB, 0x0644, 0x0627, 0,
5664     6, 0xFEFC, 0x0644, 0x0627, 0,
5665     12, 0xFF01, 0x0021, 0,
5666     12, 0xFF02, 0x0022, 0,
5667     12, 0xFF03, 0x0023, 0,
5668     12, 0xFF04, 0x0024, 0,
5669     12, 0xFF05, 0x0025, 0,
5670     12, 0xFF06, 0x0026, 0,
5671     12, 0xFF07, 0x0027, 0,
5672     12, 0xFF08, 0x0028, 0,
5673     12, 0xFF09, 0x0029, 0,
5674     12, 0xFF0A, 0x002A, 0,
5675     12, 0xFF0B, 0x002B, 0,
5676     12, 0xFF0C, 0x002C, 0,
5677     12, 0xFF0D, 0x002D, 0,
5678     12, 0xFF0E, 0x002E, 0,
5679     12, 0xFF0F, 0x002F, 0,
5680     12, 0xFF10, 0x0030, 0,
5681     12, 0xFF11, 0x0031, 0,
5682     12, 0xFF12, 0x0032, 0,
5683     12, 0xFF13, 0x0033, 0,
5684     12, 0xFF14, 0x0034, 0,
5685     12, 0xFF15, 0x0035, 0,
5686     12, 0xFF16, 0x0036, 0,
5687     12, 0xFF17, 0x0037, 0,
5688     12, 0xFF18, 0x0038, 0,
5689     12, 0xFF19, 0x0039, 0,
5690     12, 0xFF1A, 0x003A, 0,
5691     12, 0xFF1B, 0x003B, 0,
5692     12, 0xFF1C, 0x003C, 0,
5693     12, 0xFF1D, 0x003D, 0,
5694     12, 0xFF1E, 0x003E, 0,
5695     12, 0xFF1F, 0x003F, 0,
5696     12, 0xFF20, 0x0040, 0,
5697     12, 0xFF21, 0x0041, 0,
5698     12, 0xFF22, 0x0042, 0,
5699     12, 0xFF23, 0x0043, 0,
5700     12, 0xFF24, 0x0044, 0,
5701     12, 0xFF25, 0x0045, 0,
5702     12, 0xFF26, 0x0046, 0,
5703     12, 0xFF27, 0x0047, 0,
5704     12, 0xFF28, 0x0048, 0,
5705     12, 0xFF29, 0x0049, 0,
5706     12, 0xFF2A, 0x004A, 0,
5707     12, 0xFF2B, 0x004B, 0,
5708     12, 0xFF2C, 0x004C, 0,
5709     12, 0xFF2D, 0x004D, 0,
5710     12, 0xFF2E, 0x004E, 0,
5711     12, 0xFF2F, 0x004F, 0,
5712     12, 0xFF30, 0x0050, 0,
5713     12, 0xFF31, 0x0051, 0,
5714     12, 0xFF32, 0x0052, 0,
5715     12, 0xFF33, 0x0053, 0,
5716     12, 0xFF34, 0x0054, 0,
5717     12, 0xFF35, 0x0055, 0,
5718     12, 0xFF36, 0x0056, 0,
5719     12, 0xFF37, 0x0057, 0,
5720     12, 0xFF38, 0x0058, 0,
5721     12, 0xFF39, 0x0059, 0,
5722     12, 0xFF3A, 0x005A, 0,
5723     12, 0xFF3B, 0x005B, 0,
5724     12, 0xFF3C, 0x005C, 0,
5725     12, 0xFF3D, 0x005D, 0,
5726     12, 0xFF3E, 0x005E, 0,
5727     12, 0xFF3F, 0x005F, 0,
5728     12, 0xFF40, 0x0060, 0,
5729     12, 0xFF41, 0x0061, 0,
5730     12, 0xFF42, 0x0062, 0,
5731     12, 0xFF43, 0x0063, 0,
5732     12, 0xFF44, 0x0064, 0,
5733     12, 0xFF45, 0x0065, 0,
5734     12, 0xFF46, 0x0066, 0,
5735     12, 0xFF47, 0x0067, 0,
5736     12, 0xFF48, 0x0068, 0,
5737     12, 0xFF49, 0x0069, 0,
5738     12, 0xFF4A, 0x006A, 0,
5739     12, 0xFF4B, 0x006B, 0,
5740     12, 0xFF4C, 0x006C, 0,
5741     12, 0xFF4D, 0x006D, 0,
5742     12, 0xFF4E, 0x006E, 0,
5743     12, 0xFF4F, 0x006F, 0,
5744     12, 0xFF50, 0x0070, 0,
5745     12, 0xFF51, 0x0071, 0,
5746     12, 0xFF52, 0x0072, 0,
5747     12, 0xFF53, 0x0073, 0,
5748     12, 0xFF54, 0x0074, 0,
5749     12, 0xFF55, 0x0075, 0,
5750     12, 0xFF56, 0x0076, 0,
5751     12, 0xFF57, 0x0077, 0,
5752     12, 0xFF58, 0x0078, 0,
5753     12, 0xFF59, 0x0079, 0,
5754     12, 0xFF5A, 0x007A, 0,
5755     12, 0xFF5B, 0x007B, 0,
5756     12, 0xFF5C, 0x007C, 0,
5757     12, 0xFF5D, 0x007D, 0,
5758     12, 0xFF5E, 0x007E, 0,
5759     13, 0xFF61, 0x3002, 0,
5760     13, 0xFF62, 0x300C, 0,
5761     13, 0xFF63, 0x300D, 0,
5762     13, 0xFF64, 0x3001, 0,
5763     13, 0xFF65, 0x30FB, 0,
5764     13, 0xFF66, 0x30F2, 0,
5765     13, 0xFF67, 0x30A1, 0,
5766     13, 0xFF68, 0x30A3, 0,
5767     13, 0xFF69, 0x30A5, 0,
5768     13, 0xFF6A, 0x30A7, 0,
5769     13, 0xFF6B, 0x30A9, 0,
5770     13, 0xFF6C, 0x30E3, 0,
5771     13, 0xFF6D, 0x30E5, 0,
5772     13, 0xFF6E, 0x30E7, 0,
5773     13, 0xFF6F, 0x30C3, 0,
5774     13, 0xFF70, 0x30FC, 0,
5775     13, 0xFF71, 0x30A2, 0,
5776     13, 0xFF72, 0x30A4, 0,
5777     13, 0xFF73, 0x30A6, 0,
5778     13, 0xFF74, 0x30A8, 0,
5779     13, 0xFF75, 0x30AA, 0,
5780     13, 0xFF76, 0x30AB, 0,
5781     13, 0xFF77, 0x30AD, 0,
5782     13, 0xFF78, 0x30AF, 0,
5783     13, 0xFF79, 0x30B1, 0,
5784     13, 0xFF7A, 0x30B3, 0,
5785     13, 0xFF7B, 0x30B5, 0,
5786     13, 0xFF7C, 0x30B7, 0,
5787     13, 0xFF7D, 0x30B9, 0,
5788     13, 0xFF7E, 0x30BB, 0,
5789     13, 0xFF7F, 0x30BD, 0,
5790     13, 0xFF80, 0x30BF, 0,
5791     13, 0xFF81, 0x30C1, 0,
5792     13, 0xFF82, 0x30C4, 0,
5793     13, 0xFF83, 0x30C6, 0,
5794     13, 0xFF84, 0x30C8, 0,
5795     13, 0xFF85, 0x30CA, 0,
5796     13, 0xFF86, 0x30CB, 0,
5797     13, 0xFF87, 0x30CC, 0,
5798     13, 0xFF88, 0x30CD, 0,
5799     13, 0xFF89, 0x30CE, 0,
5800     13, 0xFF8A, 0x30CF, 0,
5801     13, 0xFF8B, 0x30D2, 0,
5802     13, 0xFF8C, 0x30D5, 0,
5803     13, 0xFF8D, 0x30D8, 0,
5804     13, 0xFF8E, 0x30DB, 0,
5805     13, 0xFF8F, 0x30DE, 0,
5806     13, 0xFF90, 0x30DF, 0,
5807     13, 0xFF91, 0x30E0, 0,
5808     13, 0xFF92, 0x30E1, 0,
5809     13, 0xFF93, 0x30E2, 0,
5810     13, 0xFF94, 0x30E4, 0,
5811     13, 0xFF95, 0x30E6, 0,
5812     13, 0xFF96, 0x30E8, 0,
5813     13, 0xFF97, 0x30E9, 0,
5814     13, 0xFF98, 0x30EA, 0,
5815     13, 0xFF99, 0x30EB, 0,
5816     13, 0xFF9A, 0x30EC, 0,
5817     13, 0xFF9B, 0x30ED, 0,
5818     13, 0xFF9C, 0x30EF, 0,
5819     13, 0xFF9D, 0x30F3, 0,
5820     13, 0xFF9E, 0x3099, 0,
5821     13, 0xFF9F, 0x309A, 0,
5822     13, 0xFFA0, 0x3164, 0,
5823     13, 0xFFA1, 0x3131, 0,
5824     13, 0xFFA2, 0x3132, 0,
5825     13, 0xFFA3, 0x3133, 0,
5826     13, 0xFFA4, 0x3134, 0,
5827     13, 0xFFA5, 0x3135, 0,
5828     13, 0xFFA6, 0x3136, 0,
5829     13, 0xFFA7, 0x3137, 0,
5830     13, 0xFFA8, 0x3138, 0,
5831     13, 0xFFA9, 0x3139, 0,
5832     13, 0xFFAA, 0x313A, 0,
5833     13, 0xFFAB, 0x313B, 0,
5834     13, 0xFFAC, 0x313C, 0,
5835     13, 0xFFAD, 0x313D, 0,
5836     13, 0xFFAE, 0x313E, 0,
5837     13, 0xFFAF, 0x313F, 0,
5838     13, 0xFFB0, 0x3140, 0,
5839     13, 0xFFB1, 0x3141, 0,
5840     13, 0xFFB2, 0x3142, 0,
5841     13, 0xFFB3, 0x3143, 0,
5842     13, 0xFFB4, 0x3144, 0,
5843     13, 0xFFB5, 0x3145, 0,
5844     13, 0xFFB6, 0x3146, 0,
5845     13, 0xFFB7, 0x3147, 0,
5846     13, 0xFFB8, 0x3148, 0,
5847     13, 0xFFB9, 0x3149, 0,
5848     13, 0xFFBA, 0x314A, 0,
5849     13, 0xFFBB, 0x314B, 0,
5850     13, 0xFFBC, 0x314C, 0,
5851     13, 0xFFBD, 0x314D, 0,
5852     13, 0xFFBE, 0x314E, 0,
5853     13, 0xFFC2, 0x314F, 0,
5854     13, 0xFFC3, 0x3150, 0,
5855     13, 0xFFC4, 0x3151, 0,
5856     13, 0xFFC5, 0x3152, 0,
5857     13, 0xFFC6, 0x3153, 0,
5858     13, 0xFFC7, 0x3154, 0,
5859     13, 0xFFCA, 0x3155, 0,
5860     13, 0xFFCB, 0x3156, 0,
5861     13, 0xFFCC, 0x3157, 0,
5862     13, 0xFFCD, 0x3158, 0,
5863     13, 0xFFCE, 0x3159, 0,
5864     13, 0xFFCF, 0x315A, 0,
5865     13, 0xFFD2, 0x315B, 0,
5866     13, 0xFFD3, 0x315C, 0,
5867     13, 0xFFD4, 0x315D, 0,
5868     13, 0xFFD5, 0x315E, 0,
5869     13, 0xFFD6, 0x315F, 0,
5870     13, 0xFFD7, 0x3160, 0,
5871     13, 0xFFDA, 0x3161, 0,
5872     13, 0xFFDB, 0x3162, 0,
5873     13, 0xFFDC, 0x3163, 0,
5874     12, 0xFFE0, 0x00A2, 0,
5875     12, 0xFFE1, 0x00A3, 0,
5876     12, 0xFFE2, 0x00AC, 0,
5877     12, 0xFFE3, 0x00AF, 0,
5878     12, 0xFFE4, 0x00A6, 0,
5879     12, 0xFFE5, 0x00A5, 0,
5880     12, 0xFFE6, 0x20A9, 0,
5881     13, 0xFFE8, 0x2502, 0,
5882     13, 0xFFE9, 0x2190, 0,
5883     13, 0xFFEA, 0x2191, 0,
5884     13, 0xFFEB, 0x2192, 0,
5885     13, 0xFFEC, 0x2193, 0,
5886     13, 0xFFED, 0x25A0, 0,
5887     13, 0xFFEE, 0x25CB, 0,
5888
5889 };
5890
5891 static const Q_UINT16 di_00[] = {
5892     0, 0, 0, 0, 0, 0, 0, 0,
5893     0, 0, 0, 0, 0, 0, 0, 0,
5894     0, 0, 0, 0, 0, 0, 0, 0,
5895     0, 0, 0, 0, 0, 0, 0, 0,
5896     0, 0, 0, 0, 0, 0, 0, 0,
5897     0, 0, 0, 0, 0, 0, 0, 0,
5898     0, 0, 0, 0, 0, 0, 0, 0,
5899     0, 0, 0, 0, 0, 0, 0, 0,
5900     0, 0, 0, 0, 0, 0, 0, 0,
5901     0, 0, 0, 0, 0, 0, 0, 0,
5902     0, 0, 0, 0, 0, 0, 0, 0,
5903     0, 0, 0, 0, 0, 0, 0, 0,
5904     0, 0, 0, 0, 0, 0, 0, 0,
5905     0, 0, 0, 0, 0, 0, 0, 0,
5906     0, 0, 0, 0, 0, 0, 0, 0,
5907     0, 0, 0, 0, 0, 0, 0, 0,
5908     0, 0, 0, 0, 0, 0, 0, 0,
5909     0, 0, 0, 0, 0, 0, 0, 0,
5910     0, 0, 0, 0, 0, 0, 0, 0,
5911     0, 0, 0, 0, 0, 0, 0, 0,
5912     1, 0, 0, 0, 0, 0, 0, 0,
5913     5, 0, 10, 0, 0, 0, 0, 14,
5914     0, 0, 19, 23, 27, 32, 0, 0,
5915     36, 41, 45, 0, 49, 55, 61, 0,
5916     67, 72, 77, 82, 87, 92, 0, 97,
5917     102, 107, 112, 117, 122, 127, 132, 137,
5918     0, 142, 147, 152, 157, 162, 167, 0,
5919     0, 172, 177, 182, 187, 192, 0, 0,
5920     197, 202, 207, 212, 217, 222, 0, 227,
5921     232, 237, 242, 247, 252, 257, 262, 267,
5922     0, 272, 277, 282, 287, 292, 297, 0,
5923     0, 302, 307, 312, 317, 322, 0, 327,
5924 };
5925
5926 static const Q_UINT16 di_01[] = {
5927     332, 337, 342, 347, 352, 357, 362, 367,
5928     372, 377, 382, 387, 392, 397, 402, 407,
5929     0, 0, 412, 417, 422, 427, 432, 437,
5930     442, 447, 452, 457, 462, 467, 472, 477,
5931     482, 487, 492, 497, 502, 507, 0, 0,
5932     512, 517, 522, 527, 532, 537, 542, 547,
5933     552, 0, 557, 562, 567, 572, 577, 582,
5934     0, 587, 592, 597, 602, 607, 612, 617,
5935     622, 0, 0, 627, 632, 637, 642, 647,
5936     652, 657, 0, 0, 662, 667, 672, 677,
5937     682, 687, 0, 0, 692, 697, 702, 707,
5938     712, 717, 722, 727, 732, 737, 742, 747,
5939     752, 757, 762, 767, 772, 777, 0, 0,
5940     782, 787, 792, 797, 802, 807, 812, 817,
5941     822, 827, 832, 837, 842, 847, 852, 857,
5942     862, 867, 872, 877, 882, 887, 892, 897,
5943     0, 0, 0, 0, 0, 0, 0, 0,
5944     0, 0, 0, 0, 0, 0, 0, 0,
5945     0, 0, 0, 0, 0, 0, 0, 0,
5946     0, 0, 0, 0, 0, 0, 0, 0,
5947     901, 906, 0, 0, 0, 0, 0, 0,
5948     0, 0, 0, 0, 0, 0, 0, 911,
5949     916, 0, 0, 0, 0, 0, 0, 0,
5950     0, 0, 0, 0, 0, 0, 0, 0,
5951     0, 0, 0, 0, 921, 926, 931, 936,
5952     941, 946, 951, 956, 961, 966, 971, 976,
5953     981, 986, 991, 996, 1001, 1006, 1011, 1016,
5954     1021, 1026, 1031, 1036, 1041, 0, 1046, 1051,
5955     1056, 1061, 1066, 1071, 0, 0, 1076, 1081,
5956     1086, 1091, 1096, 1101, 1106, 1111, 1116, 1121,
5957     1126, 1131, 1136, 1141, 1146, 1151, 0, 0,
5958     1156, 1161, 1166, 1171, 1176, 1181, 1186, 1191,
5959 };
5960
5961 static const Q_UINT16 di_02[] = {
5962     1196, 1201, 1206, 1211, 1216, 1221, 1226, 1231,
5963     1236, 1241, 1246, 1251, 1256, 1261, 1266, 1271,
5964     1276, 1281, 1286, 1291, 1296, 1301, 1306, 1311,
5965     1316, 1321, 1326, 1331, 0, 0, 1336, 1341,
5966     0, 0, 0, 0, 0, 0, 1346, 1351,
5967     1356, 1361, 1366, 1371, 1376, 1381, 1386, 1391,
5968     1396, 1401, 1406, 1411, 0, 0, 0, 0,
5969     0, 0, 0, 0, 0, 0, 0, 0,
5970     0, 0, 0, 0, 0, 0, 0, 0,
5971     0, 0, 0, 0, 0, 0, 0, 0,
5972     0, 0, 0, 0, 0, 0, 0, 0,
5973     0, 0, 0, 0, 0, 0, 0, 0,
5974     0, 0, 0, 0, 0, 0, 0, 0,
5975     0, 0, 0, 0, 0, 0, 0, 0,
5976     0, 0, 0, 0, 0, 0, 0, 0,
5977     0, 0, 0, 0, 0, 0, 0, 0,
5978     0, 0, 0, 0, 0, 0, 0, 0,
5979     0, 0, 0, 0, 0, 0, 0, 0,
5980     0, 0, 0, 0, 0, 0, 0, 0,
5981     0, 0, 0, 0, 0, 0, 0, 0,
5982     0, 0, 0, 0, 0, 0, 0, 0,
5983     0, 0, 0, 0, 0, 0, 0, 0,
5984     1416, 1420, 1424, 1428, 1432, 1436, 1440, 1444,
5985     1448, 0, 0, 0, 0, 0, 0, 0,
5986     0, 0, 0, 0, 0, 0, 0, 0,
5987     0, 0, 0, 0, 0, 0, 0, 0,
5988     0, 0, 0, 0, 0, 0, 0, 0,
5989     1452, 1457, 1462, 1467, 1472, 1477, 0, 0,
5990     1482, 1486, 1490, 1494, 1498, 0, 0, 0,
5991     0, 0, 0, 0, 0, 0, 0, 0,
5992     0, 0, 0, 0, 0, 0, 0, 0,
5993     0, 0, 0, 0, 0, 0, 0, 0,
5994 };
5995
5996 static const Q_UINT16 di_03[] = {
5997     0, 0, 0, 0, 0, 0, 0, 0,
5998     0, 0, 0, 0, 0, 0, 0, 0,
5999     0, 0, 0, 0, 0, 0, 0, 0,
6000     0, 0, 0, 0, 0, 0, 0, 0,
6001     0, 0, 0, 0, 0, 0, 0, 0,
6002     0, 0, 0, 0, 0, 0, 0, 0,
6003     0, 0, 0, 0, 0, 0, 0, 0,
6004     0, 0, 0, 0, 0, 0, 0, 0,
6005     1502, 1506, 0, 1510, 1514, 0, 0, 0,
6006     0, 0, 0, 0, 0, 0, 0, 0,
6007     0, 0, 0, 0, 0, 0, 0, 0,
6008     0, 0, 0, 0, 0, 0, 0, 0,
6009     0, 0, 0, 0, 0, 0, 0, 0,
6010     0, 0, 0, 0, 0, 0, 0, 0,
6011     0, 0, 0, 0, 1519, 0, 0, 0,
6012     0, 0, 1523, 0, 0, 0, 1528, 0,
6013     0, 0, 0, 0, 1532, 1537, 1542, 1547,
6014     1551, 1556, 1561, 0, 1566, 0, 1571, 1576,
6015     1581, 0, 0, 0, 0, 0, 0, 0,
6016     0, 0, 0, 0, 0, 0, 0, 0,
6017     0, 0, 0, 0, 0, 0, 0, 0,
6018     0, 0, 1586, 1591, 1596, 1601, 1606, 1611,
6019     1616, 0, 0, 0, 0, 0, 0, 0,
6020     0, 0, 0, 0, 0, 0, 0, 0,
6021     0, 0, 0, 0, 0, 0, 0, 0,
6022     0, 0, 1621, 1626, 1631, 1636, 1641, 0,
6023     1646, 1650, 1654, 1658, 1663, 1668, 1672, 0,
6024     0, 0, 0, 0, 0, 0, 0, 0,
6025     0, 0, 0, 0, 0, 0, 0, 0,
6026     0, 0, 0, 0, 0, 0, 0, 0,
6027     1676, 1680, 1684, 0, 0, 0, 0, 0,
6028     0, 0, 0, 0, 0, 0, 0, 0,
6029 };
6030
6031 static const Q_UINT16 di_04[] = {
6032     1688, 1693, 0, 1698, 0, 0, 0, 1703,
6033     0, 0, 0, 0, 1708, 1713, 1718, 0,
6034     0, 0, 0, 0, 0, 0, 0, 0,
6035     0, 1723, 0, 0, 0, 0, 0, 0,
6036     0, 0, 0, 0, 0, 0, 0, 0,
6037     0, 0, 0, 0, 0, 0, 0, 0,
6038     0, 0, 0, 0, 0, 0, 0, 0,
6039     0, 1728, 0, 0, 0, 0, 0, 0,
6040     0, 0, 0, 0, 0, 0, 0, 0,
6041     0, 0, 0, 0, 0, 0, 0, 0,
6042     1733, 1738, 0, 1743, 0, 0, 0, 1748,
6043     0, 0, 0, 0, 1753, 1758, 1763, 0,
6044     0, 0, 0, 0, 0, 0, 0, 0,
6045     0, 0, 0, 0, 0, 0, 0, 0,
6046     0, 0, 0, 0, 0, 0, 1768, 1773,
6047     0, 0, 0, 0, 0, 0, 0, 0,
6048     0, 0, 0, 0, 0, 0, 0, 0,
6049     0, 0, 0, 0, 0, 0, 0, 0,
6050     0, 0, 0, 0, 0, 0, 0, 0,
6051     0, 0, 0, 0, 0, 0, 0, 0,
6052     0, 0, 0, 0, 0, 0, 0, 0,
6053     0, 0, 0, 0, 0, 0, 0, 0,
6054     0, 0, 0, 0, 0, 0, 0, 0,
6055     0, 0, 0, 0, 0, 0, 0, 0,
6056     0, 1778, 1783, 0, 0, 0, 0, 0,
6057     0, 0, 0, 0, 0, 0, 0, 0,
6058     1788, 1793, 1798, 1803, 0, 0, 1808, 1813,
6059     0, 0, 1818, 1823, 1828, 1833, 1838, 1843,
6060     0, 0, 1848, 1853, 1858, 1863, 1868, 1873,
6061     0, 0, 1878, 1883, 1888, 1893, 1898, 1903,
6062     1908, 1913, 1918, 1923, 1928, 1933, 0, 0,
6063     1938, 1943, 0, 0, 0, 0, 0, 0,
6064 };
6065
6066 static const Q_UINT16 di_05[] = {
6067     0, 0, 0, 0, 0, 0, 0, 0,
6068     0, 0, 0, 0, 0, 0, 0, 0,
6069     0, 0, 0, 0, 0, 0, 0, 0,
6070     0, 0, 0, 0, 0, 0, 0, 0,
6071     0, 0, 0, 0, 0, 0, 0, 0,
6072     0, 0, 0, 0, 0, 0, 0, 0,
6073     0, 0, 0, 0, 0, 0, 0, 0,
6074     0, 0, 0, 0, 0, 0, 0, 0,
6075     0, 0, 0, 0, 0, 0, 0, 0,
6076     0, 0, 0, 0, 0, 0, 0, 0,
6077     0, 0, 0, 0, 0, 0, 0, 0,
6078     0, 0, 0, 0, 0, 0, 0, 0,
6079     0, 0, 0, 0, 0, 0, 0, 0,
6080     0, 0, 0, 0, 0, 0, 0, 0,
6081     0, 0, 0, 0, 0, 0, 0, 0,
6082     0, 0, 0, 0, 0, 0, 0, 0,
6083     0, 0, 0, 0, 0, 0, 0, 1948,
6084     0, 0, 0, 0, 0, 0, 0, 0,
6085     0, 0, 0, 0, 0, 0, 0, 0,
6086     0, 0, 0, 0, 0, 0, 0, 0,
6087     0, 0, 0, 0, 0, 0, 0, 0,
6088     0, 0, 0, 0, 0, 0, 0, 0,
6089     0, 0, 0, 0, 0, 0, 0, 0,
6090     0, 0, 0, 0, 0, 0, 0, 0,
6091     0, 0, 0, 0, 0, 0, 0, 0,
6092     0, 0, 0, 0, 0, 0, 0, 0,
6093     0, 0, 0, 0, 0, 0, 0, 0,
6094     0, 0, 0, 0, 0, 0, 0, 0,
6095     0, 0, 0, 0, 0, 0, 0, 0,
6096     0, 0, 0, 0, 0, 0, 0, 0,
6097     0, 0, 0, 0, 0, 0, 0, 0,
6098     0, 0, 0, 0, 0, 0, 0, 0,
6099 };
6100
6101 static const Q_UINT16 di_06[] = {
6102     0, 0, 0, 0, 0, 0, 0, 0,
6103     0, 0, 0, 0, 0, 0, 0, 0,
6104     0, 0, 0, 0, 0, 0, 0, 0,
6105     0, 0, 0, 0, 0, 0, 0, 0,
6106     0, 0, 1953, 1958, 1963, 1968, 1973, 0,
6107     0, 0, 0, 0, 0, 0, 0, 0,
6108     0, 0, 0, 0, 0, 0, 0, 0,
6109     0, 0, 0, 0, 0, 0, 0, 0,
6110     0, 0, 0, 0, 0, 0, 0, 0,
6111     0, 0, 0, 0, 0, 0, 0, 0,
6112     0, 0, 0, 0, 0, 0, 0, 0,
6113     0, 0, 0, 0, 0, 0, 0, 0,
6114     0, 0, 0, 0, 0, 0, 0, 0,
6115     0, 0, 0, 0, 0, 0, 0, 0,
6116     0, 0, 0, 0, 0, 1978, 1983, 1988,
6117     1993, 0, 0, 0, 0, 0, 0, 0,
6118     0, 0, 0, 0, 0, 0, 0, 0,
6119     0, 0, 0, 0, 0, 0, 0, 0,
6120     0, 0, 0, 0, 0, 0, 0, 0,
6121     0, 0, 0, 0, 0, 0, 0, 0,
6122     0, 0, 0, 0, 0, 0, 0, 0,
6123     0, 0, 0, 0, 0, 0, 0, 0,
6124     0, 0, 0, 0, 0, 0, 0, 0,
6125     0, 0, 0, 0, 0, 0, 0, 0,
6126     1998, 0, 2003, 0, 0, 0, 0, 0,
6127     0, 0, 0, 0, 0, 0, 0, 0,
6128     0, 0, 0, 2008, 0, 0, 0, 0,
6129     0, 0, 0, 0, 0, 0, 0, 0,
6130     0, 0, 0, 0, 0, 0, 0, 0,
6131     0, 0, 0, 0, 0, 0, 0, 0,
6132     0, 0, 0, 0, 0, 0, 0, 0,
6133     0, 0, 0, 0, 0, 0, 0, 0,
6134 };
6135
6136 static const Q_UINT16 di_07[] = {
6137     0, 0, 0, 0, 0, 0, 0, 0,
6138     0, 0, 0, 0, 0, 0, 0, 0,
6139     0, 0, 0, 0, 0, 0, 0, 0,
6140     0, 0, 0, 0, 0, 0, 0, 0,
6141     0, 0, 0, 0, 0, 0, 0, 0,
6142     0, 0, 0, 0, 0, 0, 0, 0,
6143     0, 0, 0, 0, 0, 0, 0, 0,
6144     0, 0, 0, 0, 0, 0, 0, 0,
6145     0, 0, 0, 0, 0, 0, 0, 0,
6146     0, 0, 0, 0, 0, 0, 0, 0,
6147     0, 0, 0, 0, 0, 0, 0, 0,
6148     0, 0, 0, 0, 0, 0, 0, 0,
6149     0, 0, 0, 0, 0, 0, 0, 0,
6150     0, 0, 0, 0, 0, 0, 0, 0,
6151     0, 0, 0, 0, 0, 0, 0, 0,
6152     0, 0, 0, 0, 0, 0, 0, 0,
6153     0, 0, 0, 0, 0, 0, 0, 0,
6154     0, 0, 0, 0, 0, 0, 0, 0,
6155     0, 0, 0, 0, 0, 0, 0, 0,
6156     0, 0, 0, 0, 0, 0, 0, 0,
6157     0, 0, 0, 0, 0, 0, 0, 0,
6158     0, 0, 0, 0, 0, 0, 0, 0,
6159     0, 0, 0, 0, 0, 0, 0, 0,
6160     0, 0, 0, 0, 0, 0, 0, 0,
6161     0, 0, 0, 0, 0, 0, 0, 0,
6162     0, 0, 0, 0, 0, 0, 0, 0,
6163     0, 0, 0, 0, 0, 0, 0, 0,
6164     0, 0, 0, 0, 0, 0, 0, 0,
6165     0, 0, 0, 0, 0, 0, 0, 0,
6166     0, 0, 0, 0, 0, 0, 0, 0,
6167     0, 0, 0, 0, 0, 0, 0, 0,
6168     0, 0, 0, 0, 0, 0, 0, 0,
6169 };
6170
6171 static const Q_UINT16 di_09[] = {
6172     0, 0, 0, 0, 0, 0, 0, 0,
6173     0, 0, 0, 0, 0, 0, 0, 0,
6174     0, 0, 0, 0, 0, 0, 0, 0,
6175     0, 0, 0, 0, 0, 0, 0, 0,
6176     0, 0, 0, 0, 0, 0, 0, 0,
6177     0, 2013, 0, 0, 0, 0, 0, 0,
6178     0, 2018, 0, 0, 2023, 0, 0, 0,
6179     0, 0, 0, 0, 0, 0, 0, 0,
6180     0, 0, 0, 0, 0, 0, 0, 0,
6181     0, 0, 0, 0, 0, 0, 0, 0,
6182     0, 0, 0, 0, 0, 0, 0, 0,
6183     2028, 2033, 2038, 2043, 2048, 2053, 2058, 2063,
6184     0, 0, 0, 0, 0, 0, 0, 0,
6185     0, 0, 0, 0, 0, 0, 0, 0,
6186     0, 0, 0, 0, 0, 0, 0, 0,
6187     0, 0, 0, 0, 0, 0, 0, 0,
6188     0, 0, 0, 0, 0, 0, 0, 0,
6189     0, 0, 0, 0, 0, 0, 0, 0,
6190     0, 0, 0, 0, 0, 0, 0, 0,
6191     0, 0, 0, 0, 0, 0, 0, 0,
6192     0, 0, 0, 0, 0, 0, 0, 0,
6193     0, 0, 0, 0, 0, 0, 0, 0,
6194     0, 0, 0, 0, 0, 0, 0, 0,
6195     0, 0, 0, 0, 0, 0, 0, 0,
6196     0, 0, 0, 0, 0, 0, 0, 0,
6197     0, 0, 0, 2068, 2073, 0, 0, 0,
6198     0, 0, 0, 0, 0, 0, 0, 0,
6199     0, 0, 0, 0, 2078, 2083, 0, 2088,
6200     0, 0, 0, 0, 0, 0, 0, 0,
6201     0, 0, 0, 0, 0, 0, 0, 0,
6202     0, 0, 0, 0, 0, 0, 0, 0,
6203     0, 0, 0, 0, 0, 0, 0, 0,
6204 };
6205
6206 static const Q_UINT16 di_0A[] = {
6207     0, 0, 0, 0, 0, 0, 0, 0,
6208     0, 0, 0, 0, 0, 0, 0, 0,
6209     0, 0, 0, 0, 0, 0, 0, 0,
6210     0, 0, 0, 0, 0, 0, 0, 0,
6211     0, 0, 0, 0, 0, 0, 0, 0,
6212     0, 0, 0, 0, 0, 0, 0, 0,
6213     0, 0, 0, 2093, 0, 0, 2098, 0,
6214     0, 0, 0, 0, 0, 0, 0, 0,
6215     0, 0, 0, 0, 0, 0, 0, 0,
6216     0, 0, 0, 0, 0, 0, 0, 0,
6217     0, 0, 0, 0, 0, 0, 0, 0,
6218     0, 2103, 2108, 2113, 0, 0, 2118, 0,
6219     0, 0, 0, 0, 0, 0, 0, 0,
6220     0, 0, 0, 0, 0, 0, 0, 0,
6221     0, 0, 0, 0, 0, 0, 0, 0,
6222     0, 0, 0, 0, 0, 0, 0, 0,
6223     0, 0, 0, 0, 0, 0, 0, 0,
6224     0, 0, 0, 0, 0, 0, 0, 0,
6225     0, 0, 0, 0, 0, 0, 0, 0,
6226     0, 0, 0, 0, 0, 0, 0, 0,
6227     0, 0, 0, 0, 0, 0, 0, 0,
6228     0, 0, 0, 0, 0, 0, 0, 0,
6229     0, 0, 0, 0, 0, 0, 0, 0,
6230     0, 0, 0, 0, 0, 0, 0, 0,
6231     0, 0, 0, 0, 0, 0, 0, 0,
6232     0, 0, 0, 0, 0, 0, 0, 0,
6233     0, 0, 0, 0, 0, 0, 0, 0,
6234     0, 0, 0, 0, 0, 0, 0, 0,
6235     0, 0, 0, 0, 0, 0, 0, 0,
6236     0, 0, 0, 0, 0, 0, 0, 0,
6237     0, 0, 0, 0, 0, 0, 0, 0,
6238     0, 0, 0, 0, 0, 0, 0, 0,
6239 };
6240
6241 static const Q_UINT16 di_0B[] = {
6242     0, 0, 0, 0, 0, 0, 0, 0,
6243     0, 0, 0, 0, 0, 0, 0, 0,
6244     0, 0, 0, 0, 0, 0, 0, 0,
6245     0, 0, 0, 0, 0, 0, 0, 0,
6246     0, 0, 0, 0, 0, 0, 0, 0,
6247     0, 0, 0, 0, 0, 0, 0, 0,
6248     0, 0, 0, 0, 0, 0, 0, 0,
6249     0, 0, 0, 0, 0, 0, 0, 0,
6250     0, 0, 0, 0, 0, 0, 0, 0,
6251     2123, 0, 0, 2128, 2133, 0, 0, 0,
6252     0, 0, 0, 0, 0, 0, 0, 0,
6253     0, 0, 0, 0, 2138, 2143, 0, 0,
6254     0, 0, 0, 0, 0, 0, 0, 0,
6255     0, 0, 0, 0, 0, 0, 0, 0,
6256     0, 0, 0, 0, 0, 0, 0, 0,
6257     0, 0, 0, 0, 0, 0, 0, 0,
6258     0, 0, 0, 0, 0, 0, 0, 0,
6259     0, 0, 0, 0, 0, 0, 0, 0,
6260     0, 0, 0, 0, 2148, 0, 0, 0,
6261     0, 0, 0, 0, 0, 0, 0, 0,
6262     0, 0, 0, 0, 0, 0, 0, 0,
6263     0, 0, 0, 0, 0, 0, 0, 0,
6264     0, 0, 0, 0, 0, 0, 0, 0,
6265     0, 0, 0, 0, 0, 0, 0, 0,
6266     0, 0, 0, 0, 0, 0, 0, 0,
6267     0, 0, 2153, 2158, 2163, 0, 0, 0,
6268     0, 0, 0, 0, 0, 0, 0, 0,
6269     0, 0, 0, 0, 0, 0, 0, 0,
6270     0, 0, 0, 0, 0, 0, 0, 0,
6271     0, 0, 0, 0, 0, 0, 0, 0,
6272     0, 0, 0, 0, 0, 0, 0, 0,
6273     0, 0, 0, 0, 0, 0, 0, 0,
6274 };
6275
6276 static const Q_UINT16 di_0C[] = {
6277     0, 0, 0, 0, 0, 0, 0, 0,
6278     0, 0, 0, 0, 0, 0, 0, 0,
6279     0, 0, 0, 0, 0, 0, 0, 0,
6280     0, 0, 0, 0, 0, 0, 0, 0,
6281     0, 0, 0, 0, 0, 0, 0, 0,
6282     0, 0, 0, 0, 0, 0, 0, 0,
6283     0, 0, 0, 0, 0, 0, 0, 0,
6284     0, 0, 0, 0, 0, 0, 0, 0,
6285     0, 0, 0, 0, 0, 0, 0, 0,
6286     2168, 0, 0, 0, 0, 0, 0, 0,
6287     0, 0, 0, 0, 0, 0, 0, 0,
6288     0, 0, 0, 0, 0, 0, 0, 0,
6289     0, 0, 0, 0, 0, 0, 0, 0,
6290     0, 0, 0, 0, 0, 0, 0, 0,
6291     0, 0, 0, 0, 0, 0, 0, 0,
6292     0, 0, 0, 0, 0, 0, 0, 0,
6293     0, 0, 0, 0, 0, 0, 0, 0,
6294     0, 0, 0, 0, 0, 0, 0, 0,
6295     0, 0, 0, 0, 0, 0, 0, 0,
6296     0, 0, 0, 0, 0, 0, 0, 0,
6297     0, 0, 0, 0, 0, 0, 0, 0,
6298     0, 0, 0, 0, 0, 0, 0, 0,
6299     0, 0, 0, 0, 0, 0, 0, 0,
6300     0, 0, 0, 0, 0, 0, 0, 0,
6301     2173, 0, 0, 0, 0, 0, 0, 2178,
6302     2183, 0, 2188, 2193, 0, 0, 0, 0,
6303     0, 0, 0, 0, 0, 0, 0, 0,
6304     0, 0, 0, 0, 0, 0, 0, 0,
6305     0, 0, 0, 0, 0, 0, 0, 0,
6306     0, 0, 0, 0, 0, 0, 0, 0,
6307     0, 0, 0, 0, 0, 0, 0, 0,
6308     0, 0, 0, 0, 0, 0, 0, 0,
6309 };
6310
6311 static const Q_UINT16 di_0D[] = {
6312     0, 0, 0, 0, 0, 0, 0, 0,
6313     0, 0, 0, 0, 0, 0, 0, 0,
6314     0, 0, 0, 0, 0, 0, 0, 0,
6315     0, 0, 0, 0, 0, 0, 0, 0,
6316     0, 0, 0, 0, 0, 0, 0, 0,
6317     0, 0, 0, 0, 0, 0, 0, 0,
6318     0, 0, 0, 0, 0, 0, 0, 0,
6319     0, 0, 0, 0, 0, 0, 0, 0,
6320     0, 0, 0, 0, 0, 0, 0, 0,
6321     0, 0, 2198, 2203, 2208, 0, 0, 0,
6322     0, 0, 0, 0, 0, 0, 0, 0,
6323     0, 0, 0, 0, 0, 0, 0, 0,
6324     0, 0, 0, 0, 0, 0, 0, 0,
6325     0, 0, 0, 0, 0, 0, 0, 0,
6326     0, 0, 0, 0, 0, 0, 0, 0,
6327     0, 0, 0, 0, 0, 0, 0, 0,
6328     0, 0, 0, 0, 0, 0, 0, 0,
6329     0, 0, 0, 0, 0, 0, 0, 0,
6330     0, 0, 0, 0, 0, 0, 0, 0,
6331     0, 0, 0, 0, 0, 0, 0, 0,
6332     0, 0, 0, 0, 0, 0, 0, 0,
6333     0, 0, 0, 0, 0, 0, 0, 0,
6334     0, 0, 0, 0, 0, 0, 0, 0,
6335     0, 0, 0, 0, 0, 0, 0, 0,
6336     0, 0, 0, 0, 0, 0, 0, 0,
6337     0, 0, 0, 0, 0, 0, 0, 0,
6338     0, 0, 0, 0, 0, 0, 0, 0,
6339     0, 0, 2213, 0, 2218, 2223, 2228, 0,
6340     0, 0, 0, 0, 0, 0, 0, 0,
6341     0, 0, 0, 0, 0, 0, 0, 0,
6342     0, 0, 0, 0, 0, 0, 0, 0,
6343     0, 0, 0, 0, 0, 0, 0, 0,
6344 };
6345
6346 static const Q_UINT16 di_0E[] = {
6347     0, 0, 0, 0, 0, 0, 0, 0,
6348     0, 0, 0, 0, 0, 0, 0, 0,
6349     0, 0, 0, 0, 0, 0, 0, 0,
6350     0, 0, 0, 0, 0, 0, 0, 0,
6351     0, 0, 0, 0, 0, 0, 0, 0,
6352     0, 0, 0, 0, 0, 0, 0, 0,
6353     0, 0, 0, 2233, 0, 0, 0, 0,
6354     0, 0, 0, 0, 0, 0, 0, 0,
6355     0, 0, 0, 0, 0, 0, 0, 0,
6356     0, 0, 0, 0, 0, 0, 0, 0,
6357     0, 0, 0, 0, 0, 0, 0, 0,
6358     0, 0, 0, 0, 0, 0, 0, 0,
6359     0, 0, 0, 0, 0, 0, 0, 0,
6360     0, 0, 0, 0, 0, 0, 0, 0,
6361     0, 0, 0, 0, 0, 0, 0, 0,
6362     0, 0, 0, 0, 0, 0, 0, 0,
6363     0, 0, 0, 0, 0, 0, 0, 0,
6364     0, 0, 0, 0, 0, 0, 0, 0,
6365     0, 0, 0, 0, 0, 0, 0, 0,
6366     0, 0, 0, 0, 0, 0, 0, 0,
6367     0, 0, 0, 0, 0, 0, 0, 0,
6368     0, 0, 0, 0, 0, 0, 0, 0,
6369     0, 0, 0, 2238, 0, 0, 0, 0,
6370     0, 0, 0, 0, 0, 0, 0, 0,
6371     0, 0, 0, 0, 0, 0, 0, 0,
6372     0, 0, 0, 0, 0, 0, 0, 0,
6373     0, 0, 0, 0, 0, 0, 0, 0,
6374     0, 0, 0, 0, 2243, 2248, 0, 0,
6375     0, 0, 0, 0, 0, 0, 0, 0,
6376     0, 0, 0, 0, 0, 0, 0, 0,
6377     0, 0, 0, 0, 0, 0, 0, 0,
6378     0, 0, 0, 0, 0, 0, 0, 0,
6379 };
6380
6381 static const Q_UINT16 di_0F[] = {
6382     0, 0, 0, 0, 0, 0, 0, 0,
6383     0, 0, 0, 0, 2253, 0, 0, 0,
6384     0, 0, 0, 0, 0, 0, 0, 0,
6385     0, 0, 0, 0, 0, 0, 0, 0,
6386     0, 0, 0, 0, 0, 0, 0, 0,
6387     0, 0, 0, 0, 0, 0, 0, 0,
6388     0, 0, 0, 0, 0, 0, 0, 0,
6389     0, 0, 0, 0, 0, 0, 0, 0,
6390     0, 0, 0, 2257, 0, 0, 0, 0,
6391     0, 0, 0, 0, 0, 2262, 0, 0,
6392     0, 0, 2267, 0, 0, 0, 0, 2272,
6393     0, 0, 0, 0, 2277, 0, 0, 0,
6394     0, 0, 0, 0, 0, 0, 0, 0,
6395     0, 2282, 0, 0, 0, 0, 0, 0,
6396     0, 0, 0, 2287, 0, 2292, 2297, 2302,
6397     2307, 2312, 0, 0, 0, 0, 0, 0,
6398     0, 2317, 0, 0, 0, 0, 0, 0,
6399     0, 0, 0, 0, 0, 0, 0, 0,
6400     0, 0, 0, 2322, 0, 0, 0, 0,
6401     0, 0, 0, 0, 0, 2327, 0, 0,
6402     0, 0, 2332, 0, 0, 0, 0, 2337,
6403     0, 0, 0, 0, 2342, 0, 0, 0,
6404     0, 0, 0, 0, 0, 0, 0, 0,
6405     0, 2347, 0, 0, 0, 0, 0, 0,
6406     0, 0, 0, 0, 0, 0, 0, 0,
6407     0, 0, 0, 0, 0, 0, 0, 0,
6408     0, 0, 0, 0, 0, 0, 0, 0,
6409     0, 0, 0, 0, 0, 0, 0, 0,
6410     0, 0, 0, 0, 0, 0, 0, 0,
6411     0, 0, 0, 0, 0, 0, 0, 0,
6412     0, 0, 0, 0, 0, 0, 0, 0,
6413     0, 0, 0, 0, 0, 0, 0, 0,
6414 };
6415
6416 static const Q_UINT16 di_10[] = {
6417     0, 0, 0, 0, 0, 0, 0, 0,
6418     0, 0, 0, 0, 0, 0, 0, 0,
6419     0, 0, 0, 0, 0, 0, 0, 0,
6420     0, 0, 0, 0, 0, 0, 0, 0,
6421     0, 0, 0, 0, 0, 0, 2352, 0,
6422     0, 0, 0, 0, 0, 0, 0, 0,
6423     0, 0, 0, 0, 0, 0, 0, 0,
6424     0, 0, 0, 0, 0, 0, 0, 0,
6425     0, 0, 0, 0, 0, 0, 0, 0,
6426     0, 0, 0, 0, 0, 0, 0, 0,
6427     0, 0, 0, 0, 0, 0, 0, 0,
6428     0, 0, 0, 0, 0, 0, 0, 0,
6429     0, 0, 0, 0, 0, 0, 0, 0,
6430     0, 0, 0, 0, 0, 0, 0, 0,
6431     0, 0, 0, 0, 0, 0, 0, 0,
6432     0, 0, 0, 0, 0, 0, 0, 0,
6433     0, 0, 0, 0, 0, 0, 0, 0,
6434     0, 0, 0, 0, 0, 0, 0, 0,
6435     0, 0, 0, 0, 0, 0, 0, 0,
6436     0, 0, 0, 0, 0, 0, 0, 0,
6437     0, 0, 0, 0, 0, 0, 0, 0,
6438     0, 0, 0, 0, 0, 0, 0, 0,
6439     0, 0, 0, 0, 0, 0, 0, 0,
6440     0, 0, 0, 0, 0, 0, 0, 0,
6441     0, 0, 0, 0, 0, 0, 0, 0,
6442     0, 0, 0, 0, 0, 0, 0, 0,
6443     0, 0, 0, 0, 0, 0, 0, 0,
6444     0, 0, 0, 0, 0, 0, 0, 0,
6445     0, 0, 0, 0, 0, 0, 0, 0,
6446     0, 0, 0, 0, 0, 0, 0, 0,
6447     0, 0, 0, 0, 0, 0, 0, 0,
6448     0, 0, 0, 0, 0, 0, 0, 0,
6449 };
6450
6451 static const Q_UINT16 di_1E[] = {
6452     2357, 2362, 2367, 2372, 2377, 2382, 2387, 2392,
6453     2397, 2402, 2407, 2412, 2417, 2422, 2427, 2432,
6454     2437, 2442, 2447, 2452, 2457, 2462, 2467, 2472,
6455     2477, 2482, 2487, 2492, 2497, 2502, 2507, 2512,
6456     2517, 2522, 2527, 2532, 2537, 2542, 2547, 2552,
6457     2557, 2562, 2567, 2572, 2577, 2582, 2587, 2592,
6458     2597, 2602, 2607, 2612, 2617, 2622, 2627, 2632,
6459     2637, 2642, 2647, 2652, 2657, 2662, 2667, 2672,
6460     2677, 2682, 2687, 2692, 2697, 2702, 2707, 2712,
6461     2717, 2722, 2727, 2732, 2737, 2742, 2747, 2752,
6462     2757, 2762, 2767, 2772, 2777, 2782, 2787, 2792,
6463     2797, 2802, 2807, 2812, 2817, 2822, 2827, 2832,
6464     2837, 2842, 2847, 2852, 2857, 2862, 2867, 2872,
6465     2877, 2882, 2887, 2892, 2897, 2902, 2907, 2912,
6466     2917, 2922, 2927, 2932, 2937, 2942, 2947, 2952,
6467     2957, 2962, 2967, 2972, 2977, 2982, 2987, 2992,
6468     2997, 3002, 3007, 3012, 3017, 3022, 3027, 3032,
6469     3037, 3042, 3047, 3052, 3057, 3062, 3067, 3072,
6470     3077, 3082, 3087, 3092, 3097, 3102, 3107, 3112,
6471     3117, 3122, 3127, 3132, 0, 0, 0, 0,
6472     3137, 3142, 3147, 3152, 3157, 3162, 3167, 3172,
6473     3177, 3182, 3187, 3192, 3197, 3202, 3207, 3212,
6474     3217, 3222, 3227, 3232, 3237, 3242, 3247, 3252,
6475     3257, 3262, 3267, 3272, 3277, 3282, 3287, 3292,
6476     3297, 3302, 3307, 3312, 3317, 3322, 3327, 3332,
6477     3337, 3342, 3347, 3352, 3357, 3362, 3367, 3372,
6478     3377, 3382, 3387, 3392, 3397, 3402, 3407, 3412,
6479     3417, 3422, 3427, 3432, 3437, 3442, 3447, 3452,
6480     3457, 3462, 3467, 3472, 3477, 3482, 3487, 3492,
6481     3497, 3502, 3507, 3512, 3517, 3522, 3527, 3532,
6482     3537, 3542, 3547, 3552, 3557, 3562, 3567, 3572,
6483     3577, 3582, 0, 0, 0, 0, 0, 0,
6484 };
6485
6486 static const Q_UINT16 di_1F[] = {
6487     3587, 3592, 3597, 3602, 3607, 3612, 3617, 3622,
6488     3627, 3632, 3637, 3642, 3647, 3652, 3657, 3662,
6489     3667, 3672, 3677, 3682, 3687, 3692, 0, 0,
6490     3697, 3702, 3707, 3712, 3717, 3722, 0, 0,
6491     3727, 3732, 3737, 3742, 3747, 3752, 3757, 3762,
6492     3767, 3772, 3777, 3782, 3787, 3792, 3797, 3802,
6493     3807, 3812, 3817, 3822, 3827, 3832, 3837, 3842,
6494     3847, 3852, 3857, 3862, 3867, 3872, 3877, 3882,
6495     3887, 3892, 3897, 3902, 3907, 3912, 0, 0,
6496     3917, 3922, 3927, 3932, 3937, 3942, 0, 0,
6497     3947, 3952, 3957, 3962, 3967, 3972, 3977, 3982,
6498     0, 3987, 0, 3992, 0, 3997, 0, 4002,
6499     4007, 4012, 4017, 4022, 4027, 4032, 4037, 4042,
6500     4047, 4052, 4057, 4062, 4067, 4072, 4077, 4082,
6501     4087, 4092, 4096, 4101, 4105, 4110, 4114, 4119,
6502     4123, 4128, 4132, 4137, 4141, 4146, 0, 0,
6503     4150, 4155, 4160, 4165, 4170, 4175, 4180, 4185,
6504     4190, 4195, 4200, 4205, 4210, 4215, 4220, 4225,
6505     4230, 4235, 4240, 4245, 4250, 4255, 4260, 4265,
6506     4270, 4275, 4280, 4285, 4290, 4295, 4300, 4305,
6507     4310, 4315, 4320, 4325, 4330, 4335, 4340, 4345,
6508     4350, 4355, 4360, 4365, 4370, 4375, 4380, 4385,
6509     4390, 4395, 4400, 4405, 4410, 0, 4415, 4420,
6510     4425, 4430, 4435, 4440, 4444, 4449, 4454, 4458,
6511     4463, 4468, 4473, 4478, 4483, 0, 4488, 4493,
6512     4498, 4503, 4507, 4512, 4516, 4521, 4526, 4531,
6513     4536, 4541, 4546, 4551, 0, 0, 4555, 4560,
6514     4565, 4570, 4575, 4580, 0, 4584, 4589, 4594,
6515     4599, 4604, 4609, 4614, 4618, 4623, 4628, 4633,
6516     4638, 4643, 4648, 4653, 4657, 4662, 4667, 4671,
6517     0, 0, 4675, 4680, 4685, 0, 4690, 4695,
6518     4700, 4705, 4709, 4714, 4718, 4723, 4727, 0,
6519 };
6520
6521 static const Q_UINT16 di_20[] = {
6522     4732, 4736, 4740, 4744, 4748, 4752, 4756, 4760,
6523     4764, 4768, 4772, 0, 0, 0, 0, 0,
6524     0, 4776, 0, 0, 0, 0, 0, 4780,
6525     0, 0, 0, 0, 0, 0, 0, 0,
6526     0, 0, 0, 0, 4785, 4789, 4794, 0,
6527     0, 0, 0, 0, 0, 0, 0, 4800,
6528     0, 0, 0, 4804, 4809, 0, 4815, 4820,
6529     0, 0, 0, 0, 4826, 0, 4831, 0,
6530     0, 0, 0, 0, 0, 0, 0, 0,
6531     4836, 4841, 0, 0, 0, 0, 0, 0,
6532     0, 0, 0, 0, 0, 0, 0, 0,
6533     0, 0, 0, 0, 0, 0, 0, 0,
6534     0, 0, 0, 0, 0, 0, 0, 0,
6535     0, 0, 0, 0, 0, 0, 0, 0,
6536     4846, 0, 0, 0, 4850, 4854, 4858, 4862,
6537     4866, 4870, 4874, 4878, 4882, 4886, 4890, 4894,
6538     4898, 4902, 4906, 4910, 4914, 4918, 4922, 4926,
6539     4930, 4934, 4938, 4942, 4946, 4950, 4954, 0,
6540     0, 0, 0, 0, 0, 0, 0, 0,
6541     0, 0, 0, 0, 0, 0, 0, 0,
6542     0, 0, 0, 0, 0, 0, 0, 0,
6543     4958, 0, 0, 0, 0, 0, 0, 0,
6544     0, 0, 0, 0, 0, 0, 0, 0,
6545     0, 0, 0, 0, 0, 0, 0, 0,
6546     0, 0, 0, 0, 0, 0, 0, 0,
6547     0, 0, 0, 0, 0, 0, 0, 0,
6548     0, 0, 0, 0, 0, 0, 0, 0,
6549     0, 0, 0, 0, 0, 0, 0, 0,
6550     0, 0, 0, 0, 0, 0, 0, 0,
6551     0, 0, 0, 0, 0, 0, 0, 0,
6552     0, 0, 0, 0, 0, 0, 0, 0,
6553     0, 0, 0, 0, 0, 0, 0, 0,
6554 };
6555
6556 static const Q_UINT16 di_21[] = {
6557     4963, 4969, 4975, 4979, 0, 4984, 4990, 4996,
6558     0, 5000, 5005, 5009, 5013, 5017, 5021, 5025,
6559     5029, 5033, 5037, 5041, 0, 5045, 5049, 0,
6560     0, 5054, 5058, 5062, 5066, 5070, 0, 0,
6561     5074, 5079, 5085, 0, 5090, 0, 5094, 0,
6562     5098, 0, 5102, 5106, 5110, 5114, 0, 5118,
6563     5122, 5126, 0, 5130, 5134, 5138, 5142, 5146,
6564     5150, 5154, 0, 0, 0, 0, 0, 0,
6565     0, 0, 0, 0, 0, 0, 0, 0,
6566     0, 0, 0, 0, 0, 0, 0, 0,
6567     0, 0, 0, 5158, 5164, 5170, 5176, 5182,
6568     5188, 5194, 5200, 5206, 5212, 5218, 5224, 5230,
6569     5235, 5239, 5244, 5250, 5255, 5259, 5264, 5270,
6570     5277, 5282, 5286, 5291, 5297, 5301, 5305, 5309,
6571     5313, 5317, 5322, 5328, 5333, 5337, 5342, 5348,
6572     5355, 5360, 5364, 5369, 5375, 5379, 5383, 5387,
6573     0, 0, 0, 0, 0, 0, 0, 0,
6574     0, 0, 0, 0, 0, 0, 0, 0,
6575     0, 0, 0, 0, 0, 0, 0, 0,
6576     0, 0, 5391, 5396, 0, 0, 0, 0,
6577     0, 0, 0, 0, 0, 0, 0, 0,
6578     0, 0, 0, 0, 0, 0, 5401, 0,
6579     0, 0, 0, 0, 0, 0, 0, 0,
6580     0, 0, 0, 0, 0, 0, 0, 0,
6581     0, 0, 0, 0, 0, 0, 0, 0,
6582     0, 0, 0, 0, 0, 5406, 5411, 5416,
6583     0, 0, 0, 0, 0, 0, 0, 0,
6584     0, 0, 0, 0, 0, 0, 0, 0,
6585     0, 0, 0, 0, 0, 0, 0, 0,
6586     0, 0, 0, 0, 0, 0, 0, 0,
6587     0, 0, 0, 0, 0, 0, 0, 0,
6588     0, 0, 0, 0, 0, 0, 0, 0,
6589 };
6590
6591 static const Q_UINT16 di_22[] = {
6592     0, 0, 0, 0, 5421, 0, 0, 0,
6593     0, 5426, 0, 0, 5431, 0, 0, 0,
6594     0, 0, 0, 0, 0, 0, 0, 0,
6595     0, 0, 0, 0, 0, 0, 0, 0,
6596     0, 0, 0, 0, 5436, 0, 5441, 0,
6597     0, 0, 0, 0, 5446, 5451, 0, 5457,
6598     5462, 0, 0, 0, 0, 0, 0, 0,
6599     0, 0, 0, 0, 0, 0, 0, 0,
6600     0, 5468, 0, 0, 5473, 0, 0, 5478,
6601     0, 5483, 0, 0, 0, 0, 0, 0,
6602     0, 0, 0, 0, 0, 0, 0, 0,
6603     0, 0, 0, 0, 0, 0, 0, 0,
6604     5488, 0, 5493, 0, 0, 0, 0, 0,
6605     0, 0, 0, 0, 0, 5498, 5503, 5508,
6606     5513, 5518, 0, 0, 5523, 5528, 0, 0,
6607     5533, 5538, 0, 0, 0, 0, 0, 0,
6608     5543, 5548, 0, 0, 5553, 5558, 0, 0,
6609     5563, 5568, 0, 0, 0, 0, 0, 0,
6610     0, 0, 0, 0, 0, 0, 0, 0,
6611     0, 0, 0, 0, 0, 0, 0, 0,
6612     0, 0, 0, 0, 0, 0, 0, 0,
6613     0, 0, 0, 0, 5573, 5578, 5583, 5588,
6614     0, 0, 0, 0, 0, 0, 0, 0,
6615     0, 0, 0, 0, 0, 0, 0, 0,
6616     0, 0, 0, 0, 0, 0, 0, 0,
6617     0, 0, 0, 0, 0, 0, 0, 0,
6618     0, 0, 0, 0, 0, 0, 0, 0,
6619     0, 0, 0, 0, 0, 0, 0, 0,
6620     5593, 5598, 5603, 5608, 0, 0, 0, 0,
6621     0, 0, 5613, 5618, 5623, 5628, 0, 0,
6622     0, 0, 0, 0, 0, 0, 0, 0,
6623     0, 0, 0, 0, 0, 0, 0, 0,
6624 };
6625
6626 static const Q_UINT16 di_23[] = {
6627     0, 0, 0, 0, 0, 0, 0, 0,
6628     0, 0, 0, 0, 0, 0, 0, 0,
6629     0, 0, 0, 0, 0, 0, 0, 0,
6630     0, 0, 0, 0, 0, 0, 0, 0,
6631     0, 0, 0, 0, 0, 0, 0, 0,
6632     0, 5633, 5637, 0, 0, 0, 0, 0,
6633     0, 0, 0, 0, 0, 0, 0, 0,
6634     0, 0, 0, 0, 0, 0, 0, 0,
6635     0, 0, 0, 0, 0, 0, 0, 0,
6636     0, 0, 0, 0, 0, 0, 0, 0,
6637     0, 0, 0, 0, 0, 0, 0, 0,
6638     0, 0, 0, 0, 0, 0, 0, 0,
6639     0, 0, 0, 0, 0, 0, 0, 0,
6640     0, 0, 0, 0, 0, 0, 0, 0,
6641     0, 0, 0, 0, 0, 0, 0, 0,
6642     0, 0, 0, 0, 0, 0, 0, 0,
6643     0, 0, 0, 0, 0, 0, 0, 0,
6644     0, 0, 0, 0, 0, 0, 0, 0,
6645     0, 0, 0, 0, 0, 0, 0, 0,
6646     0, 0, 0, 0, 0, 0, 0, 0,
6647     0, 0, 0, 0, 0, 0, 0, 0,
6648     0, 0, 0, 0, 0, 0, 0, 0,
6649     0, 0, 0, 0, 0, 0, 0, 0,
6650     0, 0, 0, 0, 0, 0, 0, 0,
6651     0, 0, 0, 0, 0, 0, 0, 0,
6652     0, 0, 0, 0, 0, 0, 0, 0,
6653     0, 0, 0, 0, 0, 0, 0, 0,
6654     0, 0, 0, 0, 0, 0, 0, 0,
6655     0, 0, 0, 0, 0, 0, 0, 0,
6656     0, 0, 0, 0, 0, 0, 0, 0,
6657     0, 0, 0, 0, 0, 0, 0, 0,
6658     0, 0, 0, 0, 0, 0, 0, 0,
6659 };
6660
6661 static const Q_UINT16 di_24[] = {
6662     0, 0, 0, 0, 0, 0, 0, 0,
6663     0, 0, 0, 0, 0, 0, 0, 0,
6664     0, 0, 0, 0, 0, 0, 0, 0,
6665     0, 0, 0, 0, 0, 0, 0, 0,
6666     0, 0, 0, 0, 0, 0, 0, 0,
6667     0, 0, 0, 0, 0, 0, 0, 0,
6668     0, 0, 0, 0, 0, 0, 0, 0,
6669     0, 0, 0, 0, 0, 0, 0, 0,
6670     0, 0, 0, 0, 0, 0, 0, 0,
6671     0, 0, 0, 0, 0, 0, 0, 0,
6672     0, 0, 0, 0, 0, 0, 0, 0,
6673     0, 0, 0, 0, 0, 0, 0, 0,
6674     5641, 5645, 5649, 5653, 5657, 5661, 5665, 5669,
6675     5673, 5677, 5682, 5687, 5692, 5697, 5702, 5707,
6676     5712, 5717, 5722, 5727, 5732, 5738, 5744, 5750,
6677     5756, 5762, 5768, 5774, 5780, 5786, 5793, 5800,
6678     5807, 5814, 5821, 5828, 5835, 5842, 5849, 5856,
6679     5863, 5868, 5873, 5878, 5883, 5888, 5893, 5898,
6680     5903, 5908, 5914, 5920, 5926, 5932, 5938, 5944,
6681     5950, 5956, 5962, 5968, 5974, 5980, 5986, 5992,
6682     5998, 6004, 6010, 6016, 6022, 6028, 6034, 6040,
6683     6046, 6052, 6058, 6064, 6070, 6076, 6082, 6088,
6684     6094, 6100, 6106, 6112, 6118, 6124, 6130, 6134,
6685     6138, 6142, 6146, 6150, 6154, 6158, 6162, 6166,
6686     6170, 6174, 6178, 6182, 6186, 6190, 6194, 6198,
6687     6202, 6206, 6210, 6214, 6218, 6222, 6226, 6230,
6688     6234, 6238, 6242, 6246, 6250, 6254, 6258, 6262,
6689     6266, 6270, 6274, 6278, 6282, 6286, 6290, 6294,
6690     6298, 6302, 6306, 6310, 6314, 6318, 6322, 6326,
6691     6330, 6334, 6338, 0, 0, 0, 0, 0,
6692     0, 0, 0, 0, 0, 0, 0, 0,
6693     0, 0, 0, 0, 0, 0, 0, 0,
6694 };
6695
6696 static const Q_UINT16 di_2E[] = {
6697     0, 0, 0, 0, 0, 0, 0, 0,
6698     0, 0, 0, 0, 0, 0, 0, 0,
6699     0, 0, 0, 0, 0, 0, 0, 0,
6700     0, 0, 0, 0, 0, 0, 0, 0,
6701     0, 0, 0, 0, 0, 0, 0, 0,
6702     0, 0, 0, 0, 0, 0, 0, 0,
6703     0, 0, 0, 0, 0, 0, 0, 0,
6704     0, 0, 0, 0, 0, 0, 0, 0,
6705     0, 0, 0, 0, 0, 0, 0, 0,
6706     0, 0, 0, 0, 0, 0, 0, 0,
6707     0, 0, 0, 0, 0, 0, 0, 0,
6708     0, 0, 0, 0, 0, 0, 0, 0,
6709     0, 0, 0, 0, 0, 0, 0, 0,
6710     0, 0, 0, 0, 0, 0, 0, 0,
6711     0, 0, 0, 0, 0, 0, 0, 0,
6712     0, 0, 0, 0, 0, 0, 0, 0,
6713     0, 0, 0, 0, 0, 0, 0, 0,
6714     0, 0, 0, 0, 0, 0, 0, 0,
6715     0, 0, 0, 0, 0, 0, 0, 0,
6716     0, 0, 0, 0, 0, 0, 0, 6342,
6717     0, 0, 0, 0, 0, 0, 0, 0,
6718     0, 0, 0, 0, 0, 0, 0, 0,
6719     0, 0, 0, 0, 0, 0, 0, 0,
6720     0, 0, 0, 0, 0, 0, 0, 0,
6721     0, 0, 0, 0, 0, 0, 0, 0,
6722     0, 0, 0, 0, 0, 0, 0, 0,
6723     0, 0, 0, 0, 0, 0, 0, 0,
6724     0, 0, 0, 0, 0, 0, 0, 0,
6725     0, 0, 0, 0, 0, 0, 0, 0,
6726     0, 0, 0, 0, 0, 0, 0, 0,
6727     0, 0, 0, 6346, 0, 0, 0, 0,
6728     0, 0, 0, 0, 0, 0, 0, 0,
6729 };
6730
6731 static const Q_UINT16 di_2F[] = {
6732     6350, 6354, 6358, 6362, 6366, 6370, 6374, 6378,
6733     6382, 6386, 6390, 6394, 6398, 6402, 6406, 6410,
6734     6414, 6418, 6422, 6426, 6430, 6434, 6438, 6442,
6735     6446, 6450, 6454, 6458, 6462, 6466, 6470, 6474,
6736     6478, 6482, 6486, 6490, 6494, 6498, 6502, 6506,
6737     6510, 6514, 6518, 6522, 6526, 6530, 6534, 6538,
6738     6542, 6546, 6550, 6554, 6558, 6562, 6566, 6570,
6739     6574, 6578, 6582, 6586, 6590, 6594, 6598, 6602,
6740     6606, 6610, 6614, 6618, 6622, 6626, 6630, 6634,
6741     6638, 6642, 6646, 6650, 6654, 6658, 6662, 6666,
6742     6670, 6674, 6678, 6682, 6686, 6690, 6694, 6698,
6743     6702, 6706, 6710, 6714, 6718, 6722, 6726, 6730,
6744     6734, 6738, 6742, 6746, 6750, 6754, 6758, 6762,
6745     6766, 6770, 6774, 6778, 6782, 6786, 6790, 6794,
6746     6798, 6802, 6806, 6810, 6814, 6818, 6822, 6826,
6747     6830, 6834, 6838, 6842, 6846, 6850, 6854, 6858,
6748     6862, 6866, 6870, 6874, 6878, 6882, 6886, 6890,
6749     6894, 6898, 6902, 6906, 6910, 6914, 6918, 6922,
6750     6926, 6930, 6934, 6938, 6942, 6946, 6950, 6954,
6751     6958, 6962, 6966, 6970, 6974, 6978, 6982, 6986,
6752     6990, 6994, 6998, 7002, 7006, 7010, 7014, 7018,
6753     7022, 7026, 7030, 7034, 7038, 7042, 7046, 7050,
6754     7054, 7058, 7062, 7066, 7070, 7074, 7078, 7082,
6755     7086, 7090, 7094, 7098, 7102, 7106, 7110, 7114,
6756     7118, 7122, 7126, 7130, 7134, 7138, 7142, 7146,
6757     7150, 7154, 7158, 7162, 7166, 7170, 7174, 7178,
6758     7182, 7186, 7190, 7194, 7198, 7202, 0, 0,
6759     0, 0, 0, 0, 0, 0, 0, 0,
6760     0, 0, 0, 0, 0, 0, 0, 0,
6761     0, 0, 0, 0, 0, 0, 0, 0,
6762     0, 0, 0, 0, 0, 0, 0, 0,
6763     0, 0, 0, 0, 0, 0, 0, 0,
6764 };
6765
6766 static const Q_UINT16 di_30[] = {
6767     7206, 0, 0, 0, 0, 0, 0, 0,
6768     0, 0, 0, 0, 0, 0, 0, 0,
6769     0, 0, 0, 0, 0, 0, 0, 0,
6770     0, 0, 0, 0, 0, 0, 0, 0,
6771     0, 0, 0, 0, 0, 0, 0, 0,
6772     0, 0, 0, 0, 0, 0, 0, 0,
6773     0, 0, 0, 0, 0, 0, 7210, 0,
6774     7214, 7218, 7222, 0, 0, 0, 0, 0,
6775     0, 0, 0, 0, 0, 0, 0, 0,
6776     0, 0, 0, 0, 7226, 0, 7231, 0,
6777     7236, 0, 7241, 0, 7246, 0, 7251, 0,
6778     7256, 0, 7261, 0, 7266, 0, 7271, 0,
6779     7276, 0, 7281, 0, 0, 7286, 0, 7291,
6780     0, 7296, 0, 0, 0, 0, 0, 0,
6781     7301, 7306, 0, 7311, 7316, 0, 7321, 7326,
6782     0, 7331, 7336, 0, 7341, 7346, 0, 0,
6783     0, 0, 0, 0, 0, 0, 0, 0,
6784     0, 0, 0, 0, 0, 0, 0, 0,
6785     0, 0, 0, 0, 7351, 0, 0, 0,
6786     0, 0, 0, 7356, 7361, 0, 7366, 0,
6787     0, 0, 0, 0, 0, 0, 0, 0,
6788     0, 0, 0, 0, 7371, 0, 7376, 0,
6789     7381, 0, 7386, 0, 7391, 0, 7396, 0,
6790     7401, 0, 7406, 0, 7411, 0, 7416, 0,
6791     7421, 0, 7426, 0, 0, 7431, 0, 7436,
6792     0, 7441, 0, 0, 0, 0, 0, 0,
6793     7446, 7451, 0, 7456, 7461, 0, 7466, 7471,
6794     0, 7476, 7481, 0, 7486, 7491, 0, 0,
6795     0, 0, 0, 0, 0, 0, 0, 0,
6796     0, 0, 0, 0, 0, 0, 0, 0,
6797     0, 0, 0, 0, 7496, 0, 0, 7501,
6798     7506, 7511, 7516, 0, 0, 0, 7521, 0,
6799 };
6800
6801 static const Q_UINT16 di_31[] = {
6802     0, 0, 0, 0, 0, 0, 0, 0,
6803     0, 0, 0, 0, 0, 0, 0, 0,
6804     0, 0, 0, 0, 0, 0, 0, 0,
6805     0, 0, 0, 0, 0, 0, 0, 0,
6806     0, 0, 0, 0, 0, 0, 0, 0,
6807     0, 0, 0, 0, 0, 0, 0, 0,
6808     0, 7526, 7530, 7534, 7538, 7542, 7546, 7550,
6809     7554, 7558, 7562, 7566, 7570, 7574, 7578, 7582,
6810     7586, 7590, 7594, 7598, 7602, 7606, 7610, 7614,
6811     7618, 7622, 7626, 7630, 7634, 7638, 7642, 7646,
6812     7650, 7654, 7658, 7662, 7666, 7670, 7674, 7678,
6813     7682, 7686, 7690, 7694, 7698, 7702, 7706, 7710,
6814     7714, 7718, 7722, 7726, 7730, 7734, 7738, 7742,
6815     7746, 7750, 7754, 7758, 7762, 7766, 7770, 7774,
6816     7778, 7782, 7786, 7790, 7794, 7798, 7802, 7806,
6817     7810, 7814, 7818, 7822, 7826, 7830, 7834, 7838,
6818     7842, 7846, 7850, 7854, 7858, 7862, 7866, 7870,
6819     7874, 7878, 7882, 7886, 7890, 7894, 7898, 0,
6820     0, 0, 7902, 7906, 7910, 7914, 7918, 7922,
6821     7926, 7930, 7934, 7938, 7942, 7946, 7950, 7954,
6822     0, 0, 0, 0, 0, 0, 0, 0,
6823     0, 0, 0, 0, 0, 0, 0, 0,
6824     0, 0, 0, 0, 0, 0, 0, 0,
6825     0, 0, 0, 0, 0, 0, 0, 0,
6826     0, 0, 0, 0, 0, 0, 0, 0,
6827     0, 0, 0, 0, 0, 0, 0, 0,
6828     0, 0, 0, 0, 0, 0, 0, 0,
6829     0, 0, 0, 0, 0, 0, 0, 0,
6830     0, 0, 0, 0, 0, 0, 0, 0,
6831     0, 0, 0, 0, 0, 0, 0, 0,
6832     0, 0, 0, 0, 0, 0, 0, 0,
6833     0, 0, 0, 0, 0, 0, 0, 0,
6834 };
6835
6836 static const Q_UINT16 di_32[] = {
6837     7958, 7964, 7970, 7976, 7982, 7988, 7994, 8000,
6838     8006, 8012, 8018, 8024, 8030, 8036, 8042, 8049,
6839     8056, 8063, 8070, 8077, 8084, 8091, 8098, 8105,
6840     8112, 8119, 8126, 8133, 8140, 0, 0, 0,
6841     8147, 8153, 8159, 8165, 8171, 8177, 8183, 8189,
6842     8195, 8201, 8207, 8213, 8219, 8225, 8231, 8237,
6843     8243, 8249, 8255, 8261, 8267, 8273, 8279, 8285,
6844     8291, 8297, 8303, 8309, 8315, 8321, 8327, 8333,
6845     8339, 8345, 8351, 8357, 0, 0, 0, 0,
6846     0, 0, 0, 0, 0, 0, 0, 0,
6847     0, 0, 0, 0, 0, 0, 0, 0,
6848     0, 0, 0, 0, 0, 0, 0, 0,
6849     8363, 8367, 8371, 8375, 8379, 8383, 8387, 8391,
6850     8395, 8399, 8403, 8407, 8411, 8415, 8419, 8424,
6851     8429, 8434, 8439, 8444, 8449, 8454, 8459, 8464,
6852     8469, 8474, 8479, 8484, 0, 0, 0, 0,
6853     8489, 8493, 8497, 8501, 8505, 8509, 8513, 8517,
6854     8521, 8525, 8529, 8533, 8537, 8541, 8545, 8549,
6855     8553, 8557, 8561, 8565, 8569, 8573, 8577, 8581,
6856     8585, 8589, 8593, 8597, 8601, 8605, 8609, 8613,
6857     8617, 8621, 8625, 8629, 8633, 8637, 8641, 8645,
6858     8649, 8653, 8657, 8661, 8665, 8669, 8673, 8677,
6859     8681, 0, 0, 0, 0, 0, 0, 0,
6860     0, 0, 0, 0, 0, 0, 0, 0,
6861     8685, 8690, 8695, 8700, 8705, 8710, 8715, 8720,
6862     8725, 8730, 8736, 8742, 0, 0, 0, 0,
6863     8748, 8752, 8756, 8760, 8764, 8768, 8772, 8776,
6864     8780, 8784, 8788, 8792, 8796, 8800, 8804, 8808,
6865     8812, 8816, 8820, 8824, 8828, 8832, 8836, 8840,
6866     8844, 8848, 8852, 8856, 8860, 8864, 8868, 8872,
6867     8876, 8880, 8884, 8888, 8892, 8896, 8900, 8904,
6868     8908, 8912, 8916, 8920, 8924, 8928, 8932, 0,
6869 };
6870
6871 static const Q_UINT16 di_33[] = {
6872     8936, 8943, 8950, 8957, 8963, 8970, 8976, 8982,
6873     8990, 8997, 9003, 9009, 9015, 9022, 9029, 9035,
6874     9041, 9046, 9052, 9059, 9066, 9071, 9079, 9088,
6875     9096, 9102, 9110, 9118, 9125, 9131, 9137, 9143,
6876     9150, 9158, 9165, 9171, 9177, 9183, 9188, 9193,
6877     9198, 9203, 9209, 9215, 9223, 9229, 9236, 9244,
6878     9250, 9255, 9260, 9268, 9275, 9283, 9289, 9297,
6879     9302, 9308, 9314, 9320, 9326, 9332, 9339, 9345,
6880     9350, 9356, 9362, 9368, 9375, 9381, 9387, 9393,
6881     9401, 9408, 9413, 9421, 9426, 9433, 9440, 9446,
6882     9452, 9458, 9465, 9470, 9476, 9483, 9488, 9496,
6883     9502, 9507, 9512, 9517, 9522, 9527, 9532, 9537,
6884     9542, 9547, 9552, 9558, 9564, 9570, 9576, 9582,
6885     9588, 9594, 9600, 9606, 9612, 9618, 9624, 9630,
6886     9636, 9642, 9648, 9653, 9658, 9664, 9669, 0,
6887     0, 0, 0, 9674, 9679, 9684, 9689, 9694,
6888     9701, 9706, 9711, 9716, 9721, 9726, 9731, 9736,
6889     9741, 9747, 9754, 9759, 9764, 9769, 9774, 9779,
6890     9784, 9789, 9795, 9801, 9807, 9813, 9818, 9823,
6891     9828, 9833, 9838, 9843, 9848, 9853, 9858, 9863,
6892     9869, 9875, 9880, 9886, 9892, 9898, 9903, 9909,
6893     9915, 9922, 9927, 9933, 9939, 9945, 9951, 9959,
6894     9968, 9973, 9978, 9983, 9988, 9993, 9998, 10003,
6895     10008, 10013, 10018, 10023, 10028, 10033, 10038, 10043,
6896     10048, 10053, 10058, 10065, 10070, 10075, 10080, 10087,
6897     10093, 10098, 10103, 10108, 10113, 10118, 10123, 10128,
6898     10133, 10138, 10143, 10149, 10154, 10159, 10165, 10171,
6899     10176, 10183, 10189, 10194, 10199, 10204, 0, 0,
6900     10209, 10214, 10219, 10224, 10229, 10234, 10239, 10244,
6901     10249, 10254, 10260, 10266, 10272, 10278, 10284, 10290,
6902     10296, 10302, 10308, 10314, 10320, 10326, 10332, 10338,
6903     10344, 10350, 10356, 10362, 10368, 10374, 10380, 0,
6904 };
6905
6906 static const Q_UINT16 di_F9[] = {
6907     10386, 10390, 10394, 10398, 10402, 10406, 10410, 10414,
6908     10418, 10422, 10426, 10430, 10434, 10438, 10442, 10446,
6909     10450, 10454, 10458, 10462, 10466, 10470, 10474, 10478,
6910     10482, 10486, 10490, 10494, 10498, 10502, 10506, 10510,
6911     10514, 10518, 10522, 10526, 10530, 10534, 10538, 10542,
6912     10546, 10550, 10554, 10558, 10562, 10566, 10570, 10574,
6913     10578, 10582, 10586, 10590, 10594, 10598, 10602, 10606,
6914     10610, 10614, 10618, 10622, 10626, 10630, 10634, 10638,
6915     10642, 10646, 10650, 10654, 10658, 10662, 10666, 10670,
6916     10674, 10678, 10682, 10686, 10690, 10694, 10698, 10702,
6917     10706, 10710, 10714, 10718, 10722, 10726, 10730, 10734,
6918     10738, 10742, 10746, 10750, 10754, 10758, 10762, 10766,
6919     10770, 10774, 10778, 10782, 10786, 10790, 10794, 10798,
6920     10802, 10806, 10810, 10814, 10818, 10822, 10826, 10830,
6921     10834, 10838, 10842, 10846, 10850, 10854, 10858, 10862,
6922     10866, 10870, 10874, 10878, 10882, 10886, 10890, 10894,
6923     10898, 10902, 10906, 10910, 10914, 10918, 10922, 10926,
6924     10930, 10934, 10938, 10942, 10946, 10950, 10954, 10958,
6925     10962, 10966, 10970, 10974, 10978, 10982, 10986, 10990,
6926     10994, 10998, 11002, 11006, 11010, 11014, 11018, 11022,
6927     11026, 11030, 11034, 11038, 11042, 11046, 11050, 11054,
6928     11058, 11062, 11066, 11070, 11074, 11078, 11082, 11086,
6929     11090, 11094, 11098, 11102, 11106, 11110, 11114, 11118,
6930     11122, 11126, 11130, 11134, 11138, 11142, 11146, 11150,
6931     11154, 11158, 11162, 11166, 11170, 11174, 11178, 11182,
6932     11186, 11190, 11194, 11198, 11202, 11206, 11210, 11214,
6933     11218, 11222, 11226, 11230, 11234, 11238, 11242, 11246,
6934     11250, 11254, 11258, 11262, 11266, 11270, 11274, 11278,
6935     11282, 11286, 11290, 11294, 11298, 11302, 11306, 11310,
6936     11314, 11318, 11322, 11326, 11330, 11334, 11338, 11342,
6937     11346, 11350, 11354, 11358, 11362, 11366, 11370, 11374,
6938     11378, 11382, 11386, 11390, 11394, 11398, 11402, 11406,
6939 };
6940
6941 static const Q_UINT16 di_FA[] = {
6942     11410, 11414, 11418, 11422, 11426, 11430, 11434, 11438,
6943     11442, 11446, 11450, 11454, 11458, 11462, 0, 0,
6944     11466, 0, 11470, 0, 0, 11474, 11478, 11482,
6945     11486, 11490, 11494, 11498, 11502, 11506, 11510, 0,
6946     11514, 0, 11518, 0, 0, 11522, 11526, 0,
6947     0, 0, 11530, 11534, 11538, 11542, 0, 0,
6948     0, 0, 0, 0, 0, 0, 0, 0,
6949     0, 0, 0, 0, 0, 0, 0, 0,
6950     0, 0, 0, 0, 0, 0, 0, 0,
6951     0, 0, 0, 0, 0, 0, 0, 0,
6952     0, 0, 0, 0, 0, 0, 0, 0,
6953     0, 0, 0, 0, 0, 0, 0, 0,
6954     0, 0, 0, 0, 0, 0, 0, 0,
6955     0, 0, 0, 0, 0, 0, 0, 0,
6956     0, 0, 0, 0, 0, 0, 0, 0,
6957     0, 0, 0, 0, 0, 0, 0, 0,
6958     0, 0, 0, 0, 0, 0, 0, 0,
6959     0, 0, 0, 0, 0, 0, 0, 0,
6960     0, 0, 0, 0, 0, 0, 0, 0,
6961     0, 0, 0, 0, 0, 0, 0, 0,
6962     0, 0, 0, 0, 0, 0, 0, 0,
6963     0, 0, 0, 0, 0, 0, 0, 0,
6964     0, 0, 0, 0, 0, 0, 0, 0,
6965     0, 0, 0, 0, 0, 0, 0, 0,
6966     0, 0, 0, 0, 0, 0, 0, 0,
6967     0, 0, 0, 0, 0, 0, 0, 0,
6968     0, 0, 0, 0, 0, 0, 0, 0,
6969     0, 0, 0, 0, 0, 0, 0, 0,
6970     0, 0, 0, 0, 0, 0, 0, 0,
6971     0, 0, 0, 0, 0, 0, 0, 0,
6972     0, 0, 0, 0, 0, 0, 0, 0,
6973     0, 0, 0, 0, 0, 0, 0, 0,
6974 };
6975
6976 static const Q_UINT16 di_FB[] = {
6977     11546, 11551, 11556, 11561, 11567, 11573, 11578, 0,
6978     0, 0, 0, 0, 0, 0, 0, 0,
6979     0, 0, 0, 11583, 11588, 11593, 11598, 11603,
6980     0, 0, 0, 0, 0, 11608, 0, 11613,
6981     11618, 11622, 11626, 11630, 11634, 11638, 11642, 11646,
6982     11650, 11654, 11658, 11663, 11668, 11673, 11678, 11683,
6983     11688, 11693, 11698, 11703, 11708, 11713, 11718, 0,
6984     11723, 11728, 11733, 11738, 11743, 0, 11748, 0,
6985     11753, 11758, 0, 11763, 11768, 0, 11773, 11778,
6986     11783, 11788, 11793, 11798, 11803, 11808, 11813, 11818,
6987     11823, 11827, 11831, 11835, 11839, 11843, 11847, 11851,
6988     11855, 11859, 11863, 11867, 11871, 11875, 11879, 11883,
6989     11887, 11891, 11895, 11899, 11903, 11907, 11911, 11915,
6990     11919, 11923, 11927, 11931, 11935, 11939, 11943, 11947,
6991     11951, 11955, 11959, 11963, 11967, 11971, 11975, 11979,
6992     11983, 11987, 11991, 11995, 11999, 12003, 12007, 12011,
6993     12015, 12019, 12023, 12027, 12031, 12035, 12039, 12043,
6994     12047, 12051, 12055, 12059, 12063, 12067, 12071, 12075,
6995     12079, 12083, 12087, 12091, 12095, 12099, 12103, 12107,
6996     12111, 12115, 12119, 12123, 12127, 12131, 12135, 12139,
6997     12143, 12147, 12151, 12155, 12159, 12163, 12167, 12171,
6998     12175, 12179, 12183, 12187, 12191, 12195, 12199, 12203,
6999     12207, 12211, 0, 0, 0, 0, 0, 0,
7000     0, 0, 0, 0, 0, 0, 0, 0,
7001     0, 0, 0, 0, 0, 0, 0, 0,
7002     0, 0, 0, 0, 0, 0, 0, 0,
7003     0, 0, 0, 12215, 12219, 12223, 12227, 12231,
7004     12235, 12239, 12243, 12247, 12251, 12255, 12259, 12263,
7005     12267, 12271, 12275, 12279, 12283, 12287, 12291, 12295,
7006     12299, 12303, 12307, 12312, 12317, 12322, 12327, 12332,
7007     12337, 12342, 12347, 12352, 12357, 12362, 12367, 12372,
7008     12377, 12382, 12387, 12392, 12397, 12401, 12405, 12409,
7009 };
7010
7011 static const Q_UINT16 di_FC[] = {
7012     12413, 12418, 12423, 12428, 12433, 12438, 12443, 12448,
7013     12453, 12458, 12463, 12468, 12473, 12478, 12483, 12488,
7014     12493, 12498, 12503, 12508, 12513, 12518, 12523, 12528,
7015     12533, 12538, 12543, 12548, 12553, 12558, 12563, 12568,
7016     12573, 12578, 12583, 12588, 12593, 12598, 12603, 12608,
7017     12613, 12618, 12623, 12628, 12633, 12638, 12643, 12648,
7018     12653, 12658, 12663, 12668, 12673, 12678, 12683, 12688,
7019     12693, 12698, 12703, 12708, 12713, 12718, 12723, 12728,
7020     12733, 12738, 12743, 12748, 12753, 12758, 12763, 12768,
7021     12773, 12778, 12783, 12788, 12793, 12798, 12803, 12808,
7022     12813, 12818, 12823, 12828, 12833, 12838, 12843, 12848,
7023     12853, 12858, 12863, 12868, 12873, 12878, 12883, 12889,
7024     12895, 12901, 12907, 12913, 12919, 12924, 12929, 12934,
7025     12939, 12944, 12949, 12954, 12959, 12964, 12969, 12974,
7026     12979, 12984, 12989, 12994, 12999, 13004, 13009, 13014,
7027     13019, 13024, 13029, 13034, 13039, 13044, 13049, 13054,
7028     13059, 13064, 13069, 13074, 13079, 13084, 13089, 13094,
7029     13099, 13104, 13109, 13114, 13119, 13124, 13129, 13134,
7030     13139, 13144, 13149, 13154, 13159, 13164, 13169, 13174,
7031     13179, 13184, 13189, 13194, 13199, 13204, 13209, 13214,
7032     13219, 13224, 13229, 13234, 13239, 13244, 13249, 13254,
7033     13259, 13264, 13269, 13274, 13279, 13284, 13289, 13294,
7034     13299, 13304, 13309, 13314, 13319, 13324, 13329, 13334,
7035     13339, 13344, 13349, 13354, 13359, 13364, 13369, 13374,
7036     13379, 13384, 13389, 13394, 13399, 13404, 13409, 13414,
7037     13419, 13424, 13429, 13434, 13439, 13444, 13449, 13454,
7038     13459, 13464, 13469, 13474, 13479, 13484, 13489, 13494,
7039     13499, 13504, 13509, 13514, 13519, 13524, 13529, 13534,
7040     13539, 13544, 13549, 13554, 13559, 13564, 13569, 13574,
7041     13579, 13584, 13589, 13594, 13599, 13604, 13609, 13614,
7042     13619, 13624, 13629, 13635, 13641, 13647, 13652, 13657,
7043     13662, 13667, 13672, 13677, 13682, 13687, 13692, 13697,
7044 };
7045
7046 static const Q_UINT16 di_FD[] = {
7047     13702, 13707, 13712, 13717, 13722, 13727, 13732, 13737,
7048     13742, 13747, 13752, 13757, 13762, 13767, 13772, 13777,
7049     13782, 13787, 13792, 13797, 13802, 13807, 13812, 13817,
7050     13822, 13827, 13832, 13837, 13842, 13847, 13852, 13857,
7051     13862, 13867, 13872, 13877, 13882, 13887, 13892, 13897,
7052     13902, 13907, 13912, 13917, 13922, 13927, 13932, 13937,
7053     13942, 13947, 13952, 13957, 13962, 13967, 13972, 13977,
7054     13982, 13987, 13992, 13997, 14002, 14007, 0, 0,
7055     0, 0, 0, 0, 0, 0, 0, 0,
7056     0, 0, 0, 0, 0, 0, 0, 0,
7057     14012, 14018, 14024, 14030, 14036, 14042, 14048, 14054,
7058     14060, 14066, 14072, 14078, 14084, 14090, 14096, 14102,
7059     14108, 14114, 14120, 14126, 14132, 14138, 14144, 14150,
7060     14156, 14162, 14168, 14174, 14180, 14186, 14192, 14198,
7061     14204, 14210, 14216, 14222, 14228, 14234, 14240, 14246,
7062     14252, 14258, 14264, 14270, 14276, 14282, 14288, 14294,
7063     14300, 14306, 14312, 14318, 14324, 14330, 14336, 14342,
7064     14348, 14354, 14360, 14366, 14372, 14378, 14384, 14390,
7065     0, 0, 14396, 14402, 14408, 14414, 14420, 14426,
7066     14432, 14438, 14444, 14450, 14456, 14462, 14468, 14474,
7067     14480, 14486, 14492, 14498, 14504, 14510, 14516, 14522,
7068     14528, 14534, 14540, 14546, 14552, 14558, 14564, 14570,
7069     14576, 14582, 14588, 14594, 14600, 14606, 14612, 14618,
7070     14624, 14630, 14636, 14642, 14648, 14654, 14660, 14666,
7071     14672, 14678, 14684, 14690, 14696, 14702, 14708, 14714,
7072     0, 0, 0, 0, 0, 0, 0, 0,
7073     0, 0, 0, 0, 0, 0, 0, 0,
7074     0, 0, 0, 0, 0, 0, 0, 0,
7075     0, 0, 0, 0, 0, 0, 0, 0,
7076     0, 0, 0, 0, 0, 0, 0, 0,
7077     14720, 14726, 14732, 14739, 14746, 14753, 14760, 14767,
7078     14774, 14781, 14787, 14808, 0, 0, 0, 0,
7079 };
7080
7081 static const Q_UINT16 di_FE[] = {
7082     0, 0, 0, 0, 0, 0, 0, 0,
7083     0, 0, 0, 0, 0, 0, 0, 0,
7084     0, 0, 0, 0, 0, 0, 0, 0,
7085     0, 0, 0, 0, 0, 0, 0, 0,
7086     0, 0, 0, 0, 0, 0, 0, 0,
7087     0, 0, 0, 0, 0, 0, 0, 0,
7088     14819, 14823, 14827, 14831, 14835, 14839, 14843, 14847,
7089     14851, 14855, 14859, 14863, 14867, 14871, 14875, 14879,
7090     14883, 14887, 14891, 14895, 14899, 0, 0, 0,
7091     0, 14903, 14907, 14911, 14915, 14919, 14923, 14927,
7092     14931, 14935, 14939, 0, 14943, 14947, 14951, 14955,
7093     14959, 14963, 14967, 14971, 14975, 14979, 14983, 14987,
7094     14991, 14995, 14999, 15003, 15007, 15011, 15015, 0,
7095     15019, 15023, 15027, 15031, 0, 0, 0, 0,
7096     15035, 15040, 15045, 0, 15050, 0, 15055, 15060,
7097     15065, 15070, 15075, 15080, 15085, 15090, 15095, 15100,
7098     15105, 15109, 15113, 15117, 15121, 15125, 15129, 15133,
7099     15137, 15141, 15145, 15149, 15153, 15157, 15161, 15165,
7100     15169, 15173, 15177, 15181, 15185, 15189, 15193, 15197,
7101     15201, 15205, 15209, 15213, 15217, 15221, 15225, 15229,
7102     15233, 15237, 15241, 15245, 15249, 15253, 15257, 15261,
7103     15265, 15269, 15273, 15277, 15281, 15285, 15289, 15293,
7104     15297, 15301, 15305, 15309, 15313, 15317, 15321, 15325,
7105     15329, 15333, 15337, 15341, 15345, 15349, 15353, 15357,
7106     15361, 15365, 15369, 15373, 15377, 15381, 15385, 15389,
7107     15393, 15397, 15401, 15405, 15409, 15413, 15417, 15421,
7108     15425, 15429, 15433, 15437, 15441, 15445, 15449, 15453,
7109     15457, 15461, 15465, 15469, 15473, 15477, 15481, 15485,
7110     15489, 15493, 15497, 15501, 15505, 15509, 15513, 15517,
7111     15521, 15525, 15529, 15533, 15537, 15541, 15545, 15549,
7112     15553, 15557, 15561, 15565, 15569, 15573, 15578, 15583,
7113     15588, 15593, 15598, 15603, 15608, 0, 0, 0,
7114 };
7115
7116 static const Q_UINT16 di_FF[] = {
7117     0, 15613, 15617, 15621, 15625, 15629, 15633, 15637,
7118     15641, 15645, 15649, 15653, 15657, 15661, 15665, 15669,
7119     15673, 15677, 15681, 15685, 15689, 15693, 15697, 15701,
7120     15705, 15709, 15713, 15717, 15721, 15725, 15729, 15733,
7121     15737, 15741, 15745, 15749, 15753, 15757, 15761, 15765,
7122     15769, 15773, 15777, 15781, 15785, 15789, 15793, 15797,
7123     15801, 15805, 15809, 15813, 15817, 15821, 15825, 15829,
7124     15833, 15837, 15841, 15845, 15849, 15853, 15857, 15861,
7125     15865, 15869, 15873, 15877, 15881, 15885, 15889, 15893,
7126     15897, 15901, 15905, 15909, 15913, 15917, 15921, 15925,
7127     15929, 15933, 15937, 15941, 15945, 15949, 15953, 15957,
7128     15961, 15965, 15969, 15973, 15977, 15981, 15985, 0,
7129     0, 15989, 15993, 15997, 16001, 16005, 16009, 16013,
7130     16017, 16021, 16025, 16029, 16033, 16037, 16041, 16045,
7131     16049, 16053, 16057, 16061, 16065, 16069, 16073, 16077,
7132     16081, 16085, 16089, 16093, 16097, 16101, 16105, 16109,
7133     16113, 16117, 16121, 16125, 16129, 16133, 16137, 16141,
7134     16145, 16149, 16153, 16157, 16161, 16165, 16169, 16173,
7135     16177, 16181, 16185, 16189, 16193, 16197, 16201, 16205,
7136     16209, 16213, 16217, 16221, 16225, 16229, 16233, 16237,
7137     16241, 16245, 16249, 16253, 16257, 16261, 16265, 16269,
7138     16273, 16277, 16281, 16285, 16289, 16293, 16297, 16301,
7139     16305, 16309, 16313, 16317, 16321, 16325, 16329, 16333,
7140     16337, 16341, 16345, 16349, 16353, 16357, 16361, 0,
7141     0, 0, 16365, 16369, 16373, 16377, 16381, 16385,
7142     0, 0, 16389, 16393, 16397, 16401, 16405, 16409,
7143     0, 0, 16413, 16417, 16421, 16425, 16429, 16433,
7144     0, 0, 16437, 16441, 16445, 0, 0, 0,
7145     16449, 16453, 16457, 16461, 16465, 16469, 16473, 0,
7146     16477, 16481, 16485, 16489, 16493, 16497, 16501, 0,
7147     0, 0, 0, 0, 0, 0, 0, 0,
7148     0, 0, 0, 0, 0, 0, 0, 0,
7149 };
7150
7151 static const Q_UINT16 * const decomposition_info[256] = {
7152     di_00, di_01, di_02, di_03, di_04, di_05, di_06, di_07,
7153     di_07, di_09, di_0A, di_0B, di_0C, di_0D, di_0E, di_0F,
7154     di_10, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7155     di_07, di_07, di_07, di_07, di_07, di_07, di_1E, di_1F,
7156     di_20, di_21, di_22, di_23, di_24, di_07, di_07, di_07,
7157     di_07, di_07, di_07, di_07, di_07, di_07, di_2E, di_2F,
7158     di_30, di_31, di_32, di_33, di_07, di_07, di_07, di_07,
7159     di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7160     di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7161     di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7162     di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7163     di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7164     di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7165     di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7166     di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7167     di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7168     di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7169     di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7170     di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7171     di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7172     di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7173     di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7174     di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7175     di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7176     di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7177     di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7178     di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7179     di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7180     di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7181     di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7182     di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7183     di_07, di_F9, di_FA, di_FB, di_FC, di_FD, di_FE, di_FF,
7184 };
7185 // 68080 bytes
7186
7187 static const Q_UINT16 ligature_map [] = {
7188     0,
7189     12883, 12889, 12895, 12901, 12907, 12913, 15035, 15045, 15050, 15055, 15065, 15075, 15085, 15095, 0,
7190     5503, 0,
7191     5488, 0,
7192     5508, 0,
7193     67, 72, 77, 82, 87, 92, 332, 342, 352, 966, 1196, 1206, 1346, 2357, 3137, 3147, 0,
7194     2367, 2377, 2387, 0,
7195     97, 362, 372, 382, 392, 0,
7196     402, 2407, 2417, 2427, 2437, 2447, 0,
7197     102, 107, 112, 117, 412, 422, 432, 442, 452, 1216, 1226, 1356, 2477, 2487, 3257, 3267, 3277, 0,
7198     2507, 0,
7199     462, 472, 482, 492, 1076, 1146, 2517, 0,
7200     502, 1336, 2527, 2537, 2547, 2557, 2567, 0,
7201     122, 127, 132, 137, 512, 522, 532, 542, 552, 976, 1236, 1246, 2577, 3337, 3347, 0,
7202     567, 0,
7203     577, 1086, 2597, 2607, 2617, 0,
7204     587, 597, 607, 2627, 2647, 2657, 0,
7205     2667, 2677, 2687, 0,
7206     142, 627, 637, 647, 1156, 2697, 2707, 2717, 2727, 0,
7207     147, 152, 157, 162, 167, 662, 672, 682, 901, 986, 1096, 1256, 1266, 1386, 3357, 3367, 0,
7208     2777, 2787, 0,
7209     692, 702, 712, 1276, 1286, 2797, 2807, 2827, 0,
7210     722, 732, 742, 752, 1316, 2837, 2847, 0,
7211     762, 772, 1326, 2887, 2897, 2907, 2917, 0,
7212     172, 177, 182, 187, 782, 792, 802, 812, 822, 832, 911, 996, 1296, 1306, 2927, 2937, 2947, 3477, 3487, 0,
7213     2977, 2987, 0,
7214     842, 2997, 3007, 3017, 3027, 3037, 0,
7215     3047, 3057, 0,
7216     192, 852, 862, 1406, 3067, 3547, 3557, 3567, 3577, 0,
7217     867, 877, 887, 3077, 3087, 3097, 0,
7218     197, 202, 207, 212, 217, 222, 337, 347, 357, 971, 1201, 1211, 1351, 2362, 3142, 3152, 0,
7219     2372, 2382, 2392, 0,
7220     227, 367, 377, 387, 397, 0,
7221     407, 2412, 2422, 2432, 2442, 2452, 0,
7222     232, 237, 242, 247, 417, 427, 437, 447, 457, 1221, 1231, 1361, 2482, 2492, 3262, 3272, 3282, 0,
7223     2512, 0,
7224     467, 477, 487, 497, 1081, 1151, 2522, 0,
7225     507, 1341, 2532, 2542, 2552, 2562, 2572, 3107, 0,
7226     252, 257, 262, 267, 517, 527, 537, 547, 981, 1241, 1251, 2582, 3342, 3352, 0,
7227     572, 1126, 0,
7228     582, 1091, 2602, 2612, 2622, 0,
7229     592, 602, 612, 2632, 2652, 2662, 0,
7230     2672, 2682, 2692, 0,
7231     272, 632, 642, 652, 1161, 2702, 2712, 2722, 2732, 0,
7232     277, 282, 287, 292, 297, 667, 677, 687, 906, 991, 1101, 1261, 1271, 1391, 3362, 3372, 0,
7233     2782, 2792, 0,
7234     697, 707, 717, 1281, 1291, 2802, 2812, 2832, 0,
7235     727, 737, 747, 757, 1321, 2842, 2852, 0,
7236     767, 777, 1331, 2892, 2902, 2912, 2922, 3112, 0,
7237     302, 307, 312, 317, 787, 797, 807, 817, 827, 837, 916, 1001, 1301, 1311, 2932, 2942, 2952, 3482, 3492, 0,
7238     2982, 2992, 0,
7239     847, 3002, 3012, 3022, 3032, 3042, 3117, 0,
7240     3052, 3062, 0,
7241     322, 327, 857, 1411, 3072, 3122, 3552, 3562, 3572, 3582, 0,
7242     872, 882, 892, 3082, 3092, 3102, 0,
7243     1537, 4468, 4662, 0,
7244     3157, 3167, 3177, 3187, 0,
7245     1046, 0,
7246     1166, 0,
7247     1066, 1176, 0,
7248     2397, 0,
7249     3287, 3297, 3307, 3317, 0,
7250     2587, 0,
7251     3377, 3387, 3397, 3407, 0,
7252     1376, 2737, 2747, 0,
7253     1366, 0,
7254     1186, 0,
7255     1006, 1016, 1026, 1036, 0,
7256     3162, 3172, 3182, 3192, 0,
7257     1051, 0,
7258     1171, 0,
7259     1071, 1181, 0,
7260     2402, 0,
7261     3292, 3302, 3312, 3322, 0,
7262     2592, 0,
7263     3382, 3392, 3402, 3412, 0,
7264     1381, 2742, 2752, 0,
7265     1371, 0,
7266     1191, 0,
7267     1011, 1021, 1031, 1041, 0,
7268     3207, 3217, 3227, 3237, 0,
7269     3212, 3222, 3232, 3242, 0,
7270     2457, 2467, 0,
7271     2462, 2472, 0,
7272     2757, 2767, 0,
7273     2762, 2772, 0,
7274     2857, 0,
7275     2862, 0,
7276     2867, 0,
7277     2872, 0,
7278     2957, 0,
7279     2962, 0,
7280     2967, 0,
7281     2972, 0,
7282     3132, 0,
7283     3427, 3437, 3447, 3457, 3467, 0,
7284     3432, 3442, 3452, 3462, 3472, 0,
7285     3497, 3507, 3517, 3527, 3537, 0,
7286     3502, 3512, 3522, 3532, 3542, 0,
7287     1116, 0,
7288     1106, 0,
7289     1111, 0,
7290     1056, 0,
7291     1061, 0,
7292     2497, 0,
7293     2502, 0,
7294     1396, 0,
7295     1401, 0,
7296     1121, 0,
7297     1514, 0,
7298     1542, 3627, 3632, 4425, 4430, 4435, 4444, 0,
7299     1551, 3697, 3702, 4498, 0,
7300     1556, 3767, 3772, 4507, 4516, 0,
7301     1561, 1586, 3847, 3852, 4565, 4570, 4575, 0,
7302     1566, 3917, 3922, 4700, 0,
7303     4657, 0,
7304     1571, 1591, 3987, 4638, 4643, 4648, 0,
7305     1576, 4047, 4052, 4709, 4718, 0,
7306     4410, 0,
7307     4483, 0,
7308     1596, 3587, 3592, 4087, 4390, 4395, 4405, 4415, 0,
7309     1601, 3667, 3672, 4096, 0,
7310     1606, 3727, 3732, 4105, 4478, 4488, 0,
7311     1611, 1621, 3807, 3812, 4114, 4536, 4541, 4555, 0,
7312     1631, 3887, 3892, 4123, 0,
7313     4618, 4623, 0,
7314     1626, 1636, 3947, 3952, 4132, 4599, 4604, 4628, 0,
7315     1641, 4007, 4012, 4141, 4680, 4690, 0,
7316     1581, 4546, 4560, 0,
7317     1616, 4609, 4633, 0,
7318     4685, 0,
7319     1658, 1663, 0,
7320     1703, 0,
7321     1788, 1798, 0,
7322     1698, 0,
7323     1688, 1693, 1808, 0,
7324     1778, 1828, 0,
7325     1838, 0,
7326     1713, 1723, 1848, 1858, 0,
7327     1708, 0,
7328     1868, 0,
7329     1718, 1898, 1908, 1918, 0,
7330     1928, 0,
7331     1938, 0,
7332     1888, 0,
7333     1793, 1803, 0,
7334     1743, 0,
7335     1733, 1738, 1813, 0,
7336     1783, 1833, 0,
7337     1843, 0,
7338     1728, 1758, 1853, 1863, 0,
7339     1753, 0,
7340     1873, 0,
7341     1763, 1903, 1913, 1923, 0,
7342     1933, 0,
7343     1943, 0,
7344     1893, 0,
7345     1748, 0,
7346     1768, 0,
7347     1773, 0,
7348     1818, 0,
7349     1823, 0,
7350     1878, 0,
7351     1883, 0,
7352     11678, 11683, 11688, 0,
7353     11693, 11803, 0,
7354     11698, 0,
7355     11703, 0,
7356     11708, 0,
7357     11713, 11798, 0,
7358     11718, 0,
7359     11723, 0,
7360     11608, 11728, 0,
7361     11733, 0,
7362     11738, 11808, 0,
7363     11743, 0,
7364     11748, 0,
7365     11753, 0,
7366     11758, 0,
7367     11763, 0,
7368     11768, 11813, 0,
7369     11773, 0,
7370     11778, 0,
7371     11783, 0,
7372     11658, 11663, 11788, 0,
7373     11793, 0,
7374     11613, 0,
7375     15105, 0,
7376     15109, 15113, 0,
7377     15117, 15121, 0,
7378     15125, 15129, 0,
7379     15133, 15137, 0,
7380     12307, 12312, 12317, 12322, 12327, 12332, 12337, 12342, 12347, 12352, 12357, 12362, 12367, 12372, 12377, 12382, 12387, 12392, 12413, 12418, 12423, 12428, 12433, 12919, 12924, 12929, 12934, 12939, 12944, 13174, 13179, 13184, 13189, 13194, 13534, 13539, 15141, 15145, 15149, 15153, 0,
7381     14732, 14739, 1958, 1968, 14007, 14002, 1953, 15157, 15161, 0,
7382     14468, 14684, 12448, 12453, 12458, 12463, 12949, 12954, 12959, 12964, 12969, 12974, 13199, 13204, 13209, 13214, 13219, 13544, 13549, 12438, 12443, 15165, 15169, 15173, 15177, 0,
7383     15181, 15185, 0,
7384     14012, 14018, 14024, 14030, 14036, 14042, 14048, 14054, 14474, 14480, 14486, 14492, 14498, 14504, 13229, 13234, 13239, 13244, 13559, 13554, 12468, 12473, 12478, 12483, 12488, 12493, 12979, 12984, 12989, 12994, 12999, 13004, 13224, 15189, 15193, 15197, 15201, 0,
7385     12498, 12503, 12508, 12513, 13009, 13014, 13019, 13024, 13029, 13034, 13249, 13564, 13569, 15205, 15209, 15213, 15217, 0,
7386     14808, 14660, 14060, 14066, 14510, 14516, 14522, 12518, 12523, 13254, 13259, 13707, 13712, 13847, 13852, 15221, 15225, 15229, 15233, 0,
7387     14072, 14078, 14666, 13264, 13269, 13697, 13702, 13842, 13837, 12528, 12533, 15237, 15241, 15245, 15249, 0,
7388     12538, 12543, 12548, 13274, 13279, 13717, 13722, 13857, 13862, 15253, 15257, 15261, 15265, 0,
7389     15269, 15273, 0,
7390     12868, 15277, 15281, 0,
7391     14760, 12873, 15285, 15289, 0,
7392     15293, 15297, 0,
7393     14084, 14090, 14096, 14102, 14108, 14114, 14120, 14126, 14528, 14708, 13677, 13682, 13772, 13817, 13822, 13912, 13947, 13962, 13967, 13972, 12553, 12558, 12563, 12568, 13284, 13289, 13294, 13299, 13574, 13579, 15301, 15305, 15309, 15313, 0,
7394     14150, 14156, 14162, 14168, 14174, 14180, 14186, 14540, 13767, 13827, 13832, 13887, 13892, 13897, 13902, 13907, 13927, 13932, 13937, 13942, 13952, 13977, 13982, 13987, 13584, 13589, 13687, 13692, 13747, 13752, 13757, 13762, 15317, 15321, 15325, 15329, 0,
7395     14787, 14753, 14781, 14138, 14132, 14144, 14534, 14702, 14720, 12573, 12578, 13304, 13309, 13314, 13727, 13732, 13777, 13872, 13917, 13867, 15333, 15337, 15341, 15345, 0,
7396     14192, 14198, 14204, 14546, 13319, 13324, 13329, 13334, 13737, 13742, 13782, 13877, 13882, 13922, 12583, 12588, 12593, 12598, 15349, 15353, 15357, 15361, 0,
7397     14210, 14216, 14222, 14228, 13647, 13652, 13787, 13792, 13992, 13957, 12603, 12608, 13339, 15365, 15369, 15373, 15377, 0,
7398     12613, 13344, 13997, 15381, 15385, 15389, 15393, 0,
7399     14767, 14696, 14234, 14240, 14246, 14252, 14612, 12618, 12623, 13349, 13354, 13657, 13662, 13797, 13802, 15397, 15401, 15405, 15409, 0,
7400     14258, 14264, 14270, 13359, 13364, 13667, 13672, 13812, 13807, 12628, 12633, 15413, 15417, 15421, 15425, 0,
7401     13629, 13635, 13641, 15040, 15060, 15070, 15080, 15090, 15100, 0,
7402     14276, 14282, 14678, 12653, 12658, 12663, 13039, 13044, 13369, 13374, 13379, 13384, 12638, 12643, 12648, 15429, 15433, 15437, 15441, 0,
7403     14600, 14726, 14294, 14288, 14588, 12668, 12673, 12678, 12683, 13049, 13054, 13389, 13394, 15445, 15449, 15453, 15457, 0,
7404     14618, 14642, 14690, 12703, 12708, 12713, 12718, 12723, 13059, 13064, 13069, 13074, 13079, 13399, 13404, 13409, 13414, 13419, 13594, 13599, 12688, 12693, 12698, 15461, 15465, 15469, 15473, 0,
7405     14648, 14300, 14306, 14312, 14318, 14324, 14330, 14336, 14342, 14348, 14552, 14558, 14606, 14636, 12728, 12733, 12738, 12743, 12748, 12753, 13084, 13089, 13094, 13424, 13429, 13434, 13439, 13444, 13604, 15573, 15578, 15583, 15588, 15593, 15598, 15603, 15608, 15477, 15481, 15485, 15489, 0,
7406     14746, 14354, 14360, 14366, 14372, 14378, 14384, 14390, 14396, 14582, 14630, 14672, 12758, 12763, 12768, 12773, 12778, 12783, 13099, 13104, 13449, 13454, 13459, 13464, 15493, 15497, 15501, 15505, 0,
7407     14414, 14420, 14426, 14432, 14438, 14444, 14450, 14594, 14624, 14654, 14714, 13134, 13469, 13474, 13479, 13484, 13489, 13609, 13614, 12788, 12793, 12798, 12803, 12808, 12813, 13109, 13114, 13119, 13124, 13129, 15509, 15513, 15517, 15521, 0,
7408     14402, 14408, 12823, 12828, 12833, 13494, 13504, 13499, 12818, 15525, 15529, 15533, 15537, 0,
7409     14774, 1963, 15541, 15545, 0,
7410     12878, 13139, 12299, 12303, 15549, 15553, 0,
7411     14456, 14462, 14564, 14570, 14576, 12858, 12863, 13144, 13149, 13154, 13159, 13164, 13169, 13509, 13514, 13519, 13524, 13529, 13619, 13624, 1973, 12838, 12843, 12848, 12853, 15557, 15561, 15565, 15569, 0,
7412     11823, 11827, 0,
7413     12255, 0,
7414     11911, 11915, 11919, 11923, 0,
7415     11879, 11883, 11887, 11891, 0,
7416     11831, 11835, 11839, 11843, 0,
7417     11847, 11851, 11855, 11859, 0,
7418     11895, 11899, 11903, 11907, 0,
7419     11863, 11867, 11871, 11875, 0,
7420     11975, 11979, 11983, 11987, 0,
7421     11959, 11963, 11967, 11971, 0,
7422     11991, 11995, 11999, 12003, 0,
7423     12007, 12011, 12015, 12019, 0,
7424     12047, 12051, 0,
7425     12031, 12035, 0,
7426     12023, 12027, 0,
7427     12039, 12043, 0,
7428     12063, 12067, 0,
7429     12055, 12059, 0,
7430     11927, 11931, 11935, 11939, 0,
7431     11943, 11947, 11951, 11955, 0,
7432     12071, 12075, 12079, 12083, 0,
7433     12215, 12219, 12223, 12227, 0,
7434     12087, 12091, 12095, 12099, 0,
7435     12119, 12123, 12127, 12131, 0,
7436     12103, 12107, 12111, 12115, 0,
7437     12135, 12139, 0,
7438     12143, 12147, 12151, 12155, 0,
7439     12183, 12187, 12191, 12195, 0,
7440     12159, 12163, 0,
7441     2003, 12167, 12171, 12175, 12179, 0,
7442     12267, 12271, 0,
7443     12239, 12243, 0,
7444     12231, 12235, 0,
7445     12247, 12251, 0,
7446     12275, 12279, 0,
7447     12259, 12263, 0,
7448     12397, 12401, 12405, 12409, 0,
7449     12283, 12287, 12291, 12295, 0,
7450     2008, 12199, 12203, 0,
7451     12207, 12211, 0,
7452     1998, 0,
7453     2028, 0,
7454     2033, 0,
7455     2038, 0,
7456     2043, 0,
7457     2048, 0,
7458     2053, 0,
7459     2013, 0,
7460     2058, 0,
7461     2063, 0,
7462     2018, 0,
7463     2023, 0,
7464     2078, 0,
7465     2083, 0,
7466     2088, 0,
7467     2068, 2073, 0,
7468     2103, 0,
7469     2108, 0,
7470     2113, 0,
7471     2118, 0,
7472     2093, 0,
7473     2098, 0,
7474     2138, 0,
7475     2143, 0,
7476     2123, 2128, 2133, 0,
7477     2148, 0,
7478     2153, 2163, 0,
7479     2158, 0,
7480     2168, 0,
7481     2173, 0,
7482     2178, 2183, 2188, 0,
7483     2193, 0,
7484     2198, 2208, 0,
7485     2203, 0,
7486     2213, 2218, 2228, 0,
7487     2223, 0,
7488     2282, 0,
7489     2257, 0,
7490     2262, 0,
7491     2267, 0,
7492     2272, 0,
7493     2277, 0,
7494     2287, 2292, 2317, 0,
7495     2347, 0,
7496     2322, 0,
7497     2327, 0,
7498     2332, 0,
7499     2337, 0,
7500     2342, 0,
7501     2297, 0,
7502     2307, 0,
7503     2352, 0,
7504     2637, 0,
7505     2642, 0,
7506     2817, 0,
7507     2822, 0,
7508     2877, 0,
7509     2882, 0,
7510     3197, 3247, 0,
7511     3202, 3252, 0,
7512     3327, 0,
7513     3332, 0,
7514     3417, 0,
7515     3422, 0,
7516     3597, 3607, 3617, 4150, 0,
7517     3602, 3612, 3622, 4155, 0,
7518     4160, 0,
7519     4165, 0,
7520     4170, 0,
7521     4175, 0,
7522     4180, 0,
7523     4185, 0,
7524     3637, 3647, 3657, 4190, 0,
7525     3642, 3652, 3662, 4195, 0,
7526     4200, 0,
7527     4205, 0,
7528     4210, 0,
7529     4215, 0,
7530     4220, 0,
7531     4225, 0,
7532     3677, 3687, 0,
7533     3682, 3692, 0,
7534     3707, 3717, 0,
7535     3712, 3722, 0,
7536     3737, 3747, 3757, 4230, 0,
7537     3742, 3752, 3762, 4235, 0,
7538     4240, 0,
7539     4245, 0,
7540     4250, 0,
7541     4255, 0,
7542     4260, 0,
7543     4265, 0,
7544     3777, 3787, 3797, 4270, 0,
7545     3782, 3792, 3802, 4275, 0,
7546     4280, 0,
7547     4285, 0,
7548     4290, 0,
7549     4295, 0,
7550     4300, 0,
7551     4305, 0,
7552     3817, 3827, 3837, 0,
7553     3822, 3832, 3842, 0,
7554     3857, 3867, 3877, 0,
7555     3862, 3872, 3882, 0,
7556     3897, 3907, 0,
7557     3902, 3912, 0,
7558     3927, 3937, 0,
7559     3932, 3942, 0,
7560     3957, 3967, 3977, 0,
7561     3962, 3972, 3982, 0,
7562     3992, 3997, 4002, 0,
7563     4017, 4027, 4037, 4310, 0,
7564     4022, 4032, 4042, 4315, 0,
7565     4320, 0,
7566     4325, 0,
7567     4330, 0,
7568     4335, 0,
7569     4340, 0,
7570     4345, 0,
7571     4057, 4067, 4077, 4350, 0,
7572     4062, 4072, 4082, 4355, 0,
7573     4360, 0,
7574     4365, 0,
7575     4370, 0,
7576     4375, 0,
7577     4380, 0,
7578     4385, 0,
7579     4400, 0,
7580     4473, 0,
7581     4675, 0,
7582     4420, 0,
7583     4521, 4526, 4531, 0,
7584     4493, 0,
7585     4695, 0,
7586     4584, 4589, 4594, 0,
7587     5391, 0,
7588     5396, 0,
7589     5401, 0,
7590     5406, 0,
7591     5416, 0,
7592     5411, 0,
7593     5421, 0,
7594     5426, 0,
7595     5431, 0,
7596     5436, 0,
7597     5441, 0,
7598     5468, 0,
7599     5473, 0,
7600     5478, 0,
7601     5483, 0,
7602     5498, 0,
7603     5493, 0,
7604     5513, 0,
7605     5518, 0,
7606     5523, 0,
7607     5528, 0,
7608     5533, 0,
7609     5538, 0,
7610     5543, 0,
7611     5548, 0,
7612     5593, 0,
7613     5598, 0,
7614     5553, 0,
7615     5558, 0,
7616     5563, 0,
7617     5568, 0,
7618     5603, 0,
7619     5608, 0,
7620     5573, 0,
7621     5578, 0,
7622     5583, 0,
7623     5588, 0,
7624     5613, 0,
7625     5618, 0,
7626     5623, 0,
7627     5628, 0,
7628     7351, 0,
7629     7226, 0,
7630     7231, 0,
7631     7236, 0,
7632     7241, 0,
7633     7246, 0,
7634     7251, 0,
7635     7256, 0,
7636     7261, 0,
7637     7266, 0,
7638     7271, 0,
7639     7276, 0,
7640     7281, 0,
7641     7286, 0,
7642     7291, 0,
7643     7296, 0,
7644     7301, 7306, 0,
7645     7311, 7316, 0,
7646     7321, 7326, 0,
7647     7331, 7336, 0,
7648     7341, 7346, 0,
7649     7366, 0,
7650     7496, 0,
7651     7371, 0,
7652     7376, 0,
7653     7381, 0,
7654     7386, 0,
7655     7391, 0,
7656     7396, 0,
7657     7401, 0,
7658     7406, 0,
7659     7411, 0,
7660     7416, 0,
7661     7421, 0,
7662     7426, 0,
7663     7431, 0,
7664     7436, 0,
7665     7441, 0,
7666     7446, 7451, 0,
7667     7456, 7461, 0,
7668     7466, 7471, 0,
7669     7476, 7481, 0,
7670     7486, 7491, 0,
7671     7501, 0,
7672     7506, 0,
7673     7511, 0,
7674     7516, 0,
7675     7521, 0,
7676     11668, 11673, 0,
7677
7678 };
7679
7680 static const Q_UINT16 li_00[] = {
7681     0, 0, 0, 0, 0, 0, 0, 0,
7682     0, 0, 0, 0, 0, 0, 0, 0,
7683     0, 0, 0, 0, 0, 0, 0, 0,
7684     0, 0, 0, 0, 0, 0, 0, 0,
7685     1, 0, 0, 0, 0, 0, 0, 0,
7686     0, 0, 0, 0, 0, 0, 0, 0,
7687     0, 0, 0, 0, 0, 0, 0, 0,
7688     0, 0, 0, 0, 16, 18, 20, 0,
7689     0, 22, 39, 43, 49, 56, 74, 76,
7690     84, 92, 108, 110, 116, 123, 127, 137,
7691     154, 0, 157, 166, 174, 182, 202, 205,
7692     212, 215, 225, 0, 0, 0, 0, 0,
7693     0, 232, 249, 253, 259, 266, 284, 286,
7694     294, 303, 318, 321, 327, 334, 338, 348,
7695     365, 0, 368, 377, 385, 394, 414, 417,
7696     425, 428, 439, 0, 0, 0, 0, 0,
7697     0, 0, 0, 0, 0, 0, 0, 0,
7698     0, 0, 0, 0, 0, 0, 0, 0,
7699     0, 0, 0, 0, 0, 0, 0, 0,
7700     0, 0, 0, 0, 0, 0, 0, 0,
7701     0, 0, 0, 0, 0, 0, 0, 0,
7702     446, 0, 0, 0, 0, 0, 0, 0,
7703     0, 0, 0, 0, 0, 0, 0, 0,
7704     0, 0, 0, 0, 0, 0, 0, 0,
7705     0, 0, 450, 0, 455, 457, 459, 462,
7706     0, 0, 464, 0, 0, 0, 0, 469,
7707     0, 0, 0, 0, 471, 476, 480, 0,
7708     482, 0, 0, 0, 484, 0, 0, 0,
7709     0, 0, 489, 0, 494, 496, 498, 501,
7710     0, 0, 503, 0, 0, 0, 0, 508,
7711     0, 0, 0, 0, 510, 515, 519, 0,
7712     521, 0, 0, 0, 523, 0, 0, 0,
7713 };
7714
7715 static const Q_UINT16 li_01[] = {
7716     0, 0, 528, 533, 0, 0, 0, 0,
7717     0, 0, 0, 0, 0, 0, 0, 0,
7718     0, 0, 538, 541, 0, 0, 0, 0,
7719     0, 0, 0, 0, 0, 0, 0, 0,
7720     0, 0, 0, 0, 0, 0, 0, 0,
7721     0, 0, 0, 0, 0, 0, 0, 0,
7722     0, 0, 0, 0, 0, 0, 0, 0,
7723     0, 0, 0, 0, 0, 0, 0, 0,
7724     0, 0, 0, 0, 0, 0, 0, 0,
7725     0, 0, 0, 0, 544, 547, 0, 0,
7726     0, 0, 0, 0, 0, 0, 0, 0,
7727     0, 0, 550, 552, 0, 0, 0, 0,
7728     554, 556, 0, 0, 0, 0, 0, 0,
7729     558, 560, 562, 564, 0, 0, 0, 0,
7730     0, 0, 0, 0, 0, 0, 0, 0,
7731     0, 0, 0, 0, 0, 0, 0, 566,
7732     0, 0, 0, 0, 0, 0, 0, 0,
7733     0, 0, 0, 0, 0, 0, 0, 0,
7734     0, 0, 0, 0, 0, 0, 0, 0,
7735     0, 0, 0, 0, 0, 0, 0, 0,
7736     568, 574, 0, 0, 0, 0, 0, 0,
7737     0, 0, 0, 0, 0, 0, 0, 580,
7738     586, 0, 0, 0, 0, 0, 0, 592,
7739     0, 0, 0, 0, 0, 0, 0, 0,
7740     0, 0, 0, 0, 0, 0, 0, 0,
7741     0, 0, 0, 0, 0, 0, 0, 0,
7742     0, 0, 0, 0, 0, 0, 0, 0,
7743     0, 0, 0, 0, 0, 0, 0, 0,
7744     0, 0, 0, 0, 0, 0, 0, 0,
7745     0, 0, 594, 596, 0, 0, 0, 0,
7746     0, 0, 0, 0, 0, 0, 0, 0,
7747     0, 0, 0, 0, 0, 0, 0, 0,
7748 };
7749
7750 static const Q_UINT16 li_02[] = {
7751     0, 0, 0, 0, 0, 0, 0, 0,
7752     0, 0, 0, 0, 0, 0, 0, 0,
7753     0, 0, 0, 0, 0, 0, 0, 0,
7754     0, 0, 0, 0, 0, 0, 0, 0,
7755     0, 0, 0, 0, 0, 0, 598, 600,
7756     602, 604, 0, 0, 0, 0, 606, 608,
7757     0, 0, 0, 0, 0, 0, 0, 0,
7758     0, 0, 0, 0, 0, 0, 0, 0,
7759     0, 0, 0, 0, 0, 0, 0, 0,
7760     0, 0, 0, 0, 0, 0, 0, 0,
7761     0, 0, 0, 0, 0, 0, 0, 0,
7762     0, 0, 0, 0, 0, 0, 0, 0,
7763     0, 0, 0, 0, 0, 0, 0, 0,
7764     0, 0, 0, 0, 0, 0, 0, 0,
7765     0, 0, 0, 0, 0, 0, 0, 0,
7766     0, 0, 0, 0, 0, 0, 0, 0,
7767     0, 0, 0, 0, 0, 0, 0, 0,
7768     0, 0, 0, 0, 0, 0, 0, 0,
7769     0, 0, 610, 0, 0, 0, 0, 0,
7770     0, 0, 0, 0, 0, 0, 0, 0,
7771     0, 0, 0, 0, 0, 0, 0, 0,
7772     0, 0, 0, 0, 0, 0, 0, 0,
7773     0, 0, 0, 0, 0, 0, 0, 0,
7774     0, 0, 0, 0, 0, 0, 0, 0,
7775     0, 0, 0, 0, 0, 0, 0, 0,
7776     0, 0, 0, 0, 0, 0, 0, 0,
7777     0, 0, 0, 0, 0, 0, 0, 0,
7778     0, 0, 0, 0, 0, 0, 0, 0,
7779     0, 0, 0, 0, 0, 0, 0, 0,
7780     0, 0, 0, 0, 0, 0, 0, 0,
7781     0, 0, 0, 0, 0, 0, 0, 0,
7782     0, 0, 0, 0, 0, 0, 0, 0,
7783 };
7784
7785 static const Q_UINT16 li_03[] = {
7786     0, 0, 0, 0, 0, 0, 0, 0,
7787     612, 0, 0, 0, 0, 0, 0, 0,
7788     0, 0, 0, 0, 0, 0, 0, 0,
7789     0, 0, 0, 0, 0, 0, 0, 0,
7790     0, 0, 0, 0, 0, 0, 0, 0,
7791     0, 0, 0, 0, 0, 0, 0, 0,
7792     0, 0, 0, 0, 0, 0, 0, 0,
7793     0, 0, 0, 0, 0, 0, 0, 0,
7794     0, 0, 0, 0, 0, 0, 0, 0,
7795     0, 0, 0, 0, 0, 0, 0, 0,
7796     0, 0, 0, 0, 0, 0, 0, 0,
7797     0, 0, 0, 0, 0, 0, 0, 0,
7798     0, 0, 0, 0, 0, 0, 0, 0,
7799     0, 0, 0, 0, 0, 0, 0, 0,
7800     0, 0, 0, 0, 0, 0, 0, 0,
7801     0, 0, 0, 0, 0, 0, 0, 0,
7802     0, 0, 0, 0, 0, 0, 0, 0,
7803     0, 0, 0, 0, 0, 0, 0, 0,
7804     0, 614, 0, 0, 0, 622, 0, 627,
7805     0, 633, 0, 0, 0, 0, 0, 641,
7806     0, 646, 0, 0, 0, 648, 0, 0,
7807     0, 655, 0, 0, 661, 0, 663, 0,
7808     0, 665, 0, 0, 0, 674, 0, 679,
7809     0, 686, 0, 0, 0, 0, 0, 695,
7810     0, 700, 0, 0, 0, 703, 0, 0,
7811     0, 712, 719, 723, 0, 0, 727, 0,
7812     0, 0, 729, 0, 0, 0, 0, 0,
7813     0, 0, 0, 0, 0, 0, 0, 0,
7814     0, 0, 0, 0, 0, 0, 0, 0,
7815     0, 0, 0, 0, 0, 0, 0, 0,
7816     0, 0, 0, 0, 0, 0, 0, 0,
7817     0, 0, 0, 0, 0, 0, 0, 0,
7818 };
7819
7820 static const Q_UINT16 li_04[] = {
7821     0, 0, 0, 0, 0, 0, 732, 0,
7822     0, 0, 0, 0, 0, 0, 0, 0,
7823     734, 0, 0, 737, 0, 739, 743, 746,
7824     748, 0, 753, 0, 0, 0, 755, 0,
7825     0, 0, 0, 757, 0, 0, 0, 762,
7826     0, 0, 0, 764, 0, 766, 0, 0,
7827     768, 0, 0, 771, 0, 773, 777, 780,
7828     782, 0, 787, 0, 0, 0, 789, 0,
7829     0, 0, 0, 791, 0, 0, 0, 796,
7830     0, 0, 0, 798, 0, 800, 0, 0,
7831     0, 0, 0, 0, 0, 0, 802, 0,
7832     0, 0, 0, 0, 0, 0, 0, 0,
7833     0, 0, 0, 0, 0, 0, 0, 0,
7834     0, 0, 0, 0, 0, 0, 0, 0,
7835     0, 0, 0, 0, 804, 806, 0, 0,
7836     0, 0, 0, 0, 0, 0, 0, 0,
7837     0, 0, 0, 0, 0, 0, 0, 0,
7838     0, 0, 0, 0, 0, 0, 0, 0,
7839     0, 0, 0, 0, 0, 0, 0, 0,
7840     0, 0, 0, 0, 0, 0, 0, 0,
7841     0, 0, 0, 0, 0, 0, 0, 0,
7842     0, 0, 0, 0, 0, 0, 0, 0,
7843     0, 0, 0, 0, 0, 0, 0, 0,
7844     0, 0, 0, 0, 0, 0, 0, 0,
7845     0, 0, 0, 0, 0, 0, 0, 0,
7846     0, 0, 0, 0, 0, 0, 0, 0,
7847     0, 0, 0, 0, 0, 0, 0, 0,
7848     808, 810, 0, 0, 0, 0, 0, 0,
7849     0, 0, 0, 0, 0, 0, 0, 0,
7850     812, 814, 0, 0, 0, 0, 0, 0,
7851     0, 0, 0, 0, 0, 0, 0, 0,
7852     0, 0, 0, 0, 0, 0, 0, 0,
7853 };
7854
7855 static const Q_UINT16 li_05[] = {
7856     0, 0, 0, 0, 0, 0, 0, 0,
7857     0, 0, 0, 0, 0, 0, 0, 0,
7858     0, 0, 0, 0, 0, 0, 0, 0,
7859     0, 0, 0, 0, 0, 0, 0, 0,
7860     0, 0, 0, 0, 0, 0, 0, 0,
7861     0, 0, 0, 0, 0, 0, 0, 0,
7862     0, 0, 0, 0, 0, 0, 0, 0,
7863     0, 0, 0, 0, 0, 0, 0, 0,
7864     0, 0, 0, 0, 0, 0, 0, 0,
7865     0, 0, 0, 0, 0, 0, 0, 0,
7866     0, 0, 0, 0, 0, 0, 0, 0,
7867     0, 0, 0, 0, 0, 0, 0, 0,
7868     0, 0, 0, 0, 0, 0, 0, 0,
7869     0, 0, 0, 0, 0, 0, 0, 0,
7870     0, 0, 0, 0, 0, 0, 0, 0,
7871     0, 0, 0, 0, 0, 0, 0, 0,
7872     0, 0, 0, 0, 0, 0, 0, 0,
7873     0, 0, 0, 0, 0, 0, 0, 0,
7874     0, 0, 0, 0, 0, 0, 0, 0,
7875     0, 0, 0, 0, 0, 0, 0, 0,
7876     0, 0, 0, 0, 0, 0, 0, 0,
7877     0, 0, 0, 0, 0, 0, 0, 0,
7878     0, 0, 0, 0, 0, 0, 0, 0,
7879     0, 0, 0, 0, 0, 0, 0, 0,
7880     0, 0, 0, 0, 0, 0, 0, 0,
7881     0, 0, 0, 0, 0, 0, 0, 0,
7882     816, 820, 823, 825, 827, 829, 832, 0,
7883     834, 836, 839, 841, 844, 0, 846, 0,
7884     848, 850, 0, 852, 854, 0, 857, 859,
7885     861, 863, 867, 0, 0, 0, 0, 0,
7886     0, 0, 869, 0, 0, 0, 0, 0,
7887     0, 0, 0, 0, 0, 0, 0, 0,
7888 };
7889
7890 static const Q_UINT16 li_06[] = {
7891     0, 0, 0, 0, 0, 0, 0, 0,
7892     0, 0, 0, 0, 0, 0, 0, 0,
7893     0, 0, 0, 0, 0, 0, 0, 0,
7894     0, 0, 0, 0, 0, 0, 0, 0,
7895     0, 871, 873, 876, 879, 882, 885, 926,
7896     936, 962, 965, 1003, 1021, 1041, 1057, 1071,
7897     1074, 1078, 1083, 1086, 1121, 1158, 1183, 1206,
7898     1224, 1232, 1252, 0, 0, 0, 0, 0,
7899     1268, 1278, 1298, 1316, 1344, 1386, 1415, 1450,
7900     1464, 1469, 1476, 0, 0, 0, 0, 0,
7901     0, 0, 0, 0, 0, 0, 0, 0,
7902     0, 0, 0, 0, 0, 0, 0, 0,
7903     0, 0, 0, 0, 0, 0, 0, 0,
7904     0, 0, 0, 0, 0, 0, 0, 0,
7905     0, 1506, 0, 0, 0, 0, 0, 1509,
7906     0, 1511, 1516, 1521, 0, 0, 1526, 1531,
7907     1536, 0, 0, 1541, 1546, 0, 1551, 1556,
7908     1561, 0, 0, 0, 1564, 1567, 1570, 0,
7909     0, 1573, 0, 0, 0, 0, 0, 0,
7910     1576, 0, 0, 0, 0, 0, 0, 0,
7911     0, 0, 0, 0, 1579, 0, 1584, 0,
7912     0, 1589, 0, 0, 0, 1594, 0, 1599,
7913     0, 1604, 0, 1609, 0, 0, 0, 0,
7914     0, 0, 1614, 1617, 0, 0, 1622, 0,
7915     1627, 1630, 0, 0, 0, 1636, 1639, 1642,
7916     1645, 1648, 0, 1651, 1654, 0, 0, 0,
7917     1659, 0, 1664, 1668, 0, 1671, 0, 0,
7918     0, 0, 0, 0, 0, 0, 0, 0,
7919     0, 0, 0, 0, 0, 0, 0, 0,
7920     0, 0, 0, 0, 0, 0, 0, 0,
7921     0, 0, 0, 0, 0, 0, 0, 0,
7922     0, 0, 0, 0, 0, 0, 0, 0,
7923 };
7924
7925 static const Q_UINT16 li_07[] = {
7926     0, 0, 0, 0, 0, 0, 0, 0,
7927     0, 0, 0, 0, 0, 0, 0, 0,
7928     0, 0, 0, 0, 0, 0, 0, 0,
7929     0, 0, 0, 0, 0, 0, 0, 0,
7930     0, 0, 0, 0, 0, 0, 0, 0,
7931     0, 0, 0, 0, 0, 0, 0, 0,
7932     0, 0, 0, 0, 0, 0, 0, 0,
7933     0, 0, 0, 0, 0, 0, 0, 0,
7934     0, 0, 0, 0, 0, 0, 0, 0,
7935     0, 0, 0, 0, 0, 0, 0, 0,
7936     0, 0, 0, 0, 0, 0, 0, 0,
7937     0, 0, 0, 0, 0, 0, 0, 0,
7938     0, 0, 0, 0, 0, 0, 0, 0,
7939     0, 0, 0, 0, 0, 0, 0, 0,
7940     0, 0, 0, 0, 0, 0, 0, 0,
7941     0, 0, 0, 0, 0, 0, 0, 0,
7942     0, 0, 0, 0, 0, 0, 0, 0,
7943     0, 0, 0, 0, 0, 0, 0, 0,
7944     0, 0, 0, 0, 0, 0, 0, 0,
7945     0, 0, 0, 0, 0, 0, 0, 0,
7946     0, 0, 0, 0, 0, 0, 0, 0,
7947     0, 0, 0, 0, 0, 0, 0, 0,
7948     0, 0, 0, 0, 0, 0, 0, 0,
7949     0, 0, 0, 0, 0, 0, 0, 0,
7950     0, 0, 0, 0, 0, 0, 0, 0,
7951     0, 0, 0, 0, 0, 0, 0, 0,
7952     0, 0, 0, 0, 0, 0, 0, 0,
7953     0, 0, 0, 0, 0, 0, 0, 0,
7954     0, 0, 0, 0, 0, 0, 0, 0,
7955     0, 0, 0, 0, 0, 0, 0, 0,
7956     0, 0, 0, 0, 0, 0, 0, 0,
7957     0, 0, 0, 0, 0, 0, 0, 0,
7958 };
7959
7960 static const Q_UINT16 li_09[] = {
7961     0, 0, 0, 0, 0, 0, 0, 0,
7962     0, 0, 0, 0, 0, 0, 0, 0,
7963     0, 0, 0, 0, 0, 1673, 1675, 1677,
7964     0, 0, 0, 0, 1679, 0, 0, 0,
7965     0, 1681, 1683, 0, 0, 0, 0, 0,
7966     1685, 0, 0, 1687, 0, 0, 0, 1689,
7967     1691, 0, 0, 1693, 0, 0, 0, 0,
7968     0, 0, 0, 0, 0, 0, 0, 0,
7969     0, 0, 0, 0, 0, 0, 0, 0,
7970     0, 0, 0, 0, 0, 0, 0, 0,
7971     0, 0, 0, 0, 0, 0, 0, 0,
7972     0, 0, 0, 0, 0, 0, 0, 0,
7973     0, 0, 0, 0, 0, 0, 0, 0,
7974     0, 0, 0, 0, 0, 0, 0, 0,
7975     0, 0, 0, 0, 0, 0, 0, 0,
7976     0, 0, 0, 0, 0, 0, 0, 0,
7977     0, 0, 0, 0, 0, 0, 0, 0,
7978     0, 0, 0, 0, 0, 0, 0, 0,
7979     0, 0, 0, 0, 0, 0, 0, 0,
7980     0, 0, 0, 0, 0, 0, 0, 0,
7981     0, 1695, 1697, 0, 0, 0, 0, 0,
7982     0, 0, 0, 0, 0, 0, 0, 1699,
7983     0, 0, 0, 0, 0, 0, 0, 0,
7984     0, 0, 0, 0, 0, 0, 0, 0,
7985     0, 0, 0, 0, 0, 0, 0, 1701,
7986     0, 0, 0, 0, 0, 0, 0, 0,
7987     0, 0, 0, 0, 0, 0, 0, 0,
7988     0, 0, 0, 0, 0, 0, 0, 0,
7989     0, 0, 0, 0, 0, 0, 0, 0,
7990     0, 0, 0, 0, 0, 0, 0, 0,
7991     0, 0, 0, 0, 0, 0, 0, 0,
7992     0, 0, 0, 0, 0, 0, 0, 0,
7993 };
7994
7995 static const Q_UINT16 li_0A[] = {
7996     0, 0, 0, 0, 0, 0, 0, 0,
7997     0, 0, 0, 0, 0, 0, 0, 0,
7998     0, 0, 0, 0, 0, 0, 1704, 1706,
7999     0, 0, 0, 0, 1708, 0, 0, 0,
8000     0, 0, 0, 0, 0, 0, 0, 0,
8001     0, 0, 0, 1710, 0, 0, 0, 0,
8002     0, 0, 1712, 0, 0, 0, 0, 0,
8003     1714, 0, 0, 0, 0, 0, 0, 0,
8004     0, 0, 0, 0, 0, 0, 0, 0,
8005     0, 0, 0, 0, 0, 0, 0, 0,
8006     0, 0, 0, 0, 0, 0, 0, 0,
8007     0, 0, 0, 0, 0, 0, 0, 0,
8008     0, 0, 0, 0, 0, 0, 0, 0,
8009     0, 0, 0, 0, 0, 0, 0, 0,
8010     0, 0, 0, 0, 0, 0, 0, 0,
8011     0, 0, 0, 0, 0, 0, 0, 0,
8012     0, 0, 0, 0, 0, 0, 0, 0,
8013     0, 0, 0, 0, 0, 0, 0, 0,
8014     0, 0, 0, 0, 0, 0, 0, 0,
8015     0, 0, 0, 0, 0, 0, 0, 0,
8016     0, 0, 0, 0, 0, 0, 0, 0,
8017     0, 0, 0, 0, 0, 0, 0, 0,
8018     0, 0, 0, 0, 0, 0, 0, 0,
8019     0, 0, 0, 0, 0, 0, 0, 0,
8020     0, 0, 0, 0, 0, 0, 0, 0,
8021     0, 0, 0, 0, 0, 0, 0, 0,
8022     0, 0, 0, 0, 0, 0, 0, 0,
8023     0, 0, 0, 0, 0, 0, 0, 0,
8024     0, 0, 0, 0, 0, 0, 0, 0,
8025     0, 0, 0, 0, 0, 0, 0, 0,
8026     0, 0, 0, 0, 0, 0, 0, 0,
8027     0, 0, 0, 0, 0, 0, 0, 0,
8028 };
8029
8030 static const Q_UINT16 li_0B[] = {
8031     0, 0, 0, 0, 0, 0, 0, 0,
8032     0, 0, 0, 0, 0, 0, 0, 0,
8033     0, 0, 0, 0, 0, 0, 0, 0,
8034     0, 0, 0, 0, 0, 0, 0, 0,
8035     0, 1716, 1718, 0, 0, 0, 0, 0,
8036     0, 0, 0, 0, 0, 0, 0, 0,
8037     0, 0, 0, 0, 0, 0, 0, 0,
8038     0, 0, 0, 0, 0, 0, 0, 0,
8039     0, 0, 0, 0, 0, 0, 0, 1720,
8040     0, 0, 0, 0, 0, 0, 0, 0,
8041     0, 0, 0, 0, 0, 0, 0, 0,
8042     0, 0, 0, 0, 0, 0, 0, 0,
8043     0, 0, 0, 0, 0, 0, 0, 0,
8044     0, 0, 0, 0, 0, 0, 0, 0,
8045     0, 0, 0, 0, 0, 0, 0, 0,
8046     0, 0, 0, 0, 0, 0, 0, 0,
8047     0, 0, 0, 0, 0, 0, 0, 0,
8048     0, 0, 0, 0, 0, 0, 0, 0,
8049     0, 0, 1724, 0, 0, 0, 0, 0,
8050     0, 0, 0, 0, 0, 0, 0, 0,
8051     0, 0, 0, 0, 0, 0, 0, 0,
8052     0, 0, 0, 0, 0, 0, 0, 0,
8053     0, 0, 0, 0, 0, 0, 0, 0,
8054     0, 0, 0, 0, 0, 0, 0, 0,
8055     0, 0, 0, 0, 0, 0, 1726, 1729,
8056     0, 0, 0, 0, 0, 0, 0, 0,
8057     0, 0, 0, 0, 0, 0, 0, 0,
8058     0, 0, 0, 0, 0, 0, 0, 0,
8059     0, 0, 0, 0, 0, 0, 0, 0,
8060     0, 0, 0, 0, 0, 0, 0, 0,
8061     0, 0, 0, 0, 0, 0, 0, 0,
8062     0, 0, 0, 0, 0, 0, 0, 0,
8063 };
8064
8065 static const Q_UINT16 li_0C[] = {
8066     0, 0, 0, 0, 0, 0, 0, 0,
8067     0, 0, 0, 0, 0, 0, 0, 0,
8068     0, 0, 0, 0, 0, 0, 0, 0,
8069     0, 0, 0, 0, 0, 0, 0, 0,
8070     0, 0, 0, 0, 0, 0, 0, 0,
8071     0, 0, 0, 0, 0, 0, 0, 0,
8072     0, 0, 0, 0, 0, 0, 0, 0,
8073     0, 0, 0, 0, 0, 0, 0, 0,
8074     0, 0, 0, 0, 0, 0, 1731, 0,
8075     0, 0, 0, 0, 0, 0, 0, 0,
8076     0, 0, 0, 0, 0, 0, 0, 0,
8077     0, 0, 0, 0, 0, 0, 0, 0,
8078     0, 0, 0, 0, 0, 0, 0, 0,
8079     0, 0, 0, 0, 0, 0, 0, 0,
8080     0, 0, 0, 0, 0, 0, 0, 0,
8081     0, 0, 0, 0, 0, 0, 0, 0,
8082     0, 0, 0, 0, 0, 0, 0, 0,
8083     0, 0, 0, 0, 0, 0, 0, 0,
8084     0, 0, 0, 0, 0, 0, 0, 0,
8085     0, 0, 0, 0, 0, 0, 0, 0,
8086     0, 0, 0, 0, 0, 0, 0, 0,
8087     0, 0, 0, 0, 0, 0, 0, 0,
8088     0, 0, 0, 0, 0, 0, 0, 0,
8089     0, 0, 0, 0, 0, 0, 0, 1733,
8090     0, 0, 0, 0, 0, 0, 1735, 0,
8091     0, 0, 1739, 0, 0, 0, 0, 0,
8092     0, 0, 0, 0, 0, 0, 0, 0,
8093     0, 0, 0, 0, 0, 0, 0, 0,
8094     0, 0, 0, 0, 0, 0, 0, 0,
8095     0, 0, 0, 0, 0, 0, 0, 0,
8096     0, 0, 0, 0, 0, 0, 0, 0,
8097     0, 0, 0, 0, 0, 0, 0, 0,
8098 };
8099
8100 static const Q_UINT16 li_0D[] = {
8101     0, 0, 0, 0, 0, 0, 0, 0,
8102     0, 0, 0, 0, 0, 0, 0, 0,
8103     0, 0, 0, 0, 0, 0, 0, 0,
8104     0, 0, 0, 0, 0, 0, 0, 0,
8105     0, 0, 0, 0, 0, 0, 0, 0,
8106     0, 0, 0, 0, 0, 0, 0, 0,
8107     0, 0, 0, 0, 0, 0, 0, 0,
8108     0, 0, 0, 0, 0, 0, 0, 0,
8109     0, 0, 0, 0, 0, 0, 1741, 1744,
8110     0, 0, 0, 0, 0, 0, 0, 0,
8111     0, 0, 0, 0, 0, 0, 0, 0,
8112     0, 0, 0, 0, 0, 0, 0, 0,
8113     0, 0, 0, 0, 0, 0, 0, 0,
8114     0, 0, 0, 0, 0, 0, 0, 0,
8115     0, 0, 0, 0, 0, 0, 0, 0,
8116     0, 0, 0, 0, 0, 0, 0, 0,
8117     0, 0, 0, 0, 0, 0, 0, 0,
8118     0, 0, 0, 0, 0, 0, 0, 0,
8119     0, 0, 0, 0, 0, 0, 0, 0,
8120     0, 0, 0, 0, 0, 0, 0, 0,
8121     0, 0, 0, 0, 0, 0, 0, 0,
8122     0, 0, 0, 0, 0, 0, 0, 0,
8123     0, 0, 0, 0, 0, 0, 0, 0,
8124     0, 0, 0, 0, 0, 0, 0, 0,
8125     0, 0, 0, 0, 0, 0, 0, 0,
8126     0, 0, 0, 0, 0, 0, 0, 0,
8127     0, 0, 0, 0, 0, 0, 0, 0,
8128     0, 1746, 0, 0, 1750, 0, 0, 0,
8129     0, 0, 0, 0, 0, 0, 0, 0,
8130     0, 0, 0, 0, 0, 0, 0, 0,
8131     0, 0, 0, 0, 0, 0, 0, 0,
8132     0, 0, 0, 0, 0, 0, 0, 0,
8133 };
8134
8135 static const Q_UINT16 li_0F[] = {
8136     0, 0, 0, 0, 0, 0, 0, 0,
8137     0, 0, 0, 0, 0, 0, 0, 0,
8138     0, 0, 0, 0, 0, 0, 0, 0,
8139     0, 0, 0, 0, 0, 0, 0, 0,
8140     0, 0, 0, 0, 0, 0, 0, 0,
8141     0, 0, 0, 0, 0, 0, 0, 0,
8142     0, 0, 0, 0, 0, 0, 0, 0,
8143     0, 0, 0, 0, 0, 0, 0, 0,
8144     1752, 0, 1754, 0, 0, 0, 0, 0,
8145     0, 0, 0, 0, 1756, 0, 0, 0,
8146     0, 1758, 0, 0, 0, 0, 1760, 0,
8147     0, 0, 0, 1762, 0, 0, 0, 0,
8148     0, 0, 0, 0, 0, 0, 0, 0,
8149     0, 0, 0, 0, 0, 0, 0, 0,
8150     0, 1764, 0, 0, 0, 0, 0, 0,
8151     0, 0, 0, 0, 0, 0, 0, 0,
8152     0, 0, 0, 0, 0, 0, 0, 0,
8153     0, 0, 0, 0, 0, 0, 0, 0,
8154     1768, 0, 1770, 0, 0, 0, 0, 0,
8155     0, 0, 0, 0, 1772, 0, 0, 0,
8156     0, 1774, 0, 0, 0, 0, 1776, 0,
8157     0, 0, 0, 1778, 0, 0, 0, 0,
8158     0, 0, 1780, 1782, 0, 0, 0, 0,
8159     0, 0, 0, 0, 0, 0, 0, 0,
8160     0, 0, 0, 0, 0, 0, 0, 0,
8161     0, 0, 0, 0, 0, 0, 0, 0,
8162     0, 0, 0, 0, 0, 0, 0, 0,
8163     0, 0, 0, 0, 0, 0, 0, 0,
8164     0, 0, 0, 0, 0, 0, 0, 0,
8165     0, 0, 0, 0, 0, 0, 0, 0,
8166     0, 0, 0, 0, 0, 0, 0, 0,
8167     0, 0, 0, 0, 0, 0, 0, 0,
8168 };
8169
8170 static const Q_UINT16 li_10[] = {
8171     0, 0, 0, 0, 0, 0, 0, 0,
8172     0, 0, 0, 0, 0, 0, 0, 0,
8173     0, 0, 0, 0, 0, 0, 0, 0,
8174     0, 0, 0, 0, 0, 0, 0, 0,
8175     0, 0, 0, 0, 0, 1784, 0, 0,
8176     0, 0, 0, 0, 0, 0, 0, 0,
8177     0, 0, 0, 0, 0, 0, 0, 0,
8178     0, 0, 0, 0, 0, 0, 0, 0,
8179     0, 0, 0, 0, 0, 0, 0, 0,
8180     0, 0, 0, 0, 0, 0, 0, 0,
8181     0, 0, 0, 0, 0, 0, 0, 0,
8182     0, 0, 0, 0, 0, 0, 0, 0,
8183     0, 0, 0, 0, 0, 0, 0, 0,
8184     0, 0, 0, 0, 0, 0, 0, 0,
8185     0, 0, 0, 0, 0, 0, 0, 0,
8186     0, 0, 0, 0, 0, 0, 0, 0,
8187     0, 0, 0, 0, 0, 0, 0, 0,
8188     0, 0, 0, 0, 0, 0, 0, 0,
8189     0, 0, 0, 0, 0, 0, 0, 0,
8190     0, 0, 0, 0, 0, 0, 0, 0,
8191     0, 0, 0, 0, 0, 0, 0, 0,
8192     0, 0, 0, 0, 0, 0, 0, 0,
8193     0, 0, 0, 0, 0, 0, 0, 0,
8194     0, 0, 0, 0, 0, 0, 0, 0,
8195     0, 0, 0, 0, 0, 0, 0, 0,
8196     0, 0, 0, 0, 0, 0, 0, 0,
8197     0, 0, 0, 0, 0, 0, 0, 0,
8198     0, 0, 0, 0, 0, 0, 0, 0,
8199     0, 0, 0, 0, 0, 0, 0, 0,
8200     0, 0, 0, 0, 0, 0, 0, 0,
8201     0, 0, 0, 0, 0, 0, 0, 0,
8202     0, 0, 0, 0, 0, 0, 0, 0,
8203 };
8204
8205 static const Q_UINT16 li_1E[] = {
8206     0, 0, 0, 0, 0, 0, 0, 0,
8207     0, 0, 0, 0, 0, 0, 0, 0,
8208     0, 0, 0, 0, 0, 0, 0, 0,
8209     0, 0, 0, 0, 0, 0, 0, 0,
8210     0, 0, 0, 0, 0, 0, 0, 0,
8211     0, 0, 0, 0, 0, 0, 0, 0,
8212     0, 0, 0, 0, 0, 0, 1786, 1788,
8213     0, 0, 0, 0, 0, 0, 0, 0,
8214     0, 0, 0, 0, 0, 0, 0, 0,
8215     0, 0, 0, 0, 0, 0, 0, 0,
8216     0, 0, 0, 0, 0, 0, 0, 0,
8217     0, 0, 1790, 1792, 0, 0, 0, 0,
8218     0, 0, 1794, 1796, 0, 0, 0, 0,
8219     0, 0, 0, 0, 0, 0, 0, 0,
8220     0, 0, 0, 0, 0, 0, 0, 0,
8221     0, 0, 0, 0, 0, 0, 0, 0,
8222     0, 0, 0, 0, 0, 0, 0, 0,
8223     0, 0, 0, 0, 0, 0, 0, 0,
8224     0, 0, 0, 0, 0, 0, 0, 0,
8225     0, 0, 0, 0, 0, 0, 0, 0,
8226     1798, 1801, 0, 0, 0, 0, 0, 0,
8227     0, 0, 0, 0, 0, 0, 0, 0,
8228     0, 0, 0, 0, 0, 0, 0, 0,
8229     1804, 1806, 0, 0, 0, 0, 0, 0,
8230     0, 0, 0, 0, 0, 0, 0, 0,
8231     0, 0, 0, 0, 1808, 1810, 0, 0,
8232     0, 0, 0, 0, 0, 0, 0, 0,
8233     0, 0, 0, 0, 0, 0, 0, 0,
8234     0, 0, 0, 0, 0, 0, 0, 0,
8235     0, 0, 0, 0, 0, 0, 0, 0,
8236     0, 0, 0, 0, 0, 0, 0, 0,
8237     0, 0, 0, 0, 0, 0, 0, 0,
8238 };
8239
8240 static const Q_UINT16 li_1F[] = {
8241     1812, 1817, 1822, 1824, 1826, 1828, 1830, 1832,
8242     1834, 1839, 1844, 1846, 1848, 1850, 1852, 1854,
8243     1856, 1859, 0, 0, 0, 0, 0, 0,
8244     1862, 1865, 0, 0, 0, 0, 0, 0,
8245     1868, 1873, 1878, 1880, 1882, 1884, 1886, 1888,
8246     1890, 1895, 1900, 1902, 1904, 1906, 1908, 1910,
8247     1912, 1916, 0, 0, 0, 0, 0, 0,
8248     1920, 1924, 0, 0, 0, 0, 0, 0,
8249     1928, 1931, 0, 0, 0, 0, 0, 0,
8250     1934, 1937, 0, 0, 0, 0, 0, 0,
8251     1940, 1944, 0, 0, 0, 0, 0, 0,
8252     0, 1948, 0, 0, 0, 0, 0, 0,
8253     1952, 1957, 1962, 1964, 1966, 1968, 1970, 1972,
8254     1974, 1979, 1984, 1986, 1988, 1990, 1992, 1994,
8255     1996, 0, 0, 0, 1998, 0, 0, 0,
8256     0, 0, 0, 0, 2000, 0, 0, 0,
8257     0, 0, 0, 0, 0, 0, 0, 0,
8258     0, 0, 0, 0, 0, 0, 0, 0,
8259     0, 0, 0, 0, 0, 0, 0, 0,
8260     0, 0, 0, 0, 0, 0, 0, 0,
8261     0, 0, 0, 0, 0, 0, 0, 0,
8262     0, 0, 0, 0, 0, 0, 0, 0,
8263     0, 0, 0, 0, 0, 0, 2002, 0,
8264     0, 0, 0, 0, 0, 0, 0, 2004,
8265     0, 0, 0, 0, 0, 0, 2008, 0,
8266     0, 0, 0, 0, 0, 0, 0, 0,
8267     0, 0, 0, 0, 0, 0, 0, 0,
8268     0, 0, 0, 0, 0, 0, 0, 0,
8269     0, 0, 0, 0, 0, 0, 0, 0,
8270     0, 0, 0, 0, 0, 0, 0, 0,
8271     0, 0, 0, 0, 0, 0, 2010, 0,
8272     0, 0, 0, 0, 0, 0, 2012, 0,
8273 };
8274
8275 static const Q_UINT16 li_21[] = {
8276     0, 0, 0, 0, 0, 0, 0, 0,
8277     0, 0, 0, 0, 0, 0, 0, 0,
8278     0, 0, 0, 0, 0, 0, 0, 0,
8279     0, 0, 0, 0, 0, 0, 0, 0,
8280     0, 0, 0, 0, 0, 0, 0, 0,
8281     0, 0, 0, 0, 0, 0, 0, 0,
8282     0, 0, 0, 0, 0, 0, 0, 0,
8283     0, 0, 0, 0, 0, 0, 0, 0,
8284     0, 0, 0, 0, 0, 0, 0, 0,
8285     0, 0, 0, 0, 0, 0, 0, 0,
8286     0, 0, 0, 0, 0, 0, 0, 0,
8287     0, 0, 0, 0, 0, 0, 0, 0,
8288     0, 0, 0, 0, 0, 0, 0, 0,
8289     0, 0, 0, 0, 0, 0, 0, 0,
8290     0, 0, 0, 0, 0, 0, 0, 0,
8291     0, 0, 0, 0, 0, 0, 0, 0,
8292     0, 0, 0, 0, 0, 0, 0, 0,
8293     0, 0, 0, 0, 0, 0, 0, 0,
8294     2016, 0, 2018, 0, 2020, 0, 0, 0,
8295     0, 0, 0, 0, 0, 0, 0, 0,
8296     0, 0, 0, 0, 0, 0, 0, 0,
8297     0, 0, 0, 0, 0, 0, 0, 0,
8298     0, 0, 0, 0, 0, 0, 0, 0,
8299     0, 0, 0, 0, 0, 0, 0, 0,
8300     0, 0, 0, 0, 0, 0, 0, 0,
8301     0, 0, 0, 0, 0, 0, 0, 0,
8302     2022, 0, 2024, 0, 2026, 0, 0, 0,
8303     0, 0, 0, 0, 0, 0, 0, 0,
8304     0, 0, 0, 0, 0, 0, 0, 0,
8305     0, 0, 0, 0, 0, 0, 0, 0,
8306     0, 0, 0, 0, 0, 0, 0, 0,
8307     0, 0, 0, 0, 0, 0, 0, 0,
8308 };
8309
8310 static const Q_UINT16 li_22[] = {
8311     0, 0, 0, 2028, 0, 0, 0, 0,
8312     2030, 0, 0, 2032, 0, 0, 0, 0,
8313     0, 0, 0, 0, 0, 0, 0, 0,
8314     0, 0, 0, 0, 0, 0, 0, 0,
8315     0, 0, 0, 2034, 0, 2036, 0, 0,
8316     0, 0, 0, 0, 0, 0, 0, 0,
8317     0, 0, 0, 0, 0, 0, 0, 0,
8318     0, 0, 0, 0, 2038, 0, 0, 0,
8319     0, 0, 0, 2040, 0, 2042, 0, 0,
8320     2044, 0, 0, 0, 0, 2046, 0, 0,
8321     0, 0, 0, 0, 0, 0, 0, 0,
8322     0, 0, 0, 0, 0, 0, 0, 0,
8323     0, 2048, 0, 0, 2050, 2052, 0, 0,
8324     0, 0, 0, 0, 0, 0, 0, 0,
8325     0, 0, 2054, 2056, 0, 0, 2058, 2060,
8326     0, 0, 2062, 2064, 2066, 2068, 0, 0,
8327     0, 0, 2070, 2072, 0, 0, 2074, 2076,
8328     0, 0, 0, 0, 0, 0, 0, 0,
8329     0, 2078, 2080, 0, 0, 0, 0, 0,
8330     0, 0, 0, 0, 0, 0, 0, 0,
8331     0, 0, 2082, 0, 0, 0, 0, 0,
8332     2084, 2086, 0, 2088, 0, 0, 0, 0,
8333     0, 0, 2090, 2092, 2094, 2096, 0, 0,
8334     0, 0, 0, 0, 0, 0, 0, 0,
8335     0, 0, 0, 0, 0, 0, 0, 0,
8336     0, 0, 0, 0, 0, 0, 0, 0,
8337     0, 0, 0, 0, 0, 0, 0, 0,
8338     0, 0, 0, 0, 0, 0, 0, 0,
8339     0, 0, 0, 0, 0, 0, 0, 0,
8340     0, 0, 0, 0, 0, 0, 0, 0,
8341     0, 0, 0, 0, 0, 0, 0, 0,
8342     0, 0, 0, 0, 0, 0, 0, 0,
8343 };
8344
8345 static const Q_UINT16 li_30[] = {
8346     0, 0, 0, 0, 0, 0, 0, 0,
8347     0, 0, 0, 0, 0, 0, 0, 0,
8348     0, 0, 0, 0, 0, 0, 0, 0,
8349     0, 0, 0, 0, 0, 0, 0, 0,
8350     0, 0, 0, 0, 0, 0, 0, 0,
8351     0, 0, 0, 0, 0, 0, 0, 0,
8352     0, 0, 0, 0, 0, 0, 0, 0,
8353     0, 0, 0, 0, 0, 0, 0, 0,
8354     0, 0, 0, 0, 0, 0, 2098, 0,
8355     0, 0, 0, 2100, 0, 2102, 0, 2104,
8356     0, 2106, 0, 2108, 0, 2110, 0, 2112,
8357     0, 2114, 0, 2116, 0, 2118, 0, 2120,
8358     0, 2122, 0, 0, 2124, 0, 2126, 0,
8359     2128, 0, 0, 0, 0, 0, 0, 2130,
8360     0, 0, 2133, 0, 0, 2136, 0, 0,
8361     2139, 0, 0, 2142, 0, 0, 0, 0,
8362     0, 0, 0, 0, 0, 0, 0, 0,
8363     0, 0, 0, 0, 0, 0, 0, 0,
8364     0, 0, 0, 0, 0, 0, 0, 0,
8365     0, 0, 0, 0, 0, 2145, 0, 0,
8366     0, 0, 0, 0, 0, 0, 2147, 0,
8367     0, 0, 0, 2149, 0, 2151, 0, 2153,
8368     0, 2155, 0, 2157, 0, 2159, 0, 2161,
8369     0, 2163, 0, 2165, 0, 2167, 0, 2169,
8370     0, 2171, 0, 0, 2173, 0, 2175, 0,
8371     2177, 0, 0, 0, 0, 0, 0, 2179,
8372     0, 0, 2182, 0, 0, 2185, 0, 0,
8373     2188, 0, 0, 2191, 0, 0, 0, 0,
8374     0, 0, 0, 0, 0, 0, 0, 0,
8375     0, 0, 0, 0, 0, 0, 0, 2194,
8376     2196, 2198, 2200, 0, 0, 0, 0, 0,
8377     0, 0, 0, 0, 0, 2202, 0, 0,
8378 };
8379
8380 static const Q_UINT16 li_FB[] = {
8381     0, 0, 0, 0, 0, 0, 0, 0,
8382     0, 0, 0, 0, 0, 0, 0, 0,
8383     0, 0, 0, 0, 0, 0, 0, 0,
8384     0, 0, 0, 0, 0, 0, 0, 0,
8385     0, 0, 0, 0, 0, 0, 0, 0,
8386     0, 0, 0, 0, 0, 0, 0, 0,
8387     0, 0, 0, 0, 0, 0, 0, 0,
8388     0, 0, 0, 0, 0, 0, 0, 0,
8389     0, 0, 0, 0, 0, 0, 0, 0,
8390     0, 2204, 0, 0, 0, 0, 0, 0,
8391     0, 0, 0, 0, 0, 0, 0, 0,
8392     0, 0, 0, 0, 0, 0, 0, 0,
8393     0, 0, 0, 0, 0, 0, 0, 0,
8394     0, 0, 0, 0, 0, 0, 0, 0,
8395     0, 0, 0, 0, 0, 0, 0, 0,
8396     0, 0, 0, 0, 0, 0, 0, 0,
8397     0, 0, 0, 0, 0, 0, 0, 0,
8398     0, 0, 0, 0, 0, 0, 0, 0,
8399     0, 0, 0, 0, 0, 0, 0, 0,
8400     0, 0, 0, 0, 0, 0, 0, 0,
8401     0, 0, 0, 0, 0, 0, 0, 0,
8402     0, 0, 0, 0, 0, 0, 0, 0,
8403     0, 0, 0, 0, 0, 0, 0, 0,
8404     0, 0, 0, 0, 0, 0, 0, 0,
8405     0, 0, 0, 0, 0, 0, 0, 0,
8406     0, 0, 0, 0, 0, 0, 0, 0,
8407     0, 0, 0, 0, 0, 0, 0, 0,
8408     0, 0, 0, 0, 0, 0, 0, 0,
8409     0, 0, 0, 0, 0, 0, 0, 0,
8410     0, 0, 0, 0, 0, 0, 0, 0,
8411     0, 0, 0, 0, 0, 0, 0, 0,
8412     0, 0, 0, 0, 0, 0, 0, 0,
8413 };
8414
8415 static const Q_UINT16 * const ligature_info[256] = {
8416     li_00, li_01, li_02, li_03, li_04, li_05, li_06, li_07,
8417     li_07, li_09, li_0A, li_0B, li_0C, li_0D, li_07, li_0F,
8418     li_10, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8419     li_07, li_07, li_07, li_07, li_07, li_07, li_1E, li_1F,
8420     li_07, li_21, li_22, li_07, li_07, li_07, li_07, li_07,
8421     li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8422     li_30, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8423     li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8424     li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8425     li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8426     li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8427     li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8428     li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8429     li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8430     li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8431     li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8432     li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8433     li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8434     li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8435     li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8436     li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8437     li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8438     li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8439     li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8440     li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8441     li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8442     li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8443     li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8444     li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8445     li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8446     li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8447     li_07, li_07, li_07, li_FB, li_07, li_07, li_07, li_07,
8448 };
8449 // 16188 bytes
8450
8451 static const Q_UINT8 dir_00[] = {
8452     18, 18, 18, 18, 18, 18, 18, 18,
8453     18, 8, 7, 8, 9, 7, 18, 18,
8454     18, 18, 18, 18, 18, 18, 18, 18,
8455     18, 18, 18, 18, 7, 7, 7, 8,
8456     9, 10, 10, 4, 4, 4, 10, 10,
8457     138, 138, 10, 4, 6, 4, 6, 3,
8458     2, 2, 2, 2, 2, 2, 2, 2,
8459     2, 2, 6, 10, 138, 10, 138, 10,
8460     10, 0, 0, 0, 0, 0, 0, 0,
8461     0, 0, 0, 0, 0, 0, 0, 0,
8462     0, 0, 0, 0, 0, 0, 0, 0,
8463     0, 0, 0, 138, 10, 138, 10, 10,
8464     10, 0, 0, 0, 0, 0, 0, 0,
8465     0, 0, 0, 0, 0, 0, 0, 0,
8466     0, 0, 0, 0, 0, 0, 0, 0,
8467     0, 0, 0, 138, 10, 138, 10, 18,
8468     18, 18, 18, 18, 18, 7, 18, 18,
8469     18, 18, 18, 18, 18, 18, 18, 18,
8470     18, 18, 18, 18, 18, 18, 18, 18,
8471     18, 18, 18, 18, 18, 18, 18, 18,
8472     6, 10, 4, 4, 4, 4, 10, 10,
8473     10, 10, 0, 138, 10, 10, 10, 10,
8474     4, 4, 2, 2, 10, 0, 10, 10,
8475     10, 2, 0, 138, 10, 10, 10, 10,
8476     0, 0, 0, 0, 0, 0, 0, 0,
8477     0, 0, 0, 0, 0, 0, 0, 0,
8478     0, 0, 0, 0, 0, 0, 0, 10,
8479     0, 0, 0, 0, 0, 0, 0, 0,
8480     0, 0, 0, 0, 0, 0, 0, 0,
8481     0, 0, 0, 0, 0, 0, 0, 0,
8482     0, 0, 0, 0, 0, 0, 0, 10,
8483     0, 0, 0, 0, 0, 0, 0, 0,
8484 };
8485
8486 static const Q_UINT8 dir_01[] = {
8487     0, 0, 0, 0, 0, 0, 0, 0,
8488     0, 0, 0, 0, 0, 0, 0, 0,
8489     0, 0, 0, 0, 0, 0, 0, 0,
8490     0, 0, 0, 0, 0, 0, 0, 0,
8491     0, 0, 0, 0, 0, 0, 0, 0,
8492     0, 0, 0, 0, 0, 0, 0, 0,
8493     0, 0, 0, 0, 0, 0, 0, 0,
8494     0, 0, 0, 0, 0, 0, 0, 0,
8495     0, 0, 0, 0, 0, 0, 0, 0,
8496     0, 0, 0, 0, 0, 0, 0, 0,
8497     0, 0, 0, 0, 0, 0, 0, 0,
8498     0, 0, 0, 0, 0, 0, 0, 0,
8499     0, 0, 0, 0, 0, 0, 0, 0,
8500     0, 0, 0, 0, 0, 0, 0, 0,
8501     0, 0, 0, 0, 0, 0, 0, 0,
8502     0, 0, 0, 0, 0, 0, 0, 0,
8503     0, 0, 0, 0, 0, 0, 0, 0,
8504     0, 0, 0, 0, 0, 0, 0, 0,
8505     0, 0, 0, 0, 0, 0, 0, 0,
8506     0, 0, 0, 0, 0, 0, 0, 0,
8507     0, 0, 0, 0, 0, 0, 0, 0,
8508     0, 0, 0, 0, 0, 0, 0, 0,
8509     0, 0, 0, 0, 0, 0, 0, 0,
8510     0, 0, 0, 0, 0, 0, 0, 0,
8511     0, 0, 0, 0, 0, 0, 0, 0,
8512     0, 0, 0, 0, 0, 0, 0, 0,
8513     0, 0, 0, 0, 0, 0, 0, 0,
8514     0, 0, 0, 0, 0, 0, 0, 0,
8515     0, 0, 0, 0, 0, 0, 0, 0,
8516     0, 0, 0, 0, 0, 0, 0, 0,
8517     0, 0, 0, 0, 0, 0, 0, 0,
8518     0, 0, 0, 0, 0, 0, 0, 0,
8519 };
8520
8521 static const Q_UINT8 dir_02[] = {
8522     0, 0, 0, 0, 0, 0, 0, 0,
8523     0, 0, 0, 0, 0, 0, 0, 0,
8524     0, 0, 0, 0, 0, 0, 0, 0,
8525     0, 0, 0, 0, 0, 0, 0, 0,
8526     0, 0, 0, 0, 0, 0, 0, 0,
8527     0, 0, 0, 0, 0, 0, 0, 0,
8528     0, 0, 0, 0, 0, 0, 0, 0,
8529     0, 0, 0, 0, 0, 0, 0, 0,
8530     0, 0, 0, 0, 0, 0, 0, 0,
8531     0, 0, 0, 0, 0, 0, 0, 0,
8532     0, 0, 0, 0, 0, 0, 0, 0,
8533     0, 0, 0, 0, 0, 0, 0, 0,
8534     0, 0, 0, 0, 0, 0, 0, 0,
8535     0, 0, 0, 0, 0, 0, 0, 0,
8536     0, 0, 0, 0, 0, 0, 0, 0,
8537     0, 0, 0, 0, 0, 0, 0, 0,
8538     0, 0, 0, 0, 0, 0, 0, 0,
8539     0, 0, 0, 0, 0, 0, 0, 0,
8540     0, 0, 0, 0, 0, 0, 0, 0,
8541     0, 0, 0, 0, 0, 0, 0, 0,
8542     0, 0, 0, 0, 0, 0, 0, 0,
8543     0, 0, 0, 0, 0, 0, 0, 0,
8544     0, 0, 0, 0, 0, 0, 0, 0,
8545     0, 10, 10, 0, 0, 0, 0, 0,
8546     0, 0, 10, 10, 10, 10, 10, 10,
8547     10, 10, 10, 10, 10, 10, 10, 10,
8548     0, 0, 10, 10, 10, 10, 10, 10,
8549     10, 10, 10, 10, 10, 10, 10, 10,
8550     0, 0, 0, 0, 0, 10, 10, 10,
8551     10, 10, 10, 10, 10, 10, 0, 0,
8552     0, 0, 0, 0, 0, 0, 0, 0,
8553     0, 0, 0, 0, 0, 0, 0, 0,
8554 };
8555
8556 static const Q_UINT8 dir_03[] = {
8557     17, 17, 17, 17, 17, 17, 17, 17,
8558     17, 17, 17, 17, 17, 17, 17, 17,
8559     17, 17, 17, 17, 17, 17, 17, 17,
8560     17, 17, 17, 17, 17, 17, 17, 17,
8561     17, 17, 17, 17, 17, 17, 17, 17,
8562     17, 17, 17, 17, 17, 17, 17, 17,
8563     17, 17, 17, 17, 17, 17, 17, 17,
8564     17, 17, 17, 17, 17, 17, 17, 17,
8565     17, 17, 17, 17, 17, 17, 17, 17,
8566     17, 17, 17, 17, 17, 17, 17, 0,
8567     0, 0, 0, 0, 0, 0, 0, 0,
8568     0, 0, 0, 0, 0, 0, 0, 0,
8569     17, 17, 17, 0, 0, 0, 0, 0,
8570     0, 0, 0, 0, 0, 0, 0, 0,
8571     0, 0, 0, 0, 10, 10, 0, 0,
8572     0, 0, 0, 0, 0, 0, 10, 0,
8573     0, 0, 0, 0, 10, 10, 0, 10,
8574     0, 0, 0, 0, 0, 0, 0, 0,
8575     0, 0, 0, 0, 0, 0, 0, 0,
8576     0, 0, 0, 0, 0, 0, 0, 0,
8577     0, 0, 0, 0, 0, 0, 0, 0,
8578     0, 0, 0, 0, 0, 0, 0, 0,
8579     0, 0, 0, 0, 0, 0, 0, 0,
8580     0, 0, 0, 0, 0, 0, 0, 0,
8581     0, 0, 0, 0, 0, 0, 0, 0,
8582     0, 0, 0, 0, 0, 0, 0, 0,
8583     0, 0, 0, 0, 0, 0, 0, 0,
8584     0, 0, 0, 0, 0, 0, 0, 0,
8585     0, 0, 0, 0, 0, 0, 0, 0,
8586     0, 0, 0, 0, 0, 0, 0, 0,
8587     0, 0, 0, 0, 0, 0, 0, 0,
8588     0, 0, 0, 0, 0, 0, 0, 0,
8589 };
8590
8591 static const Q_UINT8 dir_04[] = {
8592     0, 0, 0, 0, 0, 0, 0, 0,
8593     0, 0, 0, 0, 0, 0, 0, 0,
8594     0, 0, 0, 0, 0, 0, 0, 0,
8595     0, 0, 0, 0, 0, 0, 0, 0,
8596     0, 0, 0, 0, 0, 0, 0, 0,
8597     0, 0, 0, 0, 0, 0, 0, 0,
8598     0, 0, 0, 0, 0, 0, 0, 0,
8599     0, 0, 0, 0, 0, 0, 0, 0,
8600     0, 0, 0, 0, 0, 0, 0, 0,
8601     0, 0, 0, 0, 0, 0, 0, 0,
8602     0, 0, 0, 0, 0, 0, 0, 0,
8603     0, 0, 0, 0, 0, 0, 0, 0,
8604     0, 0, 0, 0, 0, 0, 0, 0,
8605     0, 0, 0, 0, 0, 0, 0, 0,
8606     0, 0, 0, 0, 0, 0, 0, 0,
8607     0, 0, 0, 0, 0, 0, 0, 0,
8608     0, 0, 0, 17, 17, 17, 17, 0,
8609     17, 17, 0, 0, 0, 0, 0, 0,
8610     0, 0, 0, 0, 0, 0, 0, 0,
8611     0, 0, 0, 0, 0, 0, 0, 0,
8612     0, 0, 0, 0, 0, 0, 0, 0,
8613     0, 0, 0, 0, 0, 0, 0, 0,
8614     0, 0, 0, 0, 0, 0, 0, 0,
8615     0, 0, 0, 0, 0, 0, 0, 0,
8616     0, 0, 0, 0, 0, 0, 0, 0,
8617     0, 0, 0, 0, 0, 0, 0, 0,
8618     0, 0, 0, 0, 0, 0, 0, 0,
8619     0, 0, 0, 0, 0, 0, 0, 0,
8620     0, 0, 0, 0, 0, 0, 0, 0,
8621     0, 0, 0, 0, 0, 0, 0, 0,
8622     0, 0, 0, 0, 0, 0, 0, 0,
8623     0, 0, 0, 0, 0, 0, 0, 0,
8624 };
8625
8626 static const Q_UINT8 dir_05[] = {
8627     0, 0, 0, 0, 0, 0, 0, 0,
8628     0, 0, 0, 0, 0, 0, 0, 0,
8629     0, 0, 0, 0, 0, 0, 0, 0,
8630     0, 0, 0, 0, 0, 0, 0, 0,
8631     0, 0, 0, 0, 0, 0, 0, 0,
8632     0, 0, 0, 0, 0, 0, 0, 0,
8633     0, 0, 0, 0, 0, 0, 0, 0,
8634     0, 0, 0, 0, 0, 0, 0, 0,
8635     0, 0, 0, 0, 0, 0, 0, 0,
8636     0, 0, 0, 0, 0, 0, 0, 0,
8637     0, 0, 0, 0, 0, 0, 0, 0,
8638     0, 0, 0, 0, 0, 0, 0, 0,
8639     0, 0, 0, 0, 0, 0, 0, 0,
8640     0, 0, 0, 0, 0, 0, 0, 0,
8641     0, 0, 0, 0, 0, 0, 0, 0,
8642     0, 0, 0, 0, 0, 0, 0, 0,
8643     0, 0, 0, 0, 0, 0, 0, 0,
8644     0, 0, 10, 0, 0, 0, 0, 0,
8645     0, 17, 17, 17, 17, 17, 17, 17,
8646     17, 17, 17, 17, 17, 17, 17, 17,
8647     17, 17, 0, 17, 17, 17, 17, 17,
8648     17, 17, 17, 17, 17, 17, 17, 17,
8649     17, 17, 17, 17, 17, 17, 17, 17,
8650     17, 17, 0, 17, 17, 17, 1, 17,
8651     1, 17, 17, 1, 17, 0, 0, 0,
8652     0, 0, 0, 0, 0, 0, 0, 0,
8653     1, 1, 1, 1, 1, 1, 1, 1,
8654     1, 1, 1, 1, 1, 1, 1, 1,
8655     1, 1, 1, 1, 1, 1, 1, 1,
8656     1, 1, 1, 0, 0, 0, 0, 0,
8657     1, 1, 1, 1, 1, 0, 0, 0,
8658     0, 0, 0, 0, 0, 0, 0, 0,
8659 };
8660
8661 static const Q_UINT8 dir_06[] = {
8662     0, 0, 0, 0, 0, 0, 0, 0,
8663     0, 0, 0, 0, 6, 0, 0, 0,
8664     0, 0, 0, 0, 0, 0, 0, 0,
8665     0, 0, 0, 13, 0, 0, 0, 13,
8666     0, 13, 77, 77, 77, 77, 45, 77,
8667     45, 77, 45, 45, 45, 45, 45, 77,
8668     77, 77, 77, 45, 45, 45, 45, 45,
8669     45, 45, 45, 0, 0, 0, 0, 0,
8670     109, 45, 45, 45, 45, 45, 45, 45,
8671     77, 77, 45, 17, 17, 17, 17, 17,
8672     17, 17, 17, 17, 17, 17, 0, 0,
8673     0, 0, 0, 0, 0, 0, 0, 0,
8674     5, 5, 5, 5, 5, 5, 5, 5,
8675     5, 5, 4, 5, 5, 13, 0, 0,
8676     17, 13, 77, 77, 13, 77, 77, 77,
8677     45, 45, 45, 45, 45, 45, 45, 45,
8678     45, 45, 45, 45, 45, 45, 45, 45,
8679     77, 77, 77, 77, 77, 77, 77, 77,
8680     77, 77, 77, 77, 77, 77, 77, 77,
8681     77, 77, 45, 45, 45, 45, 45, 45,
8682     45, 45, 45, 45, 45, 45, 45, 45,
8683     45, 45, 45, 45, 45, 45, 45, 45,
8684     45, 45, 45, 45, 45, 45, 45, 45,
8685     45, 45, 45, 45, 45, 45, 45, 45,
8686     77, 45, 77, 77, 77, 77, 77, 77,
8687     77, 77, 77, 77, 45, 77, 45, 77,
8688     45, 45, 77, 77, 13, 13, 17, 17,
8689     17, 17, 17, 17, 17, 17, 17, 17,
8690     17, 17, 17, 17, 17, 13, 13, 17,
8691     17, 10, 17, 17, 17, 17, 0, 0,
8692     2, 2, 2, 2, 2, 2, 2, 2,
8693     2, 2, 45, 45, 45, 13, 13, 0,
8694 };
8695
8696 static const Q_UINT8 dir_07[] = {
8697     13, 13, 13, 13, 13, 13, 13, 13,
8698     13, 13, 13, 13, 13, 13, 0, 18,
8699     77, 17, 45, 45, 45, 77, 77, 77,
8700     77, 77, 45, 45, 45, 45, 77, 45,
8701     45, 45, 45, 45, 45, 45, 45, 45,
8702     77, 45, 77, 45, 77, 0, 0, 0,
8703     17, 17, 17, 17, 17, 17, 17, 17,
8704     17, 17, 17, 17, 17, 17, 17, 17,
8705     17, 17, 17, 17, 17, 17, 17, 17,
8706     17, 17, 17, 0, 0, 0, 0, 0,
8707     0, 0, 0, 0, 0, 0, 0, 0,
8708     0, 0, 0, 0, 0, 0, 0, 0,
8709     0, 0, 0, 0, 0, 0, 0, 0,
8710     0, 0, 0, 0, 0, 0, 0, 0,
8711     0, 0, 0, 0, 0, 0, 0, 0,
8712     0, 0, 0, 0, 0, 0, 0, 0,
8713     13, 13, 13, 13, 13, 13, 13, 13,
8714     13, 13, 13, 13, 13, 13, 13, 13,
8715     13, 13, 13, 13, 13, 13, 13, 13,
8716     13, 13, 13, 13, 13, 13, 13, 13,
8717     13, 13, 13, 13, 13, 13, 17, 17,
8718     17, 17, 17, 17, 17, 17, 17, 17,
8719     17, 0, 0, 0, 0, 0, 0, 0,
8720     0, 0, 0, 0, 0, 0, 0, 0,
8721     0, 0, 0, 0, 0, 0, 0, 0,
8722     0, 0, 0, 0, 0, 0, 0, 0,
8723     0, 0, 0, 0, 0, 0, 0, 0,
8724     0, 0, 0, 0, 0, 0, 0, 0,
8725     0, 0, 0, 0, 0, 0, 0, 0,
8726     0, 0, 0, 0, 0, 0, 0, 0,
8727     0, 0, 0, 0, 0, 0, 0, 0,
8728     0, 0, 0, 0, 0, 0, 0, 0,
8729 };
8730
8731 static const Q_UINT8 dir_09[] = {
8732     0, 17, 17, 0, 0, 0, 0, 0,
8733     0, 0, 0, 0, 0, 0, 0, 0,
8734     0, 0, 0, 0, 0, 0, 0, 0,
8735     0, 0, 0, 0, 0, 0, 0, 0,
8736     0, 0, 0, 0, 0, 0, 0, 0,
8737     0, 0, 0, 0, 0, 0, 0, 0,
8738     0, 0, 0, 0, 0, 0, 0, 0,
8739     0, 0, 0, 0, 17, 0, 0, 0,
8740     0, 17, 17, 17, 17, 17, 17, 17,
8741     17, 0, 0, 0, 0, 17, 0, 0,
8742     0, 17, 17, 17, 17, 0, 0, 0,
8743     0, 0, 0, 0, 0, 0, 0, 0,
8744     0, 0, 17, 17, 0, 0, 0, 0,
8745     0, 0, 0, 0, 0, 0, 0, 0,
8746     0, 0, 0, 0, 0, 0, 0, 0,
8747     0, 0, 0, 0, 0, 0, 0, 0,
8748     0, 17, 0, 0, 0, 0, 0, 0,
8749     0, 0, 0, 0, 0, 0, 0, 0,
8750     0, 0, 0, 0, 0, 0, 0, 0,
8751     0, 0, 0, 0, 0, 0, 0, 0,
8752     0, 0, 0, 0, 0, 0, 0, 0,
8753     0, 0, 0, 0, 0, 0, 0, 0,
8754     0, 0, 0, 0, 0, 0, 0, 0,
8755     0, 0, 0, 0, 17, 0, 0, 0,
8756     0, 17, 17, 17, 17, 0, 0, 0,
8757     0, 0, 0, 0, 0, 17, 0, 0,
8758     0, 0, 0, 0, 0, 0, 0, 0,
8759     0, 0, 0, 0, 0, 0, 0, 0,
8760     0, 0, 17, 17, 0, 0, 0, 0,
8761     0, 0, 0, 0, 0, 0, 0, 0,
8762     0, 0, 4, 4, 0, 0, 0, 0,
8763     0, 0, 0, 0, 0, 0, 0, 0,
8764 };
8765
8766 static const Q_UINT8 dir_0A[] = {
8767     0, 0, 17, 0, 0, 0, 0, 0,
8768     0, 0, 0, 0, 0, 0, 0, 0,
8769     0, 0, 0, 0, 0, 0, 0, 0,
8770     0, 0, 0, 0, 0, 0, 0, 0,
8771     0, 0, 0, 0, 0, 0, 0, 0,
8772     0, 0, 0, 0, 0, 0, 0, 0,
8773     0, 0, 0, 0, 0, 0, 0, 0,
8774     0, 0, 0, 0, 17, 0, 0, 0,
8775     0, 17, 17, 0, 0, 0, 0, 17,
8776     17, 0, 0, 17, 17, 17, 0, 0,
8777     0, 0, 0, 0, 0, 0, 0, 0,
8778     0, 0, 0, 0, 0, 0, 0, 0,
8779     0, 0, 0, 0, 0, 0, 0, 0,
8780     0, 0, 0, 0, 0, 0, 0, 0,
8781     17, 17, 0, 0, 0, 0, 0, 0,
8782     0, 0, 0, 0, 0, 0, 0, 0,
8783     0, 17, 17, 0, 0, 0, 0, 0,
8784     0, 0, 0, 0, 0, 0, 0, 0,
8785     0, 0, 0, 0, 0, 0, 0, 0,
8786     0, 0, 0, 0, 0, 0, 0, 0,
8787     0, 0, 0, 0, 0, 0, 0, 0,
8788     0, 0, 0, 0, 0, 0, 0, 0,
8789     0, 0, 0, 0, 0, 0, 0, 0,
8790     0, 0, 0, 0, 17, 0, 0, 0,
8791     0, 17, 17, 17, 17, 17, 0, 17,
8792     17, 0, 0, 0, 0, 17, 0, 0,
8793     0, 0, 0, 0, 0, 0, 0, 0,
8794     0, 0, 0, 0, 0, 0, 0, 0,
8795     0, 0, 0, 0, 0, 0, 0, 0,
8796     0, 0, 0, 0, 0, 0, 0, 0,
8797     0, 0, 0, 0, 0, 0, 0, 0,
8798     0, 0, 0, 0, 0, 0, 0, 0,
8799 };
8800
8801 static const Q_UINT8 dir_0B[] = {
8802     0, 17, 0, 0, 0, 0, 0, 0,
8803     0, 0, 0, 0, 0, 0, 0, 0,
8804     0, 0, 0, 0, 0, 0, 0, 0,
8805     0, 0, 0, 0, 0, 0, 0, 0,
8806     0, 0, 0, 0, 0, 0, 0, 0,
8807     0, 0, 0, 0, 0, 0, 0, 0,
8808     0, 0, 0, 0, 0, 0, 0, 0,
8809     0, 0, 0, 0, 17, 0, 0, 17,
8810     0, 17, 17, 17, 0, 0, 0, 0,
8811     0, 0, 0, 0, 0, 17, 0, 0,
8812     0, 0, 0, 0, 0, 0, 17, 0,
8813     0, 0, 0, 0, 0, 0, 0, 0,
8814     0, 0, 0, 0, 0, 0, 0, 0,
8815     0, 0, 0, 0, 0, 0, 0, 0,
8816     0, 0, 0, 0, 0, 0, 0, 0,
8817     0, 0, 0, 0, 0, 0, 0, 0,
8818     0, 0, 17, 0, 0, 0, 0, 0,
8819     0, 0, 0, 0, 0, 0, 0, 0,
8820     0, 0, 0, 0, 0, 0, 0, 0,
8821     0, 0, 0, 0, 0, 0, 0, 0,
8822     0, 0, 0, 0, 0, 0, 0, 0,
8823     0, 0, 0, 0, 0, 0, 0, 0,
8824     0, 0, 0, 0, 0, 0, 0, 0,
8825     0, 0, 0, 0, 0, 0, 0, 0,
8826     17, 0, 0, 0, 0, 0, 0, 0,
8827     0, 0, 0, 0, 0, 17, 0, 0,
8828     0, 0, 0, 0, 0, 0, 0, 0,
8829     0, 0, 0, 0, 0, 0, 0, 0,
8830     0, 0, 0, 0, 0, 0, 0, 0,
8831     0, 0, 0, 0, 0, 0, 0, 0,
8832     0, 0, 0, 0, 0, 0, 0, 0,
8833     0, 0, 0, 0, 0, 0, 0, 0,
8834 };
8835
8836 static const Q_UINT8 dir_0C[] = {
8837     0, 0, 0, 0, 0, 0, 0, 0,
8838     0, 0, 0, 0, 0, 0, 0, 0,
8839     0, 0, 0, 0, 0, 0, 0, 0,
8840     0, 0, 0, 0, 0, 0, 0, 0,
8841     0, 0, 0, 0, 0, 0, 0, 0,
8842     0, 0, 0, 0, 0, 0, 0, 0,
8843     0, 0, 0, 0, 0, 0, 0, 0,
8844     0, 0, 0, 0, 0, 0, 17, 17,
8845     17, 0, 0, 0, 0, 0, 17, 17,
8846     17, 0, 17, 17, 17, 17, 0, 0,
8847     0, 0, 0, 0, 0, 17, 17, 0,
8848     0, 0, 0, 0, 0, 0, 0, 0,
8849     0, 0, 0, 0, 0, 0, 0, 0,
8850     0, 0, 0, 0, 0, 0, 0, 0,
8851     0, 0, 0, 0, 0, 0, 0, 0,
8852     0, 0, 0, 0, 0, 0, 0, 0,
8853     0, 0, 0, 0, 0, 0, 0, 0,
8854     0, 0, 0, 0, 0, 0, 0, 0,
8855     0, 0, 0, 0, 0, 0, 0, 0,
8856     0, 0, 0, 0, 0, 0, 0, 0,
8857     0, 0, 0, 0, 0, 0, 0, 0,
8858     0, 0, 0, 0, 0, 0, 0, 0,
8859     0, 0, 0, 0, 0, 0, 0, 0,
8860     0, 0, 0, 0, 0, 0, 0, 17,
8861     0, 0, 0, 0, 0, 0, 17, 0,
8862     0, 0, 0, 0, 17, 17, 0, 0,
8863     0, 0, 0, 0, 0, 0, 0, 0,
8864     0, 0, 0, 0, 0, 0, 0, 0,
8865     0, 0, 0, 0, 0, 0, 0, 0,
8866     0, 0, 0, 0, 0, 0, 0, 0,
8867     0, 0, 0, 0, 0, 0, 0, 0,
8868     0, 0, 0, 0, 0, 0, 0, 0,
8869 };
8870
8871 static const Q_UINT8 dir_0D[] = {
8872     0, 0, 0, 0, 0, 0, 0, 0,
8873     0, 0, 0, 0, 0, 0, 0, 0,
8874     0, 0, 0, 0, 0, 0, 0, 0,
8875     0, 0, 0, 0, 0, 0, 0, 0,
8876     0, 0, 0, 0, 0, 0, 0, 0,
8877     0, 0, 0, 0, 0, 0, 0, 0,
8878     0, 0, 0, 0, 0, 0, 0, 0,
8879     0, 0, 0, 0, 0, 0, 0, 0,
8880     0, 17, 17, 17, 0, 0, 0, 0,
8881     0, 0, 0, 0, 0, 17, 0, 0,
8882     0, 0, 0, 0, 0, 0, 0, 0,
8883     0, 0, 0, 0, 0, 0, 0, 0,
8884     0, 0, 0, 0, 0, 0, 0, 0,
8885     0, 0, 0, 0, 0, 0, 0, 0,
8886     0, 0, 0, 0, 0, 0, 0, 0,
8887     0, 0, 0, 0, 0, 0, 0, 0,
8888     0, 0, 0, 0, 0, 0, 0, 0,
8889     0, 0, 0, 0, 0, 0, 0, 0,
8890     0, 0, 0, 0, 0, 0, 0, 0,
8891     0, 0, 0, 0, 0, 0, 0, 0,
8892     0, 0, 0, 0, 0, 0, 0, 0,
8893     0, 0, 0, 0, 0, 0, 0, 0,
8894     0, 0, 0, 0, 0, 0, 0, 0,
8895     0, 0, 0, 0, 0, 0, 0, 0,
8896     0, 0, 0, 0, 0, 0, 0, 0,
8897     0, 0, 17, 0, 0, 0, 0, 0,
8898     0, 0, 17, 17, 17, 0, 17, 0,
8899     0, 0, 0, 0, 0, 0, 0, 0,
8900     0, 0, 0, 0, 0, 0, 0, 0,
8901     0, 0, 0, 0, 0, 0, 0, 0,
8902     0, 0, 0, 0, 0, 0, 0, 0,
8903     0, 0, 0, 0, 0, 0, 0, 0,
8904 };
8905
8906 static const Q_UINT8 dir_0E[] = {
8907     0, 0, 0, 0, 0, 0, 0, 0,
8908     0, 0, 0, 0, 0, 0, 0, 0,
8909     0, 0, 0, 0, 0, 0, 0, 0,
8910     0, 0, 0, 0, 0, 0, 0, 0,
8911     0, 0, 0, 0, 0, 0, 0, 0,
8912     0, 0, 0, 0, 0, 0, 0, 0,
8913     0, 17, 0, 0, 17, 17, 17, 17,
8914     17, 17, 17, 0, 0, 0, 0, 4,
8915     0, 0, 0, 0, 0, 0, 0, 17,
8916     17, 17, 17, 17, 17, 17, 17, 0,
8917     0, 0, 0, 0, 0, 0, 0, 0,
8918     0, 0, 0, 0, 0, 0, 0, 0,
8919     0, 0, 0, 0, 0, 0, 0, 0,
8920     0, 0, 0, 0, 0, 0, 0, 0,
8921     0, 0, 0, 0, 0, 0, 0, 0,
8922     0, 0, 0, 0, 0, 0, 0, 0,
8923     0, 0, 0, 0, 0, 0, 0, 0,
8924     0, 0, 0, 0, 0, 0, 0, 0,
8925     0, 0, 0, 0, 0, 0, 0, 0,
8926     0, 0, 0, 0, 0, 0, 0, 0,
8927     0, 0, 0, 0, 0, 0, 0, 0,
8928     0, 0, 0, 0, 0, 0, 0, 0,
8929     0, 17, 0, 0, 17, 17, 17, 17,
8930     17, 17, 0, 17, 17, 0, 0, 0,
8931     0, 0, 0, 0, 0, 0, 0, 0,
8932     17, 17, 17, 17, 17, 17, 0, 0,
8933     0, 0, 0, 0, 0, 0, 0, 0,
8934     0, 0, 0, 0, 0, 0, 0, 0,
8935     0, 0, 0, 0, 0, 0, 0, 0,
8936     0, 0, 0, 0, 0, 0, 0, 0,
8937     0, 0, 0, 0, 0, 0, 0, 0,
8938     0, 0, 0, 0, 0, 0, 0, 0,
8939 };
8940
8941 static const Q_UINT8 dir_0F[] = {
8942     0, 0, 0, 0, 0, 0, 0, 0,
8943     0, 0, 0, 0, 0, 0, 0, 0,
8944     0, 0, 0, 0, 0, 0, 0, 0,
8945     17, 17, 0, 0, 0, 0, 0, 0,
8946     0, 0, 0, 0, 0, 0, 0, 0,
8947     0, 0, 0, 0, 0, 0, 0, 0,
8948     0, 0, 0, 0, 0, 17, 0, 17,
8949     0, 17, 10, 10, 10, 10, 0, 0,
8950     0, 0, 0, 0, 0, 0, 0, 0,
8951     0, 0, 0, 0, 0, 0, 0, 0,
8952     0, 0, 0, 0, 0, 0, 0, 0,
8953     0, 0, 0, 0, 0, 0, 0, 0,
8954     0, 0, 0, 0, 0, 0, 0, 0,
8955     0, 0, 0, 0, 0, 0, 0, 0,
8956     0, 17, 17, 17, 17, 17, 17, 17,
8957     17, 17, 17, 17, 17, 17, 17, 0,
8958     17, 17, 17, 17, 17, 0, 17, 17,
8959     0, 0, 0, 0, 0, 0, 0, 0,
8960     17, 17, 17, 17, 17, 17, 17, 17,
8961     0, 17, 17, 17, 17, 17, 17, 17,
8962     17, 17, 17, 17, 17, 17, 17, 17,
8963     17, 17, 17, 17, 17, 17, 17, 17,
8964     17, 17, 17, 17, 17, 17, 17, 17,
8965     17, 17, 17, 17, 17, 0, 0, 0,
8966     0, 0, 0, 0, 0, 0, 17, 0,
8967     0, 0, 0, 0, 0, 0, 0, 0,
8968     0, 0, 0, 0, 0, 0, 0, 0,
8969     0, 0, 0, 0, 0, 0, 0, 0,
8970     0, 0, 0, 0, 0, 0, 0, 0,
8971     0, 0, 0, 0, 0, 0, 0, 0,
8972     0, 0, 0, 0, 0, 0, 0, 0,
8973     0, 0, 0, 0, 0, 0, 0, 0,
8974 };
8975
8976 static const Q_UINT8 dir_10[] = {
8977     0, 0, 0, 0, 0, 0, 0, 0,
8978     0, 0, 0, 0, 0, 0, 0, 0,
8979     0, 0, 0, 0, 0, 0, 0, 0,
8980     0, 0, 0, 0, 0, 0, 0, 0,
8981     0, 0, 0, 0, 0, 0, 0, 0,
8982     0, 0, 0, 0, 0, 17, 17, 17,
8983     17, 0, 17, 0, 0, 0, 17, 17,
8984     0, 17, 0, 0, 0, 0, 0, 0,
8985     0, 0, 0, 0, 0, 0, 0, 0,
8986     0, 0, 0, 0, 0, 0, 0, 0,
8987     0, 0, 0, 0, 0, 0, 0, 0,
8988     17, 17, 0, 0, 0, 0, 0, 0,
8989     0, 0, 0, 0, 0, 0, 0, 0,
8990     0, 0, 0, 0, 0, 0, 0, 0,
8991     0, 0, 0, 0, 0, 0, 0, 0,
8992     0, 0, 0, 0, 0, 0, 0, 0,
8993     0, 0, 0, 0, 0, 0, 0, 0,
8994     0, 0, 0, 0, 0, 0, 0, 0,
8995     0, 0, 0, 0, 0, 0, 0, 0,
8996     0, 0, 0, 0, 0, 0, 0, 0,
8997     0, 0, 0, 0, 0, 0, 0, 0,
8998     0, 0, 0, 0, 0, 0, 0, 0,
8999     0, 0, 0, 0, 0, 0, 0, 0,
9000     0, 0, 0, 0, 0, 0, 0, 0,
9001     0, 0, 0, 0, 0, 0, 0, 0,
9002     0, 0, 0, 0, 0, 0, 0, 0,
9003     0, 0, 0, 0, 0, 0, 0, 0,
9004     0, 0, 0, 0, 0, 0, 0, 0,
9005     0, 0, 0, 0, 0, 0, 0, 0,
9006     0, 0, 0, 0, 0, 0, 0, 0,
9007     0, 0, 0, 0, 0, 0, 0, 0,
9008     0, 0, 0, 0, 0, 0, 0, 0,
9009 };
9010
9011 static const Q_UINT8 dir_16[] = {
9012     0, 0, 0, 0, 0, 0, 0, 0,
9013     0, 0, 0, 0, 0, 0, 0, 0,
9014     0, 0, 0, 0, 0, 0, 0, 0,
9015     0, 0, 0, 0, 0, 0, 0, 0,
9016     0, 0, 0, 0, 0, 0, 0, 0,
9017     0, 0, 0, 0, 0, 0, 0, 0,
9018     0, 0, 0, 0, 0, 0, 0, 0,
9019     0, 0, 0, 0, 0, 0, 0, 0,
9020     0, 0, 0, 0, 0, 0, 0, 0,
9021     0, 0, 0, 0, 0, 0, 0, 0,
9022     0, 0, 0, 0, 0, 0, 0, 0,
9023     0, 0, 0, 0, 0, 0, 0, 0,
9024     0, 0, 0, 0, 0, 0, 0, 0,
9025     0, 0, 0, 0, 0, 0, 0, 0,
9026     0, 0, 0, 0, 0, 0, 0, 0,
9027     0, 0, 0, 0, 0, 0, 0, 0,
9028     9, 0, 0, 0, 0, 0, 0, 0,
9029     0, 0, 0, 0, 0, 0, 0, 0,
9030     0, 0, 0, 0, 0, 0, 0, 0,
9031     0, 0, 0, 10, 10, 0, 0, 0,
9032     0, 0, 0, 0, 0, 0, 0, 0,
9033     0, 0, 0, 0, 0, 0, 0, 0,
9034     0, 0, 0, 0, 0, 0, 0, 0,
9035     0, 0, 0, 0, 0, 0, 0, 0,
9036     0, 0, 0, 0, 0, 0, 0, 0,
9037     0, 0, 0, 0, 0, 0, 0, 0,
9038     0, 0, 0, 0, 0, 0, 0, 0,
9039     0, 0, 0, 0, 0, 0, 0, 0,
9040     0, 0, 0, 0, 0, 0, 0, 0,
9041     0, 0, 0, 0, 0, 0, 0, 0,
9042     0, 0, 0, 0, 0, 0, 0, 0,
9043     0, 0, 0, 0, 0, 0, 0, 0,
9044 };
9045
9046 static const Q_UINT8 dir_17[] = {
9047     0, 0, 0, 0, 0, 0, 0, 0,
9048     0, 0, 0, 0, 0, 0, 0, 0,
9049     0, 0, 0, 0, 0, 0, 0, 0,
9050     0, 0, 0, 0, 0, 0, 0, 0,
9051     0, 0, 0, 0, 0, 0, 0, 0,
9052     0, 0, 0, 0, 0, 0, 0, 0,
9053     0, 0, 0, 0, 0, 0, 0, 0,
9054     0, 0, 0, 0, 0, 0, 0, 0,
9055     0, 0, 0, 0, 0, 0, 0, 0,
9056     0, 0, 0, 0, 0, 0, 0, 0,
9057     0, 0, 0, 0, 0, 0, 0, 0,
9058     0, 0, 0, 0, 0, 0, 0, 0,
9059     0, 0, 0, 0, 0, 0, 0, 0,
9060     0, 0, 0, 0, 0, 0, 0, 0,
9061     0, 0, 0, 0, 0, 0, 0, 0,
9062     0, 0, 0, 0, 0, 0, 0, 0,
9063     0, 0, 0, 0, 0, 0, 0, 0,
9064     0, 0, 0, 0, 0, 0, 0, 0,
9065     0, 0, 0, 0, 0, 0, 0, 0,
9066     0, 0, 0, 0, 0, 0, 0, 0,
9067     0, 0, 0, 0, 0, 0, 0, 0,
9068     0, 0, 0, 0, 0, 0, 0, 0,
9069     0, 0, 0, 0, 0, 0, 0, 17,
9070     17, 17, 17, 17, 17, 17, 0, 0,
9071     0, 0, 0, 0, 0, 0, 17, 0,
9072     0, 17, 17, 17, 17, 17, 17, 17,
9073     17, 17, 17, 17, 0, 0, 0, 0,
9074     0, 0, 0, 4, 0, 0, 0, 0,
9075     0, 0, 0, 0, 0, 0, 0, 0,
9076     0, 0, 0, 0, 0, 0, 0, 0,
9077     0, 0, 0, 0, 0, 0, 0, 0,
9078     0, 0, 0, 0, 0, 0, 0, 0,
9079 };
9080
9081 static const Q_UINT8 dir_18[] = {
9082     10, 10, 10, 10, 10, 10, 10, 10,
9083     10, 10, 10, 18, 18, 18, 18, 0,
9084     0, 0, 0, 0, 0, 0, 0, 0,
9085     0, 0, 0, 0, 0, 0, 0, 0,
9086     0, 0, 0, 0, 0, 0, 0, 0,
9087     0, 0, 0, 0, 0, 0, 0, 0,
9088     0, 0, 0, 0, 0, 0, 0, 0,
9089     0, 0, 0, 0, 0, 0, 0, 0,
9090     0, 0, 0, 0, 0, 0, 0, 0,
9091     0, 0, 0, 0, 0, 0, 0, 0,
9092     0, 0, 0, 0, 0, 0, 0, 0,
9093     0, 0, 0, 0, 0, 0, 0, 0,
9094     0, 0, 0, 0, 0, 0, 0, 0,
9095     0, 0, 0, 0, 0, 0, 0, 0,
9096     0, 0, 0, 0, 0, 0, 0, 0,
9097     0, 0, 0, 0, 0, 0, 0, 0,
9098     0, 0, 0, 0, 0, 0, 0, 0,
9099     0, 0, 0, 0, 0, 0, 0, 0,
9100     0, 0, 0, 0, 0, 0, 0, 0,
9101     0, 0, 0, 0, 0, 0, 0, 0,
9102     0, 0, 0, 0, 0, 0, 0, 0,
9103     0, 17, 0, 0, 0, 0, 0, 0,
9104     0, 0, 0, 0, 0, 0, 0, 0,
9105     0, 0, 0, 0, 0, 0, 0, 0,
9106     0, 0, 0, 0, 0, 0, 0, 0,
9107     0, 0, 0, 0, 0, 0, 0, 0,
9108     0, 0, 0, 0, 0, 0, 0, 0,
9109     0, 0, 0, 0, 0, 0, 0, 0,
9110     0, 0, 0, 0, 0, 0, 0, 0,
9111     0, 0, 0, 0, 0, 0, 0, 0,
9112     0, 0, 0, 0, 0, 0, 0, 0,
9113     0, 0, 0, 0, 0, 0, 0, 0,
9114 };
9115
9116 static const Q_UINT8 dir_1F[] = {
9117     0, 0, 0, 0, 0, 0, 0, 0,
9118     0, 0, 0, 0, 0, 0, 0, 0,
9119     0, 0, 0, 0, 0, 0, 0, 0,
9120     0, 0, 0, 0, 0, 0, 0, 0,
9121     0, 0, 0, 0, 0, 0, 0, 0,
9122     0, 0, 0, 0, 0, 0, 0, 0,
9123     0, 0, 0, 0, 0, 0, 0, 0,
9124     0, 0, 0, 0, 0, 0, 0, 0,
9125     0, 0, 0, 0, 0, 0, 0, 0,
9126     0, 0, 0, 0, 0, 0, 0, 0,
9127     0, 0, 0, 0, 0, 0, 0, 0,
9128     0, 0, 0, 0, 0, 0, 0, 0,
9129     0, 0, 0, 0, 0, 0, 0, 0,
9130     0, 0, 0, 0, 0, 0, 0, 0,
9131     0, 0, 0, 0, 0, 0, 0, 0,
9132     0, 0, 0, 0, 0, 0, 0, 0,
9133     0, 0, 0, 0, 0, 0, 0, 0,
9134     0, 0, 0, 0, 0, 0, 0, 0,
9135     0, 0, 0, 0, 0, 0, 0, 0,
9136     0, 0, 0, 0, 0, 0, 0, 0,
9137     0, 0, 0, 0, 0, 0, 0, 0,
9138     0, 0, 0, 0, 0, 0, 0, 0,
9139     0, 0, 0, 0, 0, 0, 0, 0,
9140     0, 0, 0, 0, 0, 10, 0, 10,
9141     10, 10, 0, 0, 0, 0, 0, 0,
9142     0, 0, 0, 0, 0, 10, 10, 10,
9143     0, 0, 0, 0, 0, 0, 0, 0,
9144     0, 0, 0, 0, 0, 10, 10, 10,
9145     0, 0, 0, 0, 0, 0, 0, 0,
9146     0, 0, 0, 0, 0, 10, 10, 10,
9147     0, 0, 0, 0, 0, 0, 0, 0,
9148     0, 0, 0, 0, 0, 10, 10, 0,
9149 };
9150
9151 static const Q_UINT8 dir_20[] = {
9152     9, 9, 9, 9, 9, 9, 9, 9,
9153     9, 9, 9, 18, 18, 18, 0, 1,
9154     10, 10, 10, 10, 10, 10, 10, 10,
9155     10, 10, 10, 10, 10, 10, 10, 10,
9156     10, 10, 10, 10, 10, 10, 10, 10,
9157     9, 7, 11, 14, 16, 12, 15, 9,
9158     4, 4, 4, 4, 4, 10, 10, 10,
9159     10, 138, 138, 10, 10, 10, 10, 10,
9160     10, 10, 10, 10, 10, 138, 138, 0,
9161     10, 10, 10, 10, 10, 10, 0, 0,
9162     0, 0, 0, 0, 0, 0, 0, 0,
9163     0, 0, 0, 0, 0, 0, 0, 0,
9164     0, 0, 0, 0, 0, 0, 0, 0,
9165     0, 0, 18, 18, 18, 18, 18, 18,
9166     2, 0, 0, 0, 2, 2, 2, 2,
9167     2, 2, 4, 4, 10, 138, 138, 0,
9168     2, 2, 2, 2, 2, 2, 2, 2,
9169     2, 2, 4, 4, 10, 138, 138, 0,
9170     0, 0, 0, 0, 0, 0, 0, 0,
9171     0, 0, 0, 0, 0, 0, 0, 0,
9172     4, 4, 4, 4, 4, 4, 4, 4,
9173     4, 4, 4, 4, 4, 4, 4, 4,
9174     0, 0, 0, 0, 0, 0, 0, 0,
9175     0, 0, 0, 0, 0, 0, 0, 0,
9176     0, 0, 0, 0, 0, 0, 0, 0,
9177     0, 0, 0, 0, 0, 0, 0, 0,
9178     17, 17, 17, 17, 17, 17, 17, 17,
9179     17, 17, 17, 17, 17, 17, 17, 17,
9180     17, 17, 17, 17, 0, 0, 0, 0,
9181     0, 0, 0, 0, 0, 0, 0, 0,
9182     0, 0, 0, 0, 0, 0, 0, 0,
9183     0, 0, 0, 0, 0, 0, 0, 0,
9184 };
9185
9186 static const Q_UINT8 dir_21[] = {
9187     10, 10, 0, 10, 10, 10, 10, 0,
9188     10, 10, 0, 0, 0, 0, 0, 0,
9189     0, 0, 0, 0, 10, 0, 10, 10,
9190     10, 0, 0, 0, 0, 0, 10, 10,
9191     10, 10, 10, 10, 0, 10, 0, 10,
9192     0, 10, 0, 0, 0, 0, 4, 0,
9193     0, 0, 10, 0, 0, 0, 0, 0,
9194     0, 0, 10, 0, 0, 0, 0, 0,
9195     0, 0, 0, 0, 0, 0, 0, 0,
9196     0, 0, 0, 0, 0, 0, 0, 0,
9197     0, 0, 0, 10, 10, 10, 10, 10,
9198     10, 10, 10, 10, 10, 10, 10, 10,
9199     0, 0, 0, 0, 0, 0, 0, 0,
9200     0, 0, 0, 0, 0, 0, 0, 0,
9201     0, 0, 0, 0, 0, 0, 0, 0,
9202     0, 0, 0, 0, 0, 0, 0, 0,
9203     0, 0, 0, 0, 0, 0, 0, 0,
9204     0, 0, 0, 0, 0, 0, 0, 0,
9205     10, 10, 10, 10, 10, 10, 10, 10,
9206     10, 10, 10, 10, 10, 10, 10, 10,
9207     10, 10, 10, 10, 10, 10, 10, 10,
9208     10, 10, 10, 10, 10, 10, 10, 10,
9209     10, 10, 10, 10, 10, 10, 10, 10,
9210     10, 10, 10, 10, 10, 10, 10, 10,
9211     10, 10, 10, 10, 10, 10, 10, 10,
9212     10, 10, 10, 10, 10, 10, 10, 10,
9213     10, 10, 10, 10, 10, 10, 10, 10,
9214     10, 10, 10, 10, 10, 10, 10, 10,
9215     10, 10, 10, 10, 10, 10, 10, 10,
9216     10, 10, 10, 10, 10, 10, 10, 10,
9217     10, 10, 10, 10, 0, 0, 0, 0,
9218     0, 0, 0, 0, 0, 0, 0, 0,
9219 };
9220
9221 static const Q_UINT8 dir_22[] = {
9222     10, 138, 138, 138, 138, 10, 10, 10,
9223     138, 138, 138, 138, 138, 138, 10, 10,
9224     10, 138, 4, 4, 10, 138, 138, 10,
9225     10, 10, 138, 138, 138, 138, 10, 138,
9226     138, 138, 138, 10, 138, 10, 138, 10,
9227     10, 10, 10, 138, 138, 138, 138, 138,
9228     138, 138, 138, 138, 10, 10, 10, 10,
9229     10, 138, 10, 138, 138, 138, 138, 138,
9230     138, 138, 138, 138, 138, 138, 138, 138,
9231     138, 138, 138, 138, 138, 10, 10, 10,
9232     10, 10, 138, 138, 138, 138, 10, 10,
9233     10, 10, 10, 10, 10, 10, 10, 138,
9234     138, 10, 138, 10, 138, 138, 138, 138,
9235     138, 138, 138, 138, 10, 10, 138, 138,
9236     138, 138, 138, 138, 138, 138, 138, 138,
9237     138, 138, 138, 138, 138, 138, 138, 138,
9238     138, 138, 138, 138, 138, 138, 138, 138,
9239     138, 138, 138, 138, 138, 10, 10, 138,
9240     138, 138, 138, 10, 10, 10, 10, 10,
9241     138, 10, 10, 10, 10, 10, 10, 10,
9242     10, 10, 138, 138, 10, 10, 138, 138,
9243     138, 138, 138, 138, 138, 138, 138, 138,
9244     138, 138, 138, 138, 138, 138, 138, 138,
9245     138, 10, 10, 10, 10, 10, 138, 138,
9246     10, 10, 10, 10, 10, 10, 10, 10,
9247     10, 138, 138, 138, 138, 138, 10, 10,
9248     138, 138, 10, 10, 10, 10, 138, 138,
9249     138, 138, 138, 138, 138, 138, 138, 138,
9250     138, 138, 138, 138, 138, 138, 138, 138,
9251     138, 138, 138, 138, 138, 138, 10, 10,
9252     138, 138, 0, 0, 0, 0, 0, 0,
9253     0, 0, 0, 0, 0, 0, 0, 0,
9254 };
9255
9256 static const Q_UINT8 dir_23[] = {
9257     10, 10, 10, 10, 10, 10, 10, 10,
9258     138, 138, 138, 138, 10, 10, 10, 10,
9259     10, 10, 10, 10, 10, 10, 10, 10,
9260     10, 10, 10, 10, 10, 10, 10, 10,
9261     138, 138, 10, 10, 10, 10, 10, 10,
9262     10, 138, 138, 10, 10, 10, 10, 10,
9263     10, 10, 10, 10, 10, 10, 0, 0,
9264     0, 0, 0, 0, 0, 0, 0, 0,
9265     0, 0, 0, 0, 0, 0, 0, 0,
9266     0, 0, 0, 0, 0, 0, 0, 0,
9267     0, 0, 0, 0, 0, 0, 0, 0,
9268     0, 0, 0, 0, 0, 0, 0, 0,
9269     0, 0, 0, 0, 0, 0, 0, 0,
9270     0, 0, 0, 0, 0, 0, 0, 0,
9271     0, 0, 0, 0, 0, 0, 0, 0,
9272     0, 0, 0, 10, 0, 10, 10, 10,
9273     10, 10, 10, 10, 10, 10, 10, 10,
9274     10, 10, 10, 10, 10, 10, 10, 10,
9275     10, 10, 10, 10, 10, 0, 10, 10,
9276     10, 10, 10, 0, 0, 0, 0, 0,
9277     0, 0, 0, 0, 0, 0, 0, 0,
9278     0, 0, 0, 0, 0, 0, 0, 0,
9279     0, 0, 0, 0, 0, 0, 0, 0,
9280     0, 0, 0, 0, 0, 0, 0, 0,
9281     0, 0, 0, 0, 0, 0, 0, 0,
9282     0, 0, 0, 0, 0, 0, 0, 0,
9283     0, 0, 0, 0, 0, 0, 0, 0,
9284     0, 0, 0, 0, 0, 0, 0, 0,
9285     0, 0, 0, 0, 0, 0, 0, 0,
9286     0, 0, 0, 0, 0, 0, 0, 0,
9287     0, 0, 0, 0, 0, 0, 0, 0,
9288     0, 0, 0, 0, 0, 0, 0, 0,
9289 };
9290
9291 static const Q_UINT8 dir_24[] = {
9292     10, 10, 10, 10, 10, 10, 10, 10,
9293     10, 10, 10, 10, 10, 10, 10, 10,
9294     10, 10, 10, 10, 10, 10, 10, 10,
9295     10, 10, 10, 10, 10, 10, 10, 10,
9296     10, 10, 10, 10, 10, 10, 10, 0,
9297     0, 0, 0, 0, 0, 0, 0, 0,
9298     0, 0, 0, 0, 0, 0, 0, 0,
9299     0, 0, 0, 0, 0, 0, 0, 0,
9300     10, 10, 10, 10, 10, 10, 10, 10,
9301     10, 10, 10, 0, 0, 0, 0, 0,
9302     0, 0, 0, 0, 0, 0, 0, 0,
9303     0, 0, 0, 0, 0, 0, 0, 0,
9304     2, 2, 2, 2, 2, 2, 2, 2,
9305     2, 2, 2, 2, 2, 2, 2, 2,
9306     2, 2, 2, 2, 2, 2, 2, 2,
9307     2, 2, 2, 2, 2, 2, 2, 2,
9308     2, 2, 2, 2, 2, 2, 2, 2,
9309     2, 2, 2, 2, 2, 2, 2, 2,
9310     2, 2, 2, 2, 2, 2, 2, 2,
9311     2, 2, 2, 2, 0, 0, 0, 0,
9312     0, 0, 0, 0, 0, 0, 0, 0,
9313     0, 0, 0, 0, 0, 0, 0, 0,
9314     0, 0, 0, 0, 0, 0, 0, 0,
9315     0, 0, 0, 0, 0, 0, 0, 0,
9316     0, 0, 0, 0, 0, 0, 0, 0,
9317     0, 0, 0, 0, 0, 0, 0, 0,
9318     0, 0, 0, 0, 0, 0, 0, 0,
9319     0, 0, 0, 0, 0, 0, 0, 0,
9320     0, 0, 0, 0, 0, 0, 0, 0,
9321     0, 0, 2, 0, 0, 0, 0, 0,
9322     0, 0, 0, 0, 0, 0, 0, 0,
9323     0, 0, 0, 0, 0, 0, 0, 0,
9324 };
9325
9326 static const Q_UINT8 dir_25[] = {
9327     10, 10, 10, 10, 10, 10, 10, 10,
9328     10, 10, 10, 10, 10, 10, 10, 10,
9329     10, 10, 10, 10, 10, 10, 10, 10,
9330     10, 10, 10, 10, 10, 10, 10, 10,
9331     10, 10, 10, 10, 10, 10, 10, 10,
9332     10, 10, 10, 10, 10, 10, 10, 10,
9333     10, 10, 10, 10, 10, 10, 10, 10,
9334     10, 10, 10, 10, 10, 10, 10, 10,
9335     10, 10, 10, 10, 10, 10, 10, 10,
9336     10, 10, 10, 10, 10, 10, 10, 10,
9337     10, 10, 10, 10, 10, 10, 10, 10,
9338     10, 10, 10, 10, 10, 10, 10, 10,
9339     10, 10, 10, 10, 10, 10, 10, 10,
9340     10, 10, 10, 10, 10, 10, 10, 10,
9341     10, 10, 10, 10, 10, 10, 10, 10,
9342     10, 10, 10, 10, 10, 10, 10, 10,
9343     10, 10, 10, 10, 10, 10, 10, 10,
9344     10, 10, 10, 10, 10, 10, 10, 10,
9345     10, 10, 10, 10, 10, 10, 0, 0,
9346     0, 0, 0, 0, 0, 0, 0, 0,
9347     10, 10, 10, 10, 10, 10, 10, 10,
9348     10, 10, 10, 10, 10, 10, 10, 10,
9349     10, 10, 10, 10, 10, 10, 10, 10,
9350     10, 10, 10, 10, 10, 10, 10, 10,
9351     10, 10, 10, 10, 10, 10, 10, 10,
9352     10, 10, 10, 10, 10, 10, 10, 10,
9353     10, 10, 10, 10, 10, 10, 10, 10,
9354     10, 10, 10, 10, 10, 10, 10, 10,
9355     10, 10, 10, 10, 10, 10, 10, 10,
9356     10, 10, 10, 10, 10, 10, 10, 10,
9357     10, 10, 10, 10, 10, 10, 10, 10,
9358     0, 0, 0, 0, 0, 0, 0, 0,
9359 };
9360
9361 static const Q_UINT8 dir_26[] = {
9362     10, 10, 10, 10, 10, 10, 10, 10,
9363     10, 10, 10, 10, 10, 10, 10, 10,
9364     10, 10, 10, 10, 0, 0, 0, 0,
9365     0, 10, 10, 10, 10, 10, 10, 10,
9366     10, 10, 10, 10, 10, 10, 10, 10,
9367     10, 10, 10, 10, 10, 10, 10, 10,
9368     10, 10, 10, 10, 10, 10, 10, 10,
9369     10, 10, 10, 10, 10, 10, 10, 10,
9370     10, 10, 10, 10, 10, 10, 10, 10,
9371     10, 10, 10, 10, 10, 10, 10, 10,
9372     10, 10, 10, 10, 10, 10, 10, 10,
9373     10, 10, 10, 10, 10, 10, 10, 10,
9374     10, 10, 10, 10, 10, 10, 10, 10,
9375     10, 10, 10, 10, 10, 10, 10, 10,
9376     10, 10, 0, 0, 0, 0, 0, 0,
9377     0, 0, 0, 0, 0, 0, 0, 0,
9378     0, 0, 0, 0, 0, 0, 0, 0,
9379     0, 0, 0, 0, 0, 0, 0, 0,
9380     0, 0, 0, 0, 0, 0, 0, 0,
9381     0, 0, 0, 0, 0, 0, 0, 0,
9382     0, 0, 0, 0, 0, 0, 0, 0,
9383     0, 0, 0, 0, 0, 0, 0, 0,
9384     0, 0, 0, 0, 0, 0, 0, 0,
9385     0, 0, 0, 0, 0, 0, 0, 0,
9386     0, 0, 0, 0, 0, 0, 0, 0,
9387     0, 0, 0, 0, 0, 0, 0, 0,
9388     0, 0, 0, 0, 0, 0, 0, 0,
9389     0, 0, 0, 0, 0, 0, 0, 0,
9390     0, 0, 0, 0, 0, 0, 0, 0,
9391     0, 0, 0, 0, 0, 0, 0, 0,
9392     0, 0, 0, 0, 0, 0, 0, 0,
9393     0, 0, 0, 0, 0, 0, 0, 0,
9394 };
9395
9396 static const Q_UINT8 dir_27[] = {
9397     0, 10, 10, 10, 10, 0, 10, 10,
9398     10, 10, 0, 0, 10, 10, 10, 10,
9399     10, 10, 10, 10, 10, 10, 10, 10,
9400     10, 10, 10, 10, 10, 10, 10, 10,
9401     10, 10, 10, 10, 10, 10, 10, 10,
9402     0, 10, 10, 10, 10, 10, 10, 10,
9403     10, 10, 10, 10, 10, 10, 10, 10,
9404     10, 10, 10, 10, 10, 10, 10, 10,
9405     10, 10, 10, 10, 10, 10, 10, 10,
9406     10, 10, 10, 10, 0, 10, 0, 10,
9407     10, 10, 10, 0, 0, 0, 10, 0,
9408     10, 10, 10, 10, 10, 10, 10, 0,
9409     0, 10, 10, 10, 10, 10, 10, 10,
9410     0, 0, 0, 0, 0, 0, 0, 0,
9411     0, 0, 0, 0, 0, 0, 10, 10,
9412     10, 10, 10, 10, 10, 10, 10, 10,
9413     10, 10, 10, 10, 10, 10, 10, 10,
9414     10, 10, 10, 10, 10, 10, 10, 10,
9415     10, 10, 10, 10, 10, 0, 0, 0,
9416     10, 10, 10, 10, 10, 10, 10, 10,
9417     10, 10, 10, 10, 10, 10, 10, 10,
9418     10, 10, 10, 10, 10, 10, 10, 10,
9419     0, 10, 10, 10, 10, 10, 10, 10,
9420     10, 10, 10, 10, 10, 10, 10, 0,
9421     0, 0, 0, 0, 0, 0, 0, 0,
9422     0, 0, 0, 0, 0, 0, 0, 0,
9423     0, 0, 0, 0, 0, 0, 0, 0,
9424     0, 0, 0, 0, 0, 0, 0, 0,
9425     0, 0, 0, 0, 0, 0, 0, 0,
9426     0, 0, 0, 0, 0, 0, 0, 0,
9427     0, 0, 0, 0, 0, 0, 0, 0,
9428     0, 0, 0, 0, 0, 0, 0, 0,
9429 };
9430
9431 static const Q_UINT8 dir_28[] = {
9432     10, 10, 10, 10, 10, 10, 10, 10,
9433     10, 10, 10, 10, 10, 10, 10, 10,
9434     10, 10, 10, 10, 10, 10, 10, 10,
9435     10, 10, 10, 10, 10, 10, 10, 10,
9436     10, 10, 10, 10, 10, 10, 10, 10,
9437     10, 10, 10, 10, 10, 10, 10, 10,
9438     10, 10, 10, 10, 10, 10, 10, 10,
9439     10, 10, 10, 10, 10, 10, 10, 10,
9440     10, 10, 10, 10, 10, 10, 10, 10,
9441     10, 10, 10, 10, 10, 10, 10, 10,
9442     10, 10, 10, 10, 10, 10, 10, 10,
9443     10, 10, 10, 10, 10, 10, 10, 10,
9444     10, 10, 10, 10, 10, 10, 10, 10,
9445     10, 10, 10, 10, 10, 10, 10, 10,
9446     10, 10, 10, 10, 10, 10, 10, 10,
9447     10, 10, 10, 10, 10, 10, 10, 10,
9448     10, 10, 10, 10, 10, 10, 10, 10,
9449     10, 10, 10, 10, 10, 10, 10, 10,
9450     10, 10, 10, 10, 10, 10, 10, 10,
9451     10, 10, 10, 10, 10, 10, 10, 10,
9452     10, 10, 10, 10, 10, 10, 10, 10,
9453     10, 10, 10, 10, 10, 10, 10, 10,
9454     10, 10, 10, 10, 10, 10, 10, 10,
9455     10, 10, 10, 10, 10, 10, 10, 10,
9456     10, 10, 10, 10, 10, 10, 10, 10,
9457     10, 10, 10, 10, 10, 10, 10, 10,
9458     10, 10, 10, 10, 10, 10, 10, 10,
9459     10, 10, 10, 10, 10, 10, 10, 10,
9460     10, 10, 10, 10, 10, 10, 10, 10,
9461     10, 10, 10, 10, 10, 10, 10, 10,
9462     10, 10, 10, 10, 10, 10, 10, 10,
9463     10, 10, 10, 10, 10, 10, 10, 10,
9464 };
9465
9466 static const Q_UINT8 dir_2E[] = {
9467     0, 0, 0, 0, 0, 0, 0, 0,
9468     0, 0, 0, 0, 0, 0, 0, 0,
9469     0, 0, 0, 0, 0, 0, 0, 0,
9470     0, 0, 0, 0, 0, 0, 0, 0,
9471     0, 0, 0, 0, 0, 0, 0, 0,
9472     0, 0, 0, 0, 0, 0, 0, 0,
9473     0, 0, 0, 0, 0, 0, 0, 0,
9474     0, 0, 0, 0, 0, 0, 0, 0,
9475     0, 0, 0, 0, 0, 0, 0, 0,
9476     0, 0, 0, 0, 0, 0, 0, 0,
9477     0, 0, 0, 0, 0, 0, 0, 0,
9478     0, 0, 0, 0, 0, 0, 0, 0,
9479     0, 0, 0, 0, 0, 0, 0, 0,
9480     0, 0, 0, 0, 0, 0, 0, 0,
9481     0, 0, 0, 0, 0, 0, 0, 0,
9482     0, 0, 0, 0, 0, 0, 0, 0,
9483     10, 10, 10, 10, 10, 10, 10, 10,
9484     10, 10, 10, 10, 10, 10, 10, 10,
9485     10, 10, 10, 10, 10, 10, 10, 10,
9486     10, 10, 0, 10, 10, 10, 10, 10,
9487     10, 10, 10, 10, 10, 10, 10, 10,
9488     10, 10, 10, 10, 10, 10, 10, 10,
9489     10, 10, 10, 10, 10, 10, 10, 10,
9490     10, 10, 10, 10, 10, 10, 10, 10,
9491     10, 10, 10, 10, 10, 10, 10, 10,
9492     10, 10, 10, 10, 10, 10, 10, 10,
9493     10, 10, 10, 10, 10, 10, 10, 10,
9494     10, 10, 10, 10, 10, 10, 10, 10,
9495     10, 10, 10, 10, 10, 10, 10, 10,
9496     10, 10, 10, 10, 10, 10, 10, 10,
9497     10, 10, 10, 10, 0, 0, 0, 0,
9498     0, 0, 0, 0, 0, 0, 0, 0,
9499 };
9500
9501 static const Q_UINT8 dir_2F[] = {
9502     10, 10, 10, 10, 10, 10, 10, 10,
9503     10, 10, 10, 10, 10, 10, 10, 10,
9504     10, 10, 10, 10, 10, 10, 10, 10,
9505     10, 10, 10, 10, 10, 10, 10, 10,
9506     10, 10, 10, 10, 10, 10, 10, 10,
9507     10, 10, 10, 10, 10, 10, 10, 10,
9508     10, 10, 10, 10, 10, 10, 10, 10,
9509     10, 10, 10, 10, 10, 10, 10, 10,
9510     10, 10, 10, 10, 10, 10, 10, 10,
9511     10, 10, 10, 10, 10, 10, 10, 10,
9512     10, 10, 10, 10, 10, 10, 10, 10,
9513     10, 10, 10, 10, 10, 10, 10, 10,
9514     10, 10, 10, 10, 10, 10, 10, 10,
9515     10, 10, 10, 10, 10, 10, 10, 10,
9516     10, 10, 10, 10, 10, 10, 10, 10,
9517     10, 10, 10, 10, 10, 10, 10, 10,
9518     10, 10, 10, 10, 10, 10, 10, 10,
9519     10, 10, 10, 10, 10, 10, 10, 10,
9520     10, 10, 10, 10, 10, 10, 10, 10,
9521     10, 10, 10, 10, 10, 10, 10, 10,
9522     10, 10, 10, 10, 10, 10, 10, 10,
9523     10, 10, 10, 10, 10, 10, 10, 10,
9524     10, 10, 10, 10, 10, 10, 10, 10,
9525     10, 10, 10, 10, 10, 10, 10, 10,
9526     10, 10, 10, 10, 10, 10, 10, 10,
9527     10, 10, 10, 10, 10, 10, 10, 10,
9528     10, 10, 10, 10, 10, 10, 0, 0,
9529     0, 0, 0, 0, 0, 0, 0, 0,
9530     0, 0, 0, 0, 0, 0, 0, 0,
9531     0, 0, 0, 0, 0, 0, 0, 0,
9532     10, 10, 10, 10, 10, 10, 10, 10,
9533     10, 10, 10, 10, 0, 0, 0, 0,
9534 };
9535
9536 static const Q_UINT8 dir_30[] = {
9537     9, 10, 10, 10, 10, 0, 0, 0,
9538     138, 138, 138, 138, 138, 138, 138, 138,
9539     138, 138, 10, 10, 138, 138, 138, 138,
9540     138, 138, 138, 138, 10, 10, 10, 10,
9541     10, 0, 0, 0, 0, 0, 0, 0,
9542     0, 0, 17, 17, 17, 17, 17, 17,
9543     10, 0, 0, 0, 0, 0, 10, 10,
9544     0, 0, 0, 0, 0, 0, 10, 10,
9545     0, 0, 0, 0, 0, 0, 0, 0,
9546     0, 0, 0, 0, 0, 0, 0, 0,
9547     0, 0, 0, 0, 0, 0, 0, 0,
9548     0, 0, 0, 0, 0, 0, 0, 0,
9549     0, 0, 0, 0, 0, 0, 0, 0,
9550     0, 0, 0, 0, 0, 0, 0, 0,
9551     0, 0, 0, 0, 0, 0, 0, 0,
9552     0, 0, 0, 0, 0, 0, 0, 0,
9553     0, 0, 0, 0, 0, 0, 0, 0,
9554     0, 0, 0, 0, 0, 0, 0, 0,
9555     0, 0, 0, 0, 0, 0, 0, 0,
9556     0, 17, 17, 10, 10, 0, 0, 0,
9557     0, 0, 0, 0, 0, 0, 0, 0,
9558     0, 0, 0, 0, 0, 0, 0, 0,
9559     0, 0, 0, 0, 0, 0, 0, 0,
9560     0, 0, 0, 0, 0, 0, 0, 0,
9561     0, 0, 0, 0, 0, 0, 0, 0,
9562     0, 0, 0, 0, 0, 0, 0, 0,
9563     0, 0, 0, 0, 0, 0, 0, 0,
9564     0, 0, 0, 0, 0, 0, 0, 0,
9565     0, 0, 0, 0, 0, 0, 0, 0,
9566     0, 0, 0, 0, 0, 0, 0, 0,
9567     0, 0, 0, 0, 0, 0, 0, 0,
9568     0, 0, 0, 10, 0, 0, 0, 0,
9569 };
9570
9571 static const Q_UINT8 dir_A4[] = {
9572     0, 0, 0, 0, 0, 0, 0, 0,
9573     0, 0, 0, 0, 0, 0, 0, 0,
9574     0, 0, 0, 0, 0, 0, 0, 0,
9575     0, 0, 0, 0, 0, 0, 0, 0,
9576     0, 0, 0, 0, 0, 0, 0, 0,
9577     0, 0, 0, 0, 0, 0, 0, 0,
9578     0, 0, 0, 0, 0, 0, 0, 0,
9579     0, 0, 0, 0, 0, 0, 0, 0,
9580     0, 0, 0, 0, 0, 0, 0, 0,
9581     0, 0, 0, 0, 0, 0, 0, 0,
9582     0, 0, 0, 0, 0, 0, 0, 0,
9583     0, 0, 0, 0, 0, 0, 0, 0,
9584     0, 0, 0, 0, 0, 0, 0, 0,
9585     0, 0, 0, 0, 0, 0, 0, 0,
9586     0, 0, 0, 0, 0, 0, 0, 0,
9587     0, 0, 0, 0, 0, 0, 0, 0,
9588     0, 0, 0, 0, 0, 0, 0, 0,
9589     0, 0, 0, 0, 0, 0, 0, 0,
9590     10, 10, 10, 10, 10, 10, 10, 10,
9591     10, 10, 10, 10, 10, 10, 10, 10,
9592     10, 10, 0, 0, 10, 10, 10, 10,
9593     10, 10, 10, 10, 10, 10, 10, 10,
9594     10, 10, 10, 10, 0, 10, 10, 10,
9595     10, 10, 10, 10, 10, 10, 10, 10,
9596     10, 0, 10, 10, 10, 0, 10, 0,
9597     0, 0, 0, 0, 0, 0, 0, 0,
9598     0, 0, 0, 0, 0, 0, 0, 0,
9599     0, 0, 0, 0, 0, 0, 0, 0,
9600     0, 0, 0, 0, 0, 0, 0, 0,
9601     0, 0, 0, 0, 0, 0, 0, 0,
9602     0, 0, 0, 0, 0, 0, 0, 0,
9603     0, 0, 0, 0, 0, 0, 0, 0,
9604 };
9605
9606 static const Q_UINT8 dir_FB[] = {
9607     0, 0, 0, 0, 0, 0, 0, 0,
9608     0, 0, 0, 0, 0, 0, 0, 0,
9609     0, 0, 0, 0, 0, 0, 0, 0,
9610     0, 0, 0, 0, 0, 1, 17, 1,
9611     1, 1, 1, 1, 1, 1, 1, 1,
9612     1, 4, 1, 1, 1, 1, 1, 1,
9613     1, 1, 1, 1, 1, 1, 1, 0,
9614     1, 1, 1, 1, 1, 0, 1, 0,
9615     1, 1, 0, 1, 1, 0, 1, 1,
9616     1, 1, 1, 1, 1, 1, 1, 1,
9617     13, 13, 13, 13, 13, 13, 13, 13,
9618     13, 13, 13, 13, 13, 13, 13, 13,
9619     13, 13, 13, 13, 13, 13, 13, 13,
9620     13, 13, 13, 13, 13, 13, 13, 13,
9621     13, 13, 13, 13, 13, 13, 13, 13,
9622     13, 13, 13, 13, 13, 13, 13, 13,
9623     13, 13, 13, 13, 13, 13, 13, 13,
9624     13, 13, 13, 13, 13, 13, 13, 13,
9625     13, 13, 13, 13, 13, 13, 13, 13,
9626     13, 13, 13, 13, 13, 13, 13, 13,
9627     13, 13, 13, 13, 13, 13, 13, 13,
9628     13, 13, 13, 13, 13, 13, 13, 13,
9629     13, 13, 0, 0, 0, 0, 0, 0,
9630     0, 0, 0, 0, 0, 0, 0, 0,
9631     0, 0, 0, 0, 0, 0, 0, 0,
9632     0, 0, 0, 0, 0, 0, 0, 0,
9633     0, 0, 0, 13, 13, 13, 13, 13,
9634     13, 13, 13, 13, 13, 13, 13, 13,
9635     13, 13, 13, 13, 13, 13, 13, 13,
9636     13, 13, 13, 13, 13, 13, 13, 13,
9637     13, 13, 13, 13, 13, 13, 13, 13,
9638     13, 13, 13, 13, 13, 13, 13, 13,
9639 };
9640
9641 static const Q_UINT8 dir_FC[] = {
9642     13, 13, 13, 13, 13, 13, 13, 13,
9643     13, 13, 13, 13, 13, 13, 13, 13,
9644     13, 13, 13, 13, 13, 13, 13, 13,
9645     13, 13, 13, 13, 13, 13, 13, 13,
9646     13, 13, 13, 13, 13, 13, 13, 13,
9647     13, 13, 13, 13, 13, 13, 13, 13,
9648     13, 13, 13, 13, 13, 13, 13, 13,
9649     13, 13, 13, 13, 13, 13, 13, 13,
9650     13, 13, 13, 13, 13, 13, 13, 13,
9651     13, 13, 13, 13, 13, 13, 13, 13,
9652     13, 13, 13, 13, 13, 13, 13, 13,
9653     13, 13, 13, 13, 13, 13, 13, 13,
9654     13, 13, 13, 13, 13, 13, 13, 13,
9655     13, 13, 13, 13, 13, 13, 13, 13,
9656     13, 13, 13, 13, 13, 13, 13, 13,
9657     13, 13, 13, 13, 13, 13, 13, 13,
9658     13, 13, 13, 13, 13, 13, 13, 13,
9659     13, 13, 13, 13, 13, 13, 13, 13,
9660     13, 13, 13, 13, 13, 13, 13, 13,
9661     13, 13, 13, 13, 13, 13, 13, 13,
9662     13, 13, 13, 13, 13, 13, 13, 13,
9663     13, 13, 13, 13, 13, 13, 13, 13,
9664     13, 13, 13, 13, 13, 13, 13, 13,
9665     13, 13, 13, 13, 13, 13, 13, 13,
9666     13, 13, 13, 13, 13, 13, 13, 13,
9667     13, 13, 13, 13, 13, 13, 13, 13,
9668     13, 13, 13, 13, 13, 13, 13, 13,
9669     13, 13, 13, 13, 13, 13, 13, 13,
9670     13, 13, 13, 13, 13, 13, 13, 13,
9671     13, 13, 13, 13, 13, 13, 13, 13,
9672     13, 13, 13, 13, 13, 13, 13, 13,
9673     13, 13, 13, 13, 13, 13, 13, 13,
9674 };
9675
9676 static const Q_UINT8 dir_FD[] = {
9677     13, 13, 13, 13, 13, 13, 13, 13,
9678     13, 13, 13, 13, 13, 13, 13, 13,
9679     13, 13, 13, 13, 13, 13, 13, 13,
9680     13, 13, 13, 13, 13, 13, 13, 13,
9681     13, 13, 13, 13, 13, 13, 13, 13,
9682     13, 13, 13, 13, 13, 13, 13, 13,
9683     13, 13, 13, 13, 13, 13, 13, 13,
9684     13, 13, 13, 13, 13, 13, 10, 10,
9685     0, 0, 0, 0, 0, 0, 0, 0,
9686     0, 0, 0, 0, 0, 0, 0, 0,
9687     13, 13, 13, 13, 13, 13, 13, 13,
9688     13, 13, 13, 13, 13, 13, 13, 13,
9689     13, 13, 13, 13, 13, 13, 13, 13,
9690     13, 13, 13, 13, 13, 13, 13, 13,
9691     13, 13, 13, 13, 13, 13, 13, 13,
9692     13, 13, 13, 13, 13, 13, 13, 13,
9693     13, 13, 13, 13, 13, 13, 13, 13,
9694     13, 13, 13, 13, 13, 13, 13, 13,
9695     0, 0, 13, 13, 13, 13, 13, 13,
9696     13, 13, 13, 13, 13, 13, 13, 13,
9697     13, 13, 13, 13, 13, 13, 13, 13,
9698     13, 13, 13, 13, 13, 13, 13, 13,
9699     13, 13, 13, 13, 13, 13, 13, 13,
9700     13, 13, 13, 13, 13, 13, 13, 13,
9701     13, 13, 13, 13, 13, 13, 13, 13,
9702     0, 0, 0, 0, 0, 0, 0, 0,
9703     0, 0, 0, 0, 0, 0, 0, 0,
9704     0, 0, 0, 0, 0, 0, 0, 0,
9705     0, 0, 0, 0, 0, 0, 0, 0,
9706     0, 0, 0, 0, 0, 0, 0, 0,
9707     13, 13, 13, 13, 13, 13, 13, 13,
9708     13, 13, 13, 13, 0, 0, 0, 0,
9709 };
9710
9711 static const Q_UINT8 dir_FE[] = {
9712     0, 0, 0, 0, 0, 0, 0, 0,
9713     0, 0, 0, 0, 0, 0, 0, 0,
9714     0, 0, 0, 0, 0, 0, 0, 0,
9715     0, 0, 0, 0, 0, 0, 0, 0,
9716     17, 17, 17, 17, 0, 0, 0, 0,
9717     0, 0, 0, 0, 0, 0, 0, 0,
9718     10, 10, 10, 10, 10, 10, 10, 10,
9719     10, 10, 10, 10, 10, 10, 10, 10,
9720     10, 10, 10, 10, 10, 0, 0, 0,
9721     0, 10, 10, 10, 10, 10, 10, 10,
9722     6, 10, 6, 0, 10, 6, 10, 10,
9723     10, 10, 10, 10, 10, 10, 10, 4,
9724     10, 10, 4, 4, 10, 10, 10, 0,
9725     10, 4, 4, 10, 0, 0, 0, 0,
9726     13, 13, 13, 0, 13, 0, 13, 13,
9727     13, 13, 13, 13, 13, 13, 13, 13,
9728     13, 13, 13, 13, 13, 13, 13, 13,
9729     13, 13, 13, 13, 13, 13, 13, 13,
9730     13, 13, 13, 13, 13, 13, 13, 13,
9731     13, 13, 13, 13, 13, 13, 13, 13,
9732     13, 13, 13, 13, 13, 13, 13, 13,
9733     13, 13, 13, 13, 13, 13, 13, 13,
9734     13, 13, 13, 13, 13, 13, 13, 13,
9735     13, 13, 13, 13, 13, 13, 13, 13,
9736     13, 13, 13, 13, 13, 13, 13, 13,
9737     13, 13, 13, 13, 13, 13, 13, 13,
9738     13, 13, 13, 13, 13, 13, 13, 13,
9739     13, 13, 13, 13, 13, 13, 13, 13,
9740     13, 13, 13, 13, 13, 13, 13, 13,
9741     13, 13, 13, 13, 13, 13, 13, 13,
9742     13, 13, 13, 13, 13, 13, 13, 13,
9743     13, 13, 13, 13, 13, 0, 0, 18,
9744 };
9745
9746 static const Q_UINT8 dir_FF[] = {
9747     0, 10, 10, 4, 4, 4, 10, 10,
9748     10, 10, 10, 4, 6, 4, 6, 3,
9749     2, 2, 2, 2, 2, 2, 2, 2,
9750     2, 2, 6, 10, 10, 10, 10, 10,
9751     10, 0, 0, 0, 0, 0, 0, 0,
9752     0, 0, 0, 0, 0, 0, 0, 0,
9753     0, 0, 0, 0, 0, 0, 0, 0,
9754     0, 0, 0, 10, 10, 10, 10, 10,
9755     10, 0, 0, 0, 0, 0, 0, 0,
9756     0, 0, 0, 0, 0, 0, 0, 0,
9757     0, 0, 0, 0, 0, 0, 0, 0,
9758     0, 0, 0, 10, 10, 10, 10, 0,
9759     0, 10, 10, 10, 10, 10, 0, 0,
9760     0, 0, 0, 0, 0, 0, 0, 0,
9761     0, 0, 0, 0, 0, 0, 0, 0,
9762     0, 0, 0, 0, 0, 0, 0, 0,
9763     0, 0, 0, 0, 0, 0, 0, 0,
9764     0, 0, 0, 0, 0, 0, 0, 0,
9765     0, 0, 0, 0, 0, 0, 0, 0,
9766     0, 0, 0, 0, 0, 0, 0, 0,
9767     0, 0, 0, 0, 0, 0, 0, 0,
9768     0, 0, 0, 0, 0, 0, 0, 0,
9769     0, 0, 0, 0, 0, 0, 0, 0,
9770     0, 0, 0, 0, 0, 0, 0, 0,
9771     0, 0, 0, 0, 0, 0, 0, 0,
9772     0, 0, 0, 0, 0, 0, 0, 0,
9773     0, 0, 0, 0, 0, 0, 0, 0,
9774     0, 0, 0, 0, 0, 0, 0, 0,
9775     4, 4, 10, 10, 10, 4, 4, 0,
9776     10, 10, 10, 10, 10, 10, 10, 0,
9777     0, 0, 0, 0, 0, 0, 0, 0,
9778     0, 18, 18, 18, 10, 10, 0, 0,
9779 };
9780
9781 static const Q_UINT8 * const direction_info[256] = {
9782     dir_00, dir_01, dir_02, dir_03, dir_04, dir_05, dir_06, dir_07,
9783     dir_01, dir_09, dir_0A, dir_0B, dir_0C, dir_0D, dir_0E, dir_0F,
9784     dir_10, dir_01, dir_01, dir_01, dir_01, dir_01, dir_16, dir_17,
9785     dir_18, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_1F,
9786     dir_20, dir_21, dir_22, dir_23, dir_24, dir_25, dir_26, dir_27,
9787     dir_28, dir_01, dir_01, dir_01, dir_01, dir_01, dir_2E, dir_2F,
9788     dir_30, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
9789     dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
9790     dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
9791     dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
9792     dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
9793     dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
9794     dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
9795     dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
9796     dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
9797     dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
9798     dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
9799     dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
9800     dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
9801     dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
9802     dir_01, dir_01, dir_01, dir_01, dir_A4, dir_01, dir_01, dir_01,
9803     dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
9804     dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
9805     dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
9806     dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
9807     dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
9808     dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
9809     dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
9810     dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
9811     dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
9812     dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
9813     dir_01, dir_01, dir_01, dir_FB, dir_FC, dir_FD, dir_FE, dir_FF,
9814 };
9815 // 26940 bytes
9816
9817 #endif
9818
9819 // END OF GENERATED DATA
9820
9821 // This is generated too. Script?
9822
9823 #ifndef QT_NO_UNICODETABLES
9824
9825 static const Q_UINT16 case_0 [] = {
9826     0, 0, 0, 0, 0, 0, 0, 0,
9827     0, 0, 0, 0, 0, 0, 0, 0,
9828     0, 0, 0, 0, 0, 0, 0, 0,
9829     0, 0, 0, 0, 0, 0, 0, 0,
9830     0, 0, 0, 0, 0, 0, 0, 0,
9831     0, 0, 0, 0, 0, 0, 0, 0,
9832     0, 0, 0, 0, 0, 0, 0, 0,
9833     0, 0, 0, 0, 0, 0, 0, 0,
9834     0, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
9835     0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
9836     0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
9837     0x78, 0x79, 0x7a, 0, 0, 0, 0, 0,
9838     0, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
9839     0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
9840     0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
9841     0x58, 0x59, 0x5a, 0, 0, 0, 0, 0,
9842     0, 0, 0, 0, 0, 0, 0, 0,
9843     0, 0, 0, 0, 0, 0, 0, 0,
9844     0, 0, 0, 0, 0, 0, 0, 0,
9845     0, 0, 0, 0, 0, 0, 0, 0,
9846     0, 0, 0, 0, 0, 0, 0, 0,
9847     0, 0, 0x0, 0, 0, 0, 0, 0,
9848     0, 0, 0, 0, 0, 0x0, 0, 0,
9849     0, 0, 0x0, 0, 0, 0, 0, 0,
9850     0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
9851     0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
9852     0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0,
9853     0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0x0,
9854     0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
9855     0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
9856     0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0,
9857     0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0x178,
9858 };
9859
9860 static const Q_UINT16 case_1 [] = {
9861     0x101, 0x100, 0x103, 0x102, 0x105, 0x104, 0x107, 0x106,
9862     0x109, 0x108, 0x10b, 0x10a, 0x10d, 0x10c, 0x10f, 0x10e,
9863     0x111, 0x110, 0x113, 0x112, 0x115, 0x114, 0x117, 0x116,
9864     0x119, 0x118, 0x11b, 0x11a, 0x11d, 0x11c, 0x11f, 0x11e,
9865     0x121, 0x120, 0x123, 0x122, 0x125, 0x124, 0x127, 0x126,
9866     0x129, 0x128, 0x12b, 0x12a, 0x12d, 0x12c, 0x12f, 0x12e,
9867     0x69, 0x49, 0x133, 0x132, 0x135, 0x134, 0x137, 0x136,
9868     0x0, 0x13a, 0x139, 0x13c, 0x13b, 0x13e, 0x13d, 0x140,
9869     0x13f, 0x142, 0x141, 0x144, 0x143, 0x146, 0x145, 0x148,
9870     0x147, 0x0, 0x14b, 0x14a, 0x14d, 0x14c, 0x14f, 0x14e,
9871     0x151, 0x150, 0x153, 0x152, 0x155, 0x154, 0x157, 0x156,
9872     0x159, 0x158, 0x15b, 0x15a, 0x15d, 0x15c, 0x15f, 0x15e,
9873     0x161, 0x160, 0x163, 0x162, 0x165, 0x164, 0x167, 0x166,
9874     0x169, 0x168, 0x16b, 0x16a, 0x16d, 0x16c, 0x16f, 0x16e,
9875     0x171, 0x170, 0x173, 0x172, 0x175, 0x174, 0x177, 0x176,
9876     0xff, 0x17a, 0x179, 0x17c, 0x17b, 0x17e, 0x17d, 0x53,
9877     0x0, 0x253, 0x183, 0x182, 0x185, 0x184, 0x254, 0x188,
9878     0x187, 0x256, 0x257, 0x18c, 0x18b, 0x0, 0x1dd, 0x259,
9879     0x25b, 0x192, 0x191, 0x260, 0x263, 0x3d9, 0x269, 0x268,
9880     0x199, 0x198, 0x51, 0x0, 0x26f, 0x272, 0x0, 0x275,
9881     0x1a1, 0x1a0, 0x1a3, 0x1a2, 0x1a5, 0x1a4, 0x280, 0x1a8,
9882     0x1a7, 0x283, 0, 0x0, 0x1ad, 0x1ac, 0x288, 0x1b0,
9883     0x1af, 0x28a, 0x28b, 0x1b4, 0x1b3, 0x1b6, 0x1b5, 0x292,
9884     0x1b9, 0x1b8, 0x0, 0, 0x1bd, 0x1bc, 0, 0,
9885     0, 0, 0, 0, 0x1c6, 0, 0x1c4, 0x1c9,
9886     0, 0x1c7, 0x1cc, 0, 0x1ca, 0x1ce, 0x1cd, 0x1d0,
9887     0x1cf, 0x1d2, 0x1d1, 0x1d4, 0x1d3, 0x1d6, 0x1d5, 0x1d8,
9888     0x1d7, 0x1da, 0x1d9, 0x1dc, 0x1db, 0x18e, 0x1df, 0x1de,
9889     0x1e1, 0x1e0, 0x1e3, 0x1e2, 0x1e5, 0x1e4, 0x1e7, 0x1e6,
9890     0x1e9, 0x1e8, 0x1eb, 0x1ea, 0x1ed, 0x1ec, 0x1ef, 0x1ee,
9891     0x0, 0x1f3, 0, 0x1f1, 0x1f5, 0x1f4, 0, 0,
9892     0, 0, 0x1fb, 0x1fa, 0x1fd, 0x1fc, 0x1ff, 0x1fe,
9893 };
9894
9895 static const Q_UINT16 case_2 [] = {
9896     0x201, 0x200, 0x203, 0x202, 0x205, 0x204, 0x207, 0x206,
9897     0x209, 0x208, 0x20b, 0x20a, 0x20d, 0x20c, 0x20f, 0x20e,
9898     0x211, 0x210, 0x213, 0x212, 0x215, 0x214, 0x217, 0x216,
9899     0, 0, 0, 0, 0, 0, 0, 0,
9900     0, 0, 0, 0, 0, 0, 0, 0,
9901     0, 0, 0, 0, 0, 0, 0, 0,
9902     0, 0, 0, 0, 0, 0, 0, 0,
9903     0, 0, 0, 0, 0, 0, 0, 0,
9904     0, 0, 0, 0, 0, 0, 0, 0,
9905     0, 0, 0, 0, 0, 0, 0, 0,
9906     0x0, 0x0, 0x0, 0x181, 0x186, 0x0, 0x189, 0x18a,
9907     0x0, 0x18f, 0x0, 0x190, 0x0, 0x0, 0x0, 0x0,
9908     0x193, 0x0, 0x0, 0x194, 0x0, 0x0, 0x631, 0x579,
9909     0x197, 0x196, 0x0, 0x0, 0x0, 0x0, 0x0, 0x19c,
9910     0x0, 0x0, 0x19d, 0x0, 0x0, 0x19f, 0x0, 0x0,
9911     0x0, 0x0, 0x7e1, 0x0, 0x0, 0x0, 0x0, 0x0,
9912     0x1a6, 0x0, 0x0, 0x1a9, 0x0, 0x0, 0x0, 0x0,
9913     0x1ae, 0x0, 0x1b1, 0x1b2, 0x0, 0xa21, 0x971, 0x0,
9914     0x0, 0x0, 0x1b7, 0x0, 0x0, 0x0, 0x0, 0x0,
9915     0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
9916     0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
9917     0x0, 0, 0, 0, 0, 0, 0, 0,
9918     0, 0, 0, 0, 0, 0, 0, 0,
9919     0, 0, 0, 0, 0, 0, 0, 0,
9920     0, 0, 0, 0, 0, 0, 0, 0,
9921     0, 0, 0, 0, 0, 0, 0, 0,
9922     0, 0, 0, 0, 0, 0, 0, 0,
9923     0, 0, 0, 0, 0, 0, 0, 0,
9924     0, 0, 0, 0, 0, 0, 0, 0,
9925     0, 0, 0, 0, 0, 0, 0, 0,
9926     0, 0, 0, 0, 0, 0, 0, 0,
9927     0, 0, 0, 0, 0, 0, 0, 0,
9928 };
9929
9930 static const Q_UINT16 case_3 [] = {
9931     0, 0, 0, 0, 0, 0, 0, 0,
9932     0, 0, 0, 0, 0, 0, 0, 0,
9933     0, 0, 0, 0, 0, 0, 0, 0,
9934     0, 0, 0, 0, 0, 0, 0, 0,
9935     0, 0, 0, 0, 0, 0, 0, 0,
9936     0, 0, 0, 0, 0, 0, 0, 0,
9937     0, 0, 0, 0, 0, 0, 0, 0,
9938     0, 0, 0, 0, 0, 0, 0, 0,
9939     0, 0, 0, 0, 0, 0, 0, 0,
9940     0, 0, 0, 0, 0, 0, 0, 0,
9941     0, 0, 0, 0, 0, 0, 0, 0,
9942     0, 0, 0, 0, 0, 0, 0, 0,
9943     0, 0, 0, 0, 0, 0, 0, 0,
9944     0, 0, 0, 0, 0, 0, 0, 0,
9945     0, 0, 0, 0, 0, 0, 0, 0,
9946     0, 0, 0, 0, 0, 0, 0, 0,
9947     0, 0, 0, 0, 0, 0, 0x3ac, 0,
9948     0x3ad, 0x3ae, 0x3af, 0, 0x3cc, 0, 0x3cd, 0x3ce,
9949     0x0, 0x3b1, 0x3b2, 0x3b3, 0x3b4, 0x3b5, 0x3b6, 0x3b7,
9950     0x3b8, 0x3b9, 0x3ba, 0x3bb, 0x3bc, 0x3bd, 0x3be, 0x3bf,
9951     0x3c0, 0x3c1, 0, 0x3c3, 0x3c4, 0x3c5, 0x3c6, 0x3c7,
9952     0x3c8, 0x3c9, 0x3ca, 0x3cb, 0x386, 0x388, 0x389, 0x38a,
9953     0x0, 0x391, 0x392, 0x393, 0x394, 0x395, 0x396, 0x397,
9954     0x398, 0x399, 0x39a, 0x39b, 0x39c, 0x39d, 0x39e, 0x39f,
9955     0x3a0, 0x3a1, 0x3a3, 0x3a3, 0x3a4, 0x3a5, 0x3a6, 0x3a7,
9956     0x3a8, 0x3a9, 0x3aa, 0x3ab, 0x38c, 0x38e, 0x38f, 0,
9957     0x392, 0x398, 0x0, 0x0, 0x0, 0x3a6, 0x3a0, 0,
9958     0, 0, 0x0, 0, 0x0, 0, 0x0, 0,
9959     0x0, 0, 0x3e3, 0x3e2, 0x3e5, 0x3e4, 0x3e7, 0x3e6,
9960     0x3e9, 0x3e8, 0x3eb, 0x3ea, 0x3ed, 0x3ec, 0x3ef, 0x3ee,
9961     0x39a, 0x3a1, 0x3a3, 0, 0, 0, 0, 0,
9962     0, 0, 0, 0, 0, 0, 0, 0,
9963 };
9964
9965 static const Q_UINT16 case_4 [] = {
9966     0, 0x451, 0x452, 0x453, 0x454, 0x455, 0x456, 0x457,
9967     0x458, 0x459, 0x45a, 0x45b, 0x45c, 0, 0x45e, 0x45f,
9968     0x430, 0x431, 0x432, 0x433, 0x434, 0x435, 0x436, 0x437,
9969     0x438, 0x439, 0x43a, 0x43b, 0x43c, 0x43d, 0x43e, 0x43f,
9970     0x440, 0x441, 0x442, 0x443, 0x444, 0x445, 0x446, 0x447,
9971     0x448, 0x449, 0x44a, 0x44b, 0x44c, 0x44d, 0x44e, 0x44f,
9972     0x410, 0x411, 0x412, 0x413, 0x414, 0x415, 0x416, 0x417,
9973     0x418, 0x419, 0x41a, 0x41b, 0x41c, 0x41d, 0x41e, 0x41f,
9974     0x420, 0x421, 0x422, 0x423, 0x424, 0x425, 0x426, 0x427,
9975     0x428, 0x429, 0x42a, 0x42b, 0x42c, 0x42d, 0x42e, 0x42f,
9976     0, 0x401, 0x402, 0x403, 0x404, 0x405, 0x406, 0x407,
9977     0x408, 0x409, 0x40a, 0x40b, 0x40c, 0, 0x40e, 0x40f,
9978     0x461, 0x460, 0x463, 0x462, 0x465, 0x464, 0x467, 0x466,
9979     0x469, 0x468, 0x46b, 0x46a, 0x46d, 0x46c, 0x46f, 0x46e,
9980     0x471, 0x470, 0x473, 0x472, 0x475, 0x474, 0x477, 0x476,
9981     0x479, 0x478, 0x47b, 0x47a, 0x47d, 0x47c, 0x47f, 0x47e,
9982     0x481, 0x480, 0, 0, 0, 0, 0, 0,
9983     0, 0, 0, 0, 0, 0, 0, 0,
9984     0x491, 0x490, 0x493, 0x492, 0x495, 0x494, 0x497, 0x496,
9985     0x499, 0x498, 0x49b, 0x49a, 0x49d, 0x49c, 0x49f, 0x49e,
9986     0x4a1, 0x4a0, 0x4a3, 0x4a2, 0x4a5, 0x4a4, 0x4a7, 0x4a6,
9987     0x4a9, 0x4a8, 0x4ab, 0x4aa, 0x4ad, 0x4ac, 0x4af, 0x4ae,
9988     0x4b1, 0x4b0, 0x4b3, 0x4b2, 0x4b5, 0x4b4, 0x4b7, 0x4b6,
9989     0x4b9, 0x4b8, 0x4bb, 0x4ba, 0x4bd, 0x4bc, 0x4bf, 0x4be,
9990     0, 0x4c2, 0x4c1, 0x4c4, 0x4c3, 0, 0, 0x4c8,
9991     0x4c7, 0, 0, 0x4cc, 0x4cb, 0, 0, 0,
9992     0x4d1, 0x4d0, 0x4d3, 0x4d2, 0x4d5, 0x4d4, 0x4d7, 0x4d6,
9993     0x4d9, 0x4d8, 0x4db, 0x4da, 0x4dd, 0x4dc, 0x4df, 0x4de,
9994     0x4e1, 0x4e0, 0x4e3, 0x4e2, 0x4e5, 0x4e4, 0x4e7, 0x4e6,
9995     0x4e9, 0x4e8, 0x4eb, 0x4ea, 0, 0, 0x4ef, 0x4ee,
9996     0x4f1, 0x4f0, 0x4f3, 0x4f2, 0x4f5, 0x4f4, 0, 0,
9997     0x4f9, 0x4f8, 0, 0, 0, 0, 0, 0,
9998 };
9999
10000 static const Q_UINT16 case_5 [] = {
10001     0, 0, 0, 0, 0, 0, 0, 0,
10002     0, 0, 0, 0, 0, 0, 0, 0,
10003     0, 0, 0, 0, 0, 0, 0, 0,
10004     0, 0, 0, 0, 0, 0, 0, 0,
10005     0, 0, 0, 0, 0, 0, 0, 0,
10006     0, 0, 0, 0, 0, 0, 0, 0,
10007     0, 0x561, 0x562, 0x563, 0x564, 0x565, 0x566, 0x567,
10008     0x568, 0x569, 0x56a, 0x56b, 0x56c, 0x56d, 0x56e, 0x56f,
10009     0x570, 0x571, 0x572, 0x573, 0x574, 0x575, 0x576, 0x577,
10010     0x578, 0x579, 0x57a, 0x57b, 0x57c, 0x57d, 0x57e, 0x57f,
10011     0x580, 0x581, 0x582, 0x583, 0x584, 0x585, 0x586, 0,
10012     0, 0, 0, 0, 0, 0, 0, 0,
10013     0, 0x531, 0x532, 0x533, 0x534, 0x535, 0x536, 0x537,
10014     0x538, 0x539, 0x53a, 0x53b, 0x53c, 0x53d, 0x53e, 0x53f,
10015     0x540, 0x541, 0x542, 0x543, 0x544, 0x545, 0x546, 0x547,
10016     0x548, 0x549, 0x54a, 0x54b, 0x54c, 0x54d, 0x54e, 0x54f,
10017     0x550, 0x551, 0x552, 0x553, 0x554, 0x555, 0x556, 0x0,
10018     0, 0, 0, 0, 0, 0, 0, 0,
10019     0, 0, 0, 0, 0, 0, 0, 0,
10020     0, 0, 0, 0, 0, 0, 0, 0,
10021     0, 0, 0, 0, 0, 0, 0, 0,
10022     0, 0, 0, 0, 0, 0, 0, 0,
10023     0, 0, 0, 0, 0, 0, 0, 0,
10024     0, 0, 0, 0, 0, 0, 0, 0,
10025     0, 0, 0, 0, 0, 0, 0, 0,
10026     0, 0, 0, 0, 0, 0, 0, 0,
10027     0, 0, 0, 0, 0, 0, 0, 0,
10028     0, 0, 0, 0, 0, 0, 0, 0,
10029     0, 0, 0, 0, 0, 0, 0, 0,
10030     0, 0, 0, 0, 0, 0, 0, 0,
10031     0, 0, 0, 0, 0, 0, 0, 0,
10032     0, 0, 0, 0, 0, 0, 0, 0,
10033 };
10034
10035 static const Q_UINT16 case_10 [] = {
10036     0, 0, 0, 0, 0, 0, 0, 0,
10037     0, 0, 0, 0, 0, 0, 0, 0,
10038     0, 0, 0, 0, 0, 0, 0, 0,
10039     0, 0, 0, 0, 0, 0, 0, 0,
10040     0, 0, 0, 0, 0, 0, 0, 0,
10041     0, 0, 0, 0, 0, 0, 0, 0,
10042     0, 0, 0, 0, 0, 0, 0, 0,
10043     0, 0, 0, 0, 0, 0, 0, 0,
10044     0, 0, 0, 0, 0, 0, 0, 0,
10045     0, 0, 0, 0, 0, 0, 0, 0,
10046     0, 0, 0, 0, 0, 0, 0, 0,
10047     0, 0, 0, 0, 0, 0, 0, 0,
10048     0, 0, 0, 0, 0, 0, 0, 0,
10049     0, 0, 0, 0, 0, 0, 0, 0,
10050     0, 0, 0, 0, 0, 0, 0, 0,
10051     0, 0, 0, 0, 0, 0, 0, 0,
10052     0, 0, 0, 0, 0, 0, 0, 0,
10053     0, 0, 0, 0, 0, 0, 0, 0,
10054     0, 0, 0, 0, 0, 0, 0, 0,
10055     0, 0, 0, 0, 0, 0, 0, 0,
10056     0x10d0, 0x10d1, 0x10d2, 0x10d3, 0x10d4, 0x10d5, 0x10d6, 0x10d7,
10057     0x10d8, 0x10d9, 0x10da, 0x10db, 0x10dc, 0x10dd, 0x10de, 0x10df,
10058     0x10e0, 0x10e1, 0x10e2, 0x10e3, 0x10e4, 0x10e5, 0x10e6, 0x10e7,
10059     0x10e8, 0x10e9, 0x10ea, 0x10eb, 0x10ec, 0x10ed, 0x10ee, 0x10ef,
10060     0x10f0, 0x10f1, 0x10f2, 0x10f3, 0x10f4, 0x10f5, 0, 0,
10061     0, 0, 0, 0, 0, 0, 0, 0,
10062     0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
10063     0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
10064     0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
10065     0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
10066     0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0,
10067     0, 0, 0, 0, 0, 0, 0, 0,
10068 };
10069
10070 static const Q_UINT16 case_1e [] = {
10071     0x1e01, 0x1e00, 0x1e03, 0x1e02, 0x1e05, 0x1e04, 0x1e07, 0x1e06,
10072     0x1e09, 0x1e08, 0x1e0b, 0x1e0a, 0x1e0d, 0x1e0c, 0x1e0f, 0x1e0e,
10073     0x1e11, 0x1e10, 0x1e13, 0x1e12, 0x1e15, 0x1e14, 0x1e17, 0x1e16,
10074     0x1e19, 0x1e18, 0x1e1b, 0x1e1a, 0x1e1d, 0x1e1c, 0x1e1f, 0x1e1e,
10075     0x1e21, 0x1e20, 0x1e23, 0x1e22, 0x1e25, 0x1e24, 0x1e27, 0x1e26,
10076     0x1e29, 0x1e28, 0x1e2b, 0x1e2a, 0x1e2d, 0x1e2c, 0x1e2f, 0x1e2e,
10077     0x1e31, 0x1e30, 0x1e33, 0x1e32, 0x1e35, 0x1e34, 0x1e37, 0x1e36,
10078     0x1e39, 0x1e38, 0x1e3b, 0x1e3a, 0x1e3d, 0x1e3c, 0x1e3f, 0x1e3e,
10079     0x1e41, 0x1e40, 0x1e43, 0x1e42, 0x1e45, 0x1e44, 0x1e47, 0x1e46,
10080     0x1e49, 0x1e48, 0x1e4b, 0x1e4a, 0x1e4d, 0x1e4c, 0x1e4f, 0x1e4e,
10081     0x1e51, 0x1e50, 0x1e53, 0x1e52, 0x1e55, 0x1e54, 0x1e57, 0x1e56,
10082     0x1e59, 0x1e58, 0x1e5b, 0x1e5a, 0x1e5d, 0x1e5c, 0x1e5f, 0x1e5e,
10083     0x1e61, 0x1e60, 0x1e63, 0x1e62, 0x1e65, 0x1e64, 0x1e67, 0x1e66,
10084     0x1e69, 0x1e68, 0x1e6b, 0x1e6a, 0x1e6d, 0x1e6c, 0x1e6f, 0x1e6e,
10085     0x1e71, 0x1e70, 0x1e73, 0x1e72, 0x1e75, 0x1e74, 0x1e77, 0x1e76,
10086     0x1e79, 0x1e78, 0x1e7b, 0x1e7a, 0x1e7d, 0x1e7c, 0x1e7f, 0x1e7e,
10087     0x1e81, 0x1e80, 0x1e83, 0x1e82, 0x1e85, 0x1e84, 0x1e87, 0x1e86,
10088     0x1e89, 0x1e88, 0x1e8b, 0x1e8a, 0x1e8d, 0x1e8c, 0x1e8f, 0x1e8e,
10089     0x1e91, 0x1e90, 0x1e93, 0x1e92, 0x1e95, 0x1e94, 0x0, 0x0,
10090     0x0, 0x0, 0x0, 0x1e60, 0, 0, 0, 0,
10091     0x1ea1, 0x1ea0, 0x1ea3, 0x1ea2, 0x1ea5, 0x1ea4, 0x1ea7, 0x1ea6,
10092     0x1ea9, 0x1ea8, 0x1eab, 0x1eaa, 0x1ead, 0x1eac, 0x1eaf, 0x1eae,
10093     0x1eb1, 0x1eb0, 0x1eb3, 0x1eb2, 0x1eb5, 0x1eb4, 0x1eb7, 0x1eb6,
10094     0x1eb9, 0x1eb8, 0x1ebb, 0x1eba, 0x1ebd, 0x1ebc, 0x1ebf, 0x1ebe,
10095     0x1ec1, 0x1ec0, 0x1ec3, 0x1ec2, 0x1ec5, 0x1ec4, 0x1ec7, 0x1ec6,
10096     0x1ec9, 0x1ec8, 0x1ecb, 0x1eca, 0x1ecd, 0x1ecc, 0x1ecf, 0x1ece,
10097     0x1ed1, 0x1ed0, 0x1ed3, 0x1ed2, 0x1ed5, 0x1ed4, 0x1ed7, 0x1ed6,
10098     0x1ed9, 0x1ed8, 0x1edb, 0x1eda, 0x1edd, 0x1edc, 0x1edf, 0x1ede,
10099     0x1ee1, 0x1ee0, 0x1ee3, 0x1ee2, 0x1ee5, 0x1ee4, 0x1ee7, 0x1ee6,
10100     0x1ee9, 0x1ee8, 0x1eeb, 0x1eea, 0x1eed, 0x1eec, 0x1eef, 0x1eee,
10101     0x1ef1, 0x1ef0, 0x1ef3, 0x1ef2, 0x1ef5, 0x1ef4, 0x1ef7, 0x1ef6,
10102     0x1ef9, 0x1ef8, 0, 0, 0, 0, 0, 0,
10103 };
10104
10105 static const Q_UINT16 case_1f [] = {
10106     0x1f08, 0x1f09, 0x1f0a, 0x1f0b, 0x1f0c, 0x1f0d, 0x1f0e, 0x1f0f,
10107     0x1f00, 0x1f01, 0x1f02, 0x1f03, 0x1f04, 0x1f05, 0x1f06, 0x1f07,
10108     0x1f18, 0x1f19, 0x1f1a, 0x1f1b, 0x1f1c, 0x1f1d, 0, 0,
10109     0x1f10, 0x1f11, 0x1f12, 0x1f13, 0x1f14, 0x1f15, 0, 0,
10110     0x1f28, 0x1f29, 0x1f2a, 0x1f2b, 0x1f2c, 0x1f2d, 0x1f2e, 0x1f2f,
10111     0x1f20, 0x1f21, 0x1f22, 0x1f23, 0x1f24, 0x1f25, 0x1f26, 0x1f27,
10112     0x1f38, 0x1f39, 0x1f3a, 0x1f3b, 0x1f3c, 0x1f3d, 0x1f3e, 0x1f3f,
10113     0x1f30, 0x1f31, 0x1f32, 0x1f33, 0x1f34, 0x1f35, 0x1f36, 0x1f37,
10114     0x1f48, 0x1f49, 0x1f4a, 0x1f4b, 0x1f4c, 0x1f4d, 0, 0,
10115     0x1f40, 0x1f41, 0x1f42, 0x1f43, 0x1f44, 0x1f45, 0, 0,
10116     0x0, 0x1f59, 0x0, 0x1f5b, 0x0, 0x1f5d, 0x0, 0x1f5f,
10117     0, 0x1f51, 0, 0x1f53, 0, 0x1f55, 0, 0x1f57,
10118     0x1f68, 0x1f69, 0x1f6a, 0x1f6b, 0x1f6c, 0x1f6d, 0x1f6e, 0x1f6f,
10119     0x1f60, 0x1f61, 0x1f62, 0x1f63, 0x1f64, 0x1f65, 0x1f66, 0x1f67,
10120     0x1fba, 0x1fbb, 0x1fc8, 0x1fc9, 0x1fca, 0x1fcb, 0x1fda, 0x1fdb,
10121     0x1ff8, 0x1ff9, 0x1fea, 0x1feb, 0x1ffa, 0x1ffb, 0, 0,
10122     0x1f88, 0x1f89, 0x1f8a, 0x1f8b, 0x1f8c, 0x1f8d, 0x1f8e, 0x1f8f,
10123     0x1f80, 0x1f81, 0x1f82, 0x1f83, 0x1f84, 0x1f85, 0x1f86, 0x1f87,
10124     0x1f98, 0x1f99, 0x1f9a, 0x1f9b, 0x1f9c, 0x1f9d, 0x1f9e, 0x1f9f,
10125     0x1f90, 0x1f91, 0x1f92, 0x1f93, 0x1f94, 0x1f95, 0x1f96, 0x1f97,
10126     0x1fa8, 0x1fa9, 0x1faa, 0x1fab, 0x1fac, 0x1fad, 0x1fae, 0x1faf,
10127     0x1fa0, 0x1fa1, 0x1fa2, 0x1fa3, 0x1fa4, 0x1fa5, 0x1fa6, 0x1fa7,
10128     0x1fb8, 0x1fb9, 0x0, 0x1fbc, 0x0, 0, 0x0, 0x0,
10129     0x1fb0, 0x1fb1, 0x1f70, 0x1f71, 0x1fb3, 0, 0x399, 0,
10130     0, 0, 0x0, 0x1fcc, 0x0, 0, 0x0, 0x0,
10131     0x1f72, 0x1f73, 0x1f74, 0x1f75, 0x1fc3, 0, 0, 0,
10132     0x1fd8, 0x1fd9, 0x0, 0x0, 0, 0, 0x0, 0x0,
10133     0x1fd0, 0x1fd1, 0x1f76, 0x1f77, 0, 0, 0, 0,
10134     0x1fe8, 0x1fe9, 0x0, 0x0, 0x0, 0x1fec, 0x0, 0x0,
10135     0x1fe0, 0x1fe1, 0x1f7a, 0x1f7b, 0x1fe5, 0, 0, 0,
10136     0, 0, 0x0, 0x1ffc, 0x0, 0, 0x0, 0x0,
10137     0x1f78, 0x1f79, 0x1f7c, 0x1f7d, 0x1ff3, 0, 0, 0,
10138 };
10139
10140 static const Q_UINT16 case_20 [] = {
10141     0, 0, 0, 0, 0, 0, 0, 0,
10142     0, 0, 0, 0, 0, 0, 0, 0,
10143     0, 0, 0, 0, 0, 0, 0, 0,
10144     0, 0, 0, 0, 0, 0, 0, 0,
10145     0, 0, 0, 0, 0, 0, 0, 0,
10146     0, 0, 0, 0, 0, 0, 0, 0,
10147     0, 0, 0, 0, 0, 0, 0, 0,
10148     0, 0, 0, 0, 0, 0, 0, 0,
10149     0, 0, 0, 0, 0, 0, 0, 0,
10150     0, 0, 0, 0, 0, 0, 0, 0,
10151     0, 0, 0, 0, 0, 0, 0, 0,
10152     0, 0, 0, 0, 0, 0, 0, 0,
10153     0, 0, 0, 0, 0, 0, 0, 0,
10154     0, 0, 0, 0, 0, 0, 0, 0,
10155     0, 0, 0, 0, 0, 0, 0, 0,
10156     0, 0, 0, 0, 0, 0, 0, 0x0,
10157     0, 0, 0, 0, 0, 0, 0, 0,
10158     0, 0, 0, 0, 0, 0, 0, 0,
10159     0, 0, 0, 0, 0, 0, 0, 0,
10160     0, 0, 0, 0, 0, 0, 0, 0,
10161     0, 0, 0, 0, 0, 0, 0, 0,
10162     0, 0, 0, 0, 0, 0, 0, 0,
10163     0, 0, 0, 0, 0, 0, 0, 0,
10164     0, 0, 0, 0, 0, 0, 0, 0,
10165     0, 0, 0, 0, 0, 0, 0, 0,
10166     0, 0, 0, 0, 0, 0, 0, 0,
10167     0, 0, 0, 0, 0, 0, 0, 0,
10168     0, 0, 0, 0, 0, 0, 0, 0,
10169     0, 0, 0, 0, 0, 0, 0, 0,
10170     0, 0, 0, 0, 0, 0, 0, 0,
10171     0, 0, 0, 0, 0, 0, 0, 0,
10172     0, 0, 0, 0, 0, 0, 0, 0,
10173 };
10174
10175 static const Q_UINT16 case_21 [] = {
10176     0, 0, 0x0, 0, 0, 0, 0, 0x0,
10177     0, 0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
10178     0x0, 0x0, 0x0, 0x0, 0, 0x0, 0, 0,
10179     0x761, 0x0, 0x0, 0x0, 0x0, 0x0, 0, 0,
10180     0, 0, 0, 0, 0x0, 0, 0x0, 0,
10181     0x0, 0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
10182     0x0, 0x0, 0, 0x0, 0x0, 0, 0, 0,
10183     0, 0, 0, 0, 0, 0, 0, 0,
10184     0, 0, 0, 0, 0, 0, 0, 0,
10185     0, 0, 0, 0, 0, 0, 0, 0,
10186     0, 0, 0, 0, 0, 0, 0, 0,
10187     0, 0, 0, 0, 0, 0, 0, 0,
10188     0, 0, 0, 0, 0, 0, 0, 0,
10189     0, 0, 0, 0, 0, 0, 0, 0,
10190     0, 0, 0, 0, 0, 0, 0, 0,
10191     0, 0, 0, 0, 0, 0, 0, 0,
10192     0, 0, 0, 0, 0, 0, 0, 0,
10193     0, 0, 0, 0, 0, 0, 0, 0,
10194     0, 0, 0, 0, 0, 0, 0, 0,
10195     0, 0, 0, 0, 0, 0, 0, 0,
10196     0, 0, 0, 0, 0, 0, 0, 0,
10197     0, 0, 0, 0, 0, 0, 0, 0,
10198     0, 0, 0, 0, 0, 0, 0, 0,
10199     0, 0, 0, 0, 0, 0, 0, 0,
10200     0, 0, 0, 0, 0, 0, 0, 0,
10201     0, 0, 0, 0, 0, 0, 0, 0,
10202     0, 0, 0, 0, 0, 0, 0, 0,
10203     0, 0, 0, 0, 0, 0, 0, 0,
10204     0, 0, 0, 0, 0, 0, 0, 0,
10205     0, 0, 0, 0, 0, 0, 0, 0,
10206     0, 0, 0, 0, 0, 0, 0, 0,
10207     0, 0, 0, 0, 0, 0, 0, 0,
10208 };
10209
10210 static const Q_UINT16 case_fb [] = {
10211     0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0,
10212     0, 0, 0, 0, 0, 0, 0, 0,
10213     0, 0, 0, 0x0, 0x0, 0x0, 0x0, 0x0,
10214     0, 0, 0, 0, 0, 0, 0, 0,
10215     0, 0, 0, 0, 0, 0, 0, 0,
10216     0, 0, 0, 0, 0, 0, 0, 0,
10217     0, 0, 0, 0, 0, 0, 0, 0,
10218     0, 0, 0, 0, 0, 0, 0, 0,
10219     0, 0, 0, 0, 0, 0, 0, 0,
10220     0, 0, 0, 0, 0, 0, 0, 0,
10221     0, 0, 0, 0, 0, 0, 0, 0,
10222     0, 0, 0, 0, 0, 0, 0, 0,
10223     0, 0, 0, 0, 0, 0, 0, 0,
10224     0, 0, 0, 0, 0, 0, 0, 0,
10225     0, 0, 0, 0, 0, 0, 0, 0,
10226     0, 0, 0, 0, 0, 0, 0, 0,
10227     0, 0, 0, 0, 0, 0, 0, 0,
10228     0, 0, 0, 0, 0, 0, 0, 0,
10229     0, 0, 0, 0, 0, 0, 0, 0,
10230     0, 0, 0, 0, 0, 0, 0, 0,
10231     0, 0, 0, 0, 0, 0, 0, 0,
10232     0, 0, 0, 0, 0, 0, 0, 0,
10233     0, 0, 0, 0, 0, 0, 0, 0,
10234     0, 0, 0, 0, 0, 0, 0, 0,
10235     0, 0, 0, 0, 0, 0, 0, 0,
10236     0, 0, 0, 0, 0, 0, 0, 0,
10237     0, 0, 0, 0, 0, 0, 0, 0,
10238     0, 0, 0, 0, 0, 0, 0, 0,
10239     0, 0, 0, 0, 0, 0, 0, 0,
10240     0, 0, 0, 0, 0, 0, 0, 0,
10241     0, 0, 0, 0, 0, 0, 0, 0,
10242     0, 0, 0, 0, 0, 0, 0, 0,
10243 };
10244
10245 static const Q_UINT16 case_ff [] = {
10246     0, 0, 0, 0, 0, 0, 0, 0,
10247     0, 0, 0, 0, 0, 0, 0, 0,
10248     0, 0, 0, 0, 0, 0, 0, 0,
10249     0, 0, 0, 0, 0, 0, 0, 0,
10250     0, 0xff41, 0xff42, 0xff43, 0xff44, 0xff45, 0xff46, 0xff47,
10251     0xff48, 0xff49, 0xff4a, 0xff4b, 0xff4c, 0xff4d, 0xff4e, 0xff4f,
10252     0xff50, 0xff51, 0xff52, 0xff53, 0xff54, 0xff55, 0xff56, 0xff57,
10253     0xff58, 0xff59, 0xff5a, 0, 0, 0, 0, 0,
10254     0, 0xff21, 0xff22, 0xff23, 0xff24, 0xff25, 0xff26, 0xff27,
10255     0xff28, 0xff29, 0xff2a, 0xff2b, 0xff2c, 0xff2d, 0xff2e, 0xff2f,
10256     0xff30, 0xff31, 0xff32, 0xff33, 0xff34, 0xff35, 0xff36, 0xff37,
10257     0xff38, 0xff39, 0xff3a, 0, 0, 0, 0, 0,
10258     0, 0, 0, 0, 0, 0, 0, 0,
10259     0, 0, 0, 0, 0, 0, 0, 0,
10260     0, 0, 0, 0, 0, 0, 0, 0,
10261     0, 0, 0, 0, 0, 0, 0, 0,
10262     0, 0, 0, 0, 0, 0, 0, 0,
10263     0, 0, 0, 0, 0, 0, 0, 0,
10264     0, 0, 0, 0, 0, 0, 0, 0,
10265     0, 0, 0, 0, 0, 0, 0, 0,
10266     0, 0, 0, 0, 0, 0, 0, 0,
10267     0, 0, 0, 0, 0, 0, 0, 0,
10268     0, 0, 0, 0, 0, 0, 0, 0,
10269     0, 0, 0, 0, 0, 0, 0, 0,
10270     0, 0, 0, 0, 0, 0, 0, 0,
10271     0, 0, 0, 0, 0, 0, 0, 0,
10272     0, 0, 0, 0, 0, 0, 0, 0,
10273     0, 0, 0, 0, 0, 0, 0, 0,
10274     0, 0, 0, 0, 0, 0, 0, 0,
10275     0, 0, 0, 0, 0, 0, 0, 0,
10276     0, 0, 0, 0, 0, 0, 0, 0,
10277     0, 0, 0, 0, 0, 0, 0, 0,
10278 };
10279
10280 static const Q_UINT16 * const case_info[256] = {
10281
10282     case_0, case_1, case_2, case_3, case_4, case_5, 0, 0,
10283     0, 0, 0, 0, 0, 0, 0, 0,
10284     case_10, 0, 0, 0, 0, 0, 0, 0,
10285     0, 0, 0, 0, 0, 0, case_1e, case_1f,
10286     case_20, case_21, 0, 0, 0, 0, 0, 0,
10287     0, 0, 0, 0, 0, 0, 0, 0,
10288     0, 0, 0, 0, 0, 0, 0, 0,
10289     0, 0, 0, 0, 0, 0, 0, 0,
10290     0, 0, 0, 0, 0, 0, 0, 0,
10291     0, 0, 0, 0, 0, 0, 0, 0,
10292     0, 0, 0, 0, 0, 0, 0, 0,
10293     0, 0, 0, 0, 0, 0, 0, 0,
10294     0, 0, 0, 0, 0, 0, 0, 0,
10295     0, 0, 0, 0, 0, 0, 0, 0,
10296     0, 0, 0, 0, 0, 0, 0, 0,
10297     0, 0, 0, 0, 0, 0, 0, 0,
10298     0, 0, 0, 0, 0, 0, 0, 0,
10299     0, 0, 0, 0, 0, 0, 0, 0,
10300     0, 0, 0, 0, 0, 0, 0, 0,
10301     0, 0, 0, 0, 0, 0, 0, 0,
10302     0, 0, 0, 0, 0, 0, 0, 0,
10303     0, 0, 0, 0, 0, 0, 0, 0,
10304     0, 0, 0, 0, 0, 0, 0, 0,
10305     0, 0, 0, 0, 0, 0, 0, 0,
10306     0, 0, 0, 0, 0, 0, 0, 0,
10307     0, 0, 0, 0, 0, 0, 0, 0,
10308     0, 0, 0, 0, 0, 0, 0, 0,
10309     0, 0, 0, 0, 0, 0, 0, 0,
10310     0, 0, 0, 0, 0, 0, 0, 0,
10311     0, 0, 0, 0, 0, 0, 0, 0,
10312     0, 0, 0, 0, 0, 0, 0, 0,
10313     0, 0, 0, case_fb, 0, 0, 0, case_ff,
10314 };
10315
10316 static const Q_INT8 num_0 [] = {
10317     -1, -1, -1, -1, -1, -1, -1, -1,
10318     -1, -1, -1, -1, -1, -1, -1, -1,
10319     -1, -1, -1, -1, -1, -1, -1, -1,
10320     -1, -1, -1, -1, -1, -1, -1, -1,
10321     -1, -1, -1, -1, -1, -1, -1, -1,
10322     -1, -1, -1, -1, -1, -1, -1, -1,
10323     0, 1, 2, 3, 4, 5, 6, 7,
10324     8, 9, -1, -1, -1, -1, -1, -1,
10325     -1, -1, -1, -1, -1, -1, -1, -1,
10326     -1, -1, -1, -1, -1, -1, -1, -1,
10327     -1, -1, -1, -1, -1, -1, -1, -1,
10328     -1, -1, -1, -1, -1, -1, -1, -1,
10329     -1, -1, -1, -1, -1, -1, -1, -1,
10330     -1, -1, -1, -1, -1, -1, -1, -1,
10331     -1, -1, -1, -1, -1, -1, -1, -1,
10332     -1, -1, -1, -1, -1, -1, -1, -1,
10333     -1, -1, -1, -1, -1, -1, -1, -1,
10334     -1, -1, -1, -1, -1, -1, -1, -1,
10335     -1, -1, -1, -1, -1, -1, -1, -1,
10336     -1, -1, -1, -1, -1, -1, -1, -1,
10337     -1, -1, -1, -1, -1, -1, -1, -1,
10338     -1, -1, -1, -1, -1, -1, -1, -1,
10339     -1, -1, 2, 3, -1, -1, -1, -1,
10340     -1, 1, -1, -1, -1, -1, -1, -1,
10341     -1, -1, -1, -1, -1, -1, -1, -1,
10342     -1, -1, -1, -1, -1, -1, -1, -1,
10343     -1, -1, -1, -1, -1, -1, -1, -1,
10344     -1, -1, -1, -1, -1, -1, -1, -1,
10345     -1, -1, -1, -1, -1, -1, -1, -1,
10346     -1, -1, -1, -1, -1, -1, -1, -1,
10347     -1, -1, -1, -1, -1, -1, -1, -1,
10348     -1, -1, -1, -1, -1, -1, -1, -1,
10349 };
10350
10351 static const Q_INT8 num_6 [] = {
10352     -1, -1, -1, -1, -1, -1, -1, -1,
10353     -1, -1, -1, -1, -1, -1, -1, -1,
10354     -1, -1, -1, -1, -1, -1, -1, -1,
10355     -1, -1, -1, -1, -1, -1, -1, -1,
10356     -1, -1, -1, -1, -1, -1, -1, -1,
10357     -1, -1, -1, -1, -1, -1, -1, -1,
10358     -1, -1, -1, -1, -1, -1, -1, -1,
10359     -1, -1, -1, -1, -1, -1, -1, -1,
10360     -1, -1, -1, -1, -1, -1, -1, -1,
10361     -1, -1, -1, -1, -1, -1, -1, -1,
10362     -1, -1, -1, -1, -1, -1, -1, -1,
10363     -1, -1, -1, -1, -1, -1, -1, -1,
10364     0, 1, 2, 3, 4, 5, 6, 7,
10365     8, 9, -1, -1, -1, -1, -1, -1,
10366     -1, -1, -1, -1, -1, -1, -1, -1,
10367     -1, -1, -1, -1, -1, -1, -1, -1,
10368     -1, -1, -1, -1, -1, -1, -1, -1,
10369     -1, -1, -1, -1, -1, -1, -1, -1,
10370     -1, -1, -1, -1, -1, -1, -1, -1,
10371     -1, -1, -1, -1, -1, -1, -1, -1,
10372     -1, -1, -1, -1, -1, -1, -1, -1,
10373     -1, -1, -1, -1, -1, -1, -1, -1,
10374     -1, -1, -1, -1, -1, -1, -1, -1,
10375     -1, -1, -1, -1, -1, -1, -1, -1,
10376     -1, -1, -1, -1, -1, -1, -1, -1,
10377     -1, -1, -1, -1, -1, -1, -1, -1,
10378     -1, -1, -1, -1, -1, -1, -1, -1,
10379     -1, -1, -1, -1, -1, -1, -1, -1,
10380     -1, -1, -1, -1, -1, -1, -1, -1,
10381     -1, -1, -1, -1, -1, -1, -1, -1,
10382     0, 1, 2, 3, 4, 5, 6, 7,
10383     8, 9, -1, -1, -1, -1, -1, -1,
10384 };
10385
10386 static const Q_INT8 num_9 [] = {
10387     -1, -1, -1, -1, -1, -1, -1, -1,
10388     -1, -1, -1, -1, -1, -1, -1, -1,
10389     -1, -1, -1, -1, -1, -1, -1, -1,
10390     -1, -1, -1, -1, -1, -1, -1, -1,
10391     -1, -1, -1, -1, -1, -1, -1, -1,
10392     -1, -1, -1, -1, -1, -1, -1, -1,
10393     -1, -1, -1, -1, -1, -1, -1, -1,
10394     -1, -1, -1, -1, -1, -1, -1, -1,
10395     -1, -1, -1, -1, -1, -1, -1, -1,
10396     -1, -1, -1, -1, -1, -1, -1, -1,
10397     -1, -1, -1, -1, -1, -1, -1, -1,
10398     -1, -1, -1, -1, -1, -1, -1, -1,
10399     -1, -1, -1, -1, -1, -1, 0, 1,
10400     2, 3, 4, 5, 6, 7, 8, 9,
10401     -1, -1, -1, -1, -1, -1, -1, -1,
10402     -1, -1, -1, -1, -1, -1, -1, -1,
10403     -1, -1, -1, -1, -1, -1, -1, -1,
10404     -1, -1, -1, -1, -1, -1, -1, -1,
10405     -1, -1, -1, -1, -1, -1, -1, -1,
10406     -1, -1, -1, -1, -1, -1, -1, -1,
10407     -1, -1, -1, -1, -1, -1, -1, -1,
10408     -1, -1, -1, -1, -1, -1, -1, -1,
10409     -1, -1, -1, -1, -1, -1, -1, -1,
10410     -1, -1, -1, -1, -1, -1, -1, -1,
10411     -1, -1, -1, -1, -1, -1, -1, -1,
10412     -1, -1, -1, -1, -1, -1, -1, -1,
10413     -1, -1, -1, -1, -1, -1, -1, -1,
10414     -1, -1, -1, -1, -1, -1, -1, -1,
10415     -1, -1, -1, -1, -1, -1, 0, 1,
10416     2, 3, 4, 5, 6, 7, 8, 9,
10417     -1, -1, -1, -1, -1, -1, -1, -1,
10418     -1, -1, -1, -1, -1, -1, -1, -1,
10419 };
10420
10421 static const Q_INT8 num_b [] = {
10422     -1, -1, -1, -1, -1, -1, -1, -1,
10423     -1, -1, -1, -1, -1, -1, -1, -1,
10424     -1, -1, -1, -1, -1, -1, -1, -1,
10425     -1, -1, -1, -1, -1, -1, -1, -1,
10426     -1, -1, -1, -1, -1, -1, -1, -1,
10427     -1, -1, -1, -1, -1, -1, -1, -1,
10428     -1, -1, -1, -1, -1, -1, -1, -1,
10429     -1, -1, -1, -1, -1, -1, -1, -1,
10430     -1, -1, -1, -1, -1, -1, -1, -1,
10431     -1, -1, -1, -1, -1, -1, -1, -1,
10432     -1, -1, -1, -1, -1, -1, -1, -1,
10433     -1, -1, -1, -1, -1, -1, -1, -1,
10434     -1, -1, -1, -1, -1, -1, 0, 1,
10435     2, 3, 4, 5, 6, 7, 8, 9,
10436     -1, -1, -1, -1, -1, -1, -1, -1,
10437     -1, -1, -1, -1, -1, -1, -1, -1,
10438     -1, -1, -1, -1, -1, -1, -1, -1,
10439     -1, -1, -1, -1, -1, -1, -1, -1,
10440     -1, -1, -1, -1, -1, -1, -1, -1,
10441     -1, -1, -1, -1, -1, -1, -1, -1,
10442     -1, -1, -1, -1, -1, -1, -1, -1,
10443     -1, -1, -1, -1, -1, -1, -1, -1,
10444     -1, -1, -1, -1, -1, -1, -1, -1,
10445     -1, -1, -1, -1, -1, -1, -1, -1,
10446     -1, -1, -1, -1, -1, -1, -1, -1,
10447     -1, -1, -1, -1, -1, -1, -1, -1,
10448     -1, -1, -1, -1, -1, -1, -1, -1,
10449     -1, -1, -1, -1, -1, -1, -1, -1,
10450     -1, -1, -1, -1, -1, -1, -1, 1,
10451     2, 3, 4, 5, 6, 7, 8, 9,
10452     -1, -1, -1, -1, -1, -1, -1, -1,
10453     -1, -1, -1, -1, -1, -1, -1, -1,
10454 };
10455
10456 static const Q_INT8 num_d [] = {
10457     -1, -1, -1, -1, -1, -1, -1, -1,
10458     -1, -1, -1, -1, -1, -1, -1, -1,
10459     -1, -1, -1, -1, -1, -1, -1, -1,
10460     -1, -1, -1, -1, -1, -1, -1, -1,
10461     -1, -1, -1, -1, -1, -1, -1, -1,
10462     -1, -1, -1, -1, -1, -1, -1, -1,
10463     -1, -1, -1, -1, -1, -1, -1, -1,
10464     -1, -1, -1, -1, -1, -1, -1, -1,
10465     -1, -1, -1, -1, -1, -1, -1, -1,
10466     -1, -1, -1, -1, -1, -1, -1, -1,
10467     -1, -1, -1, -1, -1, -1, -1, -1,
10468     -1, -1, -1, -1, -1, -1, -1, -1,
10469     -1, -1, -1, -1, -1, -1, 0, 1,
10470     2, 3, 4, 5, 6, 7, 8, 9,
10471     -1, -1, -1, -1, -1, -1, -1, -1,
10472     -1, -1, -1, -1, -1, -1, -1, -1,
10473     -1, -1, -1, -1, -1, -1, -1, -1,
10474     -1, -1, -1, -1, -1, -1, -1, -1,
10475     -1, -1, -1, -1, -1, -1, -1, -1,
10476     -1, -1, -1, -1, -1, -1, -1, -1,
10477     -1, -1, -1, -1, -1, -1, -1, -1,
10478     -1, -1, -1, -1, -1, -1, -1, -1,
10479     -1, -1, -1, -1, -1, -1, -1, -1,
10480     -1, -1, -1, -1, -1, -1, -1, -1,
10481     -1, -1, -1, -1, -1, -1, -1, -1,
10482     -1, -1, -1, -1, -1, -1, -1, -1,
10483     -1, -1, -1, -1, -1, -1, -1, -1,
10484     -1, -1, -1, -1, -1, -1, -1, -1,
10485     -1, -1, -1, -1, -1, -1, -1, -1,
10486     -1, -1, -1, -1, -1, -1, -1, -1,
10487     -1, -1, -1, -1, -1, -1, -1, -1,
10488     -1, -1, -1, -1, -1, -1, -1, -1,
10489 };
10490
10491 static const Q_INT8 num_e [] = {
10492     -1, -1, -1, -1, -1, -1, -1, -1,
10493     -1, -1, -1, -1, -1, -1, -1, -1,
10494     -1, -1, -1, -1, -1, -1, -1, -1,
10495     -1, -1, -1, -1, -1, -1, -1, -1,
10496     -1, -1, -1, -1, -1, -1, -1, -1,
10497     -1, -1, -1, -1, -1, -1, -1, -1,
10498     -1, -1, -1, -1, -1, -1, -1, -1,
10499     -1, -1, -1, -1, -1, -1, -1, -1,
10500     -1, -1, -1, -1, -1, -1, -1, -1,
10501     -1, -1, -1, -1, -1, -1, -1, -1,
10502     0, 1, 2, 3, 4, 5, 6, 7,
10503     8, 9, -1, -1, -1, -1, -1, -1,
10504     -1, -1, -1, -1, -1, -1, -1, -1,
10505     -1, -1, -1, -1, -1, -1, -1, -1,
10506     -1, -1, -1, -1, -1, -1, -1, -1,
10507     -1, -1, -1, -1, -1, -1, -1, -1,
10508     -1, -1, -1, -1, -1, -1, -1, -1,
10509     -1, -1, -1, -1, -1, -1, -1, -1,
10510     -1, -1, -1, -1, -1, -1, -1, -1,
10511     -1, -1, -1, -1, -1, -1, -1, -1,
10512     -1, -1, -1, -1, -1, -1, -1, -1,
10513     -1, -1, -1, -1, -1, -1, -1, -1,
10514     -1, -1, -1, -1, -1, -1, -1, -1,
10515     -1, -1, -1, -1, -1, -1, -1, -1,
10516     -1, -1, -1, -1, -1, -1, -1, -1,
10517     -1, -1, -1, -1, -1, -1, -1, -1,
10518     0, 1, 2, 3, 4, 5, 6, 7,
10519     8, 9, -1, -1, -1, -1, -1, -1,
10520     -1, -1, -1, -1, -1, -1, -1, -1,
10521     -1, -1, -1, -1, -1, -1, -1, -1,
10522     -1, -1, -1, -1, -1, -1, -1, -1,
10523     -1, -1, -1, -1, -1, -1, -1, -1,
10524 };
10525
10526 static const Q_INT8 num_f [] = {
10527     -1, -1, -1, -1, -1, -1, -1, -1,
10528     -1, -1, -1, -1, -1, -1, -1, -1,
10529     -1, -1, -1, -1, -1, -1, -1, -1,
10530     -1, -1, -1, -1, -1, -1, -1, -1,
10531     0, 1, 2, 3, 4, 5, 6, 7,
10532     8, 9, -1, -1, -1, -1, -1, -1,
10533     -1, -1, -1, -1, -1, -1, -1, -1,
10534     -1, -1, -1, -1, -1, -1, -1, -1,
10535     -1, -1, -1, -1, -1, -1, -1, -1,
10536     -1, -1, -1, -1, -1, -1, -1, -1,
10537     -1, -1, -1, -1, -1, -1, -1, -1,
10538     -1, -1, -1, -1, -1, -1, -1, -1,
10539     -1, -1, -1, -1, -1, -1, -1, -1,
10540     -1, -1, -1, -1, -1, -1, -1, -1,
10541     -1, -1, -1, -1, -1, -1, -1, -1,
10542     -1, -1, -1, -1, -1, -1, -1, -1,
10543     -1, -1, -1, -1, -1, -1, -1, -1,
10544     -1, -1, -1, -1, -1, -1, -1, -1,
10545     -1, -1, -1, -1, -1, -1, -1, -1,
10546     -1, -1, -1, -1, -1, -1, -1, -1,
10547     -1, -1, -1, -1, -1, -1, -1, -1,
10548     -1, -1, -1, -1, -1, -1, -1, -1,
10549     -1, -1, -1, -1, -1, -1, -1, -1,
10550     -1, -1, -1, -1, -1, -1, -1, -1,
10551     -1, -1, -1, -1, -1, -1, -1, -1,
10552     -1, -1, -1, -1, -1, -1, -1, -1,
10553     -1, -1, -1, -1, -1, -1, -1, -1,
10554     -1, -1, -1, -1, -1, -1, -1, -1,
10555     -1, -1, -1, -1, -1, -1, -1, -1,
10556     -1, -1, -1, -1, -1, -1, -1, -1,
10557     -1, -1, -1, -1, -1, -1, -1, -1,
10558     -1, -1, -1, -1, -1, -1, -1, -1,
10559 };
10560
10561 static const Q_INT8 num_20 [] = {
10562     -1, -1, -1, -1, -1, -1, -1, -1,
10563     -1, -1, -1, -1, -1, -1, -1, -1,
10564     -1, -1, -1, -1, -1, -1, -1, -1,
10565     -1, -1, -1, -1, -1, -1, -1, -1,
10566     -1, -1, -1, -1, -1, -1, -1, -1,
10567     -1, -1, -1, -1, -1, -1, -1, -1,
10568     -1, -1, -1, -1, -1, -1, -1, -1,
10569     -1, -1, -1, -1, -1, -1, -1, -1,
10570     -1, -1, -1, -1, -1, -1, -1, -1,
10571     -1, -1, -1, -1, -1, -1, -1, -1,
10572     -1, -1, -1, -1, -1, -1, -1, -1,
10573     -1, -1, -1, -1, -1, -1, -1, -1,
10574     -1, -1, -1, -1, -1, -1, -1, -1,
10575     -1, -1, -1, -1, -1, -1, -1, -1,
10576     0, -1, -1, -1, 4, 5, 6, 7,
10577     8, 9, -1, -1, -1, -1, -1, -1,
10578     0, 1, 2, 3, 4, 5, 6, 7,
10579     8, 9, -1, -1, -1, -1, -1, -1,
10580     -1, -1, -1, -1, -1, -1, -1, -1,
10581     -1, -1, -1, -1, -1, -1, -1, -1,
10582     -1, -1, -1, -1, -1, -1, -1, -1,
10583     -1, -1, -1, -1, -1, -1, -1, -1,
10584     -1, -1, -1, -1, -1, -1, -1, -1,
10585     -1, -1, -1, -1, -1, -1, -1, -1,
10586     -1, -1, -1, -1, -1, -1, -1, -1,
10587     -1, -1, -1, -1, -1, -1, -1, -1,
10588     -1, -1, -1, -1, -1, -1, -1, -1,
10589     -1, -1, -1, -1, -1, -1, -1, -1,
10590     -1, -1, -1, -1, -1, -1, -1, -1,
10591     -1, -1, -1, -1, -1, -1, -1, -1,
10592     -1, -1, -1, -1, -1, -1, -1, -1,
10593     -1, -1, -1, -1, -1, -1, -1, -1,
10594 };
10595
10596 static const Q_INT8 num_ff [] = {
10597     -1, -1, -1, -1, -1, -1, -1, -1,
10598     -1, -1, -1, -1, -1, -1, -1, -1,
10599     0, 1, 2, 3, 4, 5, 6, 7,
10600     8, 9, -1, -1, -1, -1, -1, -1,
10601     -1, -1, -1, -1, -1, -1, -1, -1,
10602     -1, -1, -1, -1, -1, -1, -1, -1,
10603     -1, -1, -1, -1, -1, -1, -1, -1,
10604     -1, -1, -1, -1, -1, -1, -1, -1,
10605     -1, -1, -1, -1, -1, -1, -1, -1,
10606     -1, -1, -1, -1, -1, -1, -1, -1,
10607     -1, -1, -1, -1, -1, -1, -1, -1,
10608     -1, -1, -1, -1, -1, -1, -1, -1,
10609     -1, -1, -1, -1, -1, -1, -1, -1,
10610     -1, -1, -1, -1, -1, -1, -1, -1,
10611     -1, -1, -1, -1, -1, -1, -1, -1,
10612     -1, -1, -1, -1, -1, -1, -1, -1,
10613     -1, -1, -1, -1, -1, -1, -1, -1,
10614     -1, -1, -1, -1, -1, -1, -1, -1,
10615     -1, -1, -1, -1, -1, -1, -1, -1,
10616     -1, -1, -1, -1, -1, -1, -1, -1,
10617     -1, -1, -1, -1, -1, -1, -1, -1,
10618     -1, -1, -1, -1, -1, -1, -1, -1,
10619     -1, -1, -1, -1, -1, -1, -1, -1,
10620     -1, -1, -1, -1, -1, -1, -1, -1,
10621     -1, -1, -1, -1, -1, -1, -1, -1,
10622     -1, -1, -1, -1, -1, -1, -1, -1,
10623     -1, -1, -1, -1, -1, -1, -1, -1,
10624     -1, -1, -1, -1, -1, -1, -1, -1,
10625     -1, -1, -1, -1, -1, -1, -1, -1,
10626     -1, -1, -1, -1, -1, -1, -1, -1,
10627     -1, -1, -1, -1, -1, -1, -1, -1,
10628     -1, -1, -1, -1, -1, -1, -1, -1,
10629 };
10630
10631 static const Q_INT8 * const decimal_info[256] = {
10632      num_0, 0, 0, 0, 0, 0, num_6, 0,
10633      0, num_9, num_9, num_b, num_9, num_d, num_e, num_f,
10634      0, 0, 0, 0, 0, 0, 0, 0,
10635      0, 0, 0, 0, 0, 0, 0, 0,
10636      num_20, 0, 0, 0, 0, 0, 0, 0,
10637      0, 0, 0, 0, 0, 0, 0, 0,
10638      0, 0, 0, 0, 0, 0, 0, 0,
10639      0, 0, 0, 0, 0, 0, 0, 0,
10640      0, 0, 0, 0, 0, 0, 0, 0,
10641      0, 0, 0, 0, 0, 0, 0, 0,
10642      0, 0, 0, 0, 0, 0, 0, 0,
10643      0, 0, 0, 0, 0, 0, 0, 0,
10644      0, 0, 0, 0, 0, 0, 0, 0,
10645      0, 0, 0, 0, 0, 0, 0, 0,
10646      0, 0, 0, 0, 0, 0, 0, 0,
10647      0, 0, 0, 0, 0, 0, 0, 0,
10648      0, 0, 0, 0, 0, 0, 0, 0,
10649      0, 0, 0, 0, 0, 0, 0, 0,
10650      0, 0, 0, 0, 0, 0, 0, 0,
10651      0, 0, 0, 0, 0, 0, 0, 0,
10652      0, 0, 0, 0, 0, 0, 0, 0,
10653      0, 0, 0, 0, 0, 0, 0, 0,
10654      0, 0, 0, 0, 0, 0, 0, 0,
10655      0, 0, 0, 0, 0, 0, 0, 0,
10656      0, 0, 0, 0, 0, 0, 0, 0,
10657      0, 0, 0, 0, 0, 0, 0, 0,
10658      0, 0, 0, 0, 0, 0, 0, 0,
10659      0, 0, 0, 0, 0, 0, 0, 0,
10660      0, 0, 0, 0, 0, 0, 0, 0,
10661      0, 0, 0, 0, 0, 0, 0, 0,
10662      0, 0, 0, 0, 0, 0, 0, 0,
10663      0, 0, 0, 0, 0, 0, 0, num_ff,
10664 };
10665
10666 static const Q_UINT16 symmetricPairs[] = {
10667     0x0028, 0x0029, 0x0029, 0x0028, 0x003C, 0x003E, 0x003E, 0x003C,
10668     0x005B, 0x005D, 0x005D, 0x005B, 0x007B, 0x007D, 0x007D, 0x007B,
10669     0x2045, 0x2046, 0x2046, 0x2045, 0x207D, 0x207E, 0x207E, 0x207D,
10670     0x208D, 0x208E, 0x208E, 0x208D, 0x3008, 0x3009, 0x3009, 0x3008,
10671     0x300A, 0x300B, 0x300B, 0x300A, 0x300C, 0x300D, 0x300D, 0x300C,
10672     0x300E, 0x300F, 0x300F, 0x300E, 0x3010, 0x3011, 0x3011, 0x3010,
10673     0x3014, 0x3015, 0x3015, 0x3014, 0x3016, 0x3017, 0x3017, 0x3016,
10674     0x3018, 0x3019, 0x3019, 0x3018, 0x301A, 0x301B, 0x301B, 0x301A,
10675     0xFD3E, 0xFD3F, 0xFD3F, 0xFD3E, 0xFE59, 0xFE5A, 0xFE5A, 0xFE59,
10676     0xFE5B, 0xFE5C, 0xFE5C, 0xFE5B, 0xFE5D, 0xFE5E, 0xFE5E, 0xFE5D,
10677     0xFF08, 0xFF09, 0xFF09, 0xFF08, 0xFF3B, 0xFF3D, 0xFF3D, 0xFF3B,
10678     0xFF5B, 0xFF5D, 0xFF5D, 0xFF5B, 0xFF62, 0xFF63, 0xFF63, 0xFF62,
10679 };
10680
10681 static int symmetricPairsSize =
10682    sizeof(symmetricPairs)/sizeof(symmetricPairs[0]);
10683
10684 /*
10685  * ----------------------------------------------------------------------
10686  * End of unicode tables
10687  * ----------------------------------------------------------------------
10688  */
10689
10690 #endif
10691
10692
10693 static int ucstrcmp( const QString &as, const QString &bs )
10694 {
10695     const QChar *a = as.unicode();
10696     const QChar *b = bs.unicode();
10697     if ( a == b )
10698         return 0;
10699     if ( a == 0 )
10700         return 1;
10701     if ( b == 0 )
10702         return -1;
10703     int l=QMIN(as.length(),bs.length());
10704     while ( l-- && *a == *b )
10705         a++,b++;
10706     if ( l==-1 )
10707         return ( as.length()-bs.length() );
10708     return a->unicode() - b->unicode();
10709 }
10710
10711 static int ucstrncmp( const QChar *a, const QChar *b, int l )
10712 {
10713     while ( l-- && *a == *b )
10714         a++,b++;
10715     if ( l==-1 )
10716         return 0;
10717     return a->unicode() - b->unicode();
10718 }
10719
10720 static int ucstrnicmp( const QChar *a, const QChar *b, int l )
10721 {
10722     while ( l-- && a->lower() == b->lower() )
10723         a++,b++;
10724     if ( l==-1 )
10725         return 0;
10726     QChar al = a->lower();
10727     QChar bl = b->lower();
10728     return al.unicode() - bl.unicode();
10729 }
10730
10731 // NOT REVISED
10732 /*! \class QCharRef qstring.h
10733   \brief The QCharRef class is a helper class for QString.
10734
10735   It provides the ability to work on characters in a QString in a natural
10736   fashion.
10737
10738   When you get an object of type QCharRef, you can assign to it, which
10739   will operate on the string from which you got it.  That is its whole
10740   purpose in life.  It becomes invalid once further modifications are
10741   made to the string: If you want to keep it, copy it into a QChar.
10742
10743   Most of the QChar member functions also exist in QCharRef.  However,
10744   they are not explicitly documented here.
10745
10746   \sa QString::operator[]() QString::at() QChar
10747 */
10748
10749 /*! \class QChar qstring.h
10750
10751 \brief The QChar class provides a light-weight Unicode character.
10752
10753 Unicode characters are (so far) 16-bit entities without any markup or
10754 structure.  This class represents such an entity.  It is rather
10755 light-weight, so it can be used everywhere.  Most compilers treat it
10756 approximately like "short int".  (In a few years, it may be necessary
10757 to make QChar 32-bit, once more than 65536 Unicode code points have
10758 been defined and come into use.)
10759
10760 QChar provides a full complement of testing/classification functions,
10761 conversion to and from other formats, from composed to decomposed
10762 unicode, and will try to compare and case-convert if you ask it to.
10763
10764 The classification functions include functions like those in ctype.h,
10765 but operating on the full range of unicode characters.  They all
10766 return TRUE if the character is a certain type of character, and FALSE
10767 otherwise.
10768
10769 These functions are: isNull() (returns TRUE if the character is
10770 U+0000), isPrint() (TRUE if the character is any sort of printable
10771 character, including whitespace), isPunct() (any sort of punctation),
10772 isMark() (Unicode Marks), isLetter (letters), isNumber() (any sort of
10773 numeric characters), isLetterOrNumber(),  and isDigit() (decimal digits).
10774 All of these are wrappers around category(), which returns the
10775 unicode-defined category of each character.
10776
10777 QChar further provides direction(), which indicates the "natural"
10778 writing direction of this character, joining(), which indicates how
10779 this character joins with its neighbors (needed mostly for Arabic)
10780 and finally mirrored(), which indicates whether this character needs
10781 to be mirrored when it is printed in its unnatural writing
10782 direction.
10783
10784 Composed Unicode characters (like &aring;) can be converted to
10785 decomposed Unicode ("a" followed by "ring above") using
10786 decomposition().
10787
10788 In Unicode, comparison is not necessarily possible, and case
10789 conversion is at best very hard.  Unicode, covering the "entire"
10790 globe, also includes a globe-sized collection of case and sorting
10791 problems.  Qt tries, but not very hard: operator== and friends will do
10792 comparison based purely on the numeric Unicode value (code point) of
10793 the characters, and upper() and lower() will do case changes when the
10794 character has a well-defined upper/lower-case equivalent. There is no
10795 provision for locale-dependent case folding rules or comparison: These
10796 functions are meant to be fast, so they can be used unambiguously in
10797 data structures.
10798
10799 The conversion functions include unicode() (to a scalar), latin1() (to
10800 scalar, but converts all non-Latin1 characters to 0), row() (gives the
10801 Unicode row), cell() (gives the unicode cell), digitValue() (gives the
10802 integer value of any of the numerous digit characters), and a host of
10803 constructors.
10804
10805 \sa QString QCharRef \link unicode.html About Unicode \endlink
10806 */
10807
10808 /*! \enum QChar::Category
10809
10810 This enum maps the Unicode character categories.  The currently known
10811 categories are: <ul>
10812
10813 <li> \c NoCategory - used when Qt is dazed and confused and cannot
10814 make sense of anything.
10815
10816 <li> \c Mark_NonSpacing - (Mn) -
10817
10818 <li> \c Mark_SpacingCombining - (Mc) -
10819
10820 <li> \c Mark_Enclosing - (Me) -
10821
10822 <li> \c Number_DecimalDigit - (Nd) -
10823
10824 <li> \c Number_Letter - (Nl) -
10825
10826 <li> \c Number_Other - (No) -
10827
10828 <li> \c Separator_Space - (Zs) -
10829
10830 <li> \c Separator_Line - (Zl) -
10831
10832 <li> \c Separator_Paragraph - (Zp) -
10833
10834 <li> \c Other_Control - (Cc) -
10835
10836 <li> \c Other_Format - (Cf) -
10837
10838 <li> \c Other_Surrogate - (Cs) -
10839
10840 <li> \c Other_PrivateUse - (Co) -
10841
10842 <li> \c Other_NotAssigned - (Cn) -
10843
10844 <li> \c Letter_Uppercase - (Lu) -
10845
10846 <li> \c Letter_Lowercase - (Ll) -
10847
10848 <li> \c Letter_Titlecase - (Lt) -
10849
10850 <li> \c Letter_Modifier - (Lm) -
10851
10852 <li> \c Letter_Other - (Lo) -
10853
10854 <li> \c Punctuation_Connector - (Pc) -
10855
10856 <li> \c Punctuation_Dask - (Pd) -
10857
10858 <li> \c Punctuation_Open - (Ps) -
10859
10860 <li> \c Punctuation_Close - (Pe) -
10861
10862 <li> \c Punctuation_InitialQuote - (Pi) -
10863
10864 <li> \c Punctuation_FinalQuote - (Pf) -
10865
10866 <li> \c Punctuation_Other - (Po) -
10867
10868 <li> \c Symbol_Math - (Sm) -
10869
10870 <li> \c Symbol_Currency - (Sc) -
10871
10872 <li> \c Symbol_Modifier - (Sk) -
10873
10874 <li> \c Symbol_Other - (So) -
10875
10876 </ul>
10877 */
10878
10879 /*! \enum QChar::Direction
10880
10881   This enum type defines the Unicode direction attributes.
10882   See <a href="http://www.unicode.org">the Unicode Standard</a>
10883   for a description of the values.
10884
10885   In order to conform to C/C++ naming conventions "Dir" is
10886   prepended to the codes used in The Unicode Standard.
10887 */
10888
10889 /*! \enum QChar::Decomposition
10890
10891   This enum type defines the Unicode decomposition attributes.
10892   See <a href="http://www.unicode.org">the Unicode Standard</a>
10893   for a description of the values.
10894 */
10895
10896 /*! \enum QChar::Joining
10897
10898   This enum type defines the Unicode decomposition attributes.
10899   See <a href="http://www.unicode.org">the Unicode Standard</a>
10900   for a description of the values.
10901 */
10902
10903
10904
10905 /*! \fn QChar::QChar()
10906
10907 Constructs a null QChar (one that isNull()).
10908 */
10909
10910
10911 /*! \fn QChar::QChar( char c )
10912
10913 Constructs a QChar corresponding to ASCII/Latin1 character \a c.
10914 */
10915
10916
10917 /*! \fn QChar::QChar( uchar c )
10918
10919 Constructs a QChar corresponding to ASCII/Latin1 character \a c.
10920 */
10921
10922
10923 /*! \fn QChar::QChar( uchar c, uchar r )
10924
10925 Constructs a QChar for Unicode cell \a c in row \a r.
10926 */
10927
10928
10929 /*! \fn QChar::QChar( const QChar& c )
10930
10931 Constructs a copy of \a c.  This is a deep copy, if such a
10932 light-weight object can be said to have deep copies.
10933 */
10934
10935
10936 /*! \fn QChar::QChar( ushort rc )
10937
10938 Constructs a QChar for the character with Unicode code point \a rc.
10939 */
10940
10941
10942 /*! \fn QChar::QChar( short rc )
10943
10944 Constructs a QChar for the character with Unicode code point \a rc.
10945 */
10946
10947
10948 /*! \fn QChar::QChar( uint rc )
10949
10950 Constructs a QChar for the character with Unicode code point \a rc.
10951 */
10952
10953
10954 /*! \fn QChar::QChar( int rc )
10955
10956 Constructs a QChar for the character with Unicode code point \a rc.
10957 */
10958
10959
10960 /*! \fn bool  QChar::networkOrdered ()
10961
10962   Returns TRUE if this character is in network byte order (MSB first),
10963   and FALSE if it is not.  This is a platform-dependent property, so
10964   we strongly advise against using this function in portable code.
10965 */
10966
10967
10968 /*!
10969   \fn bool QChar::isNull() const
10970   Returns TRUE if the characters is the unicode character 0x0000,
10971   ie. ASCII NUL.
10972 */
10973
10974 /*!
10975   \fn uchar QChar::cell () const
10976   Returns the cell (least significant byte) of the Unicode character.
10977 */
10978 /*!
10979   \fn uchar QChar::row () const
10980   Returns the row (most significant byte) of the Unicode character.
10981 */
10982 /*!
10983   \fn uchar& QChar::cell ()
10984   Returns a reference to the cell (least significant byte) of the Unicode character.
10985 */
10986 /*!
10987   \fn uchar& QChar::row ()
10988   Returns a reference to the row (most significant byte) of the Unicode character.
10989 */
10990
10991 /*!
10992   Returns whether the character is a printable character.  This is
10993   any character not of category Cc or Cn.  Note that this gives no indication
10994   of whether the character is available in some font.
10995 */
10996 bool QChar::isPrint() const
10997 {
10998     Category c = category();
10999     return !(c == Other_Control || c == Other_NotAssigned);
11000 }
11001
11002 /*!
11003   Returns whether the character is a separator
11004   character (Separator_* categories).
11005 */
11006 bool QChar::isSpace() const
11007 {
11008     if( !row() )
11009         if( cell() >= 9 && cell() <=13 ) return TRUE;
11010     Category c = category();
11011     return c >= Separator_Space && c <= Separator_Paragraph;
11012 }
11013
11014 /*!
11015   Returns whether the character is a mark (Mark_* categories).
11016 */
11017 bool QChar::isMark() const
11018 {
11019     Category c = category();
11020     return c >= Mark_NonSpacing && c <= Mark_Enclosing;
11021 }
11022
11023 /*!
11024   Returns whether the character is punctuation (Punctuation_* categories).
11025 */
11026 bool QChar::isPunct() const
11027 {
11028     Category c = category();
11029     return (c >= Punctuation_Connector && c <= Punctuation_Other);
11030 }
11031
11032 /*!
11033   Returns whether the character is a letter (Letter_* categories).
11034 */
11035 bool QChar::isLetter() const
11036 {
11037     Category c = category();
11038     return (c >= Letter_Uppercase && c <= Letter_Other);
11039 }
11040
11041 /*!
11042   Returns whether the character is a number (of any sort - Number_* categories).
11043
11044   \sa isDigit()
11045 */
11046 bool QChar::isNumber() const
11047 {
11048     Category c = category();
11049     return c >= Number_DecimalDigit && c <= Number_Other;
11050 }
11051
11052 /*!
11053   Returns whether the character is a letter or number (Letter_* or Number_* categories).
11054 */
11055 bool QChar::isLetterOrNumber() const
11056 {
11057     Category c = category();
11058     return (c >= Letter_Uppercase && c <= Letter_Other)
11059         || (c >= Number_DecimalDigit && c <= Number_Other);
11060 }
11061
11062
11063 /*!
11064   Returns whether the character is a decimal digit (Number_DecimalDigit).
11065   */
11066 bool QChar::isDigit() const
11067 {
11068     return (category() == Number_DecimalDigit);
11069 }
11070
11071 /*!
11072   Returns the numeric value of the digit, or -1 if the character is not
11073   a digit.
11074 */
11075 int QChar::digitValue() const
11076 {
11077 #ifndef QT_NO_UNICODETABLES
11078     const Q_INT8 *dec_row = decimal_info[row()];
11079     if( !dec_row )
11080         return -1;
11081     return decimal_info[row()][cell()];
11082 #else
11083     // ##### just latin1
11084     if ( rw != 0 || cl < '0' || cl > '9' )
11085         return -1;
11086     else
11087         return cl - '0';
11088 #endif
11089 }
11090
11091 /*!
11092   Returns the character category.
11093
11094   \sa Category
11095 */
11096 QChar::Category QChar::category() const
11097 {
11098 #ifndef QT_NO_UNICODETABLES
11099     return (Category)(unicode_info[row()][cell()]);
11100 #else
11101 // ### just ASCII
11102     if ( rw == 0 ) {
11103         return (Category)(ui_00[cell()]);
11104     }
11105     return Letter_Uppercase; //#######
11106 #endif
11107 }
11108
11109 /*!
11110   Returns the characters directionality.
11111
11112   \sa Direction
11113 */
11114 QChar::Direction QChar::direction() const
11115 {
11116 #ifndef QT_NO_UNICODETABLES
11117     const Q_UINT8 *rowp = direction_info[row()];
11118     if(!rowp) return QChar::DirL;
11119     return (Direction) ( *(rowp+cell()) &0x1f );
11120 #else
11121     return DirL;
11122 #endif
11123 }
11124
11125 /*!
11126   This function is not supported (it may change to use Unicode
11127   character classes).
11128
11129   Returns information about the joining properties of the
11130   character (needed for arabic).
11131 */
11132 QChar::Joining QChar::joining() const
11133 {
11134 #ifndef QT_NO_UNICODETABLES
11135     const Q_UINT8 *rowp = direction_info[row()];
11136     if ( !rowp )
11137         return QChar::OtherJoining;
11138     return (Joining) ((*(rowp+cell()) >> 5) &0x3);
11139 #else
11140     return OtherJoining;
11141 #endif
11142 }
11143
11144
11145 /*!
11146   Returns whether the character is a mirrored character (one that
11147   should be reversed if the text direction is reversed).
11148 */
11149 bool QChar::mirrored() const
11150 {
11151 #ifndef QT_NO_UNICODETABLES
11152     const Q_UINT8 *rowp = direction_info[row()];
11153     if ( !rowp )
11154         return FALSE;
11155     return *(rowp+cell())>128;
11156 #else
11157     return FALSE;
11158 #endif
11159 }
11160
11161 /*!
11162   Returns the mirrored char if this character is a mirrored char, the char
11163   itself otherwise
11164 */
11165 QChar QChar::mirroredChar() const
11166 {
11167 #ifndef QT_NO_UNICODETABLES
11168     if(!mirrored()) return *this;
11169
11170     int i;
11171     int c = unicode();
11172     for (i = 0; i < symmetricPairsSize; i += 2) {
11173         if (symmetricPairs[i] == c)
11174           return symmetricPairs[i+1];
11175     }
11176     return 0;
11177 #else
11178     return *this;
11179 #endif
11180 }
11181
11182 /*!
11183   Decomposes a character into its parts. Returns QString::null if
11184   no decomposition exists.
11185 */
11186 QString QChar::decomposition() const
11187 {
11188 #ifndef QT_NO_UNICODETABLES
11189     const Q_UINT16 *r = decomposition_info[row()];
11190     if(!r) return QString::null;
11191
11192     Q_UINT16 pos = r[cell()];
11193     if(!pos) return QString::null;
11194     pos+=2;
11195
11196     QString s;
11197     Q_UINT16 c;
11198     while((c = decomposition_map[pos++]) != 0) s += QChar(c);
11199
11200     return s;
11201 #else
11202     return null;
11203 #endif
11204 }
11205
11206 /*!
11207   Returns the tag defining the composition of the character.
11208   Returns QChar::Single if no decomposition exists.
11209 */
11210 QChar::Decomposition QChar::decompositionTag() const
11211 {
11212 #ifndef QT_NO_UNICODETABLES
11213     const Q_UINT16 *r = decomposition_info[row()];
11214     if(!r) return QChar::Single;
11215
11216     Q_UINT16 pos = r[cell()];
11217     if(!pos) return QChar::Single;
11218
11219     return (QChar::Decomposition) decomposition_map[pos];
11220 #else
11221     return Single; // ########### FIX eg. just latin1
11222 #endif
11223 }
11224
11225 /*!
11226   Returns the lowercase equivalent if the character is uppercase,
11227   or the character itself otherwise.
11228 */
11229 QChar QChar::lower() const
11230 {
11231 #ifndef QT_NO_UNICODETABLES
11232     if(category() != Letter_Uppercase) return *this;
11233     Q_UINT16 lower = *(case_info[row()]+cell());
11234     if(lower == 0) return *this;
11235     return lower;
11236 #else
11237     if (row())
11238         return *this;
11239     else
11240         return QChar(tolower(latin1()));
11241 #endif
11242 }
11243
11244 /*!
11245   Returns the uppercase equivalent if the character is lowercase,
11246   or the character itself otherwise.
11247 */
11248 QChar QChar::upper() const
11249 {
11250 #ifndef QT_NO_UNICODETABLES
11251     if(category() != Letter_Lowercase) return *this;
11252     Q_UINT16 upper = *(case_info[row()]+cell());
11253     if(upper == 0) return *this;
11254     return upper;
11255 #else
11256     if (row())
11257         return *this;
11258     else
11259         return QChar(toupper(latin1()));
11260 #endif
11261 }
11262
11263 /*!
11264   \fn QChar::operator char() const
11265
11266   Returns the Latin1 character equivalent to the QChar,
11267   or 0.  This is mainly useful for non-internationalized software.
11268
11269   \sa unicode()
11270 */
11271
11272 /*!
11273   \fn ushort QChar::unicode() const
11274
11275   Returns the numeric Unicode value equal to the QChar.  Normally, you
11276   should use QChar objects as they are equivalent, but for some low-level
11277   tasks (eg. indexing into an array of Unicode information), this function
11278   is useful.
11279 */
11280
11281 /*****************************************************************************
11282   Documentation of QChar related functions
11283  *****************************************************************************/
11284
11285 /*!
11286   \fn int operator==( QChar c1, QChar c2 )
11287   \relates QChar
11288
11289   Returns TRUE if \a c1 and \a c2 are the same Unicode character.
11290 */
11291
11292 /*!
11293   \fn int operator==( char ch, QChar c )
11294   \relates QChar
11295
11296   Returns TRUE if \a c is the ASCII/Latin1 character \a ch.
11297 */
11298
11299 /*!
11300   \fn int operator==( QChar c, char ch )
11301   \relates QChar
11302
11303   Returns TRUE if \a c is the ASCII/Latin1 character \a ch.
11304 */
11305
11306 /*!
11307   \fn int operator!=( QChar c1, QChar c2 )
11308   \relates QChar
11309
11310   Returns TRUE if \a c1 and \a c2 are not the same Unicode character.
11311 */
11312
11313 /*!
11314   \fn int operator!=( char ch, QChar c )
11315   \relates QChar
11316
11317   Returns TRUE if \a c is not the ASCII/Latin1 character \a ch.
11318 */
11319
11320 /*!
11321   \fn int operator!=( QChar c, char ch )
11322   \relates QChar
11323
11324   Returns TRUE if \a c is not the ASCII/Latin1 character \a ch.
11325 */
11326
11327 /*!
11328   \fn int operator<=( QChar c1, QChar c2 )
11329   \relates QChar
11330
11331   Returns TRUE if the numeric Unicode value of \a c1 is less than that
11332   of \a c2, or they are the same Unicode character.
11333 */
11334
11335 /*!
11336   \fn int operator<=( QChar c, char ch )
11337   \relates QChar
11338
11339   Returns TRUE if the numeric Unicode value of \a c is less than or
11340   equal to that of the ASCII/Latin1 character \a ch.
11341 */
11342
11343 /*!
11344   \fn int operator<=( char ch, QChar c )
11345   \relates QChar
11346
11347   Returns TRUE if the numeric Unicode value of the ASCII/Latin1
11348   character \a ch is less than or equal to that of \a c.
11349 */
11350
11351 /*!
11352   \fn int operator>=( QChar c1, QChar c2 )
11353   \relates QChar
11354
11355   Returns TRUE if the numeric Unicode value of \a c1 is greater than that
11356   of \a c2, or they are the same Unicode character.
11357 */
11358
11359 /*!
11360   \fn int operator>=( QChar c, char ch )
11361   \relates QChar
11362
11363   Returns TRUE if the numeric Unicode value of \a c is greater than or
11364   equal to that of the ASCII/Latin1 character \a ch.
11365 */
11366
11367 /*!
11368   \fn int operator>=( char ch, QChar c )
11369   \relates QChar
11370
11371   Returns TRUE if the numeric Unicode value of the ASCII/Latin1
11372   character \a ch is greater than or equal to that of \a c.
11373 */
11374
11375 /*!
11376   \fn int operator<( QChar c1, QChar c2 )
11377   \relates QChar
11378
11379   Returns TRUE if the numeric Unicode value of \a c1 is less than that
11380   of \a c2.
11381 */
11382
11383 /*!
11384   \fn int operator<( QChar c, char ch )
11385   \relates QChar
11386
11387   Returns TRUE if the numeric Unicode value of \a c is less than that
11388   of the ASCII/Latin1 character \a ch.
11389 */
11390
11391 /*!
11392   \fn int operator<( char ch, QChar c )
11393   \relates QChar
11394
11395   Returns TRUE if the numeric Unicode value of the ASCII/Latin1
11396   character \a ch is less than that of \a c.
11397 */
11398
11399 /*!
11400   \fn int operator>( QChar c1, QChar c2 )
11401   \relates QChar
11402
11403   Returns TRUE if the numeric Unicode value of \a c1 is greater than
11404   that of \a c2.
11405 */
11406
11407 /*!
11408   \fn int operator>( QChar c, char ch )
11409   \relates QChar
11410
11411   Returns TRUE if the numeric Unicode value of \a c is greater than
11412   that of the ASCII/Latin1 character \a ch.
11413 */
11414
11415 /*!
11416   \fn int operator>( char ch, QChar c )
11417   \relates QChar
11418
11419   Returns TRUE if the numeric Unicode value of the ASCII/Latin1
11420   character \a ch is greater than that of \a c.
11421 */
11422
11423 #ifndef QT_NO_UNICODETABLES
11424
11425 // small class used internally in QString::Compose()
11426 class QLigature
11427 {
11428 public:
11429     QLigature( QChar c );
11430
11431     Q_UINT16 first() { cur = ligatures; return cur ? *cur : 0; }
11432     Q_UINT16 next() { return cur && *cur ? *(cur++) : 0; }
11433     Q_UINT16 current() { return cur ? *cur : 0; }
11434
11435     int match(QString & str, unsigned int index);
11436     QChar head();
11437     QChar::Decomposition tag();
11438
11439 private:
11440     Q_UINT16 *ligatures;
11441     Q_UINT16 *cur;
11442 };
11443
11444 QLigature::QLigature( QChar c )
11445 {
11446     const Q_UINT16 *r = ligature_info[c.row()];
11447     if( !r )
11448         ligatures = 0;
11449     else
11450     {
11451         const Q_UINT16 pos = r[c.cell()];
11452         ligatures = (Q_UINT16 *)&(ligature_map[pos]);
11453     }
11454     cur = ligatures;
11455 }
11456
11457 QChar QLigature::head()
11458 {
11459     if(current())
11460         return QChar(decomposition_map[current()+1]);
11461
11462     return QChar::null;
11463 }
11464
11465 QChar::Decomposition QLigature::tag()
11466 {
11467     if(current())
11468         return (QChar::Decomposition) decomposition_map[current()];
11469
11470     return QChar::Canonical;
11471 }
11472
11473 int QLigature::match(QString & str, unsigned int index)
11474 {
11475     unsigned int i=index;
11476
11477     if(!current()) return 0;
11478
11479     Q_UINT16 lig = current() + 2;
11480     Q_UINT16 ch;
11481
11482     while ((i < str.length()) && (ch = decomposition_map[lig])) {
11483         if (str[(int)i] != QChar(ch))
11484             return 0;
11485         i++; lig++;
11486     }
11487
11488     if (!decomposition_map[lig])
11489     {
11490         return i-index;
11491     }
11492     return 0;
11493 }
11494
11495 #endif
11496
11497 // this function is just used in QString::compose()
11498 static inline bool format(QChar::Decomposition tag, QString & str,
11499                           int index, int len)
11500 {
11501     unsigned int l = index + len;
11502     unsigned int r = index;
11503
11504     bool left = FALSE, right = FALSE;
11505
11506     left = ((l < str.length()) &&
11507             ((str[(int)l].joining() == QChar::Dual) ||
11508              (str[(int)l].joining() == QChar::Right)));
11509     if (r > 0) {
11510         r--;
11511         //printf("joining(right) = %d\n", str[(int)r].joining());
11512         right = (str[(int)r].joining() == QChar::Dual);
11513     }
11514
11515
11516     switch (tag) {
11517     case QChar::Medial:
11518         return (left & right);
11519     case QChar::Initial:
11520         return (left && !right);
11521     case QChar::Final:
11522         return (right);// && !left);
11523     case QChar::Isolated:
11524     default:
11525         return (!right && !left);
11526     }
11527 } // format()
11528
11529 /*
11530   QString::compose() and visual() were developed by Gordon Tisher
11531   <tisher@uniserve.ca>, with input from Lars Knoll <knoll@mpi-hd.mpg.de>,
11532   who developed the unicode data tables.
11533 */
11534 /*!
11535   Note that this function is not supported in Qt 2.0, and is merely
11536   for experimental and illustrative purposes.  It is mainly of interest
11537   to those experimenting with Arabic and other composition-rich texts.
11538
11539   Applies possible ligatures to a QString, useful when composition-rich
11540   text requires rendering with glyph-poor fonts, but also
11541   makes compositions such as QChar(0x0041) ('A') and QChar(0x0308)
11542   (Unicode accent diaresis) giving QChar(0x00c4) (German A Umlaut).
11543 */
11544 void QString::compose()
11545 {
11546 #ifndef QT_NO_UNICODETABLES
11547     unsigned int index=0, len;
11548     unsigned int cindex = 0;
11549
11550     QChar code, head;
11551
11552     QArray<QChar> dia;
11553
11554     QString composed = *this;
11555
11556     while (index < length()) {
11557         code = at(index);
11558         //printf("\n\nligature for 0x%x:\n", code.unicode());
11559         QLigature ligature(code);
11560         ligature.first();
11561         while(ligature.current()) {
11562             if ((len = ligature.match(*this, index)) != 0) {
11563                 head = ligature.head();
11564                 unsigned short code = head.unicode();
11565                 // we exclude Arabic presentation forms A and a few
11566                 // other ligatures, which are undefined in most fonts
11567                 if(!(code > 0xfb50 && code < 0xfe80) &&
11568                    !(code > 0xfb00 && code < 0xfb2a)) {
11569                                 // joining info is only needed for arabic
11570                     if (format(ligature.tag(), *this, index, len)) {
11571                         //printf("using ligature 0x%x, len=%d\n",code,len);
11572                         // replace letter
11573                         composed.replace(cindex, len, QChar(head));
11574                         index += len-1;
11575                         // we continue searching in case we have a final
11576                         // form because medial ones are preferred.
11577                         if ( len != 1 || ligature.tag() !=QChar::Final )
11578                             break;
11579                     }
11580                 }
11581             }
11582             ligature.next();
11583         }
11584         cindex++;
11585         index++;
11586     }
11587     *this = composed;
11588 #endif
11589 }
11590
11591 static QChar LRM ((ushort)0x200e);
11592 static QChar RLM ((ushort)0x200f);
11593 static QChar LRE ((ushort)0x202a);
11594 static QChar RLE ((ushort)0x202b);
11595 static QChar RLO ((ushort)0x202e);
11596 static QChar LRO ((ushort)0x202d);
11597 static QChar PDF ((ushort)0x202c);
11598
11599 #if 0
11600 static inline bool is_arabic(unsigned short x) {
11601     return (((x >= 0x0600) && (x <= 0x07bf)) ||
11602             ((x >= 0xfb50) && (x <= 0xfdff)) ||
11603             ((x >= 0xfe70) && (x <= 0xfeff)));
11604 }
11605 #endif
11606
11607 static inline bool is_neutral(unsigned short dir) {
11608   return ((dir == QChar::DirB) ||
11609                   (dir == QChar::DirS) ||
11610                   (dir == QChar::DirWS) ||
11611                   (dir == QChar::DirON) ||
11612                   (dir == QChar::DirNSM));
11613 }
11614
11615 /*!
11616   This function returns the basic directionality of the string (QChar::DirR for
11617   right to left and QChar::DirL for left to right). Useful to find the right
11618   alignment.
11619   */
11620 QChar::Direction QString::basicDirection()
11621 {
11622 #ifndef QT_NO_UNICODETABLES
11623     // find base direction
11624     unsigned int pos = 0;
11625     while ((pos < length()) &&
11626            (at(pos) != RLE) &&
11627            (at(pos) != LRE) &&
11628            (at(pos) != RLO) &&
11629            (at(pos) != LRO) &&
11630            (at(pos).direction() > 1) &&
11631            (at(pos).direction() != QChar::DirAL)) // not R and not L
11632         pos++;
11633
11634     if ((at(pos).direction() == QChar::DirR) ||
11635         (at(pos).direction() == QChar::DirAL) ||
11636         (at(pos) == RLE) ||
11637         (at(pos) == RLO))
11638         return QChar::DirR;
11639 #endif
11640
11641     return QChar::DirL;
11642 }
11643
11644 #ifndef QT_NO_UNICODETABLES
11645 // reverses part of the QChar array to get visual ordering
11646 // called from QString::visual()
11647 //
11648 static unsigned int reverse( QString &chars, unsigned char *level,
11649                              unsigned int a, unsigned int b)
11650 {
11651     unsigned int c = a;
11652     unsigned char lev = level[c];
11653
11654     while ((c < b) && (level[c] >= lev)) {
11655         if (level[c] > lev)
11656             c = reverse(chars, level, c, b);
11657         c++;
11658     }
11659
11660     if (lev > 0) {
11661         QChar temp;
11662         unsigned int d = a, e = c-1;
11663         while (d < e) {
11664             temp = chars[(int)d];
11665             chars[(int)d] = chars[(int)e];
11666             chars[(int)e] = temp;
11667
11668             d++; e--;
11669         }
11670     }
11671
11672     return c;
11673 }
11674
11675 // small class used for the ordering algorithm in QString::visual()
11676 class QBidiState {
11677 public:
11678     unsigned char level;
11679     signed   char override;
11680
11681     QBidiState(unsigned char l, signed char o) : level(l), override(o) {};
11682 };
11683
11684 // matrix for resolving neutral types
11685
11686 #define NEG1 (QChar::Direction)(-1)
11687
11688 static QChar::Direction resolv[5][5] =
11689 {
11690         { NEG1,         QChar::DirR, QChar::DirL, QChar::DirEN, QChar::DirAN },
11691         { QChar::DirR,  QChar::DirR, NEG1,        QChar::DirR,  QChar::DirR  },
11692         { QChar::DirL,  NEG1,        QChar::DirL, QChar::DirL,  NEG1         },
11693         { QChar::DirEN, QChar::DirR, QChar::DirL, QChar::DirEN, QChar::DirR  },
11694         { QChar::DirAN, QChar::DirR, NEG1,        NEG1,         QChar::DirAN }
11695 };
11696
11697 #endif
11698
11699 /*!
11700   This function returns the QString ordered visually. Useful for
11701   painting the string or when transforming to a visually ordered
11702   encoding.
11703 */
11704 QString QString::visual(int index, int len)
11705 {
11706 #ifndef QT_NO_UNICODETABLES
11707     // #### This needs much more optimizing - it is called for
11708     // #### every text operation.
11709
11710     unsigned char *level;
11711     QChar::Direction *dir;
11712     unsigned char base = 0;
11713
11714     unsigned int l = length();
11715
11716     // check bounds
11717     if (len == -1)
11718         len = length()-index;
11719     if ((uint)index > l)
11720         return QString::null;
11721
11722     // find base direction
11723     unsigned int pos = 0;
11724     while ((pos < length()) &&
11725            (at(pos) != RLE) &&
11726            (at(pos) != LRE) &&
11727            (at(pos) != RLO) &&
11728            (at(pos) != LRO) &&
11729            (at(pos).direction() > 1) &&
11730            (at(pos).direction() != QChar::DirAL)
11731            ) // not R and not L
11732         pos++;
11733
11734     if ((pos < length()) &&
11735             ((at(pos).direction() == QChar::DirR) ||
11736              (at(pos).direction() == QChar::DirAL) ||
11737             (at(pos) == RLE) ||
11738             (at(pos) == RLO)))
11739         base = 1;
11740
11741     // is there any BiDi char at all?
11742     if ( base == 0 && pos == l ) {
11743         return mid(index, len);
11744     }
11745
11746
11747     level = new uchar[l];
11748     dir   = new QChar::Direction[l];
11749
11750     // explicit override pass
11751     //unsigned int code_count = 0;
11752
11753     QStack<QBidiState> stack;
11754     stack.setAutoDelete(TRUE);
11755
11756     unsigned char    clevel   = base;
11757     signed char      override = -1;
11758
11759     for (pos = 0; pos < l; pos++) {
11760
11761         if (at(pos) == RLE) {
11762             //code_count++;
11763             stack.push(new QBidiState(clevel, override));
11764             if (clevel < 254)
11765                 clevel += 1 + clevel % 2;
11766             override = -1;
11767         }
11768         else if (at(pos) == LRE) {
11769             //code_count++;
11770             stack.push(new QBidiState(clevel, override));
11771             if (clevel < 254)
11772                 clevel += 2 - clevel % 2;
11773             override = -1;
11774         }
11775         else if (at(pos) == RLO) {
11776             //code_count++;
11777             stack.push(new QBidiState(clevel, override));
11778             if (clevel < 254)
11779                 clevel += 1 + clevel % 2;
11780             override = QChar::DirR;
11781         }
11782         else if (at(pos) == LRO) {
11783             //code_count++;
11784             stack.push(new QBidiState(clevel, override));
11785             if (clevel < 254)
11786                 clevel += 2 - clevel % 2;
11787             override = QChar::DirL;
11788         }
11789         else if (at(pos) == PDF) {
11790             //code_count++;
11791             if (!stack.isEmpty()) {
11792                 override = stack.top()->override;
11793                 clevel   = stack.top()->level;
11794                 stack.remove();
11795             }
11796         }
11797
11798         // TODO: catch block separators (newlines, paras, etc.)
11799
11800         level[pos] = clevel;
11801         if (override != -1)
11802             dir[pos] = (QChar::Direction) override;
11803         else
11804             dir[pos] = at(pos).direction();
11805     }
11806
11807     // weak type pass
11808     for (pos = 0; pos < l; pos++) {
11809
11810         int i;
11811
11812         switch (at(pos).direction()) {
11813         case QChar::DirEN:
11814             i   = pos-1;
11815             while ((i >= 0) &&
11816                    !(at(i).direction() == QChar::DirAN) &&
11817                    !(at(i).direction() == QChar::DirAL) &&
11818                    !(at(i).direction() == QChar::DirB))
11819                 i--;
11820
11821             if ((i >= 0) &&
11822                 ((at(i).direction() == QChar::DirAN) ||
11823                  (at(i).direction() == QChar::DirAL)))
11824                 dir[pos] = QChar::DirAN;
11825
11826             break;
11827         case QChar::DirES:
11828         case QChar::DirCS:
11829             if ((pos > 0) && (pos < l-1) &&
11830                 (dir[pos-1] == dir[pos+1]))
11831                 dir[pos] = dir[pos-1];
11832             else
11833                 dir[pos] = QChar::DirON;
11834
11835             break;
11836         case QChar::DirET:
11837             if (((pos > 0) && (dir[pos-1] == QChar::DirEN)) ||
11838                 ((pos < l-1) && (dir[pos+1] == QChar::DirEN)))
11839                 dir[pos] = QChar::DirEN;
11840             else
11841                 dir[pos] = QChar::DirON;
11842
11843             break;
11844         case QChar::DirAL:
11845             dir[pos] = QChar::DirR;
11846             break;
11847         default:
11848             break;
11849         }
11850     }
11851
11852     // neutral type pass
11853     for (pos = 0; pos < l; pos++) {
11854           QChar::Direction left,right; // declaring l here shadowed previous l
11855
11856         if (is_neutral(dir[pos])) {
11857             if (pos > 0)
11858                 left = dir[pos-1];
11859             else
11860                 left = (base == 0 ? QChar::DirL : QChar::DirR);
11861
11862             int i = pos;
11863
11864             while ((i < (int)l-1) && is_neutral(dir[i+1]))
11865                 i++;
11866
11867             if (i < (int)l-1)
11868                 right = dir[i+1];
11869             else
11870                 right = (base == 0 ? QChar::DirL : QChar::DirR);
11871
11872             for (int j=pos; j <= i; j++) {
11873                   int a = 1, b = 1;
11874                   while ((a < 5) && (left != resolv[0][a]))
11875                         a++;
11876                   while ((b < 5) && (right != resolv[0][b]))
11877                         b++;
11878                   if ((a == 5) || (b == 5))
11879                         dir[j] = (base == 0 ? QChar::DirL : QChar::DirR);
11880                   else
11881                         dir[j] = resolv[a][b];
11882
11883                   if (dir[j] == (QChar::Direction)(-1))
11884                         dir[j] = (base == 0 ? QChar::DirL : QChar::DirR);
11885             }
11886         }
11887     }
11888
11889     // implicit level pass
11890     QChar::Direction prec = (base == 0 ? QChar::DirL : QChar::DirR);
11891
11892     for (pos = 0; pos < l; pos++) {
11893         if (level[pos] % 2) {
11894             switch (dir[pos]) {
11895             case QChar::DirL:
11896             case QChar::DirAN:
11897             case QChar::DirEN:
11898                 level[pos] += 1;
11899                 break;
11900             default:
11901                 break;
11902             }
11903         } else {
11904             switch (dir[pos]) {
11905             case QChar::DirL:
11906                                 // do nothing
11907                 break;
11908             case QChar::DirR:
11909                 level[pos] += 1;
11910                 break;
11911             case QChar::DirEN:
11912                 if (prec == QChar::DirL)
11913                     continue;
11914                                 // fall through
11915             case QChar::DirAN:
11916                 level[pos] += 2;
11917                 break;
11918             default:
11919                 break;
11920             }
11921         }
11922
11923         prec = dir[pos];
11924     }
11925
11926         // now do the work!
11927         QString ret(*this);
11928     reverse(ret, level, index, index+len);
11929
11930     delete [] level;
11931     delete [] dir;
11932
11933     return ret;
11934 #else
11935     return mid(index,len);
11936 #endif
11937 }
11938
11939
11940
11941 // These macros are used for efficient allocation of QChar strings.
11942 // IMPORTANT! If you change these, make sure you also change the
11943 // "delete unicode" statement in ~QStringData() in qstring.h correspondingly!
11944
11945 #define QT_ALLOC_QCHAR_VEC( N ) (QChar*) new char[ sizeof(QChar)*( N ) ]
11946 #define QT_DELETE_QCHAR_VEC( P ) delete[] ((char*)( P ))
11947
11948
11949 /*!
11950   This utility function converts the 8-bit string
11951   \a ba to Unicode, returning the result.
11952
11953   The caller is responsible for deleting the return value with delete[].
11954 */
11955
11956 QChar* QString::asciiToUnicode( const QByteArray& ba, uint* len )
11957 {
11958     if ( ba.isNull() ) {
11959         *len = 0;
11960         return 0;
11961     }
11962     int l = 0;
11963     while ( l < (int)ba.size() && ba[l] )
11964         l++;
11965     char* str = ba.data();
11966     QChar *uc = new QChar[ l ];   // Can't use macro, since function is public
11967     QChar *result = uc;
11968     if ( len )
11969         *len = l;
11970     while (l--)
11971         *uc++ = *str++;
11972     return result;
11973 }
11974
11975 static QChar* internalAsciiToUnicode( const QByteArray& ba, uint* len )
11976 {
11977     if ( ba.isNull() ) {
11978         *len = 0;
11979         return 0;
11980     }
11981     int l = 0;
11982     while ( l < (int)ba.size() && ba[l] )
11983         l++;
11984     char* str = ba.data();
11985     QChar *uc = QT_ALLOC_QCHAR_VEC( l );
11986     QChar *result = uc;
11987     if ( len )
11988         *len = l;
11989     while (l--)
11990         *uc++ = *str++;
11991     return result;
11992 }
11993
11994 /*!
11995   This utility function converts the NUL-terminated 8-bit string
11996   \a str to Unicode, returning the result and setting \a len to
11997   the length of the Unicode string.
11998
11999   The caller is responsible for deleting the return value with delete[].
12000 */
12001
12002 QChar* QString::asciiToUnicode( const char *str, uint* len, uint maxlen )
12003 {
12004     QChar* result = 0;
12005     uint l = 0;
12006     if ( str ) {
12007         if ( maxlen != (uint)-1 ) {
12008             while ( l < maxlen && str[l] )
12009                 l++;
12010         } else {
12011             // Faster?
12012             l = qstrlen(str);
12013         }
12014         QChar *uc = new QChar[ l ]; // Can't use macro since function is public
12015         result = uc;
12016         uint i = l;
12017         while ( i-- )
12018             *uc++ = *str++;
12019     }
12020     if ( len )
12021         *len = l;
12022     return result;
12023 }
12024
12025 static QChar* internalAsciiToUnicode( const char *str, uint* len,
12026                                       uint maxlen = (uint)-1 )
12027 {
12028     QChar* result = 0;
12029     uint l = 0;
12030     if ( str ) {
12031         if ( maxlen != (uint)-1 ) {
12032             while ( l < maxlen && str[l] )
12033                 l++;
12034         } else {
12035             // Faster?
12036             l = qstrlen(str);
12037         }
12038         QChar *uc = QT_ALLOC_QCHAR_VEC( l );
12039         result = uc;
12040         uint i = l;
12041         while ( i-- )
12042             *uc++ = *str++;
12043     }
12044     if ( len )
12045         *len = l;
12046     return result;
12047 }
12048
12049 /*!
12050   This utility function converts \a l 16-bit characters from
12051   \a uc to ASCII, returning a NUL-terminated string.
12052
12053   The caller is responsible for deleting the string with delete[].
12054 */
12055 char* QString::unicodeToAscii(const QChar *uc, uint l)
12056 {
12057     if (!uc) {
12058         return 0;
12059     }
12060     char *a = new char[l+1];
12061     char *result = a;
12062     while (l--)
12063         *a++ = *uc++;
12064     *a = '\0';
12065     return result;
12066 }
12067
12068 static uint computeNewMax( uint len )
12069 {
12070   if (len >= 0x80000000)
12071     return len;
12072
12073   uint newMax = 4;
12074   while ( newMax < len )
12075     newMax *= 2;
12076   // try to save some memory
12077   if ( newMax >= 1024 * 1024 && len <= newMax - (newMax >> 2) )
12078     newMax -= newMax >> 2;
12079   return newMax;
12080 }
12081
12082 /*!
12083   Returns the QString as a zero terminated array of unsigned shorts
12084   if the string is not null; otherwise returns zero.
12085
12086   The result remains valid so long as one unmodified
12087   copy of the source string exists.
12088  */
12089 const unsigned short *QString::ucs2() const
12090 {
12091   if ( ! d->unicode )
12092     return 0;
12093   unsigned int len = d->len;
12094   if ( d->maxl < len + 1 ) {
12095     // detach, grow or shrink
12096     uint newMax = computeNewMax( len + 1 );
12097     QChar* nd = QT_ALLOC_QCHAR_VEC( newMax );
12098     if ( nd ) {
12099       if ( d->unicode )
12100         memcpy( nd, d->unicode, sizeof(QChar)*len );
12101       ((QString *)this)->deref();
12102       ((QString *)this)->d = new QStringData( nd, len, newMax );
12103     }
12104   }
12105   d->unicode[len] = 0;
12106   return (unsigned short *) d->unicode;
12107 }
12108
12109 /*!
12110     Constructs a string that is a deep copy of \a str, interpreted as a
12111     UCS2 encoded, zero terminated, Unicode string.
12112
12113     If \a str is 0, then a null string is created.
12114     \sa isNull()
12115  */
12116 QString QString::fromUcs2( const unsigned short *str )
12117 {
12118   if ( !str ) {
12119     return QString::null;
12120   } else {
12121     int length = 0;
12122     while ( str[length] != 0 )
12123       length++;
12124     QChar* uc = QT_ALLOC_QCHAR_VEC( length );
12125     memcpy( uc, str, length*sizeof(QChar) );
12126     return QString( new QStringData( uc, length, length ), TRUE );
12127   }
12128 }
12129
12130
12131 /*****************************************************************************
12132   QString member functions
12133  *****************************************************************************/
12134
12135 /*!
12136   \class QString qstring.h
12137
12138   \brief The QString class provides an abstraction of Unicode text and
12139           the classic C null-terminated char array (<var>char*</var>).
12140
12141   \ingroup tools
12142   \ingroup shared
12143
12144   QString uses \link shclass.html implicit sharing\endlink, and so it
12145   is very efficient and easy to use.
12146
12147   In all QString methods that take <var>const char*</var> parameters,
12148   the <var>const char*</var> is interpreted as a classic C-style
12149   0-terminated ASCII string. It is legal for the <var>const
12150   char*</var> parameter to be 0. The results are undefined if the
12151   <var>const char*</var> string is not 0-terminated. Functions that
12152   copy classic C strings into a QString will not copy the terminating
12153   0-character. The QChar array of the QString (as returned by
12154   unicode()) is not terminated by a null.
12155
12156   A QString that has not been assigned to anything is \a null, i.e. both
12157   the length and data pointer is 0. A QString that references the empty
12158   string ("", a single '\0' char) is \a empty.  Both null and empty
12159   QStrings are legal parameters to the methods. Assigning <var>const char
12160   * 0</var> to QString gives a null QString.
12161
12162   Note that if you find that you are mixing usage of QCString, QString,
12163   and QByteArray, this causes lots of unnecessary copying and might
12164   indicate that the true nature of the data you are dealing with is
12165   uncertain.  If the data is NUL-terminated 8-bit data, use QCString;
12166   if it is unterminated (ie. contains NULs) 8-bit data, use QByteArray;
12167   if it is text, use QString.
12168
12169   \sa QChar \link shclass.html Shared classes\endlink
12170 */
12171
12172 Q_EXPORT QStringData *QString::shared_null = 0;
12173 //QT_STATIC_CONST_IMPL QString QString::null;
12174 QT_STATIC_CONST_IMPL QChar QChar::null;
12175 QT_STATIC_CONST_IMPL QChar QChar::replacement((ushort)0xfffd);
12176 QT_STATIC_CONST_IMPL QChar QChar::byteOrderMark((ushort)0xfeff);
12177 QT_STATIC_CONST_IMPL QChar QChar::byteOrderSwapped((ushort)0xfffe);
12178 QT_STATIC_CONST_IMPL QChar QChar::nbsp((ushort)0x00a0);
12179
12180 #if defined(_CC_MSVC_) && _MSC_VER <= 1300
12181 const QString::Null QString::null;
12182 #else
12183 const QString::Null QString::null = { };
12184 #endif
12185
12186
12187 QStringData* QString::makeSharedNull()
12188 {
12189     return shared_null=new QStringData;
12190 }
12191
12192 // Uncomment this to get some useful statistics.
12193 // #define Q2HELPER(x) x
12194
12195 #ifdef Q2HELPER
12196 static int stat_construct_charstar=0;
12197 static int stat_construct_charstar_size=0;
12198 static int stat_construct_null=0;
12199 static int stat_construct_int=0;
12200 static int stat_construct_int_size=0;
12201 static int stat_construct_ba=0;
12202 static int stat_get_ascii=0;
12203 static int stat_get_ascii_size=0;
12204 static int stat_copy_on_write=0;
12205 static int stat_copy_on_write_size=0;
12206 static int stat_fast_copy=0;
12207 Q_EXPORT void qt_qstring_stats()
12208 {
12209         qDebug("construct_charstar = %d (%d chars)", stat_construct_charstar, stat_construct_charstar_size);
12210         qDebug("construct_null = %d", stat_construct_null);
12211         qDebug("construct_int = %d (%d chars)", stat_construct_int, stat_construct_int_size);
12212         qDebug("construct_ba = %d", stat_construct_ba);
12213         qDebug("get_ascii = %d (%d chars)", stat_get_ascii, stat_get_ascii_size);
12214         qDebug("copy_on_write = %d (%d chars)", stat_copy_on_write, stat_copy_on_write_size);
12215         qDebug("fast_copy = %d", stat_fast_copy);
12216 }
12217 #else
12218 #define Q2HELPER(x)
12219 #endif
12220
12221 /*!
12222   \fn QString::QString()
12223
12224   Constructs a null string.
12225   \sa isNull()
12226 */
12227
12228 /*!
12229   Constructs a string containing the one character \a ch.
12230 */
12231 QString::QString( QChar ch )
12232 {
12233     d = new QStringData( QT_ALLOC_QCHAR_VEC( 1 ), 1, 1 );
12234     d->unicode[0] = ch;
12235 }
12236
12237 /*!
12238   Constructs an implicitly-shared copy of \a s.
12239 */
12240 QString::QString( const QString &s ) :
12241     d(s.d)
12242 {
12243     Q2HELPER(stat_fast_copy++)
12244     d->ref();
12245 }
12246
12247 /*!
12248   Private function.
12249
12250   Constructs a string with preallocated space for \a size characters.
12251
12252   The string is empty.
12253
12254   \sa isNull()
12255 */
12256
12257 QString::QString( int size, bool /*dummy*/ )
12258 {
12259     if ( size ) {
12260         Q2HELPER(stat_construct_int++)
12261         int l = size;
12262         Q2HELPER(stat_construct_int_size+=l)
12263         QChar* uc = QT_ALLOC_QCHAR_VEC( l );
12264         d = new QStringData( uc, 0, l );
12265     } else {
12266         Q2HELPER(stat_construct_null++)
12267         d = shared_null ? shared_null : (shared_null=new QStringData);
12268         d->ref();
12269     }
12270 }
12271
12272 /*!
12273   Constructs a string that is a deep copy of \a ba interpreted as
12274   a classic C string.
12275 */
12276
12277 QString::QString( const QByteArray& ba )
12278 {
12279     Q2HELPER(stat_construct_ba++)
12280     uint l;
12281     QChar *uc = internalAsciiToUnicode(ba,&l);
12282     d = new QStringData(uc,l,l);
12283 }
12284
12285 QString::QString( const QCString& ba )
12286 {
12287     //Q2HELPER(stat_construct_ba++)
12288     //uint l;
12289     //QChar *uc = internalAsciiToUnicode(ba,&l);
12290     //d = new QStringData(uc,l,l);
12291     Q2HELPER(stat_fast_copy++)
12292     QString s = QString::fromUtf8(ba.data(),ba.length());
12293     d = s.d;
12294     d->ref();
12295 }
12296
12297 /*!
12298   Constructs a string that is a deep copy of the
12299   first \a length QChar in the array \a unicode.
12300
12301   If \a unicode and \a length are 0, a null string is created.
12302
12303   If only \a unicode is 0, the string is empty, but has
12304   \a length characters of space preallocated - QString expands
12305   automatically anyway, but this may speed some cases up a little.
12306
12307   \sa isNull()
12308 */
12309
12310 QString::QString( const QChar* unicode, uint length )
12311 {
12312     if ( !unicode && !length ) {
12313         d = shared_null ? shared_null : makeSharedNull();
12314         d->ref();
12315     } else {
12316         QChar* uc = QT_ALLOC_QCHAR_VEC( length );
12317         if ( unicode )
12318             memcpy(uc, unicode, length*sizeof(QChar));
12319         d = new QStringData(uc,unicode ? length : 0,length);
12320     }
12321 }
12322
12323 /*!
12324   Constructs a string that is a deep copy of \a str, interpreted as a
12325   classic C string.
12326
12327   If \a str is 0 a null string is created.
12328
12329   This is a cast constructor, but it is perfectly safe: converting a Latin1
12330   const char* to QString preserves all the information.
12331   You can disable this constructor by
12332   defining QT_NO_CAST_ASCII when you compile your applications.
12333   You can also make QString objects by using setLatin1()/fromLatin1(), or
12334   fromLocal8Bit(), fromUtf8(), or whatever encoding is appropriate for
12335   the 8-bit data you have.
12336
12337   \sa isNull()
12338 */
12339
12340 QString::QString( const char *str )
12341 {
12342     //Q2HELPER(stat_construct_charstar++)
12343     //uint l;
12344     //QChar *uc = internalAsciiToUnicode(str,&l);
12345     //Q2HELPER(stat_construct_charstar_size+=l)
12346     //d = new QStringData(uc,l,l);
12347     Q2HELPER(stat_fast_copy++)
12348     QString s = QString::fromUtf8(str);
12349     d = s.d;
12350     d->ref();
12351 }
12352
12353
12354 /*! \fn QString::~QString()
12355
12356 Destroys the string and frees the "real" string, if this was the last
12357 copy of that string.
12358 */
12359
12360
12361 /*!
12362   Deallocates any space reserved solely by this QString.
12363 */
12364
12365 void QString::real_detach()
12366 {
12367     setLength( length() );
12368 }
12369
12370 void QString::deref()
12371 {
12372     if ( d->deref() ) {
12373         if ( d == shared_null )
12374             shared_null = 0;
12375         delete d;
12376         d = 0; // helps debugging
12377     }
12378 }
12379
12380 void QStringData::deleteSelf()
12381 {
12382     delete this;
12383 }
12384
12385 /*!
12386   \fn QString& QString::operator=( QChar c )
12387   Sets the string to contain just the single character \a c.
12388 */
12389
12390 /*!
12391   \fn QString& QString::operator=( char c )
12392   Sets the string to contain just the single character \a c.
12393 */
12394
12395 /*!
12396   Assigns a shallow copy of \a s to this string and returns a
12397   reference to this string.
12398 */
12399 QString &QString::operator=( const QString &s )
12400 {
12401     Q2HELPER(stat_fast_copy++)
12402     s.d->ref();
12403     deref();
12404     d = s.d;
12405     return *this;
12406 }
12407
12408 /*!
12409   Assigns a deep copy of \a cs, interpreted as a classic C string, to
12410   this string and returns a reference to this string.
12411 */
12412 QString &QString::operator=( const QCString& cs )
12413 {
12414     return setLatin1(cs);
12415 }
12416
12417
12418 /*!
12419   Assigns a deep copy of \a str, interpreted as a classic C string,
12420   to this string and returns a reference to this string.
12421
12422   If \a str is 0 a null string is created.
12423
12424   \sa isNull()
12425 */
12426 QString &QString::operator=( const char *str )
12427 {
12428     return setLatin1(str);
12429 }
12430
12431
12432 /*!
12433   \fn bool QString::isNull() const
12434
12435   Returns TRUE if the string is null.
12436   A null string is also an empty string.
12437
12438   Example:
12439   \code
12440     QString a;          // a.unicode() == 0,  a.length() == 0
12441     QString b = "";     // b.unicode() == "", b.length() == 0
12442     a.isNull();         // TRUE, because a.unicode() == 0
12443     a.isEmpty();        // TRUE, because a.length() == 0
12444     b.isNull();         // FALSE, because b.unicode() != 0
12445     b.isEmpty();        // TRUE, because b.length() == 0
12446   \endcode
12447
12448   \sa isEmpty(), length()
12449 */
12450
12451 /*!
12452   \fn bool QString::isEmpty() const
12453
12454   Returns TRUE if the string is empty, i.e. if length() == 0.
12455   An empty string is not always a null string.
12456
12457   See example in isNull().
12458
12459   \sa isNull(), length()
12460 */
12461
12462 /*!
12463   \fn uint QString::length() const
12464
12465   Returns the length of the string.
12466
12467   Null strings and empty strings have zero length.
12468
12469   \sa isNull(), isEmpty()
12470 */
12471
12472 /*!
12473   Truncates the string at position \a newLen if newLen is less than the
12474   current length . Otherwise, nothing happens.
12475
12476   Example:
12477   \code
12478     QString s = "truncate this string";
12479     s.truncate( 5 );                            // s == "trunc"
12480   \endcode
12481
12482   In Qt 1.x, it was possible to "truncate" a string to a longer
12483   length.  This is no longer possible.
12484
12485 */
12486
12487 void QString::truncate( uint newLen )
12488 {
12489     if ( newLen < d->len )
12490         setLength( newLen );
12491 }
12492
12493 /*### Make this public in 3.0
12494   Ensures that at least \a newLen characters are allocated, and
12495   sets the length to \a newLen.  This function always detaches the
12496   string from other references to the same data.  Any new space
12497   allocated is \e not defined.
12498
12499   If \a newLen is 0, this string becomes empty, unless this string is
12500   null, in which case it remains null.
12501
12502   \sa truncate(), isNull(), isEmpty()
12503 */
12504
12505 void QString::setLength( uint newLen )
12506 {
12507     if ( d->count != 1 || newLen > d->maxl ||           // detach, grow, or
12508          ( newLen*4 < d->maxl && d->maxl > 4 ) ) {      // shrink
12509         Q2HELPER(stat_copy_on_write++)
12510         Q2HELPER(stat_copy_on_write_size+=d->len)
12511         uint newMax = 4;
12512         while ( newMax < newLen )
12513             newMax *= 2;
12514         QChar* nd = QT_ALLOC_QCHAR_VEC( newMax );
12515         uint len = QMIN( d->len, newLen );
12516         if ( d->unicode )
12517             memcpy( nd, d->unicode, sizeof(QChar)*len );
12518         deref();
12519         d = new QStringData( nd, newLen, newMax );
12520     } else {
12521         d->len = newLen;
12522         d->dirtyascii = 1;
12523     }
12524 }
12525
12526 /*!  Returns a string equal to this one, but with the lowest-numbered
12527   occurrence of \c %i (for a positive integer i) replaced by \a a.
12528
12529   \code
12530     label.setText( tr("Rename %1 to %2?").arg(oldName).arg(newName) );
12531   \endcode
12532
12533   \a fieldwidth is the minimum amount of space \a a is padded to.  A
12534   positive value produces right-aligned text, while a negative value
12535   produces left aligned text.
12536
12537   \warning Using arg() for constructing "real" sentences
12538   programmatically is likely to lead to translation problems.
12539   Inserting objects like numbers or file names is fairly safe.
12540
12541   \warning Relying on spaces to create alignment is prone to lead to
12542   translation problems.
12543
12544   If there is no \c %i pattern, a warning message (qWarning()) is
12545   printed and the text as appended at the end of the string.  This is
12546   error recovery and should not occur in correct code.
12547
12548   \sa QObject::tr()
12549 */
12550 QString QString::arg(const QString& a, int fieldwidth) const
12551 {
12552     int pos, len;
12553     QString r = *this;
12554
12555     if ( !findArg( pos, len ) ) {
12556         qWarning( "QString::arg(): Argument missing: %s, %s",
12557                   (const char *)ascii(), (const char *)ascii() );
12558         // Make sure the text at least appears SOMEWHERE
12559         r += ' ';
12560         pos = r.length();
12561         len = 0;
12562     }
12563
12564     r.replace( pos, len, a );
12565     if ( fieldwidth < 0 ) {
12566         QString s;
12567         while ( (uint)-fieldwidth > a.length() ) {
12568             s += ' ';
12569             fieldwidth++;
12570         }
12571         r.insert( pos + a.length(), s );
12572     } else if ( fieldwidth ) {
12573         QString s;
12574         while ( (uint)fieldwidth > a.length() ) {
12575             s += ' ';
12576             fieldwidth--;
12577         }
12578         r.insert( pos, s );
12579     }
12580
12581     return r;
12582 }
12583
12584
12585 /*! \overload
12586
12587   \a a is expressed in to \a base notation, which is decimal by
12588   default and must be in the range 2-36 inclusive.
12589 */
12590 QString QString::arg(long a, int fieldwidth, int base) const
12591 {
12592     return arg( QString::number( a, base ), fieldwidth );
12593 }
12594
12595 /*! \overload
12596
12597   \a a is expressed in to \a base notation, which is decimal by
12598   default and must be in the range 2-36 inclusive.
12599 */
12600 QString QString::arg(ulong a, int fieldwidth, int base) const
12601 {
12602     return arg( QString::number( a, base ), fieldwidth );
12603 }
12604
12605 /*!
12606   \overload QString QString::arg(int a, int fieldwidth, int base) const
12607
12608   \a a is expressed in to \a base notation, which is decimal by
12609   default and must be in the range 2-36 inclusive.
12610
12611 */
12612
12613 /*!
12614   \overload QString QString::arg(uint a, int fieldwidth, int base) const
12615
12616   \a a is expressed in to \a base notation, which is decimal by
12617   default and must be in the range 2-36 inclusive.
12618 */
12619
12620 /*!
12621   \overload QString QString::arg(short a, int fieldwidth, int base) const
12622
12623   \a a is expressed in to \a base notation, which is decimal by
12624   default and must be in the range 2-36 inclusive.
12625 */
12626
12627 /*!
12628   \overload QString QString::arg(ushort a, int fieldwidth, int base) const
12629
12630   \a a is expressed in to \a base notation, which is decimal by
12631   default and must be in the range 2-36 inclusive.
12632 */
12633
12634
12635 /*! \overload
12636
12637   \a a is assumed to be in the Latin1 character set.
12638 */
12639 QString QString::arg(char a, int fieldwidth) const
12640 {
12641     QString c;
12642     c += a;
12643     return arg( c, fieldwidth );
12644 }
12645
12646 /*! \overload
12647 */
12648 QString QString::arg(QChar a, int fieldwidth) const
12649 {
12650     QString c;
12651     c += a;
12652     return arg( c, fieldwidth );
12653 }
12654
12655 /*! \overload
12656
12657   \a is formatted according to the \a fmt format specified, which is
12658   'g' by default and can be any of 'f', 'F', 'e', 'E', 'g' or 'G', all
12659   of which have the same meaning as for sprintf().  \a prec determines
12660   the precision, just as for number() and sprintf().
12661 */
12662 QString QString::arg(double a, int fieldwidth, char fmt, int prec) const
12663 {
12664     return arg( QString::number( a, fmt, prec ), fieldwidth );
12665 }
12666
12667
12668 /*!
12669   Just 1-digit arguments.
12670 */
12671 bool QString::findArg(int& pos, int& len) const
12672 {
12673     char lowest=0;
12674     for (uint i=0; i<length(); i++) {
12675         if ( at(i) == '%' && i+1<length() ) {
12676             char dig = at(i+1);
12677             if ( dig >= '0' && dig <= '9' ) {
12678                 if ( !lowest || dig < lowest ) {
12679                     lowest = dig;
12680                     pos = i;
12681                     len = 2;
12682                 }
12683             }
12684         }
12685     }
12686     return lowest != 0;
12687 }
12688
12689 /*!
12690   Safely builds a formatted string from a format string and an
12691   arbitrary list of arguments.  The format string supports all
12692   the escape sequences of printf() in the standard C library.
12693
12694   The %s escape sequence expects a utf8() encoded string. 
12695   The format string \e cformat is expected to be in latin1. If you need a unicode
12696   format string, use QString::arg() instead. For typesafe
12697   string building, with full Unicode support, you can use QTextOStream
12698   like this:
12699
12700   \code
12701     QString str;
12702     QString s = ...;
12703     int x = ...;
12704     QTextOStream(&str) << s << " : " << x;
12705   \endcode
12706
12707   For \link QObject::tr() translations,\endlink especially if the
12708   strings contains more than one escape sequence, you should consider
12709   using the arg() function instead.  This allows the order of the
12710   replacements to be controlled by the translator, and has Unicode
12711   support.
12712
12713   \sa arg()
12714 */
12715
12716 QString &QString::sprintf( const char* cformat, ... )
12717 {
12718     va_list ap;
12719     va_start( ap, cformat );
12720
12721     if ( !cformat || !*cformat ) {
12722         // Qt 1.x compat
12723         *this = QString::fromLatin1( "" );
12724         return *this;
12725     }
12726     QString format = QString::fromLatin1( cformat );
12727
12728     static QRegExp *escape = 0;
12729     if (!escape)
12730         escape = new QRegExp( "%#?0?-? ?\\+?'?[0-9*]*\\.?[0-9*]*h?l?L?q?Z?" );
12731
12732     QString result;
12733     uint last = 0;
12734
12735     int len = 0;
12736     int pos;
12737     while ( 1 ) {
12738         pos = escape->match( cformat, last, &len );
12739         // Non-escaped text
12740         if ( pos > (int)last )
12741             result += format.mid(last,pos-last);
12742         if ( pos < 0 ) {
12743             // The rest
12744             if ( last < format.length() )
12745                 result += format.mid(last);
12746             break;
12747         }
12748         last = pos + len + 1;
12749
12750         // Escape
12751         QString f = format.mid( pos, len );
12752         uint width, decimals;
12753         int params = 0;
12754         int wpos = f.find('*');
12755         if ( wpos >= 0 ) {
12756             params++;
12757             width = va_arg( ap, int );
12758             if ( f.find('*', wpos + 1) >= 0 ) {
12759                 decimals = va_arg( ap, int );
12760                 params++;
12761             } else {
12762                 decimals = 0;
12763             }
12764         } else {
12765             decimals = width = 0;
12766         }
12767         QString replacement;
12768         if ( format[pos+len] == 's' ||
12769              format[pos+len] == 'S' ||
12770              format[pos+len] == 'c' )
12771         {
12772             bool rightjust = ( f.find('-') < 0 );
12773             // Yes, %-5s really means left adjust in sprintf
12774
12775             if ( wpos < 0 ) {
12776                 QRegExp num( "[0-9]+" );
12777                 QRegExp dot( "\\." );
12778                 int nlen;
12779                 int p = num.match( f.data(), 0, &nlen );
12780                 int q = dot.match( f.data(), 0 );
12781                 if ( q < 0 || (p < q && p >= 0) )
12782                     width = f.mid( p, nlen ).toInt();
12783                 if ( q >= 0 ) {
12784                     p = num.match( f.data(), q );
12785                     // "decimals" is used to specify string truncation
12786                     if ( p >= 0 )
12787                         decimals = f.mid( p, nlen ).toInt();
12788                 }
12789             }
12790
12791             if ( format[pos+len] == 's' ) {
12792 #ifndef QT_NO_TEXTCODEC
12793                 QString s = QString::fromUtf8(va_arg(ap, char*));
12794 #else
12795                 QString s = QString::fromLatin1(va_arg(ap, char*));
12796 #endif
12797                 if ( decimals <= 0 )
12798                     replacement = s;
12799                 else
12800                     replacement = s.left(decimals);
12801             } else {
12802                 int ch = va_arg(ap, int);
12803                 replacement = QChar((ushort)ch);
12804             }
12805             if ( replacement.length() < width ) {
12806                 replacement = rightjust
12807                     ? replacement.rightJustify(width)
12808                     : replacement.leftJustify(width);
12809             }
12810         } else if ( format[pos+len] == '%' ) {
12811             replacement = '%';
12812         } else if ( format[pos+len] == 'n' ) {
12813             int* n = va_arg(ap, int*);
12814             *n = result.length();
12815         } else {
12816             char in[64], out[330] = "";
12817             strncpy(in,f.latin1(),63);
12818             char fch = format[pos+len].latin1();
12819             in[f.length()] = fch;
12820             switch ( fch ) {
12821               case 'd': case 'i': case 'o': case 'u': case 'x': case 'X': {
12822                 int value = va_arg(ap, int);
12823                 switch (params) {
12824                   case 0: ::sprintf( out, in, value ); break;
12825                   case 1: ::sprintf( out, in, width, value ); break;
12826                   case 2: ::sprintf( out, in, width, decimals, value ); break;
12827                 }
12828               } break;
12829               case 'e': case 'E': case 'f': case 'g': case 'G': {
12830                 double value = va_arg(ap, double);
12831                 switch (params) {
12832                   case 0: ::sprintf( out, in, value ); break;
12833                   case 1: ::sprintf( out, in, width, value ); break;
12834                   case 2: ::sprintf( out, in, width, decimals, value ); break;
12835                 }
12836               } break;
12837               case 'p': {
12838                 void* value = va_arg(ap, void*);
12839                 switch (params) {
12840                   case 0: ::sprintf( out, in, value ); break;
12841                   case 1: ::sprintf( out, in, width, value ); break;
12842                   case 2: ::sprintf( out, in, width, decimals, value ); break;
12843                 }
12844               } break;
12845             }
12846             replacement = QString::fromLatin1(out);
12847         }
12848         result += replacement;
12849     }
12850     *this = result;
12851
12852     va_end( ap );
12853     return *this;
12854 }
12855
12856 /*!
12857   Fills the string with \a len characters of value \a c.
12858
12859   If \a len is negative, the current string length is used.
12860 */
12861
12862 void QString::fill( QChar c, int len )
12863 {
12864     if ( len < 0 )
12865         len = length();
12866     if ( len == 0 ) {
12867         *this = "";
12868     } else {
12869         deref();
12870         QChar * nd = QT_ALLOC_QCHAR_VEC( len );
12871         d = new QStringData(nd,len,len);
12872         while (len--) *nd++ = c;
12873     }
12874 }
12875
12876
12877 /*!
12878   \fn QString QString::copy() const
12879
12880   \obsolete
12881
12882   Returns a deep copy of this string.
12883
12884   Doing this is redundant in Qt 2.x, since QString is implicitly
12885   shared, and so will automatically be deeply copied as necessary.
12886 */
12887
12888 /*!
12889   Finds the first occurrence of the character \a c, starting at
12890   position \a index. If \a index is -1, the search starts at the
12891   last character; if -2, at the next to last character; etc.
12892
12893   The search is case sensitive if \a cs is TRUE, or case insensitive
12894   if \a cs is FALSE.
12895
12896   Returns the position of \a c, or -1 if \a c could not be found.
12897 */
12898
12899 int QString::find( QChar c, int index, bool cs ) const
12900 {
12901     if ( index < 0 )
12902         index += length();
12903     if ( (uint)index >= length() )              // index outside string
12904         return -1;
12905     register const QChar *uc;
12906     uc = unicode()+index;
12907     int n = length()-index;
12908     if ( cs ) {
12909         while ( n-- && *uc != c )
12910             uc++;
12911     } else {
12912         c = c.lower();
12913         while ( n-- && uc->lower() != c )
12914             uc++;
12915     }
12916     if ( uint(uc - unicode()) >= length() )
12917         return -1;
12918     return (int)(uc - unicode());
12919 }
12920
12921 /*!
12922   Finds the first occurrence of the string \a str, starting at position
12923   \a index. If \a index is -1, the search starts at the last character;
12924   if -2, at the next to last character; etc.
12925
12926   The search is case sensitive if \a cs is TRUE, or case insensitive if
12927   \a cs is FALSE.
12928
12929   Returns the position of \a str, or -1 if \a str could not be found.
12930 */
12931
12932 int QString::find( const QString& str, int index, bool cs ) const
12933 {
12934     /*
12935       We use some weird hashing for efficiency's sake.  Instead of
12936       comparing strings, we compare the hash value of str with that of
12937       a part of this QString.  Only if that matches, we call ucstrncmp
12938       or ucstrnicmp.
12939
12940       The hash value of a string is the sum of the cells of its
12941       QChars.
12942     */
12943     if ( index < 0 )
12944         index += length();
12945     int lstr = str.length();
12946     int lthis = length() - index;
12947     if ( (uint)lthis > length() )
12948         return -1;
12949     int delta = lthis - lstr;
12950     if ( delta < 0 )
12951         return -1;
12952
12953     const QChar *uthis = unicode() + index;
12954     const QChar *ustr = str.unicode();
12955     uint hthis = 0;
12956     uint hstr = 0;
12957     int i;
12958     if ( cs ) {
12959         for ( i = 0; i < lstr; i++ ) {
12960             hthis += uthis[i].cell();
12961             hstr += ustr[i].cell();
12962         }
12963         i = 0;
12964         while ( TRUE ) {
12965             if ( hthis == hstr && ucstrncmp(uthis + i, ustr, lstr) == 0 )
12966                 return index + i;
12967             if ( i == delta )
12968                 return -1;
12969             hthis += uthis[i + lstr].cell();
12970             hthis -= uthis[i].cell();
12971             i++;
12972         }
12973     } else {
12974         for ( i = 0; i < lstr; i++ ) {
12975             hthis += uthis[i].lower().cell();
12976             hstr += ustr[i].lower().cell();
12977         }
12978         i = 0;
12979         while ( TRUE ) {
12980             if ( hthis == hstr && ucstrnicmp(uthis + i, ustr, lstr) == 0 )
12981                 return index + i;
12982             if ( i == delta )
12983                 return -1;
12984             hthis += uthis[i + lstr].lower().cell();
12985             hthis -= uthis[i].lower().cell();
12986             i++;
12987         }
12988     }
12989 #if defined(Q_SPURIOUS_NON_VOID_WARNING)
12990     return -1;
12991 #endif
12992 }
12993
12994 /*!
12995   \fn int QString::findRev( const char* str, int index ) const
12996
12997   Equivalent to findRev(QString(str), index).
12998 */
12999
13000 /*!
13001   \fn int QString::find( const char* str, int index ) const
13002
13003   Equivalent to find(QString(str), index).
13004 */
13005
13006 /*!
13007   Finds the first occurrence of the character \a c, starting at
13008   position \a index and searching backwards. If \a index is -1,
13009   the search starts at the last character; if -2, at the next to
13010   last character; etc.
13011
13012   The search is case sensitive if \a cs is TRUE, or case insensitive if \a
13013   cs is FALSE.
13014
13015   Returns the position of \a c, or -1 if \a c could not be found.
13016 */
13017
13018 int QString::findRev( QChar c, int index, bool cs ) const
13019 {
13020     QString t( c );
13021     return findRev( t, index, cs );
13022 }
13023
13024 /*!
13025   Finds the first occurrence of the string \a str, starting at
13026   position \a index and searching backwards. If \a index is -1,
13027   the search starts at the last character; -2, at the next to last
13028   character; etc.
13029
13030   The search is case sensitive if \a cs is TRUE, or case insensitive if \e
13031   cs is FALSE.
13032
13033   Returns the position of \a str, or -1 if \a str could not be found.
13034 */
13035
13036 int QString::findRev( const QString& str, int index, bool cs ) const
13037 {
13038     /*
13039       See QString::find() for explanations.
13040     */
13041     int lthis = length();
13042     if ( index < 0 )
13043         index += lthis;
13044
13045     int lstr = str.length();
13046     int delta = lthis - lstr;
13047     if ( index < 0 || index > lthis || delta < 0 )
13048         return -1;
13049     if ( index > delta )
13050         index = delta;
13051
13052     const QChar *uthis = unicode();
13053     const QChar *ustr = str.unicode();
13054     uint hthis = 0;
13055     uint hstr = 0;
13056     int i;
13057     if ( cs ) {
13058         for ( i = 0; i < lstr; i++ ) {
13059             hthis += uthis[index + i].cell();
13060             hstr += ustr[i].cell();
13061         }
13062         i = index;
13063         while ( TRUE ) {
13064             if ( hthis == hstr && ucstrncmp(uthis + i, ustr, lstr) == 0 )
13065                 return i;
13066             if ( i == 0 )
13067                 return -1;
13068             i--;
13069             hthis -= uthis[i + lstr].cell();
13070             hthis += uthis[i].cell();
13071         }
13072     } else {
13073         for ( i = 0; i < lstr; i++ ) {
13074             hthis += uthis[index + i].lower().cell();
13075             hstr += ustr[i].lower().cell();
13076         }
13077         i = index;
13078         while ( TRUE ) {
13079             if ( hthis == hstr && ucstrnicmp(uthis + i, ustr, lstr) == 0 )
13080                 return i;
13081             if ( i == 0 )
13082                 return -1;
13083             i--;
13084             hthis -= uthis[i + lstr].lower().cell();
13085             hthis += uthis[i].lower().cell();
13086         }
13087     }
13088 #if defined(Q_SPURIOUS_NON_VOID_WARNING)
13089     return -1;
13090 #endif
13091 }
13092
13093
13094 /*!
13095   Returns the number of times the character \a c occurs in the string.
13096
13097   The match is case sensitive if \a cs is TRUE, or case insensitive if \a cs
13098   is FALSE.
13099 */
13100
13101 int QString::contains( QChar c, bool cs ) const
13102 {
13103     int count = 0;
13104     const QChar *uc = unicode();
13105     if ( !uc )
13106         return 0;
13107     int n = length();
13108     if ( cs ) {                                 // case sensitive
13109         while ( n-- )
13110             if ( *uc++ == c )
13111                 count++;
13112     } else {                                    // case insensitive
13113         c = c.lower();
13114         while ( n-- ) {
13115             if ( uc->lower() == c )
13116                 count++;
13117             uc++;
13118         }
13119     }
13120     return count;
13121 }
13122
13123 /*!
13124   \overload
13125 */
13126 int QString::contains( const char* str, bool cs ) const
13127 {
13128     return contains(QString(str),cs);
13129 }
13130
13131 /*!
13132   \overload int QString::contains (char c, bool cs) const
13133 */
13134
13135 /*!
13136   \overload int QString::find (char c, int index, bool cs) const
13137
13138 */
13139
13140 /*!
13141   \overload int QString::findRev (char c, int index, bool cs) const
13142
13143 */
13144
13145 /*!
13146   Returns the number of times \a str occurs in the string.
13147
13148   The match is case sensitive if \a cs is TRUE, or case insensitive if \e
13149   cs is FALSE.
13150
13151   This function counts overlapping substrings, for example, "banana"
13152   contains two occurrences of "ana".
13153
13154   \sa findRev()
13155 */
13156
13157 int QString::contains( const QString &str, bool cs ) const
13158 {
13159     int count = 0;
13160     const QChar *uc = unicode();
13161     if ( !uc )
13162         return 0;
13163     int len = str.length();
13164     int n = length();
13165     while ( n-- ) {                             // counts overlapping strings
13166         // ### Doesn't account for length of this - searches over "end"
13167         if ( cs ) {
13168             if ( ucstrncmp( uc, str.unicode(), len ) == 0 )
13169                 count++;
13170         } else {
13171             if ( ucstrnicmp(uc, str.unicode(), len) == 0 )
13172                 count++;
13173         }
13174         uc++;
13175     }
13176     return count;
13177 }
13178
13179 /*!
13180   Returns a substring that contains the \a len leftmost characters
13181   of the string.
13182
13183   The whole string is returned if \a len exceeds the length of the
13184   string.
13185
13186
13187   Example:
13188   \code
13189     QString s = "Pineapple";
13190     QString t = s.left( 4 );    // t == "Pine"
13191   \endcode
13192
13193   \sa right(), mid(), isEmpty()
13194 */
13195
13196 QString QString::left( uint len ) const
13197 {
13198     if ( isEmpty() ) {
13199         return QString();
13200     } else if ( len == 0 ) {                    // ## just for 1.x compat:
13201         return QString::fromLatin1("");
13202     } else if ( len > length() ) {
13203         return *this;
13204     } else {
13205         QString s( len, TRUE );
13206         memcpy( s.d->unicode, d->unicode, len*sizeof(QChar) );
13207         s.d->len = len;
13208         return s;
13209     }
13210 }
13211
13212 /*!
13213   Returns a substring that contains the \a len rightmost characters
13214   of the string.
13215
13216   The whole string is returned if \a len exceeds the length of the
13217   string.
13218
13219   Example:
13220   \code
13221     QString s = "Pineapple";
13222     QString t = s.right( 5 );   // t == "apple"
13223   \endcode
13224
13225   \sa left(), mid(), isEmpty()
13226 */
13227
13228 QString QString::right( uint len ) const
13229 {
13230     if ( isEmpty() ) {
13231         return QString();
13232     } else if ( len == 0 ) {                    // ## just for 1.x compat:
13233         return QString::fromLatin1("");
13234     } else {
13235         uint l = length();
13236         if ( len > l )
13237             len = l;
13238         QString s( len, TRUE );
13239         memcpy( s.d->unicode, d->unicode+(l-len), len*sizeof(QChar) );
13240         s.d->len = len;
13241         return s;
13242     }
13243 }
13244
13245 /*!
13246   Returns a substring that contains the \a len characters of this
13247   string, starting at position \a index.
13248
13249   Returns a null string if the string is empty or \a index is out
13250   of range.  Returns the whole string from \a index if \a index+len exceeds
13251   the length of the string.
13252
13253   Example:
13254   \code
13255     QString s = "Five pineapples";
13256     QString t = s.mid( 5, 4 );                  // t == "pine"
13257   \endcode
13258
13259   \sa left(), right()
13260 */
13261
13262 QString QString::mid( uint index, uint len ) const
13263 {
13264     uint slen = length();
13265     if ( isEmpty() || index >= slen ) {
13266         return QString();
13267     } else if ( len == 0 ) {                    // ## just for 1.x compat:
13268         return QString::fromLatin1("");
13269     } else {
13270         if ( len > slen-index )
13271             len = slen - index;
13272         if ( index == 0 && len == length() )
13273             return *this;
13274         register const QChar *p = unicode()+index;
13275         QString s( len, TRUE );
13276         memcpy( s.d->unicode, p, len*sizeof(QChar) );
13277         s.d->len = len;
13278         return s;
13279     }
13280 }
13281
13282 /*!
13283   Returns a string of length \a width that contains this
13284   string and padded by the \a fill character.
13285
13286   If the length of the string exceeds \a width and \a truncate is FALSE,
13287   then the returned string is a copy of the string.
13288   If the length of the string exceeds \a width and \a truncate is TRUE,
13289   then the returned string is a left(\a width).
13290
13291   Example:
13292   \code
13293     QString s("apple");
13294     QString t = s.leftJustify(8, '.');          // t == "apple..."
13295   \endcode
13296
13297   \sa rightJustify()
13298 */
13299
13300 QString QString::leftJustify( uint width, QChar fill, bool truncate ) const
13301 {
13302     QString result;
13303     int len = length();
13304     int padlen = width - len;
13305     if ( padlen > 0 ) {
13306         result.setLength(len+padlen);
13307         if ( len )
13308             memcpy( result.d->unicode, unicode(), sizeof(QChar)*len );
13309         QChar* uc = result.d->unicode + len;
13310         while (padlen--)
13311             *uc++ = fill;
13312     } else {
13313         if ( truncate )
13314             result = left( width );
13315         else
13316             result = *this;
13317     }
13318     return result;
13319 }
13320
13321 /*!
13322   Returns a string of length \a width that contains pad
13323   characters followed by the string.
13324
13325   If the length of the string exceeds \a width and \a truncate is FALSE,
13326   then the returned string is a copy of the string.
13327   If the length of the string exceeds \a width and \a truncate is TRUE,
13328   then the returned string is a left(\a width).
13329
13330   Example:
13331   \code
13332     QString s("pie");
13333     QString t = s.rightJustify(8, '.');         // t == ".....pie"
13334   \endcode
13335
13336   \sa leftJustify()
13337 */
13338
13339 QString QString::rightJustify( uint width, QChar fill, bool truncate ) const
13340 {
13341     QString result;
13342     int len = length();
13343     int padlen = width - len;
13344     if ( padlen > 0 ) {
13345         result.setLength( len+padlen );
13346         QChar* uc = result.d->unicode;
13347         while (padlen--)
13348             *uc++ = fill;
13349         if ( len )
13350             memcpy( uc, unicode(), sizeof(QChar)*len );
13351     } else {
13352         if ( truncate )
13353             result = left( width );
13354         else
13355             result = *this;
13356     }
13357     return result;
13358 }
13359
13360 /*!
13361   Returns a new string that is the string converted to lower case.
13362
13363   Example:
13364   \code
13365     QString s("TeX");
13366     QString t = s.lower();      // t == "tex"
13367   \endcode
13368
13369   \sa upper()
13370 */
13371
13372 QString QString::lower() const
13373 {
13374     QString s(*this);
13375     int l=length();
13376     if ( l ) {
13377         s.real_detach(); // could do this only when we find a change
13378         register QChar *p=s.d->unicode;
13379         if ( p ) {
13380             while ( l-- ) {
13381                 *p = p->lower();
13382                 p++;
13383             }
13384         }
13385     }
13386     return s;
13387 }
13388
13389 /*!
13390   Returns a new string that is the string converted to upper case.
13391
13392   Example:
13393   \code
13394     QString s("TeX");
13395     QString t = s.upper();                      // t == "TEX"
13396   \endcode
13397
13398   \sa lower()
13399 */
13400
13401 QString QString::upper() const
13402 {
13403     QString s(*this);
13404     int l=length();
13405     if ( l ) {
13406         s.real_detach(); // could do this only when we find a change
13407         register QChar *p=s.d->unicode;
13408         if ( p ) {
13409             while ( l-- ) {
13410                 *p = p->upper();
13411                 p++;
13412             }
13413         }
13414     }
13415     return s;
13416 }
13417
13418
13419 /*!
13420   Returns a new string that has white space removed from the start and the end.
13421
13422   White space means any character for which QChar::isSpace() returns
13423   TRUE. This includes ASCII characters 9 (TAB), 10 (LF), 11 (VT), 12
13424   (FF), 13 (CR), and 32 (Space).
13425
13426   Example:
13427   \code
13428     QString s = " space ";
13429     QString t = s.stripWhiteSpace();            // t == "space"
13430   \endcode
13431
13432   \sa simplifyWhiteSpace()
13433 */
13434
13435 QString QString::stripWhiteSpace() const
13436 {
13437     if ( isEmpty() )                            // nothing to do
13438         return *this;
13439     if ( !at(0).isSpace() && !at(length()-1).isSpace() )
13440         return *this;
13441
13442     register const QChar *s = unicode();
13443     QString result = fromLatin1("");
13444
13445     int start = 0;
13446     int end = length() - 1;
13447     while ( start<=end && s[start].isSpace() )  // skip white space from start
13448         start++;
13449     if ( start > end ) {                        // only white space
13450         return result;
13451     }
13452     while ( end && s[end].isSpace() )           // skip white space from end
13453         end--;
13454     int l = end - start + 1;
13455     result.setLength( l );
13456     if ( l )
13457         memcpy( result.d->unicode, &s[start], sizeof(QChar)*l );
13458     return result;
13459 }
13460
13461
13462 /*!
13463   Returns a new string that has white space removed from the start and the end,
13464   plus any sequence of internal white space replaced with a single space
13465   (ASCII 32).
13466
13467   White space means any character for which QChar::isSpace() returns
13468   TRUE. This includes ASCII characters 9 (TAB), 10 (LF), 11 (VT), 12
13469   (FF), 13 (CR), and 32 (Space).
13470
13471   \code
13472     QString s = "  lots\t of\nwhite    space ";
13473     QString t = s.simplifyWhiteSpace();         // t == "lots of white space"
13474   \endcode
13475
13476   \sa stripWhiteSpace()
13477 */
13478
13479 QString QString::simplifyWhiteSpace() const
13480 {
13481     if ( isEmpty() )                            // nothing to do
13482         return *this;
13483     QString result;
13484     result.setLength( length() );
13485     const QChar *from = unicode();
13486     const QChar *fromend = from+length();
13487     int outc=0;
13488     QChar *to   = result.d->unicode;
13489     while ( TRUE ) {
13490         while ( from!=fromend && from->isSpace() )
13491             from++;
13492         while ( from!=fromend && !from->isSpace() )
13493             to[outc++] = *from++;
13494         if ( from!=fromend )
13495             to[outc++] = ' ';
13496         else
13497             break;
13498     }
13499     if ( outc > 0 && to[outc-1] == ' ' )
13500         outc--;
13501     result.truncate( outc );
13502     return result;
13503 }
13504
13505
13506 /*!
13507   Insert \a s into the string before position \a index.
13508
13509   If \a index is beyond the end of the string, the string is extended with
13510   spaces (ASCII 32) to length \a index and \a s is then appended.
13511
13512   \code
13513     QString s = "I like fish";
13514     s.insert( 2, "don't ");     // s == "I don't like fish"
13515     s = "x";
13516     s.insert( 3, "yz" );        // s == "x  yz"
13517   \endcode
13518 */
13519
13520 QString &QString::insert( uint index, const QString &s )
13521 {
13522     // the sub function takes care of &s == this case.
13523     return insert( index, s.unicode(), s.length() );
13524 }
13525
13526 /*!
13527   Insert \a len units of QChar data from \a s into the string before
13528   position \a index.
13529 */
13530
13531 QString &QString::insert( uint index, const QChar* s, uint len )
13532 {
13533     if ( len == 0 )
13534         return *this;
13535     uint olen = length();
13536     int nlen = olen + len;
13537
13538     int df = (int)(s - d->unicode); // ### pointer subtraction, cast down to int
13539     if ( df >= 0 && (uint)df < d->maxl ) {
13540         // Part of me - take a copy.
13541         QChar *tmp = QT_ALLOC_QCHAR_VEC( len );
13542         memcpy(tmp,s,len*sizeof(QChar));
13543         insert(index,tmp,len);
13544         QT_DELETE_QCHAR_VEC( tmp );
13545         return *this;
13546     }
13547
13548     if ( index >= olen ) {                      // insert after end of string
13549         setLength( len+index );
13550         int n = index-olen;
13551         QChar* uc = d->unicode+olen;
13552         while (n--)
13553             *uc++ = ' ';
13554         memcpy( d->unicode+index, s, sizeof(QChar)*len );
13555     } else {                                    // normal insert
13556         setLength( nlen );
13557         memmove( d->unicode+index+len, unicode()+index,
13558                  sizeof(QChar)*(olen-index) );
13559         memcpy( d->unicode+index, s, sizeof(QChar)*len );
13560     }
13561     return *this;
13562 }
13563
13564 /*!
13565   Insert \a c into the string at (before) position \a index and returns
13566   a reference to the string.
13567
13568   If \a index is beyond the end of the string, the string is extended with
13569   spaces (ASCII 32) to length \a index and \a c is then appended.
13570
13571   Example:
13572   \code
13573     QString s = "Ys";
13574     s.insert( 1, 'e' );         // s == "Yes"
13575     s.insert( 3, '!');          // s == "Yes!"
13576   \endcode
13577
13578   \sa remove(), replace()
13579 */
13580
13581 QString &QString::insert( uint index, QChar c ) // insert char
13582 {
13583     QString s( c );
13584     return insert( index, s );
13585 }
13586
13587 /*!
13588   \overload QString& QString::insert( uint index, char c )
13589 */
13590
13591 /*!
13592   \fn QString &QString::prepend( const QString &s )
13593
13594   Prepend \a s to the string. Equivalent to insert(0,s).
13595
13596   \sa insert()
13597 */
13598
13599 /*!
13600   \fn QString& QString::prepend( char ch )
13601   Prepends \a ch to the string and returns a reference to the result.
13602
13603   \sa insert()
13604  */
13605
13606 /*!
13607   \fn QString& QString::prepend( QChar ch )
13608   Prepends \a ch to the string and returns a reference to the result.
13609
13610   \sa insert()
13611  */
13612
13613
13614 /*!
13615   Removes \a len characters starting at position \a index from the
13616   string and returns a reference to the string.
13617
13618   If \a index is too big, nothing happens.  If \a index is valid, but
13619   \a len is too large, the rest of the string is removed.
13620
13621   \code
13622     QString s = "Montreal";
13623     s.remove( 1, 4 );
13624     // s == "Meal"
13625   \endcode
13626
13627   \sa insert(), replace()
13628 */
13629
13630 QString &QString::remove( uint index, uint len )
13631 {
13632     uint olen = length();
13633     if ( index + len >= olen ) {                // range problems
13634         if ( index < olen ) {                   // index ok
13635             setLength( index );
13636         }
13637     } else if ( len != 0 ) {
13638         real_detach();
13639         memmove( d->unicode+index, d->unicode+index+len,
13640                  sizeof(QChar)*(olen-index-len) );
13641         setLength( olen-len );
13642     }
13643     return *this;
13644 }
13645
13646 /*!
13647   Replaces \a len characters starting at position \a index from the
13648   string with \a s, and returns a reference to the string.
13649
13650   If \a index is too big, nothing is deleted and \a s is inserted at the
13651   end of the string.  If \a index is valid, but \a len is too large, \e
13652   str replaces the rest of the string.
13653
13654   \code
13655     QString s = "Say yes!";
13656     s.replace( 4, 3, "NO" );                    // s == "Say NO!"
13657   \endcode
13658
13659   \sa insert(), remove()
13660 */
13661
13662 QString &QString::replace( uint index, uint len, const QString &s )
13663 {
13664     return replace( index, len, s.unicode(), s.length() );
13665 }
13666
13667
13668 /*!
13669   Replaces \a len characters starting at position \a index by
13670   \a slen units ot QChar data from \a s, and returns a reference to the string.
13671
13672   \sa insert(), remove()
13673 */
13674
13675 QString &QString::replace( uint index, uint len, const QChar* s, uint slen )
13676 {
13677     if ( len == slen && index + len <= length() ) {
13678         // Optimized common case: replace without size change
13679         real_detach();
13680         memcpy( d->unicode+index, s, len*sizeof(QChar) );
13681     } else {
13682         int df = (int)(s - d->unicode); // ### pointer subtraction, cast down to int
13683         if ( df >= 0 && (uint)df < d->maxl ) {
13684             // Part of me - take a copy.
13685             QChar *tmp = QT_ALLOC_QCHAR_VEC( slen );
13686             memcpy(tmp,s,slen*sizeof(QChar));
13687             replace(index,len,tmp,slen);
13688             QT_DELETE_QCHAR_VEC( tmp );
13689             return *this;
13690         }
13691
13692         remove( index, len );
13693         insert( index, s, slen );
13694     }
13695     return *this;
13696 }
13697
13698
13699
13700 /*!
13701   Finds the first occurrence of the regular expression \a rx, starting at
13702   position \a index. If \a index is -1, the search starts at the last
13703   character; if -2, at the next to last character; etc.
13704
13705   Returns the position of the next match, or -1 if \a rx was not found.
13706
13707   \sa findRev() replace() contains()
13708 */
13709
13710 int QString::find( const QRegExp &rx, int index ) const
13711 {
13712     if ( index < 0 )
13713         index += length();
13714     return rx.match( data(), index );
13715 }
13716
13717 /*!
13718   Finds the first occurrence of the regular expression \a rx, starting at
13719   position \a index and searching backwards. If \a index is -1, the
13720   search starts at the last character; if -2, at the next to last
13721   character; etc.
13722
13723   Returns the position of the next match (backwards), or -1 if \a rx was not
13724   found.
13725
13726   \sa find()
13727 */
13728
13729 int QString::findRev( const QRegExp &rx, int index ) const
13730 {
13731     if ( index < 0 )                            // neg index ==> start from end
13732         index += length();
13733     if ( (uint)index > length() )               // bad index
13734         return -1;
13735     while( index >= 0 ) {
13736         if ( rx.match( data(), index ) == index )
13737             return index;
13738         index--;
13739     }
13740     return -1;
13741 }
13742
13743 /*!
13744   Counts the number of overlapping occurrences of \a rx in the string.
13745
13746   Example:
13747   \code
13748     QString s = "banana and panama";
13749     QRegExp r = QRegExp("a[nm]a", TRUE, FALSE);
13750     s.contains( r );                            // 4 matches
13751   \endcode
13752
13753   \sa find() findRev()
13754 */
13755
13756 int QString::contains( const QRegExp &rx ) const
13757 {
13758     if ( isEmpty() )
13759         return rx.match( data() ) < 0 ? 0 : 1;
13760     int count = 0;
13761     int index = -1;
13762     int len = length();
13763     while ( index < len-1 ) {                   // count overlapping matches
13764         index = rx.match( data(), index+1 );
13765         if ( index < 0 )
13766             break;
13767         count++;
13768     }
13769     return count;
13770 }
13771
13772
13773 /*!
13774   Replaces every occurrence of \a rx in the string with \a str.
13775   Returns a reference to the string.
13776
13777   Examples:
13778   \code
13779     QString s = "banana";
13780     s.replace( QRegExp("a.*a"), "" );           // becomes "b"
13781
13782     QString s = "banana";
13783     s.replace( QRegExp("^[bn]a"), " " );        // becomes " nana"
13784
13785     QString s = "banana";
13786     s.replace( QRegExp("^[bn]a"), "" );         // NOTE! becomes ""
13787   \endcode
13788
13789   \sa find() findRev()
13790 */
13791
13792 QString &QString::replace( const QRegExp &rx, const QString &str )
13793 {
13794     if ( isEmpty() )
13795         return *this;
13796     int index = 0;
13797     int slen  = str.length();
13798     int len;
13799     while ( index < (int)length() ) {
13800         index = rx.match( data(), index, &len, FALSE );
13801         if ( index >= 0 ) {
13802             replace( index, len, str );
13803             index += slen;
13804             if ( !len )
13805                 break;  // Avoid infinite loop on 0-length matches, e.g. [a-z]*
13806         }
13807         else
13808             break;
13809     }
13810     return *this;
13811 }
13812
13813 static bool
13814 ok_in_base( QChar c, int base )
13815 {
13816     if ( base <= 10 )
13817         return c.isDigit() && c.digitValue() < base;
13818     else
13819         return c.isDigit() || (c >= 'a' && c < char('a'+base-10))
13820                            || (c >= 'A' && c < char('A'+base-10));
13821 }
13822
13823 /*!
13824   Returns the string converted to a <code>long</code> value.
13825
13826   If \a ok is non-null, \a *ok is set to TRUE if there are no
13827   conceivable errors, and FALSE if the string is not a number at all, or if
13828   it has trailing garbage.
13829 */
13830
13831 long QString::toLong( bool *ok, int base ) const
13832 {
13833     const QChar *p = unicode();
13834     long val=0;
13835     int l = length();
13836     const long max_mult = INT_MAX / base;
13837     bool is_ok = FALSE;
13838     int neg = 0;
13839     if ( !p )
13840         goto bye;
13841     while ( l && p->isSpace() )                 // skip leading space
13842         l--,p++;
13843     if ( l && *p == '-' ) {
13844         l--;
13845         p++;
13846         neg = 1;
13847     } else if ( *p == '+' ) {
13848         l--;
13849         p++;
13850     }
13851
13852     // NOTE: toULong() code is similar
13853     if ( !l || !ok_in_base(*p,base) )
13854         goto bye;
13855     while ( l && ok_in_base(*p,base) ) {
13856         l--;
13857         int dv;
13858         if ( p->isDigit() ) {
13859             dv = p->digitValue();
13860         } else {
13861             if ( *p >= 'a' && *p <= 'z' )
13862                 dv = *p - 'a' + 10;
13863             else
13864                 dv = *p - 'A' + 10;
13865         }
13866         if ( val > max_mult || (val == max_mult && dv > (INT_MAX%base)+neg) )
13867             goto bye;
13868         val = base*val + dv;
13869         p++;
13870     }
13871     if ( neg )
13872         val = -val;
13873     while ( l && p->isSpace() )                 // skip trailing space
13874         l--,p++;
13875     if ( !l )
13876         is_ok = TRUE;
13877 bye:
13878     if ( ok )
13879         *ok = is_ok;
13880     return is_ok ? val : 0;
13881 }
13882
13883 /*!
13884   Returns the string converted to an <code>unsigned long</code>
13885   value.
13886
13887   If \a ok is non-null, \a *ok is set to TRUE if there are no
13888   conceivable errors, and FALSE if the string is not a number at all,
13889   or if it has trailing garbage.
13890 */
13891
13892 ulong QString::toULong( bool *ok, int base ) const
13893 {
13894     const QChar *p = unicode();
13895     ulong val=0;
13896     int l = length();
13897     const ulong max_mult = 429496729;           // UINT_MAX/10, rounded down
13898     bool is_ok = FALSE;
13899     if ( !p )
13900         goto bye;
13901     while ( l && p->isSpace() )                 // skip leading space
13902         l--,p++;
13903     if ( *p == '+' )
13904         l--,p++;
13905
13906     // NOTE: toLong() code is similar
13907     if ( !l || !ok_in_base(*p,base) )
13908         goto bye;
13909     while ( l && ok_in_base(*p,base) ) {
13910         l--;
13911         uint dv;
13912         if ( p->isDigit() ) {
13913             dv = p->digitValue();
13914         } else {
13915             if ( *p >= 'a' && *p <= 'z' )
13916                 dv = *p - 'a' + 10;
13917             else
13918                 dv = *p - 'A' + 10;
13919         }
13920         if ( val > max_mult || (val == max_mult && dv > (UINT_MAX%base)) )
13921             goto bye;
13922         val = base*val + dv;
13923         p++;
13924     }
13925
13926     while ( l && p->isSpace() )                 // skip trailing space
13927         l--,p++;
13928     if ( !l )
13929         is_ok = TRUE;
13930 bye:
13931     if ( ok )
13932         *ok = is_ok;
13933     return is_ok ? val : 0;
13934 }
13935
13936 /*!
13937   Returns the string converted to a <code>short</code> value.
13938
13939   If \a ok is non-null, \a *ok is set to TRUE if there are no
13940   conceivable errors, and FALSE if the string is not a number at all, or if
13941   it has trailing garbage.
13942 */
13943
13944 short QString::toShort( bool *ok, int base ) const
13945 {
13946     long v = toLong( ok, base );
13947     if ( ok && *ok && (v < -32768 || v > 32767) ) {
13948         *ok = FALSE;
13949         v = 0;
13950     }
13951     return (short)v;
13952 }
13953
13954 /*!
13955   Returns the string converted to an <code>unsigned short</code> value.
13956
13957   If \a ok is non-null, \a *ok is set to TRUE if there are no
13958   conceivable errors, and FALSE if the string is not a number at all, or if
13959   it has trailing garbage.
13960 */
13961
13962 ushort QString::toUShort( bool *ok, int base ) const
13963 {
13964     ulong v = toULong( ok, base );
13965     if ( ok && *ok && (v > 65535) ) {
13966         *ok = FALSE;
13967         v = 0;
13968     }
13969     return (ushort)v;
13970 }
13971
13972
13973 /*!
13974   Returns the string converted to a <code>int</code> value.
13975
13976   \code
13977   QString str("FF");
13978   bool ok;
13979   int hex = str.toInt( &ok, 16 ); // will return 255, and ok set to TRUE
13980   int dec = str.toInt( &ok, 10 ); // will return 0, and ok set to FALSE
13981   \endcode
13982
13983   If \a ok is non-null, \a *ok is set to TRUE if there are no
13984   conceivable errors, and FALSE if the string is not a number at all,
13985   or if it has trailing garbage.
13986 */
13987
13988 int QString::toInt( bool *ok, int base ) const
13989 {
13990     return (int)toLong( ok, base );
13991 }
13992
13993 /*!
13994   Returns the string converted to an <code>unsigned int</code> value.
13995
13996   If \a ok is non-null, \a *ok is set to TRUE if there are no
13997   conceivable errors, and FALSE if the string is not a number at all,
13998   or if it has trailing garbage.
13999 */
14000
14001 uint QString::toUInt( bool *ok, int base ) const
14002 {
14003     return (uint)toULong( ok, base );
14004 }
14005
14006 /*!
14007   Returns the string converted to a <code>double</code> value.
14008
14009   If \a ok is non-null, \a *ok is set to TRUE if there are no conceivable
14010   errors, and FALSE if the string is not a number at all, or if it has
14011   trailing garbage.
14012 */
14013
14014 double QString::toDouble( bool *ok ) const
14015 {
14016     char *end;
14017
14018     QCString a = latin1();
14019     // Just latin1() is not sufficient, since U0131 would look like '1'.
14020     for (uint i=0; i<d->len; i++)
14021         if ( d->unicode[i].row() )
14022             a[(int)i]='z';
14023
14024     double val = strtod( a.data() ? a.data() : "", &end );
14025     if ( ok )
14026         *ok = ( a && *a && ( end == 0 || *end == '\0' ) );
14027     return val;
14028 }
14029
14030 /*!
14031   Returns the string converted to a <code>float</code> value.
14032
14033   If \a ok is non-null, \a *ok is set to TRUE if there are no
14034   conceivable errors, and FALSE if the string is not a number at all,
14035   or if it has trailing garbage.
14036 */
14037
14038 float QString::toFloat( bool *ok ) const
14039 {
14040     return (float)toDouble( ok );
14041 }
14042
14043
14044 /*!
14045   Sets the string to the printed value of \a n and returns a
14046   reference to the string.
14047
14048   The value is converted to \a base notation (default is decimal).
14049   The base must be a value from 2 to 36.
14050 */
14051
14052 QString &QString::setNum( long n, int base )
14053 {
14054 #if defined(CHECK_RANGE)
14055     if ( base < 2 || base > 36 ) {
14056         qWarning( "QString::setNum: Invalid base %d", base );
14057         base = 10;
14058     }
14059 #endif
14060     char   charbuf[65*sizeof(QChar)];
14061     QChar *buf = (QChar*)charbuf;
14062     QChar *p = &buf[64];
14063     int  len = 0;
14064     bool neg;
14065     if ( n < 0 ) {
14066         neg = TRUE;
14067         if ( n == INT_MIN ) {
14068             // Cannot always negate this special case
14069             QString s1, s2;
14070             s1.setNum(n/base);
14071             s2.setNum((-(n+base))%base);
14072             *this = s1 + s2;
14073             return *this;
14074         }
14075         n = -n;
14076     } else {
14077         neg = FALSE;
14078     }
14079     do {
14080         *--p = "0123456789abcdefghijklmnopqrstuvwxyz"[((int)(n%base))];
14081         n /= base;
14082         len++;
14083     } while ( n );
14084     if ( neg ) {
14085         *--p = '-';
14086         len++;
14087     }
14088     return setUnicode( p, len );
14089 }
14090
14091 /*!
14092   Sets the string to the printed unsigned value of \a n and
14093   returns a reference to the string.
14094
14095   The value is converted to \a base notation (default is decimal).
14096   The base must be a value from 2 to 36.
14097 */
14098
14099 QString &QString::setNum( ulong n, int base )
14100 {
14101 #if defined(CHECK_RANGE)
14102     if ( base < 2 || base > 36 ) {
14103         qWarning( "QString::setNum: Invalid base %d", base );
14104         base = 10;
14105     }
14106 #endif
14107     char   charbuf[65*sizeof(QChar)];
14108     QChar *buf = (QChar*)charbuf;
14109     QChar *p = &buf[64];
14110     int len = 0;
14111     do {
14112         *--p = "0123456789abcdefghijklmnopqrstuvwxyz"[((int)(n%base))];
14113         n /= base;
14114         len++;
14115     } while ( n );
14116     return setUnicode(p,len);
14117 }
14118
14119 /*!
14120   \fn QString &QString::setNum( int n, int base )
14121   Sets the string to the printed value of \a n and returns a reference
14122   to the string.
14123 */
14124
14125 /*!
14126   \fn QString &QString::setNum( uint n, int base )
14127   Sets the string to the printed unsigned value of \a n and returns a
14128   reference to the string.
14129 */
14130
14131 /*!
14132   \fn QString &QString::setNum( short n, int base )
14133   Sets the string to the printed value of \a n and returns a reference
14134   to the string.
14135 */
14136
14137 /*!
14138   \fn QString &QString::setNum( ushort n, int base )
14139   Sets the string to the printed unsigned value of \a n and returns a
14140   reference to the string.
14141 */
14142
14143 /*!  Sets the string to the printed value of \a n, formatted in the \a f
14144   format with \a prec precision, and returns a reference to the
14145   string.
14146
14147   \a f can be 'f', 'F', 'e', 'E', 'g' or 'G', all of which have the
14148   same meaning as for sprintf().
14149 */
14150
14151 QString &QString::setNum( double n, char f, int prec )
14152 {
14153 #if defined(CHECK_RANGE)
14154     if ( !(f=='f' || f=='F' || f=='e' || f=='E' || f=='g' || f=='G') ) {
14155         qWarning( "QString::setNum: Invalid format char '%c'", f );
14156         f = 'f';
14157     }
14158 #endif
14159     char format[20];
14160     char buf[120];                              // enough for 99 precision?
14161     char *fs = format;                          // generate format string
14162     *fs++ = '%';                                //   "%.<prec>l<f>"
14163     if ( prec >= 0 ) {
14164         if ( prec > 99 )                        // buf big enough for precision?
14165             prec = 99;
14166         *fs++ = '.';
14167         if ( prec >= 10 ) {
14168             *fs++ = prec / 10 + '0';
14169             *fs++ = prec % 10 + '0';
14170         } else {
14171             *fs++ = prec + '0';
14172         }
14173     }
14174     *fs++ = 'l';
14175     *fs++ = f;
14176     *fs = '\0';
14177     ::sprintf( buf, format, n );
14178     return setLatin1(buf);
14179 }
14180
14181 /*!
14182   \overload QString &QString::setNum( float n, char f, int prec )
14183 */
14184
14185
14186 /*!
14187   A convenience factory function that returns a string representation
14188   of the number \a n.
14189
14190   \sa setNum()
14191  */
14192 QString QString::number( long n, int base )
14193 {
14194     QString s;
14195     s.setNum( n, base );
14196     return s;
14197 }
14198
14199 /*!
14200   A convenience factory function that returns a string representation
14201   of the number \a n.
14202
14203   \sa setNum()
14204  */
14205 QString QString::number( ulong n, int base )
14206 {
14207     QString s;
14208     s.setNum( n, base );
14209     return s;
14210 }
14211
14212 /*!
14213   A convenience factory function that returns a string representation
14214   of the number \a n.
14215
14216   \sa setNum()
14217  */
14218 QString QString::number( int n, int base )
14219 {
14220     QString s;
14221     s.setNum( n, base );
14222     return s;
14223 }
14224
14225 /*!
14226   A convenience factory function that returns a string representation
14227   of the number \a n.
14228
14229   \sa setNum()
14230  */
14231 QString QString::number( uint n, int base )
14232 {
14233     QString s;
14234     s.setNum( n, base );
14235     return s;
14236 }
14237
14238 /*!
14239   This static function returns the printed value of \a n, formatted in the
14240   \a f format with \a prec precision.
14241
14242   \a f can be 'f', 'F', 'e', 'E', 'g' or 'G', all of which have the
14243   same meaning as for sprintf().
14244
14245   \sa setNum()
14246  */
14247 QString QString::number( double n, char f, int prec )
14248 {
14249     QString s;
14250     s.setNum( n, f, prec );
14251     return s;
14252 }
14253
14254
14255 /*! \obsolete
14256
14257   Sets the character at position \a index to \a c and expands the
14258   string if necessary, filling with spaces.
14259
14260   This method is redundant in Qt 2.x, because operator[] will expand
14261   the string as necessary.
14262 */
14263
14264 void QString::setExpand( uint index, QChar c )
14265 {
14266     int spaces = index - d->len;
14267     at(index) = c;
14268     while (spaces-->0)
14269         d->unicode[--index]=' ';
14270 }
14271
14272
14273 /*!
14274   \fn const char* QString::data() const
14275
14276   \obsolete
14277
14278   Returns a pointer to a 0-terminated classic C string.
14279
14280   In Qt 1.x, this returned a char* allowing direct manipulation of the
14281   string as a sequence of bytes.  In Qt 2.x where QString is a Unicode
14282   string, char* conversion constructs a temporary string, and hence
14283   direct character operations are meaningless.
14284 */
14285
14286 /*!
14287   \fn bool QString::operator!() const
14288   Returns TRUE if it is a null string, otherwise FALSE.  Thus
14289   you can write:
14290
14291 \code
14292   QString name = getName();
14293   if ( !name )
14294     name = "Rodney";
14295 \endcode
14296
14297   Note that if you say:
14298
14299 \code
14300   QString name = getName();
14301   if ( name )
14302     doSomethingWith(name);
14303 \endcode
14304
14305   Then this will call <tt>operator const char*()</tt>, which will do what
14306   you want, but rather inefficiently - you may wish to define the macro
14307   QT_NO_ASCII_CAST when writing code which you wish to strictly remain
14308   Unicode-clean.
14309
14310   When you want the above semantics, use <tt>!isNull()</tt>
14311   or even <tt>!!</tt>:
14312
14313 \code
14314   QString name = getName();
14315   if ( !!name )
14316     doSomethingWith(name);
14317 \endcode
14318 */
14319
14320
14321 /*!
14322   \fn QString& QString::append( const QString& str )
14323   Appends \a str to the string and returns a reference to the result.
14324   Equivalent to operator+=().
14325  */
14326
14327 /*!
14328   \fn QString& QString::append( char ch )
14329   Appends \a ch to the string and returns a reference to the result.
14330   Equivalent to operator+=().
14331  */
14332
14333 /*!
14334   \fn QString& QString::append( QChar ch )
14335   Appends \a ch to the string and returns a reference to the result.
14336   Equivalent to operator+=().
14337  */
14338
14339 /*!
14340   Appends \a str to the string and returns a reference to the string.
14341 */
14342 QString& QString::operator+=( const QString &str )
14343 {
14344     uint len1 = length();
14345     uint len2 = str.length();
14346     if ( len2 ) {
14347         setLength(len1+len2);
14348         memcpy( d->unicode+len1, str.unicode(), sizeof(QChar)*len2 );
14349     } else if ( isNull() && !str.isNull() ) {   // ## just for 1.x compat:
14350         *this = fromLatin1("");
14351     }
14352     return *this;
14353 }
14354
14355 /*!
14356   Appends \a c to the string and returns a reference to the string.
14357 */
14358
14359 QString &QString::operator+=( QChar c )
14360 {
14361     setLength(length()+1);
14362     d->unicode[length()-1] = c;
14363     return *this;
14364 }
14365
14366 /*!
14367   Appends \a c to the string and returns a reference to the string.
14368 */
14369
14370 QString &QString::operator+=( char c )
14371 {
14372     setLength(length()+1);
14373     d->unicode[length()-1] = c;
14374     return *this;
14375 }
14376
14377
14378
14379 /*! \fn char QChar::latin1() const
14380
14381   Returns a latin-1 copy of this character, if this character is in
14382   the latin-1 character set.  If not, this function returns 0.
14383 */
14384
14385
14386 /*!
14387   Returns a Latin-1 representation of the string. Note that the returned
14388   value is undefined if the string contains non-Latin-1 characters.  If you
14389   want to convert strings into formats other than Unicode, see the
14390   QTextCodec classes.
14391
14392   This function is mainly useful for boot-strapping legacy code to
14393   use Unicode.
14394
14395   The result remains valid so long as one unmodified
14396   copy of the source string exists.
14397
14398   \sa utf8(), local8Bit()
14399 */
14400 const char* QString::latin1() const
14401 {
14402     if ( d->ascii ) {
14403         if ( d->dirtyascii )
14404             delete [] d->ascii;
14405         else
14406             return d->ascii;
14407     }
14408     Q2HELPER(stat_get_ascii++)
14409     Q2HELPER(stat_get_ascii_size+=d->len)
14410     static QTextCodec* codec = QTextCodec::codecForMib(106);
14411     if (codec) // we use utf8 coding also for latin1 if possible
14412     {
14413       QCString utf8str(codec->fromUnicode(*this));
14414       d->ascii = new char[utf8str.length()+1];
14415       if (utf8str.isEmpty())
14416       {
14417         d->ascii[0]='\0'; // make empty string
14418       }
14419       else // copy string
14420       {
14421         qstrcpy(d->ascii,utf8str.data());
14422       }
14423     }
14424     else // fall back to latin1
14425     {
14426       d->ascii = unicodeToAscii( d->unicode, d->len );
14427     }
14428     QCString utf8str(utf8());
14429     d->dirtyascii = 0;
14430     return d->ascii;
14431 }
14432
14433 /*! \obsolete
14434
14435   This functions simply calls latin1() and returns the result.
14436 */
14437 const char* QString::ascii() const
14438 {
14439     return latin1();
14440 }
14441
14442 #ifndef QT_NO_TEXTCODEC
14443 /*!
14444   Returns the string encoded in UTF8 format.
14445
14446   See QTextCodec for more diverse coding/decoding of Unicode strings.
14447
14448   \sa QString::fromUtf8(), local8Bit(), latin1()
14449 */
14450 QCString QString::utf8() const
14451 {
14452     static QTextCodec* codec = QTextCodec::codecForMib(106);
14453     return codec
14454             ? codec->fromUnicode(*this)
14455             : QCString(latin1());
14456 }
14457
14458 /*!
14459   Returns the unicode string decoded from the
14460   first \a len bytes of \a utf8.  If \a len is -1 (the default), the
14461   length of \a utf8 is used.  If trailing partial characters are in
14462   \a utf8, they are ignored.
14463
14464   See QTextCodec for more diverse coding/decoding of Unicode strings.
14465 */
14466 QString QString::fromUtf8(const char* utf8, int len)
14467 {
14468     static QTextCodec* codec = QTextCodec::codecForMib(106);
14469     if ( len < 0 ) len = qstrlen(utf8);
14470     return codec
14471             ? codec->toUnicode(utf8, len)
14472             : QString::fromLatin1(utf8, len);
14473 }
14474 #endif // QT_NO_TEXTCODEC
14475 /*!
14476   Creates a QString from Latin1 text.  This is the same as the
14477   QString(const char*) constructor, but you can make that constructor
14478   invisible if you compile with the define QT_NO_CAST_ASCII, in which
14479   case you can explicitly create a QString from Latin-1 text using
14480   this function.
14481 */
14482 QString QString::fromLatin1(const char* chars, int len)
14483 {
14484     uint l;
14485     QChar *uc;
14486     if ( len < 0 ) {
14487         uc = internalAsciiToUnicode(chars,&l);
14488     } else {
14489         uc = internalAsciiToUnicode(chars,&l,len);
14490     }
14491     return QString(new QStringData(uc,l,l), TRUE);
14492 }
14493
14494 /*!
14495   \fn const QChar* QString::unicode() const
14496
14497   Returns the Unicode representation of the string.  The result
14498   remains valid until the string is modified.
14499 */
14500
14501 /*!
14502   Returns the string encoded in a locale-specific format.  On X11, this
14503   is the QTextCodec::codecForLocale().  On Windows, it is a system-defined
14504   encoding.
14505
14506   See QTextCodec for more diverse coding/decoding of Unicode strings.
14507
14508   \sa QString::fromLocal8Bit(), latin1(), utf8()
14509 */
14510
14511
14512 QCString QString::local8Bit() const
14513 {
14514 #ifdef QT_NO_TEXTCODEC
14515     return latin1();
14516 #else
14517 #ifdef _WS_X11_
14518     static QTextCodec* codec = QTextCodec::codecForLocale();
14519     return codec
14520             ? codec->fromUnicode(*this)
14521             : QCString(latin1());
14522 #endif
14523 #ifdef _WS_MAC_
14524     static QTextCodec* codec = QTextCodec::codecForLocale();
14525     return codec
14526             ? codec->fromUnicode(*this)
14527             : QCString(latin1());
14528 #endif
14529 #ifdef _WS_WIN_
14530     return qt_winQString2MB( *this );
14531 #endif
14532 #ifdef _WS_QWS_
14533     return utf8(); // ##### if there is ANY 8 bit format supported?
14534 #endif
14535 #endif
14536 }
14537
14538 /*!
14539   Returns the unicode string decoded from the
14540   first \a len bytes of \a local8Bit.  If \a len is -1 (the default), the
14541   length of \a local8Bit is used.  If trailing partial characters are in
14542   \a local8Bit, they are ignored.
14543
14544   \a local8Bit is assumed to be encoded in a locale-specific format.
14545
14546   See QTextCodec for more diverse coding/decoding of Unicode strings.
14547 */
14548 QString QString::fromLocal8Bit(const char* local8Bit, int len)
14549 {
14550 #ifdef QT_NO_TEXTCODEC
14551     return fromLatin1( local8Bit, len );
14552 #else
14553
14554     if ( !local8Bit )
14555         return QString::null;
14556 #ifdef _WS_X11_
14557     static QTextCodec* codec = QTextCodec::codecForLocale();
14558     if ( len < 0 ) len = qstrlen(local8Bit);
14559     return codec
14560             ? codec->toUnicode(local8Bit, len)
14561             : QString::fromLatin1(local8Bit,len);
14562 #endif
14563 #ifdef _WS_MAC_
14564     static QTextCodec* codec = QTextCodec::codecForLocale();
14565     if ( len < 0 ) len = qstrlen(local8Bit);
14566     return codec
14567             ? codec->toUnicode(local8Bit, len)
14568             : QString::fromLatin1(local8Bit,len);
14569 #endif
14570 // Should this be OS_WIN32?
14571 #ifdef _WS_WIN_
14572     if ( len >= 0 ) {
14573         QCString s(local8Bit,len+1);
14574         return qt_winMB2QString(s);
14575     }
14576     return qt_winMB2QString( local8Bit );
14577 #endif
14578 #ifdef _WS_QWS_
14579     return fromUtf8(local8Bit,len);
14580 #endif
14581 #endif // QT_NO_TEXTCODEC
14582 }
14583
14584 /*!
14585   \fn QString::operator const char *() const
14586
14587   Returns latin1().  Be sure to see the warnings documented there.
14588   Note that for new code which you wish to be strictly Unicode-clean,
14589   you can define the macro QT_NO_ASCII_CAST when compiling your code
14590   to hide this function so that automatic casts are not done.  This
14591   has the added advantage that you catch the programming error
14592   described under operator!().
14593 */
14594
14595 /*!
14596   \fn QChar QString::at( uint ) const
14597
14598   Returns the character at \a i, or 0 if \a i is beyond the length
14599   of the string.
14600
14601   Note: If this QString is not const or const&, the non-const at()
14602   will be used instead, which will expand the string if \a i is beyond
14603   the length of the string.
14604 */
14605
14606 /*!
14607   \fn QChar QString::constref(uint i) const
14608   Equivalent to at(i), this returns the QChar at \a i by value.
14609
14610   \sa ref()
14611 */
14612
14613 /*!
14614   \fn QChar& QString::ref(uint i)
14615   Returns the QChar at \a i by reference.
14616
14617   \sa constref()
14618 */
14619
14620 /*!
14621   \fn QChar QString::operator[](int) const
14622
14623   Returns the character at \a i, or QChar::null if \a i is beyond the
14624   length of the string.
14625
14626   Note: If this QString is not const or const&, the non-const operator[]
14627   will be used instead, which will expand the string if \a i is beyond
14628   the length of the string.
14629 */
14630
14631 /*!
14632   \fn QCharRef QString::operator[](int)
14633
14634   Returns an object that references the character at \a i.
14635   This reference
14636   can then be assigned to, or otherwise used immediately, but
14637   becomes invalid once further modifications are made to the string.
14638   The QCharRef internal class can be used much like a constant QChar, but
14639   if you assign to it, you change the original string (which enlarges
14640   and detaches itself). You will get compilation errors if you try to
14641   use the result as anything but a QChar.
14642 */
14643
14644 /*!
14645   \fn QCharRef QString::at( uint i )
14646   Returns a reference to the character at \a i, expanding
14647   the string with QChar::null if necessary.  The resulting reference
14648   can then be assigned to, or otherwise used immediately, but
14649   becomes invalid once further modifications are made to the string.
14650 */
14651
14652 /*!
14653   Internal chunk of code to handle the
14654   uncommon cases of at() above.
14655 */
14656 void QString::subat( uint i )
14657 {
14658     uint olen = d->len;
14659     if ( i >= olen ) {
14660         setLength( i+1 );               // i is index; i+1 is needed length
14661         for ( uint j=olen; j<=i; j++ )
14662             d->unicode[j] = QChar::null;
14663     } else {
14664         // Just be sure to detach
14665         real_detach();
14666     }
14667 }
14668
14669
14670 /*!
14671   Resizes the string to \a len unicode characters and copies \a unicode
14672   into the string.  If \a unicode is null, nothing is copied, but the
14673   string is resized to \a len anyway. If \a len is zero, the string
14674   becomes a \link isNull() null\endlink string.
14675
14676   \sa setLatin1(), isNull()
14677 */
14678
14679 QString& QString::setUnicode( const QChar *unicode, uint len )
14680 {
14681     if ( len == 0 ) {                           // set to null string
14682         if ( d != shared_null ) {               // beware of nullstring being set to nullstring
14683             deref();
14684             d = shared_null ? shared_null : makeSharedNull();
14685             d->ref();
14686         }
14687     } else if ( d->count != 1 || len > d->maxl ||
14688          ( len*4 < d->maxl && d->maxl > 4 ) ) { // detach, grown or shrink
14689         Q2HELPER(stat_copy_on_write++)
14690         Q2HELPER(stat_copy_on_write_size+=d->len)
14691         uint newMax = 4;
14692         while ( newMax < len )
14693             newMax *= 2;
14694         QChar* nd = QT_ALLOC_QCHAR_VEC( newMax );
14695         if ( unicode )
14696             memcpy( nd, unicode, sizeof(QChar)*len );
14697         deref();
14698         d = new QStringData( nd, len, newMax );
14699     } else {
14700         d->len = len;
14701         d->dirtyascii = 1;
14702         if ( unicode )
14703             memcpy( d->unicode, unicode, sizeof(QChar)*len );
14704     }
14705     return *this;
14706 }
14707
14708 /*!
14709   Resizes the string to \a len unicode characters and copies
14710   \a unicode_as_ushorts into the string (on some X11 client
14711   platforms this will involve a byte-swapping pass).
14712
14713   If \a unicode is null, nothing is copied, but the
14714   string is resized to \a len anyway. If \a len is zero, the string
14715   becomes a \link isNull() null\endlink string.
14716
14717   \sa setLatin1(), isNull()
14718 */
14719 QString& QString::setUnicodeCodes( const ushort* unicode_as_ushorts, uint len )
14720 {
14721     setUnicode((const QChar*)unicode_as_ushorts, len);
14722     QChar t(0x1234);
14723     if ( unicode_as_ushorts && *((ushort*)&t) == 0x3412 ) {
14724         // Need to byteswap
14725         char* b = (char*)d->unicode;
14726         while ( len-- ) {
14727             char c = b[0];
14728             b[0] = b[1];
14729             b[1] = c;
14730             b += sizeof(QChar);
14731         }
14732     }
14733     return *this;
14734 }
14735
14736
14737 /*!
14738   Sets this string to \a str, interpreted as a classic Latin 1 C string.
14739   If the \a len argument is negative (default), it is set to strlen(str).
14740
14741   If \a str is 0 a null string is created.  If \a str is "" an empty
14742   string is created.
14743
14744   \sa isNull(), isEmpty()
14745 */
14746
14747 QString &QString::setLatin1( const char *str, int len )
14748 {
14749     if ( str == 0 )
14750         return setUnicode(0,0);
14751     if ( len < 0 )
14752         len = qstrlen(str);
14753     if ( len == 0 ) {                           // won't make a null string
14754         deref();
14755         uint l;
14756         QChar *uc = internalAsciiToUnicode(str,&l);
14757         d = new QStringData(uc,l,l);
14758     } else {
14759         setUnicode( 0, len );                   // resize but not copy
14760         QChar *p = d->unicode;
14761         while ( len-- )
14762             *p++ = *str++;
14763     }
14764     return *this;
14765 }
14766
14767
14768 /*!
14769   \fn int QString::compare (const QString & s1, const QString & s2)
14770
14771   Compare \a s1 to \a s2 returning an integer less than, equal to, or
14772   greater than zero if s1 is, respectively, lexically less than, equal to,
14773   or greater than s2.
14774 */
14775
14776 /*!
14777   Compares this string to \a s, returning an integer less than, equal to, or
14778   greater than zero if it is, respectively, lexically less than, equal to,
14779   or greater than \a s.
14780 */
14781 int QString::compare( const QString& s ) const
14782 {
14783     return ucstrcmp(*this,s);
14784 }
14785
14786 bool operator==( const QString &s1, const QString &s2 )
14787 {
14788     return (s1.length() == s2.length()) && s1.isNull() == s2.isNull() &&
14789            (memcmp((char*)s1.unicode(),(char*)s2.unicode(),
14790                    s1.length()*sizeof(QChar)) ==0);
14791 }
14792
14793 bool operator!=( const QString &s1, const QString &s2 )
14794 { return !(s1==s2); }
14795
14796 bool operator<( const QString &s1, const QString &s2 )
14797 { return ucstrcmp(s1,s2) < 0; }
14798
14799 bool operator<=( const QString &s1, const QString &s2 )
14800 { return ucstrcmp(s1,s2) <= 0; }
14801
14802 bool operator>( const QString &s1, const QString &s2 )
14803 { return ucstrcmp(s1,s2) > 0; }
14804
14805 bool operator>=( const QString &s1, const QString &s2 )
14806 { return ucstrcmp(s1,s2) >= 0; }
14807
14808
14809 bool operator==( const QString &s1, const char *s2 )
14810 { return s1==QString(s2); }
14811
14812 bool operator==( const char *s1, const QString &s2 )
14813 { return QString(s1)==s2; }
14814
14815 bool operator!=( const QString &s1, const char *s2 )
14816 { return !(s1==s2); }
14817
14818 bool operator!=( const char *s1, const QString &s2 )
14819 { return !(s1==s2); }
14820
14821 bool operator<( const QString &s1, const char *s2 )
14822 { return ucstrcmp(s1,s2) < 0; }
14823
14824 bool operator<( const char *s1, const QString &s2 )
14825 { return ucstrcmp(s1,s2) < 0; }
14826
14827 bool operator<=( const QString &s1, const char *s2 )
14828 { return ucstrcmp(s1,s2) <= 0; }
14829
14830 bool operator<=( const char *s1, const QString &s2 )
14831 { return ucstrcmp(s1,s2) <= 0; }
14832
14833 bool operator>( const QString &s1, const char *s2 )
14834 { return ucstrcmp(s1,s2) > 0; }
14835
14836 bool operator>( const char *s1, const QString &s2 )
14837 { return ucstrcmp(s1,s2) > 0; }
14838
14839 bool operator>=( const QString &s1, const char *s2 )
14840 { return ucstrcmp(s1,s2) >= 0; }
14841
14842 bool operator>=( const char *s1, const QString &s2 )
14843 { return ucstrcmp(s1,s2) >= 0; }
14844
14845
14846 /*****************************************************************************
14847   Documentation for QString related functions
14848  *****************************************************************************/
14849
14850 /*!
14851   \fn bool operator==( const QString &s1, const QString &s2 )
14852   \relates QString
14853   Returns TRUE if the two strings are equal, or FALSE if they are different.
14854   A null string is different from an empty, non-null string.
14855
14856   Equivalent to <code>qstrcmp(s1,s2) == 0</code>.
14857 */
14858
14859 /*!
14860   \fn bool operator==( const QString &s1, const char *s2 )
14861   \relates QString
14862   Returns TRUE if the two strings are equal, or FALSE if they are different.
14863
14864   Equivalent to <code>qstrcmp(s1,s2) == 0</code>.
14865 */
14866
14867 /*!
14868   \fn bool operator==( const char *s1, const QString &s2 )
14869   \relates QString
14870   Returns TRUE if the two strings are equal, or FALSE if they are different.
14871
14872   Equivalent to <code>qstrcmp(s1,s2) == 0</code>.
14873 */
14874
14875 /*!
14876   \fn bool operator!=( const QString &s1, const QString &s2 )
14877   \relates QString
14878   Returns TRUE if the two strings are different, or FALSE if they are equal.
14879
14880   Equivalent to <code>qstrcmp(s1,s2) != 0</code>.
14881 */
14882
14883 /*!
14884   \fn bool operator!=( const QString &s1, const char *s2 )
14885   \relates QString
14886   Returns TRUE if the two strings are different, or FALSE if they are equal.
14887
14888   Equivalent to <code>qstrcmp(s1,s2) != 0</code>.
14889 */
14890
14891 /*!
14892   \fn bool operator!=( const char *s1, const QString &s2 )
14893   \relates QString
14894   Returns TRUE if the two strings are different, or FALSE if they are equal.
14895
14896   Equivalent to <code>qstrcmp(s1,s2) != 0</code>.
14897 */
14898
14899 /*!
14900   \fn bool operator<( const QString &s1, const char *s2 )
14901   \relates QString
14902   Returns TRUE if \a s1 is alphabetically less than \a s2, otherwise FALSE.
14903
14904   Equivalent to <code>qstrcmp(s1,s2) \< 0</code>.
14905 */
14906
14907 /*!
14908   \fn bool operator<( const char *s1, const QString &s2 )
14909   \relates QString
14910   Returns TRUE if \a s1 is alphabetically less than \a s2, otherwise FALSE.
14911
14912   Equivalent to <code>qstrcmp(s1,s2) \< 0</code>.
14913 */
14914
14915 /*!
14916   \fn bool operator<=( const QString &s1, const char *s2 )
14917   \relates QString
14918   Returns TRUE if \a s1 is alphabetically less than or equal to \a s2,
14919   otherwise FALSE.
14920
14921   Equivalent to <code>qstrcmp(s1,s2) \<= 0</code>.
14922 */
14923
14924 /*!
14925   \fn bool operator<=( const char *s1, const QString &s2 )
14926   \relates QString
14927   Returns TRUE if \a s1 is alphabetically less than or equal to \a s2,
14928   otherwise FALSE.
14929
14930   Equivalent to <code>qstrcmp(s1,s2) \<= 0</code>.
14931 */
14932
14933 /*!
14934   \fn bool operator>( const QString &s1, const char *s2 )
14935   \relates QString
14936   Returns TRUE if \a s1 is alphabetically greater than \a s2, otherwise FALSE.
14937
14938   Equivalent to <code>qstrcmp(s1,s2) \> 0</code>.
14939 */
14940
14941 /*!
14942   \fn bool operator>( const char *s1, const QString &s2 )
14943   \relates QString
14944   Returns TRUE if \a s1 is alphabetically greater than \a s2, otherwise FALSE.
14945
14946   Equivalent to <code>qstrcmp(s1,s2) \> 0</code>.
14947 */
14948
14949 /*!
14950   \fn bool operator>=( const QString &s1, const char *s2 )
14951   \relates QString
14952   Returns TRUE if \a s1 is alphabetically greater than or equal to \a s2,
14953   otherwise FALSE.
14954
14955   Equivalent to <code>qstrcmp(s1,s2) \>= 0</code>.
14956 */
14957
14958 /*!
14959   \fn bool operator>=( const char *s1, const QString &s2 )
14960   \relates QString
14961   Returns TRUE if \a s1 is alphabetically greater than or equal to \a s2,
14962   otherwise FALSE.
14963
14964   Equivalent to <code>qstrcmp(s1,s2) \>= 0</code>.
14965 */
14966
14967 /*!
14968   \fn QString operator+( const QString &s1, const QString &s2 )
14969   \relates QString
14970   Returns the concatenated string of s1 and s2.
14971 */
14972
14973 /*!
14974   \fn QString operator+( const QString &s1, const char *s2 )
14975   \relates QString
14976   Returns the concatenated string of s1 and s2.
14977 */
14978
14979 /*!
14980   \fn QString operator+( const char *s1, const QString &s2 )
14981   \relates QString
14982   Returns the concatenated string of s1 and s2.
14983 */
14984
14985 /*!
14986   \fn QString operator+( const QString &s, char c )
14987   \relates QString
14988   Returns the concatenated string of s and c.
14989 */
14990
14991 /*!
14992   \fn QString operator+( char c, const QString &s )
14993   \relates QString
14994   Returns the concatenated string of c and s.
14995 */
14996
14997
14998 /*****************************************************************************
14999   QString stream functions
15000  *****************************************************************************/
15001 #ifndef QT_NO_DATASTREAM
15002 /*!
15003   \relates QString
15004   Writes a string to the stream.
15005
15006   \sa \link datastreamformat.html Format of the QDataStream operators \endlink
15007 */
15008
15009 QDataStream &operator<<( QDataStream &s, const QString &str )
15010 {
15011     if ( s.version() == 1 ) {
15012         QCString l( str.latin1() );
15013         s << l;
15014     }
15015     else {
15016         const char* ub = (const char*)str.unicode();
15017         if ( ub || s.version() < 3 ) {
15018             if ( QChar::networkOrdered() ==
15019                     (s.byteOrder()==QDataStream::BigEndian) ) {
15020                 s.writeBytes( ub, (int)sizeof(QChar)*str.length() );
15021             } else {
15022                 static const uint auto_size = 1024;
15023                 char t[auto_size];
15024                 char *b;
15025                 if ( str.length()*sizeof(QChar) > auto_size ) {
15026                     b = new char[str.length()*sizeof(QChar)];
15027                 } else {
15028                     b = t;
15029                 }
15030                 int l = str.length();
15031                 char *c=b;
15032                 while ( l-- ) {
15033                     *c++ = ub[1];
15034                     *c++ = ub[0];
15035                     ub+=sizeof(QChar);
15036                 }
15037                 s.writeBytes( b, (int)sizeof(QChar)*str.length() );
15038                 if ( str.length()*sizeof(QChar) > auto_size )
15039                     delete [] b;
15040             }
15041         } else {
15042             // write null marker
15043             s << (Q_UINT32)0xffffffff;
15044         }
15045     }
15046     return s;
15047 }
15048
15049 /*!
15050   \relates QString
15051   Reads a string from the stream.
15052
15053   \sa \link datastreamformat.html Format of the QDataStream operators \endlink
15054 */
15055
15056 QDataStream &operator>>( QDataStream &s, QString &str )
15057 {
15058 #ifdef QT_QSTRING_UCS_4
15059 #if defined(_CC_GNU_)
15060 #warning "operator>> not working properly"
15061 #endif
15062 #endif
15063     if ( s.version() == 1 ) {
15064         QCString l;
15065         s >> l;
15066         str = QString( l );
15067     }
15068     else {
15069         Q_UINT32 bytes;
15070         s >> bytes;                                     // read size of string
15071         if ( bytes == 0xffffffff ) {                    // null string
15072             str = QString::null;
15073         } else if ( bytes > 0 ) {                       // not empty
15074             str.setLength( bytes/2 );
15075             char* b = (char*)str.d->unicode;
15076             s.readRawBytes( b, bytes );
15077             if ( QChar::networkOrdered() !=
15078                     (s.byteOrder()==QDataStream::BigEndian) ) {
15079                 bytes /= 2;
15080                 while ( bytes-- ) {
15081                     char c = b[0];
15082                     b[0] = b[1];
15083                     b[1] = c;
15084                     b += 2;
15085                 }
15086             }
15087         } else {
15088             str = "";
15089         }
15090     }
15091     return s;
15092 }
15093 #endif // QT_NO_DATASTREAM
15094
15095 /*****************************************************************************
15096   QConstString member functions
15097  *****************************************************************************/
15098
15099 /*!
15100   \class QConstString qstring.h
15101   \brief A QString which uses constant Unicode data.
15102
15103   In order to minimize copying, highly optimized applications can use
15104   QConstString to provide a QString-compatible object from existing
15105   Unicode data.  It is then the user's responsibility to make sure
15106   that the Unicode data must exist for the entire lifetime of the
15107   QConstString object.
15108 */
15109
15110 /*!
15111   Constructs a QConstString that uses the first \a length Unicode
15112   characters in the array \a unicode.  Any attempt to modify
15113   copies of the string will cause it to create a copy of the
15114   data, thus it remains forever unmodified.
15115
15116   Note that \a unicode is \e not \e copied.  The caller \e must be
15117   able to guarantee that \a unicode will not be deleted or
15118   modified. Since that is generally not the case with \c const strings
15119   (they are references), this constructor demands a non-const pointer
15120   even though it never modifies \a unicode.
15121 */
15122 QConstString::QConstString( QChar* unicode, uint length ) :
15123     QString(new QStringData(unicode, length, length),TRUE)
15124 {
15125 }
15126
15127 /*!
15128   Destroys the QConstString, creating a copy of the data if
15129   other strings are still using it.
15130 */
15131 QConstString::~QConstString()
15132 {
15133     if ( d->count > 1 ) {
15134         QChar* cp = QT_ALLOC_QCHAR_VEC( d->len );
15135         memcpy( cp, d->unicode, d->len*sizeof(QChar) );
15136         d->unicode = cp;
15137     } else {
15138         d->unicode = 0;
15139     }
15140
15141     // The original d->unicode is now unlinked.
15142 }
15143
15144 /*!
15145   \fn const QString& QConstString::string() const
15146
15147   Returns a constant string referencing the data passed during
15148   construction.
15149 */
15150
15151 /*!
15152   Returns whether the strings starts with \a s, or not.
15153  */
15154 bool QString::startsWith( const QString& s ) const
15155 {
15156     for ( int i =0; i < (int) s.length(); i++ ) {
15157         if ( i >= (int) length() || d->unicode[i] != s[i] )
15158             return FALSE;
15159     }
15160     return TRUE;
15161 }
15162
15163
15164
15165 #if defined(_OS_WIN32_)
15166
15167 #include <windows.h>
15168
15169 /*!
15170   Returns a static Windows TCHAR* from a QString, possibly adding NUL.
15171
15172   The lifetime of the return value is until the next call to this function.
15173 */
15174 const void* qt_winTchar(const QString& str_in, bool addnul)
15175 {
15176     // So that the return value lives long enough.
15177     static QString str;
15178     str = str_in;
15179
15180 #ifdef UNICODE
15181     static uint buflen = 256;
15182     static TCHAR *buf = new TCHAR[buflen];
15183
15184     const QChar* uc = str.unicode();
15185
15186 #define EXTEND if (str.length() > buflen) { delete buf; buf = new TCHAR[buflen=str.length()+1]; }
15187
15188 #if defined(_WS_X11_) || defined(_OS_WIN32_BYTESWAP_)
15189     EXTEND
15190     for ( int i=str.length(); i--; )
15191         buf[i] = uc[i].row() << 8 | uc[i].cell();
15192     if ( addnul )
15193         buf[str.length()] = 0;
15194 #else
15195     // Same endianness of TCHAR
15196     if ( addnul ) {
15197         EXTEND
15198         memcpy(buf,uc,sizeof(TCHAR)*str.length());
15199         buf[str.length()] = 0;
15200     } else {
15201         return uc;
15202     }
15203 #endif
15204     return buf;
15205 #undef EXTEND
15206
15207 #else
15208     return str.latin1();
15209 #endif
15210 }
15211
15212 /*!
15213   Makes a new null terminated Windows TCHAR* from a QString.
15214 */
15215 void* qt_winTchar_new(const QString& str)
15216 {
15217     TCHAR* result = new TCHAR[str.length()+1];
15218     memcpy(result, qt_winTchar(str,FALSE), sizeof(TCHAR)*str.length());
15219     result[str.length()] = 0;
15220     return result;
15221 }
15222
15223 /*!
15224   Makes a QString from a Windows TCHAR*.
15225 */
15226 QString qt_winQString(void* tc)
15227 {
15228 #ifdef UNICODE
15229
15230     int len=0;
15231     while ( ((TCHAR*)tc)[len] )
15232         len++;
15233 #if defined(_WS_X11_) || defined(_OS_WIN32_BYTESWAP_)
15234     QString r;
15235     for ( int i=0; i<len; i++ )
15236         r += QChar(((TCHAR*)tc)[i]&0xff,((TCHAR*)tc)[i]>>8);
15237     return r;
15238 #else
15239     // Same endianness of TCHAR
15240     return QString((QChar*)tc,len);
15241 #endif
15242 #undef EXTEND
15243 #else
15244     return (TCHAR*)tc;
15245 #endif
15246 }
15247
15248 QCString qt_winQString2MB( const QString& s, int uclen )
15249 {
15250     if ( uclen < 0 )
15251         uclen = s.length();
15252     if ( uclen == 0 )
15253         return QCString();
15254     BOOL used_def;
15255     int bufSize=4096;
15256     QCString mb(bufSize);
15257     int len;
15258     while ( !(len=WideCharToMultiByte(CP_ACP, 0, (const WCHAR*)s.unicode(), uclen,
15259                 mb.data(), bufSize-1, 0, &used_def)) )
15260     {
15261         int r = GetLastError();
15262         if ( r == ERROR_INSUFFICIENT_BUFFER ) {
15263             bufSize=1+WideCharToMultiByte( CP_ACP, 0,
15264                         (const WCHAR*)s.unicode(), uclen,
15265                         0, 0, 0, &used_def);
15266             mb.resize(bufSize);
15267                 // and try again...
15268         } else {
15269             // Fail.
15270             qWarning("WideCharToMultiByte cannot convert multibyte text (error %d): %s (UTF8)",
15271                 r, s.utf8().data());
15272             break;
15273         }
15274     }
15275     mb[len]='\0';
15276     return mb;
15277 }
15278
15279 // WATCH OUT: mblen must include the NUL (or just use -1)
15280 QString qt_winMB2QString( const char* mb, int mblen )
15281 {
15282     if ( !mb || !mblen )
15283         return QString::null;
15284     const int wclen_auto = 4096;
15285     WCHAR wc_auto[wclen_auto];
15286     int wclen = wclen_auto;
15287     WCHAR *wc = wc_auto;
15288     int len;
15289     while ( !(len=MultiByteToWideChar( CP_ACP, MB_PRECOMPOSED,
15290                 mb, mblen, wc, wclen )) )
15291     {
15292         int r = GetLastError();
15293         if ( r == ERROR_INSUFFICIENT_BUFFER ) {
15294             if ( wc != wc_auto ) {
15295                 qWarning("Size changed in MultiByteToWideChar");
15296                 break;
15297             } else {
15298                 wclen = MultiByteToWideChar( CP_ACP, MB_PRECOMPOSED,
15299                                     mb, mblen, 0, 0 );
15300                 wc = new WCHAR[wclen];
15301                 // and try again...
15302             }
15303         } else {
15304             // Fail.
15305             qWarning("MultiByteToWideChar cannot convert multibyte text");
15306             break;
15307         }
15308     }
15309     if ( len <= 0 )
15310         return QString::null;
15311     QString s( (QChar*)wc, len-1 ); // len-1: we don't want terminator
15312     if ( wc != wc_auto )
15313         delete [] wc;
15314     return s;
15315 }
15316
15317
15318 #endif // _OS_WIN32_