From fe4c3e97154c27fe7687b6465cefaad5bdacb970 Mon Sep 17 00:00:00 2001
From: gmantele <gmantele@ari.uni-heidelberg.de>
Date: Wed, 13 Sep 2017 19:08:42 +0200
Subject: [PATCH] [ADQL] Also append an HINT message in the ParseException
 message when a SQL reserved word is encountered instead of a
 column/table/schema name/alias.

On the contrary to the previous commit, this time a list of SQL reserved words
has been added into the ADQL grammar. In this way, the parser will ensure that
no word of this list is used in an ADQL query. The raised error is then enriched
of an HINT message stating that this word is part of SQL, is not supported
by ADQL and must be written between double quotes if used as an identifier.

The list of SQL reserved words comes from the ADQL-2.0 standard, after removal
of all potentially used ADQL words, in order to avoid a conflict with the
already existing tokens in the ADQL grammar.
---
 src/adql/parser/ADQLParser.java             |  226 +-
 src/adql/parser/ADQLParserConstants.java    |  199 +-
 src/adql/parser/ADQLParserTokenManager.java | 7814 ++++++++++++++++---
 src/adql/parser/ParseException.java         |   20 +-
 src/adql/parser/ParseException.java.backup  |   20 +-
 src/adql/parser/adqlGrammar.jj              |   16 +-
 test/adql/parser/TestADQLParser.java        |   21 +
 7 files changed, 7097 insertions(+), 1219 deletions(-)

diff --git a/src/adql/parser/ADQLParser.java b/src/adql/parser/ADQLParser.java
index 0ebb8f6..7ca0e58 100644
--- a/src/adql/parser/ADQLParser.java
+++ b/src/adql/parser/ADQLParser.java
@@ -3948,96 +3948,14 @@ public class ADQLParser implements ADQLParserConstants {
 		}
 	}
 
-	private boolean jj_3R_65(){
-		Token xsp;
-		xsp = jj_scanpos;
-		if (jj_3R_107()){
-			jj_scanpos = xsp;
-			if (jj_3R_108()){
-				jj_scanpos = xsp;
-				if (jj_3R_109()){
-					jj_scanpos = xsp;
-					if (jj_3R_110()){
-						jj_scanpos = xsp;
-						if (jj_3R_111())
-							return true;
-					}
-				}
-			}
-		}
-		return false;
-	}
-
-	private boolean jj_3R_137(){
-		if (jj_3R_112())
-			return true;
-		if (jj_scan_token(COMMA))
-			return true;
-		if (jj_3R_112())
-			return true;
-		return false;
-	}
-
-	private boolean jj_3R_134(){
-		Token xsp;
-		xsp = jj_scanpos;
-		if (jj_scan_token(48)){
-			jj_scanpos = xsp;
-			if (jj_scan_token(49)){
-				jj_scanpos = xsp;
-				if (jj_scan_token(50)){
-					jj_scanpos = xsp;
-					if (jj_scan_token(51))
-						return true;
-				}
-			}
-		}
-		if (jj_scan_token(LEFT_PAR))
-			return true;
-		xsp = jj_scanpos;
-		if (jj_scan_token(19))
-			jj_scanpos = xsp;
-		if (jj_3R_51())
-			return true;
-		if (jj_scan_token(RIGHT_PAR))
-			return true;
-		return false;
-	}
-
-	private boolean jj_3R_117(){
-		if (jj_scan_token(RIGHT))
-			return true;
-		return false;
-	}
-
-	private boolean jj_3R_133(){
-		if (jj_scan_token(COUNT))
-			return true;
-		if (jj_scan_token(LEFT_PAR))
-			return true;
-		Token xsp;
-		xsp = jj_scanpos;
-		if (jj_scan_token(19))
-			jj_scanpos = xsp;
-		xsp = jj_scanpos;
-		if (jj_scan_token(10)){
-			jj_scanpos = xsp;
-			if (jj_3R_146())
-				return true;
-		}
-		if (jj_scan_token(RIGHT_PAR))
-			return true;
-		return false;
-	}
-
 	private boolean jj_3R_126(){
 		Token xsp;
 		xsp = jj_scanpos;
-		if (jj_scan_token(98)){
+		if (jj_scan_token(99)){
 			jj_scanpos = xsp;
-			if (jj_scan_token(99)){
+			if (jj_scan_token(100)){
 				jj_scanpos = xsp;
-				if (jj_scan_token(100))
+				if (jj_scan_token(101))
 					return true;
 			}
 		}
@@ -4078,7 +3996,7 @@ public class ADQLParser implements ADQLParserConstants {
 	private boolean jj_3R_54(){
 		Token xsp;
 		xsp = jj_scanpos;
-		if (jj_scan_token(24)){
+		if (jj_scan_token(25)){
 			jj_scanpos = xsp;
 			if (jj_3R_73())
 				return true;
@@ -4124,7 +4042,7 @@ public class ADQLParser implements ADQLParserConstants {
 			}
 		}
 		xsp = jj_scanpos;
-		if (jj_scan_token(25))
+		if (jj_scan_token(26))
 			jj_scanpos = xsp;
 		return false;
 	}
@@ -4132,7 +4050,7 @@ public class ADQLParser implements ADQLParserConstants {
 	private boolean jj_3R_55(){
 		Token xsp;
 		xsp = jj_scanpos;
-		if (jj_scan_token(24)){
+		if (jj_scan_token(25)){
 			jj_scanpos = xsp;
 			if (jj_3R_74())
 				return true;
@@ -4173,7 +4091,7 @@ public class ADQLParser implements ADQLParserConstants {
 	private boolean jj_3R_28(){
 		Token xsp;
 		xsp = jj_scanpos;
-		if (jj_scan_token(35))
+		if (jj_scan_token(36))
 			jj_scanpos = xsp;
 		if (jj_scan_token(BETWEEN))
 			return true;
@@ -4204,7 +4122,7 @@ public class ADQLParser implements ADQLParserConstants {
 			return true;
 		Token xsp;
 		xsp = jj_scanpos;
-		if (jj_scan_token(35))
+		if (jj_scan_token(36))
 			jj_scanpos = xsp;
 		if (jj_scan_token(LIKE))
 			return true;
@@ -4274,7 +4192,7 @@ public class ADQLParser implements ADQLParserConstants {
 	private boolean jj_3_14(){
 		Token xsp;
 		xsp = jj_scanpos;
-		if (jj_scan_token(41)){
+		if (jj_scan_token(42)){
 			jj_scanpos = xsp;
 			if (jj_3R_27())
 				return true;
@@ -4930,7 +4848,7 @@ public class ADQLParser implements ADQLParserConstants {
 	private boolean jj_3R_45(){
 		Token xsp;
 		xsp = jj_scanpos;
-		if (jj_scan_token(8)){
+		if (jj_scan_token(9)){
 			jj_scanpos = xsp;
 			if (jj_3R_61())
 				return true;
@@ -4953,9 +4871,9 @@ public class ADQLParser implements ADQLParserConstants {
 	private boolean jj_3R_135(){
 		Token xsp;
 		xsp = jj_scanpos;
-		if (jj_scan_token(10)){
+		if (jj_scan_token(11)){
 			jj_scanpos = xsp;
-			if (jj_scan_token(11))
+			if (jj_scan_token(12))
 				return true;
 		}
 		if (jj_3R_128())
@@ -5012,9 +4930,9 @@ public class ADQLParser implements ADQLParserConstants {
 	private boolean jj_3R_129(){
 		Token xsp;
 		xsp = jj_scanpos;
-		if (jj_scan_token(8)){
+		if (jj_scan_token(9)){
 			jj_scanpos = xsp;
-			if (jj_scan_token(9))
+			if (jj_scan_token(10))
 				return true;
 		}
 		if (jj_3R_112())
@@ -5079,13 +4997,13 @@ public class ADQLParser implements ADQLParserConstants {
 			return true;
 		Token xsp;
 		xsp = jj_scanpos;
-		if (jj_scan_token(8)){
+		if (jj_scan_token(9)){
 			jj_scanpos = xsp;
-			if (jj_scan_token(9)){
+			if (jj_scan_token(10)){
 				jj_scanpos = xsp;
-				if (jj_scan_token(10)){
+				if (jj_scan_token(11)){
 					jj_scanpos = xsp;
-					if (jj_scan_token(11))
+					if (jj_scan_token(12))
 						return true;
 				}
 			}
@@ -5204,7 +5122,7 @@ public class ADQLParser implements ADQLParserConstants {
 	private boolean jj_3_5(){
 		Token xsp;
 		xsp = jj_scanpos;
-		if (jj_scan_token(64)){
+		if (jj_scan_token(65)){
 			jj_scanpos = xsp;
 			if (jj_3R_20())
 				return true;
@@ -5226,9 +5144,9 @@ public class ADQLParser implements ADQLParserConstants {
 	private boolean jj_3R_18(){
 		Token xsp;
 		xsp = jj_scanpos;
-		if (jj_scan_token(8)){
+		if (jj_scan_token(9)){
 			jj_scanpos = xsp;
-			if (jj_scan_token(9))
+			if (jj_scan_token(10))
 				return true;
 		}
 		return false;
@@ -5612,9 +5530,9 @@ public class ADQLParser implements ADQLParserConstants {
 	private boolean jj_3R_107(){
 		Token xsp;
 		xsp = jj_scanpos;
-		if (jj_scan_token(59)){
+		if (jj_scan_token(60)){
 			jj_scanpos = xsp;
-			if (jj_scan_token(60))
+			if (jj_scan_token(61))
 				return true;
 		}
 		if (jj_scan_token(LEFT_PAR))
@@ -5639,9 +5557,9 @@ public class ADQLParser implements ADQLParserConstants {
 	private boolean jj_3R_152(){
 		Token xsp;
 		xsp = jj_scanpos;
-		if (jj_scan_token(8)){
+		if (jj_scan_token(9)){
 			jj_scanpos = xsp;
-			if (jj_scan_token(9))
+			if (jj_scan_token(10))
 				return true;
 		}
 		return false;
@@ -5657,6 +5575,88 @@ public class ADQLParser implements ADQLParserConstants {
 		return false;
 	}
 
+	private boolean jj_3R_65(){
+		Token xsp;
+		xsp = jj_scanpos;
+		if (jj_3R_107()){
+			jj_scanpos = xsp;
+			if (jj_3R_108()){
+				jj_scanpos = xsp;
+				if (jj_3R_109()){
+					jj_scanpos = xsp;
+					if (jj_3R_110()){
+						jj_scanpos = xsp;
+						if (jj_3R_111())
+							return true;
+					}
+				}
+			}
+		}
+		return false;
+	}
+
+	private boolean jj_3R_137(){
+		if (jj_3R_112())
+			return true;
+		if (jj_scan_token(COMMA))
+			return true;
+		if (jj_3R_112())
+			return true;
+		return false;
+	}
+
+	private boolean jj_3R_134(){
+		Token xsp;
+		xsp = jj_scanpos;
+		if (jj_scan_token(49)){
+			jj_scanpos = xsp;
+			if (jj_scan_token(50)){
+				jj_scanpos = xsp;
+				if (jj_scan_token(51)){
+					jj_scanpos = xsp;
+					if (jj_scan_token(52))
+						return true;
+				}
+			}
+		}
+		if (jj_scan_token(LEFT_PAR))
+			return true;
+		xsp = jj_scanpos;
+		if (jj_scan_token(20))
+			jj_scanpos = xsp;
+		if (jj_3R_51())
+			return true;
+		if (jj_scan_token(RIGHT_PAR))
+			return true;
+		return false;
+	}
+
+	private boolean jj_3R_117(){
+		if (jj_scan_token(RIGHT))
+			return true;
+		return false;
+	}
+
+	private boolean jj_3R_133(){
+		if (jj_scan_token(COUNT))
+			return true;
+		if (jj_scan_token(LEFT_PAR))
+			return true;
+		Token xsp;
+		xsp = jj_scanpos;
+		if (jj_scan_token(20))
+			jj_scanpos = xsp;
+		xsp = jj_scanpos;
+		if (jj_scan_token(11)){
+			jj_scanpos = xsp;
+			if (jj_3R_146())
+				return true;
+		}
+		if (jj_scan_token(RIGHT_PAR))
+			return true;
+		return false;
+	}
+
 	/** Generated Token Manager. */
 	public ADQLParserTokenManager token_source;
 	SimpleCharStream jj_input_stream;
@@ -5681,19 +5681,19 @@ public class ADQLParser implements ADQLParserConstants {
 	}
 
 	private static void jj_la1_init_0(){
-		jj_la1_0 = new int[]{0x41,0x0,0x0,0x0,0x0,0x80000,0x100000,0x20,0x0,0x0,0x400000,0x400000,0x400,0x304,0x20,0x20,0x20,0x0,0x10,0x10,0x10,0x0,0x0,0x0,0x400000,0x400000,0x400000,0x0,0x4,0x3d800000,0x1c000000,0x2000000,0x1d000000,0x1d000000,0x1c000000,0x2000000,0x1d000000,0x1d000000,0x20,0xc0000000,0x3d800000,0x0,0x0,0x0,0x300,0x300,0x4,0x4,0x0,0x300,0x300,0xc00,0xc00,0x300,0x300,0x4,0x80,0x0,0x4,0x0,0x0,0x0,0x0,0x0,0x4,0x0,0x0,0x3f000,0x0,0x0,0x304,0x3f000,0x0,0x0,0x20,0x4,0x80000,0x704,0x0,0x80000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x0,0x0,0x304,0x20,0x20,0x0,0x0,0x20,0x304,};
+		jj_la1_0 = new int[]{0x81,0x0,0x0,0x0,0x0,0x100000,0x200000,0x40,0x0,0x0,0x800000,0x800000,0x800,0x608,0x40,0x40,0x40,0x0,0x20,0x20,0x20,0x0,0x0,0x0,0x800000,0x800000,0x800000,0x0,0x8,0x7b000000,0x38000000,0x4000000,0x3a000000,0x3a000000,0x38000000,0x4000000,0x3a000000,0x3a000000,0x40,0x80000000,0x7b000000,0x0,0x0,0x0,0x600,0x600,0x8,0x8,0x0,0x600,0x600,0x1800,0x1800,0x600,0x600,0x8,0x100,0x0,0x8,0x0,0x0,0x0,0x0,0x0,0x8,0x0,0x0,0x7e000,0x0,0x0,0x608,0x7e000,0x0,0x0,0x40,0x8,0x100000,0xe08,0x0,0x100000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x0,0x0,0x608,0x40,0x40,0x0,0x0,0x40,0x608,};
 	}
 
 	private static void jj_la1_init_1(){
-		jj_la1_1 = new int[]{0x0,0x1,0x800,0x1000,0x2000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffff0000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc000,0xc000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1f0000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1f0000,0x0,0x0,0x0,0x7e00000,0x8,0x6,0x6,0x8,0x0,0x8,0x8,0x0,0x108,0x200,0xffff0000,0x0,0x8,0x8,0x0,0x0,0x0,0xffff0000,0xf0000,0x0,0x1f0000,0x18000000,0x1000000,0x1000000,0x1000000,0x1000000,0xf8000000,0x0,0x7e00000,0xf8000000,0xf81f0000,0x0,0x0,0x0,0x0,0x0,0xffff0000,};
+		jj_la1_1 = new int[]{0x0,0x2,0x1000,0x2000,0x4000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfffe0000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x18000,0x18000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x3e0000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3e0000,0x0,0x0,0x0,0xfc00000,0x10,0xc,0xc,0x10,0x0,0x10,0x10,0x0,0x210,0x400,0xfffe0000,0x0,0x10,0x10,0x0,0x0,0x0,0xfffe0000,0x1e0000,0x0,0x3e0000,0x30000000,0x2000000,0x2000000,0x2000000,0x2000000,0xf0000000,0x0,0xfc00000,0xf0000000,0xf03e0000,0x0,0x0,0x0,0x0,0x0,0xfffe0000,};
 	}
 
 	private static void jj_la1_init_2(){
-		jj_la1_2 = new int[]{0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80000000,0x80000000,0x0,0x80000000,0x0,0x91ffffff,0x0,0x0,0x0,0x80000000,0x0,0x0,0x0,0x80000000,0x0,0x0,0x0,0x80000000,0x0,0x80000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10000000,0x0,0x0,0x0,0x0,0x80000000,0x90000000,0x80000000,0x0,0x0,0x0,0x0,0x0,0x0,0x80000000,0x0,0x1,0x90000000,0x80000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x91ffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x91ffffff,0x0,0x0,0x0,0x0,0x80000000,0x80000000,0x80000000,0x80000000,0x2,0x0,0x0,0x1fffffe,0x81fffffe,0x0,0x0,0x1fffc,0x1fe0000,0x0,0x91ffffff,};
+		jj_la1_2 = new int[]{0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x23ffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20000000,0x0,0x0,0x0,0x0,0x0,0x20000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x20000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x23ffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x23ffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x5,0x0,0x0,0x3fffffd,0x3fffffd,0x0,0x0,0x3fff8,0x3fc0000,0x0,0x23ffffff,};
 	}
 
 	private static void jj_la1_init_3(){
-		jj_la1_3 = new int[]{0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x1,0x0,0x1,0x0,0x1d,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x11,0x0,0x0,0x0,0x1,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1c,0x18,0x0,0x0,0x1d,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x1d,0x0,0x0,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1d,0x0,0x0,0x0,0x0,0x0,0x0,0x1d,0x0,0x0,0x0,0x0,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x1,0x1d,0x0,0x0,0x0,0x0,0x0,0x1d,};
+		jj_la1_3 = new int[]{0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3,0x3,0x0,0x3,0x0,0x3b,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x23,0x0,0x0,0x0,0x3,0x0,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x38,0x30,0x0,0x0,0x3b,0x3,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x3b,0x0,0x0,0x3,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3b,0x0,0x0,0x0,0x0,0x0,0x0,0x3b,0x0,0x0,0x0,0x0,0x3,0x3,0x3,0x3,0x0,0x0,0x0,0x2,0x3b,0x0,0x0,0x0,0x0,0x0,0x3b,};
 	}
 
 	final private JJCalls[] jj_2_rtns = new JJCalls[18];
@@ -5922,7 +5922,7 @@ public class ADQLParser implements ADQLParserConstants {
 	/** Generate ParseException. */
 	public ParseException generateParseException(){
 		jj_expentries.clear();
-		boolean[] la1tokens = new boolean[102];
+		boolean[] la1tokens = new boolean[103];
 		if (jj_kind >= 0){
 			la1tokens[jj_kind] = true;
 			jj_kind = -1;
@@ -5945,7 +5945,7 @@ public class ADQLParser implements ADQLParserConstants {
 				}
 			}
 		}
-		for(int i = 0; i < 102; i++){
+		for(int i = 0; i < 103; i++){
 			if (la1tokens[i]){
 				jj_expentry = new int[1];
 				jj_expentry[0] = i;
diff --git a/src/adql/parser/ADQLParserConstants.java b/src/adql/parser/ADQLParserConstants.java
index 4eabe5f..eb06ae9 100644
--- a/src/adql/parser/ADQLParserConstants.java
+++ b/src/adql/parser/ADQLParserConstants.java
@@ -11,195 +11,197 @@ public interface ADQLParserConstants {
   /** End of File. */
   int EOF = 0;
   /** RegularExpression Id. */
-  int LEFT_PAR = 2;
+  int SQL_RESERVED_WORD = 2;
   /** RegularExpression Id. */
-  int RIGHT_PAR = 3;
+  int LEFT_PAR = 3;
   /** RegularExpression Id. */
-  int DOT = 4;
+  int RIGHT_PAR = 4;
   /** RegularExpression Id. */
-  int COMMA = 5;
+  int DOT = 5;
   /** RegularExpression Id. */
-  int EOQ = 6;
+  int COMMA = 6;
   /** RegularExpression Id. */
-  int CONCAT = 7;
+  int EOQ = 7;
   /** RegularExpression Id. */
-  int PLUS = 8;
+  int CONCAT = 8;
   /** RegularExpression Id. */
-  int MINUS = 9;
+  int PLUS = 9;
   /** RegularExpression Id. */
-  int ASTERISK = 10;
+  int MINUS = 10;
   /** RegularExpression Id. */
-  int DIVIDE = 11;
+  int ASTERISK = 11;
   /** RegularExpression Id. */
-  int EQUAL = 12;
+  int DIVIDE = 12;
   /** RegularExpression Id. */
-  int NOT_EQUAL = 13;
+  int EQUAL = 13;
   /** RegularExpression Id. */
-  int LESS_THAN = 14;
+  int NOT_EQUAL = 14;
   /** RegularExpression Id. */
-  int LESS_EQUAL_THAN = 15;
+  int LESS_THAN = 15;
   /** RegularExpression Id. */
-  int GREATER_THAN = 16;
+  int LESS_EQUAL_THAN = 16;
   /** RegularExpression Id. */
-  int GREATER_EQUAL_THAN = 17;
+  int GREATER_THAN = 17;
   /** RegularExpression Id. */
-  int SELECT = 18;
+  int GREATER_EQUAL_THAN = 18;
   /** RegularExpression Id. */
-  int QUANTIFIER = 19;
+  int SELECT = 19;
   /** RegularExpression Id. */
-  int TOP = 20;
+  int QUANTIFIER = 20;
   /** RegularExpression Id. */
-  int FROM = 21;
+  int TOP = 21;
   /** RegularExpression Id. */
-  int AS = 22;
+  int FROM = 22;
   /** RegularExpression Id. */
-  int NATURAL = 23;
+  int AS = 23;
   /** RegularExpression Id. */
-  int INNER = 24;
+  int NATURAL = 24;
   /** RegularExpression Id. */
-  int OUTER = 25;
+  int INNER = 25;
   /** RegularExpression Id. */
-  int RIGHT = 26;
+  int OUTER = 26;
   /** RegularExpression Id. */
-  int LEFT = 27;
+  int RIGHT = 27;
   /** RegularExpression Id. */
-  int FULL = 28;
+  int LEFT = 28;
   /** RegularExpression Id. */
-  int JOIN = 29;
+  int FULL = 29;
   /** RegularExpression Id. */
-  int ON = 30;
+  int JOIN = 30;
   /** RegularExpression Id. */
-  int USING = 31;
+  int ON = 31;
   /** RegularExpression Id. */
-  int WHERE = 32;
+  int USING = 32;
   /** RegularExpression Id. */
-  int AND = 33;
+  int WHERE = 33;
   /** RegularExpression Id. */
-  int OR = 34;
+  int AND = 34;
   /** RegularExpression Id. */
-  int NOT = 35;
+  int OR = 35;
   /** RegularExpression Id. */
-  int IS = 36;
+  int NOT = 36;
   /** RegularExpression Id. */
-  int NULL = 37;
+  int IS = 37;
   /** RegularExpression Id. */
-  int BETWEEN = 38;
+  int NULL = 38;
   /** RegularExpression Id. */
-  int LIKE = 39;
+  int BETWEEN = 39;
   /** RegularExpression Id. */
-  int IN = 40;
+  int LIKE = 40;
   /** RegularExpression Id. */
-  int EXISTS = 41;
+  int IN = 41;
   /** RegularExpression Id. */
-  int BY = 42;
+  int EXISTS = 42;
   /** RegularExpression Id. */
-  int GROUP = 43;
+  int BY = 43;
   /** RegularExpression Id. */
-  int HAVING = 44;
+  int GROUP = 44;
   /** RegularExpression Id. */
-  int ORDER = 45;
+  int HAVING = 45;
   /** RegularExpression Id. */
-  int ASC = 46;
+  int ORDER = 46;
   /** RegularExpression Id. */
-  int DESC = 47;
+  int ASC = 47;
   /** RegularExpression Id. */
-  int AVG = 48;
+  int DESC = 48;
   /** RegularExpression Id. */
-  int MAX = 49;
+  int AVG = 49;
   /** RegularExpression Id. */
-  int MIN = 50;
+  int MAX = 50;
   /** RegularExpression Id. */
-  int SUM = 51;
+  int MIN = 51;
   /** RegularExpression Id. */
-  int COUNT = 52;
+  int SUM = 52;
   /** RegularExpression Id. */
-  int BOX = 53;
+  int COUNT = 53;
   /** RegularExpression Id. */
-  int CENTROID = 54;
+  int BOX = 54;
   /** RegularExpression Id. */
-  int CIRCLE = 55;
+  int CENTROID = 55;
   /** RegularExpression Id. */
-  int POINT = 56;
+  int CIRCLE = 56;
   /** RegularExpression Id. */
-  int POLYGON = 57;
+  int POINT = 57;
   /** RegularExpression Id. */
-  int REGION = 58;
+  int POLYGON = 58;
   /** RegularExpression Id. */
-  int CONTAINS = 59;
+  int REGION = 59;
   /** RegularExpression Id. */
-  int INTERSECTS = 60;
+  int CONTAINS = 60;
   /** RegularExpression Id. */
-  int AREA = 61;
+  int INTERSECTS = 61;
   /** RegularExpression Id. */
-  int COORD1 = 62;
+  int AREA = 62;
   /** RegularExpression Id. */
-  int COORD2 = 63;
+  int COORD1 = 63;
   /** RegularExpression Id. */
-  int COORDSYS = 64;
+  int COORD2 = 64;
   /** RegularExpression Id. */
-  int DISTANCE = 65;
+  int COORDSYS = 65;
   /** RegularExpression Id. */
-  int ABS = 66;
+  int DISTANCE = 66;
   /** RegularExpression Id. */
-  int CEILING = 67;
+  int ABS = 67;
   /** RegularExpression Id. */
-  int DEGREES = 68;
+  int CEILING = 68;
   /** RegularExpression Id. */
-  int EXP = 69;
+  int DEGREES = 69;
   /** RegularExpression Id. */
-  int FLOOR = 70;
+  int EXP = 70;
   /** RegularExpression Id. */
-  int LOG = 71;
+  int FLOOR = 71;
   /** RegularExpression Id. */
-  int LOG10 = 72;
+  int LOG = 72;
   /** RegularExpression Id. */
-  int MOD = 73;
+  int LOG10 = 73;
   /** RegularExpression Id. */
-  int PI = 74;
+  int MOD = 74;
   /** RegularExpression Id. */
-  int POWER = 75;
+  int PI = 75;
   /** RegularExpression Id. */
-  int RADIANS = 76;
+  int POWER = 76;
   /** RegularExpression Id. */
-  int RAND = 77;
+  int RADIANS = 77;
   /** RegularExpression Id. */
-  int ROUND = 78;
+  int RAND = 78;
   /** RegularExpression Id. */
-  int SQRT = 79;
+  int ROUND = 79;
   /** RegularExpression Id. */
-  int TRUNCATE = 80;
+  int SQRT = 80;
   /** RegularExpression Id. */
-  int ACOS = 81;
+  int TRUNCATE = 81;
   /** RegularExpression Id. */
-  int ASIN = 82;
+  int ACOS = 82;
   /** RegularExpression Id. */
-  int ATAN = 83;
+  int ASIN = 83;
   /** RegularExpression Id. */
-  int ATAN2 = 84;
+  int ATAN = 84;
   /** RegularExpression Id. */
-  int COS = 85;
+  int ATAN2 = 85;
   /** RegularExpression Id. */
-  int COT = 86;
+  int COS = 86;
   /** RegularExpression Id. */
-  int SIN = 87;
+  int COT = 87;
   /** RegularExpression Id. */
-  int TAN = 88;
+  int SIN = 88;
   /** RegularExpression Id. */
-  int STRING_LITERAL = 92;
+  int TAN = 89;
   /** RegularExpression Id. */
-  int DELIMITED_IDENTIFIER = 95;
+  int STRING_LITERAL = 93;
   /** RegularExpression Id. */
-  int REGULAR_IDENTIFIER = 96;
+  int DELIMITED_IDENTIFIER = 96;
   /** RegularExpression Id. */
-  int Letter = 97;
+  int REGULAR_IDENTIFIER = 97;
   /** RegularExpression Id. */
-  int SCIENTIFIC_NUMBER = 98;
+  int Letter = 98;
   /** RegularExpression Id. */
-  int UNSIGNED_FLOAT = 99;
+  int SCIENTIFIC_NUMBER = 99;
   /** RegularExpression Id. */
-  int UNSIGNED_INTEGER = 100;
+  int UNSIGNED_FLOAT = 100;
   /** RegularExpression Id. */
-  int DIGIT = 101;
+  int UNSIGNED_INTEGER = 101;
+  /** RegularExpression Id. */
+  int DIGIT = 102;
 
   /** Lexical state. */
   int DEFAULT = 0;
@@ -212,6 +214,7 @@ public interface ADQLParserConstants {
   String[] tokenImage = {
     "<EOF>",
     "<token of kind 1>",
+    "<SQL_RESERVED_WORD>",
     "\"(\"",
     "\")\"",
     "\".\"",
@@ -299,12 +302,12 @@ public interface ADQLParserConstants {
     "\"COT\"",
     "\"SIN\"",
     "\"TAN\"",
-    "<token of kind 89>",
+    "<token of kind 90>",
     "\"\\\'\"",
-    "<token of kind 91>",
+    "<token of kind 92>",
     "\"\\\'\"",
     "\"\\\"\"",
-    "<token of kind 94>",
+    "<token of kind 95>",
     "\"\\\"\"",
     "<REGULAR_IDENTIFIER>",
     "<Letter>",
diff --git a/src/adql/parser/ADQLParserTokenManager.java b/src/adql/parser/ADQLParserTokenManager.java
index 0ac05cc..954646c 100644
--- a/src/adql/parser/ADQLParserTokenManager.java
+++ b/src/adql/parser/ADQLParserTokenManager.java
@@ -47,7 +47,7 @@ private int jjMoveStringLiteralDfa0_2(){
    switch(curChar)
    {
       case 34:
-         return jjStartNfaWithStates_2(0, 95, 1);
+         return jjStartNfaWithStates_2(0, 96, 1);
       default :
          return jjMoveNfa_2(0, 0);
    }
@@ -84,15 +84,15 @@ private int jjMoveNfa_2(int startState, int curPos)
                case 0:
                   if ((0xfffffffbffffffffL & l) != 0L)
                   {
-                     if (kind > 94)
-                        kind = 94;
+                     if (kind > 95)
+                        kind = 95;
                   }
                   else if (curChar == 34)
                      jjstateSet[jjnewStateCnt++] = 1;
                   break;
                case 1:
-                  if (curChar == 34 && kind > 94)
-                     kind = 94;
+                  if (curChar == 34 && kind > 95)
+                     kind = 95;
                   break;
                case 2:
                   if (curChar == 34)
@@ -110,7 +110,7 @@ private int jjMoveNfa_2(int startState, int curPos)
             switch(jjstateSet[--i])
             {
                case 0:
-                  kind = 94;
+                  kind = 95;
                   break;
                default : break;
             }
@@ -125,8 +125,8 @@ private int jjMoveNfa_2(int startState, int curPos)
             switch(jjstateSet[--i])
             {
                case 0:
-                  if ((jjbitVec0[i2] & l2) != 0L && kind > 94)
-                     kind = 94;
+                  if ((jjbitVec0[i2] & l2) != 0L && kind > 95)
+                     kind = 95;
                   break;
                default : break;
             }
@@ -149,1226 +149,7018 @@ private final int jjStopStringLiteralDfa_0(int pos, long active0, long active1){
    switch (pos)
    {
       case 0:
-         if ((active0 & 0x2001400200400000L) != 0L || (active1 & 0x1e0004L) != 0L)
+         if ((active0 & 0x40000000L) != 0L)
+         {
+            jjmatchedKind = 97;
+            return 962;
+         }
+         if ((active0 & 0x600000000000000L) != 0L || (active1 & 0x1800L) != 0L)
+         {
+            jjmatchedKind = 97;
+            return 491;
+         }
+         if ((active0 & 0x20400000L) != 0L || (active1 & 0x80L) != 0L)
+         {
+            jjmatchedKind = 97;
+            return 295;
+         }
+         if ((active0 & 0x2000022002000000L) != 0L)
+         {
+            jjmatchedKind = 97;
+            return 332;
+         }
+         if ((active0 & 0x10000000080000L) != 0L || (active1 & 0x1010000L) != 0L)
+         {
+            jjmatchedKind = 97;
+            return 590;
+         }
+         if ((active0 & 0x4002800400800000L) != 0L || (active1 & 0x3c0008L) != 0L)
+         {
+            jjmatchedKind = 97;
+            return 910;
+         }
+         if ((active0 & 0x200000000L) != 0L)
+         {
+            jjmatchedKind = 97;
+            return 797;
+         }
+         if ((active0 & 0xc000000000000L) != 0L || (active1 & 0x400L) != 0L)
+         {
+            jjmatchedKind = 97;
+            return 424;
+         }
+         if ((active0 & 0x5001000000L) != 0L)
+         {
+            jjmatchedKind = 97;
+            return 439;
+         }
+         if ((active0 & 0x1000000000000L) != 0L || (active1 & 0x24L) != 0L)
+         {
+            jjmatchedKind = 97;
+            return 813;
+         }
+         if ((active0 & 0x40000000000L) != 0L || (active1 & 0x40L) != 0L)
+         {
+            jjmatchedKind = 97;
+            return 249;
+         }
+         if ((active0 & 0x10010000000L) != 0L || (active1 & 0x300L) != 0L)
+         {
+            jjmatchedKind = 97;
+            return 404;
+         }
+         if ((active0 & 0x20L) != 0L)
+            return 963;
+         if ((active0 & 0x100000000L) != 0L)
+         {
+            jjmatchedKind = 97;
+            return 752;
+         }
+         if ((active0 & 0x18000L) != 0L)
+            return 17;
+         if ((active0 & 0x800000008000000L) != 0L || (active1 & 0xe000L) != 0L)
+         {
+            jjmatchedKind = 97;
+            return 550;
+         }
+         if ((active0 & 0x400L) != 0L)
+            return 22;
+         if ((active0 & 0x200000000000L) != 0L)
+         {
+            jjmatchedKind = 97;
+            return 5;
+         }
+         if ((active0 & 0x91a0000000000000L) != 0L || (active1 & 0xc00013L) != 0L)
+         {
+            jjmatchedKind = 97;
+            return 52;
+         }
+         if ((active0 & 0x40088000000000L) != 0L)
+         {
+            jjmatchedKind = 97;
+            return 33;
+         }
+         if ((active0 & 0x100000000000L) != 0L)
          {
-            jjmatchedKind = 96;
-            return 16;
+            jjmatchedKind = 97;
+            return 315;
          }
-         if ((active0 & 0xdffe3ffdffb40000L) != 0L || (active1 & 0x1e1ffe9L) != 0L)
+         if ((active0 & 0x400884000000L) != 0L)
          {
-            jjmatchedKind = 96;
-            return 41;
+            jjmatchedKind = 97;
+            return 471;
          }
-         if ((active0 & 0x800000000000L) != 0L || (active1 & 0x12L) != 0L)
+         if ((active0 & 0x200000L) != 0L || (active1 & 0x2020000L) != 0L)
          {
-            jjmatchedKind = 96;
-            return 13;
+            jjmatchedKind = 97;
+            return 670;
          }
-         if ((active0 & 0xc000L) != 0L)
-            return 3;
-         if ((active0 & 0x10L) != 0L)
-            return 42;
-         if ((active0 & 0x200L) != 0L)
-            return 19;
          return -1;
       case 1:
-         if ((active0 & 0x1000651441400000L) != 0L || (active1 & 0x40400L) != 0L)
-            return 41;
-         if ((active1 & 0x2L) != 0L)
+         if ((active0 & 0x2000020002000000L) != 0L)
+            return 345;
+         if ((active1 & 0x4L) != 0L)
          {
             if (jjmatchedPos != 1)
             {
-               jjmatchedKind = 96;
+               jjmatchedKind = 97;
                jjmatchedPos = 1;
             }
-            return 12;
+            return 877;
          }
-         if ((active0 & 0xefff9aebbeb40000L) != 0L || (active1 & 0x1fbfbfdL) != 0L)
+         if ((active0 & 0x800000000000000L) != 0L)
          {
             if (jjmatchedPos != 1)
             {
-               jjmatchedKind = 96;
+               jjmatchedKind = 97;
                jjmatchedPos = 1;
             }
-            return 41;
+            return 549;
          }
-         return -1;
-      case 2:
-         if ((active1 & 0x2L) != 0L)
+         if ((active1 & 0x2000000L) != 0L)
          {
-            if (jjmatchedPos != 2)
+            if (jjmatchedPos != 1)
             {
-               jjmatchedKind = 96;
-               jjmatchedPos = 2;
+               jjmatchedKind = 97;
+               jjmatchedPos = 1;
             }
-            return 11;
+            return 669;
          }
-         if ((active0 & 0x2f400a00100000L) != 0L || (active1 & 0x1e003a4L) != 0L)
-            return 41;
-         if ((active0 & 0xffd0bae1bfa40000L) != 0L || (active1 & 0x1ff859L) != 0L)
+         if ((active1 & 0x40000L) != 0L)
          {
-            if (jjmatchedPos != 2)
+            if (jjmatchedPos != 1)
             {
-               jjmatchedKind = 96;
-               jjmatchedPos = 2;
+               jjmatchedKind = 97;
+               jjmatchedPos = 1;
             }
-            return 41;
+            return 913;
          }
-         return -1;
-      case 3:
-         if ((active0 & 0xdfd03a4187840000L) != 0L || (active1 & 0x15859L) != 0L)
+         if ((active0 & 0x4000000000000000L) != 0L)
          {
-            if (jjmatchedPos != 3)
+            if (jjmatchedPos != 1)
             {
-               jjmatchedKind = 96;
-               jjmatchedPos = 3;
+               jjmatchedKind = 97;
+               jjmatchedPos = 1;
             }
-            return 41;
+            return 964;
          }
-         if ((active0 & 0x200080a038200000L) != 0L || (active1 & 0x1ea000L) != 0L)
-            return 41;
-         if ((active1 & 0x2L) != 0L)
+         if ((active0 & 0x10000000000000L) != 0L)
          {
-            if (jjmatchedPos != 3)
+            if (jjmatchedPos != 1)
             {
-               jjmatchedKind = 96;
-               jjmatchedPos = 3;
+               jjmatchedKind = 97;
+               jjmatchedPos = 1;
             }
-            return 10;
+            return 656;
          }
-         if ((active1 & 0x100L) != 0L)
+         if ((active0 & 0x9020000000000000L) != 0L || (active1 & 0xc00003L) != 0L)
          {
-            if (jjmatchedPos != 3)
+            if (jjmatchedPos != 1)
             {
-               jjmatchedKind = 96;
-               jjmatchedPos = 3;
+               jjmatchedKind = 97;
+               jjmatchedPos = 1;
             }
-            return 25;
+            return 113;
          }
-         return -1;
-      case 4:
-         if ((active0 & 0x110280187000000L) != 0L || (active1 & 0x4840L) != 0L)
-            return 41;
-         if ((active1 & 0x100100L) != 0L)
-            return 25;
-         if ((active0 & 0xdec0124000840000L) != 0L || (active1 & 0x1101bL) != 0L)
+         if ((active0 & 0x1000000L) != 0L)
          {
-            jjmatchedKind = 96;
-            jjmatchedPos = 4;
-            return 41;
+            if (jjmatchedPos != 1)
+            {
+               jjmatchedKind = 97;
+               jjmatchedPos = 1;
+            }
+            return 438;
          }
-         return -1;
-      case 5:
-         if ((active0 & 0x480120000040000L) != 0L)
-            return 41;
-         if ((active0 & 0x1a40004000800000L) != 0L || (active1 & 0x1101bL) != 0L)
+         if ((active1 & 0x20000L) != 0L)
          {
-            jjmatchedKind = 96;
-            jjmatchedPos = 5;
-            return 41;
+            if (jjmatchedPos != 1)
+            {
+               jjmatchedKind = 97;
+               jjmatchedPos = 1;
+            }
+            return 717;
          }
-         if ((active0 & 0xc000000000000000L) != 0L)
-            return 25;
-         return -1;
-      case 6:
-         if ((active0 & 0x1840000000000000L) != 0L || (active1 & 0x10003L) != 0L)
+         if ((active0 & 0x2000000000L) != 0L)
+            return 396;
+         if ((active0 & 0x40000000000L) != 0L || (active1 & 0x40L) != 0L)
          {
-            jjmatchedKind = 96;
-            jjmatchedPos = 6;
-            return 41;
+            if (jjmatchedPos != 1)
+            {
+               jjmatchedKind = 97;
+               jjmatchedPos = 1;
+            }
+            return 264;
          }
-         if ((active0 & 0x200004000800000L) != 0L || (active1 & 0x1018L) != 0L)
-            return 41;
-         return -1;
-      case 7:
-         if ((active0 & 0x840000000000000L) != 0L || (active1 & 0x10003L) != 0L)
-            return 41;
-         if ((active0 & 0x1000000000000000L) != 0L)
+         if ((active0 & 0x100000000L) != 0L)
          {
-            jjmatchedKind = 96;
-            jjmatchedPos = 7;
-            return 41;
+            if (jjmatchedPos != 1)
+            {
+               jjmatchedKind = 97;
+               jjmatchedPos = 1;
+            }
+            return 770;
          }
-         return -1;
-      case 8:
-         if ((active0 & 0x1000000000000000L) != 0L)
+         if ((active0 & 0x4000000L) != 0L)
          {
-            jjmatchedKind = 96;
-            jjmatchedPos = 8;
-            return 41;
+            if (jjmatchedPos != 1)
+            {
+               jjmatchedKind = 97;
+               jjmatchedPos = 1;
+            }
+            return 482;
+         }
+         if ((active0 & 0x600000000000000L) != 0L || (active1 & 0x1000L) != 0L)
+         {
+            if (jjmatchedPos != 1)
+            {
+               jjmatchedKind = 97;
+               jjmatchedPos = 1;
+            }
+            return 501;
          }
-         return -1;
-      default :
-         return -1;
-   }
-}
-private final int jjStartNfa_0(int pos, long active0, long active1){
-   return jjMoveNfa_0(jjStopStringLiteralDfa_0(pos, active0, active1), pos + 1);
-}
-private int jjMoveStringLiteralDfa0_0(){
-   switch(curChar)
-   {
-      case 34:
-         return jjStopAtPos(0, 93);
-      case 39:
-         return jjStopAtPos(0, 90);
-      case 40:
-         return jjStopAtPos(0, 2);
-      case 41:
-         return jjStopAtPos(0, 3);
-      case 42:
-         return jjStopAtPos(0, 10);
-      case 43:
-         return jjStopAtPos(0, 8);
-      case 44:
-         return jjStopAtPos(0, 5);
-      case 45:
-         return jjStartNfaWithStates_0(0, 9, 19);
-      case 46:
-         return jjStartNfaWithStates_0(0, 4, 42);
-      case 47:
-         return jjStopAtPos(0, 11);
-      case 59:
-         return jjStopAtPos(0, 6);
-      case 60:
-         jjmatchedKind = 14;
-         return jjMoveStringLiteralDfa1_0(0x8000L, 0x0L);
-      case 61:
-         return jjStopAtPos(0, 12);
-      case 62:
-         jjmatchedKind = 16;
-         return jjMoveStringLiteralDfa1_0(0x20000L, 0x0L);
-      case 65:
-      case 97:
-         return jjMoveStringLiteralDfa1_0(0x2001400200400000L, 0x1e0004L);
-      case 66:
-      case 98:
-         return jjMoveStringLiteralDfa1_0(0x20044000000000L, 0x0L);
-      case 67:
-      case 99:
-         return jjMoveStringLiteralDfa1_0(0xc8d0000000000000L, 0x600009L);
-      case 68:
-      case 100:
-         return jjMoveStringLiteralDfa1_0(0x800000000000L, 0x12L);
-      case 69:
-      case 101:
-         return jjMoveStringLiteralDfa1_0(0x20000000000L, 0x20L);
-      case 70:
-      case 102:
-         return jjMoveStringLiteralDfa1_0(0x10200000L, 0x40L);
-      case 71:
-      case 103:
-         return jjMoveStringLiteralDfa1_0(0x80000000000L, 0x0L);
-      case 72:
-      case 104:
-         return jjMoveStringLiteralDfa1_0(0x100000000000L, 0x0L);
-      case 73:
-      case 105:
-         return jjMoveStringLiteralDfa1_0(0x1000011001000000L, 0x0L);
-      case 74:
-      case 106:
-         return jjMoveStringLiteralDfa1_0(0x20000000L, 0x0L);
-      case 76:
-      case 108:
-         return jjMoveStringLiteralDfa1_0(0x8008000000L, 0x180L);
-      case 77:
-      case 109:
-         return jjMoveStringLiteralDfa1_0(0x6000000000000L, 0x200L);
-      case 78:
-      case 110:
-         return jjMoveStringLiteralDfa1_0(0x2800800000L, 0x0L);
-      case 79:
-      case 111:
-         return jjMoveStringLiteralDfa1_0(0x200442000000L, 0x0L);
-      case 80:
-      case 112:
-         return jjMoveStringLiteralDfa1_0(0x300000000000000L, 0xc00L);
-      case 82:
-      case 114:
-         return jjMoveStringLiteralDfa1_0(0x400000004000000L, 0x7000L);
-      case 83:
-      case 115:
-         return jjMoveStringLiteralDfa1_0(0x8000000040000L, 0x808000L);
-      case 84:
-      case 116:
-         return jjMoveStringLiteralDfa1_0(0x100000L, 0x1010000L);
-      case 85:
-      case 117:
-         return jjMoveStringLiteralDfa1_0(0x80000000L, 0x0L);
-      case 87:
-      case 119:
-         return jjMoveStringLiteralDfa1_0(0x100000000L, 0x0L);
-      case 124:
-         return jjMoveStringLiteralDfa1_0(0x80L, 0x0L);
-      default :
-         return jjMoveNfa_0(0, 0);
-   }
-}
-private int jjMoveStringLiteralDfa1_0(long active0, long active1){
-   try { curChar = input_stream.readChar(); }
-   catch(java.io.IOException e) {
-      jjStopStringLiteralDfa_0(0, active0, active1);
-      return 1;
-   }
-   switch(curChar)
-   {
-      case 61:
-         if ((active0 & 0x8000L) != 0L)
-            return jjStopAtPos(1, 15);
-         else if ((active0 & 0x20000L) != 0L)
-            return jjStopAtPos(1, 17);
-         break;
-      case 65:
-      case 97:
-         return jjMoveStringLiteralDfa2_0(active0, 0x2100000800000L, active1, 0x1003000L);
-      case 66:
-      case 98:
-         return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0x4L);
-      case 67:
-      case 99:
-         return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0x20000L);
-      case 69:
-      case 101:
-         return jjMoveStringLiteralDfa2_0(active0, 0x440804008040000L, active1, 0x18L);
-      case 72:
-      case 104:
-         return jjMoveStringLiteralDfa2_0(active0, 0x100000000L, active1, 0L);
-      case 73:
-      case 105:
          if ((active1 & 0x400L) != 0L)
-            return jjStartNfaWithStates_0(1, 74, 41);
-         return jjMoveStringLiteralDfa2_0(active0, 0x84008004000000L, active1, 0x800002L);
-      case 76:
-      case 108:
-         return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0x40L);
-      case 78:
-      case 110:
-         if ((active0 & 0x40000000L) != 0L)
-            return jjStartNfaWithStates_0(1, 30, 41);
-         else if ((active0 & 0x10000000000L) != 0L)
          {
-            jjmatchedKind = 40;
-            jjmatchedPos = 1;
+            if (jjmatchedPos != 1)
+            {
+               jjmatchedKind = 97;
+               jjmatchedPos = 1;
+            }
+            return 431;
          }
-         return jjMoveStringLiteralDfa2_0(active0, 0x1000000201000000L, active1, 0L);
-      case 79:
-      case 111:
-         return jjMoveStringLiteralDfa2_0(active0, 0xcb30000820100000L, active1, 0x604b81L);
-      case 81:
-      case 113:
-         return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0x8000L);
-      case 82:
-      case 114:
-         if ((active0 & 0x400000000L) != 0L)
+         if ((active0 & 0x8000000000000L) != 0L)
          {
-            jjmatchedKind = 34;
-            jjmatchedPos = 1;
+            if (jjmatchedPos != 1)
+            {
+               jjmatchedKind = 97;
+               jjmatchedPos = 1;
+            }
+            return 427;
          }
-         return jjMoveStringLiteralDfa2_0(active0, 0x2000280000200000L, active1, 0x10000L);
-      case 83:
-      case 115:
-         if ((active0 & 0x400000L) != 0L)
+         if ((active1 & 0x8L) != 0L)
          {
-            jjmatchedKind = 22;
-            jjmatchedPos = 1;
+            if (jjmatchedPos != 1)
+            {
+               jjmatchedKind = 97;
+               jjmatchedPos = 1;
+            }
+            return 909;
          }
-         else if ((active0 & 0x1000000000L) != 0L)
-            return jjStartNfaWithStates_0(1, 36, 41);
-         return jjMoveStringLiteralDfa2_0(active0, 0x400080000000L, active1, 0x40000L);
-      case 84:
-      case 116:
-         return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0x180000L);
-      case 85:
-      case 117:
-         return jjMoveStringLiteralDfa2_0(active0, 0x8002012000000L, active1, 0L);
-      case 86:
-      case 118:
-         return jjMoveStringLiteralDfa2_0(active0, 0x1000000000000L, active1, 0L);
-      case 88:
-      case 120:
-         return jjMoveStringLiteralDfa2_0(active0, 0x20000000000L, active1, 0x20L);
-      case 89:
-      case 121:
-         if ((active0 & 0x40000000000L) != 0L)
-            return jjStartNfaWithStates_0(1, 42, 41);
-         break;
-      case 124:
-         if ((active0 & 0x80L) != 0L)
-            return jjStopAtPos(1, 7);
-         break;
-      default :
-         break;
-   }
-   return jjStartNfa_0(0, active0, active1);
-}
-private int jjMoveStringLiteralDfa2_0(long old0, long active0, long old1, long active1){
-   if (((active0 &= old0) | (active1 &= old1)) == 0L)
-      return jjStartNfa_0(0, old0, old1);
-   try { curChar = input_stream.readChar(); }
-   catch(java.io.IOException e) {
-      jjStopStringLiteralDfa_0(1, active0, active1);
-      return 2;
-   }
-   switch(curChar)
-   {
-      case 65:
-      case 97:
-         return jjMoveStringLiteralDfa3_0(active0, 0L, active1, 0x180000L);
-      case 67:
-      case 99:
-         if ((active0 & 0x400000000000L) != 0L)
-            return jjStartNfaWithStates_0(2, 46, 41);
-         break;
-      case 68:
-      case 100:
+         if ((active1 & 0x300L) != 0L)
+         {
+            if (jjmatchedPos != 1)
+            {
+               jjmatchedKind = 97;
+               jjmatchedPos = 1;
+            }
+            return 416;
+         }
+         if ((active1 & 0x10000L) != 0L)
+         {
+            if (jjmatchedPos != 1)
+            {
+               jjmatchedKind = 97;
+               jjmatchedPos = 1;
+            }
+            return 637;
+         }
+         if ((active1 & 0x80L) != 0L)
+         {
+            if (jjmatchedPos != 1)
+            {
+               jjmatchedKind = 97;
+               jjmatchedPos = 1;
+            }
+            return 303;
+         }
+         if ((active0 & 0x40000000000000L) != 0L)
+         {
+            if (jjmatchedPos != 1)
+            {
+               jjmatchedKind = 97;
+               jjmatchedPos = 1;
+            }
+            return 45;
+         }
+         if ((active0 & 0x480800000000L) != 0L || (active1 & 0x800L) != 0L)
+            return 962;
          if ((active0 & 0x200000000L) != 0L)
-            return jjStartNfaWithStates_0(2, 33, 41);
-         else if ((active1 & 0x200L) != 0L)
-            return jjStartNfaWithStates_0(2, 73, 41);
-         return jjMoveStringLiteralDfa3_0(active0, 0x200000000000L, active1, 0x1000L);
-      case 69:
-      case 101:
-         return jjMoveStringLiteralDfa3_0(active0, 0x2000000100000000L, active1, 0L);
-      case 70:
-      case 102:
-         return jjMoveStringLiteralDfa3_0(active0, 0x8000000L, active1, 0L);
-      case 71:
-      case 103:
-         if ((active0 & 0x1000000000000L) != 0L)
-            return jjStartNfaWithStates_0(2, 48, 41);
-         else if ((active1 & 0x80L) != 0L)
          {
-            jjmatchedKind = 71;
-            jjmatchedPos = 2;
+            if (jjmatchedPos != 1)
+            {
+               jjmatchedKind = 97;
+               jjmatchedPos = 1;
+            }
+            return 796;
          }
-         return jjMoveStringLiteralDfa3_0(active0, 0x400000004000000L, active1, 0x110L);
-      case 73:
-      case 105:
-         return jjMoveStringLiteralDfa3_0(active0, 0x1000200a0000000L, active1, 0x40008L);
-      case 75:
-      case 107:
-         return jjMoveStringLiteralDfa3_0(active0, 0x8000000000L, active1, 0L);
-      case 76:
-      case 108:
-         return jjMoveStringLiteralDfa3_0(active0, 0x200002010040000L, active1, 0L);
-      case 77:
-      case 109:
-         if ((active0 & 0x8000000000000L) != 0L)
-            return jjStartNfaWithStates_0(2, 51, 41);
-         break;
-      case 78:
-      case 110:
          if ((active0 & 0x4000000000000L) != 0L)
-            return jjStartNfaWithStates_0(2, 50, 41);
-         else if ((active1 & 0x800000L) != 0L)
-            return jjStartNfaWithStates_0(2, 87, 41);
-         else if ((active1 & 0x1000000L) != 0L)
-            return jjStartNfaWithStates_0(2, 88, 41);
-         return jjMoveStringLiteralDfa3_0(active0, 0x840000001000000L, active1, 0x2000L);
-      case 79:
-      case 111:
-         return jjMoveStringLiteralDfa3_0(active0, 0xc000080000200000L, active1, 0x20041L);
-      case 80:
-      case 112:
-         if ((active0 & 0x100000L) != 0L)
-            return jjStartNfaWithStates_0(2, 20, 41);
-         else if ((active1 & 0x20L) != 0L)
-            return jjStartNfaWithStates_0(2, 69, 41);
-         break;
-      case 82:
-      case 114:
-         return jjMoveStringLiteralDfa3_0(active0, 0x80000000000000L, active1, 0x8000L);
-      case 83:
-      case 115:
-         if ((active1 & 0x4L) != 0L)
-            return jjStartNfaWithStates_0(2, 66, 41);
-         else if ((active1 & 0x200000L) != 0L)
-            return jjStartNfaWithStates_0(2, 85, 41);
-         return jjMoveStringLiteralDfa3_0(active0, 0x800000000000L, active1, 0x2L);
-      case 84:
-      case 116:
-         if ((active0 & 0x800000000L) != 0L)
-            return jjStartNfaWithStates_0(2, 35, 41);
-         else if ((active1 & 0x400000L) != 0L)
-            return jjStartNfaWithStates_0(2, 86, 41);
-         return jjMoveStringLiteralDfa3_0(active0, 0x1000004002800000L, active1, 0L);
-      case 85:
-      case 117:
-         return jjMoveStringLiteralDfa3_0(active0, 0x10000000000000L, active1, 0x14000L);
-      case 86:
-      case 118:
-         return jjMoveStringLiteralDfa3_0(active0, 0x100000000000L, active1, 0L);
-      case 87:
-      case 119:
-         return jjMoveStringLiteralDfa3_0(active0, 0L, active1, 0x800L);
-      case 88:
-      case 120:
-         if ((active0 & 0x2000000000000L) != 0L)
-            return jjStartNfaWithStates_0(2, 49, 41);
-         else if ((active0 & 0x20000000000000L) != 0L)
-            return jjStartNfaWithStates_0(2, 53, 41);
-         break;
-      default :
-         break;
-   }
-   return jjStartNfa_0(1, active0, active1);
-}
-private int jjMoveStringLiteralDfa3_0(long old0, long active0, long old1, long active1){
-   if (((active0 &= old0) | (active1 &= old1)) == 0L)
-      return jjStartNfa_0(1, old0, old1);
-   try { curChar = input_stream.readChar(); }
-   catch(java.io.IOException e) {
-      jjStopStringLiteralDfa_0(2, active0, active1);
-      return 3;
-   }
-   switch(curChar)
-   {
-      case 49:
-         return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0x100L);
-      case 65:
-      case 97:
-         if ((active0 & 0x2000000000000000L) != 0L)
-            return jjStartNfaWithStates_0(3, 61, 41);
-         break;
-      case 67:
-      case 99:
-         if ((active0 & 0x800000000000L) != 0L)
-            return jjStartNfaWithStates_0(3, 47, 41);
-         return jjMoveStringLiteralDfa4_0(active0, 0x80000000000000L, active1, 0L);
-      case 68:
-      case 100:
-         if ((active1 & 0x2000L) != 0L)
-            return jjStartNfaWithStates_0(3, 77, 41);
-         break;
-      case 69:
-      case 101:
-         if ((active0 & 0x8000000000L) != 0L)
-            return jjStartNfaWithStates_0(3, 39, 41);
-         return jjMoveStringLiteralDfa4_0(active0, 0x1000200003040000L, active1, 0x800L);
-      case 72:
-      case 104:
-         return jjMoveStringLiteralDfa4_0(active0, 0x4000000L, active1, 0L);
-      case 73:
-      case 105:
-         return jjMoveStringLiteralDfa4_0(active0, 0x400100000000000L, active1, 0x1000L);
-      case 76:
-      case 108:
+         {
+            if (jjmatchedPos != 1)
+            {
+               jjmatchedKind = 97;
+               jjmatchedPos = 1;
+            }
+            return 423;
+         }
+         if ((active0 & 0x80000000L) != 0L)
+            return 472;
          if ((active0 & 0x10000000L) != 0L)
-            return jjStartNfaWithStates_0(3, 28, 41);
-         else if ((active0 & 0x2000000000L) != 0L)
-            return jjStartNfaWithStates_0(3, 37, 41);
-         return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0x8L);
-      case 77:
-      case 109:
-         if ((active0 & 0x200000L) != 0L)
-            return jjStartNfaWithStates_0(3, 21, 41);
-         break;
-      case 78:
-      case 110:
-         if ((active0 & 0x20000000L) != 0L)
-            return jjStartNfaWithStates_0(3, 29, 41);
-         else if ((active1 & 0x40000L) != 0L)
-            return jjStartNfaWithStates_0(3, 82, 41);
-         else if ((active1 & 0x80000L) != 0L)
          {
-            jjmatchedKind = 83;
-            jjmatchedPos = 3;
+            if (jjmatchedPos != 1)
+            {
+               jjmatchedKind = 97;
+               jjmatchedPos = 1;
+            }
+            return 410;
          }
-         return jjMoveStringLiteralDfa4_0(active0, 0x110000080000000L, active1, 0x114000L);
-      case 79:
-      case 111:
-         return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0x40L);
-      case 82:
-      case 114:
-         return jjMoveStringLiteralDfa4_0(active0, 0xc000000100000000L, active1, 0x11L);
-      case 83:
-      case 115:
+         if ((active0 & 0x1000000000000L) != 0L || (active1 & 0x20L) != 0L)
+         {
+            if (jjmatchedPos != 1)
+            {
+               jjmatchedKind = 97;
+               jjmatchedPos = 1;
+            }
+            return 821;
+         }
+         if ((active0 & 0x1000200000L) != 0L || (active1 & 0x300000L) != 0L)
+         {
+            if (jjmatchedPos != 1)
+            {
+               jjmatchedKind = 2;
+               jjmatchedPos = 1;
+            }
+            return 962;
+         }
+         if ((active0 & 0x100000000000L) != 0L)
+         {
+            if (jjmatchedPos != 1)
+            {
+               jjmatchedKind = 97;
+               jjmatchedPos = 1;
+            }
+            return 324;
+         }
+         if ((active0 & 0x8000000000L) != 0L)
+         {
+            if (jjmatchedPos != 1)
+            {
+               jjmatchedKind = 97;
+               jjmatchedPos = 1;
+            }
+            return 32;
+         }
+         if ((active1 & 0x1000000L) != 0L)
+         {
+            if (jjmatchedPos != 1)
+            {
+               jjmatchedKind = 97;
+               jjmatchedPos = 1;
+            }
+            return 620;
+         }
+         if ((active1 & 0x8000L) != 0L)
+         {
+            if (jjmatchedPos != 1)
+            {
+               jjmatchedKind = 97;
+               jjmatchedPos = 1;
+            }
+            return 581;
+         }
+         if ((active0 & 0x800000800000L) != 0L || (active1 & 0x80000L) != 0L)
+            return 932;
+         if ((active0 & 0x182210068400000L) != 0L || (active1 & 0x6010L) != 0L)
+         {
+            if (jjmatchedPos != 1)
+            {
+               jjmatchedKind = 97;
+               jjmatchedPos = 1;
+            }
+            return 962;
+         }
+         if ((active0 & 0x400000000L) != 0L)
+         {
+            if (jjmatchedPos != 1)
+            {
+               jjmatchedKind = 97;
+               jjmatchedPos = 1;
+            }
+            return 965;
+         }
+         if ((active0 & 0x80000L) != 0L)
+         {
+            if (jjmatchedPos != 1)
+            {
+               jjmatchedKind = 97;
+               jjmatchedPos = 1;
+            }
+            return 597;
+         }
+         if ((active0 & 0x4000000000L) != 0L)
+         {
+            if (jjmatchedPos != 1)
+            {
+               jjmatchedKind = 97;
+               jjmatchedPos = 1;
+            }
+            return 454;
+         }
+         return -1;
+      case 2:
+         if ((active1 & 0x80L) != 0L)
+         {
+            if (jjmatchedPos != 2)
+            {
+               jjmatchedKind = 97;
+               jjmatchedPos = 2;
+            }
+            return 302;
+         }
+         if ((active0 & 0x56801400200000L) != 0L || (active1 & 0x3c00340L) != 0L)
+            return 962;
+         if ((active0 & 0x8000000000000L) != 0L)
+            return 426;
          if ((active1 & 0x20000L) != 0L)
-            return jjStartNfaWithStates_0(3, 81, 41);
-         return jjMoveStringLiteralDfa4_0(active0, 0x20000000000L, active1, 0L);
-      case 84:
-      case 116:
-         if ((active0 & 0x8000000L) != 0L)
-            return jjStartNfaWithStates_0(3, 27, 41);
-         else if ((active1 & 0x8000L) != 0L)
-            return jjStartNfaWithStates_0(3, 79, 41);
-         return jjMoveStringLiteralDfa4_0(active0, 0x840000000000000L, active1, 0x2L);
-      case 85:
-      case 117:
-         return jjMoveStringLiteralDfa4_0(active0, 0x80000800000L, active1, 0L);
-      case 87:
-      case 119:
-         return jjMoveStringLiteralDfa4_0(active0, 0x4000000000L, active1, 0L);
-      case 89:
-      case 121:
-         return jjMoveStringLiteralDfa4_0(active0, 0x200000000000000L, active1, 0L);
-      default :
-         break;
-   }
-   return jjStartNfa_0(2, active0, active1);
-}
-private int jjMoveStringLiteralDfa4_0(long old0, long active0, long old1, long active1){
-   if (((active0 &= old0) | (active1 &= old1)) == 0L)
-      return jjStartNfa_0(2, old0, old1);
-   try { curChar = input_stream.readChar(); }
-   catch(java.io.IOException e) {
-      jjStopStringLiteralDfa_0(3, active0, active1);
-      return 4;
-   }
+         {
+            if (jjmatchedPos != 2)
+            {
+               jjmatchedKind = 97;
+               jjmatchedPos = 2;
+            }
+            return 964;
+         }
+         if ((active0 & 0x2000000000000000L) != 0L)
+         {
+            if (jjmatchedPos != 2)
+            {
+               jjmatchedKind = 2;
+               jjmatchedPos = 2;
+            }
+            return 373;
+         }
+         if ((active0 & 0x4000000000L) != 0L)
+         {
+            if (jjmatchedPos != 2)
+            {
+               jjmatchedKind = 97;
+               jjmatchedPos = 2;
+            }
+            return 453;
+         }
+         if ((active1 & 0x400L) != 0L)
+            return 430;
+         if ((active0 & 0x1000000000000L) != 0L)
+         {
+            if (jjmatchedPos != 2)
+            {
+               jjmatchedKind = 97;
+               jjmatchedPos = 2;
+            }
+            return 859;
+         }
+         if ((active0 & 0x4000000L) != 0L)
+         {
+            if (jjmatchedPos != 2)
+            {
+               jjmatchedKind = 97;
+               jjmatchedPos = 2;
+            }
+            return 481;
+         }
+         if ((active1 & 0x8L) != 0L)
+            return 908;
+         if ((active0 & 0x1000000000000000L) != 0L)
+         {
+            if (jjmatchedPos != 2)
+            {
+               jjmatchedKind = 97;
+               jjmatchedPos = 2;
+            }
+            return 137;
+         }
+         if ((active0 & 0x1000000L) != 0L)
+         {
+            if (jjmatchedPos != 2)
+            {
+               jjmatchedKind = 97;
+               jjmatchedPos = 2;
+            }
+            return 443;
+         }
+         if ((active1 & 0x4L) != 0L)
+         {
+            if (jjmatchedPos != 2)
+            {
+               jjmatchedKind = 97;
+               jjmatchedPos = 2;
+            }
+            return 884;
+         }
+         if ((active0 & 0x4000000000000000L) != 0L)
+         {
+            if (jjmatchedPos != 2)
+            {
+               jjmatchedKind = 2;
+               jjmatchedPos = 2;
+            }
+            return 962;
+         }
+         if ((active0 & 0x8fa075817a480000L) != 0L || (active1 & 0x3df033L) != 0L)
+         {
+            if (jjmatchedPos != 2)
+            {
+               jjmatchedKind = 97;
+               jjmatchedPos = 2;
+            }
+            return 962;
+         }
+         if ((active0 & 0x200000000L) != 0L)
+         {
+            if (jjmatchedPos != 2)
+            {
+               jjmatchedKind = 97;
+               jjmatchedPos = 2;
+            }
+            return 801;
+         }
+         return -1;
+      case 3:
+         if ((active0 & 0x2000000000000000L) != 0L)
+         {
+            if (jjmatchedPos != 3)
+            {
+               jjmatchedKind = 97;
+               jjmatchedPos = 3;
+            }
+            return 372;
+         }
+         if ((active1 & 0x4L) != 0L)
+         {
+            if (jjmatchedPos != 3)
+            {
+               jjmatchedKind = 97;
+               jjmatchedPos = 3;
+            }
+            return 900;
+         }
+         if ((active1 & 0x200L) != 0L)
+         {
+            if (jjmatchedPos != 3)
+            {
+               jjmatchedKind = 97;
+               jjmatchedPos = 3;
+            }
+            return 28;
+         }
+         if ((active0 & 0x4000000000L) != 0L)
+            return 452;
+         if ((active0 & 0x1000000000000000L) != 0L)
+         {
+            if (jjmatchedPos != 3)
+            {
+               jjmatchedKind = 97;
+               jjmatchedPos = 3;
+            }
+            return 168;
+         }
+         if ((active0 & 0x8fa074830f080000L) != 0L || (active1 & 0x2b0b3L) != 0L)
+         {
+            if (jjmatchedPos != 3)
+            {
+               jjmatchedKind = 97;
+               jjmatchedPos = 3;
+            }
+            return 962;
+         }
+         if ((active0 & 0x4000010070400000L) != 0L || (active1 & 0x3d4000L) != 0L)
+            return 962;
+         if ((active0 & 0x1000000000000L) != 0L)
+            return 858;
+         return -1;
+      case 4:
+         if ((active1 & 0x200200L) != 0L)
+            return 28;
+         if ((active0 & 0x9d80248001080000L) != 0L || (active1 & 0x22037L) != 0L)
+         {
+            jjmatchedKind = 97;
+            jjmatchedPos = 4;
+            return 962;
+         }
+         if ((active0 & 0x2000000000000000L) != 0L)
+         {
+            jjmatchedKind = 97;
+            jjmatchedPos = 4;
+            return 378;
+         }
+         if ((active0 & 0x22050030e000000L) != 0L || (active1 & 0x9080L) != 0L)
+            return 962;
+         return -1;
+      case 5:
+         if ((active0 & 0x1480008001000000L) != 0L || (active1 & 0x22036L) != 0L)
+         {
+            jjmatchedKind = 97;
+            jjmatchedPos = 5;
+            return 962;
+         }
+         if ((active0 & 0x8000000000000000L) != 0L || (active1 & 0x1L) != 0L)
+            return 28;
+         if ((active0 & 0x2000000000000000L) != 0L)
+         {
+            jjmatchedKind = 97;
+            jjmatchedPos = 5;
+            return 377;
+         }
+         if ((active0 & 0x900240000080000L) != 0L)
+            return 962;
+         return -1;
+      case 6:
+         if ((active0 & 0x2000000000000000L) != 0L)
+         {
+            jjmatchedKind = 97;
+            jjmatchedPos = 6;
+            return 376;
+         }
+         if ((active0 & 0x1080000000000000L) != 0L || (active1 & 0x20006L) != 0L)
+         {
+            jjmatchedKind = 97;
+            jjmatchedPos = 6;
+            return 962;
+         }
+         if ((active0 & 0x400008001000000L) != 0L || (active1 & 0x2030L) != 0L)
+            return 962;
+         return -1;
+      case 7:
+         if ((active0 & 0x2000000000000000L) != 0L)
+         {
+            jjmatchedKind = 97;
+            jjmatchedPos = 7;
+            return 966;
+         }
+         if ((active0 & 0x1080000000000000L) != 0L || (active1 & 0x20006L) != 0L)
+            return 962;
+         return -1;
+      case 8:
+         if ((active0 & 0x2000000000000000L) != 0L)
+         {
+            jjmatchedKind = 2;
+            jjmatchedPos = 8;
+            return 962;
+         }
+         return -1;
+      default :
+         return -1;
+   }
+}
+private final int jjStartNfa_0(int pos, long active0, long active1){
+   return jjMoveNfa_0(jjStopStringLiteralDfa_0(pos, active0, active1), pos + 1);
+}
+private int jjMoveStringLiteralDfa0_0(){
    switch(curChar)
    {
-      case 48:
-         if ((active1 & 0x100L) != 0L)
-            return jjStartNfaWithStates_0(4, 72, 25);
-         break;
-      case 50:
-         if ((active1 & 0x100000L) != 0L)
-            return jjStartNfaWithStates_0(4, 84, 25);
-         break;
+      case 34:
+         return jjStopAtPos(0, 94);
+      case 39:
+         return jjStopAtPos(0, 91);
+      case 40:
+         return jjStopAtPos(0, 3);
+      case 41:
+         return jjStopAtPos(0, 4);
+      case 42:
+         return jjStopAtPos(0, 11);
+      case 43:
+         return jjStopAtPos(0, 9);
+      case 44:
+         return jjStopAtPos(0, 6);
+      case 45:
+         return jjStartNfaWithStates_0(0, 10, 22);
+      case 46:
+         return jjStartNfaWithStates_0(0, 5, 963);
+      case 47:
+         return jjStopAtPos(0, 12);
+      case 59:
+         return jjStopAtPos(0, 7);
+      case 60:
+         jjmatchedKind = 15;
+         return jjMoveStringLiteralDfa1_0(0x10000L, 0x0L);
+      case 61:
+         return jjStopAtPos(0, 13);
+      case 62:
+         jjmatchedKind = 17;
+         return jjMoveStringLiteralDfa1_0(0x40000L, 0x0L);
       case 65:
       case 97:
-         return jjMoveStringLiteralDfa5_0(active0, 0x800000000000000L, active1, 0x1002L);
+         return jjMoveStringLiteralDfa1_0(0x4002800400800000L, 0x3c0008L);
+      case 66:
+      case 98:
+         return jjMoveStringLiteralDfa1_0(0x40088000000000L, 0x0L);
       case 67:
       case 99:
-         return jjMoveStringLiteralDfa5_0(active0, 0x40000L, active1, 0x10000L);
+         return jjMoveStringLiteralDfa1_0(0x91a0000000000000L, 0xc00013L);
       case 68:
       case 100:
-         if ((active1 & 0x4000L) != 0L)
-            return jjStartNfaWithStates_0(4, 78, 41);
-         return jjMoveStringLiteralDfa5_0(active0, 0xc000000000000000L, active1, 0x1L);
+         return jjMoveStringLiteralDfa1_0(0x1000000000000L, 0x24L);
       case 69:
       case 101:
-         if ((active0 & 0x100000000L) != 0L)
-            return jjStartNfaWithStates_0(4, 32, 41);
-         return jjMoveStringLiteralDfa5_0(active0, 0x4000000000L, active1, 0x10L);
+         return jjMoveStringLiteralDfa1_0(0x40000000000L, 0x40L);
+      case 70:
+      case 102:
+         return jjMoveStringLiteralDfa1_0(0x20400000L, 0x80L);
       case 71:
       case 103:
-         if ((active0 & 0x80000000L) != 0L)
-            return jjStartNfaWithStates_0(4, 31, 41);
-         return jjMoveStringLiteralDfa5_0(active0, 0x200000000000000L, active1, 0L);
+         return jjMoveStringLiteralDfa1_0(0x100000000000L, 0x0L);
+      case 72:
+      case 104:
+         return jjMoveStringLiteralDfa1_0(0x200000000000L, 0x0L);
       case 73:
       case 105:
-         return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0x8L);
+         return jjMoveStringLiteralDfa1_0(0x2000022002000000L, 0x0L);
+      case 74:
+      case 106:
+         return jjMoveStringLiteralDfa1_0(0x40000000L, 0x0L);
       case 76:
       case 108:
-         return jjMoveStringLiteralDfa5_0(active0, 0x80000000000000L, active1, 0L);
+         return jjMoveStringLiteralDfa1_0(0x10010000000L, 0x300L);
+      case 77:
+      case 109:
+         return jjMoveStringLiteralDfa1_0(0xc000000000000L, 0x400L);
       case 78:
       case 110:
-         return jjMoveStringLiteralDfa5_0(active0, 0x100000000000L, active1, 0L);
+         return jjMoveStringLiteralDfa1_0(0x5001000000L, 0x0L);
       case 79:
       case 111:
-         return jjMoveStringLiteralDfa5_0(active0, 0x400000000000000L, active1, 0L);
+         return jjMoveStringLiteralDfa1_0(0x400884000000L, 0x0L);
       case 80:
       case 112:
-         if ((active0 & 0x80000000000L) != 0L)
-            return jjStartNfaWithStates_0(4, 43, 41);
-         break;
+         return jjMoveStringLiteralDfa1_0(0x600000000000000L, 0x1800L);
       case 82:
       case 114:
-         if ((active0 & 0x1000000L) != 0L)
-            return jjStartNfaWithStates_0(4, 24, 41);
-         else if ((active0 & 0x2000000L) != 0L)
-            return jjStartNfaWithStates_0(4, 25, 41);
-         else if ((active0 & 0x200000000000L) != 0L)
-            return jjStartNfaWithStates_0(4, 45, 41);
-         else if ((active1 & 0x40L) != 0L)
-            return jjStartNfaWithStates_0(4, 70, 41);
-         else if ((active1 & 0x800L) != 0L)
-            return jjStartNfaWithStates_0(4, 75, 41);
-         return jjMoveStringLiteralDfa5_0(active0, 0x1040000000800000L, active1, 0L);
+         return jjMoveStringLiteralDfa1_0(0x800000008000000L, 0xe000L);
+      case 83:
+      case 115:
+         return jjMoveStringLiteralDfa1_0(0x10000000080000L, 0x1010000L);
       case 84:
       case 116:
-         if ((active0 & 0x4000000L) != 0L)
-            return jjStartNfaWithStates_0(4, 26, 41);
-         else if ((active0 & 0x10000000000000L) != 0L)
-            return jjStartNfaWithStates_0(4, 52, 41);
-         else if ((active0 & 0x100000000000000L) != 0L)
-            return jjStartNfaWithStates_0(4, 56, 41);
-         return jjMoveStringLiteralDfa5_0(active0, 0x20000000000L, active1, 0L);
+         return jjMoveStringLiteralDfa1_0(0x200000L, 0x2020000L);
+      case 85:
+      case 117:
+         return jjMoveStringLiteralDfa1_0(0x100000000L, 0x0L);
+      case 87:
+      case 119:
+         return jjMoveStringLiteralDfa1_0(0x200000000L, 0x0L);
+      case 124:
+         return jjMoveStringLiteralDfa1_0(0x100L, 0x0L);
       default :
-         break;
+         return jjMoveNfa_0(0, 0);
    }
-   return jjStartNfa_0(3, active0, active1);
 }
-private int jjMoveStringLiteralDfa5_0(long old0, long active0, long old1, long active1){
-   if (((active0 &= old0) | (active1 &= old1)) == 0L)
-      return jjStartNfa_0(3, old0, old1);
+private int jjMoveStringLiteralDfa1_0(long active0, long active1){
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) {
-      jjStopStringLiteralDfa_0(4, active0, active1);
-      return 5;
+      jjStopStringLiteralDfa_0(0, active0, active1);
+      return 1;
    }
    switch(curChar)
    {
-      case 49:
-         if ((active0 & 0x4000000000000000L) != 0L)
-            return jjStartNfaWithStates_0(5, 62, 25);
-         break;
-      case 50:
-         if ((active0 & 0x8000000000000000L) != 0L)
-            return jjStartNfaWithStates_0(5, 63, 25);
+      case 61:
+         if ((active0 & 0x10000L) != 0L)
+            return jjStopAtPos(1, 16);
+         else if ((active0 & 0x40000L) != 0L)
+            return jjStopAtPos(1, 18);
          break;
       case 65:
       case 97:
-         return jjMoveStringLiteralDfa6_0(active0, 0x800000L, active1, 0x10000L);
+         return jjMoveStringLiteralDfa2_0(active0, 0x4200001000000L, active1, 0x2006000L);
+      case 66:
+      case 98:
+         return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0x8L);
+      case 67:
+      case 99:
+         return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0x40000L);
       case 69:
       case 101:
-         if ((active0 & 0x80000000000000L) != 0L)
-            return jjStartNfaWithStates_0(5, 55, 41);
-         return jjMoveStringLiteralDfa6_0(active0, 0x4000000000L, active1, 0x10L);
-      case 71:
-      case 103:
-         if ((active0 & 0x100000000000L) != 0L)
-            return jjStartNfaWithStates_0(5, 44, 41);
-         break;
+         return jjMoveStringLiteralDfa2_0(active0, 0x881008010080000L, active1, 0x30L);
+      case 72:
+      case 104:
+         return jjMoveStringLiteralDfa2_0(active0, 0x200000000L, active1, 0L);
       case 73:
       case 105:
-         return jjMoveStringLiteralDfa6_0(active0, 0x800000000000000L, active1, 0L);
+         if ((active1 & 0x800L) != 0L)
+            return jjStartNfaWithStates_0(1, 75, 962);
+         return jjMoveStringLiteralDfa2_0(active0, 0x108010008000000L, active1, 0x1000004L);
+      case 76:
+      case 108:
+         return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0x80L);
       case 78:
       case 110:
-         if ((active0 & 0x400000000000000L) != 0L)
-            return jjStartNfaWithStates_0(5, 58, 41);
-         return jjMoveStringLiteralDfa6_0(active0, 0L, active1, 0x100aL);
+         if ((active0 & 0x80000000L) != 0L)
+            return jjStartNfaWithStates_0(1, 31, 472);
+         else if ((active0 & 0x20000000000L) != 0L)
+         {
+            jjmatchedKind = 41;
+            jjmatchedPos = 1;
+         }
+         return jjMoveStringLiteralDfa2_0(active0, 0x2000000402000000L, active1, 0L);
       case 79:
       case 111:
-         return jjMoveStringLiteralDfa6_0(active0, 0x240000000000000L, active1, 0L);
+         return jjMoveStringLiteralDfa2_0(active0, 0x9660001040200000L, active1, 0xc09703L);
+      case 81:
+      case 113:
+         return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0x10000L);
+      case 82:
+      case 114:
+         if ((active0 & 0x800000000L) != 0L)
+         {
+            jjmatchedKind = 35;
+            jjmatchedPos = 1;
+         }
+         return jjMoveStringLiteralDfa2_0(active0, 0x4000500000400000L, active1, 0x20000L);
       case 83:
       case 115:
-         if ((active0 & 0x20000000000L) != 0L)
-            return jjStartNfaWithStates_0(5, 41, 41);
-         return jjMoveStringLiteralDfa6_0(active0, 0x1000000000000000L, active1, 0x1L);
-      case 84:
-      case 116:
-         if ((active0 & 0x40000L) != 0L)
-            return jjStartNfaWithStates_0(5, 18, 41);
+         if ((active0 & 0x800000L) != 0L)
+         {
+            jjmatchedKind = 23;
+            jjmatchedPos = 1;
+         }
+         else if ((active0 & 0x2000000000L) != 0L)
+            return jjStartNfaWithStates_0(1, 37, 396);
+         return jjMoveStringLiteralDfa2_0(active0, 0x800100000000L, active1, 0x80000L);
+      case 84:
+      case 116:
+         return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0x300000L);
+      case 85:
+      case 117:
+         return jjMoveStringLiteralDfa2_0(active0, 0x10004024000000L, active1, 0L);
+      case 86:
+      case 118:
+         return jjMoveStringLiteralDfa2_0(active0, 0x2000000000000L, active1, 0L);
+      case 88:
+      case 120:
+         return jjMoveStringLiteralDfa2_0(active0, 0x40000000000L, active1, 0x40L);
+      case 89:
+      case 121:
+         if ((active0 & 0x80000000000L) != 0L)
+            return jjStartNfaWithStates_0(1, 43, 962);
+         break;
+      case 124:
+         if ((active0 & 0x100L) != 0L)
+            return jjStopAtPos(1, 8);
          break;
       default :
          break;
    }
-   return jjStartNfa_0(4, active0, active1);
+   return jjStartNfa_0(0, active0, active1);
 }
-private int jjMoveStringLiteralDfa6_0(long old0, long active0, long old1, long active1){
+private int jjMoveStringLiteralDfa2_0(long old0, long active0, long old1, long active1){
    if (((active0 &= old0) | (active1 &= old1)) == 0L)
-      return jjStartNfa_0(4, old0, old1);
+      return jjStartNfa_0(0, old0, old1);
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) {
-      jjStopStringLiteralDfa_0(5, active0, active1);
-      return 6;
+      jjStopStringLiteralDfa_0(1, active0, active1);
+      return 2;
    }
    switch(curChar)
    {
+      case 65:
+      case 97:
+         return jjMoveStringLiteralDfa3_0(active0, 0L, active1, 0x300000L);
       case 67:
       case 99:
-         return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0x2L);
+         if ((active0 & 0x800000000000L) != 0L)
+            return jjStartNfaWithStates_0(2, 47, 962);
+         break;
+      case 68:
+      case 100:
+         if ((active0 & 0x400000000L) != 0L)
+            return jjStartNfaWithStates_0(2, 34, 962);
+         else if ((active1 & 0x400L) != 0L)
+            return jjStartNfaWithStates_0(2, 74, 430);
+         return jjMoveStringLiteralDfa3_0(active0, 0x400000000000L, active1, 0x2000L);
       case 69:
       case 101:
-         return jjMoveStringLiteralDfa7_0(active0, 0x1000000000000000L, active1, 0L);
+         return jjMoveStringLiteralDfa3_0(active0, 0x4000000200000000L, active1, 0L);
+      case 70:
+      case 102:
+         return jjMoveStringLiteralDfa3_0(active0, 0x10000000L, active1, 0L);
       case 71:
       case 103:
-         if ((active1 & 0x8L) != 0L)
-            return jjStartNfaWithStates_0(6, 67, 41);
-         break;
+         if ((active0 & 0x2000000000000L) != 0L)
+            return jjStartNfaWithStates_0(2, 49, 962);
+         else if ((active1 & 0x100L) != 0L)
+         {
+            jjmatchedKind = 72;
+            jjmatchedPos = 2;
+         }
+         return jjMoveStringLiteralDfa3_0(active0, 0x800000008000000L, active1, 0x220L);
       case 73:
       case 105:
-         return jjMoveStringLiteralDfa7_0(active0, 0x40000000000000L, active1, 0L);
+         return jjMoveStringLiteralDfa3_0(active0, 0x200040140000000L, active1, 0x80010L);
+      case 75:
+      case 107:
+         return jjMoveStringLiteralDfa3_0(active0, 0x10000000000L, active1, 0L);
       case 76:
       case 108:
-         if ((active0 & 0x800000L) != 0L)
-            return jjStartNfaWithStates_0(6, 23, 41);
+         return jjMoveStringLiteralDfa3_0(active0, 0x400004020080000L, active1, 0L);
+      case 77:
+      case 109:
+         if ((active0 & 0x10000000000000L) != 0L)
+            return jjStartNfaWithStates_0(2, 52, 962);
          break;
       case 78:
       case 110:
-         if ((active0 & 0x4000000000L) != 0L)
-            return jjStartNfaWithStates_0(6, 38, 41);
-         else if ((active0 & 0x200000000000000L) != 0L)
-            return jjStartNfaWithStates_0(6, 57, 41);
-         return jjMoveStringLiteralDfa7_0(active0, 0x800000000000000L, active1, 0L);
+         if ((active0 & 0x8000000000000L) != 0L)
+            return jjStartNfaWithStates_0(2, 51, 426);
+         else if ((active1 & 0x1000000L) != 0L)
+            return jjStartNfaWithStates_0(2, 88, 962);
+         else if ((active1 & 0x2000000L) != 0L)
+            return jjStartNfaWithStates_0(2, 89, 962);
+         return jjMoveStringLiteralDfa3_0(active0, 0x1080000002000000L, active1, 0x4000L);
+      case 79:
+      case 111:
+         return jjMoveStringLiteralDfa3_0(active0, 0x8000100000400000L, active1, 0x40083L);
+      case 80:
+      case 112:
+         if ((active0 & 0x200000L) != 0L)
+            return jjStartNfaWithStates_0(2, 21, 962);
+         else if ((active1 & 0x40L) != 0L)
+            return jjStartNfaWithStates_0(2, 70, 962);
+         break;
+      case 82:
+      case 114:
+         return jjMoveStringLiteralDfa3_0(active0, 0x100000000000000L, active1, 0x10000L);
       case 83:
       case 115:
-         if ((active1 & 0x10L) != 0L)
-            return jjStartNfaWithStates_0(6, 68, 41);
-         else if ((active1 & 0x1000L) != 0L)
-            return jjStartNfaWithStates_0(6, 76, 41);
-         break;
+         if ((active1 & 0x8L) != 0L)
+            return jjStartNfaWithStates_0(2, 67, 908);
+         else if ((active1 & 0x400000L) != 0L)
+            return jjStartNfaWithStates_0(2, 86, 962);
+         return jjMoveStringLiteralDfa3_0(active0, 0x1000000000000L, active1, 0x4L);
       case 84:
       case 116:
-         return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0x10000L);
-      case 89:
-      case 121:
-         return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0x1L);
+         if ((active0 & 0x1000000000L) != 0L)
+            return jjStartNfaWithStates_0(2, 36, 962);
+         else if ((active1 & 0x800000L) != 0L)
+            return jjStartNfaWithStates_0(2, 87, 962);
+         return jjMoveStringLiteralDfa3_0(active0, 0x2000008005000000L, active1, 0L);
+      case 85:
+      case 117:
+         return jjMoveStringLiteralDfa3_0(active0, 0x20000000000000L, active1, 0x28000L);
+      case 86:
+      case 118:
+         return jjMoveStringLiteralDfa3_0(active0, 0x200000000000L, active1, 0L);
+      case 87:
+      case 119:
+         return jjMoveStringLiteralDfa3_0(active0, 0L, active1, 0x1000L);
+      case 88:
+      case 120:
+         if ((active0 & 0x4000000000000L) != 0L)
+            return jjStartNfaWithStates_0(2, 50, 962);
+         else if ((active0 & 0x40000000000000L) != 0L)
+            return jjStartNfaWithStates_0(2, 54, 962);
+         break;
       default :
          break;
    }
-   return jjStartNfa_0(5, active0, active1);
+   return jjStartNfa_0(1, active0, active1);
 }
-private int jjMoveStringLiteralDfa7_0(long old0, long active0, long old1, long active1){
+private int jjMoveStringLiteralDfa3_0(long old0, long active0, long old1, long active1){
    if (((active0 &= old0) | (active1 &= old1)) == 0L)
-      return jjStartNfa_0(5, old0, old1);
+      return jjStartNfa_0(1, old0, old1);
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) {
-      jjStopStringLiteralDfa_0(6, active0, active1);
-      return 7;
+      jjStopStringLiteralDfa_0(2, active0, active1);
+      return 3;
    }
    switch(curChar)
    {
+      case 49:
+         return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0x200L);
+      case 65:
+      case 97:
+         if ((active0 & 0x4000000000000000L) != 0L)
+            return jjStartNfaWithStates_0(3, 62, 962);
+         break;
       case 67:
       case 99:
-         return jjMoveStringLiteralDfa8_0(active0, 0x1000000000000000L, active1, 0L);
+         if ((active0 & 0x1000000000000L) != 0L)
+            return jjStartNfaWithStates_0(3, 48, 858);
+         return jjMoveStringLiteralDfa4_0(active0, 0x100000000000000L, active1, 0L);
       case 68:
       case 100:
-         if ((active0 & 0x40000000000000L) != 0L)
-            return jjStartNfaWithStates_0(7, 54, 41);
+         if ((active1 & 0x4000L) != 0L)
+            return jjStartNfaWithStates_0(3, 78, 962);
          break;
       case 69:
       case 101:
-         if ((active1 & 0x2L) != 0L)
-            return jjStartNfaWithStates_0(7, 65, 41);
-         else if ((active1 & 0x10000L) != 0L)
-            return jjStartNfaWithStates_0(7, 80, 41);
+         if ((active0 & 0x10000000000L) != 0L)
+            return jjStartNfaWithStates_0(3, 40, 962);
+         return jjMoveStringLiteralDfa4_0(active0, 0x2000400006080000L, active1, 0x1000L);
+      case 72:
+      case 104:
+         return jjMoveStringLiteralDfa4_0(active0, 0x8000000L, active1, 0L);
+      case 73:
+      case 105:
+         return jjMoveStringLiteralDfa4_0(active0, 0x800200000000000L, active1, 0x2000L);
+      case 76:
+      case 108:
+         if ((active0 & 0x20000000L) != 0L)
+            return jjStartNfaWithStates_0(3, 29, 962);
+         else if ((active0 & 0x4000000000L) != 0L)
+            return jjStartNfaWithStates_0(3, 38, 452);
+         return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0x10L);
+      case 77:
+      case 109:
+         if ((active0 & 0x400000L) != 0L)
+            return jjStartNfaWithStates_0(3, 22, 962);
          break;
+      case 78:
+      case 110:
+         if ((active0 & 0x40000000L) != 0L)
+            return jjStartNfaWithStates_0(3, 30, 962);
+         else if ((active1 & 0x80000L) != 0L)
+            return jjStartNfaWithStates_0(3, 83, 962);
+         else if ((active1 & 0x100000L) != 0L)
+         {
+            jjmatchedKind = 84;
+            jjmatchedPos = 3;
+         }
+         return jjMoveStringLiteralDfa4_0(active0, 0x220000100000000L, active1, 0x228000L);
+      case 79:
+      case 111:
+         return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0x80L);
+      case 82:
+      case 114:
+         return jjMoveStringLiteralDfa4_0(active0, 0x8000000200000000L, active1, 0x23L);
       case 83:
       case 115:
-         if ((active0 & 0x800000000000000L) != 0L)
-            return jjStartNfaWithStates_0(7, 59, 41);
-         else if ((active1 & 0x1L) != 0L)
-            return jjStartNfaWithStates_0(7, 64, 41);
-         break;
+         if ((active1 & 0x40000L) != 0L)
+            return jjStartNfaWithStates_0(3, 82, 962);
+         return jjMoveStringLiteralDfa4_0(active0, 0x40000000000L, active1, 0L);
+      case 84:
+      case 116:
+         if ((active0 & 0x10000000L) != 0L)
+            return jjStartNfaWithStates_0(3, 28, 962);
+         else if ((active1 & 0x10000L) != 0L)
+            return jjStartNfaWithStates_0(3, 80, 962);
+         return jjMoveStringLiteralDfa4_0(active0, 0x1080000000000000L, active1, 0x4L);
+      case 85:
+      case 117:
+         return jjMoveStringLiteralDfa4_0(active0, 0x100001000000L, active1, 0L);
+      case 87:
+      case 119:
+         return jjMoveStringLiteralDfa4_0(active0, 0x8000000000L, active1, 0L);
+      case 89:
+      case 121:
+         return jjMoveStringLiteralDfa4_0(active0, 0x400000000000000L, active1, 0L);
       default :
          break;
    }
-   return jjStartNfa_0(6, active0, active1);
+   return jjStartNfa_0(2, active0, active1);
 }
-private int jjMoveStringLiteralDfa8_0(long old0, long active0, long old1, long active1){
+private int jjMoveStringLiteralDfa4_0(long old0, long active0, long old1, long active1){
    if (((active0 &= old0) | (active1 &= old1)) == 0L)
-      return jjStartNfa_0(6, old0, old1);
+      return jjStartNfa_0(2, old0, old1);
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) {
-      jjStopStringLiteralDfa_0(7, active0, 0L);
-      return 8;
+      jjStopStringLiteralDfa_0(3, active0, active1);
+      return 4;
    }
    switch(curChar)
    {
+      case 48:
+         if ((active1 & 0x200L) != 0L)
+            return jjStartNfaWithStates_0(4, 73, 28);
+         break;
+      case 50:
+         if ((active1 & 0x200000L) != 0L)
+            return jjStartNfaWithStates_0(4, 85, 28);
+         break;
+      case 65:
+      case 97:
+         return jjMoveStringLiteralDfa5_0(active0, 0x1000000000000000L, active1, 0x2004L);
+      case 67:
+      case 99:
+         return jjMoveStringLiteralDfa5_0(active0, 0x80000L, active1, 0x20000L);
+      case 68:
+      case 100:
+         if ((active1 & 0x8000L) != 0L)
+            return jjStartNfaWithStates_0(4, 79, 962);
+         return jjMoveStringLiteralDfa5_0(active0, 0x8000000000000000L, active1, 0x3L);
+      case 69:
+      case 101:
+         if ((active0 & 0x200000000L) != 0L)
+            return jjStartNfaWithStates_0(4, 33, 962);
+         return jjMoveStringLiteralDfa5_0(active0, 0x8000000000L, active1, 0x20L);
+      case 71:
+      case 103:
+         if ((active0 & 0x100000000L) != 0L)
+            return jjStartNfaWithStates_0(4, 32, 962);
+         return jjMoveStringLiteralDfa5_0(active0, 0x400000000000000L, active1, 0L);
+      case 73:
+      case 105:
+         return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0x10L);
+      case 76:
+      case 108:
+         return jjMoveStringLiteralDfa5_0(active0, 0x100000000000000L, active1, 0L);
+      case 78:
+      case 110:
+         return jjMoveStringLiteralDfa5_0(active0, 0x200000000000L, active1, 0L);
+      case 79:
+      case 111:
+         return jjMoveStringLiteralDfa5_0(active0, 0x800000000000000L, active1, 0L);
+      case 80:
+      case 112:
+         if ((active0 & 0x100000000000L) != 0L)
+            return jjStartNfaWithStates_0(4, 44, 962);
+         break;
+      case 82:
+      case 114:
+         if ((active0 & 0x2000000L) != 0L)
+            return jjStartNfaWithStates_0(4, 25, 962);
+         else if ((active0 & 0x4000000L) != 0L)
+            return jjStartNfaWithStates_0(4, 26, 962);
+         else if ((active0 & 0x400000000000L) != 0L)
+            return jjStartNfaWithStates_0(4, 46, 962);
+         else if ((active1 & 0x80L) != 0L)
+            return jjStartNfaWithStates_0(4, 71, 962);
+         else if ((active1 & 0x1000L) != 0L)
+            return jjStartNfaWithStates_0(4, 76, 962);
+         return jjMoveStringLiteralDfa5_0(active0, 0x2080000001000000L, active1, 0L);
       case 84:
       case 116:
-         return jjMoveStringLiteralDfa9_0(active0, 0x1000000000000000L);
+         if ((active0 & 0x8000000L) != 0L)
+            return jjStartNfaWithStates_0(4, 27, 962);
+         else if ((active0 & 0x20000000000000L) != 0L)
+            return jjStartNfaWithStates_0(4, 53, 962);
+         else if ((active0 & 0x200000000000000L) != 0L)
+            return jjStartNfaWithStates_0(4, 57, 962);
+         return jjMoveStringLiteralDfa5_0(active0, 0x40000000000L, active1, 0L);
       default :
          break;
    }
-   return jjStartNfa_0(7, active0, 0L);
+   return jjStartNfa_0(3, active0, active1);
 }
-private int jjMoveStringLiteralDfa9_0(long old0, long active0){
-   if (((active0 &= old0)) == 0L)
-      return jjStartNfa_0(7, old0, 0L);
+private int jjMoveStringLiteralDfa5_0(long old0, long active0, long old1, long active1){
+   if (((active0 &= old0) | (active1 &= old1)) == 0L)
+      return jjStartNfa_0(3, old0, old1);
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) {
-      jjStopStringLiteralDfa_0(8, active0, 0L);
-      return 9;
+      jjStopStringLiteralDfa_0(4, active0, active1);
+      return 5;
    }
    switch(curChar)
    {
+      case 49:
+         if ((active0 & 0x8000000000000000L) != 0L)
+            return jjStartNfaWithStates_0(5, 63, 28);
+         break;
+      case 50:
+         if ((active1 & 0x1L) != 0L)
+            return jjStartNfaWithStates_0(5, 64, 28);
+         break;
+      case 65:
+      case 97:
+         return jjMoveStringLiteralDfa6_0(active0, 0x1000000L, active1, 0x20000L);
+      case 69:
+      case 101:
+         if ((active0 & 0x100000000000000L) != 0L)
+            return jjStartNfaWithStates_0(5, 56, 962);
+         return jjMoveStringLiteralDfa6_0(active0, 0x8000000000L, active1, 0x20L);
+      case 71:
+      case 103:
+         if ((active0 & 0x200000000000L) != 0L)
+            return jjStartNfaWithStates_0(5, 45, 962);
+         break;
+      case 73:
+      case 105:
+         return jjMoveStringLiteralDfa6_0(active0, 0x1000000000000000L, active1, 0L);
+      case 78:
+      case 110:
+         if ((active0 & 0x800000000000000L) != 0L)
+            return jjStartNfaWithStates_0(5, 59, 962);
+         return jjMoveStringLiteralDfa6_0(active0, 0L, active1, 0x2014L);
+      case 79:
+      case 111:
+         return jjMoveStringLiteralDfa6_0(active0, 0x480000000000000L, active1, 0L);
       case 83:
       case 115:
-         if ((active0 & 0x1000000000000000L) != 0L)
-            return jjStartNfaWithStates_0(9, 60, 41);
+         if ((active0 & 0x40000000000L) != 0L)
+            return jjStartNfaWithStates_0(5, 42, 962);
+         return jjMoveStringLiteralDfa6_0(active0, 0x2000000000000000L, active1, 0x2L);
+      case 84:
+      case 116:
+         if ((active0 & 0x80000L) != 0L)
+            return jjStartNfaWithStates_0(5, 19, 962);
          break;
       default :
          break;
    }
-   return jjStartNfa_0(8, active0, 0L);
+   return jjStartNfa_0(4, active0, active1);
 }
-private int jjStartNfaWithStates_0(int pos, int kind, int state)
-{
-   jjmatchedKind = kind;
-   jjmatchedPos = pos;
+private int jjMoveStringLiteralDfa6_0(long old0, long active0, long old1, long active1){
+   if (((active0 &= old0) | (active1 &= old1)) == 0L)
+      return jjStartNfa_0(4, old0, old1);
    try { curChar = input_stream.readChar(); }
-   catch(java.io.IOException e) { return pos + 1; }
-   return jjMoveNfa_0(state, pos + 1);
-}
-private int jjMoveNfa_0(int startState, int curPos)
-{
-   int startsAt = 0;
-   jjnewStateCnt = 41;
-   int i = 1;
-   jjstateSet[0] = startState;
-   int kind = 0x7fffffff;
-   for (;;)
+   catch(java.io.IOException e) {
+      jjStopStringLiteralDfa_0(5, active0, active1);
+      return 6;
+   }
+   switch(curChar)
    {
-      if (++jjround == 0x7fffffff)
-         ReInitRounds();
-      if (curChar < 64)
-      {
-         long l = 1L << curChar;
-         do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 12:
-               case 25:
-                  if ((0x3ff000000000000L & l) == 0L)
-                     break;
-                  if (kind > 96)
-                     kind = 96;
-                  { jjCheckNAdd(25); }
+      case 67:
+      case 99:
+         return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0x4L);
+      case 69:
+      case 101:
+         return jjMoveStringLiteralDfa7_0(active0, 0x2000000000000000L, active1, 0L);
+      case 71:
+      case 103:
+         if ((active1 & 0x10L) != 0L)
+            return jjStartNfaWithStates_0(6, 68, 962);
+         break;
+      case 73:
+      case 105:
+         return jjMoveStringLiteralDfa7_0(active0, 0x80000000000000L, active1, 0L);
+      case 76:
+      case 108:
+         if ((active0 & 0x1000000L) != 0L)
+            return jjStartNfaWithStates_0(6, 24, 962);
+         break;
+      case 78:
+      case 110:
+         if ((active0 & 0x8000000000L) != 0L)
+            return jjStartNfaWithStates_0(6, 39, 962);
+         else if ((active0 & 0x400000000000000L) != 0L)
+            return jjStartNfaWithStates_0(6, 58, 962);
+         return jjMoveStringLiteralDfa7_0(active0, 0x1000000000000000L, active1, 0L);
+      case 83:
+      case 115:
+         if ((active1 & 0x20L) != 0L)
+            return jjStartNfaWithStates_0(6, 69, 962);
+         else if ((active1 & 0x2000L) != 0L)
+            return jjStartNfaWithStates_0(6, 77, 962);
+         break;
+      case 84:
+      case 116:
+         return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0x20000L);
+      case 89:
+      case 121:
+         return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0x2L);
+      default :
+         break;
+   }
+   return jjStartNfa_0(5, active0, active1);
+}
+private int jjMoveStringLiteralDfa7_0(long old0, long active0, long old1, long active1){
+   if (((active0 &= old0) | (active1 &= old1)) == 0L)
+      return jjStartNfa_0(5, old0, old1);
+   try { curChar = input_stream.readChar(); }
+   catch(java.io.IOException e) {
+      jjStopStringLiteralDfa_0(6, active0, active1);
+      return 7;
+   }
+   switch(curChar)
+   {
+      case 67:
+      case 99:
+         return jjMoveStringLiteralDfa8_0(active0, 0x2000000000000000L, active1, 0L);
+      case 68:
+      case 100:
+         if ((active0 & 0x80000000000000L) != 0L)
+            return jjStartNfaWithStates_0(7, 55, 962);
+         break;
+      case 69:
+      case 101:
+         if ((active1 & 0x4L) != 0L)
+            return jjStartNfaWithStates_0(7, 66, 962);
+         else if ((active1 & 0x20000L) != 0L)
+            return jjStartNfaWithStates_0(7, 81, 962);
+         break;
+      case 83:
+      case 115:
+         if ((active0 & 0x1000000000000000L) != 0L)
+            return jjStartNfaWithStates_0(7, 60, 962);
+         else if ((active1 & 0x2L) != 0L)
+            return jjStartNfaWithStates_0(7, 65, 962);
+         break;
+      default :
+         break;
+   }
+   return jjStartNfa_0(6, active0, active1);
+}
+private int jjMoveStringLiteralDfa8_0(long old0, long active0, long old1, long active1){
+   if (((active0 &= old0) | (active1 &= old1)) == 0L)
+      return jjStartNfa_0(6, old0, old1);
+   try { curChar = input_stream.readChar(); }
+   catch(java.io.IOException e) {
+      jjStopStringLiteralDfa_0(7, active0, 0L);
+      return 8;
+   }
+   switch(curChar)
+   {
+      case 84:
+      case 116:
+         return jjMoveStringLiteralDfa9_0(active0, 0x2000000000000000L);
+      default :
+         break;
+   }
+   return jjStartNfa_0(7, active0, 0L);
+}
+private int jjMoveStringLiteralDfa9_0(long old0, long active0){
+   if (((active0 &= old0)) == 0L)
+      return jjStartNfa_0(7, old0, 0L);
+   try { curChar = input_stream.readChar(); }
+   catch(java.io.IOException e) {
+      jjStopStringLiteralDfa_0(8, active0, 0L);
+      return 9;
+   }
+   switch(curChar)
+   {
+      case 83:
+      case 115:
+         if ((active0 & 0x2000000000000000L) != 0L)
+            return jjStartNfaWithStates_0(9, 61, 962);
+         break;
+      default :
+         break;
+   }
+   return jjStartNfa_0(8, active0, 0L);
+}
+private int jjStartNfaWithStates_0(int pos, int kind, int state)
+{
+   jjmatchedKind = kind;
+   jjmatchedPos = pos;
+   try { curChar = input_stream.readChar(); }
+   catch(java.io.IOException e) { return pos + 1; }
+   return jjMoveNfa_0(state, pos + 1);
+}
+private int jjMoveNfa_0(int startState, int curPos)
+{
+   int startsAt = 0;
+   jjnewStateCnt = 962;
+   int i = 1;
+   jjstateSet[0] = startState;
+   int kind = 0x7fffffff;
+   for (;;)
+   {
+      if (++jjround == 0x7fffffff)
+         ReInitRounds();
+      if (curChar < 64)
+      {
+         long l = 1L << curChar;
+         do
+         {
+            switch(jjstateSet[--i])
+            {
+               case 590:
+               case 28:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 620:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 656:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 373:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 376:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 963:
+                  if ((0x3ff000000000000L & l) != 0L)
+                  {
+                     if (kind > 100)
+                        kind = 100;
+                     { jjCheckNAdd(952); }
+                  }
+                  if ((0x3ff000000000000L & l) != 0L)
+                     { jjCheckNAddTwoStates(948, 949); }
+                  break;
+               case 303:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 431:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 5:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 168:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 669:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 137:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 324:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 910:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 295:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 33:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 877:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 423:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 908:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 932:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 249:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 821:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 491:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 637:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 964:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 813:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 501:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 481:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 452:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 410:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 372:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 752:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 966:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 859:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 315:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 32:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 52:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 426:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 0:
+                  if ((0x3ff000000000000L & l) != 0L)
+                  {
+                     if (kind > 101)
+                        kind = 101;
+                     { jjCheckNAddStates(0, 6); }
+                  }
+                  else if ((0x100002600L & l) != 0L)
+                  {
+                     if (kind > 1)
+                        kind = 1;
+                  }
+                  else if (curChar == 46)
+                     { jjCheckNAddTwoStates(948, 952); }
+                  else if (curChar == 45)
+                     jjstateSet[jjnewStateCnt++] = 22;
+                  else if (curChar == 33)
+                     jjstateSet[jjnewStateCnt++] = 19;
+                  else if (curChar == 60)
+                     jjstateSet[jjnewStateCnt++] = 17;
+                  if (curChar == 13)
+                     jjstateSet[jjnewStateCnt++] = 1;
+                  break;
+               case 332:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 377:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 404:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 45:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 717:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 345:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 909:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 378:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 302:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 454:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 416:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 670:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 797:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 482:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 453:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 439:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 396:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 550:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 597:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 471:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 770:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 549:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 430:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 962:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 438:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 801:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 581:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 858:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 472:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 913:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 796:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 427:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 443:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 424:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 900:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 264:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 965:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 113:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 884:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 1:
+                  if (curChar == 10 && kind > 1)
+                     kind = 1;
+                  break;
+               case 2:
+                  if (curChar == 13)
+                     jjstateSet[jjnewStateCnt++] = 1;
+                  break;
+               case 17:
+                  if (curChar == 62 && kind > 14)
+                     kind = 14;
+                  break;
+               case 18:
+                  if (curChar == 60)
+                     jjstateSet[jjnewStateCnt++] = 17;
+                  break;
+               case 19:
+                  if (curChar == 61 && kind > 14)
+                     kind = 14;
+                  break;
+               case 20:
+                  if (curChar == 33)
+                     jjstateSet[jjnewStateCnt++] = 19;
+                  break;
+               case 21:
+                  if (curChar == 45)
+                     jjstateSet[jjnewStateCnt++] = 22;
+                  break;
+               case 22:
+                  if (curChar != 45)
+                     break;
+                  if (kind > 90)
+                     kind = 90;
+                  { jjCheckNAddStates(7, 9); }
+                  break;
+               case 23:
+                  if ((0xffffffffffffdbffL & l) == 0L)
+                     break;
+                  if (kind > 90)
+                     kind = 90;
+                  { jjCheckNAddStates(7, 9); }
+                  break;
+               case 24:
+                  if ((0x2400L & l) != 0L && kind > 90)
+                     kind = 90;
+                  break;
+               case 25:
+                  if (curChar == 10 && kind > 90)
+                     kind = 90;
+                  break;
+               case 26:
+                  if (curChar == 13)
+                     jjstateSet[jjnewStateCnt++] = 25;
+                  break;
+               case 255:
+                  if (curChar == 45)
+                     jjstateSet[jjnewStateCnt++] = 254;
+                  break;
+               case 947:
+                  if (curChar == 46)
+                     { jjCheckNAddTwoStates(948, 952); }
+                  break;
+               case 948:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     { jjCheckNAddTwoStates(948, 949); }
+                  break;
+               case 950:
+                  if ((0x280000000000L & l) != 0L)
+                     { jjCheckNAdd(951); }
+                  break;
+               case 951:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 99)
+                     kind = 99;
+                  { jjCheckNAdd(951); }
+                  break;
+               case 952:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 100)
+                     kind = 100;
+                  { jjCheckNAdd(952); }
+                  break;
+               case 953:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 101)
+                     kind = 101;
+                  { jjCheckNAddStates(0, 6); }
+                  break;
+               case 954:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     { jjCheckNAddTwoStates(954, 949); }
+                  break;
+               case 955:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     { jjCheckNAddTwoStates(955, 956); }
+                  break;
+               case 956:
+                  if (curChar == 46)
+                     { jjCheckNAddTwoStates(957, 949); }
+                  break;
+               case 957:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     { jjCheckNAddTwoStates(957, 949); }
+                  break;
+               case 958:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     { jjCheckNAddTwoStates(958, 959); }
+                  break;
+               case 959:
+                  if (curChar != 46)
+                     break;
+                  if (kind > 100)
+                     kind = 100;
+                  { jjCheckNAdd(960); }
+                  break;
+               case 960:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 100)
+                     kind = 100;
+                  { jjCheckNAdd(960); }
+                  break;
+               case 961:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 101)
+                     kind = 101;
+                  { jjCheckNAdd(961); }
+                  break;
+               default : break;
+            }
+         } while(i != startsAt);
+      }
+      else if (curChar < 128)
+      {
+         long l = 1L << (curChar & 077);
+         do
+         {
+            switch(jjstateSet[--i])
+            {
+               case 590:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x200000002000000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 665;
+                  else if ((0x20000000200000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 656;
+                  else if ((0x2000000020000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 649;
+                  else if ((0x1000000010000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 631;
+                  else if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 628;
+                  else if ((0x200000002000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 626;
+                  else if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 620;
+                  else if ((0x2000000020L & l) != 0L)
+                     { jjCheckNAdd(34); }
+                  else if ((0x800000008L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 593;
+                  if ((0x2000000020000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 643;
+                  else if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 617;
+                  else if ((0x800000008L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 589;
+                  if ((0x2000000020000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 637;
+                  else if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 607;
+                  if ((0x2000000020000L & l) != 0L)
+                     { jjCheckNAdd(280); }
+                  else if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 602;
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 597;
+                  break;
+               case 620:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x400000004000000L & l) != 0L)
+                     { jjCheckNAdd(13); }
+                  break;
+               case 656:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x400000004L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 655;
+                  break;
+               case 373:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x800000008000L & l) != 0L)
+                  {
+                     if (kind > 2)
+                        kind = 2;
+                  }
+                  else if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 385;
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 379;
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 372;
+                  break;
+               case 376:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x800000008L & l) != 0L)
+                     { jjCheckNAdd(34); }
+                  break;
+               case 303:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 302;
+                  break;
+               case 431:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 433;
+                  else if ((0x1000000010L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 430;
+                  break;
+               case 5:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 4;
+                  break;
+               case 168:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 167;
+                  break;
+               case 669:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x400000004L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 668;
+                  break;
+               case 137:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x40000000400000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 173;
+                  else if ((0x10000000100000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 168;
+                  else if ((0x8000000080000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 162;
+                  else if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 144;
+                  if ((0x8000000080000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 152;
+                  else if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 136;
+                  break;
+               case 324:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 323;
+                  break;
+               case 910:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x100000001000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 945;
+                  else if ((0x20000000200000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 943;
+                  else if ((0x10000000100000L & l) != 0L)
+                  {
+                     if (kind > 2)
+                        kind = 2;
+                  }
+                  else if ((0x8000000080000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 932;
+                  else if ((0x4000000040000L & l) != 0L)
+                     { jjCheckNAdd(13); }
+                  else if ((0x400000004000L & l) != 0L)
+                     { jjCheckNAdd(7); }
+                  else if ((0x1000000010L & l) != 0L)
+                     { jjCheckNAdd(53); }
+                  else if ((0x800000008L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 913;
+                  else if ((0x400000004L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 909;
+                  if ((0x100000001000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 923;
+                  if ((0x100000001000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 920;
+                  break;
+               case 295:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 312;
+                  else if ((0x100000001000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 303;
+                  else if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 300;
+                  else if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 297;
+                  else if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 294;
+                  if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 309;
+                  if ((0x800000008000L & l) != 0L)
+                     { jjCheckNAdd(3); }
+                  break;
+               case 33:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 45;
+                  else if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 43;
+                  else if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 32;
+                  if ((0x20000000200L & l) != 0L)
+                     { jjCheckNAdd(34); }
+                  break;
+               case 877:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x8000000080000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 901;
+                  else if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 876;
+                  if ((0x8000000080000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 884;
+                  break;
+               case 423:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x10000000100000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 422;
+                  break;
+               case 908:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 907;
+                  break;
+               case 932:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x8000000080000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 931;
+                  break;
+               case 249:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x100000001000000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 290;
+                  else if ((0x8000000080000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 260;
+                  else if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 256;
+                  else if ((0x100000001000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 248;
+                  if ((0x100000001000000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 285;
+                  else if ((0x400000004000L & l) != 0L)
+                     { jjCheckNAdd(53); }
+                  if ((0x100000001000000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 278;
+                  if ((0x100000001000000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 273;
+                  if ((0x100000001000000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 271;
+                  if ((0x100000001000000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 264;
+                  break;
+               case 821:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x8000000080000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 867;
+                  else if ((0x100000001000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 853;
+                  else if ((0x4000000040L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 849;
+                  else if ((0x800000008L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 830;
+                  else if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 820;
+                  if ((0x8000000080000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 859;
+                  else if ((0x4000000040L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 843;
+                  else if ((0x800000008L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 825;
+                  if ((0x4000000040L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 835;
+                  break;
+               case 491:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x20000000200000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 546;
+                  else if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 542;
+                  else if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 501;
+                  else if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 495;
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 535;
+                  else if ((0x200000002L & l) != 0L)
+                     { jjCheckNAdd(53); }
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 527;
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 524;
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 519;
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 513;
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 508;
+                  break;
+               case 637:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x100000001000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 648;
+                  if ((0x100000001000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 642;
+                  if ((0x100000001000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 636;
+                  if ((0x100000001000L & l) != 0L)
+                  {
+                     if (kind > 2)
+                        kind = 2;
+                  }
+                  break;
+               case 964:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x2000000020L & l) != 0L)
+                  {
+                     if (kind > 2)
+                        kind = 2;
+                  }
+                  break;
+               case 813:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 902;
+                  else if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 895;
+                  else if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 893;
+                  else if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 868;
+                  else if ((0x200000002L & l) != 0L)
+                     { jjCheckNAdd(7); }
+                  if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 889;
+                  else if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 885;
+                  else if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 860;
+                  else if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 812;
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 877;
+                  else if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 854;
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 850;
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 844;
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 836;
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 831;
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 826;
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 821;
+                  break;
+               case 501:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x8000000080000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 500;
+                  break;
+               case 481:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x1000000010000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 480;
+                  break;
+               case 452:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x20000000200L & l) != 0L)
+                     { jjCheckNAdd(451); }
+                  break;
+               case 410:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x40000000400000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 412;
+                  else if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 409;
+                  break;
+               case 372:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 384;
+                  else if ((0x8000000080L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 371;
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 378;
+                  break;
+               case 752:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x8000000080000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 772;
+                  else if ((0x1000000010000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 767;
+                  else if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 760;
+                  if ((0x8000000080000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 770;
+                  else if ((0x1000000010000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 764;
+                  else if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 755;
+                  if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 751;
+                  break;
+               case 966:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x10000000100000L & l) != 0L)
+                  {
+                     if (kind > 2)
+                        kind = 2;
+                  }
+                  break;
+               case 859:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x800000008L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 866;
+                  if ((0x800000008L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 858;
+                  break;
+               case 315:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 324;
+                  else if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 321;
+                  else if ((0x100000001000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 318;
+                  else if ((0x2000000020L & l) != 0L)
+                     { jjCheckNAdd(34); }
+                  if ((0x800000008000L & l) != 0L)
+                  {
+                     if (kind > 2)
+                        kind = 2;
+                  }
+                  break;
+               case 32:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x8000000080L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 31;
+                  break;
+               case 52:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x20000000200000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 245;
+                  else if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 190;
+                  else if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 186;
+                  else if ((0x100000001000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 107;
+                  else if ((0x10000000100L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 104;
+                  else if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 68;
+                  if ((0x20000000200000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 241;
+                  else if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 175;
+                  else if ((0x10000000100L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 100;
+                  else if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 62;
+                  if ((0x20000000200000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 231;
+                  else if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 170;
+                  else if ((0x10000000100L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 86;
+                  else if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 60;
+                  if ((0x20000000200000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 215;
+                  else if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 164;
+                  else if ((0x10000000100L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 77;
+                  else if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 58;
+                  if ((0x20000000200000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 205;
+                  else if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 154;
+                  else if ((0x10000000100L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 70;
+                  else if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 51;
+                  if ((0x20000000200000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 195;
+                  else if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 146;
+                  if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 138;
+                  if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 133;
+                  if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 129;
+                  if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 125;
+                  if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 118;
+                  if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 113;
+                  break;
+               case 426:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x20000000200000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 425;
+                  break;
+               case 0:
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x200000002L & l) != 0L)
+                     { jjCheckNAddStates(10, 20); }
+                  else if ((0x1000000010L & l) != 0L)
+                     { jjAddStates(21, 37); }
+                  else if ((0x80000000800000L & l) != 0L)
+                     { jjAddStates(38, 42); }
+                  else if ((0x40000000400000L & l) != 0L)
+                     { jjAddStates(43, 47); }
+                  else if ((0x20000000200000L & l) != 0L)
+                     { jjAddStates(48, 54); }
+                  else if ((0x10000000100000L & l) != 0L)
+                     { jjCheckNAddStates(55, 68); }
+                  else if ((0x8000000080000L & l) != 0L)
+                     { jjAddStates(69, 85); }
+                  else if ((0x4000000040000L & l) != 0L)
+                     { jjAddStates(86, 93); }
+                  else if ((0x1000000010000L & l) != 0L)
+                     { jjAddStates(94, 104); }
+                  else if ((0x800000008000L & l) != 0L)
+                     { jjCheckNAddStates(105, 111); }
+                  else if ((0x400000004000L & l) != 0L)
+                     { jjCheckNAddStates(112, 118); }
+                  else if ((0x200000002000L & l) != 0L)
+                     { jjAddStates(119, 122); }
+                  else if ((0x100000001000L & l) != 0L)
+                     { jjAddStates(123, 128); }
+                  else if ((0x20000000200L & l) != 0L)
+                     { jjAddStates(129, 141); }
+                  else if ((0x8000000080L & l) != 0L)
+                     { jjCheckNAddStates(142, 146); }
+                  else if ((0x4000000040L & l) != 0L)
+                     { jjAddStates(147, 153); }
+                  else if ((0x2000000020L & l) != 0L)
+                     { jjAddStates(154, 163); }
+                  else if ((0x800000008L & l) != 0L)
+                     { jjAddStates(164, 193); }
+                  else if ((0x400000004L & l) != 0L)
+                     { jjAddStates(194, 197); }
+                  else if ((0x400000004000000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 15;
+                  else if ((0x200000002000000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 11;
+                  else if ((0x80000000800L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 8;
+                  else if ((0x10000000100L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 5;
+                  break;
+               case 332:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x8000000080000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 396;
+                  else if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 389;
+                  else if ((0x200000002000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 338;
+                  else if ((0x1000000010L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 331;
+                  if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 387;
+                  if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 381;
+                  if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 374;
+                  if ((0x400000004000L & l) != 0L)
+                     { jjCheckNAdd(34); }
+                  if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 368;
+                  if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 364;
+                  if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 355;
+                  if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 352;
+                  if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 345;
+                  break;
+               case 377:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 376;
+                  break;
+               case 404:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 419;
+                  else if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 413;
+                  else if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 405;
+                  if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 416;
+                  else if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 410;
+                  else if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 403;
+                  break;
+               case 45:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x10000000100000L & l) != 0L)
+                     { jjCheckNAdd(36); }
+                  break;
+               case 717:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x20000000200000L & l) != 0L)
+                     { jjCheckNAdd(13); }
+                  else if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 744;
+                  else if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 741;
+                  if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 732;
+                  if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 725;
+                  if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 716;
+                  break;
+               case 345:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x10000000100000L & l) != 0L)
+                     { jjCheckNAdd(320); }
+                  else if ((0x8000000080000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 367;
+                  else if ((0x1000000010000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 354;
+                  else if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 351;
+                  else if ((0x1000000010L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 344;
+                  if ((0x10000000100000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 386;
+                  else if ((0x8000000080000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 363;
+                  if ((0x10000000100000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 380;
+                  if ((0x10000000100000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 373;
+                  if ((0x10000000100000L & l) != 0L)
+                  {
+                     if (kind > 2)
+                        kind = 2;
+                  }
+                  break;
+               case 909:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x8000000080000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 908;
+                  break;
+               case 378:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x40000000400000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 383;
+                  else if ((0x8000000080000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 377;
+                  break;
+               case 302:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x200000002L & l) != 0L)
+                     { jjCheckNAdd(34); }
+                  break;
+               case 454:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x200000002000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 458;
+                  else if ((0x100000001000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 453;
+                  break;
+               case 416:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x80000000800000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 418;
+                  else if ((0x800000008L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 415;
+                  break;
+               case 670:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 747;
+                  else if ((0x800000008000L & l) != 0L)
+                  {
+                     if (kind > 2)
+                        kind = 2;
+                  }
+                  else if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 711;
+                  else if ((0x10000000100L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 678;
+                  else if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 676;
+                  else if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 669;
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 745;
+                  else if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 698;
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 742;
+                  else if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 687;
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 733;
+                  else if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 680;
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 726;
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 717;
+                  break;
+               case 797:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 809;
+                  else if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 806;
+                  else if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 804;
+                  else if ((0x10000000100L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 802;
+                  if ((0x10000000100L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 796;
+                  break;
+               case 482:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x10000000100000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 481;
+                  break;
+               case 453:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x100000001000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 452;
+                  break;
+               case 439:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x20000000200000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 459;
+                  else if ((0x800000008000L & l) != 0L)
+                  {
+                     if (kind > 2)
+                        kind = 2;
+                  }
+                  else if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 449;
+                  else if ((0x800000008L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 447;
+                  else if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 444;
+                  if ((0x20000000200000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 454;
+                  else if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 438;
+                  break;
+               case 396:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 395;
+                  break;
+               case 550:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 583;
+                  else if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 575;
+                  if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 581;
+                  else if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 571;
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 565;
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 559;
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 551;
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 549;
+                  break;
+               case 597:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x10000000100000L & l) != 0L)
+                  {
+                     if (kind > 2)
+                        kind = 2;
+                  }
+                  else if ((0x8000000080000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 616;
+                  else if ((0x800000008L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 601;
+                  if ((0x8000000080000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 606;
+                  else if ((0x800000008L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 596;
+                  break;
+               case 471:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x40000000400000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 488;
+                  else if ((0x20000000200000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 482;
+                  else if ((0x1000000010000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 478;
+                  else if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 472;
+                  else if ((0x4000000040L & l) != 0L)
+                  {
+                     if (kind > 2)
+                        kind = 2;
+                  }
+                  else if ((0x800000008L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 470;
+                  if ((0x1000000010000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 474;
+                  break;
+               case 770:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x2000000020L & l) != 0L)
+                     { jjCheckNAdd(3); }
+                  else if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 769;
+                  break;
+               case 549:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x40000000400000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 574;
+                  else if ((0x8000000080000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 570;
+                  else if ((0x100000001000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 564;
+                  else if ((0x4000000040L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 558;
+                  else if ((0x200000002L & l) != 0L)
+                     { jjCheckNAdd(280); }
+                  if ((0x200000002L & l) != 0L)
+                     { jjCheckNAdd(53); }
+                  break;
+               case 430:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x20000000200000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 429;
+                  break;
+               case 962:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  break;
+               case 438:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x10000000100000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 443;
+                  else if ((0x200000002000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 437;
+                  break;
+               case 801:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 800;
+                  if ((0x400000004000L & l) != 0L)
+                  {
+                     if (kind > 2)
+                        kind = 2;
+                  }
+                  break;
+               case 581:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x80000000800000L & l) != 0L)
+                     { jjCheckNAdd(156); }
+                  else if ((0x100000001000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 580;
+                  break;
+               case 858:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 865;
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 857;
+                  break;
+               case 472:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x100000001000L & l) != 0L)
+                     { jjCheckNAdd(7); }
+                  break;
+               case 913:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x10000000100000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 912;
+                  break;
+               case 796:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 801;
+                  if ((0x2000000020L & l) != 0L)
+                     { jjCheckNAdd(30); }
+                  break;
+               case 427:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 426;
+                  break;
+               case 443:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 442;
+                  break;
+               case 424:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 434;
+                  else if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 427;
+                  else if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 423;
+                  if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 431;
+                  break;
+               case 900:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 899;
+                  break;
+               case 264:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x10000000100000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 289;
+                  else if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 277;
+                  else if ((0x800000008L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 270;
+                  if ((0x10000000100000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 284;
+                  else if ((0x2000000020L & l) != 0L)
+                     { jjCheckNAdd(251); }
+                  else if ((0x800000008L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 263;
+                  break;
+               case 965:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x200000002000000L & l) != 0L)
+                  {
+                     if (kind > 2)
+                        kind = 2;
+                  }
+                  break;
+               case 113:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 185;
+                  else if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 174;
+                  else if ((0x200000002000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 132;
+                  else if ((0x100000001000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 128;
+                  else if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 112;
+                  if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 169;
+                  else if ((0x100000001000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 124;
+                  if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 163;
+                  else if ((0x100000001000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 117;
+                  if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 153;
+                  if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 145;
+                  if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 137;
+                  break;
+               case 884:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAdd(28); }
+                  }
+                  if ((0x7fffffe07fffffeL & l) != 0L)
+                  {
+                     if (kind > 97)
+                        kind = 97;
+                     { jjCheckNAddTwoStates(27, 28); }
+                  }
+                  if ((0x10000000100000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 900;
+                  else if ((0x800000008L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 883;
+                  break;
+               case 3:
+                  if ((0x4000000040000L & l) != 0L && kind > 2)
+                     kind = 2;
+                  break;
+               case 4:
+               case 689:
+                  if ((0x20000000200000L & l) != 0L)
+                     { jjCheckNAdd(3); }
+                  break;
+               case 6:
+                  if ((0x10000000100L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 5;
+                  break;
+               case 7:
+                  if ((0x200000002000000L & l) != 0L && kind > 2)
+                     kind = 2;
+                  break;
+               case 8:
+                  if ((0x2000000020L & l) != 0L)
+                     { jjCheckNAdd(7); }
+                  break;
+               case 9:
+                  if ((0x80000000800L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 8;
+                  break;
+               case 10:
+               case 70:
+               case 446:
+               case 782:
+                  if ((0x200000002L & l) != 0L)
+                     { jjCheckNAdd(3); }
+                  break;
+               case 11:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 10;
+                  break;
+               case 12:
+                  if ((0x200000002000000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 11;
+                  break;
+               case 13:
+                  if ((0x2000000020L & l) != 0L && kind > 2)
+                     kind = 2;
+                  break;
+               case 14:
+                  if ((0x400000004000L & l) != 0L)
+                     { jjCheckNAdd(13); }
+                  break;
+               case 15:
+                  if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 14;
+                  break;
+               case 16:
+                  if ((0x400000004000000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 15;
+                  break;
+               case 23:
+                  if (kind > 90)
+                     kind = 90;
+                  { jjAddStates(7, 9); }
+                  break;
+               case 27:
+                  if ((0x7fffffe07fffffeL & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAddTwoStates(27, 28); }
+                  break;
+               case 28:
+                  if ((0x7fffffe87fffffeL & l) == 0L)
+                     break;
+                  if (kind > 97)
+                     kind = 97;
+                  { jjCheckNAdd(28); }
+                  break;
+               case 29:
+                  if ((0x400000004L & l) != 0L)
+                     { jjAddStates(194, 197); }
+                  break;
+               case 30:
+                  if ((0x400000004000L & l) != 0L && kind > 2)
+                     kind = 2;
+                  break;
+               case 31:
+               case 887:
+                  if ((0x20000000200L & l) != 0L)
+                     { jjCheckNAdd(30); }
+                  break;
+               case 34:
+                  if ((0x10000000100000L & l) != 0L && kind > 2)
+                     kind = 2;
+                  break;
+               case 35:
+               case 131:
+                  if ((0x20000000200L & l) != 0L)
+                     { jjCheckNAdd(34); }
+                  break;
+               case 36:
+                  if ((0x10000000100L & l) != 0L && kind > 2)
+                     kind = 2;
+                  break;
+               case 37:
+               case 79:
+               case 88:
+               case 433:
+               case 462:
+               case 804:
+                  if ((0x10000000100000L & l) != 0L)
+                     { jjCheckNAdd(36); }
+                  break;
+               case 38:
+                  if ((0x8000000080L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 37;
+                  break;
+               case 39:
+                  if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 38;
+                  break;
+               case 40:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 39;
+                  break;
+               case 41:
+                  if ((0x100000001000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 40;
+                  break;
+               case 42:
+                  if (curChar == 95)
+                     jjstateSet[jjnewStateCnt++] = 41;
+                  break;
+               case 43:
+                  if ((0x10000000100000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 42;
+                  break;
+               case 44:
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 43;
+                  break;
+               case 46:
+                  if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 45;
+                  break;
+               case 47:
+                  if ((0x800000008L & l) != 0L)
+                     { jjAddStates(164, 193); }
+                  break;
+               case 48:
+               case 634:
+                  if ((0x1000000010L & l) != 0L)
+                     { jjCheckNAdd(13); }
+                  break;
+               case 49:
+                  if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 48;
+                  break;
+               case 50:
+                  if ((0x800000008L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 49;
+                  break;
+               case 51:
+                  if ((0x8000000080000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 50;
+                  break;
+               case 53:
+                  if ((0x1000000010L & l) != 0L && kind > 2)
+                     kind = 2;
+                  break;
+               case 54:
+               case 846:
+                  if ((0x2000000020L & l) != 0L)
+                     { jjCheckNAdd(53); }
+                  break;
+               case 55:
+                  if ((0x1000000010L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 54;
+                  break;
+               case 56:
+                  if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 55;
+                  break;
+               case 57:
+                  if ((0x800000008L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 56;
+                  break;
+               case 58:
+                  if ((0x8000000080000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 57;
+                  break;
+               case 59:
+                  if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 58;
+                  break;
+               case 60:
+               case 106:
+               case 248:
+               case 293:
+                  if ((0x8000000080000L & l) != 0L)
+                     { jjCheckNAdd(13); }
+                  break;
+               case 61:
+                  if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 60;
+                  break;
+               case 62:
+               case 299:
+               case 405:
+                  if ((0x8000000080000L & l) != 0L)
+                     { jjCheckNAdd(34); }
+                  break;
+               case 63:
+                  if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 62;
+                  break;
+               case 64:
+                  if ((0x8000000080L & l) != 0L && kind > 2)
+                     kind = 2;
+                  break;
+               case 65:
+                  if ((0x800000008000L & l) != 0L)
+                     { jjCheckNAdd(64); }
+                  break;
+               case 66:
+                  if ((0x100000001000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 65;
+                  break;
+               case 67:
+                  if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 66;
+                  break;
+               case 68:
+                  if ((0x10000000100000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 67;
+                  break;
+               case 69:
+                  if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 68;
+                  break;
+               case 71:
+                  if ((0x10000000100L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 70;
+                  break;
+               case 72:
+               case 233:
+               case 371:
+               case 418:
+               case 609:
+               case 658:
+               case 766:
+               case 798:
+               case 922:
+                  if ((0x2000000020L & l) != 0L)
+                     { jjCheckNAdd(3); }
+                  break;
+               case 73:
+                  if ((0x10000000100000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 72;
+                  break;
+               case 74:
+                  if ((0x800000008L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 73;
+                  break;
+               case 75:
+                  if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 74;
+                  break;
+               case 76:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 75;
+                  break;
+               case 77:
+                  if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 76;
+                  break;
+               case 78:
+                  if ((0x10000000100L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 77;
+                  break;
+               case 80:
+                  if ((0x8000000080L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 79;
+                  break;
+               case 81:
+                  if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 80;
+                  break;
+               case 82:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 81;
+                  break;
+               case 83:
+                  if ((0x100000001000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 82;
+                  break;
+               case 84:
+                  if (curChar == 95)
+                     jjstateSet[jjnewStateCnt++] = 83;
+                  break;
+               case 85:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 84;
+                  break;
+               case 86:
+                  if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 85;
+                  break;
+               case 87:
+                  if ((0x10000000100L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 86;
+                  break;
+               case 89:
+                  if ((0x8000000080L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 88;
+                  break;
+               case 90:
+                  if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 89;
+                  break;
+               case 91:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 90;
+                  break;
+               case 92:
+                  if ((0x100000001000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 91;
+                  break;
+               case 93:
+                  if (curChar == 95)
+                     jjstateSet[jjnewStateCnt++] = 92;
+                  break;
+               case 94:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 93;
+                  break;
+               case 95:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 94;
+                  break;
+               case 96:
+                  if ((0x10000000100000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 95;
+                  break;
+               case 97:
+                  if ((0x800000008L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 96;
+                  break;
+               case 98:
+                  if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 97;
+                  break;
+               case 99:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 98;
+                  break;
+               case 100:
+                  if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 99;
+                  break;
+               case 101:
+                  if ((0x10000000100L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 100;
+                  break;
+               case 102:
+                  if ((0x80000000800L & l) != 0L && kind > 2)
+                     kind = 2;
+                  break;
+               case 103:
+               case 577:
+                  if ((0x800000008L & l) != 0L)
+                     { jjCheckNAdd(102); }
+                  break;
+               case 104:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 103;
+                  break;
+               case 105:
+                  if ((0x10000000100L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 104;
+                  break;
+               case 107:
+                  if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 106;
+                  break;
+               case 108:
+                  if ((0x100000001000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 107;
+                  break;
+               case 109:
+               case 630:
+                  if ((0x800000008L & l) != 0L)
+                     { jjCheckNAdd(13); }
+                  break;
+               case 110:
+                  if ((0x8000000080000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 109;
+                  break;
+               case 111:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 110;
+                  break;
+               case 112:
+                  if ((0x100000001000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 111;
+                  break;
+               case 114:
+                  if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 113;
+                  break;
+               case 115:
+               case 188:
+               case 197:
+               case 275:
+               case 333:
+               case 425:
+               case 645:
+               case 700:
+               case 728:
+               case 762:
+               case 808:
+               case 812:
+               case 815:
+               case 852:
+               case 905:
+               case 916:
+                  if ((0x10000000100000L & l) != 0L)
+                     { jjCheckNAdd(13); }
+                  break;
+               case 116:
+                  if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 115;
+                  break;
+               case 117:
+                  if ((0x100000001000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 116;
+                  break;
+               case 118:
+                  if ((0x100000001000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 117;
+                  break;
+               case 119:
+                  if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 118;
+                  break;
+               case 120:
+               case 140:
+               case 266:
+               case 391:
+               case 476:
+               case 497:
+               case 503:
+               case 599:
+               case 604:
+               case 719:
+               case 735:
+               case 750:
+               case 911:
+               case 927:
+               case 934:
+                  if ((0x800000008000L & l) != 0L)
+                     { jjCheckNAdd(30); }
+                  break;
+               case 121:
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 120;
+                  break;
+               case 122:
+                  if ((0x10000000100000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 121;
+                  break;
+               case 123:
+                  if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 122;
+                  break;
+               case 124:
+                  if ((0x100000001000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 123;
+                  break;
+               case 125:
+                  if ((0x100000001000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 124;
+                  break;
+               case 126:
+                  if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 125;
+                  break;
+               case 127:
+                  if ((0x200000002000L & l) != 0L)
+                     { jjCheckNAdd(30); }
+                  break;
+               case 128:
+                  if ((0x20000000200000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 127;
+                  break;
+               case 129:
+                  if ((0x100000001000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 128;
+                  break;
+               case 130:
+                  if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 129;
+                  break;
+               case 132:
+                  if ((0x200000002000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 131;
+                  break;
+               case 133:
+                  if ((0x200000002000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 132;
+                  break;
+               case 134:
+                  if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 133;
+                  break;
+               case 135:
+               case 287:
+               case 567:
+               case 879:
+                  if ((0x800000008L & l) != 0L)
+                     { jjCheckNAdd(34); }
+                  break;
+               case 136:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 135;
+                  break;
+               case 138:
+                  if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 137;
+                  break;
+               case 139:
+                  if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 138;
+                  break;
+               case 141:
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 140;
+                  break;
+               case 142:
+                  if ((0x10000000100000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 141;
+                  break;
+               case 143:
+                  if ((0x800000008L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 142;
+                  break;
+               case 144:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 143;
+                  break;
+               case 145:
+                  if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 144;
+                  break;
+               case 146:
+                  if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 145;
+                  break;
+               case 147:
+                  if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 146;
+                  break;
+               case 148:
+               case 192:
+               case 323:
+               case 622:
+                  if ((0x400000004000L & l) != 0L)
+                     { jjCheckNAdd(34); }
+                  break;
+               case 149:
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 148;
+                  break;
+               case 150:
+                  if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 149;
+                  break;
+               case 151:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 150;
+                  break;
+               case 152:
+                  if ((0x10000000100000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 151;
+                  break;
+               case 153:
+                  if ((0x8000000080000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 152;
+                  break;
+               case 154:
+                  if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 153;
+                  break;
+               case 155:
+                  if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 154;
+                  break;
+               case 156:
+                  if ((0x8000000080000L & l) != 0L && kind > 2)
+                     kind = 2;
+                  break;
+               case 157:
+                  if ((0x10000000100000L & l) != 0L)
+                     { jjCheckNAdd(156); }
+                  break;
+               case 158:
+                  if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 157;
+                  break;
+               case 159:
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 158;
+                  break;
+               case 160:
+                  if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 159;
+                  break;
+               case 161:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 160;
+                  break;
+               case 162:
+                  if ((0x10000000100000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 161;
+                  break;
+               case 163:
+                  if ((0x8000000080000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 162;
+                  break;
+               case 164:
+                  if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 163;
+                  break;
+               case 165:
+                  if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 164;
+                  break;
+               case 166:
+               case 753:
+               case 775:
+                  if ((0x20000000200000L & l) != 0L)
+                     { jjCheckNAdd(13); }
+                  break;
+               case 167:
+                  if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 166;
+                  break;
+               case 169:
+                  if ((0x10000000100000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 168;
+                  break;
+               case 170:
+                  if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 169;
+                  break;
+               case 171:
+                  if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 170;
+                  break;
+               case 172:
+               case 366:
+                  if ((0x4000000040000L & l) != 0L)
+                     { jjCheckNAdd(34); }
+                  break;
+               case 173:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 172;
+                  break;
+               case 174:
+                  if ((0x40000000400000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 173;
+                  break;
+               case 175:
+                  if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 174;
+                  break;
+               case 176:
+                  if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 175;
+                  break;
+               case 177:
+               case 407:
+               case 651:
+               case 713:
+               case 787:
+                  if ((0x400000004000L & l) != 0L)
+                     { jjCheckNAdd(64); }
+                  break;
+               case 178:
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 177;
+                  break;
+               case 179:
+                  if ((0x1000000010L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 178;
+                  break;
+               case 180:
+                  if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 179;
+                  break;
+               case 181:
+                  if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 180;
+                  break;
+               case 182:
+                  if ((0x1000000010000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 181;
+                  break;
+               case 183:
+                  if ((0x8000000080000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 182;
+                  break;
+               case 184:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 183;
+                  break;
+               case 185:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 184;
+                  break;
+               case 186:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 185;
+                  break;
+               case 187:
+                  if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 186;
+                  break;
+               case 189:
+                  if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 188;
+                  break;
+               case 190:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 189;
+                  break;
+               case 191:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 190;
+                  break;
+               case 193:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 192;
+                  break;
+               case 194:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 193;
+                  break;
+               case 195:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 194;
+                  break;
+               case 196:
+                  if ((0x20000000200000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 195;
+                  break;
+               case 198:
+                  if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 197;
+                  break;
+               case 199:
+                  if ((0x1000000010L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 198;
+                  break;
+               case 200:
+                  if (curChar == 95)
+                     jjstateSet[jjnewStateCnt++] = 199;
+                  break;
+               case 201:
+                  if ((0x10000000100000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 200;
+                  break;
+               case 202:
+                  if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 201;
+                  break;
+               case 203:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 202;
+                  break;
+               case 204:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 203;
+                  break;
+               case 205:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 204;
+                  break;
+               case 206:
+                  if ((0x20000000200000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 205;
+                  break;
+               case 207:
+               case 628:
+               case 680:
+                  if ((0x200000002000L & l) != 0L)
+                     { jjCheckNAdd(13); }
+                  break;
+               case 208:
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 207;
+                  break;
+               case 209:
+                  if ((0x10000000100000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 208;
+                  break;
+               case 210:
+                  if (curChar == 95)
+                     jjstateSet[jjnewStateCnt++] = 209;
+                  break;
+               case 211:
+                  if ((0x10000000100000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 210;
+                  break;
+               case 212:
+                  if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 211;
+                  break;
+               case 213:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 212;
+                  break;
+               case 214:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 213;
+                  break;
+               case 215:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 214;
+                  break;
+               case 216:
+                  if ((0x20000000200000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 215;
+                  break;
+               case 217:
+                  if ((0x1000000010000L & l) != 0L && kind > 2)
+                     kind = 2;
+                  break;
+               case 218:
+               case 682:
+                  if ((0x200000002000L & l) != 0L)
+                     { jjCheckNAdd(217); }
+                  break;
+               case 219:
+                  if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 218;
+                  break;
+               case 220:
+                  if ((0x10000000100000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 219;
+                  break;
+               case 221:
+                  if ((0x8000000080000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 220;
+                  break;
+               case 222:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 221;
+                  break;
+               case 223:
+                  if ((0x200000002000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 222;
+                  break;
+               case 224:
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 223;
+                  break;
+               case 225:
+                  if ((0x10000000100000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 224;
+                  break;
+               case 226:
+                  if (curChar == 95)
+                     jjstateSet[jjnewStateCnt++] = 225;
+                  break;
+               case 227:
+                  if ((0x10000000100000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 226;
+                  break;
+               case 228:
+                  if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 227;
+                  break;
+               case 229:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 228;
+                  break;
+               case 230:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 229;
+                  break;
+               case 231:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 230;
+                  break;
+               case 232:
+                  if ((0x20000000200000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 231;
+                  break;
+               case 234:
+                  if ((0x8000000080000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 233;
+                  break;
+               case 235:
+                  if ((0x20000000200000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 234;
+                  break;
+               case 236:
+                  if (curChar == 95)
+                     jjstateSet[jjnewStateCnt++] = 235;
+                  break;
+               case 237:
+                  if ((0x10000000100000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 236;
+                  break;
+               case 238:
+                  if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 237;
+                  break;
+               case 239:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 238;
+                  break;
+               case 240:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 239;
+                  break;
+               case 241:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 240;
+                  break;
+               case 242:
+                  if ((0x20000000200000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 241;
+                  break;
+               case 243:
+               case 340:
+               case 526:
+               case 639:
+               case 862:
+                  if ((0x800000008000L & l) != 0L)
+                     { jjCheckNAdd(3); }
+                  break;
+               case 244:
+                  if ((0x8000000080000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 243;
+                  break;
+               case 245:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 244;
+                  break;
+               case 246:
+                  if ((0x20000000200000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 245;
+                  break;
+               case 247:
+                  if ((0x2000000020L & l) != 0L)
+                     { jjAddStates(154, 163); }
+                  break;
+               case 250:
+               case 311:
+               case 595:
+                  if ((0x400000004000L & l) != 0L)
+                     { jjCheckNAdd(53); }
+                  break;
+               case 251:
+                  if ((0x800000008L & l) != 0L && kind > 2)
+                     kind = 2;
+                  break;
+               case 252:
+                  if ((0x2000000020L & l) != 0L)
+                     { jjCheckNAdd(251); }
+                  break;
+               case 253:
+                  if ((0x100000001000000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 252;
+                  break;
+               case 254:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 253;
+                  break;
+               case 256:
+                  if ((0x1000000010L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 255;
+                  break;
+               case 257:
+                  if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 256;
+                  break;
+               case 258:
+                  if ((0x1000000010000L & l) != 0L)
+                     { jjCheckNAdd(13); }
+                  break;
+               case 259:
+                  if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 258;
+                  break;
+               case 260:
+                  if ((0x800000008L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 259;
+                  break;
+               case 261:
+                  if ((0x8000000080000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 260;
+                  break;
+               case 262:
+                  if ((0x1000000010000L & l) != 0L)
+                     { jjCheckNAdd(34); }
+                  break;
+               case 263:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 262;
+                  break;
+               case 265:
+                  if ((0x100000001000000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 264;
+                  break;
+               case 267:
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 266;
+                  break;
+               case 268:
+                  if ((0x10000000100000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 267;
+                  break;
+               case 269:
+                  if ((0x1000000010000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 268;
+                  break;
+               case 270:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 269;
+                  break;
+               case 271:
+                  if ((0x800000008L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 270;
+                  break;
+               case 272:
+                  if ((0x100000001000000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 271;
+                  break;
+               case 273:
+                  if ((0x2000000020L & l) != 0L)
+                     { jjCheckNAdd(251); }
+                  break;
+               case 274:
+                  if ((0x100000001000000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 273;
+                  break;
+               case 276:
+                  if ((0x20000000200000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 275;
+                  break;
+               case 277:
+                  if ((0x800000008L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 276;
+                  break;
+               case 278:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 277;
+                  break;
+               case 279:
+                  if ((0x100000001000000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 278;
+                  break;
+               case 280:
+                  if ((0x100000001000L & l) != 0L && kind > 2)
+                     kind = 2;
+                  break;
+               case 281:
+               case 316:
+               case 383:
+               case 415:
+               case 440:
+               case 492:
+               case 823:
+                  if ((0x200000002L & l) != 0L)
+                     { jjCheckNAdd(280); }
+                  break;
+               case 282:
+                  if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 281;
+                  break;
+               case 283:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 282;
+                  break;
+               case 284:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 283;
+                  break;
+               case 285:
+                  if ((0x10000000100000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 284;
+                  break;
+               case 286:
+                  if ((0x100000001000000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 285;
+                  break;
+               case 288:
+                  if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 287;
+                  break;
+               case 289:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 288;
+                  break;
+               case 290:
+                  if ((0x10000000100000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 289;
+                  break;
+               case 291:
+                  if ((0x100000001000000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 290;
+                  break;
+               case 292:
+                  if ((0x4000000040L & l) != 0L)
+                     { jjAddStates(147, 153); }
+                  break;
+               case 294:
+                  if ((0x100000001000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 293;
+                  break;
+               case 296:
+               case 422:
+                  if ((0x800000008L & l) != 0L)
+                     { jjCheckNAdd(36); }
+                  break;
+               case 297:
+                  if ((0x10000000100000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 296;
+                  break;
+               case 298:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 297;
+                  break;
+               case 300:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 299;
+                  break;
+               case 301:
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 300;
+                  break;
+               case 304:
+                  if ((0x100000001000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 303;
+                  break;
+               case 305:
+                  if ((0x800000008000L & l) != 0L)
+                     { jjCheckNAdd(3); }
+                  break;
+               case 306:
+                  if ((0x8000000080L & l) != 0L)
+                     { jjCheckNAdd(30); }
+                  break;
+               case 307:
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 306;
+                  break;
+               case 308:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 307;
+                  break;
+               case 309:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 308;
+                  break;
+               case 310:
+                  if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 309;
+                  break;
+               case 312:
+                  if ((0x20000000200000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 311;
+                  break;
+               case 313:
+                  if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 312;
+                  break;
+               case 314:
+                  if ((0x8000000080L & l) != 0L)
+                     { jjCheckNAddStates(142, 146); }
+                  break;
+               case 317:
+                  if ((0x400000004L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 316;
+                  break;
+               case 318:
+                  if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 317;
+                  break;
+               case 319:
+                  if ((0x100000001000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 318;
+                  break;
+               case 320:
+                  if ((0x800000008000L & l) != 0L && kind > 2)
+                     kind = 2;
+                  break;
+               case 321:
+                  if ((0x10000000100000L & l) != 0L)
+                     { jjCheckNAdd(320); }
+                  break;
+               case 322:
+                  if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 321;
+                  break;
+               case 325:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 324;
+                  break;
+               case 326:
+                  if ((0x20000000200L & l) != 0L)
+                     { jjAddStates(129, 141); }
+                  break;
+               case 327:
+                  if ((0x10000000100000L & l) != 0L)
+                     { jjCheckNAdd(7); }
+                  break;
+               case 328:
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 327;
+                  break;
+               case 329:
+                  if ((0x10000000100000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 328;
+                  break;
+               case 330:
+                  if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 329;
+                  break;
+               case 331:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 330;
+                  break;
+               case 334:
+                  if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 333;
+                  break;
+               case 335:
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 334;
+                  break;
+               case 336:
+                  if ((0x1000000010L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 335;
+                  break;
+               case 337:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 336;
+                  break;
+               case 338:
+                  if ((0x200000002000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 337;
+                  break;
+               case 339:
+                  if ((0x200000002000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 338;
+                  break;
+               case 341:
+                  if ((0x10000000100000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 340;
+                  break;
+               case 342:
+                  if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 341;
+                  break;
+               case 343:
+                  if ((0x800000008L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 342;
+                  break;
+               case 344:
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 343;
+                  break;
+               case 346:
+                  if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 345;
+                  break;
+               case 347:
+                  if ((0x100000001000L & l) != 0L)
+                     { jjCheckNAdd(7); }
+                  break;
+               case 348:
+                  if ((0x100000001000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 347;
+                  break;
+               case 349:
+                  if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 348;
+                  break;
+               case 350:
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 349;
+                  break;
+               case 351:
+                  if ((0x10000000100000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 350;
+                  break;
+               case 352:
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 351;
+                  break;
+               case 353:
+                  if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 352;
+                  break;
+               case 354:
+               case 480:
+                  if ((0x20000000200000L & l) != 0L)
+                     { jjCheckNAdd(34); }
+                  break;
+               case 355:
+                  if ((0x1000000010000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 354;
+                  break;
+               case 356:
+                  if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 355;
+                  break;
+               case 357:
+               case 515:
+               case 561:
+                  if ((0x40000000400000L & l) != 0L)
+                     { jjCheckNAdd(13); }
+                  break;
+               case 358:
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 357;
+                  break;
+               case 359:
+                  if ((0x10000000100000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 358;
+                  break;
+               case 360:
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 359;
+                  break;
+               case 361:
+                  if ((0x8000000080000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 360;
+                  break;
+               case 362:
+                  if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 361;
+                  break;
+               case 363:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 362;
+                  break;
+               case 364:
+                  if ((0x8000000080000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 363;
+                  break;
+               case 365:
+                  if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 364;
+                  break;
+               case 367:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 366;
+                  break;
+               case 368:
+                  if ((0x8000000080000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 367;
+                  break;
+               case 369:
+                  if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 368;
+                  break;
+               case 370:
+                  if ((0x400000004000L & l) != 0L)
+                     { jjCheckNAdd(34); }
+                  break;
+               case 374:
+                  if ((0x10000000100000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 373;
+                  break;
+               case 375:
+                  if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 374;
+                  break;
+               case 379:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 378;
+                  break;
+               case 380:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 379;
+                  break;
+               case 381:
+                  if ((0x10000000100000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 380;
+                  break;
+               case 382:
+                  if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 381;
+                  break;
+               case 384:
+                  if ((0x40000000400000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 383;
+                  break;
+               case 385:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 384;
+                  break;
+               case 386:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 385;
+                  break;
+               case 387:
+                  if ((0x10000000100000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 386;
+                  break;
+               case 388:
+                  if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 387;
+                  break;
+               case 389:
+                  if ((0x10000000100000L & l) != 0L)
+                     { jjCheckNAdd(320); }
+                  break;
+               case 390:
+                  if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 389;
+                  break;
+               case 392:
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 391;
+                  break;
+               case 393:
+                  if ((0x10000000100000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 392;
+                  break;
+               case 394:
+                  if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 393;
+                  break;
+               case 395:
+                  if ((0x100000001000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 394;
+                  break;
+               case 397:
+                  if ((0x8000000080000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 396;
+                  break;
+               case 398:
+                  if ((0x100000001000L & l) != 0L)
+                     { jjAddStates(123, 128); }
+                  break;
+               case 399:
+               case 769:
+                  if ((0x8000000080L & l) != 0L)
+                     { jjCheckNAdd(13); }
+                  break;
+               case 400:
+                  if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 399;
+                  break;
+               case 401:
+                  if ((0x20000000200000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 400;
+                  break;
+               case 402:
+                  if ((0x8000000080L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 401;
+                  break;
+               case 403:
+                  if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 402;
+                  break;
+               case 406:
+                  if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 405;
+                  break;
+               case 408:
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 407;
+                  break;
+               case 409:
+                  if ((0x1000000010L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 408;
+                  break;
+               case 411:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 410;
+                  break;
+               case 412:
+                  if ((0x2000000020L & l) != 0L)
+                     { jjCheckNAdd(280); }
+                  break;
+               case 413:
+                  if ((0x40000000400000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 412;
+                  break;
+               case 414:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 413;
+                  break;
+               case 417:
+                  if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 416;
+                  break;
+               case 419:
+                  if ((0x80000000800000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 418;
+                  break;
+               case 420:
+                  if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 419;
+                  break;
+               case 421:
+                  if ((0x200000002000L & l) != 0L)
+                     { jjAddStates(119, 122); }
+                  break;
+               case 428:
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 427;
+                  break;
+               case 429:
+               case 668:
+               case 838:
+               case 891:
+                  if ((0x100000001000L & l) != 0L)
+                     { jjCheckNAdd(13); }
+                  break;
+               case 432:
+                  if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 431;
+                  break;
+               case 434:
+                  if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 433;
+                  break;
+               case 435:
+                  if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 434;
+                  break;
+               case 436:
+                  if ((0x400000004000L & l) != 0L)
+                     { jjCheckNAddStates(112, 118); }
+                  break;
+               case 437:
+               case 529:
+               case 553:
+               case 778:
+                  if ((0x2000000020L & l) != 0L)
+                     { jjCheckNAdd(156); }
+                  break;
+               case 441:
+                  if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 440;
+                  break;
+               case 442:
+                  if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 441;
+                  break;
+               case 444:
+                  if ((0x10000000100000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 443;
+                  break;
+               case 445:
+                  if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 444;
+                  break;
+               case 447:
+                  if ((0x10000000100L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 446;
+                  break;
+               case 448:
+                  if ((0x800000008L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 447;
+                  break;
+               case 449:
+                  if ((0x100000001000000L & l) != 0L)
+                     { jjCheckNAdd(34); }
+                  break;
+               case 450:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 449;
+                  break;
+               case 451:
+                  if ((0x4000000040L & l) != 0L && kind > 2)
+                     kind = 2;
+                  break;
+               case 455:
+                  if ((0x20000000200000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 454;
+                  break;
+               case 456:
+               case 544:
+                  if ((0x20000000200L & l) != 0L)
+                     { jjCheckNAdd(251); }
+                  break;
+               case 457:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 456;
+                  break;
+               case 458:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 457;
+                  break;
+               case 459:
+                  if ((0x200000002000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 458;
+                  break;
+               case 460:
+                  if ((0x20000000200000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 459;
+                  break;
+               case 461:
+                  if ((0x800000008000L & l) != 0L)
+                     { jjCheckNAddStates(105, 111); }
+                  break;
+               case 463:
+                  if ((0x8000000080L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 462;
+                  break;
+               case 464:
+                  if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 463;
+                  break;
+               case 465:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 464;
+                  break;
+               case 466:
+                  if ((0x100000001000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 465;
+                  break;
+               case 467:
+                  if (curChar == 95)
+                     jjstateSet[jjnewStateCnt++] = 466;
+                  break;
+               case 468:
+                  if ((0x10000000100000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 467;
+                  break;
+               case 469:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 468;
+                  break;
+               case 470:
+                  if ((0x10000000100000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 469;
+                  break;
+               case 473:
+                  if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 472;
+                  break;
+               case 474:
+               case 678:
+                  if ((0x2000000020L & l) != 0L)
+                     { jjCheckNAdd(30); }
+                  break;
+               case 475:
+                  if ((0x1000000010000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 474;
+                  break;
+               case 477:
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 476;
+                  break;
+               case 478:
+                  if ((0x10000000100000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 477;
+                  break;
+               case 479:
+                  if ((0x1000000010000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 478;
+                  break;
+               case 483:
+                  if ((0x20000000200000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 482;
+                  break;
+               case 484:
+                  if ((0x1000000010000L & l) != 0L)
+                     { jjCheckNAdd(156); }
+                  break;
+               case 485:
+                  if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 484;
+                  break;
+               case 486:
+                  if ((0x100000001000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 485;
+                  break;
+               case 487:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 486;
+                  break;
+               case 488:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 487;
+                  break;
+               case 489:
+                  if ((0x40000000400000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 488;
+                  break;
+               case 490:
+                  if ((0x1000000010000L & l) != 0L)
+                     { jjAddStates(94, 104); }
+                  break;
+               case 493:
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 492;
+                  break;
+               case 494:
+                  if ((0x10000000100000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 493;
+                  break;
+               case 495:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 494;
+                  break;
+               case 496:
+                  if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 495;
+                  break;
+               case 498:
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 497;
+                  break;
+               case 499:
+                  if ((0x10000000100000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 498;
+                  break;
+               case 500:
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 499;
+                  break;
+               case 502:
+                  if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 501;
+                  break;
+               case 504:
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 503;
+                  break;
+               case 505:
+                  if ((0x8000000080000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 504;
+                  break;
+               case 506:
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 505;
+                  break;
+               case 507:
+                  if ((0x800000008L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 506;
+                  break;
+               case 508:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 507;
+                  break;
+               case 509:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 508;
+                  break;
+               case 510:
+               case 537:
+               case 828:
+                  if ((0x4000000040000L & l) != 0L)
+                     { jjCheckNAdd(13); }
+                  break;
+               case 511:
+                  if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 510;
+                  break;
+               case 512:
+                  if ((0x1000000010000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 511;
+                  break;
+               case 513:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 512;
+                  break;
+               case 514:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 513;
+                  break;
+               case 516:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 515;
+                  break;
+               case 517:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 516;
+                  break;
+               case 518:
+                  if ((0x8000000080000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 517;
+                  break;
+               case 519:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 518;
+                  break;
+               case 520:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 519;
+                  break;
+               case 521:
+               case 671:
+                  if ((0x4000000040000L & l) != 0L)
+                     { jjCheckNAdd(7); }
+                  break;
+               case 522:
+                  if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 521;
+                  break;
+               case 523:
+                  if ((0x200000002000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 522;
+                  break;
+               case 524:
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 523;
+                  break;
+               case 525:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 524;
+                  break;
+               case 527:
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 526;
+                  break;
+               case 528:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 527;
+                  break;
+               case 530:
+                  if ((0x8000000080L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 529;
+                  break;
+               case 531:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 530;
+                  break;
+               case 532:
+                  if ((0x100000001000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 531;
+                  break;
+               case 533:
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 532;
+                  break;
+               case 534:
+                  if ((0x40000000400000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 533;
+                  break;
+               case 535:
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 534;
+                  break;
+               case 536:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 535;
+                  break;
+               case 538:
+                  if ((0x20000000200000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 537;
+                  break;
+               case 539:
+                  if ((0x1000000010L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 538;
+                  break;
+               case 540:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 539;
+                  break;
+               case 541:
+                  if ((0x800000008L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 540;
+                  break;
+               case 542:
+                  if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 541;
+                  break;
+               case 543:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 542;
+                  break;
+               case 545:
+                  if ((0x100000001000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 544;
+                  break;
+               case 546:
+                  if ((0x400000004L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 545;
+                  break;
+               case 547:
+                  if ((0x20000000200000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 546;
+                  break;
+               case 548:
+                  if ((0x4000000040000L & l) != 0L)
+                     { jjAddStates(86, 93); }
+                  break;
+               case 551:
+                  if ((0x200000002L & l) != 0L)
+                     { jjCheckNAdd(280); }
+                  break;
+               case 552:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 551;
+                  break;
+               case 554:
+                  if ((0x800000008L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 553;
+                  break;
+               case 555:
+                  if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 554;
+                  break;
+               case 556:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 555;
+                  break;
+               case 557:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 556;
+                  break;
+               case 558:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 557;
+                  break;
+               case 559:
+                  if ((0x4000000040L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 558;
+                  break;
+               case 560:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 559;
+                  break;
+               case 562:
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 561;
+                  break;
+               case 563:
+                  if ((0x10000000100000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 562;
+                  break;
+               case 564:
+                  if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 563;
+                  break;
+               case 565:
+                  if ((0x100000001000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 564;
+                  break;
+               case 566:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 565;
+                  break;
+               case 568:
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 567;
+                  break;
+               case 569:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 568;
+                  break;
+               case 570:
+                  if ((0x10000000100000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 569;
+                  break;
+               case 571:
+                  if ((0x8000000080000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 570;
+                  break;
+               case 572:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 571;
+                  break;
+               case 573:
+                  if ((0x80000000800L & l) != 0L)
+                     { jjCheckNAdd(13); }
+                  break;
+               case 574:
+                  if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 573;
+                  break;
+               case 575:
+                  if ((0x40000000400000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 574;
+                  break;
+               case 576:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 575;
+                  break;
+               case 578:
+                  if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 577;
+                  break;
+               case 579:
+                  if ((0x400000004L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 578;
+                  break;
+               case 580:
+                  if ((0x100000001000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 579;
+                  break;
+               case 582:
+                  if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 581;
+                  break;
+               case 583:
+                  if ((0x80000000800000L & l) != 0L)
+                     { jjCheckNAdd(156); }
+                  break;
+               case 584:
+                  if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 583;
+                  break;
+               case 585:
+                  if ((0x8000000080000L & l) != 0L)
+                     { jjAddStates(69, 85); }
+                  break;
+               case 586:
+                  if ((0x200000002L & l) != 0L && kind > 2)
+                     kind = 2;
+                  break;
+               case 587:
+                  if ((0x200000002000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 586;
+                  break;
+               case 588:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 587;
+                  break;
+               case 589:
+                  if ((0x10000000100L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 588;
+                  break;
+               case 591:
+                  if ((0x100000001000L & l) != 0L)
+                     { jjCheckNAdd(280); }
+                  break;
+               case 592:
+                  if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 591;
+                  break;
+               case 593:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 592;
+                  break;
+               case 594:
+                  if ((0x800000008L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 593;
+                  break;
+               case 596:
+                  if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 595;
+                  break;
+               case 598:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 597;
+                  break;
+               case 600:
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 599;
+                  break;
+               case 601:
+                  if ((0x10000000100000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 600;
+                  break;
+               case 602:
+                  if ((0x800000008L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 601;
+                  break;
+               case 603:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 602;
+                  break;
+               case 605:
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 604;
+                  break;
+               case 606:
+                  if ((0x8000000080000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 605;
+                  break;
+               case 607:
+                  if ((0x8000000080000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 606;
+                  break;
+               case 608:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 607;
+                  break;
+               case 610:
+                  if ((0x8000000080000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 609;
+                  break;
+               case 611:
+                  if ((0x20000000200000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 610;
+                  break;
+               case 612:
+                  if (curChar == 95)
+                     jjstateSet[jjnewStateCnt++] = 611;
+                  break;
+               case 613:
+                  if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 612;
+                  break;
+               case 614:
+                  if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 613;
+                  break;
+               case 615:
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 614;
+                  break;
+               case 616:
+                  if ((0x8000000080000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 615;
+                  break;
+               case 617:
+                  if ((0x8000000080000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 616;
+                  break;
+               case 618:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 617;
+                  break;
+               case 619:
+                  if ((0x2000000020L & l) != 0L)
+                     { jjCheckNAdd(34); }
+                  break;
+               case 621:
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 620;
+                  break;
+               case 623:
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 622;
+                  break;
+               case 624:
+                  if ((0x100000001000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 623;
+                  break;
+               case 625:
+                  if ((0x100000001000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 624;
+                  break;
+               case 626:
+                  if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 625;
+                  break;
+               case 627:
+                  if ((0x200000002000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 626;
+                  break;
+               case 629:
+                  if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 628;
+                  break;
+               case 631:
+                  if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 630;
+                  break;
+               case 632:
+                  if ((0x1000000010000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 631;
+                  break;
+               case 633:
+                  if ((0x2000000020000L & l) != 0L)
+                     { jjCheckNAdd(280); }
+                  break;
+               case 635:
+                  if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 634;
+                  break;
+               case 636:
+                  if ((0x800000008L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 635;
+                  break;
+               case 638:
+                  if ((0x2000000020000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 637;
+                  break;
+               case 640:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 639;
+                  break;
+               case 641:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 640;
+                  break;
+               case 642:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 641;
+                  break;
+               case 643:
+                  if ((0x100000001000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 642;
+                  break;
+               case 644:
+                  if ((0x2000000020000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 643;
+                  break;
+               case 646:
+                  if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 645;
+                  break;
+               case 647:
+                  if ((0x10000000100000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 646;
+                  break;
+               case 648:
+                  if ((0x8000000080000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 647;
+                  break;
+               case 649:
+                  if ((0x100000001000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 648;
+                  break;
+               case 650:
+                  if ((0x2000000020000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 649;
+                  break;
+               case 652:
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 651;
+                  break;
+               case 653:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 652;
+                  break;
+               case 654:
+                  if ((0x10000000100000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 653;
+                  break;
+               case 655:
+                  if ((0x8000000080000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 654;
+                  break;
+               case 657:
+                  if ((0x20000000200000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 656;
+                  break;
+               case 659:
+                  if ((0x8000000080000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 658;
+                  break;
+               case 660:
+                  if ((0x20000000200000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 659;
+                  break;
+               case 661:
+                  if (curChar == 95)
+                     jjstateSet[jjnewStateCnt++] = 660;
+                  break;
+               case 662:
+                  if ((0x200000002000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 661;
+                  break;
+               case 663:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 662;
+                  break;
+               case 664:
+                  if ((0x10000000100000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 663;
+                  break;
+               case 665:
+                  if ((0x8000000080000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 664;
+                  break;
+               case 666:
+                  if ((0x200000002000000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 665;
+                  break;
+               case 667:
+                  if ((0x10000000100000L & l) != 0L)
+                     { jjCheckNAddStates(55, 68); }
+                  break;
+               case 672:
+                  if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 671;
+                  break;
+               case 673:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 672;
+                  break;
+               case 674:
+                  if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 673;
+                  break;
+               case 675:
+                  if ((0x1000000010000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 674;
+                  break;
+               case 676:
+                  if ((0x200000002000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 675;
+                  break;
+               case 677:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 676;
+                  break;
+               case 679:
+                  if ((0x10000000100L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 678;
+                  break;
+               case 681:
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 680;
+                  break;
+               case 683:
+                  if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 682;
+                  break;
+               case 684:
+                  if ((0x10000000100000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 683;
+                  break;
+               case 685:
+                  if ((0x8000000080000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 684;
+                  break;
+               case 686:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 685;
+                  break;
+               case 687:
+                  if ((0x200000002000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 686;
+                  break;
+               case 688:
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 687;
+                  break;
+               case 690:
+                  if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 689;
+                  break;
+               case 691:
+                  if ((0x10000000100L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 690;
+                  break;
+               case 692:
+                  if (curChar == 95)
+                     jjstateSet[jjnewStateCnt++] = 691;
+                  break;
+               case 693:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 692;
+                  break;
+               case 694:
+                  if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 693;
+                  break;
+               case 695:
+                  if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 694;
+                  break;
+               case 696:
+                  if ((0x400000004000000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 695;
+                  break;
+               case 697:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 696;
+                  break;
+               case 698:
+                  if ((0x200000002000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 697;
+                  break;
+               case 699:
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 698;
+                  break;
+               case 701:
+                  if ((0x20000000200000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 700;
+                  break;
+               case 702:
+                  if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 701;
+                  break;
+               case 703:
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 702;
+                  break;
+               case 704:
+                  if ((0x200000002000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 703;
+                  break;
+               case 705:
+                  if (curChar == 95)
+                     jjstateSet[jjnewStateCnt++] = 704;
+                  break;
+               case 706:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 705;
+                  break;
+               case 707:
+                  if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 706;
+                  break;
+               case 708:
+                  if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 707;
+                  break;
+               case 709:
+                  if ((0x400000004000000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 708;
+                  break;
+               case 710:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 709;
+                  break;
+               case 711:
+                  if ((0x200000002000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 710;
+                  break;
+               case 712:
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 711;
+                  break;
+               case 714:
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 713;
+                  break;
+               case 715:
+                  if ((0x100000001000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 714;
+                  break;
+               case 716:
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 715;
+                  break;
+               case 718:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 717;
+                  break;
+               case 720:
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 719;
+                  break;
+               case 721:
+                  if ((0x10000000100000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 720;
+                  break;
+               case 722:
+                  if ((0x800000008L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 721;
+                  break;
+               case 723:
+                  if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 722;
+                  break;
+               case 724:
+                  if ((0x8000000080000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 723;
+                  break;
+               case 725:
+                  if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 724;
+                  break;
+               case 726:
+                  if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 725;
+                  break;
+               case 727:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 726;
+                  break;
+               case 729:
+                  if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 728;
+                  break;
+               case 730:
+                  if ((0x100000001000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 729;
+                  break;
+               case 731:
+                  if ((0x8000000080000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 730;
+                  break;
+               case 732:
+                  if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 731;
+                  break;
+               case 733:
+                  if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 732;
+                  break;
+               case 734:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 733;
+                  break;
+               case 736:
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 735;
+                  break;
+               case 737:
+                  if ((0x10000000100000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 736;
+                  break;
+               case 738:
+                  if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 737;
+                  break;
+               case 739:
+                  if ((0x100000001000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 738;
+                  break;
+               case 740:
+                  if ((0x8000000080000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 739;
+                  break;
+               case 741:
+                  if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 740;
+                  break;
+               case 742:
+                  if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 741;
+                  break;
+               case 743:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 742;
+                  break;
+               case 744:
+                  if ((0x200000002000L & l) != 0L && kind > 2)
+                     kind = 2;
+                  break;
+               case 745:
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 744;
+                  break;
+               case 746:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 745;
+                  break;
+               case 747:
+                  if ((0x20000000200000L & l) != 0L)
+                     { jjCheckNAdd(13); }
+                  break;
+               case 748:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 747;
+                  break;
+               case 749:
+                  if ((0x20000000200000L & l) != 0L)
+                     { jjAddStates(48, 54); }
+                  break;
+               case 751:
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 750;
+                  break;
+               case 754:
+                  if ((0x2000000020000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 753;
+                  break;
+               case 755:
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 754;
+                  break;
+               case 756:
+                  if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 755;
+                  break;
+               case 757:
+                  if ((0x80000000800000L & l) != 0L)
+                     { jjCheckNAdd(30); }
+                  break;
+               case 758:
+                  if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 757;
+                  break;
+               case 759:
+                  if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 758;
+                  break;
+               case 760:
+                  if ((0x80000000800L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 759;
+                  break;
+               case 761:
+                  if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 760;
+                  break;
+               case 763:
+                  if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 762;
+                  break;
+               case 764:
+                  if ((0x1000000010L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 763;
+                  break;
+               case 765:
+                  if ((0x1000000010000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 764;
+                  break;
+               case 767:
+                  if ((0x1000000010000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 766;
+                  break;
+               case 768:
+                  if ((0x1000000010000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 767;
+                  break;
+               case 771:
+                  if ((0x8000000080000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 770;
+                  break;
+               case 772:
+                  if ((0x2000000020L & l) != 0L)
+                     { jjCheckNAdd(3); }
+                  break;
+               case 773:
+                  if ((0x8000000080000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 772;
+                  break;
+               case 774:
+                  if ((0x40000000400000L & l) != 0L)
+                     { jjAddStates(43, 47); }
+                  break;
+               case 776:
+                  if ((0x100000001000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 775;
+                  break;
+               case 777:
+                  if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 776;
+                  break;
+               case 779:
+                  if ((0x20000000200000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 778;
+                  break;
+               case 780:
+                  if ((0x100000001000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 779;
+                  break;
+               case 781:
+                  if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 780;
+                  break;
+               case 783:
+                  if ((0x10000000100L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 782;
+                  break;
+               case 784:
+                  if ((0x800000008L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 783;
+                  break;
+               case 785:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 784;
+                  break;
+               case 786:
+                  if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 785;
+                  break;
+               case 788:
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 787;
+                  break;
+               case 789:
+                  if ((0x200000002000000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 788;
+                  break;
+               case 790:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 789;
+                  break;
+               case 791:
+                  if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 790;
+                  break;
+               case 792:
+                  if ((0x80000000800000L & l) != 0L && kind > 2)
+                     kind = 2;
+                  break;
+               case 793:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 792;
+                  break;
+               case 794:
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 793;
+                  break;
+               case 795:
+                  if ((0x80000000800000L & l) != 0L)
+                     { jjAddStates(38, 42); }
+                  break;
+               case 799:
+                  if ((0x40000000400000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 798;
+                  break;
+               case 800:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 799;
+                  break;
+               case 802:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 801;
+                  break;
+               case 803:
+                  if ((0x10000000100L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 802;
+                  break;
+               case 805:
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 804;
+                  break;
+               case 806:
+                  if ((0x4000000040000L & l) != 0L)
+                     { jjCheckNAdd(102); }
+                  break;
+               case 807:
+                  if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 806;
+                  break;
+               case 809:
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 808;
+                  break;
+               case 810:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 809;
+                  break;
+               case 811:
+                  if ((0x1000000010L & l) != 0L)
+                     { jjAddStates(21, 37); }
+                  break;
+               case 814:
+                  if ((0x200000002L & l) != 0L)
+                     { jjCheckNAdd(7); }
+                  break;
+               case 816:
+                  if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 815;
+                  break;
+               case 817:
+                  if ((0x800000008L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 816;
+                  break;
+               case 818:
+                  if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 817;
+                  break;
+               case 819:
+                  if ((0x100000001000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 818;
+                  break;
+               case 820:
+                  if ((0x100000001000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 819;
+                  break;
+               case 822:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 821;
+                  break;
+               case 824:
+                  if ((0x200000002000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 823;
+                  break;
+               case 825:
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 824;
+                  break;
+               case 826:
+                  if ((0x800000008L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 825;
+                  break;
+               case 827:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 826;
+                  break;
+               case 829:
+                  if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 828;
+                  break;
+               case 830:
+                  if ((0x100000001000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 829;
+                  break;
+               case 831:
+                  if ((0x800000008L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 830;
+                  break;
+               case 832:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 831;
+                  break;
+               case 833:
+                  if ((0x100000001000L & l) != 0L)
+                     { jjCheckNAdd(34); }
+                  break;
+               case 834:
+                  if ((0x20000000200000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 833;
+                  break;
+               case 835:
+                  if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 834;
+                  break;
+               case 836:
+                  if ((0x4000000040L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 835;
+                  break;
+               case 837:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 836;
+                  break;
+               case 839:
+                  if ((0x400000004L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 838;
+                  break;
+               case 840:
+                  if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 839;
+                  break;
+               case 841:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 840;
+                  break;
+               case 842:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 841;
+                  break;
+               case 843:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 842;
+                  break;
+               case 844:
+                  if ((0x4000000040L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 843;
+                  break;
+               case 845:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 844;
+                  break;
+               case 847:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 846;
+                  break;
+               case 848:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 847;
+                  break;
+               case 849:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 848;
+                  break;
+               case 850:
+                  if ((0x4000000040L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 849;
+                  break;
+               case 851:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 850;
+                  break;
+               case 853:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 852;
+                  break;
+               case 854:
+                  if ((0x100000001000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 853;
+                  break;
+               case 855:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 854;
+                  break;
+               case 856:
+                  if ((0x400000004L & l) != 0L)
+                     { jjCheckNAdd(13); }
+                  break;
+               case 857:
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 856;
+                  break;
+               case 860:
+                  if ((0x8000000080000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 859;
+                  break;
+               case 861:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 860;
                   break;
-               case 11:
-                  if ((0x3ff000000000000L & l) == 0L)
-                     break;
-                  if (kind > 96)
-                     kind = 96;
-                  { jjCheckNAdd(25); }
+               case 863:
+                  if ((0x10000000100000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 862;
                   break;
-               case 16:
-                  if ((0x3ff000000000000L & l) == 0L)
-                     break;
-                  if (kind > 96)
-                     kind = 96;
-                  { jjCheckNAdd(25); }
+               case 864:
+                  if ((0x1000000010000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 863;
                   break;
-               case 13:
-                  if ((0x3ff000000000000L & l) == 0L)
-                     break;
-                  if (kind > 96)
-                     kind = 96;
-                  { jjCheckNAdd(25); }
+               case 865:
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 864;
                   break;
-               case 42:
-                  if ((0x3ff000000000000L & l) != 0L)
-                  {
-                     if (kind > 99)
-                        kind = 99;
-                     { jjCheckNAdd(31); }
-                  }
-                  if ((0x3ff000000000000L & l) != 0L)
-                     { jjCheckNAddTwoStates(27, 28); }
+               case 866:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 865;
                   break;
-               case 10:
-                  if ((0x3ff000000000000L & l) == 0L)
-                     break;
-                  if (kind > 96)
-                     kind = 96;
-                  { jjCheckNAdd(25); }
+               case 867:
+                  if ((0x800000008L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 866;
                   break;
-               case 41:
-                  if ((0x3ff000000000000L & l) == 0L)
-                     break;
-                  if (kind > 96)
-                     kind = 96;
-                  { jjCheckNAdd(25); }
+               case 868:
+                  if ((0x8000000080000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 867;
                   break;
-               case 0:
-                  if ((0x3ff000000000000L & l) != 0L)
-                  {
-                     if (kind > 100)
-                        kind = 100;
-                     { jjCheckNAddStates(0, 6); }
-                  }
-                  else if ((0x100002600L & l) != 0L)
-                  {
-                     if (kind > 1)
-                        kind = 1;
-                  }
-                  else if (curChar == 46)
-                     { jjCheckNAddTwoStates(27, 31); }
-                  else if (curChar == 45)
-                     jjstateSet[jjnewStateCnt++] = 19;
-                  else if (curChar == 33)
-                     jjstateSet[jjnewStateCnt++] = 5;
-                  else if (curChar == 60)
-                     jjstateSet[jjnewStateCnt++] = 3;
-                  if (curChar == 13)
-                     jjstateSet[jjnewStateCnt++] = 1;
+               case 869:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 868;
                   break;
-               case 1:
-                  if (curChar == 10 && kind > 1)
-                     kind = 1;
+               case 870:
+                  if ((0x800000008L & l) != 0L)
+                     { jjCheckNAdd(156); }
                   break;
-               case 2:
-                  if (curChar == 13)
-                     jjstateSet[jjnewStateCnt++] = 1;
+               case 871:
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 870;
                   break;
-               case 3:
-                  if (curChar == 62 && kind > 13)
-                     kind = 13;
+               case 872:
+                  if ((0x10000000100000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 871;
                   break;
-               case 4:
-                  if (curChar == 60)
-                     jjstateSet[jjnewStateCnt++] = 3;
+               case 873:
+                  if ((0x8000000080000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 872;
                   break;
-               case 5:
-                  if (curChar == 61 && kind > 13)
-                     kind = 13;
+               case 874:
+                  if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 873;
                   break;
-               case 6:
-                  if (curChar == 33)
-                     jjstateSet[jjnewStateCnt++] = 5;
+               case 875:
+                  if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 874;
                   break;
-               case 18:
-                  if (curChar == 45)
-                     jjstateSet[jjnewStateCnt++] = 19;
+               case 876:
+                  if ((0x8000000080L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 875;
                   break;
-               case 19:
-                  if (curChar != 45)
-                     break;
-                  if (kind > 89)
-                     kind = 89;
-                  { jjCheckNAddStates(7, 9); }
+               case 878:
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 877;
                   break;
-               case 20:
-                  if ((0xffffffffffffdbffL & l) == 0L)
-                     break;
-                  if (kind > 89)
-                     kind = 89;
-                  { jjCheckNAddStates(7, 9); }
+               case 880:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 879;
                   break;
-               case 21:
-                  if ((0x2400L & l) != 0L && kind > 89)
-                     kind = 89;
+               case 881:
+                  if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 880;
                   break;
-               case 22:
-                  if (curChar == 10 && kind > 89)
-                     kind = 89;
+               case 882:
+                  if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 881;
                   break;
-               case 23:
-                  if (curChar == 13)
-                     jjstateSet[jjnewStateCnt++] = 22;
+               case 883:
+                  if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 882;
                   break;
-               case 26:
-                  if (curChar == 46)
-                     { jjCheckNAddTwoStates(27, 31); }
+               case 885:
+                  if ((0x8000000080000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 884;
                   break;
-               case 27:
-                  if ((0x3ff000000000000L & l) != 0L)
-                     { jjCheckNAddTwoStates(27, 28); }
+               case 886:
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 885;
                   break;
-               case 29:
-                  if ((0x280000000000L & l) != 0L)
-                     { jjCheckNAdd(30); }
+               case 888:
+                  if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 887;
                   break;
-               case 30:
-                  if ((0x3ff000000000000L & l) == 0L)
-                     break;
-                  if (kind > 98)
-                     kind = 98;
-                  { jjCheckNAdd(30); }
+               case 889:
+                  if ((0x200000002000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 888;
                   break;
-               case 31:
-                  if ((0x3ff000000000000L & l) == 0L)
-                     break;
-                  if (kind > 99)
-                     kind = 99;
-                  { jjCheckNAdd(31); }
+               case 890:
+                  if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 889;
                   break;
-               case 32:
-                  if ((0x3ff000000000000L & l) == 0L)
-                     break;
-                  if (kind > 100)
-                     kind = 100;
-                  { jjCheckNAddStates(0, 6); }
+               case 892:
+                  if ((0x400000004L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 891;
                   break;
-               case 33:
-                  if ((0x3ff000000000000L & l) != 0L)
-                     { jjCheckNAddTwoStates(33, 28); }
+               case 893:
+                  if ((0x20000000200000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 892;
                   break;
-               case 34:
-                  if ((0x3ff000000000000L & l) != 0L)
-                     { jjCheckNAddTwoStates(34, 35); }
+               case 894:
+                  if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 893;
                   break;
-               case 35:
-                  if (curChar == 46)
-                     { jjCheckNAddTwoStates(36, 28); }
+               case 895:
+                  if ((0x800000008000L & l) != 0L)
+                     { jjCheckNAdd(217); }
                   break;
-               case 36:
-                  if ((0x3ff000000000000L & l) != 0L)
-                     { jjCheckNAddTwoStates(36, 28); }
+               case 896:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 895;
                   break;
-               case 37:
-                  if ((0x3ff000000000000L & l) != 0L)
-                     { jjCheckNAddTwoStates(37, 38); }
+               case 897:
+                  if ((0x10000000100000L & l) != 0L && kind > 20)
+                     kind = 20;
                   break;
-               case 38:
-                  if (curChar != 46)
-                     break;
-                  if (kind > 99)
-                     kind = 99;
-                  { jjCheckNAdd(39); }
+               case 898:
+                  if ((0x800000008L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 897;
                   break;
-               case 39:
-                  if ((0x3ff000000000000L & l) == 0L)
-                     break;
-                  if (kind > 99)
-                     kind = 99;
-                  { jjCheckNAdd(39); }
+               case 899:
+                  if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 898;
                   break;
-               case 40:
-                  if ((0x3ff000000000000L & l) == 0L)
-                     break;
-                  if (kind > 100)
-                     kind = 100;
-                  { jjCheckNAdd(40); }
+               case 901:
+                  if ((0x10000000100000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 900;
                   break;
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      else if (curChar < 128)
-      {
-         long l = 1L << (curChar & 077);
-         do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 12:
-                  if ((0x7fffffe87fffffeL & l) != 0L)
-                  {
-                     if (kind > 96)
-                        kind = 96;
-                     { jjCheckNAdd(25); }
-                  }
-                  if ((0x7fffffe07fffffeL & l) != 0L)
-                  {
-                     if (kind > 96)
-                        kind = 96;
-                     { jjCheckNAddTwoStates(24, 25); }
-                  }
+               case 902:
                   if ((0x8000000080000L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 11;
+                     jjstateSet[jjnewStateCnt++] = 901;
                   break;
-               case 11:
-                  if ((0x7fffffe87fffffeL & l) != 0L)
-                  {
-                     if (kind > 96)
-                        kind = 96;
-                     { jjCheckNAdd(25); }
-                  }
-                  if ((0x7fffffe07fffffeL & l) != 0L)
-                  {
-                     if (kind > 96)
-                        kind = 96;
-                     { jjCheckNAddTwoStates(24, 25); }
-                  }
-                  if ((0x10000000100000L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 10;
+               case 903:
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 902;
                   break;
-               case 16:
-                  if ((0x7fffffe87fffffeL & l) != 0L)
-                  {
-                     if (kind > 96)
-                        kind = 96;
-                     { jjCheckNAdd(25); }
-                  }
-                  if ((0x7fffffe07fffffeL & l) != 0L)
-                  {
-                     if (kind > 96)
-                        kind = 96;
-                     { jjCheckNAddTwoStates(24, 25); }
-                  }
+               case 904:
+                  if ((0x200000002L & l) != 0L)
+                     { jjCheckNAddStates(10, 20); }
+                  break;
+               case 906:
+                  if ((0x20000000200000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 905;
+                  break;
+               case 907:
                   if ((0x100000001000L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 15;
+                     jjstateSet[jjnewStateCnt++] = 906;
                   break;
-               case 13:
-                  if ((0x7fffffe87fffffeL & l) != 0L)
-                  {
-                     if (kind > 96)
-                        kind = 96;
-                     { jjCheckNAdd(25); }
-                  }
-                  if ((0x7fffffe07fffffeL & l) != 0L)
-                  {
-                     if (kind > 96)
-                        kind = 96;
-                     { jjCheckNAddTwoStates(24, 25); }
-                  }
+               case 912:
                   if ((0x20000000200L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 12;
+                     jjstateSet[jjnewStateCnt++] = 911;
                   break;
-               case 10:
-                  if ((0x7fffffe87fffffeL & l) != 0L)
-                  {
-                     if (kind > 96)
-                        kind = 96;
-                     { jjCheckNAdd(25); }
-                  }
-                  if ((0x7fffffe07fffffeL & l) != 0L)
-                  {
-                     if (kind > 96)
-                        kind = 96;
-                     { jjCheckNAddTwoStates(24, 25); }
-                  }
-                  if ((0x20000000200L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 9;
+               case 914:
+                  if ((0x800000008L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 913;
                   break;
-               case 41:
-                  if ((0x7fffffe87fffffeL & l) != 0L)
-                  {
-                     if (kind > 96)
-                        kind = 96;
-                     { jjCheckNAdd(25); }
-                  }
-                  if ((0x7fffffe07fffffeL & l) != 0L)
-                  {
-                     if (kind > 96)
-                        kind = 96;
-                     { jjCheckNAddTwoStates(24, 25); }
-                  }
+               case 915:
+                  if ((0x1000000010L & l) != 0L)
+                     { jjCheckNAdd(53); }
                   break;
-               case 0:
-                  if ((0x7fffffe07fffffeL & l) != 0L)
-                  {
-                     if (kind > 96)
-                        kind = 96;
-                     { jjCheckNAddTwoStates(24, 25); }
-                  }
+               case 917:
                   if ((0x200000002L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 16;
-                  else if ((0x1000000010L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 13;
-                  break;
-               case 7:
-                  if ((0x10000000100000L & l) != 0L && kind > 19)
-                     kind = 19;
+                     jjstateSet[jjnewStateCnt++] = 916;
                   break;
-               case 8:
+               case 918:
                   if ((0x800000008L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 7;
+                     jjstateSet[jjnewStateCnt++] = 917;
                   break;
-               case 9:
+               case 919:
+                  if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 918;
+                  break;
+               case 920:
+                  if ((0x100000001000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 919;
+                  break;
+               case 921:
+                  if ((0x100000001000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 920;
+                  break;
+               case 923:
+                  if ((0x10000000100000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 922;
+                  break;
+               case 924:
+                  if ((0x100000001000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 923;
+                  break;
+               case 925:
                   if ((0x400000004000L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 8;
+                     { jjCheckNAdd(7); }
                   break;
-               case 14:
-                  if ((0x1000000010L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 13;
+               case 926:
+                  if ((0x4000000040000L & l) != 0L)
+                     { jjCheckNAdd(13); }
                   break;
-               case 15:
-                  if ((0x100000001000L & l) != 0L && kind > 19)
-                     kind = 19;
+               case 928:
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 927;
                   break;
-               case 17:
+               case 929:
+                  if ((0x10000000100000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 928;
+                  break;
+               case 930:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 929;
+                  break;
+               case 931:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 930;
+                  break;
+               case 933:
+                  if ((0x8000000080000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 932;
+                  break;
+               case 935:
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 934;
+                  break;
+               case 936:
+                  if ((0x10000000100000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 935;
+                  break;
+               case 937:
                   if ((0x200000002L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 16;
+                     jjstateSet[jjnewStateCnt++] = 936;
                   break;
-               case 20:
-                  if (kind > 89)
-                     kind = 89;
-                  { jjAddStates(7, 9); }
+               case 938:
+                  if ((0x400000004000000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 937;
                   break;
-               case 24:
-                  if ((0x7fffffe07fffffeL & l) == 0L)
-                     break;
-                  if (kind > 96)
-                     kind = 96;
-                  { jjCheckNAddTwoStates(24, 25); }
+               case 939:
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 938;
                   break;
-               case 25:
-                  if ((0x7fffffe87fffffeL & l) == 0L)
-                     break;
-                  if (kind > 96)
-                     kind = 96;
-                  { jjCheckNAdd(25); }
+               case 940:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 939;
                   break;
-               case 28:
+               case 941:
+                  if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 940;
+                  break;
+               case 942:
+                  if ((0x10000000100L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 941;
+                  break;
+               case 943:
+                  if ((0x10000000100000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 942;
+                  break;
+               case 944:
+                  if ((0x20000000200000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 943;
+                  break;
+               case 945:
+                  if ((0x100000001000L & l) != 0L && kind > 20)
+                     kind = 20;
+                  break;
+               case 946:
+                  if ((0x100000001000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 945;
+                  break;
+               case 949:
                   if ((0x2000000020L & l) != 0L)
-                     { jjAddStates(10, 11); }
+                     { jjAddStates(198, 199); }
                   break;
                default : break;
             }
@@ -1382,11 +7174,11 @@ private int jjMoveNfa_0(int startState, int curPos)
          {
             switch(jjstateSet[--i])
             {
-               case 20:
+               case 23:
                   if ((jjbitVec0[i2] & l2) == 0L)
                      break;
-                  if (kind > 89)
-                     kind = 89;
+                  if (kind > 90)
+                     kind = 90;
                   { jjAddStates(7, 9); }
                   break;
                default : break;
@@ -1400,7 +7192,7 @@ private int jjMoveNfa_0(int startState, int curPos)
          kind = 0x7fffffff;
       }
       ++curPos;
-      if ((i = jjnewStateCnt) == (startsAt = 41 - (jjnewStateCnt = startsAt)))
+      if ((i = jjnewStateCnt) == (startsAt = 962 - (jjnewStateCnt = startsAt)))
          return curPos;
       try { curChar = input_stream.readChar(); }
       catch(java.io.IOException e) { return curPos; }
@@ -1420,7 +7212,7 @@ private int jjMoveStringLiteralDfa0_1(){
    switch(curChar)
    {
       case 39:
-         return jjStartNfaWithStates_1(0, 92, 1);
+         return jjStartNfaWithStates_1(0, 93, 1);
       default :
          return jjMoveNfa_1(0, 0);
    }
@@ -1454,15 +7246,15 @@ private int jjMoveNfa_1(int startState, int curPos)
                case 0:
                   if ((0xffffff7fffffffffL & l) != 0L)
                   {
-                     if (kind > 91)
-                        kind = 91;
+                     if (kind > 92)
+                        kind = 92;
                   }
                   else if (curChar == 39)
                      jjstateSet[jjnewStateCnt++] = 1;
                   break;
                case 1:
-                  if (curChar == 39 && kind > 91)
-                     kind = 91;
+                  if (curChar == 39 && kind > 92)
+                     kind = 92;
                   break;
                case 2:
                   if (curChar == 39)
@@ -1480,7 +7272,7 @@ private int jjMoveNfa_1(int startState, int curPos)
             switch(jjstateSet[--i])
             {
                case 0:
-                  kind = 91;
+                  kind = 92;
                   break;
                default : break;
             }
@@ -1495,8 +7287,8 @@ private int jjMoveNfa_1(int startState, int curPos)
             switch(jjstateSet[--i])
             {
                case 0:
-                  if ((jjbitVec0[i2] & l2) != 0L && kind > 91)
-                     kind = 91;
+                  if ((jjbitVec0[i2] & l2) != 0L && kind > 92)
+                     kind = 92;
                   break;
                default : break;
             }
@@ -1516,19 +7308,31 @@ private int jjMoveNfa_1(int startState, int curPos)
    }
 }
 static final int[] jjnextStates = {
-   33, 34, 35, 28, 37, 38, 40, 20, 21, 23, 29, 30, 
+   954, 955, 956, 949, 958, 959, 961, 23, 24, 26, 910, 914, 915, 921, 924, 925, 
+   926, 933, 34, 944, 946, 813, 814, 822, 827, 832, 837, 845, 851, 855, 861, 869, 
+   878, 886, 890, 894, 896, 903, 797, 803, 805, 807, 810, 777, 781, 786, 791, 794, 
+   752, 756, 761, 765, 768, 771, 773, 670, 677, 679, 681, 688, 699, 712, 320, 718, 
+   727, 734, 743, 746, 748, 590, 594, 598, 603, 608, 618, 619, 621, 627, 629, 632, 
+   633, 638, 644, 650, 657, 666, 550, 552, 560, 566, 572, 576, 582, 584, 491, 496, 
+   502, 509, 514, 520, 525, 528, 536, 543, 547, 471, 451, 473, 475, 479, 483, 489, 
+   439, 445, 448, 450, 320, 455, 460, 424, 428, 432, 435, 404, 406, 411, 414, 417, 
+   420, 332, 339, 346, 353, 356, 365, 369, 370, 375, 382, 388, 390, 397, 315, 319, 
+   320, 322, 325, 295, 298, 301, 304, 305, 310, 313, 249, 250, 257, 261, 265, 272, 
+   274, 279, 286, 291, 52, 59, 61, 63, 69, 71, 78, 87, 101, 105, 108, 114, 
+   119, 126, 130, 134, 139, 147, 155, 165, 171, 176, 187, 191, 196, 206, 216, 232, 
+   242, 246, 33, 35, 44, 46, 950, 951, 
 };
 
 /** Token literal values. */
 public static final String[] jjstrLiteralImages = {
-"", null, "\50", "\51", "\56", "\54", "\73", "\174\174", "\53", "\55", "\52", 
-"\57", "\75", null, "\74", "\74\75", "\76", "\76\75", null, null, null, null, null, 
+"", null, null, "\50", "\51", "\56", "\54", "\73", "\174\174", "\53", "\55", 
+"\52", "\57", "\75", null, "\74", "\74\75", "\76", "\76\75", null, null, null, null, 
 null, null, null, null, null, null, null, null, null, null, null, null, null, null, 
 null, null, null, null, null, null, null, null, null, null, null, null, null, null, 
 null, null, null, null, null, null, null, null, null, null, null, null, null, null, 
 null, null, null, null, null, null, null, null, null, null, null, null, null, null, 
 null, null, null, null, null, null, null, null, null, null, null, null, null, null, 
-null, null, null, null, null, null, null, null, null, };
+null, null, null, null, null, null, null, null, null, null, };
 protected Token jjFillToken()
 {
    final Token t;
@@ -1707,7 +7511,7 @@ private void jjCheckNAddStates(int start, int end)
   {
     int i;
     jjround = 0x80000001;
-    for (i = 41; i-- > 0;)
+    for (i = 962; i-- > 0;)
       jjrounds[i] = 0x80000000;
   }
 
@@ -1739,22 +7543,22 @@ public static final int[] jjnewLexState = {
    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
-   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, 0, 2, -1, 0, -1, -1, -1, -1, 
-   -1, -1, 
+   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, 0, 2, -1, 0, -1, -1, -1, 
+   -1, -1, -1, 
 };
 static final long[] jjtoToken = {
-   0xfffffffffffffffdL, 0x1d91ffffffL, 
+   0xfffffffffffffffdL, 0x3b23ffffffL, 
 };
 static final long[] jjtoSkip = {
-   0x2L, 0x2000000L, 
+   0x2L, 0x4000000L, 
 };
 static final long[] jjtoMore = {
-   0x0L, 0x6c000000L, 
+   0x0L, 0xd8000000L, 
 };
     protected SimpleCharStream  input_stream;
 
-    private final int[] jjrounds = new int[41];
-    private final int[] jjstateSet = new int[2 * 41];
+    private final int[] jjrounds = new int[962];
+    private final int[] jjstateSet = new int[2 * 962];
 
     
     protected char curChar;
diff --git a/src/adql/parser/ParseException.java b/src/adql/parser/ParseException.java
index 230d7ce..d08297b 100644
--- a/src/adql/parser/ParseException.java
+++ b/src/adql/parser/ParseException.java
@@ -12,7 +12,7 @@
  * 
  * Modified by Gr&eacute;gory Mantelet (ARI), on Sept. 2017
  * Modifications:
- *     - addition of a HINT in the error message when an ADQL reserved
+ *     - addition of a HINT in the error message when an ADQL or SQL reserved
  *       word is at the origin of the error (see initialise(...))
  * 
  * /!\ DO NOT RE-GENERATE THIS FILE /!\
@@ -121,6 +121,22 @@ public class ParseException extends Exception {
 	 * </i></p> */
 	private final static String ADQL_RESERVED_WORDS_REGEX = "(ABS|ACOS|AREA|ASIN|ATAN|ATAN2|BOX|CEILING|CENTROID|CIRCLE|CONTAINS|COORD1|COORD2|COORDSYS|COS|DEGREES|DISTANCE|EXP|FLOOR|INTERSECTS|LOG|LOG10|MOD|PI|POINT|POLYGON|POWER|RADIANS|REGION|RAND|ROUND|SIN|SQRT|TOP|TAN|TRUNCATE|SELECT|TOP|DISTINCT|ALL|AS|COUNT|AVG|MAX|MIN|SUM|FROM|JOIN|CROSS|INNER|OUTER|LEFT|RIGHT|FULL|NATURAL|USING|ON|WHERE|IS|NOT|AND|OR|EXISTS|IN|LIKE|NULL|BETWEEN|ORDER|ASC|DESC|GROUP|BY|HAVING)";
 
+	/** Regular expression listing all SQL reserved words.
+	 * 
+	 * <p><i>Note 1:
+	 * 	This list is built from the list given in the ADQL-2.0 standard,
+	 * 	after removal of all words potentially used in an ADQL query
+	 * 	(see {@link #ADQL_RESERVED_WORDS_REGEX}).
+	 * </i></p>
+	 * 
+	 * <p><i>Note 2:
+	 * 	This regular expression is only used to display an appropriate hint
+	 * 	to the user in the error message if a such word is at the origin of
+	 * 	the error. (see {@link #initialise(Token, int[][], String[])} for more
+	 * 	details).
+	 * </i></p> */
+	private final static String SQL_RESERVED_WORDS_REGEX = "(ABSOLUTE|ACTION|ADD|ALLOCATE|ALTER|ANY|ARE|ASSERTION|AT|AUTHORIZATION|BEGIN|BIT|BIT_LENGTH|BOTH|CASCADE|CASCADED|CASE|CAST|CATALOG|CHAR|CHARACTER|CHAR_LENGTH|CHARACTER_LENGTH|CHECK|CLOSE|COALESCE|COLLATE|COLLATION|COLUMN|COMMIT|CONNECT|CONNECTION|CONSTRAINT|CONSTRAINTS|CONTINUE|CONVERT|CORRESPONDING|CREATE|CURRENT|CURRENT_DATE|CURRENT_TIME|CURRENT_TIMESTAMP|CURRENT_USER|CURSOR|DATE|DAY|DEALLOCATE|DECIMAL|DECLARE|DEFAULT|DEFERRABLE|DEFERRED|DELETE|DESCRIBE|DESCRIPTOR|DIAGNOSTICS|DISCONNECT|DOMAIN|DOUBLE|DROP|ELSE|END|END-EXEC|ESCAPE|EXCEPT|EXCEPTION|EXEC|EXECUTE|EXTERNAL|EXTRACT|FALSE|FETCH|FIRST|FLOAT|FOR|FOREIGN|FOUND|GET|GLOBAL|GO|GOTO|GRANT|HOUR|IDENTITY|IMMEDIATE|INDICATOR|INITIALLY|INPUT|INSENSITIVE|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|ISOLATION|KEY|LANGUAGE|LAST|LEADING|LEVEL|LOCAL|LOWER|MATCH|MINUTE|MODULE|MONTH|NAMES|NATIONAL|NCHAR|NEXT|NO|NULLIF|NUMERIC|OCTET_LENGTH|OF|ONLY|OPEN|OPTION|OUTPUT|OVERLAPS|PAD|PARTIAL|POSITION|PRECISION|PREPARE|PRESERVE|PRIMARY|PRIOR|PRIVILEGES|PROCEDURE|PUBLIC|READ|REAL|REFERENCES|RELATIVE|RESTRICT|REVOKE|ROLLBACK|ROWS|SCHEMA|SCROLL|SECOND|SECTION|SESSION|SESSION_USER|SET|SIZE|SMALLINT|SOME|SPACE|SQL|SQLCODE|SQLERROR|SQLSTATE|SUBSTRING|SYSTEM_USER|TABLE|TEMPORARY|THEN|TIME|TIMESTAMP|TIMEZONE_HOUR|TIMEZONE_MINUTE|TO|TRAILING|TRANSACTION|TRANSLATE|TRANSLATION|TRIM|TRUE|UNION|UNIQUE|UNKNOWN|UPDATE|UPPER|USAGE|USER|VALUE|VALUES|VARCHAR|VARYING|VIEW|WHEN|WHENEVER|WITH|WORK|WRITE|YEAR|ZONE)";
+
 	/**
 	 * Gets the position in the ADQL query of the token which generates this exception.
 	 * 
@@ -181,6 +197,8 @@ public class ParseException extends Exception {
 		String word = tokenName.toString().trim();
 		if (word.toUpperCase().matches(ADQL_RESERVED_WORDS_REGEX))
 			msg.append(System.getProperty("line.separator", "\n")).append("(HINT: \"").append(word).append("\" is a reserved ADQL word. To use it as a column/table/schema name/alias, write it between double quotes.)");
+		else if (word.toUpperCase().matches(SQL_RESERVED_WORDS_REGEX))
+			msg.append(System.getProperty("line.separator", "\n")).append("(HINT: \"").append(word).append("\" is not supported in ADQL, but is however a reserved word. To use it as a column/table/schema name/alias, write it between double quotes.)");
 
 		return msg.toString();
 		/*String eol = System.getProperty("line.separator", "\n");
diff --git a/src/adql/parser/ParseException.java.backup b/src/adql/parser/ParseException.java.backup
index 230d7ce..d08297b 100644
--- a/src/adql/parser/ParseException.java.backup
+++ b/src/adql/parser/ParseException.java.backup
@@ -12,7 +12,7 @@
  * 
  * Modified by Gr&eacute;gory Mantelet (ARI), on Sept. 2017
  * Modifications:
- *     - addition of a HINT in the error message when an ADQL reserved
+ *     - addition of a HINT in the error message when an ADQL or SQL reserved
  *       word is at the origin of the error (see initialise(...))
  * 
  * /!\ DO NOT RE-GENERATE THIS FILE /!\
@@ -121,6 +121,22 @@ public class ParseException extends Exception {
 	 * </i></p> */
 	private final static String ADQL_RESERVED_WORDS_REGEX = "(ABS|ACOS|AREA|ASIN|ATAN|ATAN2|BOX|CEILING|CENTROID|CIRCLE|CONTAINS|COORD1|COORD2|COORDSYS|COS|DEGREES|DISTANCE|EXP|FLOOR|INTERSECTS|LOG|LOG10|MOD|PI|POINT|POLYGON|POWER|RADIANS|REGION|RAND|ROUND|SIN|SQRT|TOP|TAN|TRUNCATE|SELECT|TOP|DISTINCT|ALL|AS|COUNT|AVG|MAX|MIN|SUM|FROM|JOIN|CROSS|INNER|OUTER|LEFT|RIGHT|FULL|NATURAL|USING|ON|WHERE|IS|NOT|AND|OR|EXISTS|IN|LIKE|NULL|BETWEEN|ORDER|ASC|DESC|GROUP|BY|HAVING)";
 
+	/** Regular expression listing all SQL reserved words.
+	 * 
+	 * <p><i>Note 1:
+	 * 	This list is built from the list given in the ADQL-2.0 standard,
+	 * 	after removal of all words potentially used in an ADQL query
+	 * 	(see {@link #ADQL_RESERVED_WORDS_REGEX}).
+	 * </i></p>
+	 * 
+	 * <p><i>Note 2:
+	 * 	This regular expression is only used to display an appropriate hint
+	 * 	to the user in the error message if a such word is at the origin of
+	 * 	the error. (see {@link #initialise(Token, int[][], String[])} for more
+	 * 	details).
+	 * </i></p> */
+	private final static String SQL_RESERVED_WORDS_REGEX = "(ABSOLUTE|ACTION|ADD|ALLOCATE|ALTER|ANY|ARE|ASSERTION|AT|AUTHORIZATION|BEGIN|BIT|BIT_LENGTH|BOTH|CASCADE|CASCADED|CASE|CAST|CATALOG|CHAR|CHARACTER|CHAR_LENGTH|CHARACTER_LENGTH|CHECK|CLOSE|COALESCE|COLLATE|COLLATION|COLUMN|COMMIT|CONNECT|CONNECTION|CONSTRAINT|CONSTRAINTS|CONTINUE|CONVERT|CORRESPONDING|CREATE|CURRENT|CURRENT_DATE|CURRENT_TIME|CURRENT_TIMESTAMP|CURRENT_USER|CURSOR|DATE|DAY|DEALLOCATE|DECIMAL|DECLARE|DEFAULT|DEFERRABLE|DEFERRED|DELETE|DESCRIBE|DESCRIPTOR|DIAGNOSTICS|DISCONNECT|DOMAIN|DOUBLE|DROP|ELSE|END|END-EXEC|ESCAPE|EXCEPT|EXCEPTION|EXEC|EXECUTE|EXTERNAL|EXTRACT|FALSE|FETCH|FIRST|FLOAT|FOR|FOREIGN|FOUND|GET|GLOBAL|GO|GOTO|GRANT|HOUR|IDENTITY|IMMEDIATE|INDICATOR|INITIALLY|INPUT|INSENSITIVE|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|ISOLATION|KEY|LANGUAGE|LAST|LEADING|LEVEL|LOCAL|LOWER|MATCH|MINUTE|MODULE|MONTH|NAMES|NATIONAL|NCHAR|NEXT|NO|NULLIF|NUMERIC|OCTET_LENGTH|OF|ONLY|OPEN|OPTION|OUTPUT|OVERLAPS|PAD|PARTIAL|POSITION|PRECISION|PREPARE|PRESERVE|PRIMARY|PRIOR|PRIVILEGES|PROCEDURE|PUBLIC|READ|REAL|REFERENCES|RELATIVE|RESTRICT|REVOKE|ROLLBACK|ROWS|SCHEMA|SCROLL|SECOND|SECTION|SESSION|SESSION_USER|SET|SIZE|SMALLINT|SOME|SPACE|SQL|SQLCODE|SQLERROR|SQLSTATE|SUBSTRING|SYSTEM_USER|TABLE|TEMPORARY|THEN|TIME|TIMESTAMP|TIMEZONE_HOUR|TIMEZONE_MINUTE|TO|TRAILING|TRANSACTION|TRANSLATE|TRANSLATION|TRIM|TRUE|UNION|UNIQUE|UNKNOWN|UPDATE|UPPER|USAGE|USER|VALUE|VALUES|VARCHAR|VARYING|VIEW|WHEN|WHENEVER|WITH|WORK|WRITE|YEAR|ZONE)";
+
 	/**
 	 * Gets the position in the ADQL query of the token which generates this exception.
 	 * 
@@ -181,6 +197,8 @@ public class ParseException extends Exception {
 		String word = tokenName.toString().trim();
 		if (word.toUpperCase().matches(ADQL_RESERVED_WORDS_REGEX))
 			msg.append(System.getProperty("line.separator", "\n")).append("(HINT: \"").append(word).append("\" is a reserved ADQL word. To use it as a column/table/schema name/alias, write it between double quotes.)");
+		else if (word.toUpperCase().matches(SQL_RESERVED_WORDS_REGEX))
+			msg.append(System.getProperty("line.separator", "\n")).append("(HINT: \"").append(word).append("\" is not supported in ADQL, but is however a reserved word. To use it as a column/table/schema name/alias, write it between double quotes.)");
 
 		return msg.toString();
 		/*String eol = System.getProperty("line.separator", "\n");
diff --git a/src/adql/parser/adqlGrammar.jj b/src/adql/parser/adqlGrammar.jj
index 8eb9fcc..7e41e7a 100644
--- a/src/adql/parser/adqlGrammar.jj
+++ b/src/adql/parser/adqlGrammar.jj
@@ -563,6 +563,20 @@ PARSER_END(ADQLParser)
 /* ******************** */
 SKIP : { < " " | "\t" | "\n" | "\r" | "\r\n" > }
 
+/* ************************************************************************** */
+/* Reserved SQL words                                                         */
+/*                                                                            */
+/* NOTE:                                                                      */
+/*   This list is the one provided by the ADQL-2.0 standard after removal of  */
+/*   all ADQL used words (e.g. SELECT, AS, LIKE, AVG, ABS, COS, POINT).       */
+/*   (see ParseException.initialise(Token, int[][], String[]) for more        */
+/*   details)                                                                 */
+/* ************************************************************************** */
+
+TOKEN : {
+	< SQL_RESERVED_WORD: ("ABSOLUTE"|"ACTION"|"ADD"|"ALLOCATE"|"ALTER"|"ANY"|"ARE"|"ASSERTION"|"AT"|"AUTHORIZATION"|"BEGIN"|"BIT"|"BIT_LENGTH"|"BOTH"|"CASCADE"|"CASCADED"|"CASE"|"CAST"|"CATALOG"|"CHAR"|"CHARACTER"|"CHAR_LENGTH"|"CHARACTER_LENGTH"|"CHECK"|"CLOSE"|"COALESCE"|"COLLATE"|"COLLATION"|"COLUMN"|"COMMIT"|"CONNECT"|"CONNECTION"|"CONSTRAINT"|"CONSTRAINTS"|"CONTINUE"|"CONVERT"|"CORRESPONDING"|"CREATE"|"CURRENT"|"CURRENT_DATE"|"CURRENT_TIME"|"CURRENT_TIMESTAMP"|"CURRENT_USER"|"CURSOR"|"DATE"|"DAY"|"DEALLOCATE"|"DECIMAL"|"DECLARE"|"DEFAULT"|"DEFERRABLE"|"DEFERRED"|"DELETE"|"DESCRIBE"|"DESCRIPTOR"|"DIAGNOSTICS"|"DISCONNECT"|"DOMAIN"|"DOUBLE"|"DROP"|"ELSE"|"END"|"END-EXEC"|"ESCAPE"|"EXCEPT"|"EXCEPTION"|"EXEC"|"EXECUTE"|"EXTERNAL"|"EXTRACT"|"FALSE"|"FETCH"|"FIRST"|"FLOAT"|"FOR"|"FOREIGN"|"FOUND"|"GET"|"GLOBAL"|"GO"|"GOTO"|"GRANT"|"HOUR"|"IDENTITY"|"IMMEDIATE"|"INDICATOR"|"INITIALLY"|"INPUT"|"INSENSITIVE"|"INSERT"|"INT"|"INTEGER"|"INTERSECT"|"INTERVAL"|"INTO"|"ISOLATION"|"KEY"|"LANGUAGE"|"LAST"|"LEADING"|"LEVEL"|"LOCAL"|"LOWER"|"MATCH"|"MINUTE"|"MODULE"|"MONTH"|"NAMES"|"NATIONAL"|"NCHAR"|"NEXT"|"NO"|"NULLIF"|"NUMERIC"|"OCTET_LENGTH"|"OF"|"ONLY"|"OPEN"|"OPTION"|"OUTPUT"|"OVERLAPS"|"PAD"|"PARTIAL"|"POSITION"|"PRECISION"|"PREPARE"|"PRESERVE"|"PRIMARY"|"PRIOR"|"PRIVILEGES"|"PROCEDURE"|"PUBLIC"|"READ"|"REAL"|"REFERENCES"|"RELATIVE"|"RESTRICT"|"REVOKE"|"ROLLBACK"|"ROWS"|"SCHEMA"|"SCROLL"|"SECOND"|"SECTION"|"SESSION"|"SESSION_USER"|"SET"|"SIZE"|"SMALLINT"|"SOME"|"SPACE"|"SQL"|"SQLCODE"|"SQLERROR"|"SQLSTATE"|"SUBSTRING"|"SYSTEM_USER"|"TABLE"|"TEMPORARY"|"THEN"|"TIME"|"TIMESTAMP"|"TIMEZONE_HOUR"|"TIMEZONE_MINUTE"|"TO"|"TRAILING"|"TRANSACTION"|"TRANSLATE"|"TRANSLATION"|"TRIM"|"TRUE"|"UNION"|"UNIQUE"|"UNKNOWN"|"UPDATE"|"UPPER"|"USAGE"|"USER"|"VALUE"|"VALUES"|"VARCHAR"|"VARYING"|"VIEW"|"WHEN"|"WHENEVER"|"WITH"|"WORK"|"WRITE"|"YEAR"|"ZONE") >
+}
+
 /* *********** */
 /* Punctuation */
 /* *********** */
@@ -1204,7 +1218,7 @@ ADQLOperand ValueExpression(): {ADQLOperand valueExpr = null; Token left, right;
 		 * current token and with an error message implying that a column name
 		 * was expected (which is generally the case in an ADQL query).
 		 *
-		 * Note: This choice will generally be reached if an unexpected ADQL
+		 * Note: This choice will generally be reached if an unexpected ADQL/SQL
 		 *       word is ending the query. */
 		| valueExpr=Column() )
 		{return valueExpr;}
diff --git a/test/adql/parser/TestADQLParser.java b/test/adql/parser/TestADQLParser.java
index bea813b..a5d2555 100644
--- a/test/adql/parser/TestADQLParser.java
+++ b/test/adql/parser/TestADQLParser.java
@@ -284,4 +284,25 @@ public class TestADQLParser {
 		}
 	}
 
+	@Test
+	public void testSQLReservedWord(){
+		ADQLParser parser = new ADQLParser();
+
+		try{
+			parser.parseQuery("SELECT rows FROM aTable");
+			fail("\"ROWS\" is an SQL reserved word. This query should not pass.");
+		}catch(Throwable t){
+			assertEquals(ParseException.class, t.getClass());
+			assertTrue(t.getMessage().endsWith("\n(HINT: \"rows\" is not supported in ADQL, but is however a reserved word. To use it as a column/table/schema name/alias, write it between double quotes.)"));
+		}
+
+		try{
+			parser.parseQuery("SELECT CASE WHEN aCol = 2 THEN 'two' ELSE 'smth else' END as str FROM aTable");
+			fail("ADQL does not support the CASE syntax. This query should not pass.");
+		}catch(Throwable t){
+			assertEquals(ParseException.class, t.getClass());
+			assertTrue(t.getMessage().endsWith("\n(HINT: \"CASE\" is not supported in ADQL, but is however a reserved word. To use it as a column/table/schema name/alias, write it between double quotes.)"));
+		}
+	}
+
 }
-- 
GitLab