source: other-projects/rsyntax-textarea/src/java/org/fife/ui/rsyntaxtextarea/modes/HTMLTokenMaker.java@ 25584

Last change on this file since 25584 was 25584, checked in by davidb, 12 years ago

Initial cut an a text edit area for GLI that supports color syntax highlighting

File size: 97.4 KB
Line 
1/* The following code was generated by JFlex 1.4.3 on 12/05/12 5:11 PM */
2
3/*
4 * 01/24/2005
5 *
6 * HTMLTokenMaker.java - Generates tokens for HTML syntax highlighting.
7 *
8 * This library is distributed under a modified BSD license. See the included
9 * RSyntaxTextArea.License.txt file for details.
10 */
11package org.fife.ui.rsyntaxtextarea.modes;
12
13import java.io.*;
14import javax.swing.text.Segment;
15
16import org.fife.ui.rsyntaxtextarea.*;
17
18
19/**
20 * Scanner for HTML 5 files.
21 *
22 * This implementation was created using
23 * <a href="http://www.jflex.de/">JFlex</a> 1.4.1; however, the generated file
24 * was modified for performance. Memory allocation needs to be almost
25 * completely removed to be competitive with the handwritten lexers (subclasses
26 * of <code>AbstractTokenMaker</code>, so this class has been modified so that
27 * Strings are never allocated (via yytext()), and the scanner never has to
28 * worry about refilling its buffer (needlessly copying chars around).
29 * We can achieve this because RText always scans exactly 1 line of tokens at a
30 * time, and hands the scanner this line as an array of characters (a Segment
31 * really). Since tokens contain pointers to char arrays instead of Strings
32 * holding their contents, there is no need for allocating new memory for
33 * Strings.<p>
34 *
35 * The actual algorithm generated for scanning has, of course, not been
36 * modified.<p>
37 *
38 * If you wish to regenerate this file yourself, keep in mind the following:
39 * <ul>
40 * <li>The generated HTMLTokenMaker.java</code> file will contain two
41 * definitions of both <code>zzRefill</code> and <code>yyreset</code>.
42 * You should hand-delete the second of each definition (the ones
43 * generated by the lexer), as these generated methods modify the input
44 * buffer, which we'll never have to do.</li>
45 * <li>You should also change the declaration/definition of zzBuffer to NOT
46 * be initialized. This is a needless memory allocation for us since we
47 * will be pointing the array somewhere else anyway.</li>
48 * <li>You should NOT call <code>yylex()</code> on the generated scanner
49 * directly; rather, you should use <code>getTokenList</code> as you would
50 * with any other <code>TokenMaker</code> instance.</li>
51 * </ul>
52 *
53 * @author Robert Futrell
54 * @version 0.8
55 *
56 */
57
58public class HTMLTokenMaker extends AbstractMarkupTokenMaker {
59
60 /** This character denotes the end of file */
61 public static final int YYEOF = -1;
62
63 /** initial size of the lookahead buffer */
64 private static final int ZZ_BUFFERSIZE = 16384;
65
66 /** lexical states */
67 public static final int JS_STRING = 24;
68 public static final int INTAG_CHECK_TAG_NAME = 10;
69 public static final int JS_MLC = 28;
70 public static final int INTAG_SCRIPT = 16;
71 public static final int JS_CHAR = 26;
72 public static final int JS_EOL_COMMENT = 30;
73 public static final int INATTR_DOUBLE_SCRIPT = 18;
74 public static final int INATTR_SINGLE_SCRIPT = 20;
75 public static final int DTD = 6;
76 public static final int INATTR_SINGLE = 14;
77 public static final int INATTR_DOUBLE = 12;
78 public static final int YYINITIAL = 0;
79 public static final int INTAG = 8;
80 public static final int COMMENT = 2;
81 public static final int JAVASCRIPT = 22;
82 public static final int PI = 4;
83
84 /**
85 * ZZ_LEXSTATE[l] is the state in the DFA for the lexical state l
86 * ZZ_LEXSTATE[l+1] is the state in the DFA for the lexical state l
87 * at the beginning of a line
88 * l is of the form l = 2*k, k a non negative integer
89 */
90 private static final int ZZ_LEXSTATE[] = {
91 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7,
92 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15
93 };
94
95 /**
96 * Translates characters to character classes
97 */
98 private static final String ZZ_CMAP_PACKED =
99 "\11\0\1\4\1\2\1\0\1\1\1\26\22\0\1\4\1\50\1\7"+
100 "\1\27\1\32\1\47\1\5\1\57\2\56\1\33\1\44\1\43\1\40"+
101 "\1\41\1\10\1\22\6\105\1\24\2\21\1\52\1\6\1\3\1\45"+
102 "\1\17\1\51\1\27\1\70\1\23\1\12\1\76\1\37\1\36\1\100"+
103 "\1\104\1\14\1\106\1\101\1\35\1\74\1\72\1\71\1\15\1\102"+
104 "\1\13\1\11\1\16\1\77\1\103\1\20\1\34\1\73\1\20\1\56"+
105 "\1\30\1\56\1\46\1\31\1\0\1\111\1\107\1\113\1\116\1\66"+
106 "\1\64\1\55\1\60\1\54\1\106\1\112\1\65\1\75\1\115\1\114"+
107 "\1\62\1\102\1\110\1\63\1\61\1\25\1\120\1\67\1\121\1\117"+
108 "\1\122\1\42\1\46\1\42\1\53\uff81\0";
109
110 /**
111 * Translates characters to character classes
112 */
113 private static final char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED);
114
115 /**
116 * Translates DFA states to action switch labels.
117 */
118 private static final int [] ZZ_ACTION = zzUnpackAction();
119
120 private static final String ZZ_ACTION_PACKED_0 =
121 "\6\0\2\1\1\0\2\1\5\0\2\2\1\3\1\4"+
122 "\1\5\1\6\1\1\1\7\5\1\1\10\2\1\1\11"+
123 "\1\12\2\13\1\14\1\15\1\16\1\17\1\20\1\21"+
124 "\1\22\1\23\2\21\2\23\1\21\2\23\4\21\1\23"+
125 "\5\21\1\23\1\21\1\1\1\24\1\1\1\25\1\15"+
126 "\1\26\1\27\1\30\1\31\1\32\2\17\1\2\1\33"+
127 "\1\17\2\2\1\17\2\34\1\2\1\31\2\17\1\2"+
128 "\1\35\1\17\2\2\1\36\17\2\1\1\1\37\1\40"+
129 "\1\41\1\1\1\42\1\43\1\44\1\1\1\45\6\1"+
130 "\1\46\1\1\1\4\2\47\1\50\1\51\1\6\5\0"+
131 "\1\52\31\21\1\23\7\21\1\23\5\21\1\23\33\21"+
132 "\1\53\3\0\1\54\1\0\1\55\1\17\1\31\1\2"+
133 "\1\17\1\56\1\34\1\57\1\56\1\57\1\56\1\60"+
134 "\1\56\2\2\1\61\1\2\1\61\47\2\1\61\1\2"+
135 "\1\62\1\63\1\64\1\0\1\65\5\0\1\66\1\47"+
136 "\1\0\1\67\4\0\14\21\1\23\63\21\1\0\1\70"+
137 "\1\0\1\31\1\2\1\57\1\0\2\60\4\2\1\6"+
138 "\57\2\10\0\1\47\1\71\2\0\1\72\20\21\1\23"+
139 "\5\21\1\23\14\21\1\0\1\73\1\31\10\2\1\74"+
140 "\13\2\1\6\1\2\1\75\15\2\1\0\1\1\3\0"+
141 "\1\76\1\0\1\47\2\0\10\21\1\23\13\21\1\0"+
142 "\1\31\5\2\1\61\10\2\1\61\10\2\4\0\1\47"+
143 "\12\21\1\0\1\31\17\2\2\0\1\77\3\21\1\0"+
144 "\7\2\2\0\1\21\1\0\3\2\2\0\1\21\1\100"+
145 "\1\2\1\101\1\102";
146
147 private static int [] zzUnpackAction() {
148 int [] result = new int[615];
149 int offset = 0;
150 offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result);
151 return result;
152 }
153
154 private static int zzUnpackAction(String packed, int offset, int [] result) {
155 int i = 0; /* index in packed string */
156 int j = offset; /* index in unpacked array */
157 int l = packed.length();
158 while (i < l) {
159 int count = packed.charAt(i++);
160 int value = packed.charAt(i++);
161 do result[j++] = value; while (--count > 0);
162 }
163 return j;
164 }
165
166
167 /**
168 * Translates a state to a row index in the transition table
169 */
170 private static final int [] ZZ_ROWMAP = zzUnpackRowMap();
171
172 private static final String ZZ_ROWMAP_PACKED_0 =
173 "\0\0\0\123\0\246\0\371\0\u014c\0\u019f\0\u01f2\0\u0245"+
174 "\0\u0298\0\u02eb\0\u033e\0\u0391\0\u03e4\0\u0437\0\u048a\0\u04dd"+
175 "\0\u0530\0\u0583\0\u05d6\0\u0629\0\u067c\0\u06cf\0\u0722\0\u05d6"+
176 "\0\u0775\0\u07c8\0\u081b\0\u086e\0\u08c1\0\u05d6\0\u0914\0\u0967"+
177 "\0\u05d6\0\u05d6\0\u09ba\0\u0a0d\0\u05d6\0\u0a60\0\u05d6\0\u05d6"+
178 "\0\u05d6\0\u0ab3\0\u05d6\0\u0b06\0\u0b59\0\u0bac\0\u0bff\0\u0c52"+
179 "\0\u0ca5\0\u0cf8\0\u0d4b\0\u0d9e\0\u0df1\0\u0e44\0\u0e97\0\u0eea"+
180 "\0\u0f3d\0\u0f90\0\u0fe3\0\u1036\0\u1089\0\u0ab3\0\u10dc\0\u112f"+
181 "\0\u05d6\0\u1182\0\u05d6\0\u11d5\0\u05d6\0\u05d6\0\u05d6\0\u1228"+
182 "\0\u05d6\0\u127b\0\u12ce\0\u05d6\0\u05d6\0\u1321\0\u1374\0\u13c7"+
183 "\0\u141a\0\u146d\0\u14c0\0\u1513\0\u05d6\0\u1566\0\u15b9\0\u160c"+
184 "\0\u05d6\0\u165f\0\u16b2\0\u1705\0\u05d6\0\u1758\0\u17ab\0\u17fe"+
185 "\0\u1851\0\u18a4\0\u18f7\0\u194a\0\u199d\0\u19f0\0\u1a43\0\u1a96"+
186 "\0\u1ae9\0\u1b3c\0\u1b8f\0\u1be2\0\u1c35\0\u05d6\0\u05d6\0\u1c88"+
187 "\0\u1cdb\0\u05d6\0\u1c88\0\u05d6\0\u1d2e\0\u05d6\0\u1d81\0\u1dd4"+
188 "\0\u1e27\0\u1e7a\0\u1ecd\0\u1f20\0\u05d6\0\u1f73\0\u1fc6\0\u2019"+
189 "\0\u206c\0\u20bf\0\u05d6\0\u05d6\0\u2112\0\u2165\0\u21b8\0\u220b"+
190 "\0\u225e\0\u05d6\0\u22b1\0\u2304\0\u2357\0\u23aa\0\u23fd\0\u2450"+
191 "\0\u24a3\0\u24f6\0\u2549\0\u259c\0\u25ef\0\u2642\0\u2695\0\u26e8"+
192 "\0\u273b\0\u278e\0\u27e1\0\u2834\0\u2887\0\u28da\0\u292d\0\u2980"+
193 "\0\u29d3\0\u2a26\0\u2a79\0\u2acc\0\u2b1f\0\u2b72\0\u2bc5\0\u2c18"+
194 "\0\u2c6b\0\u2cbe\0\u2d11\0\u2d64\0\u2db7\0\u2e0a\0\u2e5d\0\u2eb0"+
195 "\0\u2f03\0\u2f56\0\u2fa9\0\u2ffc\0\u304f\0\u30a2\0\u30f5\0\u3148"+
196 "\0\u319b\0\u31ee\0\u3241\0\u3294\0\u32e7\0\u333a\0\u338d\0\u33e0"+
197 "\0\u3433\0\u3486\0\u34d9\0\u352c\0\u357f\0\u35d2\0\u3625\0\u3678"+
198 "\0\u36cb\0\u371e\0\u3771\0\u37c4\0\u3817\0\u05d6\0\u1566\0\u386a"+
199 "\0\u38bd\0\u05d6\0\u3910\0\u3963\0\u38bd\0\u39b6\0\u3a09\0\u3a5c"+
200 "\0\u3aaf\0\u3aaf\0\u3aaf\0\u3b02\0\u3b55\0\u3ba8\0\u3bfb\0\u3c4e"+
201 "\0\u3ca1\0\u3cf4\0\u1374\0\u3d47\0\u3d9a\0\u3ded\0\u3e40\0\u3e93"+
202 "\0\u3ee6\0\u3f39\0\u3f8c\0\u3fdf\0\u4032\0\u4085\0\u40d8\0\u412b"+
203 "\0\u417e\0\u41d1\0\u4224\0\u4277\0\u42ca\0\u431d\0\u4370\0\u43c3"+
204 "\0\u4416\0\u4469\0\u44bc\0\u450f\0\u4562\0\u45b5\0\u4608\0\u465b"+
205 "\0\u46ae\0\u4701\0\u4754\0\u47a7\0\u47fa\0\u484d\0\u48a0\0\u48f3"+
206 "\0\u4946\0\u4999\0\u49ec\0\u4a3f\0\u4a92\0\u4ae5\0\u05d6\0\u4b38"+
207 "\0\u4b8b\0\u4bde\0\u05d6\0\u4c31\0\u4c84\0\u4cd7\0\u4d2a\0\u4d7d"+
208 "\0\u1fc6\0\u4dd0\0\u4e23\0\u05d6\0\u4e76\0\u4ec9\0\u4f1c\0\u4f6f"+
209 "\0\u4fc2\0\u5015\0\u5068\0\u50bb\0\u510e\0\u5161\0\u51b4\0\u5207"+
210 "\0\u525a\0\u52ad\0\u5300\0\u5353\0\u53a6\0\u53f9\0\u544c\0\u549f"+
211 "\0\u54f2\0\u5545\0\u5598\0\u55eb\0\u563e\0\u5691\0\u56e4\0\u5737"+
212 "\0\u578a\0\u2d64\0\u57dd\0\u5830\0\u5883\0\u58d6\0\u5929\0\u597c"+
213 "\0\u59cf\0\u5a22\0\u5a75\0\u5ac8\0\u5b1b\0\u5b6e\0\u5bc1\0\u5c14"+
214 "\0\u5c67\0\u0d4b\0\u5cba\0\u5d0d\0\u5d60\0\u5db3\0\u5e06\0\u5e59"+
215 "\0\u5eac\0\u5eff\0\u5f52\0\u5fa5\0\u5ff8\0\u604b\0\u609e\0\u60f1"+
216 "\0\u6144\0\u6197\0\u61ea\0\u623d\0\u6290\0\u62e3\0\u6336\0\u6389"+
217 "\0\u63dc\0\u642f\0\u6482\0\u64d5\0\u6528\0\u657b\0\u65ce\0\u3aaf"+
218 "\0\u6621\0\u6674\0\u66c7\0\u671a\0\u676d\0\u67c0\0\u6813\0\u6866"+
219 "\0\u68b9\0\u690c\0\u695f\0\u69b2\0\u6a05\0\u6a58\0\u6aab\0\u6afe"+
220 "\0\u6b51\0\u6ba4\0\u6bf7\0\u6c4a\0\u6c9d\0\u6cf0\0\u6d43\0\u6d96"+
221 "\0\u6de9\0\u6e3c\0\u6e8f\0\u6ee2\0\u6f35\0\u6f88\0\u6fdb\0\u702e"+
222 "\0\u7081\0\u70d4\0\u7127\0\u717a\0\u71cd\0\u7220\0\u7273\0\u72c6"+
223 "\0\u7319\0\u736c\0\u73bf\0\u7412\0\u7465\0\u74b8\0\u750b\0\u755e"+
224 "\0\u75b1\0\u7604\0\u7657\0\u76aa\0\u76fd\0\u7750\0\u77a3\0\u77f6"+
225 "\0\u7849\0\u789c\0\u78ef\0\u7942\0\u7995\0\u79e8\0\u05d6\0\u7a3b"+
226 "\0\u7a8e\0\u7ae1\0\u7b34\0\u7b87\0\u7bda\0\u7c2d\0\u7c80\0\u7cd3"+
227 "\0\u7d26\0\u7d79\0\u7dcc\0\u7e1f\0\u7e72\0\u7ec5\0\u7f18\0\u7f6b"+
228 "\0\u7fbe\0\u8011\0\u8064\0\u80b7\0\u810a\0\u815d\0\u81b0\0\u8203"+
229 "\0\u5a22\0\u8256\0\u82a9\0\u82fc\0\u834f\0\u83a2\0\u2f56\0\u83f5"+
230 "\0\u8448\0\u849b\0\u84ee\0\u8541\0\u8594\0\u85e7\0\u05d6\0\u863a"+
231 "\0\u868d\0\u86e0\0\u8733\0\u8786\0\u87d9\0\u882c\0\u887f\0\u88d2"+
232 "\0\u1374\0\u8925\0\u8978\0\u89cb\0\u8a1e\0\u8a71\0\u8ac4\0\u8b17"+
233 "\0\u8b6a\0\u8bbd\0\u8c10\0\u8c63\0\u1374\0\u8cb6\0\u1374\0\u8d09"+
234 "\0\u8d5c\0\u8daf\0\u8e02\0\u8e55\0\u8ea8\0\u8efb\0\u8f4e\0\u8fa1"+
235 "\0\u8ff4\0\u9047\0\u909a\0\u90ed\0\u4b8b\0\u05d6\0\u9140\0\u9193"+
236 "\0\u91e6\0\u9239\0\u928c\0\u92df\0\u9332\0\u7ae1\0\u9385\0\u93d8"+
237 "\0\u942b\0\u947e\0\u94d1\0\u9524\0\u9577\0\u95ca\0\u961d\0\u961d"+
238 "\0\u9670\0\u96c3\0\u9716\0\u9769\0\u97bc\0\u980f\0\u9862\0\u98b5"+
239 "\0\u9908\0\u995b\0\u99ae\0\u9a01\0\u9a54\0\u9aa7\0\u9afa\0\u9b4d"+
240 "\0\u9ba0\0\u68b9\0\u9bf3\0\u9c46\0\u9c99\0\u9cec\0\u9d3f\0\u9d92"+
241 "\0\u9de5\0\u9e38\0\u9e8b\0\u9ede\0\u9f31\0\u9f84\0\u9fd7\0\ua02a"+
242 "\0\ua07d\0\ua0d0\0\ua123\0\ua176\0\ua1c9\0\u9239\0\ua21c\0\ua26f"+
243 "\0\ua2c2\0\ua315\0\ua368\0\ua3bb\0\ua40e\0\ua461\0\ua4b4\0\ua507"+
244 "\0\ua55a\0\ua5ad\0\ua600\0\ua653\0\ua6a6\0\ua6f9\0\ua74c\0\ua79f"+
245 "\0\ua7f2\0\ua845\0\ua898\0\ua8eb\0\ua93e\0\ua991\0\ua9e4\0\uaa37"+
246 "\0\uaa8a\0\uaadd\0\uab30\0\uab83\0\uabd6\0\u206c\0\uac29\0\uac7c"+
247 "\0\uaccf\0\uad22\0\uad75\0\uadc8\0\uae1b\0\uae6e\0\uaec1\0\uaf14"+
248 "\0\uaf67\0\uafba\0\ub00d\0\ub060\0\ub0b3\0\ub106\0\ub159\0\ub1ac"+
249 "\0\ub1ff\0\ub252\0\ub2a5\0\u05d6\0\ub2f8\0\u05d6\0\u05d6";
250
251 private static int [] zzUnpackRowMap() {
252 int [] result = new int[615];
253 int offset = 0;
254 offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result);
255 return result;
256 }
257
258 private static int zzUnpackRowMap(String packed, int offset, int [] result) {
259 int i = 0; /* index in packed string */
260 int j = offset; /* index in unpacked array */
261 int l = packed.length();
262 while (i < l) {
263 int high = packed.charAt(i++) << 16;
264 result[j++] = high | packed.charAt(i++);
265 }
266 return j;
267 }
268
269 /**
270 * The transition table of the DFA
271 */
272 private static final int [] ZZ_TRANS = zzUnpackTrans();
273
274 private static final String ZZ_TRANS_PACKED_0 =
275 "\1\21\1\22\1\23\1\24\1\25\1\26\115\21\2\27"+
276 "\1\30\35\27\1\31\17\27\1\32\3\27\1\33\2\27"+
277 "\1\34\33\27\2\35\1\36\46\35\1\37\51\35\2\40"+
278 "\1\41\14\40\1\42\103\40\1\43\1\44\1\0\1\43"+
279 "\1\25\2\43\1\45\1\46\6\43\1\47\25\43\1\50"+
280 "\11\43\1\51\43\43\2\52\1\0\1\52\1\53\2\52"+
281 "\2\53\1\54\1\55\1\56\1\57\1\60\1\61\1\53"+
282 "\3\52\1\62\1\52\1\63\7\52\1\64\1\65\1\66"+
283 "\5\52\1\53\6\52\1\57\2\52\1\53\1\67\1\61"+
284 "\1\60\1\54\1\65\1\64\1\66\1\52\1\70\1\71"+
285 "\1\72\1\52\2\73\1\74\1\63\1\52\1\75\1\76"+
286 "\1\77\1\67\2\52\1\62\1\56\1\70\1\75\1\55"+
287 "\1\71\1\72\1\74\1\52\1\77\2\52\7\100\1\101"+
288 "\113\100\57\102\1\101\43\102\1\43\1\44\1\0\1\43"+
289 "\1\25\2\43\1\103\1\104\6\43\1\105\25\43\1\50"+
290 "\11\43\1\106\43\43\7\100\1\107\113\100\57\102\1\107"+
291 "\43\102\1\110\1\25\1\111\1\112\1\25\1\113\1\114"+
292 "\1\115\1\116\3\117\1\120\2\117\1\121\1\117\1\122"+
293 "\1\123\1\117\1\122\1\124\1\125\2\110\2\117\1\126"+
294 "\4\117\1\127\1\130\1\131\1\114\1\132\4\126\3\50"+
295 "\1\133\1\134\1\131\1\135\1\117\1\136\1\137\1\140"+
296 "\1\141\1\142\1\143\1\144\2\117\1\145\12\117\1\122"+
297 "\1\117\1\146\1\147\1\150\1\117\1\151\1\117\1\152"+
298 "\1\153\1\117\1\154\2\117\2\155\1\156\4\155\1\157"+
299 "\20\155\1\160\72\155\2\161\1\162\25\161\1\163\26\161"+
300 "\1\164\43\161\2\165\1\166\1\167\27\165\1\170\24\165"+
301 "\1\171\3\165\1\172\2\165\1\173\33\165\2\174\1\175"+
302 "\1\176\54\174\1\171\3\174\1\172\2\174\1\173\33\174"+
303 "\2\21\4\0\116\21\1\22\2\0\1\25\1\0\115\21"+
304 "\133\0\1\177\1\200\5\201\1\0\6\201\6\0\4\201"+
305 "\10\0\1\202\1\203\2\0\2\201\2\0\3\201\1\200"+
306 "\37\201\1\0\1\25\2\0\1\25\116\0\4\26\1\0"+
307 "\1\26\1\204\114\26\2\27\1\0\35\27\1\0\17\27"+
308 "\1\0\3\27\1\0\2\27\1\0\33\27\40\0\1\205"+
309 "\143\0\1\206\115\0\1\207\4\0\1\210\130\0\1\211"+
310 "\33\0\2\35\1\0\46\35\1\0\51\35\17\0\1\212"+
311 "\103\0\2\40\1\0\14\40\1\0\103\40\2\43\1\0"+
312 "\1\43\1\0\2\43\2\0\6\43\1\0\25\43\1\0"+
313 "\11\43\1\0\44\43\1\44\1\0\1\43\1\25\2\43"+
314 "\2\0\6\43\1\0\25\43\1\0\11\43\1\0\43\43"+
315 "\17\0\1\47\103\0\2\52\1\0\1\52\1\0\2\52"+
316 "\2\0\6\52\1\0\25\52\1\0\11\52\1\0\45\52"+
317 "\1\0\1\52\1\0\2\52\2\0\1\52\1\213\2\52"+
318 "\1\214\1\215\1\0\5\52\1\216\11\52\1\217\5\52"+
319 "\1\0\11\52\1\0\1\52\1\215\1\214\3\52\1\217"+
320 "\1\52\1\220\1\221\2\52\2\222\1\52\1\216\11\52"+
321 "\1\220\1\52\1\213\1\221\10\52\1\0\1\52\1\0"+
322 "\2\52\2\0\3\52\1\223\2\52\1\0\17\52\1\224"+
323 "\5\52\1\0\6\52\1\223\2\52\1\0\6\52\1\224"+
324 "\1\52\1\225\1\226\17\52\1\225\2\52\1\226\10\52"+
325 "\1\0\1\52\1\0\2\52\2\0\6\52\1\0\5\52"+
326 "\1\227\17\52\1\0\11\52\1\0\17\52\1\227\25\52"+
327 "\1\0\1\52\1\0\2\52\2\0\1\230\5\52\1\0"+
328 "\15\52\1\231\1\232\6\52\1\0\11\52\1\0\3\52"+
329 "\1\230\1\232\1\231\4\52\1\233\1\52\2\234\17\52"+
330 "\1\233\7\52\1\0\1\52\1\0\2\52\2\0\2\52"+
331 "\1\235\3\52\1\0\15\52\1\236\7\52\1\0\11\52"+
332 "\1\0\5\52\1\236\2\52\1\237\17\52\1\235\1\237"+
333 "\13\52\1\0\1\52\1\0\2\52\2\0\2\52\1\76"+
334 "\1\240\1\52\1\76\1\0\3\52\1\241\12\52\1\242"+
335 "\1\243\5\52\1\0\6\52\1\240\2\52\1\0\1\244"+
336 "\1\76\2\52\1\242\1\52\1\243\1\52\1\245\5\52"+
337 "\1\76\5\52\1\244\2\52\1\241\1\76\1\245\4\52"+
338 "\1\76\6\52\1\0\1\52\1\0\2\52\2\0\2\52"+
339 "\1\76\1\234\2\52\1\0\5\52\1\246\7\52\1\247"+
340 "\7\52\1\0\6\52\1\234\1\250\1\52\1\0\5\52"+
341 "\1\247\2\52\1\251\1\252\4\52\1\253\1\246\1\250"+
342 "\7\52\1\76\1\251\2\52\1\252\1\52\1\253\6\52"+
343 "\1\0\1\52\1\0\2\52\2\0\6\52\1\0\15\52"+
344 "\1\76\7\52\1\0\11\52\1\0\5\52\1\76\37\52"+
345 "\1\0\1\52\1\0\2\52\2\0\3\52\1\254\2\52"+
346 "\1\0\17\52\1\255\5\52\1\0\6\52\1\254\2\52"+
347 "\1\0\6\52\1\255\1\52\1\256\20\52\1\256\13\52"+
348 "\1\0\1\52\1\0\2\52\2\0\2\52\1\257\1\260"+
349 "\2\52\1\0\25\52\1\0\6\52\1\260\2\52\1\0"+
350 "\11\52\1\261\16\52\1\257\3\52\1\261\10\52\1\0"+
351 "\1\52\1\0\2\52\2\0\6\52\1\0\25\52\1\0"+
352 "\11\52\1\0\14\52\2\262\5\52\1\263\14\52\1\263"+
353 "\4\52\1\0\1\52\1\0\2\52\2\0\2\52\1\76"+
354 "\2\52\1\264\1\0\17\52\1\265\5\52\1\0\11\52"+
355 "\1\0\1\52\1\264\4\52\1\265\16\52\1\76\2\52"+
356 "\1\76\14\52\1\0\1\52\1\0\2\52\2\0\1\266"+
357 "\1\267\1\270\1\52\1\271\1\52\1\0\3\52\1\272"+
358 "\1\52\1\273\17\52\1\0\11\52\1\0\2\52\1\271"+
359 "\1\266\12\52\1\274\1\273\7\52\1\272\1\270\2\52"+
360 "\1\267\2\52\1\274\6\52\1\0\1\52\1\0\2\52"+
361 "\2\0\4\52\1\275\1\52\1\0\3\52\1\276\1\52"+
362 "\1\277\7\52\1\76\7\52\1\0\11\52\1\0\2\52"+
363 "\1\275\2\52\1\76\11\52\1\277\7\52\1\276\15\52"+
364 "\1\0\1\52\1\0\2\52\2\0\6\52\1\0\17\52"+
365 "\1\300\5\52\1\0\11\52\1\0\6\52\1\300\1\52"+
366 "\1\301\1\302\17\52\1\301\2\52\1\302\10\52\1\0"+
367 "\1\52\1\0\2\52\2\0\6\52\1\0\5\52\1\303"+
368 "\11\52\1\304\5\52\1\0\11\52\1\0\6\52\1\304"+
369 "\1\52\1\305\6\52\1\303\11\52\1\305\13\52\1\0"+
370 "\1\52\1\0\2\52\2\0\3\52\1\306\1\52\1\76"+
371 "\1\0\15\52\1\76\1\307\1\310\5\52\1\0\6\52"+
372 "\1\306\2\52\1\0\1\52\1\76\2\52\1\307\1\76"+
373 "\1\310\1\52\1\311\5\52\1\76\12\52\1\311\4\52"+
374 "\1\76\6\52\1\0\1\52\1\0\2\52\2\0\6\52"+
375 "\1\0\3\52\1\312\13\52\1\313\5\52\1\0\11\52"+
376 "\1\0\6\52\1\313\20\52\1\312\15\52\1\0\1\52"+
377 "\1\0\2\52\2\0\3\52\1\314\2\52\1\0\25\52"+
378 "\1\0\6\52\1\314\2\52\1\0\10\52\1\315\20\52"+
379 "\1\315\11\52\7\100\1\0\113\100\57\102\1\0\43\102"+
380 "\17\0\1\316\103\0\1\110\10\0\6\110\1\0\6\110"+
381 "\1\0\4\110\1\0\4\110\14\0\2\110\2\0\43\110"+
382 "\3\0\1\317\4\0\1\320\34\0\1\50\62\0\1\50"+
383 "\37\0\1\50\55\0\10\321\1\322\17\321\1\323\2\321"+
384 "\1\324\11\321\1\325\55\321\1\110\10\0\6\117\1\0"+
385 "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+
386 "\2\117\2\0\43\117\1\110\10\0\6\117\1\0\6\117"+
387 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+
388 "\2\0\35\117\1\327\5\117\17\0\1\330\25\0\1\50"+
389 "\55\0\1\331\10\0\6\331\1\0\1\331\2\122\1\331"+
390 "\1\122\1\331\1\0\4\331\1\0\1\331\1\332\1\333"+
391 "\1\334\1\0\1\335\12\0\2\331\2\0\4\331\1\333"+
392 "\1\332\1\334\7\331\1\333\6\331\1\122\10\331\1\333"+
393 "\5\331\10\0\6\331\1\0\1\331\1\336\1\337\1\331"+
394 "\1\337\1\331\1\0\4\331\1\0\1\340\1\332\1\333"+
395 "\1\334\1\0\1\335\12\0\2\331\2\0\4\331\1\333"+
396 "\1\332\1\334\7\331\1\333\6\331\1\337\10\331\1\333"+
397 "\2\331\1\340\1\331\1\110\10\0\6\117\1\0\6\117"+
398 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+
399 "\2\0\35\117\1\341\5\117\45\0\1\50\115\0\1\50"+
400 "\4\0\1\50\76\0\2\335\1\0\1\335\60\0\1\335"+
401 "\61\0\2\50\55\0\1\110\10\0\6\117\1\0\6\117"+
402 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+
403 "\2\0\3\117\1\342\1\343\10\117\1\344\17\117\1\345"+
404 "\5\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+
405 "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\34\117"+
406 "\1\346\6\117\1\110\10\0\6\117\1\0\6\117\1\0"+
407 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
408 "\1\347\27\117\1\350\6\117\1\351\3\117\1\110\10\0"+
409 "\6\117\1\0\5\117\1\352\1\0\1\110\1\326\2\117"+
410 "\1\0\4\117\14\0\2\117\2\0\30\117\1\353\1\354"+
411 "\11\117\1\110\10\0\6\117\1\0\5\117\1\355\1\0"+
412 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
413 "\1\356\1\357\5\117\1\360\27\117\1\361\3\117\1\110"+
414 "\10\0\6\117\1\0\5\117\1\362\1\0\1\110\1\326"+
415 "\2\117\1\0\4\117\14\0\1\363\1\117\2\0\5\117"+
416 "\1\364\23\117\1\365\2\117\1\366\6\117\1\110\10\0"+
417 "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+
418 "\4\117\14\0\2\117\2\0\34\117\1\367\6\117\1\110"+
419 "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+
420 "\1\0\4\117\14\0\2\117\2\0\3\117\1\370\1\117"+
421 "\1\371\27\117\1\372\2\117\1\373\1\374\1\117\1\110"+
422 "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+
423 "\1\0\4\117\14\0\1\375\1\117\2\0\1\376\42\117"+
424 "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+
425 "\2\117\1\0\4\117\14\0\2\117\2\0\31\117\1\377"+
426 "\11\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+
427 "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\30\117"+
428 "\1\u0100\3\117\1\u0101\2\117\1\u0102\3\117\1\110\10\0"+
429 "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+
430 "\4\117\14\0\2\117\2\0\6\117\1\u0103\34\117\1\110"+
431 "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+
432 "\1\0\4\117\14\0\2\117\2\0\27\117\1\u0104\13\117"+
433 "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+
434 "\2\117\1\0\4\117\14\0\2\117\2\0\1\u0105\4\117"+
435 "\1\u0106\23\117\1\u0107\2\117\1\u0108\6\117\1\110\10\0"+
436 "\6\117\1\0\5\117\1\u0109\1\0\1\110\1\326\2\117"+
437 "\1\0\4\117\14\0\2\117\2\0\6\117\1\u010a\22\117"+
438 "\1\u010b\11\117\1\110\10\0\6\117\1\0\6\117\1\0"+
439 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
440 "\6\117\1\u010c\25\117\1\u010d\6\117\1\110\10\0\6\117"+
441 "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+
442 "\14\0\2\117\2\0\31\117\1\366\2\117\1\u010e\6\117"+
443 "\2\155\1\0\4\155\1\0\20\155\1\0\72\155\2\u010f"+
444 "\1\0\22\u010f\1\u0110\73\u010f\1\u0111\1\u010f\2\161\1\0"+
445 "\25\161\1\0\26\161\1\0\43\161\2\165\2\0\27\165"+
446 "\1\0\24\165\1\0\3\165\1\0\2\165\1\0\33\165"+
447 "\10\0\1\u0112\122\0\1\u0113\173\0\1\u0114\115\0\1\u0115"+
448 "\4\0\1\u0116\130\0\1\u0117\33\0\2\174\2\0\54\174"+
449 "\1\0\3\174\1\0\2\174\1\0\33\174\10\0\1\u0118"+
450 "\123\0\6\u0119\1\0\6\u0119\6\0\4\u0119\14\0\2\u0119"+
451 "\2\0\43\u0119\11\0\1\201\1\u011a\4\201\1\0\6\201"+
452 "\6\0\4\201\14\0\2\201\2\0\33\201\1\u011a\7\201"+
453 "\11\0\6\201\1\0\6\201\6\0\4\201\14\0\2\201"+
454 "\2\0\43\201\40\0\1\u011b\101\0\1\u011c\164\0\1\u011d"+
455 "\126\0\1\u011e\117\0\1\u011f\127\0\1\u0120\33\0\2\52"+
456 "\1\0\1\52\1\0\2\52\2\0\2\52\1\u0121\3\52"+
457 "\1\0\25\52\1\0\11\52\1\0\30\52\1\u0121\14\52"+
458 "\1\0\1\52\1\0\2\52\2\0\6\52\1\0\25\52"+
459 "\1\0\11\52\1\0\10\52\1\u0122\20\52\1\u0122\13\52"+
460 "\1\0\1\52\1\0\2\52\2\0\2\52\1\u0123\3\52"+
461 "\1\0\25\52\1\0\11\52\1\0\13\52\1\227\14\52"+
462 "\1\u0123\6\52\1\227\5\52\1\0\1\52\1\0\2\52"+
463 "\2\0\4\52\1\76\1\52\1\0\3\52\1\76\21\52"+
464 "\1\0\11\52\1\0\2\52\1\76\24\52\1\76\15\52"+
465 "\1\0\1\52\1\0\2\52\2\0\1\52\1\u0124\1\u0125"+
466 "\3\52\1\0\15\52\1\u0126\7\52\1\0\11\52\1\0"+
467 "\5\52\1\u0126\22\52\1\u0125\2\52\1\u0124\11\52\1\0"+
468 "\1\52\1\0\2\52\2\0\6\52\1\0\25\52\1\0"+
469 "\11\52\1\0\14\52\2\u0127\27\52\1\0\1\52\1\0"+
470 "\2\52\2\0\6\52\1\0\5\52\1\u0128\17\52\1\0"+
471 "\11\52\1\0\17\52\1\u0128\25\52\1\0\1\52\1\0"+
472 "\2\52\2\0\6\52\1\0\25\52\1\0\11\52\1\0"+
473 "\10\52\1\u0129\20\52\1\u0129\13\52\1\0\1\52\1\0"+
474 "\2\52\2\0\5\52\1\u012a\1\0\25\52\1\0\11\52"+
475 "\1\0\1\52\1\u012a\43\52\1\0\1\52\1\0\2\52"+
476 "\2\0\6\52\1\0\25\52\1\0\11\52\1\0\12\52"+
477 "\1\u012b\22\52\1\u012b\7\52\1\0\1\52\1\0\2\52"+
478 "\2\0\4\52\1\u0124\1\52\1\0\25\52\1\0\11\52"+
479 "\1\0\2\52\1\u0124\7\52\1\u012c\22\52\1\u012c\7\52"+
480 "\1\0\1\52\1\0\2\52\2\0\6\52\1\0\15\52"+
481 "\1\u012d\7\52\1\0\11\52\1\0\5\52\1\u012d\6\52"+
482 "\2\u012e\1\u012a\17\52\1\u012a\6\52\1\0\1\52\1\0"+
483 "\2\52\2\0\6\52\1\0\15\52\1\u012a\7\52\1\0"+
484 "\11\52\1\0\5\52\1\u012a\37\52\1\0\1\52\1\0"+
485 "\2\52\2\0\3\52\1\u012f\2\52\1\0\25\52\1\0"+
486 "\6\52\1\u012f\2\52\1\0\45\52\1\0\1\52\1\0"+
487 "\2\52\2\0\6\52\1\0\25\52\1\0\11\52\1\0"+
488 "\10\52\1\u0130\20\52\1\u0130\13\52\1\0\1\52\1\0"+
489 "\2\52\2\0\2\52\1\u0131\3\52\1\0\25\52\1\0"+
490 "\11\52\1\0\30\52\1\u0131\14\52\1\0\1\52\1\0"+
491 "\2\52\2\0\1\76\3\52\1\u0132\1\52\1\0\25\52"+
492 "\1\0\11\52\1\0\2\52\1\u0132\1\76\41\52\1\0"+
493 "\1\52\1\0\2\52\2\0\6\52\1\0\25\52\1\0"+
494 "\7\52\1\76\1\52\1\0\20\52\1\76\24\52\1\0"+
495 "\1\52\1\0\2\52\2\0\6\52\1\0\17\52\1\76"+
496 "\5\52\1\0\11\52\1\0\6\52\1\76\2\52\1\u0133"+
497 "\22\52\1\u0133\10\52\1\0\1\52\1\0\2\52\2\0"+
498 "\6\52\1\0\25\52\1\0\11\52\1\0\10\52\1\u0134"+
499 "\20\52\1\u0134\13\52\1\0\1\52\1\0\2\52\2\0"+
500 "\2\52\1\u0135\3\52\1\0\25\52\1\0\11\52\1\0"+
501 "\30\52\1\u0135\14\52\1\0\1\52\1\0\2\52\2\0"+
502 "\5\52\1\227\1\0\25\52\1\0\11\52\1\0\1\52"+
503 "\1\227\12\52\2\u012a\27\52\1\0\1\52\1\0\2\52"+
504 "\2\0\6\52\1\0\25\52\1\0\11\52\1\0\11\52"+
505 "\1\252\22\52\1\252\10\52\1\0\1\52\1\0\2\52"+
506 "\2\0\6\52\1\0\25\52\1\0\11\52\1\0\11\52"+
507 "\1\u0136\22\52\1\u0136\10\52\1\0\1\52\1\0\2\52"+
508 "\2\0\6\52\1\0\14\52\1\u0137\10\52\1\0\11\52"+
509 "\1\0\41\52\1\u0137\3\52\1\0\1\52\1\0\2\52"+
510 "\2\0\6\52\1\0\17\52\1\u0138\5\52\1\0\11\52"+
511 "\1\0\6\52\1\u0138\36\52\1\0\1\52\1\0\2\52"+
512 "\2\0\6\52\1\0\3\52\1\227\21\52\1\0\11\52"+
513 "\1\0\27\52\1\227\15\52\1\0\1\52\1\0\2\52"+
514 "\2\0\5\52\1\u0139\1\0\25\52\1\0\11\52\1\0"+
515 "\1\52\1\u0139\43\52\1\0\1\52\1\0\2\52\2\0"+
516 "\3\52\1\u013a\2\52\1\0\25\52\1\0\6\52\1\u013a"+
517 "\2\52\1\0\11\52\1\u013b\22\52\1\u013b\10\52\1\0"+
518 "\1\52\1\0\2\52\2\0\1\u013c\5\52\1\0\25\52"+
519 "\1\0\11\52\1\0\3\52\1\u013c\41\52\1\0\1\52"+
520 "\1\0\2\52\2\0\1\u013d\5\52\1\0\25\52\1\0"+
521 "\11\52\1\0\3\52\1\u013d\41\52\1\0\1\52\1\0"+
522 "\2\52\2\0\6\52\1\0\25\52\1\0\11\52\1\0"+
523 "\16\52\1\u013e\17\52\1\u013e\6\52\1\0\1\52\1\0"+
524 "\2\52\2\0\6\52\1\0\25\52\1\0\11\52\1\0"+
525 "\11\52\1\76\22\52\1\76\10\52\1\0\1\52\1\0"+
526 "\2\52\2\0\6\52\1\0\25\52\1\0\11\52\1\0"+
527 "\12\52\1\u013f\22\52\1\u013f\7\52\1\0\1\52\1\0"+
528 "\2\52\2\0\6\52\1\0\25\52\1\0\7\52\1\u0140"+
529 "\1\52\1\0\20\52\1\u0140\24\52\1\0\1\52\1\0"+
530 "\2\52\2\0\6\52\1\0\3\52\1\u0141\21\52\1\0"+
531 "\11\52\1\0\13\52\1\u0142\13\52\1\u0141\7\52\1\u0142"+
532 "\5\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
533 "\25\52\1\0\11\52\1\0\10\52\1\u0143\20\52\1\u0143"+
534 "\13\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
535 "\17\52\1\u0144\5\52\1\0\7\52\1\u0145\1\52\1\0"+
536 "\6\52\1\u0144\11\52\1\u0145\24\52\1\0\1\52\1\0"+
537 "\2\52\2\0\2\52\1\u0146\3\52\1\0\25\52\1\0"+
538 "\11\52\1\0\11\52\1\u012b\1\u0147\15\52\1\u0146\3\52"+
539 "\1\u012b\1\u0147\7\52\1\0\1\52\1\0\2\52\2\0"+
540 "\6\52\1\0\3\52\1\u0148\21\52\1\0\11\52\1\0"+
541 "\27\52\1\u0148\15\52\1\0\1\52\1\0\2\52\2\0"+
542 "\6\52\1\0\17\52\1\u0149\5\52\1\0\11\52\1\0"+
543 "\6\52\1\u0149\36\52\1\0\1\52\1\0\2\52\2\0"+
544 "\6\52\1\0\25\52\1\0\11\52\1\0\14\52\2\u014a"+
545 "\27\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
546 "\25\52\1\0\11\52\1\0\10\52\1\u014b\20\52\1\u014b"+
547 "\13\52\1\0\1\52\1\0\2\52\2\0\3\52\1\u014c"+
548 "\2\52\1\0\25\52\1\0\6\52\1\u014c\2\52\1\0"+
549 "\45\52\1\0\1\52\1\0\2\52\2\0\2\52\1\u014d"+
550 "\3\52\1\0\25\52\1\0\11\52\1\0\30\52\1\u014d"+
551 "\14\52\1\0\1\52\1\0\2\52\2\0\5\52\1\u014e"+
552 "\1\0\17\52\1\u014f\5\52\1\0\11\52\1\0\1\52"+
553 "\1\u014e\4\52\1\u014f\36\52\1\0\1\52\1\0\2\52"+
554 "\2\0\4\52\1\u0150\1\52\1\0\25\52\1\0\11\52"+
555 "\1\0\2\52\1\u0150\42\52\1\0\1\52\1\0\2\52"+
556 "\2\0\6\52\1\0\3\52\1\315\21\52\1\0\11\52"+
557 "\1\0\27\52\1\315\15\52\1\0\1\52\1\0\2\52"+
558 "\2\0\6\52\1\0\25\52\1\0\11\52\1\0\16\52"+
559 "\1\u0151\17\52\1\u0151\6\52\1\0\1\52\1\0\2\52"+
560 "\2\0\6\52\1\0\25\52\1\0\11\52\1\0\16\52"+
561 "\1\u0152\17\52\1\u0152\6\52\1\0\1\52\1\0\2\52"+
562 "\2\0\5\52\1\u0153\1\0\25\52\1\0\11\52\1\0"+
563 "\1\52\1\u0153\43\52\1\0\1\52\1\0\2\52\2\0"+
564 "\6\52\1\0\25\52\1\0\11\52\1\0\26\52\1\u0126"+
565 "\16\52\1\0\1\52\1\0\2\52\2\0\5\52\1\u0154"+
566 "\1\0\25\52\1\0\11\52\1\0\1\52\1\u0154\43\52"+
567 "\1\0\1\52\1\0\2\52\2\0\1\u0147\5\52\1\0"+
568 "\25\52\1\0\11\52\1\0\3\52\1\u0147\41\52\1\0"+
569 "\1\52\1\0\2\52\2\0\6\52\1\0\25\52\1\0"+
570 "\11\52\1\0\23\52\1\76\14\52\1\76\4\52\1\0"+
571 "\1\52\1\0\2\52\2\0\1\u0155\5\52\1\0\3\52"+
572 "\1\315\11\52\1\231\1\u0156\1\u0157\5\52\1\0\11\52"+
573 "\1\0\3\52\1\u0155\1\u0156\1\231\1\u0157\20\52\1\315"+
574 "\15\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
575 "\15\52\1\u0158\7\52\1\0\11\52\1\0\5\52\1\u0158"+
576 "\37\52\1\0\1\52\1\0\2\52\2\0\5\52\1\u0159"+
577 "\1\0\25\52\1\0\11\52\1\0\1\52\1\u0159\10\52"+
578 "\1\u015a\22\52\1\u015a\7\52\1\0\1\52\1\0\2\52"+
579 "\2\0\2\52\1\u015b\1\52\1\76\1\52\1\0\25\52"+
580 "\1\0\11\52\1\0\2\52\1\76\25\52\1\u015b\14\52"+
581 "\1\0\1\52\1\0\2\52\2\0\2\52\1\76\3\52"+
582 "\1\0\25\52\1\0\11\52\1\0\10\52\1\u015c\12\52"+
583 "\1\76\4\52\1\76\1\u015c\6\52\1\76\4\52\1\0"+
584 "\1\52\1\0\2\52\2\0\6\52\1\0\25\52\1\0"+
585 "\11\52\1\0\12\52\1\76\22\52\1\76\7\52\1\0"+
586 "\1\52\1\0\2\52\2\0\5\52\1\u015d\1\0\15\52"+
587 "\1\76\7\52\1\0\11\52\1\0\1\52\1\u015d\3\52"+
588 "\1\76\37\52\1\0\1\52\1\0\2\52\2\0\5\52"+
589 "\1\u015e\1\0\25\52\1\0\11\52\1\0\1\52\1\u015e"+
590 "\43\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
591 "\25\52\1\0\11\52\1\0\16\52\1\76\17\52\1\76"+
592 "\6\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
593 "\25\52\1\0\11\52\1\0\13\52\1\u015f\23\52\1\u015f"+
594 "\5\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
595 "\25\52\1\0\11\52\1\0\16\52\1\u0160\17\52\1\u0160"+
596 "\6\52\1\0\1\52\1\0\2\52\2\0\2\52\1\76"+
597 "\3\52\1\0\25\52\1\0\11\52\1\0\30\52\1\76"+
598 "\12\52\11\0\1\u0161\51\0\1\u0161\37\0\10\321\1\u0162"+
599 "\17\321\1\323\74\321\1\0\120\321\33\0\1\u0163\67\0"+
600 "\1\110\10\0\6\110\1\0\5\110\1\u0164\1\0\4\110"+
601 "\1\0\4\110\14\0\2\110\2\0\44\110\10\0\6\117"+
602 "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+
603 "\14\0\2\117\2\0\4\117\1\u0165\36\117\17\0\1\126"+
604 "\25\0\1\50\55\0\1\331\10\0\6\331\1\0\6\331"+
605 "\1\0\4\331\1\0\4\331\14\0\2\331\2\0\44\331"+
606 "\10\0\6\331\1\0\1\331\2\u0166\1\331\1\u0166\1\331"+
607 "\1\0\4\331\1\0\4\331\1\u0167\3\0\1\u0167\7\0"+
608 "\2\331\2\0\25\331\1\u0166\16\331\10\0\6\331\1\0"+
609 "\1\331\2\335\1\331\1\335\1\331\1\0\4\331\1\0"+
610 "\2\331\1\333\1\334\14\0\2\331\2\0\4\331\1\333"+
611 "\1\331\1\334\7\331\1\333\6\331\1\335\10\331\1\333"+
612 "\5\331\10\0\6\331\1\0\1\331\2\336\1\331\1\336"+
613 "\1\331\1\0\4\331\1\0\2\331\1\333\1\334\1\0"+
614 "\1\335\12\0\2\331\2\0\4\331\1\333\1\331\1\334"+
615 "\7\331\1\333\6\331\1\336\10\331\1\333\5\331\10\0"+
616 "\6\331\1\0\1\331\1\336\1\337\1\331\1\337\1\331"+
617 "\1\0\4\331\1\0\1\331\1\u0168\1\333\1\334\1\0"+
618 "\1\335\12\0\2\331\2\0\4\331\1\333\1\u0168\1\334"+
619 "\7\331\1\333\6\331\1\337\10\331\1\333\5\331\10\0"+
620 "\1\331\1\u0169\4\331\1\0\1\331\4\u0169\1\331\1\0"+
621 "\4\331\1\0\2\331\2\u0169\14\0\2\331\2\0\4\331"+
622 "\1\u0169\1\331\1\u0169\1\331\1\u0169\5\331\1\u0169\6\331"+
623 "\1\u0169\1\331\1\u0169\1\331\1\u0169\1\331\1\u0169\2\331"+
624 "\1\u0169\4\331\1\110\10\0\6\117\1\0\6\117\1\0"+
625 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
626 "\6\117\1\u016a\34\117\1\110\10\0\6\117\1\0\6\117"+
627 "\1\0\1\110\1\326\2\117\1\0\2\117\1\u016b\1\117"+
628 "\14\0\2\117\2\0\12\117\1\u016c\30\117\1\110\10\0"+
629 "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+
630 "\4\117\14\0\2\117\2\0\2\117\1\u016d\40\117\1\110"+
631 "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+
632 "\1\0\4\117\14\0\2\117\2\0\1\117\1\u016e\1\117"+
633 "\1\u016f\37\117\1\110\10\0\6\117\1\0\6\117\1\0"+
634 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
635 "\1\117\1\u0170\41\117\1\110\10\0\6\117\1\0\6\117"+
636 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\1\u0171"+
637 "\1\117\2\0\30\117\1\u0172\12\117\1\110\10\0\6\117"+
638 "\1\0\5\117\1\u0173\1\0\1\110\1\326\2\117\1\0"+
639 "\4\117\14\0\2\117\2\0\31\117\1\u0174\5\117\1\343"+
640 "\3\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+
641 "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\2\117"+
642 "\1\u0175\40\117\1\110\10\0\6\117\1\0\6\117\1\0"+
643 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
644 "\27\117\1\u0176\13\117\1\110\10\0\6\117\1\0\6\117"+
645 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\1\u0177"+
646 "\1\117\2\0\34\117\1\u0178\6\117\1\110\10\0\6\117"+
647 "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+
648 "\14\0\2\117\2\0\30\117\1\u0179\2\117\1\u017a\7\117"+
649 "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+
650 "\2\117\1\0\4\117\14\0\2\117\2\0\2\117\1\u017b"+
651 "\40\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+
652 "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\34\117"+
653 "\1\u017c\6\117\1\110\10\0\6\117\1\0\6\117\1\0"+
654 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
655 "\31\117\1\u017d\11\117\1\110\10\0\6\117\1\0\6\117"+
656 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\1\u017e"+
657 "\1\117\2\0\43\117\1\110\10\0\6\117\1\0\6\117"+
658 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+
659 "\2\0\35\117\1\u017f\5\117\1\110\10\0\6\117\1\0"+
660 "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+
661 "\2\117\2\0\35\117\1\u0180\5\117\1\110\10\0\6\117"+
662 "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+
663 "\14\0\2\117\2\0\35\117\1\u0181\5\117\1\110\10\0"+
664 "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+
665 "\4\117\14\0\2\117\2\0\34\117\1\u0182\6\117\1\110"+
666 "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+
667 "\1\0\4\117\14\0\2\117\2\0\5\117\1\u0183\35\117"+
668 "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+
669 "\2\117\1\0\4\117\14\0\2\117\2\0\30\117\1\343"+
670 "\12\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+
671 "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\35\117"+
672 "\1\u0184\5\117\1\110\10\0\6\117\1\0\6\117\1\0"+
673 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
674 "\33\117\1\u0185\7\117\1\110\10\0\6\117\1\0\6\117"+
675 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+
676 "\2\0\3\117\1\u0186\37\117\1\110\10\0\6\117\1\0"+
677 "\5\117\1\u0187\1\0\1\110\1\326\2\117\1\0\4\117"+
678 "\14\0\2\117\2\0\43\117\1\110\10\0\6\117\1\0"+
679 "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+
680 "\2\117\2\0\31\117\1\u0188\11\117\1\110\10\0\6\117"+
681 "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+
682 "\14\0\2\117\2\0\1\117\1\u0189\1\u018a\40\117\1\110"+
683 "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+
684 "\1\0\4\117\14\0\2\117\2\0\1\117\1\u018b\41\117"+
685 "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+
686 "\2\117\1\0\4\117\14\0\1\u018c\1\117\2\0\43\117"+
687 "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+
688 "\2\117\1\0\4\117\14\0\2\117\2\0\12\117\1\343"+
689 "\30\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+
690 "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\6\117"+
691 "\1\u018d\34\117\1\110\10\0\6\117\1\0\6\117\1\0"+
692 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
693 "\34\117\1\u018e\6\117\1\110\10\0\6\117\1\0\6\117"+
694 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+
695 "\2\0\1\117\1\u018f\41\117\1\110\10\0\6\117\1\0"+
696 "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+
697 "\2\117\2\0\1\117\1\u0190\41\117\1\110\10\0\6\117"+
698 "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+
699 "\14\0\2\117\2\0\3\117\1\u0191\37\117\1\110\10\0"+
700 "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+
701 "\4\117\14\0\2\117\2\0\31\117\1\u0192\11\117\1\110"+
702 "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+
703 "\1\0\4\117\14\0\2\117\2\0\31\117\1\u0193\11\117"+
704 "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+
705 "\2\117\1\0\4\117\14\0\2\117\2\0\1\117\1\u0194"+
706 "\1\117\1\u0186\37\117\1\110\10\0\6\117\1\0\6\117"+
707 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+
708 "\2\0\35\117\1\u0195\5\117\1\110\10\0\6\117\1\0"+
709 "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+
710 "\2\117\2\0\5\117\1\u0196\35\117\1\110\10\0\6\117"+
711 "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+
712 "\14\0\2\117\2\0\7\117\1\343\33\117\1\110\10\0"+
713 "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+
714 "\4\117\14\0\2\117\2\0\1\117\1\u0197\41\117\1\110"+
715 "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+
716 "\1\0\4\117\14\0\2\117\2\0\4\117\1\u0198\1\u0199"+
717 "\21\117\1\u019a\13\117\1\110\10\0\6\117\1\0\5\117"+
718 "\1\u019b\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+
719 "\2\117\2\0\43\117\1\110\10\0\6\117\1\0\6\117"+
720 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\1\u019c"+
721 "\1\117\2\0\5\117\1\u019d\35\117\12\0\1\u019e\6\0"+
722 "\4\u019e\11\0\2\u019e\24\0\1\u019e\1\0\1\u019e\1\0"+
723 "\1\u019e\5\0\1\u019e\6\0\1\u019e\1\0\1\u019e\1\0"+
724 "\1\u019e\1\0\1\u019e\2\0\1\u019e\16\0\1\u019f\6\0"+
725 "\4\u019f\11\0\2\u019f\24\0\1\u019f\1\0\1\u019f\1\0"+
726 "\1\u019f\5\0\1\u019f\6\0\1\u019f\1\0\1\u019f\1\0"+
727 "\1\u019f\1\0\1\u019f\2\0\1\u019f\15\0\1\u01a0\51\0"+
728 "\1\u01a0\120\0\1\u01a1\126\0\1\u01a2\117\0\1\u01a3\127\0"+
729 "\1\u01a4\44\0\1\u01a5\51\0\1\u01a5\50\0\2\201\1\u01a6"+
730 "\3\201\1\0\6\201\6\0\4\201\14\0\2\201\2\0"+
731 "\30\201\1\u01a6\12\201\40\0\1\u01a7\144\0\1\u01a8\126\0"+
732 "\1\u011f\106\0\1\u01a9\111\0\1\u01aa\61\0\2\52\1\0"+
733 "\1\52\1\0\2\52\2\0\3\52\1\u01ab\2\52\1\0"+
734 "\25\52\1\0\6\52\1\u01ab\2\52\1\0\45\52\1\0"+
735 "\1\52\1\0\2\52\2\0\1\52\1\u0142\4\52\1\0"+
736 "\25\52\1\0\11\52\1\0\12\52\1\76\20\52\1\u0142"+
737 "\1\52\1\76\7\52\1\0\1\52\1\0\2\52\2\0"+
738 "\3\52\1\u01ac\2\52\1\0\25\52\1\0\6\52\1\u01ac"+
739 "\2\52\1\0\11\52\1\u01ad\22\52\1\u01ad\10\52\1\0"+
740 "\1\52\1\0\2\52\2\0\5\52\1\u01ae\1\0\25\52"+
741 "\1\0\11\52\1\0\1\52\1\u01ae\43\52\1\0\1\52"+
742 "\1\0\2\52\2\0\6\52\1\0\25\52\1\0\11\52"+
743 "\1\0\23\52\1\u0142\14\52\1\u0142\4\52\1\0\1\52"+
744 "\1\0\2\52\2\0\6\52\1\0\17\52\1\u01af\5\52"+
745 "\1\0\11\52\1\0\6\52\1\u01af\36\52\1\0\1\52"+
746 "\1\0\2\52\2\0\4\52\1\76\1\52\1\0\25\52"+
747 "\1\0\11\52\1\0\2\52\1\76\42\52\1\0\1\52"+
748 "\1\0\2\52\2\0\2\52\1\u01b0\3\52\1\0\25\52"+
749 "\1\0\11\52\1\0\30\52\1\u01b0\14\52\1\0\1\52"+
750 "\1\0\2\52\2\0\6\52\1\0\15\52\1\u014a\7\52"+
751 "\1\0\11\52\1\0\5\52\1\u014a\37\52\1\0\1\52"+
752 "\1\0\2\52\2\0\6\52\1\0\17\52\1\76\5\52"+
753 "\1\0\11\52\1\0\6\52\1\76\36\52\1\0\1\52"+
754 "\1\0\2\52\2\0\5\52\1\u0142\1\0\25\52\1\0"+
755 "\11\52\1\0\1\52\1\u0142\43\52\1\0\1\52\1\0"+
756 "\2\52\2\0\6\52\1\0\25\52\1\0\11\52\1\0"+
757 "\23\52\1\u01b1\14\52\1\u01b1\4\52\1\0\1\52\1\0"+
758 "\2\52\2\0\6\52\1\0\25\52\1\0\7\52\1\u01b2"+
759 "\1\52\1\0\20\52\1\u01b2\24\52\1\0\1\52\1\0"+
760 "\2\52\2\0\6\52\1\0\25\52\1\0\11\52\1\0"+
761 "\14\52\2\u01b3\27\52\1\0\1\52\1\0\2\52\2\0"+
762 "\6\52\1\0\25\52\1\0\11\52\1\0\12\52\1\u01b4"+
763 "\22\52\1\u01b4\7\52\1\0\1\52\1\0\2\52\2\0"+
764 "\6\52\1\0\25\52\1\0\11\52\1\0\13\52\1\u0142"+
765 "\23\52\1\u0142\5\52\1\0\1\52\1\0\2\52\2\0"+
766 "\6\52\1\0\25\52\1\0\11\52\1\0\10\52\1\u01b5"+
767 "\20\52\1\u01b5\13\52\1\0\1\52\1\0\2\52\2\0"+
768 "\6\52\1\0\5\52\1\u0147\17\52\1\0\11\52\1\0"+
769 "\17\52\1\u0147\25\52\1\0\1\52\1\0\2\52\2\0"+
770 "\6\52\1\0\25\52\1\0\7\52\1\u0152\1\52\1\0"+
771 "\20\52\1\u0152\24\52\1\0\1\52\1\0\2\52\2\0"+
772 "\3\52\1\u01b6\2\52\1\0\25\52\1\0\6\52\1\u01b6"+
773 "\2\52\1\0\45\52\1\0\1\52\1\0\2\52\2\0"+
774 "\6\52\1\0\25\52\1\0\11\52\1\0\10\52\1\u0146"+
775 "\20\52\1\u0146\13\52\1\0\1\52\1\0\2\52\2\0"+
776 "\6\52\1\0\25\52\1\0\11\52\1\0\11\52\1\u0147"+
777 "\22\52\1\u0147\10\52\1\0\1\52\1\0\2\52\2\0"+
778 "\5\52\1\u01b7\1\0\25\52\1\0\11\52\1\0\1\52"+
779 "\1\u01b7\43\52\1\0\1\52\1\0\2\52\2\0\6\52"+
780 "\1\0\25\52\1\0\11\52\1\0\10\52\1\312\20\52"+
781 "\1\312\13\52\1\0\1\52\1\0\2\52\2\0\5\52"+
782 "\1\u01b8\1\0\25\52\1\0\11\52\1\0\1\52\1\u01b8"+
783 "\43\52\1\0\1\52\1\0\2\52\2\0\1\52\1\u01b9"+
784 "\4\52\1\0\25\52\1\0\11\52\1\0\33\52\1\u01b9"+
785 "\11\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
786 "\25\52\1\0\11\52\1\0\11\52\1\u01ba\22\52\1\u01ba"+
787 "\10\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
788 "\17\52\1\u01bb\5\52\1\0\11\52\1\0\6\52\1\u01bb"+
789 "\36\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
790 "\25\52\1\0\11\52\1\0\13\52\1\76\23\52\1\76"+
791 "\5\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
792 "\25\52\1\0\11\52\1\0\21\52\1\76\10\52\1\76"+
793 "\12\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
794 "\17\52\1\u01bc\5\52\1\0\11\52\1\0\6\52\1\u01bc"+
795 "\36\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
796 "\17\52\1\u014a\5\52\1\0\11\52\1\0\6\52\1\u014a"+
797 "\36\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
798 "\17\52\1\315\5\52\1\0\11\52\1\0\6\52\1\315"+
799 "\36\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
800 "\25\52\1\0\11\52\1\0\14\52\2\u01bd\27\52\1\0"+
801 "\1\52\1\0\2\52\2\0\6\52\1\0\15\52\1\u01be"+
802 "\7\52\1\0\11\52\1\0\5\52\1\u01be\37\52\1\0"+
803 "\1\52\1\0\2\52\2\0\6\52\1\0\5\52\1\u01bf"+
804 "\17\52\1\0\11\52\1\0\17\52\1\u01bf\25\52\1\0"+
805 "\1\52\1\0\2\52\2\0\6\52\1\0\25\52\1\0"+
806 "\11\52\1\0\14\52\2\76\27\52\1\0\1\52\1\0"+
807 "\2\52\2\0\5\52\1\76\1\0\25\52\1\0\11\52"+
808 "\1\0\1\52\1\76\43\52\1\0\1\52\1\0\2\52"+
809 "\2\0\6\52\1\0\17\52\1\312\5\52\1\0\11\52"+
810 "\1\0\6\52\1\312\36\52\1\0\1\52\1\0\2\52"+
811 "\2\0\6\52\1\0\25\52\1\0\11\52\1\0\12\52"+
812 "\1\u01c0\22\52\1\u01c0\7\52\1\0\1\52\1\0\2\52"+
813 "\2\0\6\52\1\0\25\52\1\0\11\52\1\0\16\52"+
814 "\1\u01c1\17\52\1\u01c1\6\52\1\0\1\52\1\0\2\52"+
815 "\2\0\6\52\1\0\25\52\1\0\11\52\1\0\16\52"+
816 "\1\u012a\17\52\1\u012a\6\52\1\0\1\52\1\0\2\52"+
817 "\2\0\6\52\1\0\25\52\1\0\11\52\1\0\11\52"+
818 "\1\u01c2\22\52\1\u01c2\10\52\1\0\1\52\1\0\2\52"+
819 "\2\0\3\52\1\u01c3\2\52\1\0\25\52\1\0\6\52"+
820 "\1\u01c3\2\52\1\0\45\52\1\0\1\52\1\0\2\52"+
821 "\2\0\6\52\1\0\25\52\1\0\11\52\1\0\10\52"+
822 "\1\76\20\52\1\76\13\52\1\0\1\52\1\0\2\52"+
823 "\2\0\6\52\1\0\15\52\1\u01c4\7\52\1\0\11\52"+
824 "\1\0\5\52\1\u01c4\37\52\1\0\1\52\1\0\2\52"+
825 "\2\0\3\52\1\253\2\52\1\0\25\52\1\0\6\52"+
826 "\1\253\2\52\1\0\45\52\1\0\1\52\1\0\2\52"+
827 "\2\0\2\52\1\u01c5\3\52\1\0\25\52\1\0\11\52"+
828 "\1\0\30\52\1\u01c5\14\52\1\0\1\52\1\0\2\52"+
829 "\2\0\3\52\1\u01b8\2\52\1\0\25\52\1\0\6\52"+
830 "\1\u01b8\1\u01b2\1\52\1\0\20\52\1\u01b2\24\52\1\0"+
831 "\1\52\1\0\2\52\2\0\4\52\1\u0132\1\52\1\0"+
832 "\25\52\1\0\11\52\1\0\2\52\1\u0132\42\52\1\0"+
833 "\1\52\1\0\2\52\2\0\1\52\1\213\4\52\1\0"+
834 "\25\52\1\0\11\52\1\0\33\52\1\213\11\52\1\0"+
835 "\1\52\1\0\2\52\2\0\2\52\1\u01c6\3\52\1\0"+
836 "\25\52\1\0\11\52\1\0\30\52\1\u01c6\14\52\1\0"+
837 "\1\52\1\0\2\52\2\0\6\52\1\0\25\52\1\0"+
838 "\11\52\1\0\14\52\2\u01c7\27\52\1\0\1\52\1\0"+
839 "\2\52\2\0\5\52\1\u01c8\1\0\25\52\1\0\11\52"+
840 "\1\0\1\52\1\u01c8\43\52\1\0\1\52\1\0\2\52"+
841 "\2\0\6\52\1\0\17\52\1\315\5\52\1\0\11\52"+
842 "\1\0\6\52\1\315\1\52\1\76\20\52\1\76\13\52"+
843 "\1\0\1\52\1\0\2\52\2\0\6\52\1\0\5\52"+
844 "\1\76\17\52\1\0\11\52\1\0\17\52\1\76\25\52"+
845 "\1\0\1\52\1\0\2\52\2\0\6\52\1\0\25\52"+
846 "\1\0\11\52\1\0\21\52\1\76\1\u01c9\7\52\1\76"+
847 "\12\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
848 "\15\52\1\u01ca\7\52\1\0\11\52\1\0\5\52\1\u01ca"+
849 "\37\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
850 "\25\52\1\0\11\52\1\0\10\52\1\u01cb\20\52\1\u01cb"+
851 "\13\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
852 "\25\52\1\0\11\52\1\0\10\52\1\u01cc\20\52\1\u01cc"+
853 "\13\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
854 "\25\52\1\0\7\52\1\u01cd\1\52\1\0\20\52\1\u01cd"+
855 "\24\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
856 "\17\52\1\253\5\52\1\0\11\52\1\0\6\52\1\253"+
857 "\34\52\12\0\1\u01ce\100\0\1\u01ce\63\0\2\u0162\17\0"+
858 "\1\u0162\35\0\1\u01cf\112\0\1\110\10\0\1\110\1\u01d0"+
859 "\4\110\1\0\1\110\4\u01d0\1\110\1\0\4\110\1\0"+
860 "\2\110\2\u01d0\14\0\2\110\2\0\4\110\1\u01d0\1\110"+
861 "\1\u01d0\1\110\1\u01d0\5\110\1\u01d0\6\110\1\u01d0\1\110"+
862 "\1\u01d0\1\110\1\u01d0\1\110\1\u01d0\2\110\1\u01d0\5\110"+
863 "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+
864 "\1\0\4\117\14\0\1\u01d1\1\117\2\0\43\117\1\331"+
865 "\10\0\6\331\1\0\1\331\2\u0166\1\331\1\u0166\1\331"+
866 "\1\0\4\331\1\0\2\331\1\333\1\331\14\0\2\331"+
867 "\2\0\4\331\1\333\11\331\1\333\6\331\1\u0166\10\331"+
868 "\1\333\4\331\21\0\2\u0166\1\0\1\u0166\60\0\1\u0166"+
869 "\15\0\1\331\10\0\1\331\1\u0169\4\331\1\0\1\331"+
870 "\4\u0169\1\331\1\0\4\331\1\0\1\331\1\u0168\2\u0169"+
871 "\14\0\2\331\2\0\4\331\1\u0169\1\u0168\1\u0169\1\331"+
872 "\1\u0169\5\331\1\u0169\6\331\1\u0169\1\331\1\u0169\1\331"+
873 "\1\u0169\1\331\1\u0169\2\331\1\u0169\4\331\1\110\10\0"+
874 "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+
875 "\4\117\14\0\2\117\2\0\3\117\1\370\37\117\1\110"+
876 "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+
877 "\1\0\4\117\14\0\1\u01d2\1\117\2\0\43\117\1\110"+
878 "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+
879 "\1\0\4\117\14\0\2\117\2\0\31\117\1\u01d3\11\117"+
880 "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+
881 "\2\117\1\0\4\117\14\0\2\117\2\0\5\117\1\u01d4"+
882 "\26\117\1\u01d5\6\117\1\110\10\0\6\117\1\0\6\117"+
883 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+
884 "\2\0\6\117\1\u01d6\34\117\1\110\10\0\6\117\1\0"+
885 "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+
886 "\2\117\2\0\1\117\1\u01d7\41\117\1\110\10\0\6\117"+
887 "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+
888 "\14\0\2\117\2\0\34\117\1\343\6\117\1\110\10\0"+
889 "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+
890 "\4\117\14\0\2\117\2\0\3\117\1\343\37\117\1\110"+
891 "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+
892 "\1\0\4\117\14\0\2\117\2\0\34\117\1\u01d8\6\117"+
893 "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+
894 "\2\117\1\0\4\117\14\0\2\117\2\0\6\117\1\u01d9"+
895 "\34\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+
896 "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\35\117"+
897 "\1\u01da\5\117\1\110\10\0\6\117\1\0\6\117\1\0"+
898 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
899 "\6\117\1\u01db\34\117\1\110\10\0\6\117\1\0\6\117"+
900 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+
901 "\2\0\5\117\1\u01dc\35\117\1\110\10\0\6\117\1\0"+
902 "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+
903 "\2\117\2\0\40\117\1\u01dd\2\117\1\110\10\0\6\117"+
904 "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+
905 "\14\0\2\117\2\0\1\117\1\u01de\41\117\1\110\10\0"+
906 "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+
907 "\4\117\14\0\2\117\2\0\3\117\1\u01df\37\117\1\110"+
908 "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+
909 "\1\0\4\117\14\0\2\117\2\0\32\117\1\u01e0\10\117"+
910 "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+
911 "\2\117\1\0\4\117\14\0\2\117\2\0\6\117\1\366"+
912 "\34\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+
913 "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\30\117"+
914 "\1\u01e1\12\117\1\110\10\0\6\117\1\0\6\117\1\0"+
915 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
916 "\1\117\1\u01dc\41\117\1\110\10\0\6\117\1\0\6\117"+
917 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+
918 "\2\0\1\117\1\u0194\41\117\1\110\10\0\6\117\1\0"+
919 "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+
920 "\2\117\2\0\33\117\1\u01e2\7\117\1\110\10\0\6\117"+
921 "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+
922 "\14\0\2\117\2\0\33\117\1\u01e3\7\117\1\110\10\0"+
923 "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+
924 "\4\117\14\0\2\117\2\0\31\117\1\u01e4\11\117\1\110"+
925 "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+
926 "\1\0\4\117\14\0\2\117\2\0\31\117\1\u01e1\11\117"+
927 "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+
928 "\2\117\1\0\4\117\14\0\2\117\2\0\3\117\1\u0173"+
929 "\37\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+
930 "\1\326\2\117\1\0\4\117\14\0\1\117\1\u01e5\2\0"+
931 "\43\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+
932 "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\31\117"+
933 "\1\u01e6\11\117\1\110\10\0\6\117\1\0\6\117\1\0"+
934 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
935 "\6\117\1\343\34\117\1\110\10\0\6\117\1\0\6\117"+
936 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+
937 "\2\0\15\117\1\343\25\117\1\110\10\0\6\117\1\0"+
938 "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+
939 "\2\117\2\0\5\117\1\u01e7\35\117\1\110\10\0\6\117"+
940 "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+
941 "\14\0\2\117\2\0\6\117\1\u01e8\34\117\1\110\10\0"+
942 "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+
943 "\4\117\14\0\2\117\2\0\34\117\1\u01d5\6\117\1\110"+
944 "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+
945 "\1\0\4\117\14\0\2\117\2\0\1\343\42\117\1\110"+
946 "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+
947 "\1\0\4\117\14\0\2\117\2\0\5\117\1\u0186\35\117"+
948 "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+
949 "\2\117\1\0\4\117\14\0\2\117\2\0\31\117\1\u01e9"+
950 "\11\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+
951 "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\5\117"+
952 "\1\u01ea\35\117\1\110\10\0\6\117\1\0\6\117\1\0"+
953 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
954 "\6\117\1\u01e5\34\117\1\110\10\0\6\117\1\0\5\117"+
955 "\1\u01eb\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+
956 "\2\117\2\0\43\117\1\110\10\0\6\117\1\0\6\117"+
957 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+
958 "\2\0\1\117\1\u01ec\41\117\1\110\10\0\6\117\1\0"+
959 "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+
960 "\2\117\2\0\30\117\1\u01e5\12\117\1\110\10\0\6\117"+
961 "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+
962 "\14\0\2\117\2\0\3\117\1\u0171\37\117\1\110\10\0"+
963 "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+
964 "\4\117\14\0\2\117\2\0\33\117\1\u018b\7\117\1\110"+
965 "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+
966 "\1\0\4\117\14\0\2\117\2\0\1\117\1\u01ed\1\117"+
967 "\1\u01ee\37\117\1\110\10\0\6\117\1\0\6\117\1\0"+
968 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
969 "\5\117\1\343\35\117\1\110\10\0\6\117\1\0\6\117"+
970 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\1\u01ef"+
971 "\1\117\2\0\43\117\1\110\10\0\6\117\1\0\6\117"+
972 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+
973 "\2\0\31\117\1\u01f0\11\117\1\110\10\0\6\117\1\0"+
974 "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+
975 "\2\117\2\0\6\117\1\u01f1\34\117\1\110\10\0\6\117"+
976 "\1\0\5\117\1\u01f2\1\0\1\110\1\326\2\117\1\0"+
977 "\4\117\14\0\2\117\2\0\43\117\1\110\10\0\6\117"+
978 "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+
979 "\14\0\2\117\2\0\27\117\1\u01f3\13\117\1\110\10\0"+
980 "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+
981 "\4\117\14\0\2\117\2\0\36\117\1\343\4\117\1\110"+
982 "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+
983 "\1\0\4\117\14\0\2\117\2\0\31\117\1\u01f4\11\117"+
984 "\12\0\1\u01f5\6\0\4\u01f5\11\0\2\u01f5\24\0\1\u01f5"+
985 "\1\0\1\u01f5\1\0\1\u01f5\5\0\1\u01f5\6\0\1\u01f5"+
986 "\1\0\1\u01f5\1\0\1\u01f5\1\0\1\u01f5\2\0\1\u01f5"+
987 "\16\0\1\u01f6\6\0\4\u01f6\11\0\2\u01f6\24\0\1\u01f6"+
988 "\1\0\1\u01f6\1\0\1\u01f6\5\0\1\u01f6\6\0\1\u01f6"+
989 "\1\0\1\u01f6\1\0\1\u01f6\1\0\1\u01f6\2\0\1\u01f6"+
990 "\16\0\1\u01f7\100\0\1\u01f7\71\0\1\u01f8\126\0\1\u01a3"+
991 "\106\0\1\u01f9\111\0\1\u01fa\73\0\1\u01fb\100\0\1\u01fb"+
992 "\20\0\3\201\1\u01fc\2\201\1\0\6\201\6\0\4\201"+
993 "\14\0\1\u01fc\1\201\2\0\43\201\52\0\1\u01a9\10\0"+
994 "\1\u011f\47\0\1\u01fd\117\0\2\u01fe\1\0\7\u01aa\1\0"+
995 "\6\u01aa\1\0\1\u01fe\1\0\1\u01fe\1\u01aa\1\u01fe\4\u01aa"+
996 "\2\u01fe\1\0\3\u01fe\1\0\5\u01fe\2\u01aa\2\u01fe\43\u01aa"+
997 "\2\52\1\0\1\52\1\0\2\52\2\0\4\52\1\u0147"+
998 "\1\52\1\0\25\52\1\0\11\52\1\0\2\52\1\u0147"+
999 "\42\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
1000 "\25\52\1\0\11\52\1\0\21\52\1\u012a\10\52\1\u012a"+
1001 "\12\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
1002 "\25\52\1\0\11\52\1\0\12\52\1\234\22\52\1\234"+
1003 "\7\52\1\0\1\52\1\0\2\52\2\0\3\52\1\u01b8"+
1004 "\2\52\1\0\25\52\1\0\6\52\1\u01b8\2\52\1\0"+
1005 "\45\52\1\0\1\52\1\0\2\52\2\0\1\52\1\u0147"+
1006 "\4\52\1\0\25\52\1\0\11\52\1\0\33\52\1\u0147"+
1007 "\11\52\1\0\1\52\1\0\2\52\2\0\1\52\1\u012a"+
1008 "\4\52\1\0\25\52\1\0\11\52\1\0\33\52\1\u012a"+
1009 "\11\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
1010 "\25\52\1\0\11\52\1\0\10\52\1\u01ff\20\52\1\u01ff"+
1011 "\13\52\1\0\1\52\1\0\2\52\2\0\2\52\1\u0200"+
1012 "\3\52\1\0\25\52\1\0\11\52\1\0\30\52\1\u0200"+
1013 "\14\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
1014 "\17\52\1\u0201\5\52\1\0\11\52\1\0\6\52\1\u0201"+
1015 "\1\52\1\u01bc\20\52\1\u01bc\13\52\1\0\1\52\1\0"+
1016 "\2\52\2\0\6\52\1\0\25\52\1\0\11\52\1\0"+
1017 "\16\52\1\u0202\17\52\1\u0202\6\52\1\0\1\52\1\0"+
1018 "\2\52\2\0\6\52\1\0\25\52\1\0\11\52\1\0"+
1019 "\14\52\2\u012a\27\52\1\0\1\52\1\0\2\52\2\0"+
1020 "\6\52\1\0\25\52\1\0\11\52\1\0\12\52\1\u0203"+
1021 "\22\52\1\u0203\7\52\1\0\1\52\1\0\2\52\2\0"+
1022 "\6\52\1\0\25\52\1\0\11\52\1\0\10\52\1\u0204"+
1023 "\20\52\1\u0204\13\52\1\0\1\52\1\0\2\52\2\0"+
1024 "\6\52\1\0\25\52\1\0\11\52\1\0\11\52\1\307"+
1025 "\22\52\1\307\10\52\1\0\1\52\1\0\2\52\2\0"+
1026 "\6\52\1\0\25\52\1\0\11\52\1\0\21\52\1\u0205"+
1027 "\10\52\1\u0205\12\52\1\0\1\52\1\0\2\52\2\0"+
1028 "\6\52\1\0\5\52\1\u01bc\17\52\1\0\11\52\1\0"+
1029 "\17\52\1\u01bc\25\52\1\0\1\52\1\0\2\52\2\0"+
1030 "\6\52\1\0\16\52\1\u0206\6\52\1\0\11\52\1\0"+
1031 "\4\52\1\u0206\40\52\1\0\1\52\1\0\2\52\2\0"+
1032 "\6\52\1\0\25\52\1\0\11\52\1\0\12\52\1\312"+
1033 "\22\52\1\312\7\52\1\0\1\52\1\0\2\52\2\0"+
1034 "\6\52\1\0\17\52\1\u0207\5\52\1\0\11\52\1\0"+
1035 "\6\52\1\u0207\36\52\1\0\1\52\1\0\2\52\2\0"+
1036 "\6\52\1\0\25\52\1\0\11\52\1\0\16\52\1\u0208"+
1037 "\17\52\1\u0208\6\52\1\0\1\52\1\0\2\52\2\0"+
1038 "\2\52\1\u012a\3\52\1\0\25\52\1\0\11\52\1\0"+
1039 "\30\52\1\u012a\14\52\1\0\1\52\1\0\2\52\2\0"+
1040 "\5\52\1\u0209\1\0\25\52\1\0\11\52\1\0\1\52"+
1041 "\1\u0209\43\52\1\0\1\52\1\0\2\52\2\0\6\52"+
1042 "\1\0\25\52\1\0\11\52\1\0\12\52\1\u020a\22\52"+
1043 "\1\u020a\7\52\1\0\1\52\1\0\2\52\2\0\1\52"+
1044 "\1\227\4\52\1\0\25\52\1\0\11\52\1\0\33\52"+
1045 "\1\227\11\52\1\0\1\52\1\0\2\52\2\0\6\52"+
1046 "\1\0\17\52\1\u0147\5\52\1\0\11\52\1\0\6\52"+
1047 "\1\u0147\36\52\1\0\1\52\1\0\2\52\2\0\6\52"+
1048 "\1\0\17\52\1\u020b\5\52\1\0\11\52\1\0\6\52"+
1049 "\1\u020b\36\52\1\0\1\52\1\0\2\52\2\0\6\52"+
1050 "\1\0\25\52\1\0\11\52\1\0\10\52\1\u020c\20\52"+
1051 "\1\u020c\13\52\1\0\1\52\1\0\2\52\2\0\3\52"+
1052 "\1\u020d\2\52\1\0\25\52\1\0\6\52\1\u020d\2\52"+
1053 "\1\0\45\52\1\0\1\52\1\0\2\52\2\0\6\52"+
1054 "\1\0\5\52\1\u020e\17\52\1\0\11\52\1\0\17\52"+
1055 "\1\u020e\25\52\1\0\1\52\1\0\2\52\2\0\6\52"+
1056 "\1\0\25\52\1\0\11\52\1\0\11\52\1\234\22\52"+
1057 "\1\234\10\52\1\0\1\52\1\0\2\52\2\0\3\52"+
1058 "\1\u020f\2\52\1\0\25\52\1\0\6\52\1\u020f\2\52"+
1059 "\1\0\45\52\1\0\1\52\1\0\2\52\2\0\5\52"+
1060 "\1\u0210\1\0\15\52\1\u0211\7\52\1\0\7\52\1\u0212"+
1061 "\1\52\1\0\1\52\1\u0210\3\52\1\u0211\12\52\1\u0212"+
1062 "\24\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
1063 "\17\52\1\307\5\52\1\0\11\52\1\0\6\52\1\307"+
1064 "\34\52\13\0\1\u0213\74\0\1\u0213\12\0\1\110\10\0"+
1065 "\1\110\1\u0214\4\110\1\0\1\110\4\u0214\1\110\1\0"+
1066 "\4\110\1\0\2\110\2\u0214\14\0\2\110\2\0\4\110"+
1067 "\1\u0214\1\110\1\u0214\1\110\1\u0214\5\110\1\u0214\6\110"+
1068 "\1\u0214\1\110\1\u0214\1\110\1\u0214\1\110\1\u0214\2\110"+
1069 "\1\u0214\5\110\10\0\6\117\1\0\6\117\1\0\1\110"+
1070 "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\35\117"+
1071 "\1\u0215\5\117\1\110\10\0\6\117\1\0\6\117\1\0"+
1072 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
1073 "\35\117\1\u0216\5\117\1\110\10\0\6\117\1\0\6\117"+
1074 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+
1075 "\2\0\12\117\1\u01e7\30\117\1\110\10\0\6\117\1\0"+
1076 "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+
1077 "\2\117\2\0\6\117\1\u0217\34\117\1\110\10\0\6\117"+
1078 "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+
1079 "\14\0\2\117\2\0\30\117\1\u01ee\12\117\1\110\10\0"+
1080 "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+
1081 "\4\117\14\0\2\117\2\0\30\117\1\u0218\12\117\1\110"+
1082 "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+
1083 "\1\0\4\117\14\0\2\117\2\0\31\117\1\u0219\11\117"+
1084 "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+
1085 "\2\117\1\0\4\117\14\0\2\117\2\0\7\117\1\u021a"+
1086 "\33\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+
1087 "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\3\117"+
1088 "\1\u021b\37\117\1\110\10\0\6\117\1\0\6\117\1\0"+
1089 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
1090 "\34\117\1\u021c\6\117\1\110\10\0\6\117\1\0\6\117"+
1091 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\1\u021d"+
1092 "\1\117\2\0\43\117\1\110\10\0\6\117\1\0\6\117"+
1093 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+
1094 "\2\0\31\117\1\u01f1\11\117\1\110\10\0\6\117\1\0"+
1095 "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+
1096 "\2\117\2\0\6\117\1\u021e\34\117\1\110\10\0\6\117"+
1097 "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+
1098 "\14\0\2\117\2\0\6\117\1\u021f\34\117\1\110\10\0"+
1099 "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+
1100 "\4\117\14\0\2\117\2\0\31\117\1\u0220\11\117\1\110"+
1101 "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+
1102 "\1\0\4\117\14\0\2\117\2\0\1\117\1\u01e5\41\117"+
1103 "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+
1104 "\2\117\1\0\4\117\14\0\2\117\2\0\1\u0221\42\117"+
1105 "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+
1106 "\2\117\1\0\4\117\14\0\2\117\2\0\1\117\1\u0222"+
1107 "\41\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+
1108 "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\5\117"+
1109 "\1\u0223\35\117\1\110\10\0\6\117\1\0\6\117\1\0"+
1110 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
1111 "\2\117\1\u0224\40\117\1\110\10\0\6\117\1\0\6\117"+
1112 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+
1113 "\2\0\35\117\1\u0225\5\117\1\110\10\0\6\117\1\0"+
1114 "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+
1115 "\2\117\2\0\32\117\1\343\10\117\1\110\10\0\6\117"+
1116 "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+
1117 "\14\0\2\117\2\0\6\117\1\u0226\34\117\1\110\10\0"+
1118 "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+
1119 "\4\117\14\0\2\117\2\0\30\117\1\u0227\12\117\1\110"+
1120 "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+
1121 "\1\0\4\117\14\0\2\117\2\0\30\117\1\u0228\12\117"+
1122 "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+
1123 "\2\117\1\0\4\117\14\0\1\u0229\1\117\2\0\43\117"+
1124 "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+
1125 "\2\117\1\0\4\117\14\0\2\117\2\0\1\117\1\343"+
1126 "\41\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+
1127 "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\40\117"+
1128 "\1\u0186\2\117\1\110\10\0\6\117\1\0\5\117\1\u022a"+
1129 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+
1130 "\2\0\43\117\1\110\10\0\6\117\1\0\6\117\1\0"+
1131 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
1132 "\1\117\1\u0186\41\117\1\110\10\0\6\117\1\0\6\117"+
1133 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\1\117"+
1134 "\1\u022b\2\0\43\117\1\110\10\0\6\117\1\0\6\117"+
1135 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+
1136 "\2\0\5\117\1\u018f\35\117\1\110\10\0\6\117\1\0"+
1137 "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+
1138 "\2\117\2\0\1\117\1\376\41\117\13\0\1\u022c\74\0"+
1139 "\1\u022c\64\0\1\u01f9\10\0\1\u01a3\47\0\1\u022d\117\0"+
1140 "\2\u022e\1\0\7\u01fa\1\0\6\u01fa\1\0\1\u022e\1\0"+
1141 "\1\u022e\1\u01fa\1\u022e\4\u01fa\2\u022e\1\0\3\u022e\1\0"+
1142 "\5\u022e\2\u01fa\2\u022e\43\u01fa\13\0\1\u022f\74\0\1\u022f"+
1143 "\23\0\4\201\1\u0230\1\201\1\0\6\201\6\0\4\201"+
1144 "\14\0\2\201\2\0\2\201\1\u0230\40\201\10\0\1\u01aa"+
1145 "\112\0\2\52\1\0\1\52\1\0\2\52\2\0\1\76"+
1146 "\5\52\1\0\25\52\1\0\11\52\1\0\3\52\1\76"+
1147 "\41\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
1148 "\25\52\1\0\11\52\1\0\11\52\1\u0231\22\52\1\u0231"+
1149 "\10\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
1150 "\25\52\1\0\11\52\1\0\12\52\1\u0147\22\52\1\u0147"+
1151 "\7\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
1152 "\17\52\1\u0232\5\52\1\0\11\52\1\0\6\52\1\u0232"+
1153 "\36\52\1\0\1\52\1\0\2\52\2\0\5\52\1\u0233"+
1154 "\1\0\25\52\1\0\11\52\1\0\1\52\1\u0233\43\52"+
1155 "\1\0\1\52\1\0\2\52\2\0\2\52\1\u0234\3\52"+
1156 "\1\0\25\52\1\0\11\52\1\0\30\52\1\u0234\14\52"+
1157 "\1\0\1\52\1\0\2\52\2\0\6\52\1\0\25\52"+
1158 "\1\0\11\52\1\0\22\52\1\u0235\22\52\1\0\1\52"+
1159 "\1\0\2\52\2\0\6\52\1\0\25\52\1\0\11\52"+
1160 "\1\0\11\52\1\u0201\22\52\1\u0201\10\52\1\0\1\52"+
1161 "\1\0\2\52\2\0\1\u01c4\5\52\1\0\25\52\1\0"+
1162 "\11\52\1\0\3\52\1\u01c4\41\52\1\0\1\52\1\0"+
1163 "\2\52\2\0\1\u0236\5\52\1\0\25\52\1\0\11\52"+
1164 "\1\0\3\52\1\u0236\41\52\1\0\1\52\1\0\2\52"+
1165 "\2\0\6\52\1\0\25\52\1\0\11\52\1\0\13\52"+
1166 "\1\u0146\23\52\1\u0146\5\52\1\0\1\52\1\0\2\52"+
1167 "\2\0\1\u01ff\5\52\1\0\25\52\1\0\11\52\1\0"+
1168 "\3\52\1\u01ff\41\52\1\0\1\52\1\0\2\52\2\0"+
1169 "\6\52\1\0\25\52\1\0\11\52\1\0\14\52\2\u0237"+
1170 "\27\52\1\0\1\52\1\0\2\52\2\0\1\52\1\u0238"+
1171 "\4\52\1\0\25\52\1\0\11\52\1\0\33\52\1\u0238"+
1172 "\11\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
1173 "\17\52\1\u012a\5\52\1\0\11\52\1\0\6\52\1\u012a"+
1174 "\36\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
1175 "\15\52\1\u01ff\7\52\1\0\11\52\1\0\5\52\1\u01ff"+
1176 "\37\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
1177 "\17\52\1\u0239\5\52\1\0\11\52\1\0\6\52\1\u0239"+
1178 "\36\52\1\0\1\52\1\0\2\52\2\0\3\52\1\300"+
1179 "\2\52\1\0\25\52\1\0\6\52\1\300\2\52\1\0"+
1180 "\45\52\1\0\1\52\1\0\2\52\2\0\2\52\1\u023a"+
1181 "\3\52\1\0\25\52\1\0\11\52\1\0\30\52\1\u023a"+
1182 "\12\52\14\0\1\u023b\37\0\1\u023b\46\0\1\110\10\0"+
1183 "\1\110\1\u023c\4\110\1\0\1\110\4\u023c\1\110\1\0"+
1184 "\4\110\1\0\2\110\2\u023c\14\0\2\110\2\0\4\110"+
1185 "\1\u023c\1\110\1\u023c\1\110\1\u023c\5\110\1\u023c\6\110"+
1186 "\1\u023c\1\110\1\u023c\1\110\1\u023c\1\110\1\u023c\2\110"+
1187 "\1\u023c\5\110\10\0\6\117\1\0\6\117\1\0\1\110"+
1188 "\1\326\2\117\1\0\4\117\14\0\1\u023d\1\117\2\0"+
1189 "\43\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+
1190 "\1\326\2\117\1\0\4\117\14\0\1\u023e\1\117\2\0"+
1191 "\43\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+
1192 "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\15\117"+
1193 "\1\u023f\25\117\1\110\10\0\6\117\1\0\6\117\1\0"+
1194 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
1195 "\4\117\1\u0240\36\117\1\110\10\0\6\117\1\0\6\117"+
1196 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+
1197 "\2\0\35\117\1\u0241\5\117\1\110\10\0\6\117\1\0"+
1198 "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+
1199 "\1\u0242\1\117\2\0\43\117\1\110\10\0\6\117\1\0"+
1200 "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+
1201 "\2\117\2\0\4\117\1\343\36\117\1\110\10\0\6\117"+
1202 "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+
1203 "\14\0\2\117\2\0\33\117\1\343\7\117\1\110\10\0"+
1204 "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+
1205 "\4\117\14\0\2\117\2\0\33\117\1\u0243\7\117\1\110"+
1206 "\10\0\3\117\1\u0244\2\117\1\0\6\117\1\0\1\110"+
1207 "\1\326\2\117\1\0\2\117\1\u0245\1\117\14\0\2\117"+
1208 "\2\0\43\117\1\110\10\0\6\117\1\0\6\117\1\0"+
1209 "\1\110\1\326\2\117\1\0\4\117\14\0\1\117\1\u0186"+
1210 "\2\0\43\117\1\110\10\0\6\117\1\0\6\117\1\0"+
1211 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
1212 "\30\117\1\u0246\12\117\1\110\10\0\6\117\1\0\6\117"+
1213 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\1\u0247"+
1214 "\1\117\2\0\43\117\1\110\10\0\6\117\1\0\6\117"+
1215 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+
1216 "\2\0\5\117\1\u0248\35\117\1\110\10\0\6\117\1\0"+
1217 "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+
1218 "\2\117\2\0\6\117\1\u01e7\34\117\1\110\10\0\6\117"+
1219 "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+
1220 "\14\0\2\117\2\0\36\117\1\u0171\4\117\1\110\10\0"+
1221 "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+
1222 "\4\117\14\0\2\117\2\0\31\117\1\u0249\11\117\1\110"+
1223 "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+
1224 "\1\0\4\117\14\0\2\117\2\0\35\117\1\343\5\117"+
1225 "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+
1226 "\2\117\1\0\4\117\14\0\2\117\2\0\31\117\1\u024a"+
1227 "\11\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+
1228 "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\35\117"+
1229 "\1\u024b\5\117\1\110\10\0\6\117\1\0\6\117\1\0"+
1230 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
1231 "\5\117\1\u01ee\35\117\1\110\10\0\6\117\1\0\6\117"+
1232 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\1\117"+
1233 "\1\u017b\2\0\43\117\14\0\1\u024c\37\0\1\u024c\56\0"+
1234 "\1\u01fa\126\0\1\u024d\37\0\1\u024d\57\0\5\201\1\u024e"+
1235 "\1\0\6\201\6\0\4\201\14\0\2\201\2\0\1\201"+
1236 "\1\u024e\41\201\2\52\1\0\1\52\1\0\2\52\2\0"+
1237 "\6\52\1\0\5\52\1\u0127\17\52\1\0\11\52\1\0"+
1238 "\17\52\1\u0127\25\52\1\0\1\52\1\0\2\52\2\0"+
1239 "\6\52\1\0\14\52\1\76\10\52\1\0\11\52\1\0"+
1240 "\41\52\1\76\3\52\1\0\1\52\1\0\2\52\2\0"+
1241 "\6\52\1\0\17\52\1\u024f\5\52\1\0\11\52\1\0"+
1242 "\6\52\1\u024f\36\52\1\0\1\52\1\0\2\52\2\0"+
1243 "\6\52\1\0\17\52\1\u014f\5\52\1\0\11\52\1\0"+
1244 "\6\52\1\u014f\36\52\1\0\1\52\1\0\2\52\2\0"+
1245 "\6\52\1\0\5\52\1\u0250\17\52\1\0\11\52\1\0"+
1246 "\17\52\1\u0250\25\52\1\0\1\52\1\0\2\52\2\0"+
1247 "\6\52\1\0\25\52\1\0\11\52\1\0\11\52\1\221"+
1248 "\22\52\1\221\10\52\1\0\1\52\1\0\2\52\2\0"+
1249 "\6\52\1\0\17\52\1\u01ff\5\52\1\0\11\52\1\0"+
1250 "\6\52\1\u01ff\36\52\1\0\1\52\1\0\2\52\2\0"+
1251 "\6\52\1\0\25\52\1\0\11\52\1\0\11\52\1\u014a"+
1252 "\22\52\1\u014a\10\52\1\0\1\52\1\0\2\52\2\0"+
1253 "\6\52\1\0\25\52\1\0\11\52\1\0\14\52\2\u0251"+
1254 "\27\52\1\0\1\52\1\0\2\52\2\0\3\52\1\312"+
1255 "\2\52\1\0\25\52\1\0\6\52\1\312\2\52\1\0"+
1256 "\43\52\15\0\1\u0252\44\0\1\u0252\40\0\1\110\10\0"+
1257 "\1\110\1\117\4\110\1\0\1\110\4\117\1\110\1\0"+
1258 "\4\110\1\0\2\110\2\117\14\0\2\110\2\0\4\110"+
1259 "\1\117\1\110\1\117\1\110\1\117\5\110\1\117\6\110"+
1260 "\1\117\1\110\1\117\1\110\1\117\1\110\1\117\2\110"+
1261 "\1\117\5\110\10\0\6\117\1\0\6\117\1\0\1\110"+
1262 "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\1\117"+
1263 "\1\u0248\41\117\1\110\10\0\6\117\1\0\6\117\1\0"+
1264 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
1265 "\1\117\1\u0224\41\117\1\110\10\0\6\117\1\0\6\117"+
1266 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+
1267 "\2\0\6\117\1\u0253\34\117\1\110\10\0\6\117\1\0"+
1268 "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+
1269 "\2\117\2\0\31\117\1\u0254\11\117\1\110\10\0\6\117"+
1270 "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+
1271 "\14\0\2\117\2\0\33\117\1\u0175\7\117\1\110\10\0"+
1272 "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+
1273 "\4\117\14\0\2\117\2\0\6\117\1\u0255\34\117\1\110"+
1274 "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+
1275 "\1\0\4\117\14\0\2\117\2\0\1\117\1\u0256\41\117"+
1276 "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+
1277 "\2\117\1\0\4\117\14\0\2\117\2\0\35\117\1\u0257"+
1278 "\5\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+
1279 "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\5\117"+
1280 "\1\u0258\35\117\1\110\10\0\6\117\1\0\6\117\1\0"+
1281 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
1282 "\34\117\1\u0259\6\117\1\110\10\0\6\117\1\0\6\117"+
1283 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+
1284 "\2\0\34\117\1\u0227\6\117\1\110\10\0\6\117\1\0"+
1285 "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+
1286 "\2\117\2\0\37\117\1\343\3\117\1\110\10\0\6\117"+
1287 "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+
1288 "\14\0\2\117\2\0\35\117\1\u01e5\5\117\1\110\10\0"+
1289 "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+
1290 "\4\117\14\0\2\117\2\0\33\117\1\u01ee\7\117\1\110"+
1291 "\10\0\6\117\1\0\5\117\1\u0186\1\0\1\110\1\326"+
1292 "\2\117\1\0\4\117\14\0\2\117\2\0\43\117\15\0"+
1293 "\1\u025a\44\0\1\u025a\55\0\1\u025b\44\0\1\u025b\40\0"+
1294 "\2\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
1295 "\14\52\1\u0147\10\52\1\0\11\52\1\0\41\52\1\u0147"+
1296 "\3\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
1297 "\25\52\1\0\11\52\1\0\11\52\1\223\22\52\1\223"+
1298 "\10\52\1\0\1\52\1\0\2\52\2\0\4\52\1\u025c"+
1299 "\1\52\1\0\25\52\1\0\11\52\1\0\2\52\1\u025c"+
1300 "\40\52\16\0\1\u025d\42\0\1\u025d\41\0\1\110\10\0"+
1301 "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+
1302 "\4\117\14\0\2\117\2\0\35\117\1\u025e\5\117\1\110"+
1303 "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+
1304 "\1\0\4\117\14\0\2\117\2\0\33\117\1\u0186\7\117"+
1305 "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+
1306 "\2\117\1\0\4\117\14\0\2\117\2\0\35\117\1\u01ee"+
1307 "\5\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+
1308 "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\6\117"+
1309 "\1\u019c\34\117\1\110\10\0\6\117\1\0\6\117\1\0"+
1310 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
1311 "\1\117\1\u01e7\41\117\1\110\10\0\6\117\1\0\6\117"+
1312 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+
1313 "\2\0\34\117\1\u025f\6\117\1\110\10\0\6\117\1\0"+
1314 "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+
1315 "\2\117\2\0\35\117\1\u0260\5\117\16\0\1\u0261\42\0"+
1316 "\1\u0261\57\0\1\u0262\42\0\1\u0262\41\0\2\52\1\0"+
1317 "\1\52\1\0\2\52\2\0\6\52\1\0\15\52\1\u0263"+
1318 "\7\52\1\0\11\52\1\0\5\52\1\u0263\35\52\17\0"+
1319 "\1\u0264\103\0\1\110\10\0\6\117\1\0\6\117\1\0"+
1320 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
1321 "\1\117\1\u0171\41\117\1\110\10\0\6\117\1\0\6\117"+
1322 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+
1323 "\2\0\31\117\1\u0257\11\117\1\110\10\0\6\117\1\0"+
1324 "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+
1325 "\1\u0265\1\117\2\0\43\117\17\0\1\u0266\122\0\1\u0267"+
1326 "\103\0\2\52\1\0\1\52\1\0\2\52\2\0\6\52"+
1327 "\1\0\25\52\1\0\11\52\1\0\10\52\1\223\20\52"+
1328 "\1\223\11\52\1\110\10\0\6\117\1\0\6\117\1\0"+
1329 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
1330 "\42\117\1\u0256";
1331
1332 private static int [] zzUnpackTrans() {
1333 int [] result = new int[45899];
1334 int offset = 0;
1335 offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result);
1336 return result;
1337 }
1338
1339 private static int zzUnpackTrans(String packed, int offset, int [] result) {
1340 int i = 0; /* index in packed string */
1341 int j = offset; /* index in unpacked array */
1342 int l = packed.length();
1343 while (i < l) {
1344 int count = packed.charAt(i++);
1345 int value = packed.charAt(i++);
1346 value--;
1347 do result[j++] = value; while (--count > 0);
1348 }
1349 return j;
1350 }
1351
1352
1353 /* error codes */
1354 private static final int ZZ_UNKNOWN_ERROR = 0;
1355 private static final int ZZ_NO_MATCH = 1;
1356 private static final int ZZ_PUSHBACK_2BIG = 2;
1357
1358 /* error messages for the codes above */
1359 private static final String ZZ_ERROR_MSG[] = {
1360 "Unkown internal scanner error",
1361 "Error: could not match input",
1362 "Error: pushback value was too large"
1363 };
1364
1365 /**
1366 * ZZ_ATTRIBUTE[aState] contains the attributes of state <code>aState</code>
1367 */
1368 private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute();
1369
1370 private static final String ZZ_ATTRIBUTE_PACKED_0 =
1371 "\6\0\2\1\1\0\2\1\5\0\2\1\1\11\4\1"+
1372 "\1\11\5\1\1\11\2\1\2\11\2\1\1\11\1\1"+
1373 "\3\11\1\1\1\11\25\1\1\11\1\1\1\11\1\1"+
1374 "\3\11\1\1\1\11\2\1\2\11\7\1\1\11\3\1"+
1375 "\1\11\3\1\1\11\20\1\2\11\2\1\1\11\1\1"+
1376 "\1\11\1\1\1\11\6\1\1\11\5\1\2\11\5\0"+
1377 "\1\11\103\1\1\11\3\0\1\11\1\0\73\1\1\11"+
1378 "\2\1\1\0\1\11\5\0\2\1\1\0\1\11\4\0"+
1379 "\100\1\1\0\1\1\1\0\3\1\1\0\66\1\10\0"+
1380 "\1\1\1\11\2\0\44\1\1\0\1\11\45\1\1\0"+
1381 "\1\11\3\0\1\1\1\0\1\1\2\0\24\1\1\0"+
1382 "\30\1\4\0\13\1\1\0\20\1\2\0\4\1\1\0"+
1383 "\7\1\2\0\1\1\1\0\3\1\2\0\1\1\1\11"+
1384 "\1\1\2\11";
1385
1386 private static int [] zzUnpackAttribute() {
1387 int [] result = new int[615];
1388 int offset = 0;
1389 offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result);
1390 return result;
1391 }
1392
1393 private static int zzUnpackAttribute(String packed, int offset, int [] result) {
1394 int i = 0; /* index in packed string */
1395 int j = offset; /* index in unpacked array */
1396 int l = packed.length();
1397 while (i < l) {
1398 int count = packed.charAt(i++);
1399 int value = packed.charAt(i++);
1400 do result[j++] = value; while (--count > 0);
1401 }
1402 return j;
1403 }
1404
1405 /** the input device */
1406 private java.io.Reader zzReader;
1407
1408 /** the current state of the DFA */
1409 private int zzState;
1410
1411 /** the current lexical state */
1412 private int zzLexicalState = YYINITIAL;
1413
1414 /** this buffer contains the current text to be matched and is
1415 the source of the yytext() string */
1416 private char zzBuffer[] = new char[ZZ_BUFFERSIZE];
1417
1418 /** the textposition at the last accepting state */
1419 private int zzMarkedPos;
1420
1421 /** the current text position in the buffer */
1422 private int zzCurrentPos;
1423
1424 /** startRead marks the beginning of the yytext() string in the buffer */
1425 private int zzStartRead;
1426
1427 /** endRead marks the last character in the buffer, that has been read
1428 from input */
1429 private int zzEndRead;
1430
1431 /** number of newlines encountered up to the start of the matched text */
1432 private int yyline;
1433
1434 /** the number of characters up to the start of the matched text */
1435 private int yychar;
1436
1437 /**
1438 * the number of characters from the last newline up to the start of the
1439 * matched text
1440 */
1441 private int yycolumn;
1442
1443 /**
1444 * zzAtBOL == true <=> the scanner is currently at the beginning of a line
1445 */
1446 private boolean zzAtBOL = true;
1447
1448 /** zzAtEOF == true <=> the scanner is at the EOF */
1449 private boolean zzAtEOF;
1450
1451 /** denotes if the user-EOF-code has already been executed */
1452 private boolean zzEOFDone;
1453
1454 /* user code: */
1455
1456 /**
1457 * Type specific to XMLTokenMaker denoting a line ending with an unclosed
1458 * double-quote attribute.
1459 */
1460 public static final int INTERNAL_ATTR_DOUBLE = -1;
1461
1462
1463 /**
1464 * Type specific to XMLTokenMaker denoting a line ending with an unclosed
1465 * single-quote attribute.
1466 */
1467 public static final int INTERNAL_ATTR_SINGLE = -2;
1468
1469
1470 /**
1471 * Token type specific to HTMLTokenMaker; this signals that the user has
1472 * ended a line with an unclosed HTML tag; thus a new line is beginning
1473 * still inside of the tag.
1474 */
1475 public static final int INTERNAL_INTAG = -3;
1476
1477 /**
1478 * Token type specific to HTMLTokenMaker; this signals that the user has
1479 * ended a line with an unclosed <code>&lt;script&gt;</code> tag.
1480 */
1481 public static final int INTERNAL_INTAG_SCRIPT = -4;
1482
1483 /**
1484 * Token type specifying we're in a double-qouted attribute in a
1485 * script tag.
1486 */
1487 public static final int INTERNAL_ATTR_DOUBLE_QUOTE_SCRIPT = -5;
1488
1489 /**
1490 * Token type specifying we're in a single-qouted attribute in a
1491 * script tag.
1492 */
1493 public static final int INTERNAL_ATTR_SINGLE_QUOTE_SCRIPT = -6;
1494
1495 /**
1496 * Token type specifying we're in JavaScript.
1497 */
1498 public static final int INTERNAL_IN_JS = -7;
1499
1500 /**
1501 * Token type specifying we're in a JavaScript multiline comment.
1502 */
1503 public static final int INTERNAL_IN_JS_MLC = -8;
1504
1505 /**
1506 * Token type specifying we're in an invalid multi-line JS string.
1507 */
1508 public static final int INTERNAL_IN_JS_STRING_INVALID = -9;
1509
1510 /**
1511 * Token type specifying we're in a valid multi-line JS string.
1512 */
1513 public static final int INTERNAL_IN_JS_STRING_VALID = -10;
1514
1515 /**
1516 * Token type specifying we're in an invalid multi-line JS single-quoted string.
1517 */
1518 public static final int INTERNAL_IN_JS_CHAR_INVALID = -11;
1519
1520 /**
1521 * Token type specifying we're in a valid multi-line JS single-quoted string.
1522 */
1523 public static final int INTERNAL_IN_JS_CHAR_VALID = -12;
1524
1525 /**
1526 * Whether closing markup tags are automatically completed for HTML.
1527 */
1528 private static boolean completeCloseTags;
1529
1530 /**
1531 * When in the JS_STRING state, whether the current string is valid.
1532 */
1533 private boolean validJSString;
1534
1535
1536 /**
1537 * Constructor. This must be here because JFlex does not generate a
1538 * no-parameter constructor.
1539 */
1540 public HTMLTokenMaker() {
1541 super();
1542 }
1543
1544
1545 /**
1546 * Adds the token specified to the current linked list of tokens as an
1547 * "end token;" that is, at <code>zzMarkedPos</code>.
1548 *
1549 * @param tokenType The token's type.
1550 */
1551 private void addEndToken(int tokenType) {
1552 addToken(zzMarkedPos,zzMarkedPos, tokenType);
1553 }
1554
1555
1556 /**
1557 * Adds the token specified to the current linked list of tokens.
1558 *
1559 * @param tokenType The token's type.
1560 * @see #addToken(int, int, int)
1561 */
1562 private void addHyperlinkToken(int start, int end, int tokenType) {
1563 int so = start + offsetShift;
1564 addToken(zzBuffer, start,end, tokenType, so, true);
1565 }
1566
1567
1568 /**
1569 * Adds the token specified to the current linked list of tokens.
1570 *
1571 * @param tokenType The token's type.
1572 */
1573 private void addToken(int tokenType) {
1574 addToken(zzStartRead, zzMarkedPos-1, tokenType);
1575 }
1576
1577
1578 /**
1579 * Adds the token specified to the current linked list of tokens.
1580 *
1581 * @param tokenType The token's type.
1582 */
1583 private void addToken(int start, int end, int tokenType) {
1584 int so = start + offsetShift;
1585 addToken(zzBuffer, start,end, tokenType, so);
1586 }
1587
1588
1589 /**
1590 * Adds the token specified to the current linked list of tokens.
1591 *
1592 * @param array The character array.
1593 * @param start The starting offset in the array.
1594 * @param end The ending offset in the array.
1595 * @param tokenType The token's type.
1596 * @param startOffset The offset in the document at which this token
1597 * occurs.
1598 */
1599 public void addToken(char[] array, int start, int end, int tokenType, int startOffset) {
1600 super.addToken(array, start,end, tokenType, startOffset);
1601 zzStartRead = zzMarkedPos;
1602 }
1603
1604
1605 /**
1606 * Sets whether markup close tags should be completed. You might not want
1607 * this to be the case, since some tags in standard HTML aren't usually
1608 * closed.
1609 *
1610 * @return Whether closing markup tags are completed.
1611 * @see #setCompleteCloseTags(boolean)
1612 */
1613 public boolean getCompleteCloseTags() {
1614 return completeCloseTags;
1615 }
1616
1617
1618 /**
1619 * Returns the first token in the linked list of tokens generated
1620 * from <code>text</code>. This method must be implemented by
1621 * subclasses so they can correctly implement syntax highlighting.
1622 *
1623 * @param text The text from which to get tokens.
1624 * @param initialTokenType The token type we should start with.
1625 * @param startOffset The offset into the document at which
1626 * <code>text</code> starts.
1627 * @return The first <code>Token</code> in a linked list representing
1628 * the syntax highlighted text.
1629 */
1630 public Token getTokenList(Segment text, int initialTokenType, int startOffset) {
1631
1632 resetTokenList();
1633 this.offsetShift = -text.offset + startOffset;
1634
1635 // Start off in the proper state.
1636 int state = Token.NULL;
1637 switch (initialTokenType) {
1638 case Token.COMMENT_MULTILINE:
1639 state = COMMENT;
1640 start = text.offset;
1641 break;
1642 case Token.PREPROCESSOR:
1643 state = PI;
1644 start = text.offset;
1645 break;
1646 case Token.VARIABLE:
1647 state = DTD;
1648 start = text.offset;
1649 break;
1650 case INTERNAL_INTAG:
1651 state = INTAG;
1652 start = text.offset;
1653 break;
1654 case INTERNAL_INTAG_SCRIPT:
1655 state = INTAG_SCRIPT;
1656 start = text.offset;
1657 break;
1658 case INTERNAL_ATTR_DOUBLE:
1659 state = INATTR_DOUBLE;
1660 start = text.offset;
1661 break;
1662 case INTERNAL_ATTR_SINGLE:
1663 state = INATTR_SINGLE;
1664 start = text.offset;
1665 break;
1666 case INTERNAL_ATTR_DOUBLE_QUOTE_SCRIPT:
1667 state = INATTR_DOUBLE_SCRIPT;
1668 start = text.offset;
1669 break;
1670 case INTERNAL_ATTR_SINGLE_QUOTE_SCRIPT:
1671 state = INATTR_SINGLE_SCRIPT;
1672 start = text.offset;
1673 break;
1674 case INTERNAL_IN_JS:
1675 state = JAVASCRIPT;
1676 start = text.offset;
1677 break;
1678 case INTERNAL_IN_JS_MLC:
1679 state = JS_MLC;
1680 start = text.offset;
1681 break;
1682 case INTERNAL_IN_JS_STRING_INVALID:
1683 state = JS_STRING;
1684 validJSString = false;
1685 start = text.offset;
1686 break;
1687 case INTERNAL_IN_JS_STRING_VALID:
1688 state = JS_STRING;
1689 validJSString = true;
1690 start = text.offset;
1691 break;
1692 case INTERNAL_IN_JS_CHAR_INVALID:
1693 state = JS_CHAR;
1694 validJSString = false;
1695 start = text.offset;
1696 break;
1697 case INTERNAL_IN_JS_CHAR_VALID:
1698 state = JS_CHAR;
1699 validJSString = true;
1700 start = text.offset;
1701 break;
1702 default:
1703 state = Token.NULL;
1704 }
1705
1706 s = text;
1707 try {
1708 yyreset(zzReader);
1709 yybegin(state);
1710 return yylex();
1711 } catch (IOException ioe) {
1712 ioe.printStackTrace();
1713 return new DefaultToken();
1714 }
1715
1716 }
1717
1718
1719 /**
1720 * Sets whether markup close tags should be completed. You might not want
1721 * this to be the case, since some tags in standard HTML aren't usually
1722 * closed.
1723 *
1724 * @param complete Whether closing markup tags are completed.
1725 * @see #getCompleteCloseTags()
1726 */
1727 public static void setCompleteCloseTags(boolean complete) {
1728 completeCloseTags = complete;
1729 }
1730
1731
1732 /**
1733 * Refills the input buffer.
1734 *
1735 * @return <code>true</code> if EOF was reached, otherwise
1736 * <code>false</code>.
1737 */
1738
1739 private boolean zzRefill() {
1740 return zzCurrentPos>=s.offset+s.count;
1741 }
1742
1743
1744 /**
1745 * Resets the scanner to read from a new input stream.
1746 * Does not close the old reader.
1747 *
1748 * All internal variables are reset, the old input stream
1749 * <b>cannot</b> be reused (internal buffer is discarded and lost).
1750 * Lexical state is set to <tt>YY_INITIAL</tt>.
1751 *
1752 * @param reader the new input stream
1753 */
1754
1755 public final void yyreset(java.io.Reader reader) {
1756 // 's' has been updated.
1757 zzBuffer = s.array;
1758
1759 /*
1760 * We replaced the line below with the two below it because zzRefill
1761 * no longer "refills" the buffer (since the way we do it, it's always
1762 * "full" the first time through, since it points to the segment's
1763 * array). So, we assign zzEndRead here.
1764 */
1765 //zzStartRead = zzEndRead = s.offset;
1766
1767 zzStartRead = s.offset;
1768 zzEndRead = zzStartRead + s.count - 1;
1769 //#### zzCurrentPos = zzMarkedPos = zzPushbackPos = s.offset;
1770 zzCurrentPos = zzMarkedPos = s.offset;
1771 zzLexicalState = YYINITIAL;
1772 zzReader = reader;
1773 zzAtBOL = true;
1774 zzAtEOF = false;
1775 }
1776
1777
1778
1779
1780
1781 /**
1782 * Creates a new scanner
1783 * There is also a java.io.InputStream version of this constructor.
1784 *
1785 * @param in the java.io.Reader to read input from.
1786 */
1787 public HTMLTokenMaker(java.io.Reader in) {
1788 this.zzReader = in;
1789 }
1790
1791 /**
1792 * Creates a new scanner.
1793 * There is also java.io.Reader version of this constructor.
1794 *
1795 * @param in the java.io.Inputstream to read input from.
1796 */
1797 public HTMLTokenMaker(java.io.InputStream in) {
1798 this(new java.io.InputStreamReader(in));
1799 }
1800
1801 /**
1802 * Unpacks the compressed character translation table.
1803 *
1804 * @param packed the packed character translation table
1805 * @return the unpacked character translation table
1806 */
1807 private static char [] zzUnpackCMap(String packed) {
1808 char [] map = new char[0x10000];
1809 int i = 0; /* index in packed string */
1810 int j = 0; /* index in unpacked array */
1811 while (i < 192) {
1812 int count = packed.charAt(i++);
1813 char value = packed.charAt(i++);
1814 do map[j++] = value; while (--count > 0);
1815 }
1816 return map;
1817 }
1818
1819 /**
1820 * Closes the input stream.
1821 */
1822 public final void yyclose() throws java.io.IOException {
1823 zzAtEOF = true; /* indicate end of file */
1824 zzEndRead = zzStartRead; /* invalidate buffer */
1825
1826 if (zzReader != null)
1827 zzReader.close();
1828 }
1829
1830
1831 /**
1832 * Returns the current lexical state.
1833 */
1834 public final int yystate() {
1835 return zzLexicalState;
1836 }
1837
1838
1839 /**
1840 * Enters a new lexical state
1841 *
1842 * @param newState the new lexical state
1843 */
1844 public final void yybegin(int newState) {
1845 zzLexicalState = newState;
1846 }
1847
1848
1849 /**
1850 * Returns the text matched by the current regular expression.
1851 */
1852 public final String yytext() {
1853 return new String( zzBuffer, zzStartRead, zzMarkedPos-zzStartRead );
1854 }
1855
1856
1857 /**
1858 * Returns the character at position <tt>pos</tt> from the
1859 * matched text.
1860 *
1861 * It is equivalent to yytext().charAt(pos), but faster
1862 *
1863 * @param pos the position of the character to fetch.
1864 * A value from 0 to yylength()-1.
1865 *
1866 * @return the character at position pos
1867 */
1868 public final char yycharat(int pos) {
1869 return zzBuffer[zzStartRead+pos];
1870 }
1871
1872
1873 /**
1874 * Returns the length of the matched text region.
1875 */
1876 public final int yylength() {
1877 return zzMarkedPos-zzStartRead;
1878 }
1879
1880
1881 /**
1882 * Reports an error that occured while scanning.
1883 *
1884 * In a wellformed scanner (no or only correct usage of
1885 * yypushback(int) and a match-all fallback rule) this method
1886 * will only be called with things that "Can't Possibly Happen".
1887 * If this method is called, something is seriously wrong
1888 * (e.g. a JFlex bug producing a faulty scanner etc.).
1889 *
1890 * Usual syntax/scanner level error handling should be done
1891 * in error fallback rules.
1892 *
1893 * @param errorCode the code of the errormessage to display
1894 */
1895 private void zzScanError(int errorCode) {
1896 String message;
1897 try {
1898 message = ZZ_ERROR_MSG[errorCode];
1899 }
1900 catch (ArrayIndexOutOfBoundsException e) {
1901 message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR];
1902 }
1903
1904 throw new Error(message);
1905 }
1906
1907
1908 /**
1909 * Pushes the specified amount of characters back into the input stream.
1910 *
1911 * They will be read again by then next call of the scanning method
1912 *
1913 * @param number the number of characters to be read again.
1914 * This number must not be greater than yylength()!
1915 */
1916 public void yypushback(int number) {
1917 if ( number > yylength() )
1918 zzScanError(ZZ_PUSHBACK_2BIG);
1919
1920 zzMarkedPos -= number;
1921 }
1922
1923
1924 /**
1925 * Resumes scanning until the next regular expression is matched,
1926 * the end of input is encountered or an I/O-Error occurs.
1927 *
1928 * @return the next token
1929 * @exception java.io.IOException if any I/O-Error occurs
1930 */
1931 public org.fife.ui.rsyntaxtextarea.Token yylex() throws java.io.IOException {
1932 int zzInput;
1933 int zzAction;
1934
1935 // cached fields:
1936 int zzCurrentPosL;
1937 int zzMarkedPosL;
1938 int zzEndReadL = zzEndRead;
1939 char [] zzBufferL = zzBuffer;
1940 char [] zzCMapL = ZZ_CMAP;
1941
1942 int [] zzTransL = ZZ_TRANS;
1943 int [] zzRowMapL = ZZ_ROWMAP;
1944 int [] zzAttrL = ZZ_ATTRIBUTE;
1945
1946 while (true) {
1947 zzMarkedPosL = zzMarkedPos;
1948
1949 zzAction = -1;
1950
1951 zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL;
1952
1953 zzState = ZZ_LEXSTATE[zzLexicalState];
1954
1955
1956 zzForAction: {
1957 while (true) {
1958
1959 if (zzCurrentPosL < zzEndReadL)
1960 zzInput = zzBufferL[zzCurrentPosL++];
1961 else if (zzAtEOF) {
1962 zzInput = YYEOF;
1963 break zzForAction;
1964 }
1965 else {
1966 // store back cached positions
1967 zzCurrentPos = zzCurrentPosL;
1968 zzMarkedPos = zzMarkedPosL;
1969 boolean eof = zzRefill();
1970 // get translated positions and possibly new buffer
1971 zzCurrentPosL = zzCurrentPos;
1972 zzMarkedPosL = zzMarkedPos;
1973 zzBufferL = zzBuffer;
1974 zzEndReadL = zzEndRead;
1975 if (eof) {
1976 zzInput = YYEOF;
1977 break zzForAction;
1978 }
1979 else {
1980 zzInput = zzBufferL[zzCurrentPosL++];
1981 }
1982 }
1983 int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ];
1984 if (zzNext == -1) break zzForAction;
1985 zzState = zzNext;
1986
1987 int zzAttributes = zzAttrL[zzState];
1988 if ( (zzAttributes & 1) == 1 ) {
1989 zzAction = zzState;
1990 zzMarkedPosL = zzCurrentPosL;
1991 if ( (zzAttributes & 8) == 8 ) break zzForAction;
1992 }
1993
1994 }
1995 }
1996
1997 // store back cached position
1998 zzMarkedPos = zzMarkedPosL;
1999
2000 switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) {
2001 case 2:
2002 { addToken(Token.IDENTIFIER);
2003 }
2004 case 67: break;
2005 case 60:
2006 { addToken(Token.LITERAL_BOOLEAN);
2007 }
2008 case 68: break;
2009 case 50:
2010 { /* Skip all escaped chars. */
2011 }
2012 case 69: break;
2013 case 52:
2014 { /* Invalid latin-1 character \xXX */ validJSString = false;
2015 }
2016 case 70: break;
2017 case 46:
2018 { addToken(Token.ERROR_NUMBER_FORMAT);
2019 }
2020 case 71: break;
2021 case 38:
2022 { addToken(start,zzStartRead-1, Token.COMMENT_EOL); addEndToken(INTERNAL_IN_JS); return firstToken;
2023 }
2024 case 72: break;
2025 case 66:
2026 { yybegin(YYINITIAL);
2027 int temp = zzStartRead;
2028 addToken(start,zzStartRead-1, Token.COMMENT_EOL);
2029 addToken(temp,temp+1, Token.MARKUP_TAG_DELIMITER);
2030 addToken(zzMarkedPos-7,zzMarkedPos-2, Token.MARKUP_TAG_NAME);
2031 addToken(zzMarkedPos-1,zzMarkedPos-1, Token.MARKUP_TAG_DELIMITER);
2032 }
2033 case 73: break;
2034 case 39:
2035 { int count = yylength();
2036 addToken(zzStartRead,zzStartRead, Token.MARKUP_TAG_DELIMITER);
2037 zzMarkedPos -= (count-1); //yypushback(count-1);
2038 yybegin(INTAG_CHECK_TAG_NAME);
2039 }
2040 case 74: break;
2041 case 23:
2042 { start = zzMarkedPos-1; yybegin(INATTR_SINGLE_SCRIPT);
2043 }
2044 case 75: break;
2045 case 14:
2046 { yybegin(YYINITIAL); addToken(Token.MARKUP_TAG_DELIMITER);
2047 }
2048 case 76: break;
2049 case 9:
2050 { addToken(start,zzStartRead-1, Token.VARIABLE); return firstToken;
2051 }
2052 case 77: break;
2053 case 37:
2054 { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addEndToken(INTERNAL_IN_JS_MLC); return firstToken;
2055 }
2056 case 78: break;
2057 case 61:
2058 { addToken(Token.FUNCTION);
2059 }
2060 case 79: break;
2061 case 40:
2062 { start = zzMarkedPos-2; yybegin(DTD);
2063 }
2064 case 80: break;
2065 case 26:
2066 { addEndToken(INTERNAL_IN_JS); return firstToken;
2067 }
2068 case 81: break;
2069 case 64:
2070 { yybegin(YYINITIAL);
2071 addToken(zzStartRead,zzStartRead+1, Token.MARKUP_TAG_DELIMITER);
2072 addToken(zzMarkedPos-7,zzMarkedPos-2, Token.MARKUP_TAG_NAME);
2073 addToken(zzMarkedPos-1,zzMarkedPos-1, Token.MARKUP_TAG_DELIMITER);
2074 }
2075 case 82: break;
2076 case 24:
2077 { yybegin(INTAG_SCRIPT); addToken(start,zzStartRead, Token.MARKUP_TAG_ATTRIBUTE_VALUE);
2078 }
2079 case 83: break;
2080 case 34:
2081 { addToken(start,zzStartRead-1, Token.ERROR_CHAR); addEndToken(INTERNAL_IN_JS); return firstToken;
2082 }
2083 case 84: break;
2084 case 18:
2085 { /* Shouldn't happen */ yypushback(1); yybegin(INTAG);
2086 }
2087 case 85: break;
2088 case 25:
2089 { addToken(Token.ERROR_IDENTIFIER);
2090 }
2091 case 86: break;
2092 case 32:
2093 { int type = validJSString ? Token.LITERAL_STRING_DOUBLE_QUOTE : Token.ERROR_STRING_DOUBLE; addToken(start,zzStartRead, type); yybegin(JAVASCRIPT);
2094 }
2095 case 87: break;
2096 case 45:
2097 { start = zzMarkedPos-2; yybegin(JS_MLC);
2098 }
2099 case 88: break;
2100 case 56:
2101 { boolean highlightedAsRegex = false;
2102 if (firstToken==null) {
2103 addToken(Token.REGEX);
2104 highlightedAsRegex = true;
2105 }
2106 else {
2107 // If this is *likely* to be a regex, based on
2108 // the previous token, highlight it as such.
2109 Token t = firstToken.getLastNonCommentNonWhitespaceToken();
2110 if (RSyntaxUtilities.regexCanFollowInJavaScript(t)) {
2111 addToken(Token.REGEX);
2112 highlightedAsRegex = true;
2113 }
2114 }
2115 // If it doesn't *appear* to be a regex, highlight it as
2116 // individual tokens.
2117 if (!highlightedAsRegex) {
2118 int temp = zzStartRead + 1;
2119 addToken(zzStartRead, zzStartRead, Token.OPERATOR);
2120 zzStartRead = zzCurrentPos = zzMarkedPos = temp;
2121 }
2122 }
2123 case 89: break;
2124 case 4:
2125 { addToken(Token.MARKUP_TAG_DELIMITER); yybegin(INTAG);
2126 }
2127 case 90: break;
2128 case 31:
2129 { addToken(start,zzStartRead-1, Token.ERROR_STRING_DOUBLE); addEndToken(INTERNAL_IN_JS); return firstToken;
2130 }
2131 case 91: break;
2132 case 10:
2133 { yybegin(YYINITIAL); addToken(start,zzStartRead, Token.VARIABLE);
2134 }
2135 case 92: break;
2136 case 53:
2137 { yybegin(JAVASCRIPT); addToken(start,zzStartRead+1, Token.COMMENT_MULTILINE);
2138 }
2139 case 93: break;
2140 case 36:
2141 { int type = validJSString ? Token.LITERAL_CHAR : Token.ERROR_CHAR; addToken(start,zzStartRead, type); yybegin(JAVASCRIPT);
2142 }
2143 case 94: break;
2144 case 42:
2145 { yybegin(YYINITIAL); addToken(start,zzStartRead+1, Token.PREPROCESSOR);
2146 }
2147 case 95: break;
2148 case 20:
2149 { yybegin(INTAG); addToken(start,zzStartRead, Token.MARKUP_TAG_ATTRIBUTE_VALUE);
2150 }
2151 case 96: break;
2152 case 44:
2153 { start = zzMarkedPos-2; yybegin(JS_EOL_COMMENT);
2154 }
2155 case 97: break;
2156 case 41:
2157 { start = zzMarkedPos-2; yybegin(PI);
2158 }
2159 case 98: break;
2160 case 12:
2161 { start = zzMarkedPos-1; yybegin(INATTR_DOUBLE);
2162 }
2163 case 99: break;
2164 case 48:
2165 { addToken(Token.LITERAL_NUMBER_HEXADECIMAL);
2166 }
2167 case 100: break;
2168 case 17:
2169 { /* A non-recognized HTML tag name */ yypushback(yylength()); yybegin(INTAG);
2170 }
2171 case 101: break;
2172 case 21:
2173 { start = zzMarkedPos-1; yybegin(INATTR_DOUBLE_SCRIPT);
2174 }
2175 case 102: break;
2176 case 33:
2177 { /* Line ending in '\' => continue to next line. */
2178 if (validJSString) {
2179 addToken(start,zzStartRead, Token.LITERAL_STRING_DOUBLE_QUOTE);
2180 addEndToken(INTERNAL_IN_JS_STRING_VALID);
2181 }
2182 else {
2183 addToken(start,zzStartRead, Token.ERROR_STRING_DOUBLE);
2184 addEndToken(INTERNAL_IN_JS_STRING_INVALID);
2185 }
2186 return firstToken;
2187 }
2188 case 103: break;
2189 case 5:
2190 { addToken(Token.WHITESPACE);
2191 }
2192 case 104: break;
2193 case 6:
2194 { addToken(Token.DATA_TYPE);
2195 }
2196 case 105: break;
2197 case 19:
2198 { addToken(Token.MARKUP_TAG_NAME);
2199 }
2200 case 106: break;
2201 case 35:
2202 { /* Line ending in '\' => continue to next line. */
2203 if (validJSString) {
2204 addToken(start,zzStartRead, Token.LITERAL_CHAR);
2205 addEndToken(INTERNAL_IN_JS_CHAR_VALID);
2206 }
2207 else {
2208 addToken(start,zzStartRead, Token.ERROR_CHAR);
2209 addEndToken(INTERNAL_IN_JS_CHAR_INVALID);
2210 }
2211 return firstToken;
2212 }
2213 case 107: break;
2214 case 63:
2215 { addToken(zzStartRead,zzStartRead, Token.MARKUP_TAG_DELIMITER);
2216 addToken(zzMarkedPos-6,zzMarkedPos-1, Token.MARKUP_TAG_NAME);
2217 start = zzMarkedPos; yybegin(INTAG_SCRIPT);
2218 }
2219 case 108: break;
2220 case 28:
2221 { addToken(Token.LITERAL_NUMBER_DECIMAL_INT);
2222 }
2223 case 109: break;
2224 case 16:
2225 { start = zzMarkedPos-1; yybegin(INATTR_SINGLE);
2226 }
2227 case 110: break;
2228 case 11:
2229 { addToken(Token.MARKUP_TAG_ATTRIBUTE);
2230 }
2231 case 111: break;
2232 case 27:
2233 { start = zzMarkedPos-1; validJSString = true; yybegin(JS_STRING);
2234 }
2235 case 112: break;
2236 case 51:
2237 { /* Invalid Unicode character \\uXXXX */ validJSString = false;
2238 }
2239 case 113: break;
2240 case 57:
2241 { start = zzMarkedPos-4; yybegin(COMMENT);
2242 }
2243 case 114: break;
2244 case 30:
2245 { start = zzMarkedPos-1; validJSString = true; yybegin(JS_CHAR);
2246 }
2247 case 115: break;
2248 case 49:
2249 { addToken(Token.RESERVED_WORD);
2250 }
2251 case 116: break;
2252 case 58:
2253 { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_MULTILINE); start = zzMarkedPos;
2254 }
2255 case 117: break;
2256 case 55:
2257 { yybegin(YYINITIAL); addToken(start,zzStartRead+2, Token.COMMENT_MULTILINE);
2258 }
2259 case 118: break;
2260 case 54:
2261 { int count = yylength();
2262 addToken(zzStartRead,zzStartRead+1, Token.MARKUP_TAG_DELIMITER);
2263 zzMarkedPos -= (count-2); //yypushback(count-2);
2264 yybegin(INTAG_CHECK_TAG_NAME);
2265 }
2266 case 119: break;
2267 case 29:
2268 { addToken(Token.SEPARATOR);
2269 }
2270 case 120: break;
2271 case 3:
2272 { addNullToken(); return firstToken;
2273 }
2274 case 121: break;
2275 case 22:
2276 { yybegin(JAVASCRIPT); addToken(Token.MARKUP_TAG_DELIMITER);
2277 }
2278 case 122: break;
2279 case 43:
2280 { addToken(Token.MARKUP_TAG_DELIMITER); yybegin(YYINITIAL);
2281 }
2282 case 123: break;
2283 case 7:
2284 { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); return firstToken;
2285 }
2286 case 124: break;
2287 case 15:
2288 { addToken(Token.OPERATOR);
2289 }
2290 case 125: break;
2291 case 47:
2292 { addToken(Token.LITERAL_NUMBER_FLOAT);
2293 }
2294 case 126: break;
2295 case 13:
2296 { addToken(Token.MARKUP_TAG_DELIMITER);
2297 }
2298 case 127: break;
2299 case 62:
2300 { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_EOL); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_EOL); start = zzMarkedPos;
2301 }
2302 case 128: break;
2303 case 59:
2304 { addToken(Token.COMMENT_MULTILINE);
2305 }
2306 case 129: break;
2307 case 8:
2308 { addToken(start,zzStartRead-1, Token.PREPROCESSOR); return firstToken;
2309 }
2310 case 130: break;
2311 case 65:
2312 { yybegin(YYINITIAL);
2313 int temp = zzStartRead;
2314 addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE);
2315 addToken(temp,temp+1, Token.MARKUP_TAG_DELIMITER);
2316 addToken(zzMarkedPos-7,zzMarkedPos-2, Token.MARKUP_TAG_NAME);
2317 addToken(zzMarkedPos-1,zzMarkedPos-1, Token.MARKUP_TAG_DELIMITER);
2318 }
2319 case 131: break;
2320 case 1:
2321 {
2322 }
2323 case 132: break;
2324 default:
2325 if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {
2326 zzAtEOF = true;
2327 switch (zzLexicalState) {
2328 case JS_STRING: {
2329 addToken(start,zzStartRead-1, Token.ERROR_STRING_DOUBLE); addEndToken(INTERNAL_IN_JS); return firstToken;
2330 }
2331 case 616: break;
2332 case INTAG_CHECK_TAG_NAME: {
2333 addToken(zzMarkedPos,zzMarkedPos, INTERNAL_INTAG); return firstToken;
2334 }
2335 case 617: break;
2336 case JS_MLC: {
2337 addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addEndToken(INTERNAL_IN_JS_MLC); return firstToken;
2338 }
2339 case 618: break;
2340 case INTAG_SCRIPT: {
2341 addToken(zzMarkedPos,zzMarkedPos, INTERNAL_INTAG_SCRIPT); return firstToken;
2342 }
2343 case 619: break;
2344 case JS_CHAR: {
2345 addToken(start,zzStartRead-1, Token.ERROR_CHAR); addEndToken(INTERNAL_IN_JS); return firstToken;
2346 }
2347 case 620: break;
2348 case JS_EOL_COMMENT: {
2349 addToken(start,zzStartRead-1, Token.COMMENT_EOL); addEndToken(INTERNAL_IN_JS); return firstToken;
2350 }
2351 case 621: break;
2352 case INATTR_DOUBLE_SCRIPT: {
2353 addToken(start,zzStartRead-1, Token.MARKUP_TAG_ATTRIBUTE_VALUE); addEndToken(INTERNAL_ATTR_DOUBLE_QUOTE_SCRIPT); return firstToken;
2354 }
2355 case 622: break;
2356 case INATTR_SINGLE_SCRIPT: {
2357 addToken(start,zzStartRead-1, Token.MARKUP_TAG_ATTRIBUTE_VALUE); addEndToken(INTERNAL_ATTR_SINGLE_QUOTE_SCRIPT); return firstToken;
2358 }
2359 case 623: break;
2360 case DTD: {
2361 addToken(start,zzStartRead-1, Token.VARIABLE); return firstToken;
2362 }
2363 case 624: break;
2364 case INATTR_SINGLE: {
2365 addToken(start,zzStartRead-1, Token.MARKUP_TAG_ATTRIBUTE_VALUE); addEndToken(INTERNAL_ATTR_SINGLE); return firstToken;
2366 }
2367 case 625: break;
2368 case INATTR_DOUBLE: {
2369 addToken(start,zzStartRead-1, Token.MARKUP_TAG_ATTRIBUTE_VALUE); addEndToken(INTERNAL_ATTR_DOUBLE); return firstToken;
2370 }
2371 case 626: break;
2372 case YYINITIAL: {
2373 addNullToken(); return firstToken;
2374 }
2375 case 627: break;
2376 case INTAG: {
2377 addToken(zzMarkedPos,zzMarkedPos, INTERNAL_INTAG); return firstToken;
2378 }
2379 case 628: break;
2380 case COMMENT: {
2381 addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); return firstToken;
2382 }
2383 case 629: break;
2384 case JAVASCRIPT: {
2385 addEndToken(INTERNAL_IN_JS); return firstToken;
2386 }
2387 case 630: break;
2388 case PI: {
2389 addToken(start,zzStartRead-1, Token.PREPROCESSOR); return firstToken;
2390 }
2391 case 631: break;
2392 default:
2393 return null;
2394 }
2395 }
2396 else {
2397 zzScanError(ZZ_NO_MATCH);
2398 }
2399 }
2400 }
2401 }
2402
2403
2404}
Note: See TracBrowser for help on using the repository browser.