package org.eclipse.osbp.dsl.dto.xtext.ide.contentassist.antlr.internal;

// Hack: Use our own Lexer superclass by means of import. 
// Currently there is no other way to specify the superclass for the lexer.
import org.eclipse.xtext.ide.editor.contentassist.antlr.internal.Lexer;


import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;

@SuppressWarnings("all")
public class InternalDtoGrammarLexer extends Lexer {
    public static final int T__144=144;
    public static final int T__143=143;
    public static final int T__146=146;
    public static final int RULE_HEX=5;
    public static final int T__50=50;
    public static final int T__145=145;
    public static final int T__140=140;
    public static final int T__142=142;
    public static final int T__141=141;
    public static final int T__59=59;
    public static final int T__55=55;
    public static final int T__56=56;
    public static final int T__57=57;
    public static final int T__58=58;
    public static final int T__51=51;
    public static final int T__137=137;
    public static final int T__52=52;
    public static final int T__136=136;
    public static final int T__53=53;
    public static final int T__139=139;
    public static final int T__54=54;
    public static final int T__138=138;
    public static final int T__133=133;
    public static final int T__132=132;
    public static final int T__60=60;
    public static final int T__135=135;
    public static final int T__61=61;
    public static final int T__134=134;
    public static final int RULE_ID=4;
    public static final int T__131=131;
    public static final int T__130=130;
    public static final int RULE_INT=6;
    public static final int T__66=66;
    public static final int RULE_ML_COMMENT=9;
    public static final int T__67=67;
    public static final int T__129=129;
    public static final int T__68=68;
    public static final int T__69=69;
    public static final int T__62=62;
    public static final int T__126=126;
    public static final int T__63=63;
    public static final int T__125=125;
    public static final int T__64=64;
    public static final int T__128=128;
    public static final int T__65=65;
    public static final int T__127=127;
    public static final int T__37=37;
    public static final int T__38=38;
    public static final int T__39=39;
    public static final int T__33=33;
    public static final int T__34=34;
    public static final int T__35=35;
    public static final int T__36=36;
    public static final int T__30=30;
    public static final int T__31=31;
    public static final int T__32=32;
    public static final int T__155=155;
    public static final int T__154=154;
    public static final int T__157=157;
    public static final int T__156=156;
    public static final int T__151=151;
    public static final int T__150=150;
    public static final int T__153=153;
    public static final int T__152=152;
    public static final int T__48=48;
    public static final int T__49=49;
    public static final int T__44=44;
    public static final int T__45=45;
    public static final int T__46=46;
    public static final int T__47=47;
    public static final int T__40=40;
    public static final int T__148=148;
    public static final int T__41=41;
    public static final int T__147=147;
    public static final int T__42=42;
    public static final int T__43=43;
    public static final int T__149=149;
    public static final int T__91=91;
    public static final int T__100=100;
    public static final int T__92=92;
    public static final int T__93=93;
    public static final int T__102=102;
    public static final int T__94=94;
    public static final int T__101=101;
    public static final int T__90=90;
    public static final int T__19=19;
    public static final int T__15=15;
    public static final int T__16=16;
    public static final int T__17=17;
    public static final int T__18=18;
    public static final int T__99=99;
    public static final int T__13=13;
    public static final int T__14=14;
    public static final int T__95=95;
    public static final int T__96=96;
    public static final int T__97=97;
    public static final int T__98=98;
    public static final int RULE_DECIMAL=7;
    public static final int T__26=26;
    public static final int T__27=27;
    public static final int T__28=28;
    public static final int T__29=29;
    public static final int T__22=22;
    public static final int T__23=23;
    public static final int T__24=24;
    public static final int T__25=25;
    public static final int T__20=20;
    public static final int T__21=21;
    public static final int T__122=122;
    public static final int T__70=70;
    public static final int T__121=121;
    public static final int T__71=71;
    public static final int T__124=124;
    public static final int T__72=72;
    public static final int T__123=123;
    public static final int T__120=120;
    public static final int RULE_STRING=8;
    public static final int RULE_SL_COMMENT=10;
    public static final int T__77=77;
    public static final int T__119=119;
    public static final int T__78=78;
    public static final int T__118=118;
    public static final int T__79=79;
    public static final int T__73=73;
    public static final int T__115=115;
    public static final int EOF=-1;
    public static final int T__74=74;
    public static final int T__114=114;
    public static final int T__75=75;
    public static final int T__117=117;
    public static final int T__76=76;
    public static final int T__116=116;
    public static final int T__80=80;
    public static final int T__111=111;
    public static final int T__81=81;
    public static final int T__110=110;
    public static final int T__82=82;
    public static final int T__113=113;
    public static final int T__83=83;
    public static final int T__112=112;
    public static final int RULE_WS=11;
    public static final int RULE_ANY_OTHER=12;
    public static final int T__88=88;
    public static final int T__108=108;
    public static final int T__89=89;
    public static final int T__107=107;
    public static final int T__109=109;
    public static final int T__84=84;
    public static final int T__104=104;
    public static final int T__85=85;
    public static final int T__103=103;
    public static final int T__86=86;
    public static final int T__106=106;
    public static final int T__87=87;
    public static final int T__105=105;

    // delegates
    // delegators

    public InternalDtoGrammarLexer() {;} 
    public InternalDtoGrammarLexer(CharStream input) {
        this(input, new RecognizerSharedState());
    }
    public InternalDtoGrammarLexer(CharStream input, RecognizerSharedState state) {
        super(input,state);

    }
    public String getGrammarFileName() { return "InternalDtoGrammar.g"; }

    // $ANTLR start "T__13"
    public final void mT__13() throws RecognitionException {
        try {
            int _type = T__13;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:11:7: ( '=' )
            // InternalDtoGrammar.g:11:9: '='
            {
            match('='); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__13"

    // $ANTLR start "T__14"
    public final void mT__14() throws RecognitionException {
        try {
            int _type = T__14;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:12:7: ( '||' )
            // InternalDtoGrammar.g:12:9: '||'
            {
            match("||"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__14"

    // $ANTLR start "T__15"
    public final void mT__15() throws RecognitionException {
        try {
            int _type = T__15;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:13:7: ( '&&' )
            // InternalDtoGrammar.g:13:9: '&&'
            {
            match("&&"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__15"

    // $ANTLR start "T__16"
    public final void mT__16() throws RecognitionException {
        try {
            int _type = T__16;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:14:7: ( 'cachable' )
            // InternalDtoGrammar.g:14:9: 'cachable'
            {
            match("cachable"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__16"

    // $ANTLR start "T__17"
    public final void mT__17() throws RecognitionException {
        try {
            int _type = T__17;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:15:7: ( 'id' )
            // InternalDtoGrammar.g:15:9: 'id'
            {
            match("id"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__17"

    // $ANTLR start "T__18"
    public final void mT__18() throws RecognitionException {
        try {
            int _type = T__18;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:16:7: ( 'uuid' )
            // InternalDtoGrammar.g:16:9: 'uuid'
            {
            match("uuid"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__18"

    // $ANTLR start "T__19"
    public final void mT__19() throws RecognitionException {
        try {
            int _type = T__19;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:17:7: ( 'transient' )
            // InternalDtoGrammar.g:17:9: 'transient'
            {
            match("transient"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__19"

    // $ANTLR start "T__20"
    public final void mT__20() throws RecognitionException {
        try {
            int _type = T__20;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:18:7: ( 'version' )
            // InternalDtoGrammar.g:18:9: 'version'
            {
            match("version"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__20"

    // $ANTLR start "T__21"
    public final void mT__21() throws RecognitionException {
        try {
            int _type = T__21;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:19:7: ( 'derived' )
            // InternalDtoGrammar.g:19:9: 'derived'
            {
            match("derived"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__21"

    // $ANTLR start "T__22"
    public final void mT__22() throws RecognitionException {
        try {
            int _type = T__22;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:20:7: ( 'collection' )
            // InternalDtoGrammar.g:20:9: 'collection'
            {
            match("collection"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__22"

    // $ANTLR start "T__23"
    public final void mT__23() throws RecognitionException {
        try {
            int _type = T__23;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:21:7: ( 'refers' )
            // InternalDtoGrammar.g:21:9: 'refers'
            {
            match("refers"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__23"

    // $ANTLR start "T__24"
    public final void mT__24() throws RecognitionException {
        try {
            int _type = T__24;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:22:7: ( 'settings' )
            // InternalDtoGrammar.g:22:9: 'settings'
            {
            match("settings"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__24"

    // $ANTLR start "T__25"
    public final void mT__25() throws RecognitionException {
        try {
            int _type = T__25;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:23:7: ( 'lazy' )
            // InternalDtoGrammar.g:23:9: 'lazy'
            {
            match("lazy"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__25"

    // $ANTLR start "T__26"
    public final void mT__26() throws RecognitionException {
        try {
            int _type = T__26;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:24:7: ( 'notnull' )
            // InternalDtoGrammar.g:24:9: 'notnull'
            {
            match("notnull"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__26"

    // $ANTLR start "T__27"
    public final void mT__27() throws RecognitionException {
        try {
            int _type = T__27;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:25:7: ( 'dto' )
            // InternalDtoGrammar.g:25:9: 'dto'
            {
            match("dto"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__27"

    // $ANTLR start "T__28"
    public final void mT__28() throws RecognitionException {
        try {
            int _type = T__28;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:26:7: ( 'date' )
            // InternalDtoGrammar.g:26:9: 'date'
            {
            match("date"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__28"

    // $ANTLR start "T__29"
    public final void mT__29() throws RecognitionException {
        try {
            int _type = T__29;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:27:7: ( 'mapto' )
            // InternalDtoGrammar.g:27:9: 'mapto'
            {
            match("mapto"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__29"

    // $ANTLR start "T__30"
    public final void mT__30() throws RecognitionException {
        try {
            int _type = T__30;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:28:7: ( 'ref' )
            // InternalDtoGrammar.g:28:9: 'ref'
            {
            match("ref"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__30"

    // $ANTLR start "T__31"
    public final void mT__31() throws RecognitionException {
        try {
            int _type = T__31;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:29:7: ( 'cascadeMergePersist' )
            // InternalDtoGrammar.g:29:9: 'cascadeMergePersist'
            {
            match("cascadeMergePersist"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__31"

    // $ANTLR start "T__32"
    public final void mT__32() throws RecognitionException {
        try {
            int _type = T__32;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:30:7: ( 'cascadeRemove' )
            // InternalDtoGrammar.g:30:9: 'cascadeRemove'
            {
            match("cascadeRemove"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__32"

    // $ANTLR start "T__33"
    public final void mT__33() throws RecognitionException {
        try {
            int _type = T__33;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:31:7: ( 'var' )
            // InternalDtoGrammar.g:31:9: 'var'
            {
            match("var"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__33"

    // $ANTLR start "T__34"
    public final void mT__34() throws RecognitionException {
        try {
            int _type = T__34;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:32:7: ( '+' )
            // InternalDtoGrammar.g:32:9: '+'
            {
            match('+'); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__34"

    // $ANTLR start "T__35"
    public final void mT__35() throws RecognitionException {
        try {
            int _type = T__35;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:33:7: ( '-' )
            // InternalDtoGrammar.g:33:9: '-'
            {
            match('-'); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__35"

    // $ANTLR start "T__36"
    public final void mT__36() throws RecognitionException {
        try {
            int _type = T__36;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:34:7: ( '+=' )
            // InternalDtoGrammar.g:34:9: '+='
            {
            match("+="); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__36"

    // $ANTLR start "T__37"
    public final void mT__37() throws RecognitionException {
        try {
            int _type = T__37;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:35:7: ( '-=' )
            // InternalDtoGrammar.g:35:9: '-='
            {
            match("-="); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__37"

    // $ANTLR start "T__38"
    public final void mT__38() throws RecognitionException {
        try {
            int _type = T__38;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:36:7: ( '*=' )
            // InternalDtoGrammar.g:36:9: '*='
            {
            match("*="); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__38"

    // $ANTLR start "T__39"
    public final void mT__39() throws RecognitionException {
        try {
            int _type = T__39;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:37:7: ( '/=' )
            // InternalDtoGrammar.g:37:9: '/='
            {
            match("/="); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__39"

    // $ANTLR start "T__40"
    public final void mT__40() throws RecognitionException {
        try {
            int _type = T__40;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:38:7: ( '%=' )
            // InternalDtoGrammar.g:38:9: '%='
            {
            match("%="); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__40"

    // $ANTLR start "T__41"
    public final void mT__41() throws RecognitionException {
        try {
            int _type = T__41;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:39:7: ( '==' )
            // InternalDtoGrammar.g:39:9: '=='
            {
            match("=="); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__41"

    // $ANTLR start "T__42"
    public final void mT__42() throws RecognitionException {
        try {
            int _type = T__42;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:40:7: ( '!=' )
            // InternalDtoGrammar.g:40:9: '!='
            {
            match("!="); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__42"

    // $ANTLR start "T__43"
    public final void mT__43() throws RecognitionException {
        try {
            int _type = T__43;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:41:7: ( '===' )
            // InternalDtoGrammar.g:41:9: '==='
            {
            match("==="); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__43"

    // $ANTLR start "T__44"
    public final void mT__44() throws RecognitionException {
        try {
            int _type = T__44;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:42:7: ( '!==' )
            // InternalDtoGrammar.g:42:9: '!=='
            {
            match("!=="); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__44"

    // $ANTLR start "T__45"
    public final void mT__45() throws RecognitionException {
        try {
            int _type = T__45;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:43:7: ( '>=' )
            // InternalDtoGrammar.g:43:9: '>='
            {
            match(">="); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__45"

    // $ANTLR start "T__46"
    public final void mT__46() throws RecognitionException {
        try {
            int _type = T__46;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:44:7: ( '>' )
            // InternalDtoGrammar.g:44:9: '>'
            {
            match('>'); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__46"

    // $ANTLR start "T__47"
    public final void mT__47() throws RecognitionException {
        try {
            int _type = T__47;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:45:7: ( '<' )
            // InternalDtoGrammar.g:45:9: '<'
            {
            match('<'); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__47"

    // $ANTLR start "T__48"
    public final void mT__48() throws RecognitionException {
        try {
            int _type = T__48;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:46:7: ( '->' )
            // InternalDtoGrammar.g:46:9: '->'
            {
            match("->"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__48"

    // $ANTLR start "T__49"
    public final void mT__49() throws RecognitionException {
        try {
            int _type = T__49;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:47:7: ( '..<' )
            // InternalDtoGrammar.g:47:9: '..<'
            {
            match("..<"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__49"

    // $ANTLR start "T__50"
    public final void mT__50() throws RecognitionException {
        try {
            int _type = T__50;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:48:7: ( '..' )
            // InternalDtoGrammar.g:48:9: '..'
            {
            match(".."); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__50"

    // $ANTLR start "T__51"
    public final void mT__51() throws RecognitionException {
        try {
            int _type = T__51;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:49:7: ( '=>' )
            // InternalDtoGrammar.g:49:9: '=>'
            {
            match("=>"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__51"

    // $ANTLR start "T__52"
    public final void mT__52() throws RecognitionException {
        try {
            int _type = T__52;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:50:7: ( '<>' )
            // InternalDtoGrammar.g:50:9: '<>'
            {
            match("<>"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__52"

    // $ANTLR start "T__53"
    public final void mT__53() throws RecognitionException {
        try {
            int _type = T__53;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:51:7: ( '?:' )
            // InternalDtoGrammar.g:51:9: '?:'
            {
            match("?:"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__53"

    // $ANTLR start "T__54"
    public final void mT__54() throws RecognitionException {
        try {
            int _type = T__54;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:52:7: ( '*' )
            // InternalDtoGrammar.g:52:9: '*'
            {
            match('*'); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__54"

    // $ANTLR start "T__55"
    public final void mT__55() throws RecognitionException {
        try {
            int _type = T__55;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:53:7: ( '**' )
            // InternalDtoGrammar.g:53:9: '**'
            {
            match("**"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__55"

    // $ANTLR start "T__56"
    public final void mT__56() throws RecognitionException {
        try {
            int _type = T__56;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:54:7: ( '/' )
            // InternalDtoGrammar.g:54:9: '/'
            {
            match('/'); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__56"

    // $ANTLR start "T__57"
    public final void mT__57() throws RecognitionException {
        try {
            int _type = T__57;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:55:7: ( '%' )
            // InternalDtoGrammar.g:55:9: '%'
            {
            match('%'); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__57"

    // $ANTLR start "T__58"
    public final void mT__58() throws RecognitionException {
        try {
            int _type = T__58;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:56:7: ( '!' )
            // InternalDtoGrammar.g:56:9: '!'
            {
            match('!'); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__58"

    // $ANTLR start "T__59"
    public final void mT__59() throws RecognitionException {
        try {
            int _type = T__59;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:57:7: ( '++' )
            // InternalDtoGrammar.g:57:9: '++'
            {
            match("++"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__59"

    // $ANTLR start "T__60"
    public final void mT__60() throws RecognitionException {
        try {
            int _type = T__60;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:58:7: ( '--' )
            // InternalDtoGrammar.g:58:9: '--'
            {
            match("--"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__60"

    // $ANTLR start "T__61"
    public final void mT__61() throws RecognitionException {
        try {
            int _type = T__61;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:59:7: ( '.' )
            // InternalDtoGrammar.g:59:9: '.'
            {
            match('.'); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__61"

    // $ANTLR start "T__62"
    public final void mT__62() throws RecognitionException {
        try {
            int _type = T__62;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:60:7: ( 'val' )
            // InternalDtoGrammar.g:60:9: 'val'
            {
            match("val"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__62"

    // $ANTLR start "T__63"
    public final void mT__63() throws RecognitionException {
        try {
            int _type = T__63;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:61:7: ( 'extends' )
            // InternalDtoGrammar.g:61:9: 'extends'
            {
            match("extends"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__63"

    // $ANTLR start "T__64"
    public final void mT__64() throws RecognitionException {
        try {
            int _type = T__64;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:62:7: ( 'static' )
            // InternalDtoGrammar.g:62:9: 'static'
            {
            match("static"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__64"

    // $ANTLR start "T__65"
    public final void mT__65() throws RecognitionException {
        try {
            int _type = T__65;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:63:7: ( 'import' )
            // InternalDtoGrammar.g:63:9: 'import'
            {
            match("import"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__65"

    // $ANTLR start "T__66"
    public final void mT__66() throws RecognitionException {
        try {
            int _type = T__66;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:64:7: ( 'extension' )
            // InternalDtoGrammar.g:64:9: 'extension'
            {
            match("extension"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__66"

    // $ANTLR start "T__67"
    public final void mT__67() throws RecognitionException {
        try {
            int _type = T__67;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:65:7: ( 'super' )
            // InternalDtoGrammar.g:65:9: 'super'
            {
            match("super"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__67"

    // $ANTLR start "T__68"
    public final void mT__68() throws RecognitionException {
        try {
            int _type = T__68;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:66:7: ( 'false' )
            // InternalDtoGrammar.g:66:9: 'false'
            {
            match("false"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__68"

    // $ANTLR start "T__69"
    public final void mT__69() throws RecognitionException {
        try {
            int _type = T__69;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:67:7: ( 'info' )
            // InternalDtoGrammar.g:67:9: 'info'
            {
            match("info"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__69"

    // $ANTLR start "T__70"
    public final void mT__70() throws RecognitionException {
        try {
            int _type = T__70;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:68:7: ( 'warn' )
            // InternalDtoGrammar.g:68:9: 'warn'
            {
            match("warn"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__70"

    // $ANTLR start "T__71"
    public final void mT__71() throws RecognitionException {
        try {
            int _type = T__71;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:69:7: ( 'error' )
            // InternalDtoGrammar.g:69:9: 'error'
            {
            match("error"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__71"

    // $ANTLR start "T__72"
    public final void mT__72() throws RecognitionException {
        try {
            int _type = T__72;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:70:7: ( 'time' )
            // InternalDtoGrammar.g:70:9: 'time'
            {
            match("time"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__72"

    // $ANTLR start "T__73"
    public final void mT__73() throws RecognitionException {
        try {
            int _type = T__73;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:71:7: ( 'timestamp' )
            // InternalDtoGrammar.g:71:9: 'timestamp'
            {
            match("timestamp"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__73"

    // $ANTLR start "T__74"
    public final void mT__74() throws RecognitionException {
        try {
            int _type = T__74;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:72:7: ( 'package' )
            // InternalDtoGrammar.g:72:9: 'package'
            {
            match("package"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__74"

    // $ANTLR start "T__75"
    public final void mT__75() throws RecognitionException {
        try {
            int _type = T__75;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:73:7: ( 'private' )
            // InternalDtoGrammar.g:73:9: 'private'
            {
            match("private"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__75"

    // $ANTLR start "T__76"
    public final void mT__76() throws RecognitionException {
        try {
            int _type = T__76;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:74:7: ( 'protected' )
            // InternalDtoGrammar.g:74:9: 'protected'
            {
            match("protected"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__76"

    // $ANTLR start "T__77"
    public final void mT__77() throws RecognitionException {
        try {
            int _type = T__77;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:75:7: ( 'public' )
            // InternalDtoGrammar.g:75:9: 'public'
            {
            match("public"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__77"

    // $ANTLR start "T__78"
    public final void mT__78() throws RecognitionException {
        try {
            int _type = T__78;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:76:7: ( '<=' )
            // InternalDtoGrammar.g:76:9: '<='
            {
            match("<="); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__78"

    // $ANTLR start "T__79"
    public final void mT__79() throws RecognitionException {
        try {
            int _type = T__79;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:77:7: ( '0' )
            // InternalDtoGrammar.g:77:9: '0'
            {
            match('0'); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__79"

    // $ANTLR start "T__80"
    public final void mT__80() throws RecognitionException {
        try {
            int _type = T__80;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:78:7: ( '?' )
            // InternalDtoGrammar.g:78:9: '?'
            {
            match('?'); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__80"

    // $ANTLR start "T__81"
    public final void mT__81() throws RecognitionException {
        try {
            int _type = T__81;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:79:7: ( '1' )
            // InternalDtoGrammar.g:79:9: '1'
            {
            match('1'); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__81"

    // $ANTLR start "T__82"
    public final void mT__82() throws RecognitionException {
        try {
            int _type = T__82;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:80:7: ( '{' )
            // InternalDtoGrammar.g:80:9: '{'
            {
            match('{'); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__82"

    // $ANTLR start "T__83"
    public final void mT__83() throws RecognitionException {
        try {
            int _type = T__83;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:81:7: ( '}' )
            // InternalDtoGrammar.g:81:9: '}'
            {
            match('}'); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__83"

    // $ANTLR start "T__84"
    public final void mT__84() throws RecognitionException {
        try {
            int _type = T__84;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:82:7: ( 'wraps' )
            // InternalDtoGrammar.g:82:9: 'wraps'
            {
            match("wraps"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__84"

    // $ANTLR start "T__85"
    public final void mT__85() throws RecognitionException {
        try {
            int _type = T__85;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:83:7: ( 'autoDto' )
            // InternalDtoGrammar.g:83:9: 'autoDto'
            {
            match("autoDto"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__85"

    // $ANTLR start "T__86"
    public final void mT__86() throws RecognitionException {
        try {
            int _type = T__86;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:84:7: ( 'inheritVar' )
            // InternalDtoGrammar.g:84:9: 'inheritVar'
            {
            match("inheritVar"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__86"

    // $ANTLR start "T__87"
    public final void mT__87() throws RecognitionException {
        try {
            int _type = T__87;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:85:7: ( 'properties' )
            // InternalDtoGrammar.g:85:9: 'properties'
            {
            match("properties"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__87"

    // $ANTLR start "T__88"
    public final void mT__88() throws RecognitionException {
        try {
            int _type = T__88;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:86:7: ( '(' )
            // InternalDtoGrammar.g:86:9: '('
            {
            match('('); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__88"

    // $ANTLR start "T__89"
    public final void mT__89() throws RecognitionException {
        try {
            int _type = T__89;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:87:7: ( ')' )
            // InternalDtoGrammar.g:87:9: ')'
            {
            match(')'); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__89"

    // $ANTLR start "T__90"
    public final void mT__90() throws RecognitionException {
        try {
            int _type = T__90;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:88:7: ( ',' )
            // InternalDtoGrammar.g:88:9: ','
            {
            match(','); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__90"

    // $ANTLR start "T__91"
    public final void mT__91() throws RecognitionException {
        try {
            int _type = T__91;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:89:7: ( 'inheritRef' )
            // InternalDtoGrammar.g:89:9: 'inheritRef'
            {
            match("inheritRef"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__91"

    // $ANTLR start "T__92"
    public final void mT__92() throws RecognitionException {
        try {
            int _type = T__92;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:90:7: ( '[' )
            // InternalDtoGrammar.g:90:9: '['
            {
            match('['); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__92"

    // $ANTLR start "T__93"
    public final void mT__93() throws RecognitionException {
        try {
            int _type = T__93;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:91:7: ( ']' )
            // InternalDtoGrammar.g:91:9: ']'
            {
            match(']'); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__93"

    // $ANTLR start "T__94"
    public final void mT__94() throws RecognitionException {
        try {
            int _type = T__94;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:92:7: ( 'opposite' )
            // InternalDtoGrammar.g:92:9: 'opposite'
            {
            match("opposite"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__94"

    // $ANTLR start "T__95"
    public final void mT__95() throws RecognitionException {
        try {
            int _type = T__95;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:93:7: ( 'def' )
            // InternalDtoGrammar.g:93:9: 'def'
            {
            match("def"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__95"

    // $ANTLR start "T__96"
    public final void mT__96() throws RecognitionException {
        try {
            int _type = T__96;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:94:7: ( 'toDTO' )
            // InternalDtoGrammar.g:94:9: 'toDTO'
            {
            match("toDTO"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__96"

    // $ANTLR start "T__97"
    public final void mT__97() throws RecognitionException {
        try {
            int _type = T__97;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:95:7: ( 'fromDTO' )
            // InternalDtoGrammar.g:95:9: 'fromDTO'
            {
            match("fromDTO"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__97"

    // $ANTLR start "T__98"
    public final void mT__98() throws RecognitionException {
        try {
            int _type = T__98;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:96:7: ( 'datatype' )
            // InternalDtoGrammar.g:96:9: 'datatype'
            {
            match("datatype"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__98"

    // $ANTLR start "T__99"
    public final void mT__99() throws RecognitionException {
        try {
            int _type = T__99;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:97:7: ( 'jvmType' )
            // InternalDtoGrammar.g:97:9: 'jvmType'
            {
            match("jvmType"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__99"

    // $ANTLR start "T__100"
    public final void mT__100() throws RecognitionException {
        try {
            int _type = T__100;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:98:8: ( 'isFalse' )
            // InternalDtoGrammar.g:98:10: 'isFalse'
            {
            match("isFalse"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__100"

    // $ANTLR start "T__101"
    public final void mT__101() throws RecognitionException {
        try {
            int _type = T__101;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:99:8: ( 'msgCode' )
            // InternalDtoGrammar.g:99:10: 'msgCode'
            {
            match("msgCode"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__101"

    // $ANTLR start "T__102"
    public final void mT__102() throws RecognitionException {
        try {
            int _type = T__102;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:100:8: ( 'msgI18nKey' )
            // InternalDtoGrammar.g:100:10: 'msgI18nKey'
            {
            match("msgI18nKey"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__102"

    // $ANTLR start "T__103"
    public final void mT__103() throws RecognitionException {
        try {
            int _type = T__103;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:101:8: ( 'severity' )
            // InternalDtoGrammar.g:101:10: 'severity'
            {
            match("severity"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__103"

    // $ANTLR start "T__104"
    public final void mT__104() throws RecognitionException {
        try {
            int _type = T__104;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:102:8: ( 'isTrue' )
            // InternalDtoGrammar.g:102:10: 'isTrue'
            {
            match("isTrue"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__104"

    // $ANTLR start "T__105"
    public final void mT__105() throws RecognitionException {
        try {
            int _type = T__105;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:103:8: ( 'maxDecimal' )
            // InternalDtoGrammar.g:103:10: 'maxDecimal'
            {
            match("maxDecimal"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__105"

    // $ANTLR start "T__106"
    public final void mT__106() throws RecognitionException {
        try {
            int _type = T__106;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:104:8: ( 'minDecimal' )
            // InternalDtoGrammar.g:104:10: 'minDecimal'
            {
            match("minDecimal"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__106"

    // $ANTLR start "T__107"
    public final void mT__107() throws RecognitionException {
        try {
            int _type = T__107;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:105:8: ( 'digits' )
            // InternalDtoGrammar.g:105:10: 'digits'
            {
            match("digits"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__107"

    // $ANTLR start "T__108"
    public final void mT__108() throws RecognitionException {
        try {
            int _type = T__108;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:106:8: ( 'isFuture' )
            // InternalDtoGrammar.g:106:10: 'isFuture'
            {
            match("isFuture"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__108"

    // $ANTLR start "T__109"
    public final void mT__109() throws RecognitionException {
        try {
            int _type = T__109;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:107:8: ( 'isPast' )
            // InternalDtoGrammar.g:107:10: 'isPast'
            {
            match("isPast"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__109"

    // $ANTLR start "T__110"
    public final void mT__110() throws RecognitionException {
        try {
            int _type = T__110;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:108:8: ( 'maxNumber' )
            // InternalDtoGrammar.g:108:10: 'maxNumber'
            {
            match("maxNumber"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__110"

    // $ANTLR start "T__111"
    public final void mT__111() throws RecognitionException {
        try {
            int _type = T__111;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:109:8: ( 'minNumber' )
            // InternalDtoGrammar.g:109:10: 'minNumber'
            {
            match("minNumber"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__111"

    // $ANTLR start "T__112"
    public final void mT__112() throws RecognitionException {
        try {
            int _type = T__112;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:110:8: ( 'isNotNull' )
            // InternalDtoGrammar.g:110:10: 'isNotNull'
            {
            match("isNotNull"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__112"

    // $ANTLR start "T__113"
    public final void mT__113() throws RecognitionException {
        try {
            int _type = T__113;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:111:8: ( 'isNull' )
            // InternalDtoGrammar.g:111:10: 'isNull'
            {
            match("isNull"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__113"

    // $ANTLR start "T__114"
    public final void mT__114() throws RecognitionException {
        try {
            int _type = T__114;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:112:8: ( 'regex' )
            // InternalDtoGrammar.g:112:10: 'regex'
            {
            match("regex"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__114"

    // $ANTLR start "T__115"
    public final void mT__115() throws RecognitionException {
        try {
            int _type = T__115;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:113:8: ( 'minMaxSize' )
            // InternalDtoGrammar.g:113:10: 'minMaxSize'
            {
            match("minMaxSize"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__115"

    // $ANTLR start "T__116"
    public final void mT__116() throws RecognitionException {
        try {
            int _type = T__116;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:114:8: ( 'enum' )
            // InternalDtoGrammar.g:114:10: 'enum'
            {
            match("enum"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__116"

    // $ANTLR start "T__117"
    public final void mT__117() throws RecognitionException {
        try {
            int _type = T__117;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:115:8: ( 'stateClass' )
            // InternalDtoGrammar.g:115:10: 'stateClass'
            {
            match("stateClass"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__117"

    // $ANTLR start "T__118"
    public final void mT__118() throws RecognitionException {
        try {
            int _type = T__118;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:116:8: ( 'state' )
            // InternalDtoGrammar.g:116:10: 'state'
            {
            match("state"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__118"

    // $ANTLR start "T__119"
    public final void mT__119() throws RecognitionException {
        try {
            int _type = T__119;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:117:8: ( 'key' )
            // InternalDtoGrammar.g:117:10: 'key'
            {
            match("key"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__119"

    // $ANTLR start "T__120"
    public final void mT__120() throws RecognitionException {
        try {
            int _type = T__120;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:118:8: ( 'value' )
            // InternalDtoGrammar.g:118:10: 'value'
            {
            match("value"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__120"

    // $ANTLR start "T__121"
    public final void mT__121() throws RecognitionException {
        try {
            int _type = T__121;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:119:8: ( ';' )
            // InternalDtoGrammar.g:119:10: ';'
            {
            match(';'); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__121"

    // $ANTLR start "T__122"
    public final void mT__122() throws RecognitionException {
        try {
            int _type = T__122;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:120:8: ( '@' )
            // InternalDtoGrammar.g:120:10: '@'
            {
            match('@'); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__122"

    // $ANTLR start "T__123"
    public final void mT__123() throws RecognitionException {
        try {
            int _type = T__123;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:121:8: ( '#' )
            // InternalDtoGrammar.g:121:10: '#'
            {
            match('#'); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__123"

    // $ANTLR start "T__124"
    public final void mT__124() throws RecognitionException {
        try {
            int _type = T__124;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:122:8: ( 'instanceof' )
            // InternalDtoGrammar.g:122:10: 'instanceof'
            {
            match("instanceof"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__124"

    // $ANTLR start "T__125"
    public final void mT__125() throws RecognitionException {
        try {
            int _type = T__125;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:123:8: ( 'as' )
            // InternalDtoGrammar.g:123:10: 'as'
            {
            match("as"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__125"

    // $ANTLR start "T__126"
    public final void mT__126() throws RecognitionException {
        try {
            int _type = T__126;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:124:8: ( 'if' )
            // InternalDtoGrammar.g:124:10: 'if'
            {
            match("if"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__126"

    // $ANTLR start "T__127"
    public final void mT__127() throws RecognitionException {
        try {
            int _type = T__127;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:125:8: ( 'else' )
            // InternalDtoGrammar.g:125:10: 'else'
            {
            match("else"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__127"

    // $ANTLR start "T__128"
    public final void mT__128() throws RecognitionException {
        try {
            int _type = T__128;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:126:8: ( 'switch' )
            // InternalDtoGrammar.g:126:10: 'switch'
            {
            match("switch"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__128"

    // $ANTLR start "T__129"
    public final void mT__129() throws RecognitionException {
        try {
            int _type = T__129;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:127:8: ( ':' )
            // InternalDtoGrammar.g:127:10: ':'
            {
            match(':'); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__129"

    // $ANTLR start "T__130"
    public final void mT__130() throws RecognitionException {
        try {
            int _type = T__130;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:128:8: ( 'default' )
            // InternalDtoGrammar.g:128:10: 'default'
            {
            match("default"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__130"

    // $ANTLR start "T__131"
    public final void mT__131() throws RecognitionException {
        try {
            int _type = T__131;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:129:8: ( 'case' )
            // InternalDtoGrammar.g:129:10: 'case'
            {
            match("case"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__131"

    // $ANTLR start "T__132"
    public final void mT__132() throws RecognitionException {
        try {
            int _type = T__132;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:130:8: ( 'for' )
            // InternalDtoGrammar.g:130:10: 'for'
            {
            match("for"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__132"

    // $ANTLR start "T__133"
    public final void mT__133() throws RecognitionException {
        try {
            int _type = T__133;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:131:8: ( 'while' )
            // InternalDtoGrammar.g:131:10: 'while'
            {
            match("while"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__133"

    // $ANTLR start "T__134"
    public final void mT__134() throws RecognitionException {
        try {
            int _type = T__134;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:132:8: ( 'do' )
            // InternalDtoGrammar.g:132:10: 'do'
            {
            match("do"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__134"

    // $ANTLR start "T__135"
    public final void mT__135() throws RecognitionException {
        try {
            int _type = T__135;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:133:8: ( 'new' )
            // InternalDtoGrammar.g:133:10: 'new'
            {
            match("new"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__135"

    // $ANTLR start "T__136"
    public final void mT__136() throws RecognitionException {
        try {
            int _type = T__136;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:134:8: ( 'null' )
            // InternalDtoGrammar.g:134:10: 'null'
            {
            match("null"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__136"

    // $ANTLR start "T__137"
    public final void mT__137() throws RecognitionException {
        try {
            int _type = T__137;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:135:8: ( 'typeof' )
            // InternalDtoGrammar.g:135:10: 'typeof'
            {
            match("typeof"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__137"

    // $ANTLR start "T__138"
    public final void mT__138() throws RecognitionException {
        try {
            int _type = T__138;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:136:8: ( 'throw' )
            // InternalDtoGrammar.g:136:10: 'throw'
            {
            match("throw"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__138"

    // $ANTLR start "T__139"
    public final void mT__139() throws RecognitionException {
        try {
            int _type = T__139;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:137:8: ( 'return' )
            // InternalDtoGrammar.g:137:10: 'return'
            {
            match("return"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__139"

    // $ANTLR start "T__140"
    public final void mT__140() throws RecognitionException {
        try {
            int _type = T__140;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:138:8: ( 'try' )
            // InternalDtoGrammar.g:138:10: 'try'
            {
            match("try"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__140"

    // $ANTLR start "T__141"
    public final void mT__141() throws RecognitionException {
        try {
            int _type = T__141;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:139:8: ( 'finally' )
            // InternalDtoGrammar.g:139:10: 'finally'
            {
            match("finally"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__141"

    // $ANTLR start "T__142"
    public final void mT__142() throws RecognitionException {
        try {
            int _type = T__142;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:140:8: ( 'synchronized' )
            // InternalDtoGrammar.g:140:10: 'synchronized'
            {
            match("synchronized"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__142"

    // $ANTLR start "T__143"
    public final void mT__143() throws RecognitionException {
        try {
            int _type = T__143;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:141:8: ( 'catch' )
            // InternalDtoGrammar.g:141:10: 'catch'
            {
            match("catch"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__143"

    // $ANTLR start "T__144"
    public final void mT__144() throws RecognitionException {
        try {
            int _type = T__144;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:142:8: ( '&' )
            // InternalDtoGrammar.g:142:10: '&'
            {
            match('&'); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__144"

    // $ANTLR start "T__145"
    public final void mT__145() throws RecognitionException {
        try {
            int _type = T__145;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:143:8: ( 'abstract' )
            // InternalDtoGrammar.g:143:10: 'abstract'
            {
            match("abstract"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__145"

    // $ANTLR start "T__146"
    public final void mT__146() throws RecognitionException {
        try {
            int _type = T__146;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:144:8: ( 'dirty' )
            // InternalDtoGrammar.g:144:10: 'dirty'
            {
            match("dirty"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__146"

    // $ANTLR start "T__147"
    public final void mT__147() throws RecognitionException {
        try {
            int _type = T__147;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:145:8: ( 'domainDescription' )
            // InternalDtoGrammar.g:145:10: 'domainDescription'
            {
            match("domainDescription"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__147"

    // $ANTLR start "T__148"
    public final void mT__148() throws RecognitionException {
        try {
            int _type = T__148;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:146:8: ( 'domainKey' )
            // InternalDtoGrammar.g:146:10: 'domainKey'
            {
            match("domainKey"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__148"

    // $ANTLR start "T__149"
    public final void mT__149() throws RecognitionException {
        try {
            int _type = T__149;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:147:8: ( 'asPrimitive' )
            // InternalDtoGrammar.g:147:10: 'asPrimitive'
            {
            match("asPrimitive"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__149"

    // $ANTLR start "T__150"
    public final void mT__150() throws RecognitionException {
        try {
            int _type = T__150;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:148:8: ( 'dateType' )
            // InternalDtoGrammar.g:148:10: 'dateType'
            {
            match("dateType"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__150"

    // $ANTLR start "T__151"
    public final void mT__151() throws RecognitionException {
        try {
            int _type = T__151;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:149:8: ( 'asBlob' )
            // InternalDtoGrammar.g:149:10: 'asBlob'
            {
            match("asBlob"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__151"

    // $ANTLR start "T__152"
    public final void mT__152() throws RecognitionException {
        try {
            int _type = T__152;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:150:8: ( 'asDefault' )
            // InternalDtoGrammar.g:150:10: 'asDefault'
            {
            match("asDefault"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__152"

    // $ANTLR start "T__153"
    public final void mT__153() throws RecognitionException {
        try {
            int _type = T__153;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:151:8: ( 'ns' )
            // InternalDtoGrammar.g:151:10: 'ns'
            {
            match("ns"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__153"

    // $ANTLR start "T__154"
    public final void mT__154() throws RecognitionException {
        try {
            int _type = T__154;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:152:8: ( '::' )
            // InternalDtoGrammar.g:152:10: '::'
            {
            match("::"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__154"

    // $ANTLR start "T__155"
    public final void mT__155() throws RecognitionException {
        try {
            int _type = T__155;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:153:8: ( '?.' )
            // InternalDtoGrammar.g:153:10: '?.'
            {
            match("?."); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__155"

    // $ANTLR start "T__156"
    public final void mT__156() throws RecognitionException {
        try {
            int _type = T__156;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:154:8: ( '|' )
            // InternalDtoGrammar.g:154:10: '|'
            {
            match('|'); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__156"

    // $ANTLR start "T__157"
    public final void mT__157() throws RecognitionException {
        try {
            int _type = T__157;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:155:8: ( 'true' )
            // InternalDtoGrammar.g:155:10: 'true'
            {
            match("true"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__157"

    // $ANTLR start "RULE_HEX"
    public final void mRULE_HEX() throws RecognitionException {
        try {
            int _type = RULE_HEX;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:38234:10: ( ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )? )
            // InternalDtoGrammar.g:38234:12: ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
            {
            // InternalDtoGrammar.g:38234:12: ( '0x' | '0X' )
            int alt1=2;
            int LA1_0 = input.LA(1);

            if ( (LA1_0=='0') ) {
                int LA1_1 = input.LA(2);

                if ( (LA1_1=='x') ) {
                    alt1=1;
                }
                else if ( (LA1_1=='X') ) {
                    alt1=2;
                }
                else {
                    NoViableAltException nvae =
                        new NoViableAltException("", 1, 1, input);

                    throw nvae;
                }
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 1, 0, input);

                throw nvae;
            }
            switch (alt1) {
                case 1 :
                    // InternalDtoGrammar.g:38234:13: '0x'
                    {
                    match("0x"); 


                    }
                    break;
                case 2 :
                    // InternalDtoGrammar.g:38234:18: '0X'
                    {
                    match("0X"); 


                    }
                    break;

            }

            // InternalDtoGrammar.g:38234:24: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+
            int cnt2=0;
            loop2:
            do {
                int alt2=2;
                int LA2_0 = input.LA(1);

                if ( ((LA2_0>='0' && LA2_0<='9')||(LA2_0>='A' && LA2_0<='F')||LA2_0=='_'||(LA2_0>='a' && LA2_0<='f')) ) {
                    alt2=1;
                }


                switch (alt2) {
            	case 1 :
            	    // InternalDtoGrammar.g:
            	    {
            	    if ( (input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='F')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='f') ) {
            	        input.consume();

            	    }
            	    else {
            	        MismatchedSetException mse = new MismatchedSetException(null,input);
            	        recover(mse);
            	        throw mse;}


            	    }
            	    break;

            	default :
            	    if ( cnt2 >= 1 ) break loop2;
                        EarlyExitException eee =
                            new EarlyExitException(2, input);
                        throw eee;
                }
                cnt2++;
            } while (true);

            // InternalDtoGrammar.g:38234:58: ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
            int alt4=2;
            int LA4_0 = input.LA(1);

            if ( (LA4_0=='#') ) {
                alt4=1;
            }
            switch (alt4) {
                case 1 :
                    // InternalDtoGrammar.g:38234:59: '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
                    {
                    match('#'); 
                    // InternalDtoGrammar.g:38234:63: ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
                    int alt3=2;
                    int LA3_0 = input.LA(1);

                    if ( (LA3_0=='B'||LA3_0=='b') ) {
                        alt3=1;
                    }
                    else if ( (LA3_0=='L'||LA3_0=='l') ) {
                        alt3=2;
                    }
                    else {
                        NoViableAltException nvae =
                            new NoViableAltException("", 3, 0, input);

                        throw nvae;
                    }
                    switch (alt3) {
                        case 1 :
                            // InternalDtoGrammar.g:38234:64: ( 'b' | 'B' ) ( 'i' | 'I' )
                            {
                            if ( input.LA(1)=='B'||input.LA(1)=='b' ) {
                                input.consume();

                            }
                            else {
                                MismatchedSetException mse = new MismatchedSetException(null,input);
                                recover(mse);
                                throw mse;}

                            if ( input.LA(1)=='I'||input.LA(1)=='i' ) {
                                input.consume();

                            }
                            else {
                                MismatchedSetException mse = new MismatchedSetException(null,input);
                                recover(mse);
                                throw mse;}


                            }
                            break;
                        case 2 :
                            // InternalDtoGrammar.g:38234:84: ( 'l' | 'L' )
                            {
                            if ( input.LA(1)=='L'||input.LA(1)=='l' ) {
                                input.consume();

                            }
                            else {
                                MismatchedSetException mse = new MismatchedSetException(null,input);
                                recover(mse);
                                throw mse;}


                            }
                            break;

                    }


                    }
                    break;

            }


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "RULE_HEX"

    // $ANTLR start "RULE_INT"
    public final void mRULE_INT() throws RecognitionException {
        try {
            int _type = RULE_INT;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:38236:10: ( '0' .. '9' ( '0' .. '9' | '_' )* )
            // InternalDtoGrammar.g:38236:12: '0' .. '9' ( '0' .. '9' | '_' )*
            {
            matchRange('0','9'); 
            // InternalDtoGrammar.g:38236:21: ( '0' .. '9' | '_' )*
            loop5:
            do {
                int alt5=2;
                int LA5_0 = input.LA(1);

                if ( ((LA5_0>='0' && LA5_0<='9')||LA5_0=='_') ) {
                    alt5=1;
                }


                switch (alt5) {
            	case 1 :
            	    // InternalDtoGrammar.g:
            	    {
            	    if ( (input.LA(1)>='0' && input.LA(1)<='9')||input.LA(1)=='_' ) {
            	        input.consume();

            	    }
            	    else {
            	        MismatchedSetException mse = new MismatchedSetException(null,input);
            	        recover(mse);
            	        throw mse;}


            	    }
            	    break;

            	default :
            	    break loop5;
                }
            } while (true);


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "RULE_INT"

    // $ANTLR start "RULE_DECIMAL"
    public final void mRULE_DECIMAL() throws RecognitionException {
        try {
            int _type = RULE_DECIMAL;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:38238:14: ( RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )? )
            // InternalDtoGrammar.g:38238:16: RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
            {
            mRULE_INT(); 
            // InternalDtoGrammar.g:38238:25: ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )?
            int alt7=2;
            int LA7_0 = input.LA(1);

            if ( (LA7_0=='E'||LA7_0=='e') ) {
                alt7=1;
            }
            switch (alt7) {
                case 1 :
                    // InternalDtoGrammar.g:38238:26: ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT
                    {
                    if ( input.LA(1)=='E'||input.LA(1)=='e' ) {
                        input.consume();

                    }
                    else {
                        MismatchedSetException mse = new MismatchedSetException(null,input);
                        recover(mse);
                        throw mse;}

                    // InternalDtoGrammar.g:38238:36: ( '+' | '-' )?
                    int alt6=2;
                    int LA6_0 = input.LA(1);

                    if ( (LA6_0=='+'||LA6_0=='-') ) {
                        alt6=1;
                    }
                    switch (alt6) {
                        case 1 :
                            // InternalDtoGrammar.g:
                            {
                            if ( input.LA(1)=='+'||input.LA(1)=='-' ) {
                                input.consume();

                            }
                            else {
                                MismatchedSetException mse = new MismatchedSetException(null,input);
                                recover(mse);
                                throw mse;}


                            }
                            break;

                    }

                    mRULE_INT(); 

                    }
                    break;

            }

            // InternalDtoGrammar.g:38238:58: ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
            int alt8=3;
            int LA8_0 = input.LA(1);

            if ( (LA8_0=='B'||LA8_0=='b') ) {
                alt8=1;
            }
            else if ( (LA8_0=='D'||LA8_0=='F'||LA8_0=='L'||LA8_0=='d'||LA8_0=='f'||LA8_0=='l') ) {
                alt8=2;
            }
            switch (alt8) {
                case 1 :
                    // InternalDtoGrammar.g:38238:59: ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' )
                    {
                    if ( input.LA(1)=='B'||input.LA(1)=='b' ) {
                        input.consume();

                    }
                    else {
                        MismatchedSetException mse = new MismatchedSetException(null,input);
                        recover(mse);
                        throw mse;}

                    if ( input.LA(1)=='D'||input.LA(1)=='I'||input.LA(1)=='d'||input.LA(1)=='i' ) {
                        input.consume();

                    }
                    else {
                        MismatchedSetException mse = new MismatchedSetException(null,input);
                        recover(mse);
                        throw mse;}


                    }
                    break;
                case 2 :
                    // InternalDtoGrammar.g:38238:87: ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' )
                    {
                    if ( input.LA(1)=='D'||input.LA(1)=='F'||input.LA(1)=='L'||input.LA(1)=='d'||input.LA(1)=='f'||input.LA(1)=='l' ) {
                        input.consume();

                    }
                    else {
                        MismatchedSetException mse = new MismatchedSetException(null,input);
                        recover(mse);
                        throw mse;}


                    }
                    break;

            }


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "RULE_DECIMAL"

    // $ANTLR start "RULE_ID"
    public final void mRULE_ID() throws RecognitionException {
        try {
            int _type = RULE_ID;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:38240:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )* )
            // InternalDtoGrammar.g:38240:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
            {
            // InternalDtoGrammar.g:38240:11: ( '^' )?
            int alt9=2;
            int LA9_0 = input.LA(1);

            if ( (LA9_0=='^') ) {
                alt9=1;
            }
            switch (alt9) {
                case 1 :
                    // InternalDtoGrammar.g:38240:11: '^'
                    {
                    match('^'); 

                    }
                    break;

            }

            if ( input.LA(1)=='$'||(input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) {
                input.consume();

            }
            else {
                MismatchedSetException mse = new MismatchedSetException(null,input);
                recover(mse);
                throw mse;}

            // InternalDtoGrammar.g:38240:44: ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
            loop10:
            do {
                int alt10=2;
                int LA10_0 = input.LA(1);

                if ( (LA10_0=='$'||(LA10_0>='0' && LA10_0<='9')||(LA10_0>='A' && LA10_0<='Z')||LA10_0=='_'||(LA10_0>='a' && LA10_0<='z')) ) {
                    alt10=1;
                }


                switch (alt10) {
            	case 1 :
            	    // InternalDtoGrammar.g:
            	    {
            	    if ( input.LA(1)=='$'||(input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) {
            	        input.consume();

            	    }
            	    else {
            	        MismatchedSetException mse = new MismatchedSetException(null,input);
            	        recover(mse);
            	        throw mse;}


            	    }
            	    break;

            	default :
            	    break loop10;
                }
            } while (true);


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "RULE_ID"

    // $ANTLR start "RULE_STRING"
    public final void mRULE_STRING() throws RecognitionException {
        try {
            int _type = RULE_STRING;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:38242:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? ) )
            // InternalDtoGrammar.g:38242:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
            {
            // InternalDtoGrammar.g:38242:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
            int alt15=2;
            int LA15_0 = input.LA(1);

            if ( (LA15_0=='\"') ) {
                alt15=1;
            }
            else if ( (LA15_0=='\'') ) {
                alt15=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 15, 0, input);

                throw nvae;
            }
            switch (alt15) {
                case 1 :
                    // InternalDtoGrammar.g:38242:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )?
                    {
                    match('\"'); 
                    // InternalDtoGrammar.g:38242:20: ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )*
                    loop11:
                    do {
                        int alt11=3;
                        int LA11_0 = input.LA(1);

                        if ( (LA11_0=='\\') ) {
                            alt11=1;
                        }
                        else if ( ((LA11_0>='\u0000' && LA11_0<='!')||(LA11_0>='#' && LA11_0<='[')||(LA11_0>=']' && LA11_0<='\uFFFF')) ) {
                            alt11=2;
                        }


                        switch (alt11) {
                    	case 1 :
                    	    // InternalDtoGrammar.g:38242:21: '\\\\' .
                    	    {
                    	    match('\\'); 
                    	    matchAny(); 

                    	    }
                    	    break;
                    	case 2 :
                    	    // InternalDtoGrammar.g:38242:28: ~ ( ( '\\\\' | '\"' ) )
                    	    {
                    	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
                    	        input.consume();

                    	    }
                    	    else {
                    	        MismatchedSetException mse = new MismatchedSetException(null,input);
                    	        recover(mse);
                    	        throw mse;}


                    	    }
                    	    break;

                    	default :
                    	    break loop11;
                        }
                    } while (true);

                    // InternalDtoGrammar.g:38242:44: ( '\"' )?
                    int alt12=2;
                    int LA12_0 = input.LA(1);

                    if ( (LA12_0=='\"') ) {
                        alt12=1;
                    }
                    switch (alt12) {
                        case 1 :
                            // InternalDtoGrammar.g:38242:44: '\"'
                            {
                            match('\"'); 

                            }
                            break;

                    }


                    }
                    break;
                case 2 :
                    // InternalDtoGrammar.g:38242:49: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )?
                    {
                    match('\''); 
                    // InternalDtoGrammar.g:38242:54: ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )*
                    loop13:
                    do {
                        int alt13=3;
                        int LA13_0 = input.LA(1);

                        if ( (LA13_0=='\\') ) {
                            alt13=1;
                        }
                        else if ( ((LA13_0>='\u0000' && LA13_0<='&')||(LA13_0>='(' && LA13_0<='[')||(LA13_0>=']' && LA13_0<='\uFFFF')) ) {
                            alt13=2;
                        }


                        switch (alt13) {
                    	case 1 :
                    	    // InternalDtoGrammar.g:38242:55: '\\\\' .
                    	    {
                    	    match('\\'); 
                    	    matchAny(); 

                    	    }
                    	    break;
                    	case 2 :
                    	    // InternalDtoGrammar.g:38242:62: ~ ( ( '\\\\' | '\\'' ) )
                    	    {
                    	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
                    	        input.consume();

                    	    }
                    	    else {
                    	        MismatchedSetException mse = new MismatchedSetException(null,input);
                    	        recover(mse);
                    	        throw mse;}


                    	    }
                    	    break;

                    	default :
                    	    break loop13;
                        }
                    } while (true);

                    // InternalDtoGrammar.g:38242:79: ( '\\'' )?
                    int alt14=2;
                    int LA14_0 = input.LA(1);

                    if ( (LA14_0=='\'') ) {
                        alt14=1;
                    }
                    switch (alt14) {
                        case 1 :
                            // InternalDtoGrammar.g:38242:79: '\\''
                            {
                            match('\''); 

                            }
                            break;

                    }


                    }
                    break;

            }


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "RULE_STRING"

    // $ANTLR start "RULE_ML_COMMENT"
    public final void mRULE_ML_COMMENT() throws RecognitionException {
        try {
            int _type = RULE_ML_COMMENT;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:38244:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
            // InternalDtoGrammar.g:38244:19: '/*' ( options {greedy=false; } : . )* '*/'
            {
            match("/*"); 

            // InternalDtoGrammar.g:38244:24: ( options {greedy=false; } : . )*
            loop16:
            do {
                int alt16=2;
                int LA16_0 = input.LA(1);

                if ( (LA16_0=='*') ) {
                    int LA16_1 = input.LA(2);

                    if ( (LA16_1=='/') ) {
                        alt16=2;
                    }
                    else if ( ((LA16_1>='\u0000' && LA16_1<='.')||(LA16_1>='0' && LA16_1<='\uFFFF')) ) {
                        alt16=1;
                    }


                }
                else if ( ((LA16_0>='\u0000' && LA16_0<=')')||(LA16_0>='+' && LA16_0<='\uFFFF')) ) {
                    alt16=1;
                }


                switch (alt16) {
            	case 1 :
            	    // InternalDtoGrammar.g:38244:52: .
            	    {
            	    matchAny(); 

            	    }
            	    break;

            	default :
            	    break loop16;
                }
            } while (true);

            match("*/"); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "RULE_ML_COMMENT"

    // $ANTLR start "RULE_SL_COMMENT"
    public final void mRULE_SL_COMMENT() throws RecognitionException {
        try {
            int _type = RULE_SL_COMMENT;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:38246:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
            // InternalDtoGrammar.g:38246:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
            {
            match("//"); 

            // InternalDtoGrammar.g:38246:24: (~ ( ( '\\n' | '\\r' ) ) )*
            loop17:
            do {
                int alt17=2;
                int LA17_0 = input.LA(1);

                if ( ((LA17_0>='\u0000' && LA17_0<='\t')||(LA17_0>='\u000B' && LA17_0<='\f')||(LA17_0>='\u000E' && LA17_0<='\uFFFF')) ) {
                    alt17=1;
                }


                switch (alt17) {
            	case 1 :
            	    // InternalDtoGrammar.g:38246:24: ~ ( ( '\\n' | '\\r' ) )
            	    {
            	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='\t')||(input.LA(1)>='\u000B' && input.LA(1)<='\f')||(input.LA(1)>='\u000E' && input.LA(1)<='\uFFFF') ) {
            	        input.consume();

            	    }
            	    else {
            	        MismatchedSetException mse = new MismatchedSetException(null,input);
            	        recover(mse);
            	        throw mse;}


            	    }
            	    break;

            	default :
            	    break loop17;
                }
            } while (true);

            // InternalDtoGrammar.g:38246:40: ( ( '\\r' )? '\\n' )?
            int alt19=2;
            int LA19_0 = input.LA(1);

            if ( (LA19_0=='\n'||LA19_0=='\r') ) {
                alt19=1;
            }
            switch (alt19) {
                case 1 :
                    // InternalDtoGrammar.g:38246:41: ( '\\r' )? '\\n'
                    {
                    // InternalDtoGrammar.g:38246:41: ( '\\r' )?
                    int alt18=2;
                    int LA18_0 = input.LA(1);

                    if ( (LA18_0=='\r') ) {
                        alt18=1;
                    }
                    switch (alt18) {
                        case 1 :
                            // InternalDtoGrammar.g:38246:41: '\\r'
                            {
                            match('\r'); 

                            }
                            break;

                    }

                    match('\n'); 

                    }
                    break;

            }


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "RULE_SL_COMMENT"

    // $ANTLR start "RULE_WS"
    public final void mRULE_WS() throws RecognitionException {
        try {
            int _type = RULE_WS;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:38248:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
            // InternalDtoGrammar.g:38248:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
            {
            // InternalDtoGrammar.g:38248:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
            int cnt20=0;
            loop20:
            do {
                int alt20=2;
                int LA20_0 = input.LA(1);

                if ( ((LA20_0>='\t' && LA20_0<='\n')||LA20_0=='\r'||LA20_0==' ') ) {
                    alt20=1;
                }


                switch (alt20) {
            	case 1 :
            	    // InternalDtoGrammar.g:
            	    {
            	    if ( (input.LA(1)>='\t' && input.LA(1)<='\n')||input.LA(1)=='\r'||input.LA(1)==' ' ) {
            	        input.consume();

            	    }
            	    else {
            	        MismatchedSetException mse = new MismatchedSetException(null,input);
            	        recover(mse);
            	        throw mse;}


            	    }
            	    break;

            	default :
            	    if ( cnt20 >= 1 ) break loop20;
                        EarlyExitException eee =
                            new EarlyExitException(20, input);
                        throw eee;
                }
                cnt20++;
            } while (true);


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "RULE_WS"

    // $ANTLR start "RULE_ANY_OTHER"
    public final void mRULE_ANY_OTHER() throws RecognitionException {
        try {
            int _type = RULE_ANY_OTHER;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalDtoGrammar.g:38250:16: ( . )
            // InternalDtoGrammar.g:38250:18: .
            {
            matchAny(); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "RULE_ANY_OTHER"

    public void mTokens() throws RecognitionException {
        // InternalDtoGrammar.g:1:8: ( T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | T__88 | T__89 | T__90 | T__91 | T__92 | T__93 | T__94 | T__95 | T__96 | T__97 | T__98 | T__99 | T__100 | T__101 | T__102 | T__103 | T__104 | T__105 | T__106 | T__107 | T__108 | T__109 | T__110 | T__111 | T__112 | T__113 | T__114 | T__115 | T__116 | T__117 | T__118 | T__119 | T__120 | T__121 | T__122 | T__123 | T__124 | T__125 | T__126 | T__127 | T__128 | T__129 | T__130 | T__131 | T__132 | T__133 | T__134 | T__135 | T__136 | T__137 | T__138 | T__139 | T__140 | T__141 | T__142 | T__143 | T__144 | T__145 | T__146 | T__147 | T__148 | T__149 | T__150 | T__151 | T__152 | T__153 | T__154 | T__155 | T__156 | T__157 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
        int alt21=154;
        alt21 = dfa21.predict(input);
        switch (alt21) {
            case 1 :
                // InternalDtoGrammar.g:1:10: T__13
                {
                mT__13(); 

                }
                break;
            case 2 :
                // InternalDtoGrammar.g:1:16: T__14
                {
                mT__14(); 

                }
                break;
            case 3 :
                // InternalDtoGrammar.g:1:22: T__15
                {
                mT__15(); 

                }
                break;
            case 4 :
                // InternalDtoGrammar.g:1:28: T__16
                {
                mT__16(); 

                }
                break;
            case 5 :
                // InternalDtoGrammar.g:1:34: T__17
                {
                mT__17(); 

                }
                break;
            case 6 :
                // InternalDtoGrammar.g:1:40: T__18
                {
                mT__18(); 

                }
                break;
            case 7 :
                // InternalDtoGrammar.g:1:46: T__19
                {
                mT__19(); 

                }
                break;
            case 8 :
                // InternalDtoGrammar.g:1:52: T__20
                {
                mT__20(); 

                }
                break;
            case 9 :
                // InternalDtoGrammar.g:1:58: T__21
                {
                mT__21(); 

                }
                break;
            case 10 :
                // InternalDtoGrammar.g:1:64: T__22
                {
                mT__22(); 

                }
                break;
            case 11 :
                // InternalDtoGrammar.g:1:70: T__23
                {
                mT__23(); 

                }
                break;
            case 12 :
                // InternalDtoGrammar.g:1:76: T__24
                {
                mT__24(); 

                }
                break;
            case 13 :
                // InternalDtoGrammar.g:1:82: T__25
                {
                mT__25(); 

                }
                break;
            case 14 :
                // InternalDtoGrammar.g:1:88: T__26
                {
                mT__26(); 

                }
                break;
            case 15 :
                // InternalDtoGrammar.g:1:94: T__27
                {
                mT__27(); 

                }
                break;
            case 16 :
                // InternalDtoGrammar.g:1:100: T__28
                {
                mT__28(); 

                }
                break;
            case 17 :
                // InternalDtoGrammar.g:1:106: T__29
                {
                mT__29(); 

                }
                break;
            case 18 :
                // InternalDtoGrammar.g:1:112: T__30
                {
                mT__30(); 

                }
                break;
            case 19 :
                // InternalDtoGrammar.g:1:118: T__31
                {
                mT__31(); 

                }
                break;
            case 20 :
                // InternalDtoGrammar.g:1:124: T__32
                {
                mT__32(); 

                }
                break;
            case 21 :
                // InternalDtoGrammar.g:1:130: T__33
                {
                mT__33(); 

                }
                break;
            case 22 :
                // InternalDtoGrammar.g:1:136: T__34
                {
                mT__34(); 

                }
                break;
            case 23 :
                // InternalDtoGrammar.g:1:142: T__35
                {
                mT__35(); 

                }
                break;
            case 24 :
                // InternalDtoGrammar.g:1:148: T__36
                {
                mT__36(); 

                }
                break;
            case 25 :
                // InternalDtoGrammar.g:1:154: T__37
                {
                mT__37(); 

                }
                break;
            case 26 :
                // InternalDtoGrammar.g:1:160: T__38
                {
                mT__38(); 

                }
                break;
            case 27 :
                // InternalDtoGrammar.g:1:166: T__39
                {
                mT__39(); 

                }
                break;
            case 28 :
                // InternalDtoGrammar.g:1:172: T__40
                {
                mT__40(); 

                }
                break;
            case 29 :
                // InternalDtoGrammar.g:1:178: T__41
                {
                mT__41(); 

                }
                break;
            case 30 :
                // InternalDtoGrammar.g:1:184: T__42
                {
                mT__42(); 

                }
                break;
            case 31 :
                // InternalDtoGrammar.g:1:190: T__43
                {
                mT__43(); 

                }
                break;
            case 32 :
                // InternalDtoGrammar.g:1:196: T__44
                {
                mT__44(); 

                }
                break;
            case 33 :
                // InternalDtoGrammar.g:1:202: T__45
                {
                mT__45(); 

                }
                break;
            case 34 :
                // InternalDtoGrammar.g:1:208: T__46
                {
                mT__46(); 

                }
                break;
            case 35 :
                // InternalDtoGrammar.g:1:214: T__47
                {
                mT__47(); 

                }
                break;
            case 36 :
                // InternalDtoGrammar.g:1:220: T__48
                {
                mT__48(); 

                }
                break;
            case 37 :
                // InternalDtoGrammar.g:1:226: T__49
                {
                mT__49(); 

                }
                break;
            case 38 :
                // InternalDtoGrammar.g:1:232: T__50
                {
                mT__50(); 

                }
                break;
            case 39 :
                // InternalDtoGrammar.g:1:238: T__51
                {
                mT__51(); 

                }
                break;
            case 40 :
                // InternalDtoGrammar.g:1:244: T__52
                {
                mT__52(); 

                }
                break;
            case 41 :
                // InternalDtoGrammar.g:1:250: T__53
                {
                mT__53(); 

                }
                break;
            case 42 :
                // InternalDtoGrammar.g:1:256: T__54
                {
                mT__54(); 

                }
                break;
            case 43 :
                // InternalDtoGrammar.g:1:262: T__55
                {
                mT__55(); 

                }
                break;
            case 44 :
                // InternalDtoGrammar.g:1:268: T__56
                {
                mT__56(); 

                }
                break;
            case 45 :
                // InternalDtoGrammar.g:1:274: T__57
                {
                mT__57(); 

                }
                break;
            case 46 :
                // InternalDtoGrammar.g:1:280: T__58
                {
                mT__58(); 

                }
                break;
            case 47 :
                // InternalDtoGrammar.g:1:286: T__59
                {
                mT__59(); 

                }
                break;
            case 48 :
                // InternalDtoGrammar.g:1:292: T__60
                {
                mT__60(); 

                }
                break;
            case 49 :
                // InternalDtoGrammar.g:1:298: T__61
                {
                mT__61(); 

                }
                break;
            case 50 :
                // InternalDtoGrammar.g:1:304: T__62
                {
                mT__62(); 

                }
                break;
            case 51 :
                // InternalDtoGrammar.g:1:310: T__63
                {
                mT__63(); 

                }
                break;
            case 52 :
                // InternalDtoGrammar.g:1:316: T__64
                {
                mT__64(); 

                }
                break;
            case 53 :
                // InternalDtoGrammar.g:1:322: T__65
                {
                mT__65(); 

                }
                break;
            case 54 :
                // InternalDtoGrammar.g:1:328: T__66
                {
                mT__66(); 

                }
                break;
            case 55 :
                // InternalDtoGrammar.g:1:334: T__67
                {
                mT__67(); 

                }
                break;
            case 56 :
                // InternalDtoGrammar.g:1:340: T__68
                {
                mT__68(); 

                }
                break;
            case 57 :
                // InternalDtoGrammar.g:1:346: T__69
                {
                mT__69(); 

                }
                break;
            case 58 :
                // InternalDtoGrammar.g:1:352: T__70
                {
                mT__70(); 

                }
                break;
            case 59 :
                // InternalDtoGrammar.g:1:358: T__71
                {
                mT__71(); 

                }
                break;
            case 60 :
                // InternalDtoGrammar.g:1:364: T__72
                {
                mT__72(); 

                }
                break;
            case 61 :
                // InternalDtoGrammar.g:1:370: T__73
                {
                mT__73(); 

                }
                break;
            case 62 :
                // InternalDtoGrammar.g:1:376: T__74
                {
                mT__74(); 

                }
                break;
            case 63 :
                // InternalDtoGrammar.g:1:382: T__75
                {
                mT__75(); 

                }
                break;
            case 64 :
                // InternalDtoGrammar.g:1:388: T__76
                {
                mT__76(); 

                }
                break;
            case 65 :
                // InternalDtoGrammar.g:1:394: T__77
                {
                mT__77(); 

                }
                break;
            case 66 :
                // InternalDtoGrammar.g:1:400: T__78
                {
                mT__78(); 

                }
                break;
            case 67 :
                // InternalDtoGrammar.g:1:406: T__79
                {
                mT__79(); 

                }
                break;
            case 68 :
                // InternalDtoGrammar.g:1:412: T__80
                {
                mT__80(); 

                }
                break;
            case 69 :
                // InternalDtoGrammar.g:1:418: T__81
                {
                mT__81(); 

                }
                break;
            case 70 :
                // InternalDtoGrammar.g:1:424: T__82
                {
                mT__82(); 

                }
                break;
            case 71 :
                // InternalDtoGrammar.g:1:430: T__83
                {
                mT__83(); 

                }
                break;
            case 72 :
                // InternalDtoGrammar.g:1:436: T__84
                {
                mT__84(); 

                }
                break;
            case 73 :
                // InternalDtoGrammar.g:1:442: T__85
                {
                mT__85(); 

                }
                break;
            case 74 :
                // InternalDtoGrammar.g:1:448: T__86
                {
                mT__86(); 

                }
                break;
            case 75 :
                // InternalDtoGrammar.g:1:454: T__87
                {
                mT__87(); 

                }
                break;
            case 76 :
                // InternalDtoGrammar.g:1:460: T__88
                {
                mT__88(); 

                }
                break;
            case 77 :
                // InternalDtoGrammar.g:1:466: T__89
                {
                mT__89(); 

                }
                break;
            case 78 :
                // InternalDtoGrammar.g:1:472: T__90
                {
                mT__90(); 

                }
                break;
            case 79 :
                // InternalDtoGrammar.g:1:478: T__91
                {
                mT__91(); 

                }
                break;
            case 80 :
                // InternalDtoGrammar.g:1:484: T__92
                {
                mT__92(); 

                }
                break;
            case 81 :
                // InternalDtoGrammar.g:1:490: T__93
                {
                mT__93(); 

                }
                break;
            case 82 :
                // InternalDtoGrammar.g:1:496: T__94
                {
                mT__94(); 

                }
                break;
            case 83 :
                // InternalDtoGrammar.g:1:502: T__95
                {
                mT__95(); 

                }
                break;
            case 84 :
                // InternalDtoGrammar.g:1:508: T__96
                {
                mT__96(); 

                }
                break;
            case 85 :
                // InternalDtoGrammar.g:1:514: T__97
                {
                mT__97(); 

                }
                break;
            case 86 :
                // InternalDtoGrammar.g:1:520: T__98
                {
                mT__98(); 

                }
                break;
            case 87 :
                // InternalDtoGrammar.g:1:526: T__99
                {
                mT__99(); 

                }
                break;
            case 88 :
                // InternalDtoGrammar.g:1:532: T__100
                {
                mT__100(); 

                }
                break;
            case 89 :
                // InternalDtoGrammar.g:1:539: T__101
                {
                mT__101(); 

                }
                break;
            case 90 :
                // InternalDtoGrammar.g:1:546: T__102
                {
                mT__102(); 

                }
                break;
            case 91 :
                // InternalDtoGrammar.g:1:553: T__103
                {
                mT__103(); 

                }
                break;
            case 92 :
                // InternalDtoGrammar.g:1:560: T__104
                {
                mT__104(); 

                }
                break;
            case 93 :
                // InternalDtoGrammar.g:1:567: T__105
                {
                mT__105(); 

                }
                break;
            case 94 :
                // InternalDtoGrammar.g:1:574: T__106
                {
                mT__106(); 

                }
                break;
            case 95 :
                // InternalDtoGrammar.g:1:581: T__107
                {
                mT__107(); 

                }
                break;
            case 96 :
                // InternalDtoGrammar.g:1:588: T__108
                {
                mT__108(); 

                }
                break;
            case 97 :
                // InternalDtoGrammar.g:1:595: T__109
                {
                mT__109(); 

                }
                break;
            case 98 :
                // InternalDtoGrammar.g:1:602: T__110
                {
                mT__110(); 

                }
                break;
            case 99 :
                // InternalDtoGrammar.g:1:609: T__111
                {
                mT__111(); 

                }
                break;
            case 100 :
                // InternalDtoGrammar.g:1:616: T__112
                {
                mT__112(); 

                }
                break;
            case 101 :
                // InternalDtoGrammar.g:1:623: T__113
                {
                mT__113(); 

                }
                break;
            case 102 :
                // InternalDtoGrammar.g:1:630: T__114
                {
                mT__114(); 

                }
                break;
            case 103 :
                // InternalDtoGrammar.g:1:637: T__115
                {
                mT__115(); 

                }
                break;
            case 104 :
                // InternalDtoGrammar.g:1:644: T__116
                {
                mT__116(); 

                }
                break;
            case 105 :
                // InternalDtoGrammar.g:1:651: T__117
                {
                mT__117(); 

                }
                break;
            case 106 :
                // InternalDtoGrammar.g:1:658: T__118
                {
                mT__118(); 

                }
                break;
            case 107 :
                // InternalDtoGrammar.g:1:665: T__119
                {
                mT__119(); 

                }
                break;
            case 108 :
                // InternalDtoGrammar.g:1:672: T__120
                {
                mT__120(); 

                }
                break;
            case 109 :
                // InternalDtoGrammar.g:1:679: T__121
                {
                mT__121(); 

                }
                break;
            case 110 :
                // InternalDtoGrammar.g:1:686: T__122
                {
                mT__122(); 

                }
                break;
            case 111 :
                // InternalDtoGrammar.g:1:693: T__123
                {
                mT__123(); 

                }
                break;
            case 112 :
                // InternalDtoGrammar.g:1:700: T__124
                {
                mT__124(); 

                }
                break;
            case 113 :
                // InternalDtoGrammar.g:1:707: T__125
                {
                mT__125(); 

                }
                break;
            case 114 :
                // InternalDtoGrammar.g:1:714: T__126
                {
                mT__126(); 

                }
                break;
            case 115 :
                // InternalDtoGrammar.g:1:721: T__127
                {
                mT__127(); 

                }
                break;
            case 116 :
                // InternalDtoGrammar.g:1:728: T__128
                {
                mT__128(); 

                }
                break;
            case 117 :
                // InternalDtoGrammar.g:1:735: T__129
                {
                mT__129(); 

                }
                break;
            case 118 :
                // InternalDtoGrammar.g:1:742: T__130
                {
                mT__130(); 

                }
                break;
            case 119 :
                // InternalDtoGrammar.g:1:749: T__131
                {
                mT__131(); 

                }
                break;
            case 120 :
                // InternalDtoGrammar.g:1:756: T__132
                {
                mT__132(); 

                }
                break;
            case 121 :
                // InternalDtoGrammar.g:1:763: T__133
                {
                mT__133(); 

                }
                break;
            case 122 :
                // InternalDtoGrammar.g:1:770: T__134
                {
                mT__134(); 

                }
                break;
            case 123 :
                // InternalDtoGrammar.g:1:777: T__135
                {
                mT__135(); 

                }
                break;
            case 124 :
                // InternalDtoGrammar.g:1:784: T__136
                {
                mT__136(); 

                }
                break;
            case 125 :
                // InternalDtoGrammar.g:1:791: T__137
                {
                mT__137(); 

                }
                break;
            case 126 :
                // InternalDtoGrammar.g:1:798: T__138
                {
                mT__138(); 

                }
                break;
            case 127 :
                // InternalDtoGrammar.g:1:805: T__139
                {
                mT__139(); 

                }
                break;
            case 128 :
                // InternalDtoGrammar.g:1:812: T__140
                {
                mT__140(); 

                }
                break;
            case 129 :
                // InternalDtoGrammar.g:1:819: T__141
                {
                mT__141(); 

                }
                break;
            case 130 :
                // InternalDtoGrammar.g:1:826: T__142
                {
                mT__142(); 

                }
                break;
            case 131 :
                // InternalDtoGrammar.g:1:833: T__143
                {
                mT__143(); 

                }
                break;
            case 132 :
                // InternalDtoGrammar.g:1:840: T__144
                {
                mT__144(); 

                }
                break;
            case 133 :
                // InternalDtoGrammar.g:1:847: T__145
                {
                mT__145(); 

                }
                break;
            case 134 :
                // InternalDtoGrammar.g:1:854: T__146
                {
                mT__146(); 

                }
                break;
            case 135 :
                // InternalDtoGrammar.g:1:861: T__147
                {
                mT__147(); 

                }
                break;
            case 136 :
                // InternalDtoGrammar.g:1:868: T__148
                {
                mT__148(); 

                }
                break;
            case 137 :
                // InternalDtoGrammar.g:1:875: T__149
                {
                mT__149(); 

                }
                break;
            case 138 :
                // InternalDtoGrammar.g:1:882: T__150
                {
                mT__150(); 

                }
                break;
            case 139 :
                // InternalDtoGrammar.g:1:889: T__151
                {
                mT__151(); 

                }
                break;
            case 140 :
                // InternalDtoGrammar.g:1:896: T__152
                {
                mT__152(); 

                }
                break;
            case 141 :
                // InternalDtoGrammar.g:1:903: T__153
                {
                mT__153(); 

                }
                break;
            case 142 :
                // InternalDtoGrammar.g:1:910: T__154
                {
                mT__154(); 

                }
                break;
            case 143 :
                // InternalDtoGrammar.g:1:917: T__155
                {
                mT__155(); 

                }
                break;
            case 144 :
                // InternalDtoGrammar.g:1:924: T__156
                {
                mT__156(); 

                }
                break;
            case 145 :
                // InternalDtoGrammar.g:1:931: T__157
                {
                mT__157(); 

                }
                break;
            case 146 :
                // InternalDtoGrammar.g:1:938: RULE_HEX
                {
                mRULE_HEX(); 

                }
                break;
            case 147 :
                // InternalDtoGrammar.g:1:947: RULE_INT
                {
                mRULE_INT(); 

                }
                break;
            case 148 :
                // InternalDtoGrammar.g:1:956: RULE_DECIMAL
                {
                mRULE_DECIMAL(); 

                }
                break;
            case 149 :
                // InternalDtoGrammar.g:1:969: RULE_ID
                {
                mRULE_ID(); 

                }
                break;
            case 150 :
                // InternalDtoGrammar.g:1:977: RULE_STRING
                {
                mRULE_STRING(); 

                }
                break;
            case 151 :
                // InternalDtoGrammar.g:1:989: RULE_ML_COMMENT
                {
                mRULE_ML_COMMENT(); 

                }
                break;
            case 152 :
                // InternalDtoGrammar.g:1:1005: RULE_SL_COMMENT
                {
                mRULE_SL_COMMENT(); 

                }
                break;
            case 153 :
                // InternalDtoGrammar.g:1:1021: RULE_WS
                {
                mRULE_WS(); 

                }
                break;
            case 154 :
                // InternalDtoGrammar.g:1:1029: RULE_ANY_OTHER
                {
                mRULE_ANY_OTHER(); 

                }
                break;

        }

    }


    protected DFA21 dfa21 = new DFA21(this);
    static final String DFA21_eotS =
        "\1\uffff\1\67\1\71\1\73\13\76\1\141\1\145\1\150\1\154\1\156\1\160\1\162\1\165\1\167\1\172\4\76\1\u008b\1\u008d\2\uffff\1\76\5\uffff\3\76\3\uffff\1\u009f\1\u00a0\1\64\5\uffff\1\u00a4\6\uffff\2\76\1\uffff\1\u00a9\3\76\1\u00b2\14\76\1\u00c5\12\76\1\u00d3\3\76\20\uffff\1\u00d9\6\uffff\1\u00db\4\uffff\16\76\1\uffff\1\u00a0\5\uffff\1\76\1\u00ef\1\76\5\uffff\3\76\12\uffff\4\76\1\uffff\10\76\1\uffff\2\76\1\u0105\6\76\1\u010c\1\u010e\1\76\1\u0111\1\u0112\4\76\1\uffff\1\u0119\12\76\1\u0124\1\76\1\uffff\4\76\4\uffff\6\76\1\u0134\14\76\1\uffff\3\76\1\u0145\2\76\1\u0148\3\76\1\u014c\10\76\1\u0155\1\76\1\uffff\1\u0157\1\u0159\4\76\1\uffff\1\76\1\uffff\2\76\2\uffff\1\u0162\5\76\1\uffff\10\76\1\u0171\1\76\1\uffff\1\u0173\12\76\1\u017e\1\u017f\2\76\1\uffff\1\76\1\u0183\16\76\1\uffff\2\76\1\uffff\1\u0194\2\76\1\uffff\10\76\1\uffff\1\76\1\uffff\1\76\1\uffff\1\u01a1\1\76\1\u01a3\1\76\1\u01a5\3\76\1\uffff\2\76\1\u01ab\2\76\1\u01ae\4\76\1\u01b4\1\u01b5\2\76\1\uffff\1\76\1\uffff\1\u01b9\10\76\1\u01c3\2\uffff\1\u01c4\2\76\1\uffff\1\u01c7\1\u01c8\16\76\1\uffff\1\76\1\u01d8\4\76\1\u01dd\1\u01de\1\76\1\u01e0\2\76\1\uffff\1\u01e3\1\uffff\1\76\1\uffff\4\76\1\u01e9\1\uffff\1\76\1\u01ec\1\uffff\1\u01ed\2\76\1\u01f0\1\76\2\uffff\1\u01f2\2\76\1\uffff\11\76\2\uffff\2\76\2\uffff\4\76\1\u0204\2\76\1\u0207\7\76\1\uffff\2\76\1\u0213\1\76\2\uffff\1\76\1\uffff\2\76\1\uffff\1\u0218\1\u0219\1\u021a\2\76\1\uffff\2\76\2\uffff\2\76\1\uffff\1\76\1\uffff\1\76\1\u0223\2\76\1\u0226\4\76\1\u022b\1\76\1\u022d\1\u022e\1\u022f\1\u0230\2\76\1\uffff\1\u0233\1\76\1\uffff\3\76\1\u0238\1\u0239\6\76\1\uffff\1\u0240\3\76\3\uffff\1\u0244\1\u0245\2\76\1\u0248\1\u0249\2\76\1\uffff\2\76\1\uffff\4\76\1\uffff\1\76\4\uffff\2\76\1\uffff\2\76\1\u0257\1\u0258\2\uffff\6\76\1\uffff\1\u025f\1\u0260\1\u0261\2\uffff\1\76\1\u0263\2\uffff\3\76\1\u0267\2\76\1\u026a\1\76\1\u026c\1\u026d\2\76\1\u0270\2\uffff\2\76\1\u0273\1\u0274\1\u0275\1\u0276\3\uffff\1\76\1\uffff\1\u0278\1\76\1\u027a\1\uffff\1\u027b\1\u027c\1\uffff\1\u027d\2\uffff\1\u027e\1\76\1\uffff\2\76\4\uffff\1\76\1\uffff\1\76\5\uffff\1\u0284\3\76\1\u0288\1\uffff\1\76\1\u028a\1\76\1\uffff\1\76\1\uffff\6\76\1\u0293\1\76\1\uffff\1\u0295\1\uffff";
    static final String DFA21_eofS =
        "\u0296\uffff";
    static final String DFA21_minS =
        "\1\0\1\75\1\174\1\46\1\141\1\144\1\165\1\150\2\141\2\145\1\141\1\145\1\141\1\53\1\55\2\52\4\75\2\56\1\154\3\141\2\60\2\uffff\1\142\5\uffff\1\160\1\166\1\145\3\uffff\1\72\1\60\1\44\5\uffff\1\75\6\uffff\1\143\1\154\1\uffff\1\44\1\160\1\146\1\106\1\44\1\151\1\141\1\155\1\104\1\160\2\162\1\154\1\146\1\157\1\164\1\147\1\44\1\146\1\164\1\141\1\160\1\151\1\156\1\172\1\164\1\167\1\154\1\44\1\160\1\147\1\156\20\uffff\1\75\6\uffff\1\74\4\uffff\1\164\1\162\1\165\1\163\1\154\1\157\1\162\1\156\1\162\1\141\1\151\1\143\1\151\1\142\1\uffff\1\60\5\uffff\1\164\1\44\1\163\5\uffff\1\160\1\155\1\171\12\uffff\1\150\2\143\1\154\1\uffff\2\157\1\145\1\164\1\141\1\162\1\141\1\157\1\uffff\1\144\1\156\1\44\2\145\1\124\1\145\1\157\1\163\2\44\1\151\2\44\1\141\1\151\1\164\1\141\1\uffff\1\44\1\145\1\165\1\164\1\145\1\164\1\145\1\164\1\143\1\171\1\156\1\44\1\154\1\uffff\1\164\1\104\1\103\1\104\4\uffff\1\145\1\157\1\155\1\145\1\163\1\155\1\44\1\141\1\156\1\160\1\154\1\153\1\166\1\160\1\154\1\157\1\162\1\154\1\145\1\uffff\1\164\1\157\1\124\1\44\2\141\1\44\1\150\1\145\1\162\1\44\1\162\1\141\1\154\1\164\1\165\1\163\1\164\1\154\1\44\1\163\1\uffff\2\44\1\117\1\157\1\167\1\151\1\uffff\1\145\1\uffff\1\166\1\165\2\uffff\1\44\2\164\1\171\1\151\1\162\1\uffff\1\170\1\162\1\151\1\162\1\145\1\162\1\143\1\150\1\44\1\165\1\uffff\1\44\1\157\1\145\1\165\1\157\1\61\1\145\1\165\1\141\1\156\1\162\2\44\1\145\1\104\1\uffff\1\154\1\44\1\163\1\145\2\141\2\145\1\151\1\104\1\151\1\157\1\146\1\162\1\163\1\171\1\uffff\1\142\1\144\1\uffff\1\44\1\143\1\164\1\uffff\1\151\1\156\1\163\1\165\1\145\1\164\1\116\1\154\1\uffff\1\151\1\uffff\1\164\1\uffff\1\44\1\146\1\44\1\157\1\44\1\145\1\154\1\171\1\uffff\1\171\1\163\1\44\1\156\1\163\1\44\2\156\1\151\1\143\2\44\1\150\1\162\1\uffff\1\154\1\uffff\1\44\1\143\1\155\1\144\1\70\1\143\1\155\1\170\1\144\1\44\2\uffff\1\44\1\124\1\154\1\uffff\2\44\1\147\1\164\1\143\1\162\1\143\1\164\1\155\1\142\2\141\1\151\1\160\1\154\1\145\1\uffff\1\164\1\44\1\164\1\143\1\145\1\162\2\44\1\165\1\44\1\145\1\141\1\uffff\1\44\1\uffff\1\156\1\uffff\1\144\1\164\2\160\1\44\1\uffff\1\104\1\44\1\uffff\1\44\1\147\1\164\1\44\1\154\2\uffff\1\44\1\157\1\154\1\uffff\1\151\1\142\1\145\1\156\1\151\1\142\1\123\1\163\1\151\2\uffff\1\117\1\171\2\uffff\2\145\2\164\1\44\1\157\1\151\1\44\1\165\1\143\1\164\2\145\1\115\1\151\1\uffff\1\122\1\145\1\44\1\145\2\uffff\1\154\1\uffff\1\156\1\155\1\uffff\3\44\2\145\1\uffff\2\145\2\uffff\1\163\1\171\1\uffff\1\141\1\uffff\1\156\1\44\1\155\1\145\1\44\1\113\1\155\1\145\1\151\1\44\1\157\4\44\1\145\1\151\1\uffff\1\44\1\164\1\uffff\1\154\1\164\1\145\2\44\2\145\1\157\1\141\1\145\1\157\1\uffff\1\44\1\154\1\164\1\160\3\uffff\2\44\1\163\1\171\2\44\1\163\1\151\1\uffff\1\141\1\162\1\uffff\1\145\1\141\1\162\1\172\1\uffff\1\156\4\uffff\1\144\1\145\1\uffff\1\151\1\164\2\44\2\uffff\1\162\1\155\1\156\1\162\2\146\1\uffff\3\44\2\uffff\1\143\1\44\2\uffff\1\163\1\172\1\154\1\44\1\171\1\154\1\44\1\145\2\44\1\163\1\166\1\44\2\uffff\1\147\1\157\4\44\3\uffff\1\162\1\uffff\1\44\1\145\1\44\1\uffff\2\44\1\uffff\1\44\2\uffff\1\44\1\145\1\uffff\1\145\1\166\4\uffff\1\151\1\uffff\1\144\5\uffff\1\44\1\120\1\145\1\160\1\44\1\uffff\1\145\1\44\1\164\1\uffff\1\162\1\uffff\1\151\1\163\1\157\1\151\1\156\1\163\1\44\1\164\1\uffff\1\44\1\uffff";
    static final String DFA21_maxS =
        "\1\uffff\1\76\1\174\1\46\1\157\1\163\1\165\1\171\1\145\1\164\1\145\1\171\1\141\1\165\1\163\1\75\1\76\5\75\1\76\1\56\1\72\1\170\2\162\1\165\1\170\1\154\2\uffff\1\165\5\uffff\1\160\1\166\1\145\3\uffff\1\72\1\154\1\172\5\uffff\1\75\6\uffff\1\164\1\154\1\uffff\1\172\1\160\1\163\1\124\1\172\1\151\1\171\1\155\1\104\1\160\4\162\1\157\1\164\1\162\1\172\1\164\1\166\1\141\1\160\1\151\1\156\1\172\1\164\1\167\1\154\1\172\1\170\1\147\1\156\20\uffff\1\75\6\uffff\1\74\4\uffff\1\164\1\162\1\165\1\163\1\154\1\157\1\162\1\156\1\162\1\141\1\151\1\143\1\157\1\142\1\uffff\1\154\5\uffff\1\164\1\172\1\163\5\uffff\1\160\1\155\1\171\12\uffff\1\150\1\145\1\143\1\154\1\uffff\2\157\1\145\1\164\1\165\1\162\1\141\1\165\1\uffff\1\144\1\156\1\172\2\145\1\124\1\145\1\157\1\163\2\172\1\151\2\172\1\145\1\151\1\164\1\141\1\uffff\1\172\1\145\1\165\1\164\1\145\1\164\1\145\1\164\1\143\1\171\1\156\1\172\1\154\1\uffff\1\164\1\116\1\111\1\116\4\uffff\1\145\1\157\1\155\1\145\1\163\1\155\1\172\1\141\1\156\1\160\1\154\1\153\1\166\1\164\1\154\1\157\1\162\1\154\1\145\1\uffff\1\164\1\157\1\124\1\172\2\141\1\172\1\150\1\145\1\162\1\172\1\162\1\141\1\154\1\164\1\165\1\163\1\164\1\154\1\172\1\163\1\uffff\2\172\1\117\1\157\1\167\1\151\1\uffff\1\145\1\uffff\1\166\1\165\2\uffff\1\172\2\164\1\171\1\151\1\162\1\uffff\1\170\1\162\1\151\1\162\1\151\1\162\1\143\1\150\1\172\1\165\1\uffff\1\172\1\157\1\145\1\165\1\157\1\61\1\145\1\165\1\141\1\156\1\162\2\172\1\145\1\104\1\uffff\1\154\1\172\1\163\1\145\2\141\2\145\1\151\1\104\1\151\1\157\1\146\1\162\1\163\1\171\1\uffff\1\142\1\144\1\uffff\1\172\1\143\1\164\1\uffff\1\151\1\156\1\163\1\165\1\145\1\164\1\116\1\154\1\uffff\1\151\1\uffff\1\164\1\uffff\1\172\1\146\1\172\1\157\1\172\1\145\1\154\1\171\1\uffff\1\171\1\163\1\172\1\156\1\163\1\172\2\156\1\151\1\143\2\172\1\150\1\162\1\uffff\1\154\1\uffff\1\172\1\143\1\155\1\144\1\70\1\143\1\155\1\170\1\163\1\172\2\uffff\1\172\1\124\1\154\1\uffff\2\172\1\147\1\164\1\143\1\162\1\143\1\164\1\155\1\142\2\141\1\151\1\160\1\154\1\145\1\uffff\1\164\1\172\1\164\1\143\1\145\1\162\2\172\1\165\1\172\1\145\1\141\1\uffff\1\172\1\uffff\1\156\1\uffff\1\144\1\164\2\160\1\172\1\uffff\1\113\1\172\1\uffff\1\172\1\147\1\164\1\172\1\154\2\uffff\1\172\1\157\1\154\1\uffff\1\151\1\142\1\145\1\156\1\151\1\142\1\123\1\163\1\151\2\uffff\1\117\1\171\2\uffff\2\145\2\164\1\172\1\157\1\151\1\172\1\165\1\143\1\164\2\145\1\122\1\151\1\uffff\1\126\1\145\1\172\1\145\2\uffff\1\154\1\uffff\1\156\1\155\1\uffff\3\172\2\145\1\uffff\2\145\2\uffff\1\163\1\171\1\uffff\1\141\1\uffff\1\156\1\172\1\155\1\145\1\172\1\113\1\155\1\145\1\151\1\172\1\157\4\172\1\145\1\151\1\uffff\1\172\1\164\1\uffff\1\154\1\164\1\145\2\172\2\145\1\157\1\141\1\145\1\157\1\uffff\1\172\1\154\1\164\1\160\3\uffff\2\172\1\163\1\171\2\172\1\163\1\151\1\uffff\1\141\1\162\1\uffff\1\145\1\141\1\162\1\172\1\uffff\1\156\4\uffff\1\144\1\145\1\uffff\1\151\1\164\2\172\2\uffff\1\162\1\155\1\156\1\162\2\146\1\uffff\3\172\2\uffff\1\143\1\172\2\uffff\1\163\1\172\1\154\1\172\1\171\1\154\1\172\1\145\2\172\1\163\1\166\1\172\2\uffff\1\147\1\157\4\172\3\uffff\1\162\1\uffff\1\172\1\145\1\172\1\uffff\2\172\1\uffff\1\172\2\uffff\1\172\1\145\1\uffff\1\145\1\166\4\uffff\1\151\1\uffff\1\144\5\uffff\1\172\1\120\1\145\1\160\1\172\1\uffff\1\145\1\172\1\164\1\uffff\1\162\1\uffff\1\151\1\163\1\157\1\151\1\156\1\163\1\172\1\164\1\uffff\1\172\1\uffff";
    static final String DFA21_acceptS =
        "\37\uffff\1\106\1\107\1\uffff\1\114\1\115\1\116\1\120\1\121\3\uffff\1\155\1\156\1\157\3\uffff\1\u0095\2\u0096\1\u0099\1\u009a\1\uffff\1\47\1\1\1\2\1\u0090\1\3\1\u0084\2\uffff\1\u0095\40\uffff\1\30\1\57\1\26\1\31\1\44\1\60\1\27\1\32\1\53\1\52\1\33\1\u0097\1\u0098\1\54\1\34\1\55\1\uffff\1\56\1\41\1\42\1\50\1\102\1\43\1\uffff\1\61\1\51\1\u008f\1\104\16\uffff\1\u0092\1\uffff\1\103\1\u0094\1\105\1\106\1\107\3\uffff\1\114\1\115\1\116\1\120\1\121\3\uffff\1\155\1\156\1\157\1\u008e\1\165\1\u0093\1\u0096\1\u0099\1\37\1\35\4\uffff\1\5\10\uffff\1\162\22\uffff\1\172\15\uffff\1\u008d\4\uffff\1\40\1\36\1\45\1\46\23\uffff\1\161\25\uffff\1\u0080\6\uffff\1\25\1\uffff\1\62\2\uffff\1\123\1\17\6\uffff\1\22\12\uffff\1\173\17\uffff\1\170\20\uffff\1\153\2\uffff\1\167\3\uffff\1\71\10\uffff\1\6\1\uffff\1\u0091\1\uffff\1\74\10\uffff\1\20\16\uffff\1\15\1\uffff\1\174\12\uffff\1\150\1\163\3\uffff\1\72\20\uffff\1\u0083\14\uffff\1\124\1\uffff\1\176\1\uffff\1\154\5\uffff\1\u0086\2\uffff\1\146\5\uffff\1\152\1\67\3\uffff\1\21\11\uffff\1\73\1\70\2\uffff\1\110\1\171\17\uffff\1\65\4\uffff\1\134\1\141\1\uffff\1\145\2\uffff\1\175\5\uffff\1\137\2\uffff\1\13\1\177\2\uffff\1\64\1\uffff\1\164\21\uffff\1\101\2\uffff\1\u008b\13\uffff\1\130\4\uffff\1\10\1\11\1\166\10\uffff\1\16\2\uffff\1\131\4\uffff\1\63\1\uffff\1\125\1\u0081\1\76\1\77\2\uffff\1\111\4\uffff\1\127\1\4\6\uffff\1\140\3\uffff\1\u008a\1\126\2\uffff\1\14\1\133\15\uffff\1\u0085\1\122\6\uffff\1\144\1\7\1\75\1\uffff\1\u0088\3\uffff\1\142\2\uffff\1\143\1\uffff\1\66\1\100\2\uffff\1\u008c\2\uffff\1\12\1\112\1\117\1\160\1\uffff\1\151\1\uffff\1\135\1\132\1\136\1\147\1\113\5\uffff\1\u0089\3\uffff\1\u0082\1\uffff\1\24\10\uffff\1\u0087\1\uffff\1\23";
    static final String DFA21_specialS =
        "\1\0\u0295\uffff}>";
    static final String[] DFA21_transitionS = {
            "\11\64\2\63\2\64\1\63\22\64\1\63\1\24\1\61\1\54\1\60\1\23\1\3\1\62\1\42\1\43\1\21\1\17\1\44\1\20\1\27\1\22\1\35\1\36\10\56\1\55\1\52\1\26\1\1\1\25\1\30\1\53\32\60\1\45\1\64\1\46\1\57\1\60\1\64\1\41\1\60\1\4\1\11\1\31\1\32\2\60\1\5\1\50\1\51\1\14\1\16\1\15\1\47\1\34\1\60\1\12\1\13\1\7\1\6\1\10\1\33\3\60\1\37\1\2\1\40\uff82\64",
            "\1\65\1\66",
            "\1\70",
            "\1\72",
            "\1\74\15\uffff\1\75",
            "\1\77\1\uffff\1\103\6\uffff\1\100\1\101\4\uffff\1\102",
            "\1\104",
            "\1\111\1\106\5\uffff\1\107\2\uffff\1\105\6\uffff\1\110",
            "\1\113\3\uffff\1\112",
            "\1\116\3\uffff\1\114\3\uffff\1\117\5\uffff\1\120\4\uffff\1\115",
            "\1\121",
            "\1\122\16\uffff\1\123\1\124\1\uffff\1\125\1\uffff\1\126",
            "\1\127",
            "\1\131\11\uffff\1\130\3\uffff\1\133\1\uffff\1\132",
            "\1\134\7\uffff\1\136\11\uffff\1\135",
            "\1\140\21\uffff\1\137",
            "\1\144\17\uffff\1\142\1\143",
            "\1\147\22\uffff\1\146",
            "\1\152\4\uffff\1\153\15\uffff\1\151",
            "\1\155",
            "\1\157",
            "\1\161",
            "\1\164\1\163",
            "\1\166",
            "\1\171\13\uffff\1\170",
            "\1\176\1\uffff\1\175\3\uffff\1\174\5\uffff\1\173",
            "\1\177\7\uffff\1\u0082\5\uffff\1\u0081\2\uffff\1\u0080",
            "\1\u0083\6\uffff\1\u0085\11\uffff\1\u0084",
            "\1\u0086\20\uffff\1\u0087\2\uffff\1\u0088",
            "\12\u008a\10\uffff\1\u008c\1\uffff\3\u008c\5\uffff\1\u008c\13\uffff\1\u0089\6\uffff\1\u008a\2\uffff\1\u008c\1\uffff\3\u008c\5\uffff\1\u008c\13\uffff\1\u0089",
            "\12\u008a\10\uffff\1\u008c\1\uffff\3\u008c\5\uffff\1\u008c\22\uffff\1\u008a\2\uffff\1\u008c\1\uffff\3\u008c\5\uffff\1\u008c",
            "",
            "",
            "\1\u0092\20\uffff\1\u0091\1\uffff\1\u0090",
            "",
            "",
            "",
            "",
            "",
            "\1\u0098",
            "\1\u0099",
            "\1\u009a",
            "",
            "",
            "",
            "\1\u009e",
            "\12\u008a\10\uffff\1\u008c\1\uffff\3\u008c\5\uffff\1\u008c\22\uffff\1\u008a\2\uffff\1\u008c\1\uffff\3\u008c\5\uffff\1\u008c",
            "\1\76\34\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "",
            "",
            "",
            "",
            "",
            "\1\u00a3",
            "",
            "",
            "",
            "",
            "",
            "",
            "\1\u00a5\17\uffff\1\u00a6\1\u00a7",
            "\1\u00a8",
            "",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "\1\u00aa",
            "\1\u00ab\1\uffff\1\u00ac\12\uffff\1\u00ad",
            "\1\u00ae\7\uffff\1\u00b1\1\uffff\1\u00b0\3\uffff\1\u00af",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "\1\u00b3",
            "\1\u00b4\23\uffff\1\u00b6\3\uffff\1\u00b5",
            "\1\u00b7",
            "\1\u00b8",
            "\1\u00b9",
            "\1\u00ba",
            "\1\u00bb",
            "\1\u00bd\5\uffff\1\u00bc",
            "\1\u00bf\13\uffff\1\u00be",
            "\1\u00c0",
            "\1\u00c1",
            "\1\u00c2\12\uffff\1\u00c3",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\14\76\1\u00c4\15\76",
            "\1\u00c6\1\u00c7\14\uffff\1\u00c8",
            "\1\u00c9\1\uffff\1\u00ca",
            "\1\u00cb",
            "\1\u00cc",
            "\1\u00cd",
            "\1\u00ce",
            "\1\u00cf",
            "\1\u00d0",
            "\1\u00d1",
            "\1\u00d2",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "\1\u00d4\7\uffff\1\u00d5",
            "\1\u00d6",
            "\1\u00d7",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "\1\u00d8",
            "",
            "",
            "",
            "",
            "",
            "",
            "\1\u00da",
            "",
            "",
            "",
            "",
            "\1\u00dc",
            "\1\u00dd",
            "\1\u00de",
            "\1\u00df",
            "\1\u00e0",
            "\1\u00e1",
            "\1\u00e2",
            "\1\u00e3",
            "\1\u00e4",
            "\1\u00e5",
            "\1\u00e6",
            "\1\u00e7",
            "\1\u00e8\5\uffff\1\u00e9",
            "\1\u00ea",
            "",
            "\12\u008a\10\uffff\1\u008c\1\uffff\3\u008c\5\uffff\1\u008c\22\uffff\1\u008a\2\uffff\1\u008c\1\uffff\3\u008c\5\uffff\1\u008c",
            "",
            "",
            "",
            "",
            "",
            "\1\u00eb",
            "\1\76\13\uffff\12\76\7\uffff\1\76\1\u00ed\1\76\1\u00ee\13\76\1\u00ec\12\76\4\uffff\1\76\1\uffff\32\76",
            "\1\u00f0",
            "",
            "",
            "",
            "",
            "",
            "\1\u00f1",
            "\1\u00f2",
            "\1\u00f3",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "\1\u00f4",
            "\1\u00f5\1\uffff\1\u00f6",
            "\1\u00f7",
            "\1\u00f8",
            "",
            "\1\u00f9",
            "\1\u00fa",
            "\1\u00fb",
            "\1\u00fc",
            "\1\u00fd\23\uffff\1\u00fe",
            "\1\u00ff",
            "\1\u0100",
            "\1\u0101\5\uffff\1\u0102",
            "",
            "\1\u0103",
            "\1\u0104",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "\1\u0106",
            "\1\u0107",
            "\1\u0108",
            "\1\u0109",
            "\1\u010a",
            "\1\u010b",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\24\76\1\u010d\5\76",
            "\1\u010f",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\1\u0110\31\76",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "\1\u0114\3\uffff\1\u0113",
            "\1\u0115",
            "\1\u0116",
            "\1\u0117",
            "",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\4\76\1\u0118\25\76",
            "\1\u011a",
            "\1\u011b",
            "\1\u011c",
            "\1\u011d",
            "\1\u011e",
            "\1\u011f",
            "\1\u0120",
            "\1\u0121",
            "\1\u0122",
            "\1\u0123",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "\1\u0125",
            "",
            "\1\u0126",
            "\1\u0127\11\uffff\1\u0128",
            "\1\u0129\5\uffff\1\u012a",
            "\1\u012b\10\uffff\1\u012d\1\u012c",
            "",
            "",
            "",
            "",
            "\1\u012e",
            "\1\u012f",
            "\1\u0130",
            "\1\u0131",
            "\1\u0132",
            "\1\u0133",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "\1\u0135",
            "\1\u0136",
            "\1\u0137",
            "\1\u0138",
            "\1\u0139",
            "\1\u013a",
            "\1\u013c\3\uffff\1\u013b",
            "\1\u013d",
            "\1\u013e",
            "\1\u013f",
            "\1\u0140",
            "\1\u0141",
            "",
            "\1\u0142",
            "\1\u0143",
            "\1\u0144",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "\1\u0146",
            "\1\u0147",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "\1\u0149",
            "\1\u014a",
            "\1\u014b",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "\1\u014d",
            "\1\u014e",
            "\1\u014f",
            "\1\u0150",
            "\1\u0151",
            "\1\u0152",
            "\1\u0153",
            "\1\u0154",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "\1\u0156",
            "",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\22\76\1\u0158\7\76",
            "\1\u015a",
            "\1\u015b",
            "\1\u015c",
            "\1\u015d",
            "",
            "\1\u015e",
            "",
            "\1\u015f",
            "\1\u0160",
            "",
            "",
            "\1\76\13\uffff\12\76\7\uffff\23\76\1\u0161\6\76\4\uffff\1\76\1\uffff\32\76",
            "\1\u0163",
            "\1\u0164",
            "\1\u0165",
            "\1\u0166",
            "\1\u0167",
            "",
            "\1\u0168",
            "\1\u0169",
            "\1\u016a",
            "\1\u016b",
            "\1\u016d\3\uffff\1\u016c",
            "\1\u016e",
            "\1\u016f",
            "\1\u0170",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "\1\u0172",
            "",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "\1\u0174",
            "\1\u0175",
            "\1\u0176",
            "\1\u0177",
            "\1\u0178",
            "\1\u0179",
            "\1\u017a",
            "\1\u017b",
            "\1\u017c",
            "\1\u017d",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "\1\u0180",
            "\1\u0181",
            "",
            "\1\u0182",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "\1\u0184",
            "\1\u0185",
            "\1\u0186",
            "\1\u0187",
            "\1\u0188",
            "\1\u0189",
            "\1\u018a",
            "\1\u018b",
            "\1\u018c",
            "\1\u018d",
            "\1\u018e",
            "\1\u018f",
            "\1\u0190",
            "\1\u0191",
            "",
            "\1\u0192",
            "\1\u0193",
            "",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "\1\u0195",
            "\1\u0196",
            "",
            "\1\u0197",
            "\1\u0198",
            "\1\u0199",
            "\1\u019a",
            "\1\u019b",
            "\1\u019c",
            "\1\u019d",
            "\1\u019e",
            "",
            "\1\u019f",
            "",
            "\1\u01a0",
            "",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "\1\u01a2",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "\1\u01a4",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "\1\u01a6",
            "\1\u01a7",
            "\1\u01a8",
            "",
            "\1\u01a9",
            "\1\u01aa",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "\1\u01ac",
            "\1\u01ad",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "\1\u01af",
            "\1\u01b0",
            "\1\u01b1",
            "\1\u01b2",
            "\1\76\13\uffff\12\76\7\uffff\2\76\1\u01b3\27\76\4\uffff\1\76\1\uffff\32\76",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "\1\u01b6",
            "\1\u01b7",
            "",
            "\1\u01b8",
            "",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "\1\u01ba",
            "\1\u01bb",
            "\1\u01bc",
            "\1\u01bd",
            "\1\u01be",
            "\1\u01bf",
            "\1\u01c0",
            "\1\u01c1\16\uffff\1\u01c2",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "",
            "",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "\1\u01c5",
            "\1\u01c6",
            "",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "\1\u01c9",
            "\1\u01ca",
            "\1\u01cb",
            "\1\u01cc",
            "\1\u01cd",
            "\1\u01ce",
            "\1\u01cf",
            "\1\u01d0",
            "\1\u01d1",
            "\1\u01d2",
            "\1\u01d3",
            "\1\u01d4",
            "\1\u01d5",
            "\1\u01d6",
            "",
            "\1\u01d7",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "\1\u01d9",
            "\1\u01da",
            "\1\u01db",
            "\1\u01dc",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "\1\u01df",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "\1\u01e1",
            "\1\u01e2",
            "",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "",
            "\1\u01e4",
            "",
            "\1\u01e5",
            "\1\u01e6",
            "\1\u01e7",
            "\1\u01e8",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "",
            "\1\u01ea\6\uffff\1\u01eb",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "\1\u01ee",
            "\1\u01ef",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "\1\u01f1",
            "",
            "",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "\1\u01f3",
            "\1\u01f4",
            "",
            "\1\u01f5",
            "\1\u01f6",
            "\1\u01f7",
            "\1\u01f8",
            "\1\u01f9",
            "\1\u01fa",
            "\1\u01fb",
            "\1\u01fc",
            "\1\u01fd",
            "",
            "",
            "\1\u01fe",
            "\1\u01ff",
            "",
            "",
            "\1\u0200",
            "\1\u0201",
            "\1\u0202",
            "\1\u0203",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "\1\u0205",
            "\1\u0206",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "\1\u0208",
            "\1\u0209",
            "\1\u020a",
            "\1\u020b",
            "\1\u020c",
            "\1\u020d\4\uffff\1\u020e",
            "\1\u020f",
            "",
            "\1\u0211\3\uffff\1\u0210",
            "\1\u0212",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "\1\u0214",
            "",
            "",
            "\1\u0215",
            "",
            "\1\u0216",
            "\1\u0217",
            "",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "\1\u021b",
            "\1\u021c",
            "",
            "\1\u021d",
            "\1\u021e",
            "",
            "",
            "\1\u021f",
            "\1\u0220",
            "",
            "\1\u0221",
            "",
            "\1\u0222",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "\1\u0224",
            "\1\u0225",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "\1\u0227",
            "\1\u0228",
            "\1\u0229",
            "\1\u022a",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "\1\u022c",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "\1\u0231",
            "\1\u0232",
            "",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "\1\u0234",
            "",
            "\1\u0235",
            "\1\u0236",
            "\1\u0237",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "\1\u023a",
            "\1\u023b",
            "\1\u023c",
            "\1\u023d",
            "\1\u023e",
            "\1\u023f",
            "",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "\1\u0241",
            "\1\u0242",
            "\1\u0243",
            "",
            "",
            "",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "\1\u0246",
            "\1\u0247",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "\1\u024a",
            "\1\u024b",
            "",
            "\1\u024c",
            "\1\u024d",
            "",
            "\1\u024e",
            "\1\u024f",
            "\1\u0250",
            "\1\u0251",
            "",
            "\1\u0252",
            "",
            "",
            "",
            "",
            "\1\u0253",
            "\1\u0254",
            "",
            "\1\u0255",
            "\1\u0256",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "",
            "",
            "\1\u0259",
            "\1\u025a",
            "\1\u025b",
            "\1\u025c",
            "\1\u025d",
            "\1\u025e",
            "",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "",
            "",
            "\1\u0262",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "",
            "",
            "\1\u0264",
            "\1\u0265",
            "\1\u0266",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "\1\u0268",
            "\1\u0269",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "\1\u026b",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "\1\u026e",
            "\1\u026f",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "",
            "",
            "\1\u0271",
            "\1\u0272",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "",
            "",
            "",
            "\1\u0277",
            "",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "\1\u0279",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "",
            "",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "\1\u027f",
            "",
            "\1\u0280",
            "\1\u0281",
            "",
            "",
            "",
            "",
            "\1\u0282",
            "",
            "\1\u0283",
            "",
            "",
            "",
            "",
            "",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "\1\u0285",
            "\1\u0286",
            "\1\u0287",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "",
            "\1\u0289",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "\1\u028b",
            "",
            "\1\u028c",
            "",
            "\1\u028d",
            "\1\u028e",
            "\1\u028f",
            "\1\u0290",
            "\1\u0291",
            "\1\u0292",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            "\1\u0294",
            "",
            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
            ""
    };

    static final short[] DFA21_eot = DFA.unpackEncodedString(DFA21_eotS);
    static final short[] DFA21_eof = DFA.unpackEncodedString(DFA21_eofS);
    static final char[] DFA21_min = DFA.unpackEncodedStringToUnsignedChars(DFA21_minS);
    static final char[] DFA21_max = DFA.unpackEncodedStringToUnsignedChars(DFA21_maxS);
    static final short[] DFA21_accept = DFA.unpackEncodedString(DFA21_acceptS);
    static final short[] DFA21_special = DFA.unpackEncodedString(DFA21_specialS);
    static final short[][] DFA21_transition;

    static {
        int numStates = DFA21_transitionS.length;
        DFA21_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA21_transition[i] = DFA.unpackEncodedString(DFA21_transitionS[i]);
        }
    }

    class DFA21 extends DFA {

        public DFA21(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 21;
            this.eot = DFA21_eot;
            this.eof = DFA21_eof;
            this.min = DFA21_min;
            this.max = DFA21_max;
            this.accept = DFA21_accept;
            this.special = DFA21_special;
            this.transition = DFA21_transition;
        }
        public String getDescription() {
            return "1:1: Tokens : ( T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | T__88 | T__89 | T__90 | T__91 | T__92 | T__93 | T__94 | T__95 | T__96 | T__97 | T__98 | T__99 | T__100 | T__101 | T__102 | T__103 | T__104 | T__105 | T__106 | T__107 | T__108 | T__109 | T__110 | T__111 | T__112 | T__113 | T__114 | T__115 | T__116 | T__117 | T__118 | T__119 | T__120 | T__121 | T__122 | T__123 | T__124 | T__125 | T__126 | T__127 | T__128 | T__129 | T__130 | T__131 | T__132 | T__133 | T__134 | T__135 | T__136 | T__137 | T__138 | T__139 | T__140 | T__141 | T__142 | T__143 | T__144 | T__145 | T__146 | T__147 | T__148 | T__149 | T__150 | T__151 | T__152 | T__153 | T__154 | T__155 | T__156 | T__157 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER );";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            IntStream input = _input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA21_0 = input.LA(1);

                        s = -1;
                        if ( (LA21_0=='=') ) {s = 1;}

                        else if ( (LA21_0=='|') ) {s = 2;}

                        else if ( (LA21_0=='&') ) {s = 3;}

                        else if ( (LA21_0=='c') ) {s = 4;}

                        else if ( (LA21_0=='i') ) {s = 5;}

                        else if ( (LA21_0=='u') ) {s = 6;}

                        else if ( (LA21_0=='t') ) {s = 7;}

                        else if ( (LA21_0=='v') ) {s = 8;}

                        else if ( (LA21_0=='d') ) {s = 9;}

                        else if ( (LA21_0=='r') ) {s = 10;}

                        else if ( (LA21_0=='s') ) {s = 11;}

                        else if ( (LA21_0=='l') ) {s = 12;}

                        else if ( (LA21_0=='n') ) {s = 13;}

                        else if ( (LA21_0=='m') ) {s = 14;}

                        else if ( (LA21_0=='+') ) {s = 15;}

                        else if ( (LA21_0=='-') ) {s = 16;}

                        else if ( (LA21_0=='*') ) {s = 17;}

                        else if ( (LA21_0=='/') ) {s = 18;}

                        else if ( (LA21_0=='%') ) {s = 19;}

                        else if ( (LA21_0=='!') ) {s = 20;}

                        else if ( (LA21_0=='>') ) {s = 21;}

                        else if ( (LA21_0=='<') ) {s = 22;}

                        else if ( (LA21_0=='.') ) {s = 23;}

                        else if ( (LA21_0=='?') ) {s = 24;}

                        else if ( (LA21_0=='e') ) {s = 25;}

                        else if ( (LA21_0=='f') ) {s = 26;}

                        else if ( (LA21_0=='w') ) {s = 27;}

                        else if ( (LA21_0=='p') ) {s = 28;}

                        else if ( (LA21_0=='0') ) {s = 29;}

                        else if ( (LA21_0=='1') ) {s = 30;}

                        else if ( (LA21_0=='{') ) {s = 31;}

                        else if ( (LA21_0=='}') ) {s = 32;}

                        else if ( (LA21_0=='a') ) {s = 33;}

                        else if ( (LA21_0=='(') ) {s = 34;}

                        else if ( (LA21_0==')') ) {s = 35;}

                        else if ( (LA21_0==',') ) {s = 36;}

                        else if ( (LA21_0=='[') ) {s = 37;}

                        else if ( (LA21_0==']') ) {s = 38;}

                        else if ( (LA21_0=='o') ) {s = 39;}

                        else if ( (LA21_0=='j') ) {s = 40;}

                        else if ( (LA21_0=='k') ) {s = 41;}

                        else if ( (LA21_0==';') ) {s = 42;}

                        else if ( (LA21_0=='@') ) {s = 43;}

                        else if ( (LA21_0=='#') ) {s = 44;}

                        else if ( (LA21_0==':') ) {s = 45;}

                        else if ( ((LA21_0>='2' && LA21_0<='9')) ) {s = 46;}

                        else if ( (LA21_0=='^') ) {s = 47;}

                        else if ( (LA21_0=='$'||(LA21_0>='A' && LA21_0<='Z')||LA21_0=='_'||LA21_0=='b'||(LA21_0>='g' && LA21_0<='h')||LA21_0=='q'||(LA21_0>='x' && LA21_0<='z')) ) {s = 48;}

                        else if ( (LA21_0=='\"') ) {s = 49;}

                        else if ( (LA21_0=='\'') ) {s = 50;}

                        else if ( ((LA21_0>='\t' && LA21_0<='\n')||LA21_0=='\r'||LA21_0==' ') ) {s = 51;}

                        else if ( ((LA21_0>='\u0000' && LA21_0<='\b')||(LA21_0>='\u000B' && LA21_0<='\f')||(LA21_0>='\u000E' && LA21_0<='\u001F')||LA21_0=='\\'||LA21_0=='`'||(LA21_0>='~' && LA21_0<='\uFFFF')) ) {s = 52;}

                        if ( s>=0 ) return s;
                        break;
            }
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 21, _s, input);
            error(nvae);
            throw nvae;
        }
    }
 

}