/* The following code was generated by JFlex 1.7.0 tweaked for IntelliJ platform */

package com.android.tools.idea.lang.databinding;
import com.intellij.lexer.*;
import com.intellij.psi.tree.IElementType;
import static com.android.tools.idea.lang.databinding.psi.DbTokenTypes.*;
@SuppressWarnings("ALL")

/**
 * This class is a scanner generated by 
 * <a href="http://www.jflex.de/">JFlex</a> 1.7.0
 * from the specification file <tt>_DbLexer.flex</tt>
 */
public class _DbLexer 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;

  /**
   * 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
  };

  /** 
   * Translates characters to character classes
   * Chosen bits are [12, 6, 3]
   * Total runtime size is 17408 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\44\1\45\1\46\1\47\1"+
    "\21\1\50\1\51\1\52\1\53\1\54\1\55\1\56\1\21\1\25\1\57\1\60\5\21\2\25\1\61"+
    "\7\21\1\25\1\62\20\21\1\25\1\63\1\21\1\64\13\25\1\65\1\25\1\66\22\21\1\67"+
    "\1\70\4\21\1\71\11\21\1\72\1\73\1\74\1\75\1\21\1\76\2\21\1\77\3\21\1\100\2"+
    "\21\1\101\10\21\123\25\1\102\7\25\1\103\1\104\12\25\1\105\15\25\1\106\6\21"+
    "\1\25\1\107\u0582\21\1\110\u017f\21");

  /* The ZZ_CMAP_Y table has 4672 entries */
  static final char ZZ_CMAP_Y[] = zzUnpackCMap(
    "\1\0\1\1\1\0\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\4"+
    "\0\1\17\1\20\1\21\1\22\2\23\1\24\3\23\1\24\71\23\1\25\1\23\1\26\1\27\1\30"+
    "\1\31\2\27\16\0\1\32\1\33\1\34\1\35\2\23\1\36\11\23\1\37\21\23\1\40\1\41\24"+
    "\23\1\42\3\23\1\24\1\43\1\42\4\23\1\44\1\45\4\0\1\46\1\47\1\27\3\23\2\50\1"+
    "\27\1\51\1\52\1\0\1\53\5\23\1\54\3\0\1\55\1\56\13\23\1\57\1\46\1\60\1\61\1"+
    "\0\1\62\1\27\1\63\1\64\3\23\3\0\1\65\12\23\1\66\1\0\1\67\1\27\1\0\1\70\3\23"+
    "\1\54\1\71\1\22\2\23\1\66\1\72\1\73\1\74\2\27\3\23\1\75\1\23\1\50\6\27\2\23"+
    "\1\32\1\76\2\27\1\77\5\0\1\100\6\23\1\101\2\0\1\102\1\23\1\103\1\0\1\42\1"+
    "\23\1\104\1\105\1\106\2\23\1\107\1\110\1\111\1\112\1\113\1\63\1\114\1\103"+
    "\1\0\1\115\1\116\1\117\1\120\1\106\2\23\1\107\1\121\1\122\1\123\1\124\1\125"+
    "\1\126\1\127\1\0\1\130\1\27\1\117\1\37\1\36\2\23\1\107\1\131\1\111\1\46\1"+
    "\132\1\133\1\27\1\103\1\0\1\43\1\134\1\117\1\105\1\106\2\23\1\107\1\131\1"+
    "\111\1\112\1\124\1\127\1\114\1\103\1\0\1\43\1\27\1\135\1\136\1\137\1\140\1"+
    "\116\1\136\1\23\1\141\1\142\1\143\1\144\1\27\1\127\1\0\1\27\1\43\1\145\1\32"+
    "\1\107\2\23\1\107\1\23\1\146\1\147\1\143\1\150\1\50\1\103\1\0\2\27\1\104\1"+
    "\32\1\107\2\23\1\107\1\151\1\111\1\147\1\143\1\150\1\34\1\103\1\0\1\152\1"+
    "\27\1\145\1\32\1\107\4\23\1\153\1\147\1\154\1\155\1\44\1\103\1\0\1\27\1\41"+
    "\1\156\1\23\1\24\1\41\2\23\1\36\1\157\1\24\1\160\1\161\1\0\1\127\1\0\1\162"+
    "\1\27\1\42\5\23\1\163\1\164\1\165\1\166\1\0\1\167\4\27\1\170\1\171\1\172\1"+
    "\42\1\173\1\174\1\163\1\175\1\176\1\51\1\0\1\177\4\27\1\133\2\27\1\167\1\0"+
    "\1\167\1\200\1\201\1\23\1\42\3\23\1\30\1\45\1\0\1\147\1\202\1\0\1\45\3\0\1"+
    "\203\1\204\7\27\5\23\1\54\1\0\1\205\1\0\1\167\1\66\1\206\1\207\1\210\1\211"+
    "\1\23\1\212\1\213\1\0\1\51\4\23\1\37\1\21\5\23\1\214\51\23\1\137\1\24\1\137"+
    "\5\23\1\137\4\23\1\137\1\24\1\137\1\23\1\24\7\23\1\137\10\23\1\215\4\27\2"+
    "\23\2\27\12\23\2\76\1\42\114\23\1\105\2\23\1\42\2\23\1\50\11\23\1\136\1\23"+
    "\1\133\1\23\1\32\1\216\1\27\2\23\1\216\1\27\2\23\1\217\1\27\1\23\1\32\1\220"+
    "\1\27\6\23\1\221\3\0\1\222\1\223\1\0\1\167\3\27\1\224\1\0\1\167\13\23\1\27"+
    "\1\225\4\23\1\226\10\23\1\76\1\27\3\23\1\24\1\0\1\2\1\0\1\2\1\127\1\0\3\23"+
    "\1\76\1\30\1\27\5\23\1\115\3\23\1\26\1\0\1\167\4\27\2\23\1\165\1\2\6\23\1"+
    "\202\1\166\3\0\1\112\1\0\1\167\1\0\1\167\1\44\1\27\1\0\1\51\10\27\1\227\5"+
    "\23\1\221\1\0\1\227\1\115\1\0\1\167\1\27\1\230\1\2\1\27\1\231\3\23\1\102\1"+
    "\210\1\0\1\70\4\23\1\66\1\0\1\2\1\27\4\23\1\221\2\0\1\27\1\0\1\232\1\0\1\70"+
    "\3\23\1\76\1\23\1\133\10\27\1\233\2\0\1\234\1\235\1\167\30\23\7\0\1\236\42"+
    "\23\2\76\4\23\2\76\1\23\1\237\3\23\1\76\6\23\1\32\1\176\1\240\1\30\1\241\1"+
    "\115\1\23\1\30\1\240\1\30\1\27\1\230\3\27\1\242\1\27\1\44\1\133\1\27\1\243"+
    "\1\27\1\147\1\0\1\43\1\44\2\27\1\23\1\30\4\23\2\27\1\0\1\203\1\244\1\0\1\245"+
    "\1\27\1\246\1\41\1\157\1\247\1\31\1\250\1\23\1\251\1\252\1\253\2\27\5\23\1"+
    "\133\116\27\5\23\1\24\5\23\1\24\20\23\1\30\1\254\1\255\1\27\4\23\1\37\1\21"+
    "\7\23\1\44\1\27\1\63\2\23\1\24\1\27\10\24\4\0\5\27\1\44\72\27\1\252\3\27\1"+
    "\42\1\212\1\247\1\30\1\42\11\23\1\24\1\256\1\42\12\23\1\214\1\252\4\23\1\24"+
    "\1\42\12\23\1\24\2\27\3\23\1\50\6\27\170\23\1\76\11\27\75\23\1\50\2\27\21"+
    "\23\1\30\10\27\5\23\1\76\41\23\1\30\2\23\1\0\1\255\2\27\5\23\1\165\1\77\1"+
    "\257\3\23\1\66\12\23\1\167\3\27\1\44\1\23\1\41\14\23\1\106\3\23\1\24\1\23"+
    "\7\27\1\44\1\23\1\260\1\261\2\23\1\54\2\27\1\133\6\23\1\115\1\27\1\70\5\23"+
    "\1\221\1\0\1\51\1\27\1\0\1\167\2\0\1\70\1\262\1\0\1\70\2\23\1\66\1\51\2\23"+
    "\1\165\1\0\1\2\1\27\3\23\1\30\1\100\5\23\1\54\1\0\1\245\1\44\1\0\1\167\1\263"+
    "\1\23\1\0\1\264\5\23\1\102\1\166\1\27\1\261\1\265\1\0\1\167\2\23\1\24\1\266"+
    "\6\23\1\207\1\267\1\226\2\27\1\270\1\23\1\54\1\271\1\27\3\272\1\27\2\24\5"+
    "\23\1\214\1\76\1\27\16\23\1\54\1\273\1\0\1\167\64\23\1\115\1\27\2\23\1\24"+
    "\1\274\5\23\1\115\40\27\55\23\1\76\15\23\1\26\4\27\1\24\1\27\1\274\1\275\1"+
    "\23\1\107\1\24\1\176\1\276\15\23\1\26\3\27\1\274\54\23\1\76\2\27\10\23\1\41"+
    "\6\23\5\27\1\23\1\30\2\0\2\27\2\0\1\116\2\27\1\252\3\27\1\43\1\32\20\23\1"+
    "\277\1\243\1\27\1\0\1\167\1\42\2\23\1\120\1\42\2\23\1\50\1\300\12\23\1\24"+
    "\3\41\1\301\1\302\2\27\1\303\1\23\1\151\2\23\1\24\2\23\1\304\1\23\1\76\1\23"+
    "\1\76\4\27\17\23\1\50\10\27\6\23\1\30\20\27\1\305\20\27\3\23\1\30\6\23\1\133"+
    "\1\27\1\245\3\27\4\23\1\27\1\252\3\23\1\50\4\23\1\66\1\306\3\23\1\76\4\23"+
    "\1\115\1\23\1\247\5\27\23\23\1\76\1\0\1\167\4\23\1\115\4\23\1\115\5\23\1\27"+
    "\6\23\1\115\23\27\46\23\1\24\1\27\2\23\1\76\1\27\1\23\23\27\1\76\1\107\4\23"+
    "\1\37\1\307\2\23\1\76\1\27\2\23\1\24\1\27\3\23\1\24\10\27\2\23\1\310\1\27"+
    "\2\23\1\76\1\27\3\23\1\26\10\27\7\23\1\300\10\27\1\311\1\77\1\151\1\42\2\23"+
    "\1\115\1\123\4\27\3\23\1\30\3\23\1\30\4\27\1\23\1\42\2\23\1\312\3\27\6\23"+
    "\1\76\1\27\2\23\1\76\1\27\2\23\1\50\1\27\2\23\1\26\15\27\11\23\1\133\6\27"+
    "\6\23\1\50\1\27\6\23\1\50\41\27\1\231\6\23\1\0\1\166\3\27\1\127\1\0\1\27\1"+
    "\63\1\231\5\23\1\0\1\313\2\27\3\23\1\133\1\0\1\167\1\231\3\23\1\165\1\0\1"+
    "\147\1\0\2\27\4\23\1\314\1\27\1\231\5\23\1\54\1\0\1\315\1\316\1\0\1\317\4"+
    "\27\2\23\1\36\2\23\1\221\1\0\1\204\10\27\1\24\1\250\1\23\1\37\1\23\1\133\5"+
    "\23\1\165\1\0\1\306\1\0\1\167\1\145\1\105\1\106\2\23\1\107\1\131\1\111\1\112"+
    "\1\124\1\144\1\252\1\103\2\203\21\27\6\23\1\202\1\0\1\205\1\50\1\0\1\167\4"+
    "\27\6\23\2\0\1\320\1\27\1\0\1\167\24\27\5\23\1\165\1\51\1\0\1\245\2\27\1\265"+
    "\4\27\6\23\2\0\1\321\1\27\1\0\1\167\4\27\5\23\1\54\1\0\1\27\1\0\1\167\6\27"+
    "\3\23\1\322\1\0\1\2\1\0\1\167\54\27\10\23\1\0\1\167\1\27\1\44\40\27\1\102"+
    "\1\231\4\23\1\54\1\323\1\63\1\27\1\102\1\100\4\23\1\241\1\212\1\0\1\167\4"+
    "\27\7\23\1\133\40\27\1\23\1\107\3\23\1\165\1\166\1\0\1\133\1\27\1\0\1\167"+
    "\2\27\1\41\3\23\1\324\2\0\1\45\1\166\11\27\1\24\1\36\4\23\1\325\1\326\1\213"+
    "\1\27\1\0\1\167\24\27\63\23\1\26\14\27\15\23\1\24\2\27\30\23\1\115\27\27\5"+
    "\23\1\24\72\27\10\23\1\24\67\27\7\23\1\133\3\23\1\24\1\0\1\167\14\27\3\23"+
    "\1\76\1\203\1\27\6\23\1\166\1\27\1\115\1\27\1\0\1\167\1\274\2\23\1\252\2\23"+
    "\56\27\10\23\1\30\1\27\1\102\4\0\1\166\1\27\1\63\1\231\1\23\10\27\1\26\3\27"+
    "\75\23\1\30\2\27\36\23\1\50\41\27\43\23\1\24\12\27\61\23\1\115\40\27\15\23"+
    "\1\50\1\23\1\30\1\23\1\133\1\23\1\327\1\2\127\27\1\330\1\331\2\0\1\332\1\2"+
    "\3\27\1\333\22\27\1\316\67\27\12\23\1\32\10\23\1\32\1\334\1\335\1\23\1\336"+
    "\1\151\7\23\1\37\1\337\2\32\3\23\1\340\1\176\1\41\1\107\51\23\1\76\3\23\1"+
    "\107\2\23\1\214\3\23\1\214\2\23\1\32\3\23\1\32\2\23\1\24\3\23\1\24\3\23\1"+
    "\107\3\23\1\107\2\23\1\214\1\341\14\0\1\166\1\230\5\0\1\203\1\305\1\27\1\342"+
    "\2\27\1\230\1\45\1\0\52\27\1\166\2\0\1\343\1\344\1\306\72\27\30\23\1\30\1"+
    "\27\1\166\5\27\10\23\1\221\1\306\1\0\1\167\24\27\1\151\3\23\1\170\1\42\1\214"+
    "\1\345\1\246\1\346\1\170\1\237\1\170\2\214\1\126\1\23\1\36\1\23\1\115\1\347"+
    "\1\36\1\23\1\115\50\27\32\23\1\24\5\27\106\23\1\30\1\27\33\23\1\76\120\23"+
    "\1\26\1\27\146\23\1\133\3\27\3\23\1\76\74\27\1\125\3\27\14\0\20\27\36\0\2"+
    "\27");

  /* The ZZ_CMAP_A table has 1856 entries */
  static final char ZZ_CMAP_A[] = zzUnpackCMap(
    "\11\3\2\1\1\0\2\1\6\3\4\0\1\1\1\65\1\21\1\0\1\2\1\77\1\74\1\24\1\100\1\101"+
    "\1\73\1\72\1\104\1\17\1\15\1\43\1\10\3\30\4\31\2\4\1\42\1\0\1\66\1\64\1\67"+
    "\1\71\1\33\1\56\1\12\1\6\1\14\1\16\1\13\5\2\1\7\2\2\1\52\1\20\2\2\1\47\4\2"+
    "\1\11\2\2\1\102\1\22\1\103\1\76\1\5\1\23\1\34\1\26\1\46\1\36\1\50\1\27\1\55"+
    "\1\62\1\41\2\2\1\45\1\44\1\35\1\40\1\60\1\2\1\37\1\51\1\25\1\32\1\63\1\54"+
    "\1\61\1\57\1\53\1\0\1\75\1\0\1\70\1\3\2\0\4\2\4\0\1\2\2\0\1\3\7\0\1\2\4\0"+
    "\1\2\5\0\17\2\1\0\2\2\4\0\4\2\16\0\5\2\7\0\1\2\1\0\1\2\1\0\5\2\1\0\2\2\2\0"+
    "\4\2\1\0\1\2\6\0\1\2\1\0\3\2\1\0\1\2\1\0\4\2\1\0\13\2\1\0\3\2\1\0\5\3\2\0"+
    "\6\2\1\0\7\2\1\0\1\2\15\0\1\2\1\0\15\3\1\0\1\3\1\0\2\3\1\0\2\3\1\0\1\3\3\2"+
    "\5\0\6\3\5\0\1\2\4\0\3\3\1\0\1\3\3\0\3\2\7\3\4\0\2\2\1\3\13\2\1\0\1\2\7\3"+
    "\2\2\2\3\1\0\4\3\2\2\2\3\3\2\2\0\1\2\7\0\1\3\1\2\1\3\6\2\3\3\2\0\11\2\3\3"+
    "\1\2\6\0\2\3\6\2\4\3\2\2\2\0\2\3\1\2\11\3\1\2\3\3\1\2\5\3\2\0\1\2\3\3\4\0"+
    "\6\2\6\0\10\3\6\2\3\3\1\2\2\3\1\2\7\3\2\2\2\3\2\0\2\3\1\2\3\3\1\0\10\2\2\0"+
    "\2\2\2\0\6\2\1\0\7\2\1\0\1\2\3\0\4\2\2\0\1\3\1\2\7\3\2\0\2\3\2\0\3\3\1\2\5"+
    "\0\2\2\1\0\5\2\7\0\2\2\4\0\3\3\1\0\6\2\4\0\2\2\1\0\2\2\1\0\2\2\1\0\2\2\2\0"+
    "\1\3\1\0\5\3\4\0\2\3\2\0\3\3\3\0\1\3\7\0\4\2\1\0\1\2\7\0\4\3\3\2\1\3\2\0\1"+
    "\2\1\0\2\2\1\0\3\2\2\3\1\0\3\3\2\0\1\2\10\0\1\2\6\3\2\0\1\3\1\2\1\0\6\2\3"+
    "\0\3\2\1\0\4\2\3\0\2\2\1\0\1\2\1\0\4\2\4\0\5\3\3\0\3\3\1\0\4\3\2\0\1\2\6\0"+
    "\5\3\1\0\5\2\3\0\1\2\7\3\1\0\2\3\5\0\2\3\1\0\4\2\1\0\3\2\1\0\2\2\5\0\3\2\2"+
    "\3\1\2\3\3\1\0\4\3\1\2\5\0\3\2\1\3\2\0\2\3\1\0\7\2\1\0\1\2\4\0\1\3\4\0\6\3"+
    "\1\0\1\3\3\0\2\3\4\0\1\2\1\3\2\2\7\3\4\0\10\2\10\3\1\0\2\3\7\0\2\2\1\0\1\2"+
    "\2\0\2\2\1\0\1\2\2\0\1\2\6\0\4\2\1\0\3\2\1\0\1\2\1\0\1\2\2\0\2\2\1\0\3\2\2"+
    "\3\1\0\2\3\1\2\2\0\5\2\1\0\1\2\1\0\2\3\2\0\4\2\5\0\1\3\1\0\1\3\1\0\1\3\4\0"+
    "\2\3\5\2\10\3\11\0\1\3\1\0\7\3\1\2\2\3\4\2\3\3\1\2\3\3\2\2\7\3\3\2\4\3\5\2"+
    "\14\3\1\2\1\3\3\2\1\0\7\2\2\0\3\3\2\2\3\3\3\0\2\2\2\3\4\0\1\2\1\0\2\3\4\0"+
    "\4\2\10\3\3\0\1\2\3\0\2\2\1\3\5\0\4\3\1\0\5\2\2\3\2\2\1\3\1\2\5\0\5\3\3\2"+
    "\3\0\10\3\5\2\2\3\3\0\3\2\3\3\1\0\5\3\4\2\1\3\4\2\3\3\2\2\3\3\1\0\5\3\1\0"+
    "\1\2\1\0\1\2\1\0\1\2\1\0\1\2\2\0\3\2\1\0\6\2\2\0\2\2\2\0\5\3\5\0\1\2\4\0\1"+
    "\3\3\0\4\3\11\0\1\2\4\0\1\2\1\0\5\2\2\0\1\2\1\0\4\2\1\0\3\2\2\0\4\2\5\0\5"+
    "\2\4\0\1\2\4\0\4\2\3\3\2\2\5\0\2\3\2\0\3\2\6\3\1\0\3\2\1\3\3\2\1\3\4\2\1\3"+
    "\4\2\3\0\1\2\1\0\1\2\2\0\5\2\1\3\2\2\2\3\5\2\1\0\4\2\2\3\4\0\1\2\3\3\2\2\1"+
    "\3\5\2\2\3\3\0\3\2\4\0\3\2\2\3\2\0\6\2\1\0\3\3\1\0\2\3\5\0\5\2\5\0\1\2\1\3"+
    "\3\2\1\0\2\2\1\0\7\2\2\0\1\3\6\0\2\2\2\0\3\2\3\0\2\2\3\0\2\2\2\0\3\3\4\0\3"+
    "\2\1\0\2\2\1\0\1\2\5\0\1\3\2\0\3\3\5\0\1\2\3\0\1\2\2\0\4\2\1\0\2\2\2\0\1\2"+
    "\3\3\1\0\2\3\1\0\5\2\2\3\1\0\3\3\2\0\1\3\2\0\3\2\1\3\2\0\1\2\1\0\1\3\4\2\5"+
    "\0\3\3\3\0\2\3\1\2\1\0\1\2\3\0\4\3\2\2\1\0\1\2\1\3\3\0\1\2\3\0\2\2\3\0\5\3"+
    "\1\2\4\3\3\0\6\3\1\2\6\3\3\0\1\3\1\0\2\3\1\0\1\3\2\2\3\0\2\3\6\0\5\3\3\0\6"+
    "\3\2\0\3\3\2\0\4\3\4\0\1\2\2\0\2\2\2\0\4\2\1\0\4\2\1\0\1\2\1\0\6\2\2\0\5\2"+
    "\1\0\4\2\1\0\4\2\2\0\2\3\4\0\1\3\3\0\1\3\2\0\7\3\1\0\2\3\1\0\2\3\1\0\1\2\1"+
    "\0\1\2\5\0\1\2\1\0\1\2\1\0\3\2\1\0\3\2\1\0\3\2");

  /** 
   * Translates DFA states to action switch labels.
   */
  private static final int [] ZZ_ACTION = zzUnpackAction();

  private static final String ZZ_ACTION_PACKED_0 =
    "\1\0\1\1\1\2\1\3\2\4\1\5\1\6\3\1"+
    "\3\3\1\1\3\3\1\7\1\10\4\3\1\11\1\12"+
    "\1\13\1\14\1\15\1\16\1\17\1\20\1\21\1\22"+
    "\1\23\1\24\1\25\1\26\1\27\1\30\1\31\1\32"+
    "\1\33\3\34\2\4\1\35\1\0\1\36\5\0\5\3"+
    "\13\0\4\3\1\37\5\3\1\40\1\41\1\42\1\43"+
    "\1\44\1\45\1\46\1\47\1\50\1\34\1\4\3\0"+
    "\1\51\3\0\5\3\17\0\3\3\1\52\6\3\1\53"+
    "\4\0\1\54\1\3\1\55\2\3\31\0\1\56\3\3"+
    "\1\57\1\3\1\60\1\3\1\61\3\0\1\3\1\62"+
    "\1\63\26\0\2\64\5\0\3\3\1\65\1\66\3\0"+
    "\1\3\27\0\1\64\4\0\1\67\2\3\1\70\25\0"+
    "\1\64\4\0\1\71\1\3\23\0\1\64\2\0\1\3"+
    "\16\0\1\64\2\0\1\3\11\0\1\64\2\0\1\72"+
    "\4\0\1\64\20\0";

  private static int [] zzUnpackAction() {
    int [] result = new int[353];
    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\105\0\212\0\317\0\u0114\0\u0159\0\u019e\0\u01e3"+
    "\0\u0228\0\u026d\0\u02b2\0\u02f7\0\u033c\0\u0381\0\u03c6\0\u040b"+
    "\0\u0450\0\u0495\0\u04da\0\105\0\u051f\0\u0564\0\u05a9\0\u05ee"+
    "\0\u0633\0\u0678\0\u06bd\0\u0702\0\105\0\u0747\0\105\0\105"+
    "\0\u078c\0\u07d1\0\105\0\105\0\105\0\105\0\105\0\105"+
    "\0\105\0\105\0\105\0\105\0\u0816\0\u085b\0\u08a0\0\u08e5"+
    "\0\105\0\u0228\0\105\0\u092a\0\u026d\0\u096f\0\u09b4\0\u09f9"+
    "\0\u0a3e\0\u0a83\0\u0ac8\0\u0b0d\0\u0b52\0\u0b97\0\u0bdc\0\u0c21"+
    "\0\u0c66\0\u0cab\0\u0cf0\0\u0d35\0\u0d7a\0\u0dbf\0\u0e04\0\u0e49"+
    "\0\u0e8e\0\u0ed3\0\u0f18\0\u0f5d\0\105\0\u0fa2\0\u0fe7\0\u102c"+
    "\0\u1071\0\u10b6\0\105\0\105\0\105\0\105\0\105\0\u10fb"+
    "\0\105\0\105\0\105\0\u1140\0\u1185\0\u11ca\0\u120f\0\u1254"+
    "\0\105\0\u1299\0\u12de\0\u1323\0\u1368\0\u13ad\0\u13f2\0\u1437"+
    "\0\u147c\0\u14c1\0\u1506\0\u154b\0\u1590\0\u15d5\0\u161a\0\u165f"+
    "\0\u16a4\0\u16e9\0\u172e\0\u1773\0\u17b8\0\u17fd\0\u1842\0\u1887"+
    "\0\u18cc\0\u1911\0\u1956\0\317\0\u199b\0\u19e0\0\u1a25\0\u1a6a"+
    "\0\u1aaf\0\u1af4\0\105\0\u1b39\0\u1b7e\0\u1bc3\0\u1c08\0\317"+
    "\0\u1c4d\0\317\0\u1c92\0\u1cd7\0\u1d1c\0\u1d61\0\u1da6\0\u1deb"+
    "\0\u1e30\0\u1e75\0\u1eba\0\u1eff\0\u1f44\0\u1f89\0\u1fce\0\u2013"+
    "\0\u2058\0\u209d\0\u20e2\0\u2127\0\u216c\0\u21b1\0\u21f6\0\u223b"+
    "\0\u2280\0\u22c5\0\u230a\0\u234f\0\u2394\0\317\0\u23d9\0\u241e"+
    "\0\u2463\0\317\0\u24a8\0\317\0\u24ed\0\317\0\u2532\0\u2577"+
    "\0\u25bc\0\u2601\0\317\0\317\0\u2646\0\u268b\0\u26d0\0\u2715"+
    "\0\u275a\0\u279f\0\u27e4\0\u2829\0\u286e\0\u28b3\0\u28f8\0\u293d"+
    "\0\u2982\0\u29c7\0\u2a0c\0\u2a51\0\u2a96\0\u2adb\0\u2b20\0\u2b65"+
    "\0\u2baa\0\u2bef\0\u2c34\0\u2c79\0\u2cbe\0\u2d03\0\u2d48\0\u2d8d"+
    "\0\u2dd2\0\u2e17\0\u2e5c\0\u2ea1\0\317\0\317\0\u2ee6\0\u2f2b"+
    "\0\u2f70\0\u2fb5\0\u2ffa\0\u303f\0\u3084\0\u30c9\0\u310e\0\u3153"+
    "\0\u3198\0\u31dd\0\u3222\0\u3267\0\u32ac\0\u32f1\0\u3336\0\u337b"+
    "\0\u33c0\0\u3405\0\u344a\0\u348f\0\u34d4\0\u3519\0\u355e\0\u35a3"+
    "\0\u35e8\0\u362d\0\u3672\0\u36b7\0\u36fc\0\u3741\0\317\0\u3786"+
    "\0\u37cb\0\317\0\u3810\0\u3855\0\u389a\0\u38df\0\u3924\0\u3969"+
    "\0\u39ae\0\u39f3\0\u3a38\0\u3a7d\0\u3ac2\0\u3b07\0\u3b4c\0\u3b91"+
    "\0\u3bd6\0\u3c1b\0\u3c60\0\u3ca5\0\u3cea\0\u3d2f\0\u3d74\0\u3db9"+
    "\0\u3dfe\0\u3e43\0\u3e88\0\u3ecd\0\317\0\u3f12\0\u3f57\0\u3f9c"+
    "\0\u3fe1\0\u4026\0\u406b\0\u40b0\0\u40f5\0\u413a\0\u417f\0\u41c4"+
    "\0\u4209\0\u424e\0\u4293\0\u42d8\0\u431d\0\u4362\0\u43a7\0\u43ec"+
    "\0\u4431\0\u4476\0\u44bb\0\u4500\0\u4545\0\u458a\0\u45cf\0\u4614"+
    "\0\u4659\0\u469e\0\u46e3\0\u4728\0\u476d\0\u47b2\0\u47f7\0\u483c"+
    "\0\u4881\0\u48c6\0\u490b\0\u4950\0\u4995\0\u49da\0\u4a1f\0\u4a64"+
    "\0\u4aa9\0\u4aee\0\u4b33\0\u4b78\0\u4bbd\0\u4c02\0\u4c47\0\u4c8c"+
    "\0\u4cd1\0\u4d16\0\u4d5b\0\317\0\u4da0\0\u4de5\0\u4e2a\0\u4e6f"+
    "\0\u4eb4\0\u4ef9\0\u4f3e\0\u4f83\0\u4fc8\0\u500d\0\u5052\0\u5097"+
    "\0\u50dc\0\u5121\0\u5166\0\u51ab\0\u51f0\0\u5235\0\u527a\0\u52bf"+
    "\0\u5304";

  private static int [] zzUnpackRowMap() {
    int [] result = new int[353];
    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\2\1\3\1\4\1\2\1\5\3\4\1\6\4\4"+
    "\1\7\1\4\1\10\1\4\1\11\1\2\1\12\1\13"+
    "\1\14\1\15\1\16\2\5\1\4\1\17\1\4\1\20"+
    "\1\21\2\4\1\22\1\23\1\24\1\4\1\25\1\26"+
    "\2\4\1\27\11\4\1\30\1\31\1\32\1\33\1\34"+
    "\1\35\1\36\1\37\1\40\1\41\1\42\1\43\1\44"+
    "\1\45\1\46\1\47\1\50\1\51\106\0\1\3\105\0"+
    "\13\4\1\0\1\4\1\0\1\4\4\0\6\4\1\0"+
    "\6\4\2\0\20\4\25\0\2\5\1\0\1\52\1\5"+
    "\2\0\1\53\1\54\1\55\1\56\10\0\1\53\2\5"+
    "\4\0\1\54\6\0\1\52\2\0\1\56\40\0\2\5"+
    "\1\0\1\52\1\5\1\57\1\60\1\53\1\54\1\55"+
    "\1\56\7\0\1\60\1\53\2\5\4\0\1\54\6\0"+
    "\1\52\2\0\1\56\10\0\1\57\27\0\1\55\3\0"+
    "\1\55\17\0\2\55\142\0\1\61\15\0\21\62\1\63"+
    "\1\64\62\62\22\65\1\66\1\63\61\65\22\67\1\70"+
    "\1\0\61\67\2\0\13\4\1\0\1\4\1\0\1\4"+
    "\4\0\6\4\1\0\3\4\1\71\2\4\2\0\20\4"+
    "\23\0\13\4\1\0\1\4\1\0\1\4\4\0\6\4"+
    "\1\0\4\4\1\72\1\4\2\0\13\4\1\73\4\4"+
    "\23\0\13\4\1\0\1\4\1\0\1\4\4\0\6\4"+
    "\1\0\1\74\5\4\2\0\1\4\1\75\16\4\23\0"+
    "\1\76\2\0\3\76\1\0\4\76\1\0\1\76\1\0"+
    "\1\76\4\0\1\77\1\100\1\101\2\0\1\76\1\0"+
    "\1\102\1\76\1\103\2\76\1\104\2\0\1\76\1\105"+
    "\1\106\2\76\1\107\6\76\1\110\3\76\23\0\13\4"+
    "\1\0\1\4\1\0\1\4\4\0\5\4\1\111\1\0"+
    "\6\4\2\0\20\4\23\0\13\4\1\0\1\4\1\0"+
    "\1\4\4\0\6\4\1\0\4\4\1\112\1\4\2\0"+
    "\4\4\1\113\13\4\23\0\13\4\1\0\1\4\1\0"+
    "\1\4\4\0\6\4\1\0\1\4\1\114\4\4\2\0"+
    "\20\4\63\0\1\115\44\0\13\4\1\0\1\4\1\0"+
    "\1\4\4\0\6\4\1\0\4\4\1\116\1\4\2\0"+
    "\20\4\23\0\13\4\1\0\1\4\1\0\1\4\4\0"+
    "\6\4\1\0\6\4\2\0\1\4\1\117\14\4\1\120"+
    "\1\4\23\0\13\4\1\0\1\4\1\0\1\4\4\0"+
    "\6\4\1\0\6\4\2\0\16\4\1\121\1\4\23\0"+
    "\13\4\1\0\1\4\1\0\1\4\4\0\6\4\1\0"+
    "\4\4\1\122\1\4\2\0\20\4\105\0\1\123\104\0"+
    "\1\124\104\0\1\125\1\0\1\126\102\0\1\127\2\0"+
    "\1\130\106\0\1\131\107\0\1\132\105\0\1\133\13\0"+
    "\2\55\2\0\1\55\2\0\1\53\1\54\1\0\1\56"+
    "\10\0\1\53\2\55\4\0\1\54\11\0\1\56\40\0"+
    "\2\134\2\0\1\134\2\0\1\53\1\54\2\0\1\134"+
    "\7\0\1\53\2\134\4\0\1\54\33\0\1\134\16\0"+
    "\3\135\1\52\1\135\1\0\3\135\1\136\1\135\7\0"+
    "\4\135\2\0\1\135\1\0\1\135\6\0\1\52\1\135"+
    "\1\0\1\135\5\0\1\135\32\0\2\60\1\0\1\52"+
    "\1\60\17\0\2\60\13\0\1\52\47\0\1\62\10\0"+
    "\11\62\1\137\2\0\1\62\1\0\1\62\55\0\1\65"+
    "\10\0\11\65\1\140\2\0\1\65\1\0\1\65\71\0"+
    "\1\141\70\0\1\142\10\0\7\67\1\142\1\143\1\144"+
    "\2\0\1\67\1\0\1\67\47\0\13\4\1\0\1\4"+
    "\1\0\1\4\4\0\5\4\1\145\1\0\6\4\2\0"+
    "\20\4\23\0\13\4\1\0\1\4\1\0\1\4\4\0"+
    "\6\4\1\0\4\4\1\146\1\4\2\0\20\4\23\0"+
    "\13\4\1\0\1\4\1\0\1\4\4\0\1\147\5\4"+
    "\1\0\6\4\2\0\20\4\23\0\13\4\1\0\1\4"+
    "\1\0\1\4\4\0\6\4\1\0\6\4\2\0\1\4"+
    "\1\150\16\4\23\0\13\4\1\0\1\4\1\0\1\4"+
    "\4\0\6\4\1\0\4\4\1\151\1\4\2\0\20\4"+
    "\23\0\13\76\1\0\1\76\1\0\1\76\4\0\6\76"+
    "\1\0\6\76\1\152\1\0\20\76\23\0\13\76\1\0"+
    "\1\76\1\0\1\76\4\0\6\76\1\0\3\76\1\153"+
    "\2\76\1\152\1\0\4\76\1\154\6\76\1\155\4\76"+
    "\23\0\13\76\1\0\1\76\1\0\1\76\4\0\6\76"+
    "\1\0\4\76\1\156\1\76\1\152\1\0\20\76\23\0"+
    "\13\76\1\0\1\76\1\0\1\76\4\0\6\76\1\0"+
    "\3\76\1\157\2\76\1\152\1\0\20\76\23\0\13\76"+
    "\1\0\1\76\1\0\1\76\4\0\6\76\1\0\1\76"+
    "\1\160\4\76\1\152\1\0\20\76\23\0\13\76\1\0"+
    "\1\76\1\0\1\76\4\0\6\76\1\0\3\76\1\161"+
    "\1\76\1\162\1\152\1\0\20\76\23\0\13\76\1\0"+
    "\1\76\1\0\1\76\4\0\6\76\1\0\1\76\1\163"+
    "\1\164\3\76\1\152\1\0\20\76\23\0\13\76\1\0"+
    "\1\76\1\0\1\76\4\0\6\76\1\0\1\165\5\76"+
    "\1\152\1\0\20\76\23\0\13\76\1\0\1\76\1\0"+
    "\1\76\4\0\6\76\1\0\4\76\1\166\1\76\1\152"+
    "\1\0\20\76\23\0\13\76\1\0\1\76\1\0\1\76"+
    "\4\0\1\167\5\76\1\0\6\76\1\152\1\0\20\76"+
    "\23\0\13\76\1\0\1\76\1\0\1\76\4\0\6\76"+
    "\1\0\6\76\1\152\1\0\1\76\1\170\16\76\23\0"+
    "\13\4\1\0\1\4\1\0\1\4\4\0\6\4\1\0"+
    "\6\4\2\0\1\4\1\171\16\4\23\0\13\4\1\0"+
    "\1\4\1\0\1\4\4\0\5\4\1\172\1\0\6\4"+
    "\2\0\20\4\23\0\13\4\1\0\1\4\1\0\1\4"+
    "\4\0\2\4\1\173\3\4\1\0\6\4\2\0\20\4"+
    "\23\0\13\4\1\0\1\4\1\0\1\4\4\0\1\174"+
    "\5\4\1\0\6\4\2\0\5\4\1\175\12\4\23\0"+
    "\13\4\1\0\1\4\1\0\1\4\4\0\6\4\1\0"+
    "\1\4\1\176\4\4\2\0\20\4\23\0\13\4\1\0"+
    "\1\4\1\0\1\4\4\0\6\4\1\0\1\177\5\4"+
    "\2\0\20\4\23\0\13\4\1\0\1\4\1\0\1\4"+
    "\4\0\6\4\1\0\1\200\5\4\2\0\20\4\23\0"+
    "\13\4\1\0\1\4\1\0\1\4\4\0\6\4\1\0"+
    "\4\4\1\201\1\4\2\0\20\4\23\0\13\4\1\0"+
    "\1\4\1\0\1\4\4\0\6\4\1\0\5\4\1\202"+
    "\2\0\20\4\110\0\1\203\21\0\2\134\2\0\1\134"+
    "\2\0\1\53\1\54\12\0\1\53\2\134\4\0\1\54"+
    "\52\0\3\135\1\52\1\135\1\0\3\135\1\204\1\135"+
    "\1\0\1\56\5\0\4\135\2\0\1\135\1\0\1\135"+
    "\6\0\1\52\1\135\1\0\1\135\5\0\1\135\1\0"+
    "\1\56\30\0\3\204\1\0\1\204\1\0\3\204\1\0"+
    "\1\204\7\0\4\204\2\0\1\204\1\0\1\204\7\0"+
    "\1\204\1\0\1\204\5\0\1\204\32\0\1\205\1\0"+
    "\1\205\1\0\1\205\1\0\3\205\1\0\1\205\7\0"+
    "\4\205\2\0\1\205\1\0\1\205\7\0\1\205\1\0"+
    "\1\205\5\0\1\205\32\0\1\206\1\0\1\206\1\0"+
    "\1\206\1\0\3\206\1\0\1\206\7\0\4\206\2\0"+
    "\1\206\1\0\1\206\7\0\1\206\1\0\1\206\5\0"+
    "\1\206\36\0\1\143\13\0\1\141\3\0\2\143\63\0"+
    "\1\67\13\0\1\141\3\0\2\67\57\0\1\207\1\0"+
    "\1\207\1\0\1\207\1\0\3\207\1\0\1\207\7\0"+
    "\4\207\2\0\1\207\1\0\1\207\7\0\1\207\1\0"+
    "\1\207\5\0\1\207\30\0\13\4\1\0\1\4\1\0"+
    "\1\4\4\0\6\4\1\0\6\4\2\0\4\4\1\210"+
    "\13\4\23\0\13\4\1\0\1\4\1\0\1\4\4\0"+
    "\6\4\1\0\6\4\2\0\1\4\1\211\16\4\23\0"+
    "\13\4\1\0\1\4\1\0\1\4\4\0\6\4\1\0"+
    "\6\4\2\0\4\4\1\212\13\4\23\0\13\4\1\0"+
    "\1\4\1\0\1\4\4\0\6\4\1\0\6\4\2\0"+
    "\5\4\1\213\12\4\23\0\13\4\1\0\1\4\1\0"+
    "\1\4\4\0\6\4\1\0\1\214\5\4\2\0\20\4"+
    "\46\0\1\215\1\216\1\217\4\0\1\220\1\0\1\221"+
    "\2\0\1\222\3\0\1\223\1\224\2\0\1\225\6\0"+
    "\1\226\26\0\13\76\1\0\1\76\1\0\1\76\4\0"+
    "\6\76\1\0\1\227\5\76\1\152\1\0\20\76\23\0"+
    "\13\76\1\0\1\76\1\0\1\76\4\0\6\76\1\0"+
    "\6\76\1\152\1\0\15\76\1\230\2\76\23\0\13\76"+
    "\1\0\1\76\1\0\1\76\4\0\6\76\1\0\6\76"+
    "\1\152\1\0\14\76\1\231\3\76\23\0\13\76\1\0"+
    "\1\76\1\0\1\76\4\0\6\76\1\0\4\76\1\232"+
    "\1\76\1\152\1\0\20\76\23\0\13\76\1\0\1\76"+
    "\1\0\1\76\4\0\6\76\1\0\1\233\5\76\1\152"+
    "\1\0\20\76\23\0\13\76\1\0\1\76\1\0\1\76"+
    "\4\0\6\76\1\0\5\76\1\234\1\152\1\0\20\76"+
    "\23\0\13\76\1\0\1\76\1\0\1\76\4\0\6\76"+
    "\1\0\1\235\5\76\1\152\1\0\20\76\23\0\13\76"+
    "\1\0\1\76\1\0\1\76\4\0\6\76\1\0\6\76"+
    "\1\152\1\0\1\236\17\76\23\0\13\76\1\0\1\76"+
    "\1\0\1\76\4\0\1\237\5\76\1\0\6\76\1\152"+
    "\1\0\20\76\23\0\13\76\1\0\1\76\1\0\1\76"+
    "\4\0\6\76\1\0\6\76\1\152\1\240\20\76\23\0"+
    "\13\76\1\0\1\76\1\0\1\76\4\0\6\76\1\0"+
    "\6\76\1\152\1\0\13\76\1\241\4\76\23\0\13\76"+
    "\1\0\1\76\1\0\1\76\4\0\6\76\1\0\6\76"+
    "\1\152\1\0\1\76\1\242\16\76\23\0\13\76\1\0"+
    "\1\76\1\0\1\76\4\0\6\76\1\0\1\243\2\76"+
    "\1\244\2\76\1\152\1\0\20\76\23\0\13\76\1\0"+
    "\1\76\1\0\1\76\4\0\5\76\1\245\1\0\6\76"+
    "\1\152\1\0\20\76\23\0\13\4\1\0\1\4\1\0"+
    "\1\4\4\0\6\4\1\0\6\4\2\0\1\4\1\246"+
    "\16\4\23\0\13\4\1\0\1\4\1\0\1\4\4\0"+
    "\1\4\1\247\4\4\1\0\6\4\2\0\20\4\23\0"+
    "\13\4\1\0\1\4\1\0\1\4\4\0\6\4\1\0"+
    "\1\250\5\4\2\0\20\4\23\0\13\4\1\0\1\4"+
    "\1\0\1\4\4\0\1\251\5\4\1\0\6\4\2\0"+
    "\20\4\23\0\13\4\1\0\1\4\1\0\1\4\4\0"+
    "\6\4\1\0\6\4\2\0\11\4\1\252\6\4\23\0"+
    "\13\4\1\0\1\4\1\0\1\4\4\0\6\4\1\0"+
    "\6\4\2\0\5\4\1\253\12\4\23\0\13\4\1\0"+
    "\1\4\1\0\1\4\4\0\6\4\1\0\3\4\1\254"+
    "\2\4\2\0\20\4\23\0\13\4\1\0\1\4\1\0"+
    "\1\4\4\0\6\4\1\0\3\4\1\255\2\4\2\0"+
    "\20\4\23\0\13\4\1\0\1\4\1\0\1\4\4\0"+
    "\6\4\1\0\2\4\1\256\3\4\2\0\20\4\25\0"+
    "\3\204\1\0\1\204\1\0\3\204\1\0\1\204\1\0"+
    "\1\56\5\0\4\204\2\0\1\204\1\0\1\204\7\0"+
    "\1\204\1\0\1\204\5\0\1\204\1\0\1\56\30\0"+
    "\1\257\1\0\1\257\1\0\1\257\1\0\3\257\1\0"+
    "\1\257\7\0\4\257\2\0\1\257\1\0\1\257\7\0"+
    "\1\257\1\0\1\257\5\0\1\257\32\0\1\260\1\0"+
    "\1\260\1\0\1\260\1\0\3\260\1\0\1\260\7\0"+
    "\4\260\2\0\1\260\1\0\1\260\7\0\1\260\1\0"+
    "\1\260\5\0\1\260\32\0\1\261\1\0\1\261\1\0"+
    "\1\261\1\0\3\261\1\0\1\261\7\0\4\261\2\0"+
    "\1\261\1\0\1\261\7\0\1\261\1\0\1\261\5\0"+
    "\1\261\30\0\13\4\1\0\1\4\1\0\1\4\4\0"+
    "\6\4\1\0\6\4\2\0\4\4\1\262\13\4\23\0"+
    "\13\4\1\0\1\4\1\0\1\4\4\0\6\4\1\0"+
    "\6\4\2\0\4\4\1\263\13\4\23\0\13\4\1\0"+
    "\1\4\1\0\1\4\4\0\1\264\5\4\1\0\6\4"+
    "\2\0\20\4\60\0\1\265\10\0\1\266\6\0\1\267"+
    "\65\0\1\270\103\0\1\271\102\0\1\272\106\0\1\273"+
    "\1\0\1\274\100\0\1\275\1\276\102\0\1\277\110\0"+
    "\1\300\71\0\1\301\124\0\1\302\41\0\13\76\1\0"+
    "\1\76\1\0\1\76\4\0\6\76\1\0\1\76\1\303"+
    "\4\76\1\152\1\0\20\76\23\0\13\76\1\0\1\76"+
    "\1\0\1\76\4\0\1\164\5\76\1\0\6\76\1\152"+
    "\1\0\20\76\23\0\13\76\1\0\1\76\1\0\1\76"+
    "\4\0\6\76\1\0\6\76\1\152\1\0\4\76\1\304"+
    "\13\76\23\0\13\76\1\0\1\76\1\0\1\76\4\0"+
    "\6\76\1\0\6\76\1\152\1\0\1\76\1\164\16\76"+
    "\23\0\13\76\1\0\1\76\1\0\1\76\4\0\6\76"+
    "\1\0\6\76\1\152\1\0\2\76\1\305\15\76\23\0"+
    "\13\76\1\0\1\76\1\0\1\76\4\0\6\76\1\0"+
    "\6\76\1\152\1\0\1\306\17\76\23\0\13\76\1\0"+
    "\1\76\1\0\1\76\4\0\6\76\1\0\6\76\1\152"+
    "\1\0\10\76\1\307\7\76\23\0\13\76\1\0\1\76"+
    "\1\0\1\76\4\0\6\76\1\0\6\76\1\152\1\0"+
    "\4\76\1\310\13\76\23\0\13\76\1\0\1\76\1\0"+
    "\1\76\4\0\6\76\1\0\6\76\1\152\1\0\4\76"+
    "\1\311\5\76\1\312\5\76\23\0\1\313\2\0\3\313"+
    "\1\0\4\313\1\0\1\313\1\0\1\313\4\0\3\313"+
    "\2\0\1\313\1\0\1\314\5\313\2\0\20\313\23\0"+
    "\13\76\1\0\1\76\1\0\1\76\4\0\6\76\1\0"+
    "\4\76\1\315\1\76\1\152\1\0\20\76\23\0\13\76"+
    "\1\0\1\76\1\0\1\76\4\0\6\76\1\0\4\76"+
    "\1\316\1\76\1\152\1\0\20\76\23\0\13\76\1\0"+
    "\1\76\1\0\1\76\4\0\1\317\5\76\1\0\6\76"+
    "\1\152\1\0\20\76\23\0\13\76\1\0\1\76\1\0"+
    "\1\76\4\0\6\76\1\0\5\76\1\320\1\152\1\0"+
    "\20\76\23\0\13\76\1\0\1\76\1\0\1\76\4\0"+
    "\6\76\1\0\3\76\1\321\2\76\1\152\1\0\20\76"+
    "\23\0\13\4\1\0\1\4\1\0\1\4\4\0\6\4"+
    "\1\0\6\4\2\0\1\4\1\322\16\4\23\0\13\4"+
    "\1\0\1\4\1\0\1\4\4\0\5\4\1\323\1\0"+
    "\6\4\2\0\20\4\23\0\13\4\1\0\1\4\1\0"+
    "\1\4\4\0\6\4\1\0\1\324\5\4\2\0\20\4"+
    "\23\0\13\4\1\0\1\4\1\0\1\4\4\0\6\4"+
    "\1\0\6\4\2\0\5\4\1\325\12\4\23\0\13\4"+
    "\1\0\1\4\1\0\1\4\4\0\1\326\5\4\1\0"+
    "\6\4\2\0\20\4\25\0\1\327\1\0\1\327\1\0"+
    "\1\327\1\0\3\327\1\0\1\327\7\0\4\327\2\0"+
    "\1\327\1\0\1\327\7\0\1\327\1\0\1\327\5\0"+
    "\1\327\32\0\1\330\1\0\1\330\1\0\1\330\1\0"+
    "\3\330\1\0\1\330\7\0\4\330\2\0\1\330\1\0"+
    "\1\330\7\0\1\330\1\0\1\330\5\0\1\330\32\0"+
    "\1\331\1\0\1\331\1\0\1\331\1\0\3\331\1\0"+
    "\1\331\7\0\4\331\2\0\1\331\1\0\1\331\7\0"+
    "\1\331\1\0\1\331\5\0\1\331\30\0\13\4\1\0"+
    "\1\4\1\0\1\4\4\0\6\4\1\0\1\332\5\4"+
    "\2\0\20\4\55\0\1\333\131\0\1\334\103\0\1\335"+
    "\64\0\1\336\100\0\1\337\111\0\1\340\77\0\1\341"+
    "\114\0\1\342\65\0\1\343\122\0\1\240\120\0\1\344"+
    "\72\0\1\345\73\0\1\346\2\0\1\347\77\0\1\350"+
    "\54\0\13\76\1\0\1\76\1\0\1\76\4\0\6\76"+
    "\1\0\6\76\1\152\1\0\5\76\1\351\12\76\23\0"+
    "\13\76\1\0\1\76\1\0\1\76\4\0\6\76\1\0"+
    "\2\76\1\352\3\76\1\152\1\0\20\76\23\0\13\76"+
    "\1\0\1\76\1\0\1\76\4\0\1\353\5\76\1\0"+
    "\6\76\1\152\1\0\20\76\23\0\13\76\1\0\1\76"+
    "\1\0\1\76\4\0\6\76\1\0\1\354\5\76\1\152"+
    "\1\240\20\76\23\0\13\76\1\0\1\76\1\0\1\76"+
    "\4\0\6\76\1\0\1\355\5\76\1\152\1\0\20\76"+
    "\23\0\13\76\1\0\1\76\1\0\1\76\4\0\6\76"+
    "\1\0\1\76\1\356\4\76\1\152\1\0\20\76\23\0"+
    "\13\76\1\0\1\76\1\0\1\76\4\0\6\76\1\0"+
    "\3\76\1\357\2\76\1\152\1\0\11\76\1\360\6\76"+
    "\23\0\13\76\1\0\1\76\1\0\1\76\4\0\6\76"+
    "\1\0\3\76\1\361\2\76\1\152\1\0\20\76\23\0"+
    "\13\313\1\0\1\313\1\0\1\313\4\0\6\313\1\0"+
    "\6\313\2\0\20\313\23\0\13\313\1\0\1\313\1\0"+
    "\1\313\4\0\6\313\1\0\1\313\1\362\4\313\2\0"+
    "\20\313\23\0\13\76\1\0\1\76\1\0\1\76\4\0"+
    "\5\76\1\230\1\0\6\76\1\152\1\0\20\76\23\0"+
    "\13\76\1\0\1\76\1\0\1\76\4\0\6\76\1\0"+
    "\3\76\1\363\2\76\1\152\1\0\20\76\23\0\13\76"+
    "\1\0\1\76\1\0\1\76\4\0\6\76\1\0\6\76"+
    "\1\152\1\0\4\76\1\364\13\76\23\0\13\76\1\0"+
    "\1\76\1\0\1\76\4\0\6\76\1\0\1\76\1\365"+
    "\4\76\1\152\1\0\20\76\23\0\13\76\1\0\1\76"+
    "\1\0\1\76\4\0\6\76\1\0\1\366\5\76\1\152"+
    "\1\0\20\76\23\0\13\4\1\0\1\4\1\0\1\4"+
    "\4\0\6\4\1\0\6\4\2\0\4\4\1\367\13\4"+
    "\23\0\13\4\1\0\1\4\1\0\1\4\4\0\6\4"+
    "\1\0\6\4\2\0\1\4\1\370\16\4\23\0\13\4"+
    "\1\0\1\4\1\0\1\4\4\0\6\4\1\0\1\4"+
    "\1\371\4\4\2\0\20\4\25\0\1\62\1\0\1\62"+
    "\1\0\1\62\1\0\3\62\1\0\1\62\7\0\4\62"+
    "\2\0\1\62\1\0\1\62\7\0\1\62\1\0\1\62"+
    "\5\0\1\62\32\0\1\65\1\0\1\65\1\0\1\65"+
    "\1\0\3\65\1\0\1\65\7\0\4\65\2\0\1\65"+
    "\1\0\1\65\7\0\1\65\1\0\1\65\5\0\1\65"+
    "\32\0\1\67\1\0\1\67\1\0\1\67\1\0\3\67"+
    "\1\0\1\67\7\0\4\67\2\0\1\67\1\0\1\67"+
    "\7\0\1\67\1\0\1\67\5\0\1\67\30\0\13\4"+
    "\1\0\1\4\1\0\1\4\4\0\6\4\1\0\1\4"+
    "\1\372\4\4\2\0\20\4\56\0\1\373\74\0\1\276"+
    "\127\0\1\374\101\0\1\276\105\0\1\375\102\0\1\376"+
    "\114\0\1\377\100\0\1\u0100\104\0\1\u0101\5\0\1\u0102"+
    "\66\0\1\u0103\104\0\1\u0104\71\0\1\u0105\120\0\1\u0106"+
    "\102\0\1\u0107\47\0\13\76\1\0\1\76\1\0\1\76"+
    "\4\0\6\76\1\0\5\76\1\305\1\152\1\0\20\76"+
    "\23\0\13\76\1\0\1\76\1\0\1\76\4\0\6\76"+
    "\1\0\6\76\1\152\1\0\12\76\1\312\5\76\23\0"+
    "\13\76\1\0\1\76\1\0\1\76\4\0\6\76\1\0"+
    "\5\76\1\u0108\1\152\1\0\20\76\23\0\13\76\1\0"+
    "\1\76\1\0\1\76\4\0\1\u0109\5\76\1\0\6\76"+
    "\1\152\1\0\20\76\23\0\13\76\1\0\1\76\1\0"+
    "\1\76\4\0\1\76\1\u010a\4\76\1\0\6\76\1\152"+
    "\1\0\20\76\23\0\13\76\1\0\1\76\1\0\1\76"+
    "\4\0\6\76\1\0\6\76\1\152\1\240\3\76\1\u010b"+
    "\2\76\1\u010c\11\76\23\0\13\76\1\0\1\76\1\0"+
    "\1\76\4\0\6\76\1\0\6\76\1\152\1\0\14\76"+
    "\1\u010d\3\76\23\0\13\76\1\0\1\76\1\0\1\76"+
    "\4\0\6\76\1\0\6\76\1\152\1\0\4\76\1\u010e"+
    "\13\76\23\0\13\76\1\0\1\76\1\0\1\76\4\0"+
    "\6\76\1\0\3\76\1\u010f\2\76\1\152\1\0\20\76"+
    "\23\0\13\313\1\0\1\313\1\0\1\313\4\0\6\313"+
    "\1\0\2\313\1\u0110\3\313\2\0\20\313\23\0\13\76"+
    "\1\0\1\76\1\0\1\76\4\0\6\76\1\0\6\76"+
    "\1\152\1\240\3\76\1\u0111\14\76\23\0\5\76\1\u0112"+
    "\5\76\1\0\1\76\1\0\1\76\4\0\6\76\1\0"+
    "\6\76\1\152\1\0\20\76\23\0\13\76\1\0\1\76"+
    "\1\0\1\76\4\0\6\76\1\0\6\76\1\152\1\0"+
    "\11\76\1\u0113\6\76\23\0\13\76\1\0\1\76\1\0"+
    "\1\76\4\0\6\76\1\0\6\76\1\152\1\0\1\76"+
    "\1\u0114\16\76\23\0\13\4\1\0\1\4\1\0\1\4"+
    "\4\0\1\u0115\5\4\1\0\6\4\2\0\20\4\23\0"+
    "\13\4\1\0\1\4\1\0\1\4\4\0\6\4\1\0"+
    "\6\4\2\0\2\4\1\u0116\15\4\72\0\1\u0117\71\0"+
    "\1\u0118\73\0\1\u0119\113\0\1\u011a\6\0\1\240\75\0"+
    "\1\u011b\105\0\1\u011c\106\0\1\u011d\15\0\1\u011e\66\0"+
    "\1\u011f\77\0\1\334\111\0\1\u0120\115\0\1\u0121\71\0"+
    "\1\u0122\103\0\1\u0123\52\0\13\76\1\0\1\76\1\0"+
    "\1\76\4\0\6\76\1\0\4\76\1\u0124\1\76\1\152"+
    "\1\0\20\76\23\0\13\76\1\0\1\76\1\0\1\76"+
    "\4\0\6\76\1\0\4\76\1\u010e\1\76\1\152\1\0"+
    "\20\76\23\0\13\76\1\0\1\76\1\0\1\76\4\0"+
    "\6\76\1\0\6\76\1\152\1\0\1\76\1\u0125\16\76"+
    "\23\0\13\76\1\0\1\76\1\0\1\76\4\0\6\76"+
    "\1\0\5\76\1\u0126\1\152\1\0\20\76\23\0\13\76"+
    "\1\0\1\76\1\0\1\76\4\0\2\76\1\u0127\3\76"+
    "\1\0\6\76\1\152\1\0\20\76\23\0\13\76\1\0"+
    "\1\76\1\0\1\76\4\0\6\76\1\0\4\76\1\u0128"+
    "\1\76\1\152\1\0\20\76\23\0\13\76\1\0\1\76"+
    "\1\0\1\76\4\0\6\76\1\0\3\76\1\164\2\76"+
    "\1\152\1\0\20\76\23\0\13\76\1\0\1\76\1\0"+
    "\1\76\4\0\6\76\1\0\1\u0129\5\76\1\152\1\0"+
    "\20\76\23\0\13\313\1\0\1\313\1\0\1\313\4\0"+
    "\6\313\1\0\3\313\1\u012a\2\313\2\0\20\313\23\0"+
    "\13\76\1\0\1\76\1\0\1\76\4\0\1\u012b\5\76"+
    "\1\0\6\76\1\152\1\0\20\76\23\0\13\76\1\0"+
    "\1\76\1\0\1\76\4\0\6\76\1\0\5\76\1\u012c"+
    "\1\152\1\0\20\76\23\0\13\76\1\0\1\76\1\0"+
    "\1\76\4\0\6\76\1\0\6\76\1\152\1\240\12\76"+
    "\1\312\5\76\23\0\13\76\1\0\1\76\1\0\1\76"+
    "\4\0\6\76\1\0\6\76\1\152\1\0\5\76\1\164"+
    "\12\76\23\0\13\4\1\0\1\4\1\0\1\4\4\0"+
    "\6\4\1\0\6\4\2\0\4\4\1\u012d\13\4\62\0"+
    "\1\375\121\0\1\u0102\67\0\1\u012e\70\0\1\u012f\105\0"+
    "\1\u0130\121\0\1\240\3\0\1\u0131\2\0\1\u0132\112\0"+
    "\1\u0133\74\0\1\u0134\73\0\1\u0135\110\0\1\240\3\0"+
    "\1\u0136\44\0\1\u0137\152\0\1\u0138\74\0\1\u0139\41\0"+
    "\13\76\1\0\1\76\1\0\1\76\4\0\6\76\1\0"+
    "\1\76\1\164\4\76\1\152\1\0\20\76\23\0\13\76"+
    "\1\0\1\76\1\0\1\76\4\0\6\76\1\0\6\76"+
    "\1\152\1\0\4\76\1\164\13\76\23\0\13\76\1\0"+
    "\1\76\1\0\1\76\4\0\6\76\1\0\6\76\1\152"+
    "\1\0\7\76\1\u0125\10\76\23\0\13\76\1\0\1\76"+
    "\1\0\1\76\4\0\2\76\1\u013a\3\76\1\0\6\76"+
    "\1\152\1\0\20\76\23\0\13\76\1\0\1\76\1\0"+
    "\1\76\4\0\6\76\1\0\6\76\1\152\1\0\1\76"+
    "\1\u013b\16\76\23\0\13\76\1\0\1\76\1\0\1\76"+
    "\4\0\6\76\1\0\6\76\1\152\1\0\13\76\1\164"+
    "\4\76\23\0\13\313\1\0\1\313\1\0\1\313\4\0"+
    "\6\313\1\0\4\313\1\u013c\1\313\2\0\20\313\23\0"+
    "\13\76\1\0\1\76\1\0\1\76\4\0\6\76\1\0"+
    "\1\u013d\5\76\1\152\1\0\20\76\23\0\13\76\1\0"+
    "\1\76\1\0\1\76\4\0\6\76\1\0\6\76\1\152"+
    "\1\0\5\76\1\u013e\12\76\23\0\13\4\1\0\1\4"+
    "\1\0\1\4\4\0\6\4\1\0\4\4\1\u013f\1\4"+
    "\2\0\20\4\61\0\1\u0140\104\0\1\u0134\111\0\1\u0141"+
    "\100\0\1\u0142\72\0\1\u0143\115\0\1\u0144\103\0\1\276"+
    "\101\0\1\u0145\75\0\1\u0146\120\0\1\u0147\106\0\1\240"+
    "\12\0\1\u0102\77\0\1\276\35\0\13\76\1\0\1\76"+
    "\1\0\1\76\4\0\6\76\1\0\6\76\1\152\1\0"+
    "\5\76\1\u0148\12\76\23\0\13\76\1\0\1\76\1\0"+
    "\1\76\4\0\6\76\1\0\1\354\5\76\1\152\1\0"+
    "\20\76\23\0\13\313\1\0\1\313\1\0\1\313\4\0"+
    "\6\313\1\0\5\313\1\u0149\2\0\20\313\23\0\13\76"+
    "\1\0\1\76\1\0\1\76\4\0\1\u014a\5\76\1\0"+
    "\6\76\1\152\1\0\20\76\23\0\13\76\1\0\1\76"+
    "\1\0\1\76\4\0\1\u014b\5\76\1\0\6\76\1\152"+
    "\1\0\20\76\23\0\13\4\1\0\1\4\1\0\1\4"+
    "\4\0\2\4\1\u014c\3\4\1\0\6\4\2\0\20\4"+
    "\56\0\1\276\117\0\1\276\107\0\1\u0141\60\0\1\u014d"+
    "\122\0\1\u014e\116\0\1\276\61\0\1\u014f\121\0\1\u0150"+
    "\35\0\13\76\1\0\1\76\1\0\1\76\4\0\6\76"+
    "\1\0\6\76\1\152\1\0\4\76\1\230\13\76\23\0"+
    "\13\313\1\0\1\313\1\0\1\313\4\0\6\313\1\0"+
    "\2\313\1\u0151\3\313\2\0\20\313\23\0\13\76\1\0"+
    "\1\76\1\0\1\76\4\0\6\76\1\0\6\76\1\152"+
    "\1\0\4\76\1\u0152\13\76\23\0\13\76\1\0\1\76"+
    "\1\0\1\76\4\0\6\76\1\0\6\76\1\152\1\0"+
    "\12\76\1\u0153\5\76\72\0\1\u0154\67\0\1\u011a\75\0"+
    "\1\u0155\104\0\1\u0156\61\0\13\313\1\0\1\313\1\0"+
    "\1\313\4\0\6\313\1\0\6\313\1\u0157\1\0\20\313"+
    "\23\0\5\76\1\u0158\5\76\1\0\1\76\1\0\1\76"+
    "\4\0\6\76\1\0\6\76\1\152\1\0\20\76\23\0"+
    "\13\76\1\0\1\76\1\0\1\76\4\0\6\76\1\0"+
    "\1\76\1\u0159\4\76\1\152\1\0\20\76\71\0\1\334"+
    "\104\0\1\u015a\112\0\1\u015b\30\0\1\313\2\0\3\313"+
    "\1\0\4\313\1\0\1\313\1\0\1\313\4\0\3\313"+
    "\2\0\1\313\1\0\6\313\2\0\20\313\23\0\13\76"+
    "\1\0\1\76\1\0\1\76\4\0\6\76\1\0\5\76"+
    "\1\u015c\1\152\1\0\20\76\23\0\13\76\1\0\1\76"+
    "\1\0\1\76\4\0\6\76\1\0\5\76\1\u015d\1\152"+
    "\1\0\20\76\30\0\1\u015e\132\0\1\u015f\51\0\13\76"+
    "\1\0\1\76\1\0\1\76\4\0\6\76\1\0\6\76"+
    "\1\152\1\0\5\76\1\230\12\76\23\0\13\76\1\0"+
    "\1\76\1\0\1\76\4\0\6\76\1\0\6\76\1\152"+
    "\1\0\1\u013b\17\76\62\0\1\u0160\104\0\1\u0161\114\0"+
    "\1\334\77\0\1\u014e\40\0";

  private static int [] zzUnpackTrans() {
    int [] result = new int[21321];
    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;

  /* 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 =
    "\1\0\1\11\21\1\1\11\10\1\1\11\1\1\2\11"+
    "\2\1\12\11\4\1\1\11\1\0\1\11\5\0\5\1"+
    "\13\0\4\1\1\11\5\1\5\11\1\1\3\11\2\1"+
    "\3\0\1\11\3\0\5\1\17\0\12\1\1\11\4\0"+
    "\5\1\31\0\11\1\3\0\3\1\26\0\2\1\5\0"+
    "\5\1\3\0\1\1\27\0\1\1\4\0\4\1\25\0"+
    "\1\1\4\0\2\1\23\0\1\1\2\0\1\1\16\0"+
    "\1\1\2\0\1\1\11\0\1\1\2\0\1\1\4\0"+
    "\1\1\20\0";

  private static int [] zzUnpackAttribute() {
    int [] result = new int[353];
    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: */
  public _DbLexer() {
    this((java.io.Reader)null);
  }


  /**
   * Creates a new scanner
   *
   * @param   in  the java.io.Reader to read input from.
   */
  public _DbLexer(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;
    yybegin(initialState);
  }

  /**
   * Refills the input buffer.
   *
   * @return      {@code false}, 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 {@code pos} 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 occurred 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;

      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: 
            { return com.intellij.psi.TokenType.BAD_CHARACTER;
            } 
            // fall through
          case 59: break;
          case 2: 
            { return com.intellij.psi.TokenType.WHITE_SPACE;
            } 
            // fall through
          case 60: break;
          case 3: 
            { return IDENTIFIER;
            } 
            // fall through
          case 61: break;
          case 4: 
            { return INTEGER_LITERAL;
            } 
            // fall through
          case 62: break;
          case 5: 
            { return DOT;
            } 
            // fall through
          case 63: break;
          case 6: 
            { return MINUS;
            } 
            // fall through
          case 64: break;
          case 7: 
            { return COLON;
            } 
            // fall through
          case 65: break;
          case 8: 
            { return DIV;
            } 
            // fall through
          case 66: break;
          case 9: 
            { return EQ;
            } 
            // fall through
          case 67: break;
          case 10: 
            { return EXCL;
            } 
            // fall through
          case 68: break;
          case 11: 
            { return LT;
            } 
            // fall through
          case 69: break;
          case 12: 
            { return GT;
            } 
            // fall through
          case 70: break;
          case 13: 
            { return TILDE;
            } 
            // fall through
          case 71: break;
          case 14: 
            { return QUEST;
            } 
            // fall through
          case 72: break;
          case 15: 
            { return PLUS;
            } 
            // fall through
          case 73: break;
          case 16: 
            { return ASTERISK;
            } 
            // fall through
          case 74: break;
          case 17: 
            { return AND;
            } 
            // fall through
          case 75: break;
          case 18: 
            { return OR;
            } 
            // fall through
          case 76: break;
          case 19: 
            { return XOR;
            } 
            // fall through
          case 77: break;
          case 20: 
            { return PERC;
            } 
            // fall through
          case 78: break;
          case 21: 
            { return LPARENTH;
            } 
            // fall through
          case 79: break;
          case 22: 
            { return RPARENTH;
            } 
            // fall through
          case 80: break;
          case 23: 
            { return LBRACKET;
            } 
            // fall through
          case 81: break;
          case 24: 
            { return RBRACKET;
            } 
            // fall through
          case 82: break;
          case 25: 
            { return COMMA;
            } 
            // fall through
          case 83: break;
          case 26: 
            { return LONG_LITERAL;
            } 
            // fall through
          case 84: break;
          case 27: 
            { return FLOAT_LITERAL;
            } 
            // fall through
          case 85: break;
          case 28: 
            { return DOUBLE_LITERAL;
            } 
            // fall through
          case 86: break;
          case 29: 
            { return LAMBDA;
            } 
            // fall through
          case 87: break;
          case 30: 
            { return STRING_LITERAL;
            } 
            // fall through
          case 88: break;
          case 31: 
            { return COLONCOLON;
            } 
            // fall through
          case 89: break;
          case 32: 
            { return EQEQ;
            } 
            // fall through
          case 90: break;
          case 33: 
            { return NE;
            } 
            // fall through
          case 91: break;
          case 34: 
            { return LE;
            } 
            // fall through
          case 92: break;
          case 35: 
            { return LTLT;
            } 
            // fall through
          case 93: break;
          case 36: 
            { return GTEQ;
            } 
            // fall through
          case 94: break;
          case 37: 
            { return GTGT;
            } 
            // fall through
          case 95: break;
          case 38: 
            { return QUESTQUEST;
            } 
            // fall through
          case 96: break;
          case 39: 
            { return ANDAND;
            } 
            // fall through
          case 97: break;
          case 40: 
            { return OROR;
            } 
            // fall through
          case 98: break;
          case 41: 
            { return CHARACTER_LITERAL;
            } 
            // fall through
          case 99: break;
          case 42: 
            { return INT_KEYWORD;
            } 
            // fall through
          case 100: break;
          case 43: 
            { return GTGTGT;
            } 
            // fall through
          case 101: break;
          case 44: 
            { return TRUE;
            } 
            // fall through
          case 102: break;
          case 45: 
            { return BYTE_KEYWORD;
            } 
            // fall through
          case 103: break;
          case 46: 
            { return NULL;
            } 
            // fall through
          case 104: break;
          case 47: 
            { return LONG_KEYWORD;
            } 
            // fall through
          case 105: break;
          case 48: 
            { return CHAR_KEYWORD;
            } 
            // fall through
          case 106: break;
          case 49: 
            { return VOID_KEYWORD;
            } 
            // fall through
          case 107: break;
          case 50: 
            { return FALSE;
            } 
            // fall through
          case 108: break;
          case 51: 
            { return FLOAT_KEYWORD;
            } 
            // fall through
          case 109: break;
          case 52: 
            { return RESOURCE_REFERENCE;
            } 
            // fall through
          case 110: break;
          case 53: 
            { return CLASS_KEYWORD;
            } 
            // fall through
          case 111: break;
          case 54: 
            { return SHORT_KEYWORD;
            } 
            // fall through
          case 112: break;
          case 55: 
            { return DOUBLE_KEYWORD;
            } 
            // fall through
          case 113: break;
          case 56: 
            { return BOOLEAN_KEYWORD;
            } 
            // fall through
          case 114: break;
          case 57: 
            { return DEFAULT_KEYWORD;
            } 
            // fall through
          case 115: break;
          case 58: 
            { return INSTANCEOF_KEYWORD;
            } 
            // fall through
          case 116: break;
          default:
            zzScanError(ZZ_NO_MATCH);
          }
      }
    }
  }


}
