/* The following code was generated by JFlex 1.7.0-SNAPSHOT tweaked for IntelliJ platform */
package com.intellij.coldFusion.model.lexer;
import com.intellij.lexer.FlexLexer;
import com.intellij.psi.tree.IElementType;
import com.intellij.coldFusion.model.lexer.CfmlTokenTypes;
import com.intellij.coldFusion.model.psi.CfmlElementType;
import com.intellij.coldFusion.model.parsers.CfmlElementTypes;
import com.intellij.coldFusion.model.CfmlUtil;
import com.intellij.openapi.project.Project;
import com.intellij.util.containers.Stack;
/**
* This class is a scanner generated by
* <a href="http://www.jflex.de/">JFlex</a> 1.7.0-SNAPSHOT
* from the specification file <tt>ColdFusion.flex</tt>
*/
class _CfmlLexer implements FlexLexer {
/** This character denotes the end of file */
public static final int YYEOF = -1;
/** initial size of the lookahead buffer */
private static final int ZZ_BUFFERSIZE = 16384;
/** lexical states */
public static final int YYINITIAL = 0;
public static final int CLOSER = 2;
public static final int TAGCLOSE = 4;
public static final int TAGOPEN = 6;
public static final int TAGATTR = 8;
public static final int ASSIGN = 10;
public static final int COMMENT = 12;
public static final int COMMENTEND = 14;
public static final int DOUBLE_QUOTED_STRING = 16;
public static final int DOUBLEQUOTE = 18;
public static final int SINGLE_QUOTED_STRING = 20;
public static final int SINGLEQUOTE = 22;
public static final int DOUBLEQUOTE_CLOSER = 24;
public static final int SINGLEQUOTE_CLOSER = 26;
public static final int ATTRIBUTE_VALUE = 28;
public static final int TAGINNERBLOCK = 30;
public static final int SCRIPT_EXPRESSION = 32;
public static final int X = 34;
public static final int Y = 36;
public static final int TEXT = 38;
public static final int EAT_TEST_AS_SCRIPT = 40;
public static final int FINAL_STATE = 42;
/**
* ZZ_LEXSTATE[l] is the state in the DFA for the lexical state l
* ZZ_LEXSTATE[l+1] is the state in the DFA for the lexical state l
* at the beginning of a line
* l is of the form l = 2*k, k a non negative integer
*/
private static final int ZZ_LEXSTATE[] = {
0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7,
8, 8, 9, 9, 10, 10, 9, 9, 11, 11, 12, 12, 13, 13, 9, 9,
14, 14, 9, 9, 9, 9, 15, 15, 16, 16, 9, 9
};
/**
* Translates characters to character classes
* Chosen bits are [12, 6, 3]
* Total runtime size is 14800 bytes
*/
public static int ZZ_CMAP(int ch) {
return ZZ_CMAP_A[(ZZ_CMAP_Y[(ZZ_CMAP_Z[ch>>9]<<6)|((ch>>3)&0x3f)]<<3)|(ch&0x7)];
}
/* The ZZ_CMAP_Z table has 2176 entries */
static final char ZZ_CMAP_Z[] = zzUnpackCMap(
"\1\0\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12\1\13\1\14\1\15\1\16\1\17\1"+
"\20\5\21\1\22\1\23\1\24\1\21\14\25\1\26\50\25\1\27\2\25\1\30\1\31\1\32\1\33"+
"\25\25\1\34\20\21\1\35\1\36\1\37\1\40\1\41\1\42\1\43\1\21\1\44\1\45\1\46\1"+
"\21\1\47\2\21\1\50\4\21\1\25\1\51\1\52\5\21\2\25\1\53\31\21\1\25\1\54\1\21"+
"\1\55\40\21\1\56\17\21\1\57\1\60\1\61\1\62\13\21\1\63\10\21\123\25\1\64\7"+
"\25\1\65\1\66\37\21\1\25\1\66\u0582\21\1\67\u017f\21");
/* The ZZ_CMAP_Y table has 3584 entries */
static final char ZZ_CMAP_Y[] = zzUnpackCMap(
"\1\0\1\1\1\0\1\2\1\3\1\4\1\0\1\5\1\6\1\7\1\10\1\11\1\12\1\7\1\10\1\13\4\0"+
"\1\14\1\15\1\16\1\17\2\20\1\21\3\20\1\21\7\20\1\22\61\20\1\23\1\20\1\24\1"+
"\25\1\26\1\27\2\25\16\0\1\30\1\14\1\31\1\32\2\20\1\33\11\20\1\34\21\20\1\35"+
"\1\36\23\20\1\25\1\37\3\20\1\21\1\40\1\37\4\20\1\41\1\42\4\0\1\43\1\44\1\25"+
"\3\20\2\45\1\25\1\46\1\47\1\0\1\50\5\20\1\51\3\0\1\52\1\53\13\20\1\54\1\43"+
"\1\55\1\56\1\0\1\57\1\25\1\60\1\61\3\20\3\0\1\62\12\20\1\63\1\0\1\64\1\25"+
"\1\0\1\65\3\20\1\51\1\66\1\17\2\20\1\63\1\67\1\70\1\71\2\25\3\20\1\72\10\25"+
"\1\73\1\26\6\25\1\74\2\0\1\75\1\76\6\20\1\77\2\0\1\100\1\20\1\101\1\0\2\37"+
"\1\102\1\103\1\104\2\20\1\73\1\105\1\106\1\107\1\110\1\60\1\111\1\101\1\0"+
"\1\112\1\47\1\102\1\11\1\104\2\20\1\73\1\113\1\114\1\115\1\116\1\117\1\120"+
"\1\121\1\0\1\122\1\25\1\102\1\34\1\33\2\20\1\73\1\123\1\106\1\43\1\124\1\125"+
"\1\25\1\101\1\0\1\40\1\25\1\102\1\103\1\104\2\20\1\73\1\123\1\106\1\107\1"+
"\116\1\121\1\111\1\101\1\0\1\40\1\25\1\126\1\127\1\130\1\131\1\132\1\127\1"+
"\20\1\133\1\134\1\135\1\136\1\25\1\121\1\0\1\25\1\40\1\102\1\30\1\73\2\20"+
"\1\73\1\137\1\140\1\141\1\135\1\142\1\24\1\101\1\0\2\25\1\143\1\30\1\73\2"+
"\20\1\73\1\137\1\106\1\141\1\135\1\142\1\31\1\101\1\0\1\144\1\25\1\143\1\30"+
"\1\73\4\20\1\145\1\141\1\146\1\60\1\25\1\101\1\0\1\25\1\36\1\143\1\20\1\21"+
"\1\36\2\20\1\33\1\147\1\21\1\150\1\151\1\0\2\25\1\152\1\25\1\37\5\20\1\153"+
"\1\154\1\155\1\75\1\0\1\156\4\25\1\157\1\160\1\161\1\37\1\162\1\163\1\153"+
"\1\164\1\165\1\166\1\0\1\167\4\25\1\125\2\25\1\156\1\0\1\156\1\170\1\171\1"+
"\20\1\37\3\20\1\26\1\42\1\0\1\141\1\172\1\0\1\42\3\0\1\46\1\173\7\25\5\20"+
"\1\51\1\0\1\174\1\0\1\156\1\63\1\175\1\176\1\177\1\200\1\20\1\201\1\202\1"+
"\0\1\166\4\20\1\34\1\16\5\20\1\203\51\20\1\130\1\21\1\130\5\20\1\130\4\20"+
"\1\130\1\21\1\130\1\20\1\21\7\20\1\130\10\20\1\204\4\25\2\20\2\25\12\20\1"+
"\26\1\25\1\37\114\20\1\103\2\20\1\37\2\20\1\45\11\20\1\127\1\125\1\25\1\20"+
"\1\30\1\205\1\25\2\20\1\205\1\25\2\20\1\206\1\25\1\20\1\30\1\207\1\25\6\20"+
"\1\210\3\0\1\211\1\212\1\0\1\156\3\25\1\213\1\0\1\156\13\20\1\25\5\20\1\214"+
"\10\20\1\215\1\25\3\20\1\26\1\0\1\2\1\0\1\2\1\121\1\0\3\20\1\215\1\26\1\25"+
"\5\20\1\112\2\0\1\53\1\156\1\0\1\156\4\25\2\20\1\155\1\2\6\20\1\172\1\75\3"+
"\0\1\107\1\0\1\156\1\0\1\156\1\41\13\25\1\216\5\20\1\210\1\0\1\216\1\112\1"+
"\0\1\156\1\25\1\217\1\2\1\25\1\220\3\20\1\100\1\177\1\0\1\65\4\20\1\63\1\0"+
"\1\2\1\25\4\20\1\210\2\0\1\25\1\0\1\221\1\0\1\65\3\20\1\215\12\25\1\222\2"+
"\0\1\223\1\224\1\25\30\20\4\0\1\75\2\25\1\74\42\20\2\215\4\20\2\215\1\20\1"+
"\225\3\20\1\215\6\20\1\30\1\165\1\226\1\26\1\227\1\112\1\20\1\26\1\226\1\26"+
"\1\25\1\217\3\25\1\230\1\25\1\41\1\125\1\25\1\231\1\25\1\46\1\232\1\40\1\41"+
"\2\25\1\20\1\26\3\20\1\45\2\25\1\0\1\46\1\233\1\0\1\234\1\25\1\235\1\36\1"+
"\147\1\236\1\27\1\237\1\20\1\240\1\241\1\242\2\25\5\20\1\125\116\25\5\20\1"+
"\21\5\20\1\21\20\20\1\26\1\243\1\244\1\25\4\20\1\34\1\16\7\20\1\41\1\25\1"+
"\60\2\20\1\21\1\25\10\21\4\0\5\25\1\41\72\25\1\241\3\25\1\37\1\201\1\236\1"+
"\26\1\37\11\20\1\21\1\245\1\37\12\20\1\203\1\241\4\20\1\215\1\37\12\20\1\21"+
"\2\25\3\20\1\45\6\25\170\20\1\215\11\25\71\20\1\26\6\25\21\20\1\26\10\25\5"+
"\20\1\215\41\20\1\26\2\20\1\0\1\244\2\25\5\20\1\155\1\74\1\246\3\20\1\60\12"+
"\20\1\156\3\25\1\41\1\20\1\36\14\20\1\247\1\112\1\25\1\20\1\45\11\25\1\20"+
"\1\250\1\251\2\20\1\51\2\25\1\125\6\20\1\112\1\25\1\65\5\20\1\210\1\0\1\46"+
"\1\25\1\0\1\156\2\0\1\65\1\47\1\0\1\65\2\20\1\63\1\166\2\20\1\155\1\0\1\2"+
"\1\25\3\20\1\26\1\76\5\20\1\51\1\0\1\234\1\41\1\0\1\156\4\25\5\20\1\100\1"+
"\75\1\25\1\251\1\252\1\0\1\156\2\20\1\21\1\253\6\20\1\176\1\254\1\214\2\25"+
"\1\255\1\20\1\51\1\256\1\25\3\257\1\25\2\21\22\25\4\20\1\51\1\260\1\0\1\156"+
"\64\20\1\112\1\25\2\20\1\21\1\261\5\20\1\112\40\25\55\20\1\215\15\20\1\24"+
"\4\25\1\21\1\25\1\261\1\262\1\20\1\73\1\21\1\165\1\263\15\20\1\24\3\25\1\261"+
"\54\20\1\215\2\25\10\20\1\36\6\20\5\25\1\20\1\26\2\0\2\25\1\75\1\25\1\132"+
"\2\25\1\241\3\25\1\40\1\30\20\20\1\264\1\231\1\25\1\0\1\156\1\37\2\20\1\11"+
"\1\37\2\20\1\45\1\265\12\20\1\21\3\36\1\266\1\267\2\25\1\270\1\20\1\137\2"+
"\20\1\21\2\20\1\271\1\20\1\215\1\20\1\215\4\25\17\20\1\45\10\25\6\20\1\26"+
"\20\25\1\272\20\25\3\20\1\26\6\20\1\125\5\25\3\20\1\21\2\25\3\20\1\45\6\25"+
"\3\20\1\215\4\20\1\112\1\20\1\236\5\25\23\20\1\215\1\0\1\156\52\25\1\215\1"+
"\73\4\20\1\34\1\273\2\20\1\215\25\25\2\20\1\215\1\25\3\20\1\24\10\25\7\20"+
"\1\265\10\25\1\274\1\74\1\137\1\37\2\20\1\112\1\115\4\25\3\20\1\26\20\25\6"+
"\20\1\215\1\25\2\20\1\215\1\25\2\20\1\45\21\25\11\20\1\125\66\25\1\220\6\20"+
"\1\0\1\75\3\25\1\121\1\0\2\25\1\220\5\20\1\0\1\275\2\25\3\20\1\125\1\0\1\156"+
"\1\220\3\20\1\155\1\0\1\141\1\0\10\25\1\220\5\20\1\51\1\0\1\276\1\25\1\0\1"+
"\156\24\25\5\20\1\51\1\0\1\25\1\0\1\156\46\25\55\20\1\21\22\25\14\20\1\45"+
"\63\25\5\20\1\21\72\25\7\20\1\125\130\25\10\20\1\26\1\25\1\100\4\0\1\75\1"+
"\25\1\60\1\220\1\20\14\25\1\24\153\25\1\277\1\300\2\0\1\301\1\2\3\25\1\302"+
"\22\25\1\303\67\25\12\20\1\30\10\20\1\30\1\304\1\305\1\20\1\306\1\137\7\20"+
"\1\34\1\307\2\30\3\20\1\310\1\165\1\36\1\73\51\20\1\215\3\20\1\73\2\20\1\203"+
"\3\20\1\203\2\20\1\30\3\20\1\30\2\20\1\21\3\20\1\21\3\20\1\73\3\20\1\73\2"+
"\20\1\203\1\311\6\0\1\137\3\20\1\157\1\37\1\203\1\312\1\235\1\313\1\157\1"+
"\225\1\157\2\203\1\120\1\20\1\33\1\20\1\112\1\314\1\33\1\20\1\112\50\25\32"+
"\20\1\21\5\25\106\20\1\26\1\25\33\20\1\215\74\25\1\117\3\25\14\0\20\25\36"+
"\0\2\25");
/* The ZZ_CMAP_A table has 1640 entries */
static final char ZZ_CMAP_A[] = zzUnpackCMap(
"\11\12\2\1\1\0\2\1\6\12\4\0\1\1\1\3\1\15\1\14\1\11\2\0\1\16\2\0\1\26\2\0\1"+
"\4\1\0\1\17\2\12\1\13\1\0\1\2\1\6\1\5\1\0\1\32\1\31\1\35\1\7\1\11\1\30\1\10"+
"\2\11\1\20\2\11\1\33\1\21\1\27\1\23\1\22\1\11\1\24\1\11\1\25\1\11\1\34\4\11"+
"\4\0\1\11\1\0\1\31\1\35\1\7\1\11\1\30\1\10\4\11\4\0\1\12\2\0\4\11\4\0\1\11"+
"\2\0\1\12\7\0\1\11\4\0\1\11\5\0\17\11\1\0\2\20\10\11\4\0\4\11\16\0\5\11\7"+
"\0\1\11\1\0\1\11\1\0\5\11\1\0\2\11\6\0\1\11\1\0\3\11\1\0\1\11\1\0\4\11\1\0"+
"\13\11\1\0\3\11\1\0\5\12\2\0\6\11\1\0\7\11\1\0\1\11\15\0\1\11\1\0\15\12\1"+
"\0\1\12\1\0\2\12\1\0\2\12\1\0\1\12\3\11\5\0\5\12\6\0\1\11\4\0\3\12\5\0\3\11"+
"\7\12\4\0\2\11\1\12\13\11\1\0\1\11\7\12\2\11\2\12\1\0\4\12\2\11\2\12\3\11"+
"\2\0\1\11\7\0\1\12\1\11\1\12\6\11\3\12\2\0\11\11\3\12\1\11\6\0\2\12\6\11\4"+
"\12\2\11\2\0\2\12\1\11\11\12\1\11\3\12\1\11\5\12\2\0\1\11\3\12\4\0\1\11\1"+
"\0\6\11\4\0\13\12\1\0\4\12\6\11\3\12\1\11\2\12\1\11\7\12\2\11\2\12\2\0\2\12"+
"\1\0\3\12\1\0\10\11\2\0\2\11\2\0\6\11\1\0\1\11\3\0\4\11\2\0\1\12\1\11\7\12"+
"\2\0\2\12\2\0\3\12\1\11\5\0\2\11\1\0\5\11\4\0\1\11\1\0\2\11\1\0\2\11\1\0\2"+
"\11\2\0\1\12\1\0\5\12\4\0\2\12\2\0\3\12\3\0\1\12\7\0\4\11\1\0\1\11\7\0\4\12"+
"\3\11\1\12\2\0\1\11\1\0\2\11\1\0\3\11\2\12\1\0\3\12\2\0\1\11\11\0\1\12\1\11"+
"\1\0\6\11\3\0\3\11\1\0\4\11\3\0\2\11\1\0\1\11\1\0\2\11\3\0\2\11\3\0\2\11\4"+
"\0\5\12\3\0\3\12\1\0\4\12\2\0\1\11\6\0\1\12\4\11\1\0\5\11\3\0\1\11\7\12\1"+
"\0\2\12\5\0\2\12\3\0\2\12\1\0\3\11\1\0\2\11\5\0\3\11\2\0\1\11\3\12\1\0\4\12"+
"\1\11\1\0\4\11\1\0\1\11\4\0\1\12\4\0\6\12\1\0\1\12\3\0\2\12\4\0\1\11\1\12"+
"\2\11\7\12\4\0\10\11\3\12\7\0\2\11\1\0\1\11\2\0\2\11\1\0\1\11\2\0\1\11\6\0"+
"\4\11\1\0\3\11\1\0\1\11\1\0\1\11\2\0\2\11\1\0\3\11\2\12\1\0\2\12\1\11\2\0"+
"\5\11\1\0\1\11\1\0\6\12\2\0\2\12\2\0\4\11\5\0\1\12\1\0\1\12\1\0\1\12\4\0\2"+
"\12\5\11\3\12\6\0\1\12\1\0\7\12\1\11\2\12\4\11\3\12\1\11\3\12\2\11\7\12\3"+
"\11\4\12\5\11\14\12\1\11\1\12\3\11\1\0\7\11\2\0\3\12\2\11\3\12\3\0\2\11\2"+
"\12\4\0\1\11\1\0\2\12\4\0\4\11\10\12\3\0\1\11\3\0\2\11\1\12\5\0\3\12\2\0\1"+
"\11\1\12\1\11\5\0\6\11\2\0\5\12\3\11\3\0\10\12\5\11\2\12\3\0\3\11\3\12\1\0"+
"\5\12\4\11\1\12\4\11\3\12\2\11\2\0\1\11\1\0\1\11\1\0\1\11\1\0\1\11\2\0\3\11"+
"\1\0\6\11\2\0\2\11\2\0\5\12\5\0\1\11\5\0\6\12\1\0\1\12\3\0\4\12\11\0\1\11"+
"\4\0\1\11\1\0\5\11\2\0\1\11\1\0\4\11\1\0\3\11\2\0\4\11\5\0\5\11\4\0\1\11\4"+
"\0\4\11\3\12\2\11\5\0\2\12\2\0\3\11\6\12\1\0\2\11\2\0\4\11\1\0\2\11\1\12\3"+
"\11\1\12\4\11\1\12\10\11\2\12\4\0\1\11\1\12\4\0\1\12\5\11\2\12\3\0\3\11\4"+
"\0\3\11\2\12\2\0\6\11\1\0\3\12\1\0\2\12\5\0\5\11\5\0\1\11\1\12\3\11\1\0\2"+
"\11\1\0\7\11\2\0\1\12\6\0\2\11\2\0\3\11\3\0\2\11\3\0\2\11\2\0\3\12\4\0\3\11"+
"\1\0\2\11\1\0\1\11\5\0\1\12\2\0\1\11\3\0\1\11\2\0\2\11\3\12\1\0\2\12\1\0\3"+
"\12\2\0\1\12\2\0\1\12\4\11\10\0\5\12\3\0\6\12\2\0\3\12\2\0\4\12\4\0\3\12\5"+
"\0\1\11\2\0\2\11\2\0\4\11\1\0\4\11\1\0\1\11\1\0\6\11\2\0\5\11\1\0\4\11\1\0"+
"\4\11\2\0\2\12\1\0\1\11\1\0\1\11\5\0\1\11\1\0\1\11\1\0\3\11\1\0\3\11\1\0\3"+
"\11");
/**
* Translates DFA states to action switch labels.
*/
private static final int [] ZZ_ACTION = zzUnpackAction();
private static final String ZZ_ACTION_PACKED_0 =
"\1\1\5\2\1\3\6\0\1\2\2\0\1\4\1\5"+
"\1\1\1\6\1\5\1\7\2\5\1\6\1\2\1\10"+
"\3\6\1\11\1\12\1\6\2\13\1\14\1\13\3\3"+
"\1\6\1\15\1\16\1\17\1\20\1\21\1\22\1\17"+
"\1\22\1\23\1\24\1\25\1\26\1\6\1\27\1\30"+
"\1\31\1\32\1\33\1\34\1\27\1\35\1\6\1\36"+
"\4\0\4\5\1\37\1\40\11\0\1\41\1\0\1\41"+
"\7\0\1\42\10\0\1\43\1\0\1\5\2\0\3\5"+
"\3\0\1\44\1\0\1\12\1\45\3\0\1\46\4\0"+
"\1\47\10\0\1\50\1\5\4\0\3\5\1\37\1\40"+
"\1\0\1\51\1\52\1\0\1\53\2\0\1\54\3\0"+
"\1\55\1\5\2\0\2\5\1\56\1\57\1\0\1\60"+
"\1\0\1\61\2\0\1\5\4\0\2\5\1\0\1\5"+
"\3\0\1\5\2\0\3\5\1\0\1\5\3\0\3\5"+
"\2\0\1\5\2\0\1\5\1\0\1\5\1\0\4\5"+
"\1\0\1\5\1\0\4\5\1\0\1\5\3\0\3\5"+
"\10\0\1\5\1\0\1\5\1\0\3\5\2\0\1\5"+
"\1\0\1\5\1\0\3\5\1\0\1\62\4\0\1\5"+
"\1\0\1\5\1\0\6\5\15\0\1\5\1\0\1\5"+
"\1\0\6\5\1\0\1\5\1\0\1\5\1\0\6\5"+
"\7\0\1\5\2\0\1\5\1\0\3\5\21\0\1\5"+
"\2\0\1\5\1\0\5\5\1\0\1\5\2\0\1\5"+
"\1\0\5\5\4\0\1\5\1\0\3\5\24\0\1\5"+
"\1\0\6\5\1\0\5\5\4\0\1\5\1\0\3\5"+
"\20\0\1\5\1\0\5\5\1\0\4\5\2\0\4\5"+
"\20\0\12\5\1\0\4\5\16\0\10\5\1\0\3\5"+
"\16\0\6\5\1\0\1\62\1\0\3\62\2\5\13\0"+
"\1\62\1\0\3\62\2\5\1\62\1\0\3\62\2\5"+
"\3\0\1\62\1\0\1\62\1\5\12\0\1\62\1\0"+
"\2\62\1\5\2\0\1\62\1\0\2\62\1\5\3\0"+
"\4\62\7\0\5\62\2\0\5\62\4\0\1\62\6\0"+
"\1\62\1\0\1\62\1\0\3\62\3\0\1\62\1\0"+
"\2\62\1\63\5\0\3\62\1\0\2\62\4\0\3\62"+
"\1\0\1\62\2\0\3\62\1\63\4\62";
private static int [] zzUnpackAction() {
int [] result = new int[658];
int offset = 0;
offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result);
return result;
}
private static int zzUnpackAction(String packed, int offset, int [] result) {
int i = 0; /* index in packed string */
int j = offset; /* index in unpacked array */
int l = packed.length();
while (i < l) {
int count = packed.charAt(i++);
int value = packed.charAt(i++);
do result[j++] = value; while (--count > 0);
}
return j;
}
/**
* Translates a state to a row index in the transition table
*/
private static final int [] ZZ_ROWMAP = zzUnpackRowMap();
private static final String ZZ_ROWMAP_PACKED_0 =
"\0\0\0\36\0\74\0\132\0\170\0\226\0\264\0\322"+
"\0\360\0\u010e\0\u012c\0\u014a\0\u0168\0\u0186\0\u01a4\0\u01c2"+
"\0\u01e0\0\u01fe\0\u021c\0\u023a\0\u0258\0\u0276\0\u0294\0\u02b2"+
"\0\u0276\0\u02d0\0\u0276\0\u02ee\0\u030c\0\u032a\0\u0276\0\u0348"+
"\0\u0366\0\u0276\0\u0384\0\u0276\0\u0366\0\u03a2\0\u03c0\0\u03de"+
"\0\u03fc\0\u041a\0\u0438\0\u0456\0\u0474\0\u0492\0\u04b0\0\u0276"+
"\0\u0276\0\u04ce\0\u0276\0\u0276\0\u0276\0\u04ec\0\u050a\0\u0528"+
"\0\u0276\0\u0276\0\u0276\0\u0276\0\u0546\0\u0564\0\u0582\0\u0276"+
"\0\u05a0\0\u05be\0\u05dc\0\u05fa\0\u0618\0\u0636\0\u0654\0\u0672"+
"\0\u0690\0\u06ae\0\u06cc\0\u06ea\0\u0708\0\u0726\0\u0744\0\u0762"+
"\0\u0780\0\u079e\0\u07bc\0\u0438\0\u0456\0\u0492\0\u04b0\0\u04ec"+
"\0\u07da\0\u07f8\0\u0816\0\u0834\0\u0852\0\u0276\0\u0870\0\u088e"+
"\0\u08ac\0\u08ca\0\u08e8\0\u0906\0\u0924\0\u0942\0\u0960\0\u097e"+
"\0\u099c\0\u09ba\0\u09d8\0\u09f6\0\u0a14\0\u0a32\0\u0a50\0\u0a6e"+
"\0\u0a8c\0\u0aaa\0\u0ac8\0\u0ae6\0\u0b04\0\u0b22\0\u0b40\0\u0b5e"+
"\0\u0276\0\u0b7c\0\u0b9a\0\u0bb8\0\u0bd6\0\u0bf4\0\u0c12\0\u0c30"+
"\0\u0c4e\0\u0c6c\0\u0c8a\0\u0ca8\0\u0cc6\0\u0ce4\0\u0d02\0\u0d20"+
"\0\u0d3e\0\u0d5c\0\u0d7a\0\u0d98\0\u0db6\0\u0dd4\0\u0df2\0\u0e10"+
"\0\u0e2e\0\u0e4c\0\u0e6a\0\u0e88\0\u0ea6\0\u0276\0\u0ec4\0\u0ee2"+
"\0\u0f00\0\u0f1e\0\u0f3c\0\u0f5a\0\u0f78\0\u0f96\0\u0fb4\0\u0fd2"+
"\0\u0ff0\0\u100e\0\u0276\0\u0276\0\u102c\0\u0276\0\u104a\0\u0276"+
"\0\u0f78\0\u1068\0\u1086\0\u10a4\0\u10c2\0\u10e0\0\u10fe\0\u111c"+
"\0\u113a\0\u1158\0\u1176\0\u1194\0\u11b2\0\u11d0\0\u11ee\0\u120c"+
"\0\u122a\0\u1248\0\u1266\0\u1284\0\u12a2\0\u12c0\0\u12de\0\u12fc"+
"\0\u131a\0\u1338\0\u1356\0\u1374\0\u1392\0\u13b0\0\u13ce\0\u13ec"+
"\0\u140a\0\u1428\0\u1446\0\u1464\0\u1482\0\u14a0\0\u14be\0\u14dc"+
"\0\u14fa\0\u1518\0\u1536\0\u1554\0\u1572\0\u1590\0\u15ae\0\u15cc"+
"\0\u15ea\0\u1608\0\u1626\0\u1644\0\u1662\0\u1680\0\u169e\0\u16bc"+
"\0\u16da\0\u16f8\0\u1716\0\u1734\0\u1752\0\u1770\0\u178e\0\u17ac"+
"\0\u17ca\0\u17e8\0\u1806\0\u1824\0\u1842\0\u1860\0\u187e\0\u189c"+
"\0\u18ba\0\u18d8\0\u18f6\0\u1914\0\u1932\0\u1950\0\u196e\0\u198c"+
"\0\u19aa\0\u19c8\0\u19e6\0\u1a04\0\u1a22\0\u1a40\0\u1a5e\0\u1a7c"+
"\0\u1a9a\0\u1ab8\0\u1ad6\0\u1af4\0\u1b12\0\u1b30\0\u1b4e\0\u1b6c"+
"\0\u1b8a\0\u1ba8\0\u1bc6\0\u1be4\0\u1c02\0\u1c20\0\u1c3e\0\u1c5c"+
"\0\u1c7a\0\u1c98\0\u1cb6\0\u1cd4\0\u1cf2\0\u1d10\0\u1d2e\0\u1d4c"+
"\0\u1d6a\0\u1d88\0\u1da6\0\u1dc4\0\u1de2\0\u1e00\0\u1e1e\0\u1e3c"+
"\0\u1e5a\0\u1e78\0\u1e96\0\u1eb4\0\u1ed2\0\u1ef0\0\u1f0e\0\u1f2c"+
"\0\u1f4a\0\u1f68\0\u1f86\0\u1fa4\0\u1fc2\0\u1fe0\0\u1ffe\0\u201c"+
"\0\u203a\0\u2058\0\u2076\0\u2094\0\u20b2\0\u20d0\0\u20ee\0\u210c"+
"\0\u212a\0\u2148\0\u2166\0\u2184\0\u21a2\0\u21c0\0\u21de\0\u21fc"+
"\0\u221a\0\u2238\0\u2256\0\u2274\0\u2292\0\u22b0\0\u22ce\0\u22ec"+
"\0\u230a\0\u2328\0\u2346\0\u2364\0\u2382\0\u23a0\0\u23be\0\u23dc"+
"\0\u23fa\0\u2418\0\u2436\0\u2454\0\u2472\0\u2490\0\u24ae\0\u24cc"+
"\0\u24ea\0\u2508\0\u2526\0\u2544\0\u2562\0\u2580\0\u259e\0\u25bc"+
"\0\u25da\0\u25f8\0\u2616\0\u2634\0\u2652\0\u2670\0\u268e\0\u26ac"+
"\0\u26ca\0\u26e8\0\u2706\0\u2724\0\u2742\0\u2760\0\u277e\0\u279c"+
"\0\u27ba\0\u27d8\0\u27f6\0\u2814\0\u2832\0\u2850\0\u286e\0\u288c"+
"\0\u28aa\0\u28c8\0\u28e6\0\u2904\0\u2922\0\u2940\0\u295e\0\u297c"+
"\0\u299a\0\u29b8\0\u29d6\0\u29f4\0\u2a12\0\u2a30\0\u2a4e\0\u2a6c"+
"\0\u2a8a\0\u2aa8\0\u2ac6\0\u2ae4\0\u2b02\0\u2b20\0\u2b3e\0\u2b5c"+
"\0\u2b7a\0\u2b98\0\u2bb6\0\u2bd4\0\u2bf2\0\u2c10\0\u2c2e\0\u2c4c"+
"\0\u2c6a\0\u2c88\0\u2ca6\0\u2cc4\0\u2ce2\0\u2d00\0\u2d1e\0\u2d3c"+
"\0\u2d5a\0\u2d78\0\u2d96\0\u2db4\0\u2dd2\0\u2df0\0\u2e0e\0\u2e2c"+
"\0\u2e4a\0\u2e68\0\u2e86\0\u2ea4\0\u2ec2\0\u2ee0\0\u2efe\0\u2f1c"+
"\0\u2f3a\0\u2f58\0\u2f76\0\u2f94\0\u2fb2\0\u2fd0\0\u2fee\0\u300c"+
"\0\u302a\0\u3048\0\u3066\0\u3084\0\u30a2\0\u30c0\0\u30de\0\u30fc"+
"\0\u311a\0\u3138\0\u3156\0\u3174\0\u3192\0\u31b0\0\u31ce\0\u31ec"+
"\0\u320a\0\u3228\0\u3246\0\u3264\0\u3282\0\u32a0\0\u32be\0\u32dc"+
"\0\u32fa\0\u3318\0\u3336\0\u3354\0\u3372\0\u3390\0\u33ae\0\u33cc"+
"\0\u33ea\0\u3408\0\u3426\0\u3444\0\u3462\0\u3480\0\u349e\0\u34bc"+
"\0\u34da\0\u34f8\0\u3516\0\u3534\0\u3552\0\u3570\0\u358e\0\u35ac"+
"\0\u35ca\0\u35e8\0\u3606\0\u3624\0\u3642\0\u3660\0\u367e\0\u369c"+
"\0\u36ba\0\u36d8\0\u36f6\0\u3714\0\u3732\0\u3750\0\u376e\0\u378c"+
"\0\u37aa\0\u37c8\0\u37e6\0\u3804\0\u3822\0\u3840\0\u385e\0\u387c"+
"\0\u389a\0\u38b8\0\u38d6\0\u38f4\0\u3912\0\u3930\0\u394e\0\u396c"+
"\0\u398a\0\u39a8\0\u39c6\0\u39e4\0\u3a02\0\u3a20\0\u3a3e\0\u3a5c"+
"\0\u3a7a\0\u3a98\0\u3ab6\0\u3ad4\0\u3af2\0\u3b10\0\u3b2e\0\u3b4c"+
"\0\u3b6a\0\u3b88\0\u3ba6\0\u3bc4\0\u3be2\0\u3c00\0\u3c1e\0\u3c3c"+
"\0\u3c5a\0\u3c78\0\u3c96\0\u3cb4\0\u3cd2\0\u3cf0\0\u3d0e\0\u3d2c"+
"\0\u3d4a\0\u3d68\0\u3d86\0\u3da4\0\u3dc2\0\u3de0\0\u3dfe\0\u3e1c"+
"\0\u3e3a\0\u3e58\0\u3e76\0\u3e94\0\u3eb2\0\u3ed0\0\u3eee\0\u3f0c"+
"\0\u3f2a\0\u3f48\0\u3f66\0\u3f84\0\u3fa2\0\u3fc0\0\u3fde\0\u3ffc"+
"\0\u401a\0\u4038\0\u4056\0\u4074\0\u4092\0\u40b0\0\u40ce\0\u40ec"+
"\0\u410a\0\u4128\0\u4146\0\u4164\0\u4182\0\u41a0\0\u41be\0\u41dc"+
"\0\u41fa\0\u4218\0\u4236\0\u4254\0\u4272\0\u4290\0\u42ae\0\u42cc"+
"\0\u42ea\0\u4308\0\u4326\0\u4344\0\u4362\0\u4380\0\u439e\0\u43bc"+
"\0\u43da\0\u43f8\0\u4416\0\u4434\0\u4452\0\u4470\0\u448e\0\u44ac"+
"\0\u44ca\0\u44e8\0\u4506\0\u4524\0\u4542\0\u4560\0\u457e\0\u459c"+
"\0\u45ba\0\u45d8\0\u45f6\0\u4614\0\u4632\0\u4650\0\u466e\0\u468c"+
"\0\u46aa\0\u46c8\0\u46e6\0\u4704\0\u4722\0\u4740\0\u475e\0\u477c"+
"\0\u479a\0\u47b8\0\u47d6\0\u47f4\0\u4812\0\u4830\0\u484e\0\u486c"+
"\0\u488a\0\u48a8\0\u48c6\0\u48e4\0\u4902\0\u0276\0\u4920\0\u493e"+
"\0\u495c\0\u497a";
private static int [] zzUnpackRowMap() {
int [] result = new int[658];
int offset = 0;
offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result);
return result;
}
private static int zzUnpackRowMap(String packed, int offset, int [] result) {
int i = 0; /* index in packed string */
int j = offset; /* index in unpacked array */
int l = packed.length();
while (i < l) {
int high = packed.charAt(i++) << 16;
result[j++] = high | packed.charAt(i++);
}
return j;
}
/**
* The transition table of the DFA
*/
private static final int [] ZZ_TRANS = zzUnpackTrans();
private static final String ZZ_TRANS_PACKED_0 =
"\1\22\1\23\1\24\4\22\1\25\4\22\1\26\2\22"+
"\1\27\1\30\11\22\1\31\3\22\1\31\1\32\3\31"+
"\1\33\31\31\1\32\5\31\1\34\27\31\1\32\5\31"+
"\1\35\27\31\1\32\1\36\2\31\1\37\1\31\3\40"+
"\5\31\1\41\6\40\1\31\3\40\1\31\3\40\1\42"+
"\1\32\1\43\2\42\1\37\1\44\10\42\1\45\16\42"+
"\2\46\1\47\1\46\1\50\31\46\4\31\1\51\31\31"+
"\14\52\1\53\1\54\20\52\36\31\14\55\1\56\1\55"+
"\1\57\17\55\15\31\1\60\36\31\1\61\17\31\1\62"+
"\1\32\1\31\2\62\1\31\6\62\1\63\1\64\1\65"+
"\1\66\16\62\2\67\1\70\2\67\1\71\6\67\1\72"+
"\1\73\1\74\1\75\16\67\2\76\1\77\11\76\1\100"+
"\15\76\1\31\3\76\36\21\2\22\1\101\11\22\1\0"+
"\22\22\1\23\1\101\4\22\1\25\4\22\1\0\2\22"+
"\1\27\1\30\20\22\1\102\3\22\1\103\7\22\1\104"+
"\20\22\1\101\11\22\1\0\6\22\1\105\12\22\36\0"+
"\2\22\1\101\11\22\1\0\11\22\1\106\11\22\1\101"+
"\11\22\1\0\4\22\1\107\5\22\1\110\6\22\1\0"+
"\1\32\44\0\1\111\35\0\1\112\30\0\1\113\3\0"+
"\1\114\7\0\1\115\25\0\4\40\1\116\4\0\6\40"+
"\1\0\3\40\1\0\3\40\5\0\1\33\33\0\1\113"+
"\3\0\1\117\7\0\1\120\16\0\2\46\1\0\1\46"+
"\1\0\31\46\3\0\1\121\36\0\1\122\35\0\1\123"+
"\31\0\14\52\1\124\1\125\20\52\14\0\1\52\36\0"+
"\1\52\20\0\14\55\1\126\1\55\1\127\17\55\14\0"+
"\1\55\37\0\1\55\17\0\1\62\2\0\2\62\1\0"+
"\6\62\3\0\1\130\23\62\1\0\30\62\2\67\1\131"+
"\2\67\1\0\6\67\3\0\1\132\21\67\1\133\3\67"+
"\1\134\7\67\1\135\23\67\1\136\30\67\2\76\1\137"+
"\11\76\1\0\24\76\1\140\3\76\1\141\7\76\1\142"+
"\16\76\3\22\1\143\3\22\1\144\7\22\1\145\22\22"+
"\1\146\41\22\1\147\34\22\1\150\30\22\1\101\11\22"+
"\1\0\4\22\1\151\14\22\2\106\1\152\11\106\1\153"+
"\11\106\1\154\7\106\2\22\1\101\11\22\1\0\5\22"+
"\1\155\15\22\1\101\11\22\1\0\10\22\1\156\10\22"+
"\7\0\4\111\1\157\4\0\6\111\1\0\3\111\1\0"+
"\3\111\7\0\4\112\1\160\4\0\6\112\1\0\3\112"+
"\1\0\3\112\4\0\1\161\41\0\1\162\34\0\1\163"+
"\35\0\3\164\6\0\6\164\1\0\3\164\1\0\3\164"+
"\10\0\1\165\34\0\1\166\32\0\1\167\35\0\1\170"+
"\36\0\1\171\30\0\3\67\1\172\3\67\1\173\7\67"+
"\1\174\23\67\1\0\34\67\1\175\41\67\1\176\34\67"+
"\1\177\26\67\3\76\1\200\3\76\1\201\7\76\1\202"+
"\22\76\1\203\41\76\1\162\34\76\1\204\26\76\4\22"+
"\1\205\41\22\1\0\34\22\1\144\32\22\1\206\31\22"+
"\7\0\4\147\5\0\6\147\1\0\3\147\1\0\3\147"+
"\10\22\1\207\27\22\1\101\11\22\1\0\5\22\1\210"+
"\13\22\3\106\1\211\3\106\1\212\7\106\1\213\6\106"+
"\1\154\7\106\26\153\1\214\7\153\2\106\1\152\11\106"+
"\1\153\2\106\1\215\6\106\1\154\7\106\2\22\1\101"+
"\11\22\1\0\6\22\1\216\14\22\1\101\11\22\1\0"+
"\13\22\1\217\5\22\7\0\3\220\6\0\6\220\1\0"+
"\3\220\1\0\3\220\7\0\3\221\6\0\6\221\1\0"+
"\3\221\1\0\3\221\4\0\1\222\40\0\4\162\5\0"+
"\6\162\1\0\3\162\1\0\3\162\10\0\1\223\34\0"+
"\4\164\5\0\6\164\1\0\3\164\1\0\3\164\7\0"+
"\4\165\5\0\6\165\1\0\3\165\1\0\3\165\10\0"+
"\1\224\31\0\1\225\36\0\1\226\30\0\4\67\1\227"+
"\41\67\1\0\34\67\1\173\32\67\1\230\31\67\7\0"+
"\4\176\5\0\6\176\1\0\3\176\1\0\3\176\10\67"+
"\1\231\25\67\4\76\1\232\41\76\1\0\34\76\1\201"+
"\32\76\1\233\41\76\1\223\25\76\4\22\1\234\35\22"+
"\1\235\31\22\7\0\4\207\5\0\6\207\1\0\3\207"+
"\1\0\3\207\2\22\1\101\11\22\1\0\6\22\1\236"+
"\12\22\4\106\1\237\21\106\1\154\17\106\1\153\15\106"+
"\1\154\16\106\1\212\16\106\1\154\7\106\17\153\1\240"+
"\6\153\1\214\7\153\1\22\1\215\1\101\4\22\1\25"+
"\4\22\1\0\2\22\1\27\1\30\17\22\1\101\11\22"+
"\1\0\7\22\1\241\13\22\1\101\11\22\1\0\7\22"+
"\1\242\11\22\7\0\4\220\5\0\6\220\1\0\3\220"+
"\1\0\3\220\7\0\4\221\5\0\6\221\1\0\3\221"+
"\1\0\3\221\4\0\1\243\40\0\4\223\5\0\6\223"+
"\1\0\3\223\1\0\3\223\7\0\4\224\5\0\6\224"+
"\1\0\3\224\1\0\3\224\4\0\1\244\31\0\4\67"+
"\1\245\35\67\1\246\31\67\7\0\4\231\5\0\6\231"+
"\1\0\3\231\1\0\3\231\4\76\1\247\35\76\1\250"+
"\31\76\4\22\1\0\31\22\1\0\1\251\30\0\1\252"+
"\3\0\2\22\1\101\11\22\1\0\12\22\1\253\6\22"+
"\4\106\1\254\21\106\1\154\7\106\1\0\1\240\5\0"+
"\1\255\7\0\1\256\1\257\15\0\2\22\1\101\11\22"+
"\1\0\10\22\1\260\12\22\1\101\5\22\1\261\3\22"+
"\1\0\21\22\4\67\1\0\31\67\4\76\1\0\31\76"+
"\7\0\1\262\26\0\2\22\1\101\11\22\1\0\13\22"+
"\1\263\5\22\4\106\1\153\21\106\1\154\7\106\23\0"+
"\1\264\40\0\1\153\30\0\1\265\5\0\1\266\6\0"+
"\2\267\1\270\11\267\1\271\1\272\1\273\17\267\2\22"+
"\1\101\11\22\1\0\14\22\1\274\4\22\10\0\1\275"+
"\25\0\2\22\1\101\11\22\1\0\12\22\1\276\6\22"+
"\21\0\1\277\36\0\1\300\40\0\1\301\10\0\2\267"+
"\1\270\4\267\1\302\4\267\1\271\1\272\1\273\1\303"+
"\1\304\20\267\1\305\3\267\1\306\4\267\1\307\1\272"+
"\1\273\1\310\1\304\15\267\14\0\1\311\21\0\2\312"+
"\1\313\4\312\1\314\4\312\1\315\1\267\1\316\1\317"+
"\1\320\15\312\2\321\1\322\4\321\1\323\4\321\1\324"+
"\1\325\1\267\1\326\1\327\15\321\2\22\1\101\4\22"+
"\1\330\4\22\1\0\21\22\21\0\1\331\14\0\2\22"+
"\1\101\11\22\1\0\10\22\1\332\10\22\22\0\1\333"+
"\36\0\1\334\42\0\1\335\5\0\2\267\1\270\4\267"+
"\1\302\4\267\1\271\1\272\1\273\1\303\1\304\2\267"+
"\1\336\14\267\1\270\4\267\1\302\4\267\1\271\1\272"+
"\1\273\1\303\1\304\5\267\1\337\11\267\1\270\4\267"+
"\1\302\4\267\1\271\1\272\1\273\1\303\1\304\6\267"+
"\1\340\12\267\1\341\2\267\1\302\4\267\1\307\1\272"+
"\1\273\1\303\1\304\24\267\1\302\1\311\3\267\1\307"+
"\1\272\1\273\1\303\1\304\2\267\1\336\12\267\2\22"+
"\1\101\11\22\1\311\21\22\7\267\1\306\4\267\1\307"+
"\1\272\1\273\1\303\1\304\5\267\1\337\7\267\7\311"+
"\1\342\4\311\1\271\1\343\1\344\1\345\1\346\15\311"+
"\2\312\1\313\4\312\1\314\4\312\1\315\1\312\1\316"+
"\1\317\1\320\20\312\1\347\3\312\1\350\4\312\1\351"+
"\1\312\1\316\1\352\1\320\17\312\1\313\4\312\1\314"+
"\4\312\1\315\1\312\1\316\1\317\1\320\2\312\1\353"+
"\12\312\14\0\1\354\21\0\2\22\1\101\11\22\1\0"+
"\1\22\1\312\17\22\2\312\1\313\4\312\1\314\4\312"+
"\1\315\1\312\1\316\1\317\1\320\5\312\1\355\11\312"+
"\1\313\4\312\1\314\4\312\1\315\1\312\1\316\1\317"+
"\1\320\1\356\5\312\1\357\6\312\2\321\1\322\4\321"+
"\1\323\4\321\1\324\1\325\1\321\1\326\1\327\20\321"+
"\1\360\3\321\1\361\4\321\1\362\1\325\1\321\1\363"+
"\1\327\17\321\1\322\4\321\1\323\4\321\1\324\1\325"+
"\1\321\1\326\1\327\2\321\1\364\12\321\14\0\1\365"+
"\21\0\2\22\1\101\11\22\1\0\1\321\20\22\2\321"+
"\1\322\4\321\1\323\4\321\1\324\1\325\1\321\1\326"+
"\1\327\5\321\1\366\11\321\1\322\4\321\1\323\4\321"+
"\1\324\1\325\1\321\1\326\1\327\1\367\5\321\1\370"+
"\6\321\2\22\1\101\11\22\1\0\13\22\1\332\5\22"+
"\33\0\1\371\2\0\2\372\1\373\11\372\1\0\15\372"+
"\1\22\3\372\23\0\1\374\36\0\1\375\35\0\1\376"+
"\11\0\2\267\1\270\4\267\1\302\4\267\1\271\1\272"+
"\1\273\1\303\1\304\1\377\14\267\2\337\1\u0100\4\337"+
"\1\u0101\4\337\1\u0102\1\u0103\1\u0104\1\u0105\1\u0106\5\337"+
"\1\u0107\7\337\2\267\1\270\4\267\1\302\4\267\1\271"+
"\1\272\1\273\1\303\1\304\4\267\1\u0108\14\267\1\u0109"+
"\2\267\1\302\4\267\1\307\1\272\1\273\1\303\1\304"+
"\15\267\7\311\1\342\4\311\1\271\1\343\1\344\1\345"+
"\1\346\2\311\1\u010a\12\311\7\354\1\u010b\4\354\1\315"+
"\1\311\1\u010c\1\u010d\1\u010e\15\354\7\365\1\u010f\4\365"+
"\1\324\1\u0110\1\311\1\u0111\1\u0112\15\365\7\311\1\342"+
"\4\311\1\271\1\343\1\344\1\345\1\346\5\311\1\u0113"+
"\16\311\1\342\4\311\1\271\1\343\1\344\1\345\1\346"+
"\6\311\1\u0114\6\311\4\312\1\u0115\2\312\1\314\4\312"+
"\1\351\1\312\1\316\1\317\1\320\24\312\1\314\1\354"+
"\3\312\1\351\1\312\1\316\1\317\1\320\2\312\1\353"+
"\12\312\2\22\1\101\11\22\1\354\21\22\7\312\1\350"+
"\4\312\1\351\1\312\1\316\1\317\1\320\5\312\1\355"+
"\11\312\1\313\4\312\1\314\4\312\1\315\1\312\1\316"+
"\1\317\1\320\1\u0116\14\312\7\354\1\u010b\4\354\1\315"+
"\1\354\1\u010c\1\u010d\1\u010e\15\354\2\355\1\u0117\4\355"+
"\1\u0118\4\355\1\u0119\1\355\1\u011a\1\u011b\1\u011c\5\355"+
"\1\u011d\7\355\2\312\1\313\4\312\1\314\4\312\1\315"+
"\1\312\1\316\1\317\1\320\1\312\1\u011e\15\312\1\313"+
"\4\312\1\314\4\312\1\315\1\312\1\316\1\317\1\320"+
"\4\312\1\u011f\10\312\4\321\1\u0120\2\321\1\323\4\321"+
"\1\362\1\325\1\321\1\326\1\327\24\321\1\323\1\365"+
"\3\321\1\362\1\325\1\321\1\326\1\327\2\321\1\364"+
"\12\321\2\22\1\101\11\22\1\365\21\22\7\321\1\361"+
"\4\321\1\362\1\325\1\321\1\326\1\327\5\321\1\366"+
"\11\321\1\322\4\321\1\323\4\321\1\324\1\325\1\321"+
"\1\326\1\327\1\u0121\14\321\7\365\1\u010f\4\365\1\324"+
"\1\u0110\1\365\1\u0111\1\u0112\15\365\2\366\1\u0122\4\366"+
"\1\u0123\4\366\1\u0124\1\u0125\1\366\1\u0126\1\u0127\5\366"+
"\1\u0128\7\366\2\321\1\322\4\321\1\323\4\321\1\324"+
"\1\325\1\321\1\326\1\327\1\321\1\u0129\15\321\1\322"+
"\4\321\1\323\4\321\1\324\1\325\1\321\1\326\1\327"+
"\4\321\1\u012a\10\321\34\0\1\u012b\1\0\2\372\1\373"+
"\11\372\1\0\24\372\1\u012c\3\372\1\u012d\7\372\1\u012e"+
"\16\372\27\0\1\u012f\33\0\1\u0130\20\0\1\u0131\25\0"+
"\2\267\1\270\4\267\1\302\4\267\1\271\1\272\1\273"+
"\1\303\1\304\1\267\1\u0132\13\267\3\337\1\u0133\3\337"+
"\1\u0134\4\337\1\u0135\1\u0103\1\u0104\1\u0136\1\u0106\5\337"+
"\1\u0107\11\337\1\u0100\4\337\1\u0101\4\337\1\u0102\1\u0103"+
"\1\u0104\1\u0105\1\u0106\2\337\1\u0137\2\337\1\u0107\7\337"+
"\14\153\1\u0113\11\153\1\214\7\153\2\355\1\u0117\4\355"+
"\1\u0118\4\355\1\u0119\1\337\1\u011a\1\u011b\1\u011c\5\355"+
"\1\u011d\7\355\2\366\1\u0122\4\366\1\u0123\4\366\1\u0124"+
"\1\u0125\1\337\1\u0126\1\u0127\5\366\1\u0128\7\366\2\337"+
"\1\u0100\4\337\1\u0101\4\337\1\u0102\1\u0103\1\u0104\1\u0105"+
"\1\u0106\17\337\1\u0100\4\337\1\u0101\4\337\1\u0102\1\u0103"+
"\1\u0104\1\u0105\1\u0106\5\337\1\u0107\1\u0138\10\337\1\u0100"+
"\4\337\1\u0101\4\337\1\u0102\1\u0103\1\u0104\1\303\1\u0106"+
"\5\337\1\u0107\7\337\2\267\1\270\4\267\1\302\4\267"+
"\1\271\1\272\1\273\1\303\1\304\7\267\1\u0139\11\267"+
"\1\311\2\267\1\302\4\267\1\307\1\272\1\273\1\303"+
"\1\304\15\267\7\311\1\342\4\311\1\271\1\343\1\344"+
"\1\345\1\346\1\u013a\14\311\7\354\1\u010b\4\354\1\315"+
"\1\354\1\u010c\1\u010d\1\u010e\2\354\1\u013b\12\354\16\0"+
"\1\354\17\0\7\354\1\u010b\4\354\1\315\1\354\1\u010c"+
"\1\u010d\1\u010e\5\354\1\u013c\16\354\1\u010b\4\354\1\315"+
"\1\354\1\u010c\1\u010d\1\u010e\1\u013d\5\354\1\u013e\6\354"+
"\7\365\1\u010f\4\365\1\324\1\u0110\1\365\1\u0111\1\u0112"+
"\2\365\1\u013f\12\365\15\0\1\365\20\0\7\365\1\u010f"+
"\4\365\1\324\1\u0110\1\365\1\u0111\1\u0112\5\365\1\u0140"+
"\16\365\1\u010f\4\365\1\324\1\u0110\1\365\1\u0111\1\u0112"+
"\1\u0141\5\365\1\u0142\6\365\7\u0113\1\u0143\4\u0113\1\u0102"+
"\1\u0144\1\u0145\1\u0146\1\u0147\5\u0113\1\u0148\7\u0113\7\311"+
"\1\342\4\311\1\271\1\343\1\344\1\345\1\346\4\311"+
"\1\u0149\10\311\4\312\1\u014a\2\312\1\314\4\312\1\351"+
"\1\312\1\316\1\317\1\320\17\312\1\313\4\312\1\314"+
"\4\312\1\315\1\312\1\316\1\317\1\320\1\312\1\u014b"+
"\13\312\3\355\1\u014c\3\355\1\u014d\4\355\1\u014e\1\355"+
"\1\u011a\1\u014f\1\u011c\5\355\1\u011d\11\355\1\u0117\4\355"+
"\1\u0118\4\355\1\u0119\1\355\1\u011a\1\u011b\1\u011c\2\355"+
"\1\u0150\2\355\1\u011d\7\355\14\153\1\u013c\11\153\1\214"+
"\7\153\2\106\1\152\11\106\1\153\1\106\1\355\7\106"+
"\1\154\7\106\2\355\1\u0117\4\355\1\u0118\4\355\1\u0119"+
"\1\355\1\u011a\1\u011b\1\u011c\17\355\1\u0117\4\355\1\u0118"+
"\4\355\1\u0119\1\355\1\u011a\1\u011b\1\u011c\1\u0151\4\355"+
"\1\u011d\1\u0152\10\355\1\u0117\4\355\1\u0118\4\355\1\u0119"+
"\1\355\1\u011a\1\317\1\u011c\5\355\1\u011d\7\355\2\312"+
"\1\313\4\312\1\314\4\312\1\315\1\312\1\316\1\317"+
"\1\320\2\312\1\u0153\14\312\1\313\4\312\1\314\4\312"+
"\1\315\1\312\1\316\1\317\1\320\7\312\1\u0154\5\312"+
"\4\321\1\u0155\2\321\1\323\4\321\1\362\1\325\1\321"+
"\1\326\1\327\17\321\1\322\4\321\1\323\4\321\1\324"+
"\1\325\1\321\1\326\1\327\1\321\1\u0156\13\321\3\366"+
"\1\u0157\3\366\1\u0158\4\366\1\u0159\1\u0125\1\366\1\u015a"+
"\1\u0127\5\366\1\u0128\11\366\1\u0122\4\366\1\u0123\4\366"+
"\1\u0124\1\u0125\1\366\1\u0126\1\u0127\2\366\1\u015b\2\366"+
"\1\u0128\7\366\14\153\1\u0140\11\153\1\214\7\153\2\106"+
"\1\152\11\106\1\153\1\366\10\106\1\154\7\106\2\366"+
"\1\u0122\4\366\1\u0123\4\366\1\u0124\1\u0125\1\366\1\u0126"+
"\1\u0127\17\366\1\u0122\4\366\1\u0123\4\366\1\u0124\1\u0125"+
"\1\366\1\u0126\1\u0127\1\u015c\4\366\1\u0128\1\u015d\10\366"+
"\1\u0122\4\366\1\u0123\4\366\1\u0124\1\u0125\1\366\1\326"+
"\1\u0127\5\366\1\u0128\7\366\2\321\1\322\4\321\1\323"+
"\4\321\1\324\1\325\1\321\1\326\1\327\2\321\1\u015e"+
"\14\321\1\322\4\321\1\323\4\321\1\324\1\325\1\321"+
"\1\326\1\327\7\321\1\u015f\5\321\31\0\1\u0160\4\0"+
"\4\372\1\u0161\41\372\1\0\34\372\1\u012d\26\372\30\0"+
"\1\u0162\5\0\14\311\1\271\1\343\1\344\17\311\31\0"+
"\1\u0163\4\0\2\267\1\270\4\267\1\302\4\267\1\271"+
"\1\272\1\273\1\303\1\304\2\267\1\u0164\12\267\4\337"+
"\1\u0165\2\337\1\u0101\4\337\1\u0135\1\u0103\1\u0104\1\u0105"+
"\1\u0106\5\337\1\u0107\16\337\1\u0101\1\u0113\3\337\1\u0135"+
"\1\u0103\1\u0104\1\u0105\1\u0106\2\337\1\u0137\2\337\1\u0107"+
"\7\337\2\106\1\152\11\106\1\u0113\11\106\1\154\7\106"+
"\7\337\1\u0134\4\337\1\u0135\1\u0103\1\u0104\1\u0105\1\u0106"+
"\17\337\1\u0100\4\337\1\u0101\4\337\1\u0102\1\u0103\1\u0104"+
"\1\u0105\1\u0106\1\u0166\4\337\1\u0107\11\337\1\u0100\4\337"+
"\1\u0101\4\337\1\u0102\1\u0103\1\u0104\1\u0105\1\u0106\4\337"+
"\1\u0167\1\u0107\7\337\2\267\1\270\4\267\1\302\4\267"+
"\1\271\1\272\1\273\1\303\1\304\3\267\1\u0168\11\267"+
"\7\311\1\342\4\311\1\271\1\343\1\344\1\345\1\346"+
"\1\311\1\u0169\13\311\7\354\1\u010b\4\354\1\315\1\354"+
"\1\u010c\1\u010d\1\u010e\1\u016a\14\354\7\u013c\1\u016b\4\u013c"+
"\1\u0119\1\u013c\1\u016c\1\u016d\1\u016e\5\u013c\1\u016f\7\u013c"+
"\7\354\1\u010b\4\354\1\315\1\354\1\u010c\1\u010d\1\u010e"+
"\1\354\1\u0170\22\354\1\u010b\4\354\1\315\1\354\1\u010c"+
"\1\u010d\1\u010e\4\354\1\u0171\10\354\7\365\1\u010f\4\365"+
"\1\324\1\u0110\1\365\1\u0111\1\u0112\1\u0172\14\365\7\u0140"+
"\1\u0173\4\u0140\1\u0124\1\u0174\1\u0140\1\u0175\1\u0176\5\u0140"+
"\1\u0177\7\u0140\7\365\1\u010f\4\365\1\324\1\u0110\1\365"+
"\1\u0111\1\u0112\1\365\1\u0178\22\365\1\u010f\4\365\1\324"+
"\1\u0110\1\365\1\u0111\1\u0112\4\365\1\u0179\10\365\7\u0113"+
"\1\u0143\4\u0113\1\u0102\1\u0144\1\u0145\1\u0146\1\u0147\2\u0113"+
"\1\u017a\2\u0113\1\u0148\7\u0113\7\u013c\1\u016b\4\u013c\1\u0119"+
"\1\u0113\1\u016c\1\u016d\1\u016e\5\u013c\1\u016f\7\u013c\7\u0140"+
"\1\u0173\4\u0140\1\u0124\1\u0174\1\u0113\1\u0175\1\u0176\5\u0140"+
"\1\u0177\7\u0140\7\u0113\1\u0143\4\u0113\1\u0102\1\u0144\1\u0145"+
"\1\u0146\1\u0147\24\u0113\1\u0143\4\u0113\1\u0102\1\u0144\1\u0145"+
"\1\u0146\1\u0147\5\u0113\1\u0148\1\u017b\15\u0113\1\u0143\4\u0113"+
"\1\u0102\1\u0144\1\u0145\1\345\1\u0147\5\u0113\1\u0148\7\u0113"+
"\7\311\1\342\4\311\1\271\1\343\1\344\1\345\1\346"+
"\7\311\1\u017c\5\311\4\312\1\354\2\312\1\314\4\312"+
"\1\351\1\312\1\316\1\317\1\320\17\312\1\313\4\312"+
"\1\314\4\312\1\315\1\312\1\316\1\317\1\320\2\312"+
"\1\u017d\12\312\4\355\1\u017e\2\355\1\u0118\4\355\1\u014e"+
"\1\355\1\u011a\1\u011b\1\u011c\5\355\1\u011d\16\355\1\u0118"+
"\1\u013c\3\355\1\u014e\1\355\1\u011a\1\u011b\1\u011c\2\355"+
"\1\u0150\2\355\1\u011d\7\355\2\106\1\152\11\106\1\u013c"+
"\11\106\1\154\7\106\7\355\1\u014d\4\355\1\u014e\1\355"+
"\1\u011a\1\u011b\1\u011c\17\355\1\u0117\4\355\1\u0118\4\355"+
"\1\u0119\1\355\1\u011a\1\u011b\1\u011c\1\u017f\4\355\1\u011d"+
"\11\355\1\u0117\4\355\1\u0118\4\355\1\u0119\1\355\1\u011a"+
"\1\u011b\1\u011c\1\355\1\u0180\3\355\1\u011d\11\355\1\u0117"+
"\4\355\1\u0118\4\355\1\u0119\1\355\1\u011a\1\u011b\1\u011c"+
"\4\355\1\u0181\1\u011d\7\355\2\312\1\313\4\312\1\314"+
"\4\312\1\315\1\312\1\316\1\317\1\320\3\312\1\u0182"+
"\13\312\1\313\4\312\1\314\4\312\1\315\1\312\1\316"+
"\1\317\1\320\3\312\1\u0183\11\312\4\321\1\365\2\321"+
"\1\323\4\321\1\362\1\325\1\321\1\326\1\327\17\321"+
"\1\322\4\321\1\323\4\321\1\324\1\325\1\321\1\326"+
"\1\327\2\321\1\u0184\12\321\4\366\1\u0185\2\366\1\u0123"+
"\4\366\1\u0159\1\u0125\1\366\1\u0126\1\u0127\5\366\1\u0128"+
"\16\366\1\u0123\1\u0140\3\366\1\u0159\1\u0125\1\366\1\u0126"+
"\1\u0127\2\366\1\u015b\2\366\1\u0128\7\366\2\106\1\152"+
"\11\106\1\u0140\11\106\1\154\7\106\7\366\1\u0158\4\366"+
"\1\u0159\1\u0125\1\366\1\u0126\1\u0127\17\366\1\u0122\4\366"+
"\1\u0123\4\366\1\u0124\1\u0125\1\366\1\u0126\1\u0127\1\u0186"+
"\4\366\1\u0128\11\366\1\u0122\4\366\1\u0123\4\366\1\u0124"+
"\1\u0125\1\366\1\u0126\1\u0127\1\366\1\u0187\3\366\1\u0128"+
"\11\366\1\u0122\4\366\1\u0123\4\366\1\u0124\1\u0125\1\366"+
"\1\u0126\1\u0127\4\366\1\u0188\1\u0128\7\366\2\321\1\322"+
"\4\321\1\323\4\321\1\324\1\325\1\321\1\326\1\327"+
"\3\321\1\u0189\13\321\1\322\4\321\1\323\4\321\1\324"+
"\1\325\1\321\1\326\1\327\3\321\1\u018a\11\321\24\0"+
"\1\u018b\11\0\4\372\1\u018c\31\372\27\0\1\u018d\15\0"+
"\1\u018e\26\0\2\267\1\270\4\267\1\302\4\267\1\271"+
"\1\272\1\273\1\303\1\304\6\267\1\u018f\6\267\4\337"+
"\1\u0190\2\337\1\u0101\4\337\1\u0135\1\u0103\1\u0104\1\u0105"+
"\1\u0106\5\337\1\u0107\11\337\1\u0100\4\337\1\u0101\4\337"+
"\1\u0102\1\u0103\1\u0104\1\u0105\1\u0106\1\337\1\u0191\3\337"+
"\1\u0107\11\337\1\u0100\4\337\1\u0101\4\337\1\u0102\1\u0103"+
"\1\u0104\1\u0105\1\u0106\5\337\1\u0107\1\337\1\u0192\5\337"+
"\2\267\1\270\4\267\1\302\1\u0193\3\267\1\271\1\272"+
"\1\273\1\303\1\304\15\267\7\311\1\342\4\311\1\271"+
"\1\343\1\344\1\345\1\346\2\311\1\u0194\12\311\7\354"+
"\1\u010b\4\354\1\315\1\354\1\u010c\1\u010d\1\u010e\1\354"+
"\1\u0195\13\354\7\u013c\1\u016b\4\u013c\1\u0119\1\u013c\1\u016c"+
"\1\u016d\1\u016e\2\u013c\1\u0196\2\u013c\1\u016f\7\u013c\16\153"+
"\1\u013c\7\153\1\214\7\153\7\u013c\1\u016b\4\u013c\1\u0119"+
"\1\u013c\1\u016c\1\u016d\1\u016e\24\u013c\1\u016b\4\u013c\1\u0119"+
"\1\u013c\1\u016c\1\u016d\1\u016e\1\u0197\4\u013c\1\u016f\1\u0198"+
"\15\u013c\1\u016b\4\u013c\1\u0119\1\u013c\1\u016c\1\u010d\1\u016e"+
"\5\u013c\1\u016f\7\u013c\7\354\1\u010b\4\354\1\315\1\354"+
"\1\u010c\1\u010d\1\u010e\2\354\1\u0199\21\354\1\u010b\4\354"+
"\1\315\1\354\1\u010c\1\u010d\1\u010e\7\354\1\u019a\5\354"+
"\7\365\1\u010f\4\365\1\324\1\u0110\1\365\1\u0111\1\u0112"+
"\1\365\1\u019b\13\365\7\u0140\1\u0173\4\u0140\1\u0124\1\u0174"+
"\1\u0140\1\u0175\1\u0176\2\u0140\1\u019c\2\u0140\1\u0177\7\u0140"+
"\15\153\1\u0140\10\153\1\214\7\153\7\u0140\1\u0173\4\u0140"+
"\1\u0124\1\u0174\1\u0140\1\u0175\1\u0176\24\u0140\1\u0173\4\u0140"+
"\1\u0124\1\u0174\1\u0140\1\u0175\1\u0176\1\u019d\4\u0140\1\u0177"+
"\1\u019e\15\u0140\1\u0173\4\u0140\1\u0124\1\u0174\1\u0140\1\u0111"+
"\1\u0176\5\u0140\1\u0177\7\u0140\7\365\1\u010f\4\365\1\324"+
"\1\u0110\1\365\1\u0111\1\u0112\2\365\1\u019f\21\365\1\u010f"+
"\4\365\1\324\1\u0110\1\365\1\u0111\1\u0112\7\365\1\u01a0"+
"\5\365\7\u0113\1\u0143\4\u0113\1\u0102\1\u0144\1\u0145\1\u0146"+
"\1\u0147\1\u01a1\4\u0113\1\u0148\16\u0113\1\u0143\4\u0113\1\u0102"+
"\1\u0144\1\u0145\1\u0146\1\u0147\4\u0113\1\u01a2\1\u0148\7\u0113"+
"\7\311\1\342\4\311\1\271\1\343\1\344\1\345\1\346"+
"\3\311\1\u01a3\11\311\2\312\1\313\4\312\1\314\4\312"+
"\1\315\1\312\1\316\1\317\1\320\6\312\1\u01a4\6\312"+
"\4\355\1\u01a5\2\355\1\u0118\4\355\1\u014e\1\355\1\u011a"+
"\1\u011b\1\u011c\5\355\1\u011d\11\355\1\u0117\4\355\1\u0118"+
"\4\355\1\u0119\1\355\1\u011a\1\u011b\1\u011c\1\355\1\u01a6"+
"\3\355\1\u011d\11\355\1\u0117\4\355\1\u0118\4\355\1\u0119"+
"\1\355\1\u011a\1\u011b\1\u011c\2\355\1\u01a7\2\355\1\u011d"+
"\11\355\1\u0117\4\355\1\u0118\4\355\1\u0119\1\355\1\u011a"+
"\1\u011b\1\u011c\5\355\1\u011d\1\355\1\u01a8\5\355\2\312"+
"\1\313\4\312\1\314\4\312\1\315\1\312\1\316\1\317"+
"\1\320\4\312\1\267\12\312\1\313\4\312\1\314\1\u01a9"+
"\3\312\1\315\1\312\1\316\1\317\1\320\15\312\2\321"+
"\1\322\4\321\1\323\4\321\1\324\1\325\1\321\1\326"+
"\1\327\6\321\1\u01aa\6\321\4\366\1\u01ab\2\366\1\u0123"+
"\4\366\1\u0159\1\u0125\1\366\1\u0126\1\u0127\5\366\1\u0128"+
"\11\366\1\u0122\4\366\1\u0123\4\366\1\u0124\1\u0125\1\366"+
"\1\u0126\1\u0127\1\366\1\u01ac\3\366\1\u0128\11\366\1\u0122"+
"\4\366\1\u0123\4\366\1\u0124\1\u0125\1\366\1\u0126\1\u0127"+
"\2\366\1\u01ad\2\366\1\u0128\11\366\1\u0122\4\366\1\u0123"+
"\4\366\1\u0124\1\u0125\1\366\1\u0126\1\u0127\5\366\1\u0128"+
"\1\366\1\u01ae\5\366\2\321\1\322\4\321\1\323\4\321"+
"\1\324\1\325\1\321\1\326\1\327\4\321\1\267\12\321"+
"\1\322\4\321\1\323\1\u01af\3\321\1\324\1\325\1\321"+
"\1\326\1\327\15\321\20\0\1\u01b0\15\0\4\372\1\0"+
"\31\372\25\0\1\u01b1\40\0\1\u01b1\5\0\2\267\1\270"+
"\4\267\1\302\4\267\1\271\1\272\1\273\1\303\1\304"+
"\7\267\1\u01b2\5\267\4\337\1\u0113\2\337\1\u0101\4\337"+
"\1\u0135\1\u0103\1\u0104\1\u0105\1\u0106\5\337\1\u0107\11\337"+
"\1\u0100\4\337\1\u0101\4\337\1\u0102\1\u0103\1\u0104\1\u0105"+
"\1\u0106\2\337\1\u01b3\2\337\1\u0107\11\337\1\u0100\4\337"+
"\1\u0101\4\337\1\u0102\1\u0103\1\u0104\1\u0105\1\u0106\3\337"+
"\1\u01b4\1\337\1\u0107\7\337\2\267\1\270\4\267\1\302"+
"\4\267\1\271\1\272\1\273\1\303\1\304\10\267\1\u01b5"+
"\4\267\7\311\1\342\4\311\1\271\1\343\1\344\1\345"+
"\1\346\6\311\1\u01b6\6\311\7\354\1\u010b\4\354\1\315"+
"\1\354\1\u010c\1\u010d\1\u010e\2\354\1\u01b7\12\354\7\u013c"+
"\1\u016b\4\u013c\1\u0119\1\u013c\1\u016c\1\u016d\1\u016e\1\u01b8"+
"\4\u013c\1\u016f\16\u013c\1\u016b\4\u013c\1\u0119\1\u013c\1\u016c"+
"\1\u016d\1\u016e\1\u013c\1\u01b9\3\u013c\1\u016f\16\u013c\1\u016b"+
"\4\u013c\1\u0119\1\u013c\1\u016c\1\u016d\1\u016e\4\u013c\1\u01ba"+
"\1\u016f\7\u013c\7\354\1\u010b\4\354\1\315\1\354\1\u010c"+
"\1\u010d\1\u010e\3\354\1\u01bb\20\354\1\u010b\4\354\1\315"+
"\1\354\1\u010c\1\u010d\1\u010e\3\354\1\u01bc\11\354\7\365"+
"\1\u010f\4\365\1\324\1\u0110\1\365\1\u0111\1\u0112\2\365"+
"\1\u01bd\12\365\7\u0140\1\u0173\4\u0140\1\u0124\1\u0174\1\u0140"+
"\1\u0175\1\u0176\1\u01be\4\u0140\1\u0177\16\u0140\1\u0173\4\u0140"+
"\1\u0124\1\u0174\1\u0140\1\u0175\1\u0176\1\u0140\1\u01bf\3\u0140"+
"\1\u0177\16\u0140\1\u0173\4\u0140\1\u0124\1\u0174\1\u0140\1\u0175"+
"\1\u0176\4\u0140\1\u01c0\1\u0177\7\u0140\7\365\1\u010f\4\365"+
"\1\324\1\u0110\1\365\1\u0111\1\u0112\3\365\1\u01c1\20\365"+
"\1\u010f\4\365\1\324\1\u0110\1\365\1\u0111\1\u0112\3\365"+
"\1\u01c2\11\365\7\u0113\1\u0143\4\u0113\1\u0102\1\u0144\1\u0145"+
"\1\u0146\1\u0147\1\u0113\1\u01c3\3\u0113\1\u0148\16\u0113\1\u0143"+
"\4\u0113\1\u0102\1\u0144\1\u0145\1\u0146\1\u0147\5\u0113\1\u0148"+
"\1\u0113\1\u01c4\5\u0113\7\311\1\342\1\u01c5\3\311\1\271"+
"\1\343\1\344\1\345\1\346\15\311\2\312\1\313\4\312"+
"\1\314\4\312\1\315\1\312\1\316\1\317\1\320\7\312"+
"\1\u01c6\5\312\4\355\1\u013c\2\355\1\u0118\4\355\1\u014e"+
"\1\355\1\u011a\1\u011b\1\u011c\5\355\1\u011d\11\355\1\u0117"+
"\4\355\1\u0118\4\355\1\u0119\1\355\1\u011a\1\u011b\1\u011c"+
"\2\355\1\u01c7\2\355\1\u011d\11\355\1\u0117\4\355\1\u0118"+
"\4\355\1\u0119\1\355\1\u011a\1\u011b\1\u011c\3\355\1\u01c8"+
"\1\355\1\u011d\11\355\1\u0117\4\355\1\u0118\4\355\1\u0119"+
"\1\355\1\u011a\1\u011b\1\u011c\3\355\1\u01c9\1\355\1\u011d"+
"\7\355\2\312\1\313\4\312\1\314\4\312\1\315\1\312"+
"\1\316\1\317\1\320\10\312\1\u01ca\4\312\2\321\1\322"+
"\4\321\1\323\4\321\1\324\1\325\1\321\1\326\1\327"+
"\7\321\1\u01cb\5\321\4\366\1\u0140\2\366\1\u0123\4\366"+
"\1\u0159\1\u0125\1\366\1\u0126\1\u0127\5\366\1\u0128\11\366"+
"\1\u0122\4\366\1\u0123\4\366\1\u0124\1\u0125\1\366\1\u0126"+
"\1\u0127\2\366\1\u01cc\2\366\1\u0128\11\366\1\u0122\4\366"+
"\1\u0123\4\366\1\u0124\1\u0125\1\366\1\u0126\1\u0127\3\366"+
"\1\u01cd\1\366\1\u0128\11\366\1\u0122\4\366\1\u0123\4\366"+
"\1\u0124\1\u0125\1\366\1\u0126\1\u0127\3\366\1\u01ce\1\366"+
"\1\u0128\7\366\2\321\1\322\4\321\1\323\4\321\1\324"+
"\1\325\1\321\1\326\1\327\10\321\1\u01cf\4\321\31\0"+
"\1\u01d0\4\0\2\372\1\373\11\372\1\0\15\372\1\0"+
"\3\372\2\267\1\270\4\267\1\302\4\267\1\271\1\272"+
"\1\273\1\303\1\304\6\267\1\u01d1\6\267\2\337\1\u0100"+
"\4\337\1\u0101\4\337\1\u0102\1\u0103\1\u0104\1\u0105\1\u0106"+
"\5\337\1\u0107\1\u01d2\10\337\1\u0100\4\337\1\u0101\1\u01d3"+
"\3\337\1\u0102\1\u0103\1\u0104\1\u0105\1\u0106\5\337\1\u0107"+
"\7\337\2\267\1\270\4\267\1\u01d4\4\267\1\271\1\272"+
"\1\273\1\303\1\304\15\267\7\311\1\342\4\311\1\271"+
"\1\343\1\344\1\345\1\346\7\311\1\u01d5\5\311\7\354"+
"\1\u010b\4\354\1\315\1\354\1\u010c\1\u010d\1\u010e\6\354"+
"\1\u01d6\6\354\7\u013c\1\u016b\4\u013c\1\u0119\1\u013c\1\u016c"+
"\1\u016d\1\u016e\1\u013c\1\u01d7\3\u013c\1\u016f\16\u013c\1\u016b"+
"\4\u013c\1\u0119\1\u013c\1\u016c\1\u016d\1\u016e\2\u013c\1\u01d8"+
"\2\u013c\1\u016f\16\u013c\1\u016b\4\u013c\1\u0119\1\u013c\1\u016c"+
"\1\u016d\1\u016e\5\u013c\1\u016f\1\u013c\1\u01d9\5\u013c\7\354"+
"\1\u010b\4\354\1\315\1\354\1\u010c\1\u010d\1\u010e\4\354"+
"\1\311\17\354\1\u010b\1\u01da\3\354\1\315\1\354\1\u010c"+
"\1\u010d\1\u010e\15\354\7\365\1\u010f\4\365\1\324\1\u0110"+
"\1\365\1\u0111\1\u0112\6\365\1\u01db\6\365\7\u0140\1\u0173"+
"\4\u0140\1\u0124\1\u0174\1\u0140\1\u0175\1\u0176\1\u0140\1\u01dc"+
"\3\u0140\1\u0177\16\u0140\1\u0173\4\u0140\1\u0124\1\u0174\1\u0140"+
"\1\u0175\1\u0176\2\u0140\1\u01dd\2\u0140\1\u0177\16\u0140\1\u0173"+
"\4\u0140\1\u0124\1\u0174\1\u0140\1\u0175\1\u0176\5\u0140\1\u0177"+
"\1\u0140\1\u01de\5\u0140\7\365\1\u010f\4\365\1\324\1\u0110"+
"\1\365\1\u0111\1\u0112\4\365\1\311\17\365\1\u010f\1\u01df"+
"\3\365\1\324\1\u0110\1\365\1\u0111\1\u0112\15\365\7\u0113"+
"\1\u0143\4\u0113\1\u0102\1\u0144\1\u0145\1\u0146\1\u0147\2\u0113"+
"\1\u01e0\2\u0113\1\u0148\16\u0113\1\u0143\4\u0113\1\u0102\1\u0144"+
"\1\u0145\1\u0146\1\u0147\3\u0113\1\u01e1\1\u0113\1\u0148\7\u0113"+
"\7\311\1\342\4\311\1\271\1\343\1\344\1\345\1\346"+
"\10\311\1\u01e2\4\311\2\312\1\313\4\312\1\314\4\312"+
"\1\315\1\312\1\316\1\317\1\320\6\312\1\u01e3\6\312"+
"\2\355\1\u0117\4\355\1\u0118\4\355\1\u0119\1\355\1\u011a"+
"\1\u011b\1\u011c\5\355\1\u011d\1\u01e4\10\355\1\u0117\4\355"+
"\1\u0118\4\355\1\u0119\1\355\1\u011a\1\u011b\1\u011c\4\355"+
"\1\337\1\u011d\11\355\1\u0117\4\355\1\u0118\1\u01e5\3\355"+
"\1\u0119\1\355\1\u011a\1\u011b\1\u011c\5\355\1\u011d\7\355"+
"\2\312\1\313\4\312\1\u01e6\4\312\1\315\1\312\1\316"+
"\1\317\1\320\15\312\2\321\1\322\4\321\1\323\4\321"+
"\1\324\1\325\1\321\1\326\1\327\6\321\1\u01e7\6\321"+
"\2\366\1\u0122\4\366\1\u0123\4\366\1\u0124\1\u0125\1\366"+
"\1\u0126\1\u0127\5\366\1\u0128\1\u01e8\10\366\1\u0122\4\366"+
"\1\u0123\4\366\1\u0124\1\u0125\1\366\1\u0126\1\u0127\4\366"+
"\1\337\1\u0128\11\366\1\u0122\4\366\1\u0123\1\u01e9\3\366"+
"\1\u0124\1\u0125\1\366\1\u0126\1\u0127\5\366\1\u0128\7\366"+
"\2\321\1\322\4\321\1\u01ea\4\321\1\324\1\325\1\321"+
"\1\326\1\327\15\321\35\0\1\u01eb\2\267\1\270\4\267"+
"\1\302\4\267\1\271\1\272\1\273\1\303\1\304\4\267"+
"\1\u01ec\10\267\2\337\1\u0100\4\337\1\u0101\4\337\1\u0102"+
"\1\u0103\1\u0104\1\u0105\1\u0106\5\337\1\u0107\1\337\1\u01ed"+
"\7\337\1\u0100\4\337\1\u0101\4\337\1\u0102\1\u0103\1\u0104"+
"\1\u0105\1\u0106\5\337\1\u0107\2\337\1\u01ee\4\337\2\267"+
"\1\270\4\267\1\302\4\267\1\271\1\272\1\273\1\303"+
"\1\304\2\267\1\336\4\267\1\u01ec\5\267\7\311\1\342"+
"\4\311\1\271\1\343\1\344\1\345\1\346\6\311\1\u01ef"+
"\6\311\7\354\1\u010b\4\354\1\315\1\354\1\u010c\1\u010d"+
"\1\u010e\7\354\1\u01f0\5\354\7\u013c\1\u016b\4\u013c\1\u0119"+
"\1\u013c\1\u016c\1\u016d\1\u016e\2\u013c\1\u01f1\2\u013c\1\u016f"+
"\16\u013c\1\u016b\4\u013c\1\u0119\1\u013c\1\u016c\1\u016d\1\u016e"+
"\3\u013c\1\u01f2\1\u013c\1\u016f\16\u013c\1\u016b\4\u013c\1\u0119"+
"\1\u013c\1\u016c\1\u016d\1\u016e\3\u013c\1\u01f3\1\u013c\1\u016f"+
"\7\u013c\7\354\1\u010b\4\354\1\315\1\354\1\u010c\1\u010d"+
"\1\u010e\10\354\1\u01f4\4\354\7\365\1\u010f\4\365\1\324"+
"\1\u0110\1\365\1\u0111\1\u0112\7\365\1\u01f5\5\365\7\u0140"+
"\1\u0173\4\u0140\1\u0124\1\u0174\1\u0140\1\u0175\1\u0176\2\u0140"+
"\1\u01f6\2\u0140\1\u0177\16\u0140\1\u0173\4\u0140\1\u0124\1\u0174"+
"\1\u0140\1\u0175\1\u0176\3\u0140\1\u01f7\1\u0140\1\u0177\16\u0140"+
"\1\u0173\4\u0140\1\u0124\1\u0174\1\u0140\1\u0175\1\u0176\3\u0140"+
"\1\u01f8\1\u0140\1\u0177\7\u0140\7\365\1\u010f\4\365\1\324"+
"\1\u0110\1\365\1\u0111\1\u0112\10\365\1\u01f9\4\365\7\u0113"+
"\1\u0143\4\u0113\1\u0102\1\u0144\1\u0145\1\u0146\1\u0147\5\u0113"+
"\1\u0148\1\u01fa\15\u0113\1\u0143\1\u01fb\3\u0113\1\u0102\1\u0144"+
"\1\u0145\1\u0146\1\u0147\5\u0113\1\u0148\7\u0113\7\311\1\u01fc"+
"\4\311\1\271\1\343\1\344\1\345\1\346\15\311\2\312"+
"\1\313\4\312\1\314\4\312\1\315\1\312\1\316\1\317"+
"\1\320\4\312\1\u01fd\10\312\2\355\1\u0117\4\355\1\u0118"+
"\4\355\1\u0119\1\355\1\u011a\1\u011b\1\u011c\5\355\1\u011d"+
"\1\355\1\u01fe\7\355\1\u0117\4\355\1\u0118\4\355\1\u0119"+
"\1\355\1\u011a\1\u011b\1\u011c\5\355\1\u011d\2\355\1\u01ff"+
"\4\355\2\312\1\313\4\312\1\314\4\312\1\315\1\312"+
"\1\316\1\317\1\320\2\312\1\353\4\312\1\u01fd\5\312"+
"\2\321\1\322\4\321\1\323\4\321\1\324\1\325\1\321"+
"\1\326\1\327\4\321\1\u0200\10\321\2\366\1\u0122\4\366"+
"\1\u0123\4\366\1\u0124\1\u0125\1\366\1\u0126\1\u0127\5\366"+
"\1\u0128\1\366\1\u0201\7\366\1\u0122\4\366\1\u0123\4\366"+
"\1\u0124\1\u0125\1\366\1\u0126\1\u0127\5\366\1\u0128\2\366"+
"\1\u0202\4\366\2\321\1\322\4\321\1\323\4\321\1\324"+
"\1\325\1\321\1\326\1\327\2\321\1\364\4\321\1\u0200"+
"\5\321\33\0\1\u0203\2\0\2\u0204\1\u0205\11\u0204\1\271"+
"\1\u0206\1\u0207\1\u0208\12\u0204\1\267\3\u0204\2\337\1\u0100"+
"\4\337\1\u0101\4\337\1\u0102\1\u0103\1\u0104\1\u0105\1\u0106"+
"\5\337\1\u0107\1\u0209\10\337\1\u0100\4\337\1\u020a\4\337"+
"\1\u0102\1\u0103\1\u0104\1\u0105\1\u0106\5\337\1\u0107\7\337"+
"\7\311\1\342\4\311\1\271\1\343\1\344\1\345\1\346"+
"\4\311\1\u020b\10\311\7\354\1\u010b\4\354\1\315\1\354"+
"\1\u010c\1\u010d\1\u010e\6\354\1\u020c\6\354\7\u013c\1\u016b"+
"\4\u013c\1\u0119\1\u013c\1\u016c\1\u016d\1\u016e\5\u013c\1\u016f"+
"\1\u020d\15\u013c\1\u016b\4\u013c\1\u0119\1\u013c\1\u016c\1\u016d"+
"\1\u016e\4\u013c\1\u0113\1\u016f\16\u013c\1\u016b\1\u020e\3\u013c"+
"\1\u0119\1\u013c\1\u016c\1\u016d\1\u016e\5\u013c\1\u016f\7\u013c"+
"\7\354\1\u020f\4\354\1\315\1\354\1\u010c\1\u010d\1\u010e"+
"\15\354\7\365\1\u010f\4\365\1\324\1\u0110\1\365\1\u0111"+
"\1\u0112\6\365\1\u0210\6\365\7\u0140\1\u0173\4\u0140\1\u0124"+
"\1\u0174\1\u0140\1\u0175\1\u0176\5\u0140\1\u0177\1\u0211\15\u0140"+
"\1\u0173\4\u0140\1\u0124\1\u0174\1\u0140\1\u0175\1\u0176\4\u0140"+
"\1\u0113\1\u0177\16\u0140\1\u0173\1\u0212\3\u0140\1\u0124\1\u0174"+
"\1\u0140\1\u0175\1\u0176\5\u0140\1\u0177\7\u0140\7\365\1\u0213"+
"\4\365\1\324\1\u0110\1\365\1\u0111\1\u0112\15\365\7\u0113"+
"\1\u0143\4\u0113\1\u0102\1\u0144\1\u0145\1\u0146\1\u0147\5\u0113"+
"\1\u0148\1\u0113\1\u0214\14\u0113\1\u0143\4\u0113\1\u0102\1\u0144"+
"\1\u0145\1\u0146\1\u0147\5\u0113\1\u0148\2\u0113\1\u0215\4\u0113"+
"\7\311\1\342\4\311\1\271\1\343\1\344\1\345\1\346"+
"\2\311\1\u010a\4\311\1\u020b\5\311\2\u0216\1\u0217\11\u0216"+
"\1\315\1\u0216\1\u0218\1\u0219\1\u021a\11\u0216\1\312\3\u0216"+
"\2\355\1\u0117\4\355\1\u0118\4\355\1\u0119\1\355\1\u011a"+
"\1\u011b\1\u011c\5\355\1\u011d\1\u021b\10\355\1\u0117\4\355"+
"\1\u021c\4\355\1\u0119\1\355\1\u011a\1\u011b\1\u011c\5\355"+
"\1\u011d\7\355\2\u021d\1\u021e\11\u021d\1\324\1\u021f\1\u021d"+
"\1\u0220\1\u0221\11\u021d\1\321\3\u021d\2\366\1\u0122\4\366"+
"\1\u0123\4\366\1\u0124\1\u0125\1\366\1\u0126\1\u0127\5\366"+
"\1\u0128\1\u0222\10\366\1\u0122\4\366\1\u0223\4\366\1\u0124"+
"\1\u0125\1\366\1\u0126\1\u0127\5\366\1\u0128\7\366\30\0"+
"\1\u0224\5\0\2\u0204\1\u0205\11\u0204\1\271\1\u0206\1\u0207"+
"\1\u0208\21\u0204\1\u0225\3\u0204\1\u0226\4\u0204\1\u0227\1\u0206"+
"\1\u0207\1\u0228\16\u0204\2\u0216\1\u0217\11\u0216\1\315\1\u0204"+
"\1\u0218\1\u0219\1\u021a\15\u0216\2\u021d\1\u021e\11\u021d\1\324"+
"\1\u021f\1\u0204\1\u0220\1\u0221\15\u021d\2\u0204\1\u0205\11\u0204"+
"\1\271\1\u0206\1\u0207\1\u0208\6\u0204\1\u0229\7\u0204\2\337"+
"\1\u0100\4\337\1\u0101\4\337\1\u0102\1\u0103\1\u0104\1\u0105"+
"\1\u0106\4\337\1\u022a\1\u0107\11\337\1\u0100\4\337\1\u0101"+
"\4\337\1\u0102\1\u0103\1\u0104\1\u0105\1\u0106\2\337\1\u0137"+
"\2\337\1\u0107\1\337\1\u022a\5\337\2\u0204\1\u0205\11\u0204"+
"\1\271\1\u0206\1\u0207\1\u0208\12\u0204\1\311\3\u0204\7\354"+
"\1\u010b\4\354\1\315\1\354\1\u010c\1\u010d\1\u010e\4\354"+
"\1\u022b\10\354\7\u013c\1\u016b\4\u013c\1\u0119\1\u013c\1\u016c"+
"\1\u016d\1\u016e\5\u013c\1\u016f\1\u013c\1\u022c\14\u013c\1\u016b"+
"\4\u013c\1\u0119\1\u013c\1\u016c\1\u016d\1\u016e\5\u013c\1\u016f"+
"\2\u013c\1\u022d\4\u013c\7\354\1\u010b\4\354\1\315\1\354"+
"\1\u010c\1\u010d\1\u010e\2\354\1\u013b\4\354\1\u022b\5\354"+
"\7\365\1\u010f\4\365\1\324\1\u0110\1\365\1\u0111\1\u0112"+
"\4\365\1\u022e\10\365\7\u0140\1\u0173\4\u0140\1\u0124\1\u0174"+
"\1\u0140\1\u0175\1\u0176\5\u0140\1\u0177\1\u0140\1\u022f\14\u0140"+
"\1\u0173\4\u0140\1\u0124\1\u0174\1\u0140\1\u0175\1\u0176\5\u0140"+
"\1\u0177\2\u0140\1\u0230\4\u0140\7\365\1\u010f\4\365\1\324"+
"\1\u0110\1\365\1\u0111\1\u0112\2\365\1\u013f\4\365\1\u022e"+
"\5\365\7\u0113\1\u0143\4\u0113\1\u0102\1\u0144\1\u0145\1\u0146"+
"\1\u0147\5\u0113\1\u0148\1\u0231\15\u0113\1\u0232\4\u0113\1\u0102"+
"\1\u0144\1\u0145\1\u0146\1\u0147\5\u0113\1\u0148\7\u0113\2\u0216"+
"\1\u0217\11\u0216\1\315\1\u0216\1\u0218\1\u0219\1\u021a\20\u0216"+
"\1\u0233\3\u0216\1\u0234\4\u0216\1\u0235\1\u0216\1\u0218\1\u0236"+
"\1\u021a\15\u0216\2\372\1\373\11\372\1\0\1\372\1\u0216"+
"\17\372\2\u0216\1\u0217\11\u0216\1\315\1\u0216\1\u0218\1\u0219"+
"\1\u021a\5\u0216\1\u0237\11\u0216\1\u0217\11\u0216\1\315\1\u0216"+
"\1\u0218\1\u0219\1\u021a\1\u0238\14\u0216\2\355\1\u0117\4\355"+
"\1\u0118\4\355\1\u0119\1\355\1\u011a\1\u011b\1\u011c\4\355"+
"\1\u0239\1\u011d\11\355\1\u0117\4\355\1\u0118\4\355\1\u0119"+
"\1\355\1\u011a\1\u011b\1\u011c\2\355\1\u0150\2\355\1\u011d"+
"\1\355\1\u0239\5\355\2\u021d\1\u021e\11\u021d\1\324\1\u021f"+
"\1\u021d\1\u0220\1\u0221\20\u021d\1\u023a\3\u021d\1\u023b\4\u021d"+
"\1\u023c\1\u021f\1\u021d\1\u023d\1\u0221\15\u021d\2\372\1\373"+
"\11\372\1\0\1\u021d\20\372\2\u021d\1\u021e\11\u021d\1\324"+
"\1\u021f\1\u021d\1\u0220\1\u0221\5\u021d\1\u023e\11\u021d\1\u021e"+
"\11\u021d\1\324\1\u021f\1\u021d\1\u0220\1\u0221\1\u023f\14\u021d"+
"\2\366\1\u0122\4\366\1\u0123\4\366\1\u0124\1\u0125\1\366"+
"\1\u0126\1\u0127\4\366\1\u0240\1\u0128\11\366\1\u0122\4\366"+
"\1\u0123\4\366\1\u0124\1\u0125\1\366\1\u0126\1\u0127\2\366"+
"\1\u015b\2\366\1\u0128\1\366\1\u0240\5\366\4\u0224\1\u0241"+
"\31\u0224\4\u0204\1\u0242\7\u0204\1\u0227\1\u0206\1\u0207\1\u0208"+
"\26\u0204\1\311\3\u0204\1\u0227\1\u0206\1\u0207\1\u0208\16\u0204"+
"\2\372\1\373\11\372\1\311\21\372\7\u0204\1\u0226\4\u0204"+
"\1\u0227\1\u0206\1\u0207\1\u0208\6\u0204\1\u0229\7\u0204\2\u0229"+
"\1\u0243\11\u0229\1\u0102\1\u0244\1\u0245\1\u0246\6\u0229\1\u0247"+
"\11\u0229\1\u0243\11\u0229\1\u0102\1\u0244\1\u0245\1\u0246\6\u0229"+
"\1\u0247\3\u0229\1\337\3\u0229\2\u0216\1\u0217\11\u0216\1\315"+
"\1\u0216\1\u0218\1\u0219\1\u021a\11\u0216\1\354\3\u0216\7\u013c"+
"\1\u016b\4\u013c\1\u0119\1\u013c\1\u016c\1\u016d\1\u016e\5\u013c"+
"\1\u016f\1\u0248\15\u013c\1\u0249\4\u013c\1\u0119\1\u013c\1\u016c"+
"\1\u016d\1\u016e\5\u013c\1\u016f\7\u013c\2\u021d\1\u021e\11\u021d"+
"\1\324\1\u021f\1\u021d\1\u0220\1\u0221\11\u021d\1\365\3\u021d"+
"\7\u0140\1\u0173\4\u0140\1\u0124\1\u0174\1\u0140\1\u0175\1\u0176"+
"\5\u0140\1\u0177\1\u024a\15\u0140\1\u024b\4\u0140\1\u0124\1\u0174"+
"\1\u0140\1\u0175\1\u0176\5\u0140\1\u0177\7\u0140\7\u0113\1\u0143"+
"\4\u0113\1\u0102\1\u0144\1\u0145\1\u0146\1\u0147\4\u0113\1\u024c"+
"\1\u0148\16\u0113\1\u0143\4\u0113\1\u0102\1\u0144\1\u0145\1\u0146"+
"\1\u0147\2\u0113\1\u017a\2\u0113\1\u0148\1\u0113\1\u024c\5\u0113"+
"\4\u0216\1\u024d\7\u0216\1\u0235\1\u0216\1\u0218\1\u0219\1\u021a"+
"\25\u0216\1\354\3\u0216\1\u0235\1\u0216\1\u0218\1\u0219\1\u021a"+
"\15\u0216\2\372\1\373\11\372\1\354\21\372\7\u0216\1\u0234"+
"\4\u0216\1\u0235\1\u0216\1\u0218\1\u0219\1\u021a\5\u0216\1\u0237"+
"\7\u0216\2\u0237\1\u024e\11\u0237\1\u0119\1\u0237\1\u024f\1\u0250"+
"\1\u0251\5\u0237\1\u0252\7\u0237\2\u0216\1\u0217\11\u0216\1\315"+
"\1\u0216\1\u0218\1\u0219\1\u021a\1\u0216\1\u0253\13\u0216\2\u0237"+
"\1\u024e\11\u0237\1\u0119\1\u0237\1\u024f\1\u0250\1\u0251\5\u0237"+
"\1\u0252\3\u0237\1\355\3\u0237\4\u021d\1\u0254\7\u021d\1\u023c"+
"\1\u021f\1\u021d\1\u0220\1\u0221\25\u021d\1\365\3\u021d\1\u023c"+
"\1\u021f\1\u021d\1\u0220\1\u0221\15\u021d\2\372\1\373\11\372"+
"\1\365\21\372\7\u021d\1\u023b\4\u021d\1\u023c\1\u021f\1\u021d"+
"\1\u0220\1\u0221\5\u021d\1\u023e\7\u021d\2\u023e\1\u0255\11\u023e"+
"\1\u0124\1\u0256\1\u023e\1\u0257\1\u0258\5\u023e\1\u0259\7\u023e"+
"\2\u021d\1\u021e\11\u021d\1\324\1\u021f\1\u021d\1\u0220\1\u0221"+
"\1\u021d\1\u025a\13\u021d\2\u023e\1\u0255\11\u023e\1\u0124\1\u0256"+
"\1\u023e\1\u0257\1\u0258\5\u023e\1\u0259\3\u023e\1\366\3\u023e"+
"\4\u0224\1\u025b\31\u0224\4\u0204\1\u025c\7\u0204\1\u0227\1\u0206"+
"\1\u0207\1\u0208\16\u0204\3\u0229\1\u025d\3\u0229\1\u025e\4\u0229"+
"\1\u025f\1\u0244\1\u0245\1\u0260\6\u0229\1\u0247\7\u0229\2\u0237"+
"\1\u024e\11\u0237\1\u0119\1\u0229\1\u024f\1\u0250\1\u0251\5\u0237"+
"\1\u0252\7\u0237\2\u023e\1\u0255\11\u023e\1\u0124\1\u0256\1\u0229"+
"\1\u0257\1\u0258\5\u023e\1\u0259\7\u023e\2\u0229\1\u0243\11\u0229"+
"\1\u0102\1\u0244\1\u0245\1\u0246\20\u0229\1\u0243\11\u0229\1\u0102"+
"\1\u0244\1\u0245\1\u0208\6\u0229\1\u0247\7\u0229\7\u013c\1\u016b"+
"\4\u013c\1\u0119\1\u013c\1\u016c\1\u016d\1\u016e\4\u013c\1\u0261"+
"\1\u016f\16\u013c\1\u016b\4\u013c\1\u0119\1\u013c\1\u016c\1\u016d"+
"\1\u016e\2\u013c\1\u0196\2\u013c\1\u016f\1\u013c\1\u0261\5\u013c"+
"\7\u0140\1\u0173\4\u0140\1\u0124\1\u0174\1\u0140\1\u0175\1\u0176"+
"\4\u0140\1\u0262\1\u0177\16\u0140\1\u0173\4\u0140\1\u0124\1\u0174"+
"\1\u0140\1\u0175\1\u0176\2\u0140\1\u019c\2\u0140\1\u0177\1\u0140"+
"\1\u0262\5\u0140\2\u0229\1\u0243\11\u0229\1\u0102\1\u0244\1\u0245"+
"\1\u0246\6\u0229\1\u0247\3\u0229\1\u0113\3\u0229\4\u0216\1\u0263"+
"\7\u0216\1\u0235\1\u0216\1\u0218\1\u0219\1\u021a\15\u0216\3\u0237"+
"\1\u0264\3\u0237\1\u0265\4\u0237\1\u0266\1\u0237\1\u024f\1\u0267"+
"\1\u0251\5\u0237\1\u0252\7\u0237\2\u0268\1\u0269\11\u0268\1\153"+
"\1\u0268\1\u0237\7\u0268\1\u026a\7\u0268\2\u0237\1\u024e\11\u0237"+
"\1\u0119\1\u0237\1\u024f\1\u0250\1\u0251\17\u0237\1\u024e\11\u0237"+
"\1\u0119\1\u0237\1\u024f\1\u0250\1\u0251\1\u026b\4\u0237\1\u0252"+
"\11\u0237\1\u024e\11\u0237\1\u0119\1\u0237\1\u024f\1\u0219\1\u0251"+
"\5\u0237\1\u0252\7\u0237\2\u0216\1\u0217\11\u0216\1\315\1\u0216"+
"\1\u0218\1\u0219\1\u021a\2\u0216\1\u026c\12\u0216\4\u021d\1\u026d"+
"\7\u021d\1\u023c\1\u021f\1\u021d\1\u0220\1\u0221\15\u021d\3\u023e"+
"\1\u026e\3\u023e\1\u026f\4\u023e\1\u0270\1\u0256\1\u023e\1\u0271"+
"\1\u0258\5\u023e\1\u0259\7\u023e\2\u0268\1\u0269\11\u0268\1\153"+
"\1\u023e\10\u0268\1\u026a\7\u0268\2\u023e\1\u0255\11\u023e\1\u0124"+
"\1\u0256\1\u023e\1\u0257\1\u0258\17\u023e\1\u0255\11\u023e\1\u0124"+
"\1\u0256\1\u023e\1\u0257\1\u0258\1\u0272\4\u023e\1\u0259\11\u023e"+
"\1\u0255\11\u023e\1\u0124\1\u0256\1\u023e\1\u0220\1\u0258\5\u023e"+
"\1\u0259\7\u023e\2\u021d\1\u021e\11\u021d\1\324\1\u021f\1\u021d"+
"\1\u0220\1\u0221\2\u021d\1\u0273\12\u021d\4\u0224\1\u025b\1\u0274"+
"\30\u0224\4\u0204\1\311\7\u0204\1\u0227\1\u0206\1\u0207\1\u0208"+
"\16\u0204\4\u0229\1\u0275\7\u0229\1\u025f\1\u0244\1\u0245\1\u0246"+
"\6\u0229\1\u0247\17\u0229\1\u0113\3\u0229\1\u025f\1\u0244\1\u0245"+
"\1\u0246\6\u0229\1\u0247\7\u0229\2\u0268\1\u0269\11\u0268\1\u0113"+
"\11\u0268\1\u026a\7\u0268\7\u0229\1\u025e\4\u0229\1\u025f\1\u0244"+
"\1\u0245\1\u0246\16\u0229\2\u0237\1\u024e\11\u0237\1\u0119\1\u0237"+
"\1\u024f\1\u0250\1\u0251\5\u0237\1\u0252\3\u0237\1\u013c\3\u0237"+
"\2\u023e\1\u0255\11\u023e\1\u0124\1\u0256\1\u023e\1\u0257\1\u0258"+
"\5\u023e\1\u0259\3\u023e\1\u0140\3\u023e\4\u0216\1\354\7\u0216"+
"\1\u0235\1\u0216\1\u0218\1\u0219\1\u021a\15\u0216\4\u0237\1\u0276"+
"\7\u0237\1\u0266\1\u0237\1\u024f\1\u0250\1\u0251\5\u0237\1\u0252"+
"\17\u0237\1\u013c\3\u0237\1\u0266\1\u0237\1\u024f\1\u0250\1\u0251"+
"\5\u0237\1\u0252\7\u0237\2\u0268\1\u0269\11\u0268\1\u013c\11\u0268"+
"\1\u026a\7\u0268\7\u0237\1\u0265\4\u0237\1\u0266\1\u0237\1\u024f"+
"\1\u0250\1\u0251\15\u0237\2\u0268\1\u0269\11\u0268\1\153\11\u0268"+
"\1\u026a\12\u0268\1\u0277\3\u0268\1\u0278\7\u0268\1\u0279\6\u0268"+
"\1\u026a\11\u0268\1\u0269\11\u0268\1\153\2\u0268\1\u027a\6\u0268"+
"\1\u026a\7\u0268\2\u0237\1\u024e\11\u0237\1\u0119\1\u0237\1\u024f"+
"\1\u0250\1\u0251\1\u0237\1\u027b\3\u0237\1\u0252\7\u0237\2\u0216"+
"\1\u0217\11\u0216\1\315\1\u0216\1\u0218\1\u0219\1\u021a\3\u0216"+
"\1\u027c\11\u0216\4\u021d\1\365\7\u021d\1\u023c\1\u021f\1\u021d"+
"\1\u0220\1\u0221\15\u021d\4\u023e\1\u027d\7\u023e\1\u0270\1\u0256"+
"\1\u023e\1\u0257\1\u0258\5\u023e\1\u0259\17\u023e\1\u0140\3\u023e"+
"\1\u0270\1\u0256\1\u023e\1\u0257\1\u0258\5\u023e\1\u0259\7\u023e"+
"\2\u0268\1\u0269\11\u0268\1\u0140\11\u0268\1\u026a\7\u0268\7\u023e"+
"\1\u026f\4\u023e\1\u0270\1\u0256\1\u023e\1\u0257\1\u0258\17\u023e"+
"\1\u0255\11\u023e\1\u0124\1\u0256\1\u023e\1\u0257\1\u0258\1\u023e"+
"\1\u027e\3\u023e\1\u0259\7\u023e\2\u021d\1\u021e\11\u021d\1\324"+
"\1\u021f\1\u021d\1\u0220\1\u0221\3\u021d\1\u027f\11\u021d\4\0"+
"\1\u0280\31\0\4\u0229\1\u0281\7\u0229\1\u025f\1\u0244\1\u0245"+
"\1\u0246\6\u0229\1\u0247\7\u0229\4\u0237\1\u0282\7\u0237\1\u0266"+
"\1\u0237\1\u024f\1\u0250\1\u0251\5\u0237\1\u0252\7\u0237\4\u0268"+
"\1\u0283\21\u0268\1\u026a\17\u0268\1\153\15\u0268\1\u026a\16\u0268"+
"\1\u0278\16\u0268\1\u026a\7\u0268\1\372\1\u027a\1\373\11\372"+
"\1\0\2\372\1\u0284\1\u0285\15\372\2\u0237\1\u024e\11\u0237"+
"\1\u0119\1\u0237\1\u024f\1\u0250\1\u0251\2\u0237\1\u0286\2\u0237"+
"\1\u0252\7\u0237\2\u0216\1\u0217\11\u0216\1\315\1\u0216\1\u0218"+
"\1\u0219\1\u021a\4\u0216\1\u0204\10\u0216\4\u023e\1\u0287\7\u023e"+
"\1\u0270\1\u0256\1\u023e\1\u0257\1\u0258\5\u023e\1\u0259\11\u023e"+
"\1\u0255\11\u023e\1\u0124\1\u0256\1\u023e\1\u0257\1\u0258\2\u023e"+
"\1\u0288\2\u023e\1\u0259\7\u023e\2\u021d\1\u021e\11\u021d\1\324"+
"\1\u021f\1\u021d\1\u0220\1\u0221\4\u021d\1\u0204\10\u021d\4\0"+
"\1\u0289\31\0\4\u0229\1\u0113\7\u0229\1\u025f\1\u0244\1\u0245"+
"\1\u0246\6\u0229\1\u0247\7\u0229\4\u0237\1\u013c\7\u0237\1\u0266"+
"\1\u0237\1\u024f\1\u0250\1\u0251\5\u0237\1\u0252\7\u0237\4\u0268"+
"\1\u028a\21\u0268\1\u026a\7\u0268\2\372\1\373\11\372\1\0"+
"\11\372\1\u0268\11\372\1\373\11\372\1\0\4\372\1\u028b"+
"\14\372\2\u0237\1\u024e\11\u0237\1\u0119\1\u0237\1\u024f\1\u0250"+
"\1\u0251\3\u0237\1\u028c\1\u0237\1\u0252\7\u0237\4\u023e\1\u0140"+
"\7\u023e\1\u0270\1\u0256\1\u023e\1\u0257\1\u0258\5\u023e\1\u0259"+
"\11\u023e\1\u0255\11\u023e\1\u0124\1\u0256\1\u023e\1\u0257\1\u0258"+
"\3\u023e\1\u028d\1\u023e\1\u0259\7\u023e\5\0\1\u028e\30\0"+
"\4\u0268\1\153\21\u0268\1\u026a\7\u0268\2\372\1\373\11\372"+
"\1\0\5\372\1\u028f\13\372\2\u0237\1\u024e\11\u0237\1\u0119"+
"\1\u0237\1\u024f\1\u0250\1\u0251\4\u0237\1\u0229\1\u0252\7\u0237"+
"\2\u023e\1\u0255\11\u023e\1\u0124\1\u0256\1\u023e\1\u0257\1\u0258"+
"\4\u023e\1\u0229\1\u0259\7\u023e\2\372\1\373\11\372\1\0"+
"\6\372\1\u0290\14\372\1\373\11\372\1\0\7\372\1\u0291"+
"\13\372\1\373\11\372\1\0\10\372\1\u0292\10\372\2\u0204"+
"\1\u0205\11\u0204\1\271\1\u0206\1\u0207\17\u0204";
private static int [] zzUnpackTrans() {
int [] result = new int[18840];
int offset = 0;
offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result);
return result;
}
private static int zzUnpackTrans(String packed, int offset, int [] result) {
int i = 0; /* index in packed string */
int j = offset; /* index in unpacked array */
int l = packed.length();
while (i < l) {
int count = packed.charAt(i++);
int value = packed.charAt(i++);
value--;
do result[j++] = value; while (--count > 0);
}
return j;
}
/* error codes */
private static final int ZZ_UNKNOWN_ERROR = 0;
private static final int ZZ_NO_MATCH = 1;
private static final int ZZ_PUSHBACK_2BIG = 2;
/** the number of characters up to the start of the matched text */
private int yychar;
/* error messages for the codes above */
private static final String[] ZZ_ERROR_MSG = {
"Unknown internal scanner error",
"Error: could not match input",
"Error: pushback value was too large"
};
/**
* ZZ_ATTRIBUTE[aState] contains the attributes of state <code>aState</code>
*/
private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute();
private static final String ZZ_ATTRIBUTE_PACKED_0 =
"\7\1\6\0\1\1\2\0\5\1\1\11\2\1\1\11"+
"\1\1\1\11\3\1\1\11\2\1\1\11\1\1\1\11"+
"\13\1\2\11\1\1\3\11\3\1\4\11\3\1\1\11"+
"\4\0\6\1\11\0\1\1\1\0\1\1\7\0\1\11"+
"\10\0\1\1\1\0\1\1\2\0\3\1\3\0\1\1"+
"\1\0\2\1\3\0\1\11\4\0\1\1\10\0\2\1"+
"\4\0\5\1\1\0\2\1\1\0\1\11\2\0\1\1"+
"\3\0\2\1\2\0\2\1\2\11\1\0\1\11\1\0"+
"\1\11\2\0\1\1\4\0\2\1\1\0\1\1\3\0"+
"\1\1\2\0\3\1\1\0\1\1\3\0\3\1\2\0"+
"\1\1\2\0\1\1\1\0\1\1\1\0\4\1\1\0"+
"\1\1\1\0\4\1\1\0\1\1\3\0\3\1\10\0"+
"\1\1\1\0\1\1\1\0\3\1\2\0\1\1\1\0"+
"\1\1\1\0\3\1\1\0\1\1\4\0\1\1\1\0"+
"\1\1\1\0\6\1\15\0\1\1\1\0\1\1\1\0"+
"\6\1\1\0\1\1\1\0\1\1\1\0\6\1\7\0"+
"\1\1\2\0\1\1\1\0\3\1\21\0\1\1\2\0"+
"\1\1\1\0\5\1\1\0\1\1\2\0\1\1\1\0"+
"\5\1\4\0\1\1\1\0\3\1\24\0\1\1\1\0"+
"\6\1\1\0\5\1\4\0\1\1\1\0\3\1\20\0"+
"\1\1\1\0\5\1\1\0\4\1\2\0\4\1\20\0"+
"\12\1\1\0\4\1\16\0\10\1\1\0\3\1\16\0"+
"\6\1\1\0\1\1\1\0\5\1\13\0\1\1\1\0"+
"\6\1\1\0\5\1\3\0\1\1\1\0\2\1\12\0"+
"\1\1\1\0\3\1\2\0\1\1\1\0\3\1\3\0"+
"\4\1\7\0\5\1\2\0\5\1\4\0\1\1\6\0"+
"\1\1\1\0\1\1\1\0\3\1\3\0\1\1\1\0"+
"\3\1\5\0\3\1\1\0\2\1\4\0\3\1\1\0"+
"\1\1\2\0\3\1\1\11\4\1";
private static int [] zzUnpackAttribute() {
int [] result = new int[658];
int offset = 0;
offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result);
return result;
}
private static int zzUnpackAttribute(String packed, int offset, int [] result) {
int i = 0; /* index in packed string */
int j = offset; /* index in unpacked array */
int l = packed.length();
while (i < l) {
int count = packed.charAt(i++);
int value = packed.charAt(i++);
do result[j++] = value; while (--count > 0);
}
return j;
}
/** the input device */
private java.io.Reader zzReader;
/** the current state of the DFA */
private int zzState;
/** the current lexical state */
private int zzLexicalState = YYINITIAL;
/** this buffer contains the current text to be matched and is
the source of the yytext() string */
private CharSequence zzBuffer = "";
/** the textposition at the last accepting state */
private int zzMarkedPos;
/** the current text position in the buffer */
private int zzCurrentPos;
/** startRead marks the beginning of the yytext() string in the buffer */
private int zzStartRead;
/** endRead marks the last character in the buffer, that has been read
from input */
private int zzEndRead;
/**
* zzAtBOL == true <=> the scanner is currently at the beginning of a line
*/
private boolean zzAtBOL = true;
/** zzAtEOF == true <=> the scanner is at the EOF */
private boolean zzAtEOF;
/** denotes if the user-EOF-code has already been executed */
private boolean zzEOFDone;
/* user code: */
final CfmlLexerConfiguration myCurrentConfiguration = new CfmlLexerConfiguration();
private Project myProject;
public _CfmlLexer(Project project) {
this((java.io.Reader)null);
myProject = project;
}
public class CfmlLexerConfiguration {
int myArePoundsEvaluated = 0;
int myCommentCounter = 0;
int mySharpCounter = 0;
boolean myIfReturnExpression = false;
Stack<Integer> myReturnStack = new Stack<Integer>();
// to give to other lexer
IElementType myBlockType = CfmlElementTypes.TEMPLATE_TEXT;
boolean myStartExpression = true;
String myCurrentTag = "cfelse";
public CfmlLexerConfiguration() {}
public void reset() {
myCommentCounter = 0;
mySharpCounter = 0;
myIfReturnExpression = false;
myReturnStack.clear();
myBlockType = CfmlElementTypes.TEMPLATE_TEXT;
myStartExpression = true;
myCurrentTag = "cfelse";
myArePoundsEvaluated = 0;
}
public int getExtraState() {
return myArePoundsEvaluated != 0 ? FINAL_STATE : 0;
}
}
private void releaseExpressionState() {
myCurrentConfiguration.mySharpCounter = 0;
myCurrentConfiguration.myIfReturnExpression = false;
myCurrentConfiguration.myReturnStack.clear();
}
private IElementType startComment(int stateToReturnTo) {
myCurrentConfiguration.myReturnStack.push(stateToReturnTo);
myCurrentConfiguration.myCommentCounter++;
yybegin(COMMENT);
return CfmlTokenTypes.COMMENT;
}
private IElementType startTag() {
releaseExpressionState();
yybegin(TAGOPEN); return CfmlTokenTypes.OPENER;
}
private IElementType startCloseTag() {
// myCurrentConfiguration.myArePoundsEvaluated --;
yybegin(TAGCLOSE); return CfmlTokenTypes.LSLASH_ANGLEBRACKET;
}
private void processCloseTag(String tagName) {
if ("cfquery".equalsIgnoreCase(tagName) ||
"cfqueryparam".equalsIgnoreCase(tagName) ||
"cfoutput".equalsIgnoreCase(tagName) ||
"cfmail".equalsIgnoreCase(tagName)) {
myCurrentConfiguration.myArePoundsEvaluated --;
}
}
private IElementType closeStartedTag() {
myCurrentConfiguration.myStartExpression = true;
if (myCurrentConfiguration.myCurrentTag.equalsIgnoreCase("cfscript")) {
myCurrentConfiguration.myStartExpression = false;
myCurrentConfiguration.myBlockType = CfmlTokenTypes.SCRIPT_EXPRESSION;
yybegin(YYINITIAL);
} else if (myCurrentConfiguration.myCurrentTag.equalsIgnoreCase("cfquery")) {
myCurrentConfiguration.myBlockType = CfmlElementTypes.SQL;
myCurrentConfiguration.myArePoundsEvaluated++;
yybegin(YYINITIAL);
} else if (myCurrentConfiguration.myCurrentTag.equalsIgnoreCase("cfqueryparam")) {
myCurrentConfiguration.myBlockType = CfmlElementTypes.SQL;
yybegin(YYINITIAL);
} else if (myCurrentConfiguration.myCurrentTag.equalsIgnoreCase("cfoutput") ||
myCurrentConfiguration.myCurrentTag.equalsIgnoreCase("cfmail")) {
myCurrentConfiguration.myArePoundsEvaluated++;
// yybegin(TEXT);
yybegin(YYINITIAL);
} else {
yybegin(YYINITIAL);
}
if (CfmlUtil.isSingleCfmlTag(myCurrentConfiguration.myCurrentTag, myProject))
return CfmlTokenTypes.CLOSER;
return CfmlTokenTypes.R_ANGLEBRACKET;
}
private IElementType startExpression(int stateToReturn) {
myCurrentConfiguration.mySharpCounter++;
myCurrentConfiguration.myReturnStack.push(stateToReturn);
yybegin(SCRIPT_EXPRESSION);
if (myCurrentConfiguration.mySharpCounter == 1) {
return myCurrentConfiguration.myStartExpression ? CfmlTokenTypes.START_EXPRESSION : CfmlTokenTypes.SCRIPT_EXPRESSION;
}
return CfmlTokenTypes.SCRIPT_EXPRESSION;
}
private IElementType closeTag() {
yybegin(YYINITIAL); return CfmlTokenTypes.CLOSER;
}
/**
* Creates a new scanner
*
* @param in the java.io.Reader to read input from.
*/
_CfmlLexer(java.io.Reader in) {
this.zzReader = in;
}
/**
* Unpacks the compressed character translation table.
*
* @param packed the packed character translation table
* @return the unpacked character translation table
*/
private static char [] zzUnpackCMap(String packed) {
int size = 0;
for (int i = 0, length = packed.length(); i < length; i += 2) {
size += packed.charAt(i);
}
char[] map = new char[size];
int i = 0; /* index in packed string */
int j = 0; /* index in unpacked array */
while (i < packed.length()) {
int count = packed.charAt(i++);
char value = packed.charAt(i++);
do map[j++] = value; while (--count > 0);
}
return map;
}
public final int getTokenStart() {
return zzStartRead;
}
public final int getTokenEnd() {
return getTokenStart() + yylength();
}
public void reset(CharSequence buffer, int start, int end, int initialState) {
zzBuffer = buffer;
zzCurrentPos = zzMarkedPos = zzStartRead = start;
zzAtEOF = false;
zzAtBOL = true;
zzEndRead = end;
yychar = start;
myCurrentConfiguration.reset();
yybegin(initialState);
}
/**
* Refills the input buffer.
*
* @return <code>false</code>, iff there was new input.
*
* @exception java.io.IOException if any I/O-Error occurs
*/
private boolean zzRefill() throws java.io.IOException {
return true;
}
/**
* Returns the current lexical state.
*/
public final int yystate() {
return zzLexicalState;
}
/**
* Enters a new lexical state
*
* @param newState the new lexical state
*/
public final void yybegin(int newState) {
zzLexicalState = newState;
}
/**
* Returns the text matched by the current regular expression.
*/
public final CharSequence yytext() {
return zzBuffer.subSequence(zzStartRead, zzMarkedPos);
}
/**
* Returns the character at position <tt>pos</tt> from the
* matched text.
*
* It is equivalent to yytext().charAt(pos), but faster
*
* @param pos the position of the character to fetch.
* A value from 0 to yylength()-1.
*
* @return the character at position pos
*/
public final char yycharat(int pos) {
return zzBuffer.charAt(zzStartRead+pos);
}
/**
* Returns the length of the matched text region.
*/
public final int yylength() {
return zzMarkedPos-zzStartRead;
}
/**
* Reports an error that occured while scanning.
*
* In a wellformed scanner (no or only correct usage of
* yypushback(int) and a match-all fallback rule) this method
* will only be called with things that "Can't Possibly Happen".
* If this method is called, something is seriously wrong
* (e.g. a JFlex bug producing a faulty scanner etc.).
*
* Usual syntax/scanner level error handling should be done
* in error fallback rules.
*
* @param errorCode the code of the errormessage to display
*/
private void zzScanError(int errorCode) {
String message;
try {
message = ZZ_ERROR_MSG[errorCode];
}
catch (ArrayIndexOutOfBoundsException e) {
message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR];
}
throw new Error(message);
}
/**
* Pushes the specified amount of characters back into the input stream.
*
* They will be read again by then next call of the scanning method
*
* @param number the number of characters to be read again.
* This number must not be greater than yylength()!
*/
public void yypushback(int number) {
if ( number > yylength() )
zzScanError(ZZ_PUSHBACK_2BIG);
zzMarkedPos -= number;
}
/**
* Resumes scanning until the next regular expression is matched,
* the end of input is encountered or an I/O-Error occurs.
*
* @return the next token
* @exception java.io.IOException if any I/O-Error occurs
*/
public IElementType advance() throws java.io.IOException {
int zzInput;
int zzAction;
// cached fields:
int zzCurrentPosL;
int zzMarkedPosL;
int zzEndReadL = zzEndRead;
CharSequence zzBufferL = zzBuffer;
int [] zzTransL = ZZ_TRANS;
int [] zzRowMapL = ZZ_ROWMAP;
int [] zzAttrL = ZZ_ATTRIBUTE;
while (true) {
zzMarkedPosL = zzMarkedPos;
yychar+= zzMarkedPosL-zzStartRead;
zzAction = -1;
zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL;
zzState = ZZ_LEXSTATE[zzLexicalState];
// set up zzAction for empty match case:
int zzAttributes = zzAttrL[zzState];
if ( (zzAttributes & 1) == 1 ) {
zzAction = zzState;
}
zzForAction: {
while (true) {
if (zzCurrentPosL < zzEndReadL) {
zzInput = Character.codePointAt(zzBufferL, zzCurrentPosL/*, zzEndReadL*/);
zzCurrentPosL += Character.charCount(zzInput);
}
else if (zzAtEOF) {
zzInput = YYEOF;
break zzForAction;
}
else {
// store back cached positions
zzCurrentPos = zzCurrentPosL;
zzMarkedPos = zzMarkedPosL;
boolean eof = zzRefill();
// get translated positions and possibly new buffer
zzCurrentPosL = zzCurrentPos;
zzMarkedPosL = zzMarkedPos;
zzBufferL = zzBuffer;
zzEndReadL = zzEndRead;
if (eof) {
zzInput = YYEOF;
break zzForAction;
}
else {
zzInput = Character.codePointAt(zzBufferL, zzCurrentPosL/*, zzEndReadL*/);
zzCurrentPosL += Character.charCount(zzInput);
}
}
int zzNext = zzTransL[ zzRowMapL[zzState] + ZZ_CMAP(zzInput) ];
if (zzNext == -1) break zzForAction;
zzState = zzNext;
zzAttributes = zzAttrL[zzState];
if ( (zzAttributes & 1) == 1 ) {
zzAction = zzState;
zzMarkedPosL = zzCurrentPosL;
if ( (zzAttributes & 8) == 8 ) break zzForAction;
}
}
}
// store back cached position
zzMarkedPos = zzMarkedPosL;
if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {
zzAtEOF = true;
return null;
}
else {
switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) {
case 1:
{ if(myCurrentConfiguration.myBlockType == CfmlTokenTypes.SCRIPT_EXPRESSION){ return CfmlTokenTypes.SCRIPT_EXPRESSION;} return CfmlTokenTypes.WHITE_SPACE;
}
case 52: break;
case 2:
{ return CfmlTokenTypes.WHITE_SPACE;
}
case 53: break;
case 3:
{ return CfmlTokenTypes.COMMENT;
}
case 54: break;
case 4:
{ return CfmlElementTypes.CF_SCRIPT;
}
case 55: break;
case 5:
{ return myCurrentConfiguration.myBlockType;
}
case 56: break;
case 6:
{ yybegin(YYINITIAL); return CfmlTokenTypes.BAD_CHARACTER;
}
case 57: break;
case 7:
{ if (myCurrentConfiguration.myArePoundsEvaluated > 0) {
return startExpression(YYINITIAL);
} else {
return myCurrentConfiguration.myBlockType;
}
}
case 58: break;
case 8:
{ return closeTag();
}
case 59: break;
case 9:
{ return closeStartedTag();
}
case 60: break;
case 10:
{ yybegin(ASSIGN);
return CfmlTokenTypes.ATTRIBUTE;
}
case 61: break;
case 11:
{ yybegin(ATTRIBUTE_VALUE); return CfmlTokenTypes.BAD_CHARACTER;
}
case 62: break;
case 12:
{ yybegin(ATTRIBUTE_VALUE); return CfmlTokenTypes.ASSIGN;
}
case 63: break;
case 13:
{ yybegin(DOUBLEQUOTE_CLOSER);
if (myCurrentConfiguration.myIfReturnExpression) {
return CfmlTokenTypes.SCRIPT_EXPRESSION;
}
return CfmlTokenTypes.STRING_TEXT;
}
case 64: break;
case 14:
{ return startExpression(DOUBLE_QUOTED_STRING);
}
case 65: break;
case 15:
{ yybegin(myCurrentConfiguration.myReturnStack.pop());
if (myCurrentConfiguration.myIfReturnExpression) {
return CfmlTokenTypes.SCRIPT_EXPRESSION;
}
return CfmlTokenTypes.DOUBLE_QUOTE_CLOSER;
}
case 66: break;
case 16:
{ yybegin(SINGLEQUOTE_CLOSER);
if (myCurrentConfiguration.myIfReturnExpression) {
return CfmlTokenTypes.SCRIPT_EXPRESSION;
}
return CfmlTokenTypes.STRING_TEXT;
}
case 67: break;
case 17:
{ return startExpression(SINGLE_QUOTED_STRING);
}
case 68: break;
case 18:
{ yybegin(myCurrentConfiguration.myReturnStack.pop());
if (myCurrentConfiguration.myIfReturnExpression) {
return CfmlTokenTypes.SCRIPT_EXPRESSION;
}
return CfmlTokenTypes.SINGLE_QUOTE_CLOSER;
}
case 69: break;
case 19:
{ yybegin(TAGATTR);
return CfmlElementTypes.CF_SCRIPT;
}
case 70: break;
case 20:
{ return startExpression(TAGATTR);
}
case 71: break;
case 21:
{ myCurrentConfiguration.myReturnStack.push(TAGATTR);
yybegin(DOUBLE_QUOTED_STRING);
return CfmlTokenTypes.DOUBLE_QUOTE;
}
case 72: break;
case 22:
{ myCurrentConfiguration.myReturnStack.push(TAGATTR);
yybegin(SINGLE_QUOTED_STRING);
return CfmlTokenTypes.SINGLE_QUOTE;
}
case 73: break;
case 23:
{ myCurrentConfiguration.myIfReturnExpression = true;
return CfmlTokenTypes.SCRIPT_EXPRESSION;
}
case 74: break;
case 24:
{ releaseExpressionState(); yybegin(YYINITIAL); return CfmlTokenTypes.BAD_CHARACTER;
}
case 75: break;
case 25:
{ releaseExpressionState(); return closeStartedTag();
}
case 76: break;
case 26:
{ myCurrentConfiguration.myIfReturnExpression = true;
if (!myCurrentConfiguration.myStartExpression && myCurrentConfiguration.mySharpCounter == 0) {
return startExpression(SCRIPT_EXPRESSION);
}
myCurrentConfiguration.mySharpCounter--;
yybegin(myCurrentConfiguration.myReturnStack.pop());
if (myCurrentConfiguration.mySharpCounter == 0 && myCurrentConfiguration.myStartExpression) {
myCurrentConfiguration.myIfReturnExpression = false;
return CfmlTokenTypes.END_EXPRESSION;
}
return CfmlTokenTypes.SCRIPT_EXPRESSION;
}
case 77: break;
case 27:
{ myCurrentConfiguration.myIfReturnExpression = true;
myCurrentConfiguration.myReturnStack.push(SCRIPT_EXPRESSION);
yybegin(DOUBLE_QUOTED_STRING);
return CfmlTokenTypes.SCRIPT_EXPRESSION;
}
case 78: break;
case 28:
{ myCurrentConfiguration.myIfReturnExpression = true;
myCurrentConfiguration.myReturnStack.push(SCRIPT_EXPRESSION);
yybegin(SINGLE_QUOTED_STRING);
return CfmlTokenTypes.SCRIPT_EXPRESSION;
}
case 79: break;
case 29:
{ return CfmlElementTypes.TEMPLATE_TEXT;
}
case 80: break;
case 30:
{ return startExpression(TEXT);
}
case 81: break;
case 31:
{ yybegin(CLOSER); processCloseTag(yytext().toString()); return CfmlTokenTypes.CF_TAG_NAME;
}
case 82: break;
case 32:
{ myCurrentConfiguration.myCurrentTag = yytext().toString().toLowerCase();
if (!CfmlUtil.hasAnyAttributes(myCurrentConfiguration.myCurrentTag, myProject)) {
myCurrentConfiguration.myStartExpression = false;
yybegin(SCRIPT_EXPRESSION);
} else {
myCurrentConfiguration.myStartExpression = true;
yybegin(TAGATTR);
}
return CfmlTokenTypes.CF_TAG_NAME;
}
case 83: break;
case 33:
// lookahead expression with fixed lookahead length
zzMarkedPos = Character.offsetByCodePoints
(zzBufferL/*, zzStartRead, zzEndRead - zzStartRead*/, zzMarkedPos, -1);
{ if (myCurrentConfiguration.myIfReturnExpression) {
return CfmlTokenTypes.SCRIPT_EXPRESSION;
}
return CfmlTokenTypes.STRING_TEXT;
}
case 84: break;
case 34:
{ releaseExpressionState(); return closeTag();
}
case 85: break;
case 35:
{ String tagName = yytext().subSequence(1, yylength()).toString();
boolean startTemplateText = !"cfinclude".equalsIgnoreCase(tagName);
if (startTemplateText) myCurrentConfiguration.myBlockType = CfmlElementTypes.TEMPLATE_TEXT;
yypushback(yylength() - 1);
return startTag();
}
case 86: break;
case 36:
// lookahead expression with fixed base length
zzMarkedPos = Character.offsetByCodePoints
(zzBufferL/*, zzStartRead, zzEndRead - zzStartRead*/, zzStartRead, 1);
{ return startTag();
}
case 87: break;
case 37:
// lookahead expression with fixed base length
zzMarkedPos = Character.offsetByCodePoints
(zzBufferL/*, zzStartRead, zzEndRead - zzStartRead*/, zzStartRead, 1);
{ yybegin(TAGOPEN); return CfmlTokenTypes.OPENER;
}
case 88: break;
case 38:
{ yybegin(myCurrentConfiguration.myReturnStack.pop()); return CfmlTokenTypes.COMMENT;
}
case 89: break;
case 39:
// lookahead expression with fixed base length
zzMarkedPos = Character.offsetByCodePoints
(zzBufferL/*, zzStartRead, zzEndRead - zzStartRead*/, zzStartRead, 1);
{ releaseExpressionState(); yybegin(TAGOPEN); return CfmlTokenTypes.OPENER;
}
case 90: break;
case 40:
// lookahead expression with fixed base length
zzMarkedPos = Character.offsetByCodePoints
(zzBufferL/*, zzStartRead, zzEndRead - zzStartRead*/, zzStartRead, 2);
{ myCurrentConfiguration.myBlockType = CfmlElementTypes.TEMPLATE_TEXT; return startCloseTag();
}
case 91: break;
case 41:
// lookahead expression with fixed base length
zzMarkedPos = Character.offsetByCodePoints
(zzBufferL/*, zzStartRead, zzEndRead - zzStartRead*/, zzStartRead, 2);
{ return startCloseTag();
}
case 92: break;
case 42:
// lookahead expression with fixed base length
zzMarkedPos = Character.offsetByCodePoints
(zzBufferL/*, zzStartRead, zzEndRead - zzStartRead*/, zzStartRead, 2);
{ yybegin(TAGCLOSE); return CfmlTokenTypes.LSLASH_ANGLEBRACKET;
}
case 93: break;
case 43:
// lookahead expression with fixed base length
zzMarkedPos = Character.offsetByCodePoints
(zzBufferL/*, zzStartRead, zzEndRead - zzStartRead*/, zzStartRead, 1);
{ myCurrentConfiguration.myCommentCounter--;
if (myCurrentConfiguration.myCommentCounter == 0) {
yybegin(COMMENTEND);
}
return CfmlTokenTypes.COMMENT;
}
case 94: break;
case 44:
// lookahead expression with fixed base length
zzMarkedPos = Character.offsetByCodePoints
(zzBufferL/*, zzStartRead, zzEndRead - zzStartRead*/, zzStartRead, 2);
{ releaseExpressionState(); yybegin(TAGCLOSE); return CfmlTokenTypes.LSLASH_ANGLEBRACKET;
}
case 95: break;
case 45:
{ return startComment(YYINITIAL);
}
case 96: break;
case 46:
{ return startComment(TAGATTR);
}
case 97: break;
case 47:
// lookahead expression with fixed base length
zzMarkedPos = Character.offsetByCodePoints
(zzBufferL/*, zzStartRead, zzEndRead - zzStartRead*/, zzStartRead, 1);
{ myCurrentConfiguration.myCommentCounter++; return CfmlTokenTypes.COMMENT;
}
case 98: break;
case 48:
{ return startComment(SCRIPT_EXPRESSION);
}
case 99: break;
case 49:
{ return startComment(TEXT);
}
case 100: break;
case 50:
{ if (yychar == 0) { yybegin(EAT_TEST_AS_SCRIPT); return CfmlElementTypes.CF_SCRIPT; }
else { return myCurrentConfiguration.myBlockType; }
}
case 101: break;
case 51:
{ return CfmlTokenTypes.VAR_ANNOTATION;
}
case 102: break;
default:
zzScanError(ZZ_NO_MATCH);
}
}
}
}
}